From 5ca2f2cef0a4048785308ef0e73a0733747ea8f8 Mon Sep 17 00:00:00 2001 From: Mike Ammerlaan Date: Mon, 19 Aug 2024 14:41:41 -0700 Subject: [PATCH 1/2] feat(ci): Move to semantic-release, fix validator issues, bug fixes --- .github/workflows/build.yml | 41 +- .github/workflows/create-release.yml | 70 +- CHANGELOG.md | 7 +- NOTICE.md | 2 - app/gulpfile.js | 25 +- app/jsnode/LICENSE.md | 2 +- app/jsnode/package.json | 16 +- app/package-lock.json | 1387 +--- app/package.json | 9 +- app/src/UX/App.tsx | 1 - app/src/UX/DedicatedServerSettingsPanel.tsx | 10 +- app/src/UX/ImageEditor.tsx | 141 +- app/src/UX/Labels.tsx | 31 +- app/src/app/Carto.ts | 16 +- app/src/app/ICartoData.ts | 3 +- app/src/app/Project.ts | 11 + app/src/app/ProjectExporter.ts | 4 + app/src/core/AppServiceProxy.ts | 2 +- app/src/dataform/DataForm.css | 6 +- app/src/images/mctoolstext_l.png | Bin 0 -> 8590 bytes app/src/info/LineSizeInfoGenerator.ts | 11 +- app/src/info/PackSizeInfoGenerator.ts | 8 +- app/src/info/WorldDataInfoGenerator.ts | 25 +- app/src/local/ILocalEnvironmentData.ts | 2 +- app/src/local/ILocalUtilities.ts | 5 + app/src/local/LocalEnvironment.ts | 22 +- app/src/local/LocalUtilities.ts | 90 +- app/src/local/NodeStorage.ts | 51 +- app/src/minecraft/ActorItem.ts | 4 +- app/src/minecraft/BlockPalette.ts | 4 +- app/src/minecraft/LevelDb.ts | 7 +- app/src/minecraft/MCWorld.ts | 41 +- app/src/minecraft/NbtBinary.ts | 63 +- app/src/minecraft/Structure.ts | 20 +- app/src/minecraft/WorldChunk.ts | 154 +- app/src/minecraft/WorldLevelDat.ts | 8 +- app/src/storage/FileBase.ts | 12 + app/src/storage/IFile.ts | 1 + app/src/storage/StorageUtilities.ts | 16 +- app/src/test/CartoTest.ts | 3 +- .../behavior_packs/deployJs/manifest.json | 2 +- .../deployJs Test World/level.dat | Bin 2636 -> 2636 bytes .../deployJs Test World/level.dat_old | Bin 2636 -> 2636 bytes app/test/scenarios/simple/report.json | 59 +- .../content1.mcr.json | 11 +- .../content1.report.html | 2 +- .../content2.mcr.json | 11 +- .../content2.report.html | 2 +- .../content3.mcr.json | 11 +- .../content3.report.html | 2 +- .../content3.csv | 6 +- .../content3.mcr.json | 7 +- .../content3.report.html | 2 +- .../gulp-updateVersions/UpdateVersions.js | 112 + app/tools/gulp-updateVersions/index.js | 19 + app/tsconfig.jsnweb.json | 8 +- app/webpack.jsnweb.config.js | 3 - package-lock.json | 6313 +++++++++++++++++ package.json | 71 + .../behavior_packs/deployJs/manifest.json | 2 +- 60 files changed, 7177 insertions(+), 1797 deletions(-) create mode 100644 app/src/images/mctoolstext_l.png create mode 100644 app/tools/gulp-updateVersions/UpdateVersions.js create mode 100644 app/tools/gulp-updateVersions/index.js create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index aeb6aab5..e96d82ab 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,6 +5,7 @@ on: branches: - main pull_request: + types: [opened, synchronize, reopened] branches: - main @@ -12,22 +13,48 @@ jobs: build: runs-on: windows-latest + permissions: read-all + strategy: matrix: - node-version: [16.x] + node-version: [20] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - - name: Build - env: - CI: "" + - name: Prep and Command Line Build + run: | + npm ci + pushd app + npm ci + npm run devenvandjsnbuild --max_old_space_size=16384 + popd + + - name: Run Tests + id: runtests + run: | + pushd samplecontent + pushd addon + npm ci + npx gulp package + popd + popd + pushd app + npm test + popd + + - name: Web Build run: | pushd app - npm run all + npm run webbuild --max_old_space_size=16384 + pushd toolbuild + pushd jsn + npm pack --max_old_space_size=16384 + popd popd + popd \ No newline at end of file diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 6c4e53db..43732d97 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -7,50 +7,64 @@ jobs: build-and-publish: runs-on: windows-latest - steps: - - uses: actions/checkout@v3 + permissions: + actions: read + pages: write + contents: write + deployments: none + packages: none + pull-requests: write + security-events: none + checks: none + id-token: none + issues: write + repository-projects: none + statuses: none + + strategy: + matrix: + node-version: [20] - - name: Get Package Version - id: get-package-version + steps: + - uses: actions/checkout@v4 + - name: Using Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 with: - path: app - uses: stevenbenitez/get-package-version-action@v1 + node-version: ${{ matrix.node-version }} - - name: Build + - name: Prep and Command Line Build env: CI: "" run: | + npm ci pushd app - npm run all + npm ci + npm run devenvandjsnbuild --max_old_space_size=16384 pushd toolbuild pushd jsn - npm pack --max_old_space_size=16384 + npm pack --max_old_space_size=16384 popd popd - gulp customizesite popd - - name: Create draft Minecraft Creator Tools release + - name: Run Tests + id: runtests + run: | + pushd samplecontent + pushd addon + npm ci + npx gulp package + popd + popd + pushd app + npm test + popd + + - name: Create Minecraft Creator Tools release id: create_mctools_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: v${{ steps.get-package-version.outputs.version }}-alpha - release_name: Minecraft Creator Tools - draft: true - prerelease: true - - - name: Upload mctools-v.tgz to node_module release - id: upload_mctools-v_tgz - uses: actions/upload-release-asset@v1.0.1 + run: npx semantic-release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_mctools_release.outputs.upload_url }} - asset_path: ./app/toolbuild/jsn/mctools-${{ steps.get-package-version.outputs.version }}.tgz - asset_name: mctools-${{ steps.get-package-version.outputs.version }}.tgz - asset_content_type: application/tar+gzip - name: Deploy to GitHub Pages if: success() diff --git a/CHANGELOG.md b/CHANGELOG.md index a1236c77..7febfffc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,5 @@ # Changelog -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - ## [0.1.80] ### Updated @@ -64,3 +60,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Added - Initial version work + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + diff --git a/NOTICE.md b/NOTICE.md index 5b053c7c..8e337745 100644 --- a/NOTICE.md +++ b/NOTICE.md @@ -1225,8 +1225,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ### tui-grid -### tui-image-editor - #### MIT License Copyright (c) 2019 NHN Cloud Corp. diff --git a/app/gulpfile.js b/app/gulpfile.js index d4721730..dd818779 100644 --- a/app/gulpfile.js +++ b/app/gulpfile.js @@ -6,6 +6,7 @@ const importTransform = require("./tools/gulp-importTransform"); const nodeifyScript = require("./tools/gulp-nodeifyScript"); const jsonifyTypes = require("./tools/gulp-jsonifyTypes"); const downloadResources = require("./tools/gulp-downloadResources"); +const updateVersions = require("./tools/gulp-updateVersions"); const textReplaceStream = require("./tools/gulp-textReplaceStream"); const gulpWebpack = require("webpack-stream"); @@ -18,6 +19,8 @@ const jsnbuildfilesigs = [ "!build/**/*", "!toolbuild/**/*", "!scriptlibs/**/*", + "!test/results/**/*", + "!test/scenarios/**/*", "!dist/**/*", "!res/**/*", "!src/monaco/*.ts", @@ -37,6 +40,8 @@ const jsnwebbuildfilesigs = [ "!build/**/*", "!toolbuild/**/*", "!scriptlibs/**/*", + "!test/results/**/*", + "!test/scenarios/**/*", "!dist/**/*", "!res/**/*", "!src/setupTests.ts", @@ -63,6 +68,8 @@ const mclibsigs = [ "scriptlibs/@minecraft/vanilla-data/minecraft-vanilla-data.ts", ]; +const versionSource = ["toolbuild/jsn/package.json"]; + const mcreslistsigs = ["reslist/schemas.resources.json"]; const mcreslistvanillasigs = ["reslist/packs.resources.json"]; const mcreslistsamplesigs = ["reslist/samples.resources.json"]; @@ -137,7 +144,7 @@ function copyEsbuildWasmDist() { } function copyJsNodeDocs() { - return gulp.src(["../CHANGELOG.md", "../NOTICE.md", "jsnode/README.md"]).pipe(gulp.dest("toolbuild/jsn/")); + return gulp.src(["../CHANGELOG.md", "../NOTICE.md"]).pipe(gulp.dest("toolbuild/jsn/")); } function copyJsNodeResSchemas() { @@ -237,6 +244,20 @@ function runDownloadResources() { return gulp.src(mcreslistsigs, { base: "" }).pipe(downloadResources("public/res/latest/")); } +function runUpdateVersions() { + return gulp + .src(versionSource, { base: "" }) + .pipe( + updateVersions([ + "./package.json", + "./package-lock.json", + "./jsnode/package.json", + "./src/core/Constants.ts", + ]) + ); +} + + function runDownloadSamples() { return gulp.src(mcreslistsamplesigs, { base: "" }).pipe(downloadResources("public/res/samples/microsoft/")); } @@ -271,6 +292,8 @@ gulp.task("mcbuild", gulp.series(gulp.parallel("clean-mcbuild", "webbuild"), bui gulp.task("mctypes", gulp.parallel(buildBetaJsonTypeDefs, buildStableJsonTypeDefs, buildIncludes)); +gulp.task("updateversions", gulp.series(runUpdateVersions)); + gulp.task( "dlres", gulp.series( diff --git a/app/jsnode/LICENSE.md b/app/jsnode/LICENSE.md index 562da7be..8015ecc0 100644 --- a/app/jsnode/LICENSE.md +++ b/app/jsnode/LICENSE.md @@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file +SOFTWARE. diff --git a/app/jsnode/package.json b/app/jsnode/package.json index 55f7ea24..efafd089 100644 --- a/app/jsnode/package.json +++ b/app/jsnode/package.json @@ -1,8 +1,8 @@ { - "name": "mctools", + "name": "@minecraft/creator-tools", "version": "0.2.9", "productName": "Minecraft Creator Tools", - "description": "Minecraft Creator Tools", + "description": "Minecraft Creator Tools command line and libraries.", "private": true, "bin": { "mct": "./cli/index.js" @@ -10,22 +10,22 @@ "dependencies": { "@octokit/rest": "^18.5.2", "@rauschma/stringio": "^1.4.0", - "ajv": "^8.11.0", "axios": "^1.6.4", "commander": "^8.2.0", - "esbuild-wasm": "^0.21.3", - "eslint": "^8.34.0", "esprima-next": "^6.0.2", "exifr": "^7.1.3", "inquirer": "^8.2.0", - "js-md5": "^0.7.3", "jszip": "^3.7.1", - "localforage": "^1.9.0", "open": "^8.3.0", "pako": "^2.0.4", + "esbuild-wasm": "^0.21.3", + "threads": "^1.7.0", + "eslint": "^8.34.0", + "js-md5": "^0.7.3", + "ajv": "^8.11.0", + "localforage": "^1.9.0", "permessage-deflate": "^0.1.7", "ste-events": "^2.0.9", - "threads": "^1.7.0", "trash": "^8.0.0" } } diff --git a/app/package-lock.json b/app/package-lock.json index 3ba84158..e8ed3175 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -1,11 +1,11 @@ { - "name": "mctools", + "name": "mctools-app", "version": "0.2.9", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "mctools", + "name": "mctools-app", "version": "0.2.9", "dependencies": { "@fluentui/react-bindings": "^0.66.5", @@ -49,7 +49,6 @@ "threads": "^1.7.0", "trash": "^8.0.0", "tui-grid": "^4.18.1", - "tui-image-editor": "^3.15.3", "uuid": "^9.0.0" }, "bin": { @@ -3984,6 +3983,7 @@ "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==", "optional": true, + "peer": true, "dependencies": { "detect-libc": "^2.0.0", "https-proxy-agent": "^5.0.0", @@ -4004,6 +4004,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "optional": true, + "peer": true, "dependencies": { "semver": "^6.0.0" }, @@ -4019,6 +4020,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "optional": true, + "peer": true, "bin": { "semver": "bin/semver.js" } @@ -6060,6 +6062,7 @@ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", "optional": true, + "peer": true, "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -6153,12 +6156,6 @@ "node": ">=0.10.0" } }, - "node_modules/array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA==", - "optional": true - }, "node_modules/array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", @@ -6330,24 +6327,6 @@ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "optional": true, - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "optional": true, - "engines": { - "node": ">=0.8" - } - }, "node_modules/assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -6437,21 +6416,6 @@ "node": ">= 4.5.0" } }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "optional": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", - "optional": true - }, "node_modules/axe-core": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.2.tgz", @@ -6461,11 +6425,11 @@ } }, "node_modules/axios": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.4.tgz", - "integrity": "sha512-heJnIs6N4aa1eSthhN9M5ioILu8Wi8vmQW9iHQ9NUvfkJb0lEEDUiIdQNAuBtfUt3FxReaKdpQA5DbmMOqzF/A==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", + "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", "dependencies": { - "follow-redirects": "^1.15.4", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -6873,15 +6837,6 @@ "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "optional": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, "node_modules/before-after-hook": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.0.tgz", @@ -7437,6 +7392,7 @@ "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", "hasInstallScript": true, "optional": true, + "peer": true, "dependencies": { "@mapbox/node-pre-gyp": "^1.0.0", "nan": "^2.17.0", @@ -7451,6 +7407,7 @@ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", "optional": true, + "peer": true, "dependencies": { "mimic-response": "^2.0.0" }, @@ -7463,6 +7420,7 @@ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", "optional": true, + "peer": true, "engines": { "node": ">=8" }, @@ -7475,6 +7433,7 @@ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", "optional": true, + "peer": true, "dependencies": { "decompress-response": "^4.2.0", "once": "^1.3.1", @@ -7489,12 +7448,6 @@ "node": ">=4" } }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "optional": true - }, "node_modules/cfb": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", @@ -9602,18 +9555,6 @@ "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "optional": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/data-urls": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", @@ -10005,6 +9946,7 @@ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -10322,16 +10264,6 @@ "object.defaults": "^1.1.0" } }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "optional": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -11885,7 +11817,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "devOptional": true + "dev": true }, "node_modules/extend-shallow": { "version": "3.0.2", @@ -12006,318 +11938,6 @@ "node": ">=0.10.0" } }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "engines": [ - "node >=0.6.0" - ], - "optional": true - }, - "node_modules/fabric": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/fabric/-/fabric-4.6.0.tgz", - "integrity": "sha512-MhJXCD/ZugOGV5aPHIG0MY1q2EfrlzC2sasrAHj0HHXN50JTe1bHFrlRdkXBijCJ0dG81fGu/A/Pct9DyuwCzQ==", - "engines": { - "node": ">=8.0.0" - }, - "optionalDependencies": { - "canvas": "^2.6.1", - "jsdom": "^15.2.1" - } - }, - "node_modules/fabric/node_modules/acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", - "optional": true, - "dependencies": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - } - }, - "node_modules/fabric/node_modules/acorn-globals/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "optional": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/fabric/node_modules/acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", - "optional": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/fabric/node_modules/data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "optional": true, - "dependencies": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - } - }, - "node_modules/fabric/node_modules/domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "optional": true, - "dependencies": { - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/fabric/node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "optional": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/fabric/node_modules/html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "optional": true, - "dependencies": { - "whatwg-encoding": "^1.0.1" - } - }, - "node_modules/fabric/node_modules/jsdom": { - "version": "15.2.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", - "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", - "optional": true, - "dependencies": { - "abab": "^2.0.0", - "acorn": "^7.1.0", - "acorn-globals": "^4.3.2", - "array-equal": "^1.0.0", - "cssom": "^0.4.1", - "cssstyle": "^2.0.0", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.1", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.2.0", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.7", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^3.0.1", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^7.0.0", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/fabric/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "optional": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/fabric/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "optional": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/fabric/node_modules/parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", - "optional": true - }, - "node_modules/fabric/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "optional": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/fabric/node_modules/saxes": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", - "optional": true, - "dependencies": { - "xmlchars": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fabric/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fabric/node_modules/tough-cookie": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", - "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", - "optional": true, - "dependencies": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/fabric/node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", - "optional": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/fabric/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "optional": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/fabric/node_modules/utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "hasInstallScript": true, - "optional": true, - "peer": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/fabric/node_modules/w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", - "optional": true, - "dependencies": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "node_modules/fabric/node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "optional": true - }, - "node_modules/fabric/node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "optional": true, - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/fabric/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "optional": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/fancy-log": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", @@ -12375,9 +11995,9 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, "node_modules/fast-loops": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fast-loops/-/fast-loops-1.1.3.tgz", - "integrity": "sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-loops/-/fast-loops-1.1.4.tgz", + "integrity": "sha512-8dbd3XWoKCTms18ize6JmQF1SFnnfj5s0B7rRry22EofgMu7B6LKHVh+XfFqFGsqnbH54xgeO83PzpKI+ODhlg==" }, "node_modules/fastest-levenshtein": { "version": "1.0.14", @@ -13023,15 +12643,6 @@ "node": ">=0.10.0" } }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "optional": true, - "engines": { - "node": "*" - } - }, "node_modules/fork-ts-checker-webpack-plugin": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", @@ -13202,20 +12813,6 @@ "node": ">=6" } }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "optional": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -13352,6 +12949,7 @@ "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", "optional": true, + "peer": true, "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.2", @@ -13461,15 +13059,6 @@ "node": ">=0.10.0" } }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "optional": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, "node_modules/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -14155,51 +13744,6 @@ "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "optional": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "optional": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/har-validator/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "optional": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/har-validator/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "optional": true - }, "node_modules/harmony-reflect": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz", @@ -14626,21 +14170,6 @@ } } }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "optional": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -14980,15 +14509,6 @@ "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", "dev": true }, - "node_modules/ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", - "optional": true, - "engines": { - "node": ">=4" - } - }, "node_modules/ipaddr.js": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", @@ -15517,12 +15037,6 @@ "node": ">=0.10.0" } }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "optional": true - }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", @@ -18666,12 +18180,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "optional": true - }, "node_modules/jsdom": { "version": "16.7.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", @@ -18812,12 +18320,6 @@ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "optional": true - }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -18848,21 +18350,6 @@ "node": ">=0.10.0" } }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "optional": true, - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/jsx-ast-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.0.tgz", @@ -20673,6 +20160,7 @@ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", "optional": true, + "peer": true, "dependencies": { "are-we-there-yet": "^2.0.0", "console-control-strings": "^1.1.0", @@ -20708,15 +20196,6 @@ "integrity": "sha512-V3j76KU3g/Gyl8rpdi2z72rn5zguMvTCQgAXfBe3pxEefKqXmOUOD7mvx/mNjykdxGqDVfpSoo8r+WdrkWg/1Q==", "dev": true }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "optional": true, - "engines": { - "node": "*" - } - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -21591,12 +21070,6 @@ "node": ">=0.10.0" } }, - "node_modules/pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "optional": true - }, "node_modules/portfinder": { "version": "1.0.28", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", @@ -21930,15 +21403,6 @@ "teleport": ">=0.2.0" } }, - "node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "optional": true, - "engines": { - "node": ">=0.6" - } - }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -24814,107 +24278,6 @@ "node": ">= 0.10" } }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "optional": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "optional": true, - "dependencies": { - "lodash": "^4.17.19" - }, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", - "optional": true, - "dependencies": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, - "engines": { - "node": ">=0.12.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/request-promise-native/node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "optional": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/request/node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "optional": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/request/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "optional": true, - "bin": { - "uuid": "bin/uuid" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -25638,7 +25001,8 @@ "url": "https://feross.org/support" } ], - "optional": true + "optional": true, + "peer": true }, "node_modules/sisteransi": { "version": "1.0.5", @@ -26025,31 +25389,6 @@ "node": ">=0.8" } }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "optional": true, - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/stable": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", @@ -26145,15 +25484,6 @@ "node": ">=4.2.4" } }, - "node_modules/stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/stream-exhaust": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", @@ -27563,16 +26893,6 @@ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, - "node_modules/tui-code-snippet": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tui-code-snippet/-/tui-code-snippet-2.3.3.tgz", - "integrity": "sha512-5NEHTDFKillDNPy6MCgpXDNBTB7SZkHBFOF6vXfCDIFZcBdFYFXTd2xvAVvIeM3UYFRWu27xUf/Kxl5f9+RooQ==" - }, - "node_modules/tui-color-picker": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/tui-color-picker/-/tui-color-picker-2.2.8.tgz", - "integrity": "sha512-q5sE9NQ5NR9lYpilYjcI7Sdv0KCogo+W8fZY+AYTj/HYg+9fscYy3UuJ6UQiV1bF+ARCLwFRWC8UcOt9kuUctQ==" - }, "node_modules/tui-date-picker": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/tui-date-picker/-/tui-date-picker-4.3.3.tgz", @@ -27592,16 +26912,6 @@ "xlsx": "^0.17.1" } }, - "node_modules/tui-image-editor": { - "version": "3.15.3", - "resolved": "https://registry.npmjs.org/tui-image-editor/-/tui-image-editor-3.15.3.tgz", - "integrity": "sha512-7B5YUxe2eSSh+8YrlREmjqkgeFFKrVkdy0D/G0dWCJIQ2WLPQ/Bkm02WXQeWJiFPzgvargZjn7eAe80p3qBHPQ==", - "dependencies": { - "fabric": "^4.2.0", - "tui-code-snippet": "^2.3.3", - "tui-color-picker": "^2.2.6" - } - }, "node_modules/tui-pagination": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/tui-pagination/-/tui-pagination-3.4.1.tgz", @@ -27612,24 +26922,6 @@ "resolved": "https://registry.npmjs.org/tui-time-picker/-/tui-time-picker-2.1.6.tgz", "integrity": "sha512-4Jmo3wjGS+Ii4/qQgt5DaFEohHpB3U6BzWeTODVVFHD9sx3NOsbomY9K0xMobSLODi+tQEH7wfOtNU0IJmcQ6Q==" }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "optional": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "optional": true - }, "node_modules/type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", @@ -28109,20 +27401,6 @@ "node": ">= 0.8" } }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "engines": [ - "node >=0.6.0" - ], - "optional": true, - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, "node_modules/vinyl": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", @@ -32130,6 +31408,7 @@ "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==", "optional": true, + "peer": true, "requires": { "detect-libc": "^2.0.0", "https-proxy-agent": "^5.0.0", @@ -32147,6 +31426,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "optional": true, + "peer": true, "requires": { "semver": "^6.0.0" }, @@ -32155,7 +31435,8 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "optional": true + "optional": true, + "peer": true } } } @@ -33783,6 +33064,7 @@ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", "optional": true, + "peer": true, "requires": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -33852,12 +33134,6 @@ "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", "dev": true }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA==", - "optional": true - }, "array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", @@ -33984,21 +33260,6 @@ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "optional": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "optional": true - }, "assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -34067,29 +33328,17 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "optional": true - }, - "aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", - "optional": true - }, "axe-core": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.2.tgz", "integrity": "sha512-LVAaGp/wkkgYJcjmHsoKx4juT1aQvJyPcW09MLCjVTh3V2cc6PnyempiLMNH5iMdfIX/zdbjUx2KDjMLCTdPeA==" }, "axios": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.4.tgz", - "integrity": "sha512-heJnIs6N4aa1eSthhN9M5ioILu8Wi8vmQW9iHQ9NUvfkJb0lEEDUiIdQNAuBtfUt3FxReaKdpQA5DbmMOqzF/A==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", + "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", "requires": { - "follow-redirects": "^1.15.4", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" }, @@ -34407,15 +33656,6 @@ "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "optional": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, "before-after-hook": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.0.tgz", @@ -34827,6 +34067,7 @@ "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", "optional": true, + "peer": true, "requires": { "@mapbox/node-pre-gyp": "^1.0.0", "nan": "^2.17.0", @@ -34838,6 +34079,7 @@ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", "optional": true, + "peer": true, "requires": { "mimic-response": "^2.0.0" } @@ -34846,13 +34088,15 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", - "optional": true + "optional": true, + "peer": true }, "simple-get": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", "optional": true, + "peer": true, "requires": { "decompress-response": "^4.2.0", "once": "^1.3.1", @@ -34866,12 +34110,6 @@ "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==" }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "optional": true - }, "cfb": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", @@ -36390,15 +35628,6 @@ "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "optional": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, "data-urls": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", @@ -36685,7 +35914,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "optional": true + "optional": true, + "peer": true }, "detect-newline": { "version": "3.1.0", @@ -36954,16 +36184,6 @@ "object.defaults": "^1.1.0" } }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "optional": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -38125,7 +37345,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "devOptional": true + "dev": true }, "extend-shallow": { "version": "3.0.2", @@ -38223,248 +37443,6 @@ } } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "optional": true - }, - "fabric": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/fabric/-/fabric-4.6.0.tgz", - "integrity": "sha512-MhJXCD/ZugOGV5aPHIG0MY1q2EfrlzC2sasrAHj0HHXN50JTe1bHFrlRdkXBijCJ0dG81fGu/A/Pct9DyuwCzQ==", - "requires": { - "canvas": "^2.6.1", - "jsdom": "^15.2.1" - }, - "dependencies": { - "acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", - "optional": true, - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "optional": true - } - } - }, - "acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", - "optional": true - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "optional": true, - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - } - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "optional": true, - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "optional": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "optional": true, - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "jsdom": { - "version": "15.2.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", - "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", - "optional": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^7.1.0", - "acorn-globals": "^4.3.2", - "array-equal": "^1.0.0", - "cssom": "^0.4.1", - "cssstyle": "^2.0.0", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.1", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.2.0", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.7", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^3.0.1", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^7.0.0", - "xml-name-validator": "^3.0.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "optional": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "optional": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", - "optional": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "optional": true - }, - "saxes": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", - "optional": true, - "requires": { - "xmlchars": "^2.1.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true - }, - "tough-cookie": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", - "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", - "optional": true, - "requires": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", - "optional": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "optional": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "optional": true, - "peer": true, - "requires": { - "node-gyp-build": "^4.3.0" - } - }, - "w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", - "optional": true, - "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "optional": true - }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "optional": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "optional": true, - "requires": {} - } - } - }, "fancy-log": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", @@ -38515,9 +37493,9 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, "fast-loops": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fast-loops/-/fast-loops-1.1.3.tgz", - "integrity": "sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-loops/-/fast-loops-1.1.4.tgz", + "integrity": "sha512-8dbd3XWoKCTms18ize6JmQF1SFnnfj5s0B7rRry22EofgMu7B6LKHVh+XfFqFGsqnbH54xgeO83PzpKI+ODhlg==" }, "fastest-levenshtein": { "version": "1.0.14", @@ -39078,12 +38056,6 @@ "for-in": "^1.0.1" } }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "optional": true - }, "fork-ts-checker-webpack-plugin": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", @@ -39208,17 +38180,6 @@ } } }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "optional": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -39314,6 +38275,7 @@ "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", "optional": true, + "peer": true, "requires": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.2", @@ -39387,15 +38349,6 @@ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "optional": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, "glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -39963,42 +38916,6 @@ "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "optional": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "optional": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "optional": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "optional": true - } - } - }, "harmony-reflect": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz", @@ -40323,17 +39240,6 @@ "micromatch": "^4.0.2" } }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "optional": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, "https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -40587,12 +39493,6 @@ } } }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", - "optional": true - }, "ipaddr.js": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", @@ -40956,12 +39856,6 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "optional": true - }, "istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", @@ -43291,12 +42185,6 @@ "esprima": "^4.0.0" } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "optional": true - }, "jsdom": { "version": "16.7.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", @@ -43395,12 +42283,6 @@ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "optional": true - }, "json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -43420,18 +42302,6 @@ "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.0.tgz", "integrity": "sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg==" }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, "jsx-ast-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.0.tgz", @@ -44863,6 +43733,7 @@ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", "optional": true, + "peer": true, "requires": { "are-we-there-yet": "^2.0.0", "console-control-strings": "^1.1.0", @@ -44895,12 +43766,6 @@ "integrity": "sha512-V3j76KU3g/Gyl8rpdi2z72rn5zguMvTCQgAXfBe3pxEefKqXmOUOD7mvx/mNjykdxGqDVfpSoo8r+WdrkWg/1Q==", "dev": true }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "optional": true - }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -45554,12 +44419,6 @@ } } }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "optional": true - }, "portfinder": { "version": "1.0.28", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", @@ -45822,12 +44681,6 @@ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" }, - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "optional": true - }, "querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -47668,84 +46521,6 @@ "remove-trailing-separator": "^1.1.0" } }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "optional": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "optional": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "optional": true - } - } - }, - "request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "optional": true, - "requires": { - "lodash": "^4.17.19" - } - }, - "request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "optional": true, - "requires": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, - "dependencies": { - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "optional": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - } - } - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -48300,7 +47075,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "optional": true + "optional": true, + "peer": true }, "sisteransi": { "version": "1.0.5", @@ -48624,23 +47400,6 @@ "frac": "~1.1.2" } }, - "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "optional": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, "stable": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", @@ -48716,12 +47475,6 @@ "ste-core": "^2.0.9" } }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", - "optional": true - }, "stream-exhaust": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", @@ -49709,16 +48462,6 @@ "tslib": "^1.8.1" } }, - "tui-code-snippet": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tui-code-snippet/-/tui-code-snippet-2.3.3.tgz", - "integrity": "sha512-5NEHTDFKillDNPy6MCgpXDNBTB7SZkHBFOF6vXfCDIFZcBdFYFXTd2xvAVvIeM3UYFRWu27xUf/Kxl5f9+RooQ==" - }, - "tui-color-picker": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/tui-color-picker/-/tui-color-picker-2.2.8.tgz", - "integrity": "sha512-q5sE9NQ5NR9lYpilYjcI7Sdv0KCogo+W8fZY+AYTj/HYg+9fscYy3UuJ6UQiV1bF+ARCLwFRWC8UcOt9kuUctQ==" - }, "tui-date-picker": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/tui-date-picker/-/tui-date-picker-4.3.3.tgz", @@ -49738,16 +48481,6 @@ "xlsx": "^0.17.1" } }, - "tui-image-editor": { - "version": "3.15.3", - "resolved": "https://registry.npmjs.org/tui-image-editor/-/tui-image-editor-3.15.3.tgz", - "integrity": "sha512-7B5YUxe2eSSh+8YrlREmjqkgeFFKrVkdy0D/G0dWCJIQ2WLPQ/Bkm02WXQeWJiFPzgvargZjn7eAe80p3qBHPQ==", - "requires": { - "fabric": "^4.2.0", - "tui-code-snippet": "^2.3.3", - "tui-color-picker": "^2.2.6" - } - }, "tui-pagination": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/tui-pagination/-/tui-pagination-3.4.1.tgz", @@ -49758,21 +48491,6 @@ "resolved": "https://registry.npmjs.org/tui-time-picker/-/tui-time-picker-2.1.6.tgz", "integrity": "sha512-4Jmo3wjGS+Ii4/qQgt5DaFEohHpB3U6BzWeTODVVFHD9sx3NOsbomY9K0xMobSLODi+tQEH7wfOtNU0IJmcQ6Q==" }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "optional": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "optional": true - }, "type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", @@ -50132,17 +48850,6 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "optional": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, "vinyl": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", diff --git a/app/package.json b/app/package.json index 265278d6..4d9bbe68 100644 --- a/app/package.json +++ b/app/package.json @@ -1,5 +1,5 @@ { - "name": "mctools", + "name": "mctools-app", "version": "0.2.9", "productName": "Minecraft Creator Tools", "description": "Minecraft Creator Tools for building Bedrock Edition add-ons.", @@ -52,19 +52,20 @@ "threads": "^1.7.0", "trash": "^8.0.0", "tui-grid": "^4.18.1", - "tui-image-editor": "^3.15.3", "uuid": "^9.0.0" }, "scripts": { "devenv": "gulp devenv --max_old_space_size=16384", "web": "react-scripts --max_old_space_size=16384 start", "start": "react-scripts --max_old_space_size=16384 start", - "webbuild": "react-scripts --max_old_space_size=16384 build", + "webbuild": "cross-env CI=true react-scripts --max_old_space_size=16384 build", "jsnbuild": "gulp jsnbuild", "jsncorebuild": "gulp jsncorebuild", "process": "npx ./toolbuild/jsn/ validate --force -ot noreports -i ./public/res/latest/van/ -o ./public/data && gulp copyjsnodedata", "all": "npm install && npm run-script allbuild", - "allbuild": "npm run-script devenv && npm run-script webbuild && npm run-script jsnbuild && npm run-script process", + "allbuild": "npm run-script devenvandjsnbuild && npm run-script webbuild", + "devenvandjsnbuild": "npm run-script devenv && npm run-script jsnbuild && npm run-script process", + "updateversionsandbuild": "npx gulp updateversions && npm run-script webbuild && npm run-script jsnbuild && npm run-script process && npx gulp customizesite", "test": "ts-mocha -delay -p tsconfig.test.json src/test/**/*.ts", "test-ci": "ts-mocha -delay -p tsconfig.test.json src/test/**/*.ts --reporter json > test/test-results.json", "eject": "react-scripts eject" diff --git a/app/src/UX/App.tsx b/app/src/UX/App.tsx index 852de2bd..67ede4ad 100644 --- a/app/src/UX/App.tsx +++ b/app/src/UX/App.tsx @@ -13,7 +13,6 @@ import CartoApp, { HostType } from "../app/CartoApp"; import StorageUtilities from "../storage/StorageUtilities"; import { ThemeInput } from "@fluentui/react-northstar"; import { CartoEditorViewMode } from "../app/ICartoData"; -import MCWorld from "../minecraft/MCWorld"; import ProjectItem from "../app/ProjectItem"; import ProjectUtilities from "../app/ProjectUtilities"; import WebUtilities from "./WebUtilities"; diff --git a/app/src/UX/DedicatedServerSettingsPanel.tsx b/app/src/UX/DedicatedServerSettingsPanel.tsx index 043e7821..f56d5fa5 100644 --- a/app/src/UX/DedicatedServerSettingsPanel.tsx +++ b/app/src/UX/DedicatedServerSettingsPanel.tsx @@ -62,7 +62,7 @@ export default class DedicatedServerSettingsPanel extends Component< dedicatedServerSlotCount: port, dedicatedServerMode: this.props.carto.dedicatedServerMode, dedicatedServerPath: this.props.carto.dedicatedServerPath, - iagree: this.props.carto.iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashTerms, + iagree: this.props.carto.iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashEula, }; this.props.carto.onLoaded.subscribe(this._onCartoLoaded); @@ -94,7 +94,7 @@ export default class DedicatedServerSettingsPanel extends Component< _handleIAgreeChanged(e: SyntheticEvent, data: (CheckboxProps & { checked: boolean }) | undefined) { if (data) { - this.props.carto.iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashTerms = + this.props.carto.iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashEula = data.checked; this.props.carto.save(); this._notifyOnChange(); @@ -247,7 +247,7 @@ export default class DedicatedServerSettingsPanel extends Component<
@@ -259,14 +259,14 @@ export default class DedicatedServerSettingsPanel extends Component< I agree to the Minecraft End User License Agreement ( - https://minecraft.net/terms + https://minecraft.net/eula ) and Privacy Policy ( implements IPersistable { private rootElt: React.RefObject; - private imageEditor: TuiImageEditor | null = null; private imageElement: HTMLDivElement | null = null; constructor(props: IImageEditorProps) { @@ -123,8 +43,6 @@ export default class ImageEditor extends Component 0) { this.rootElt.current.removeChild(this.rootElt.current.childNodes[0]); } this.imageElement = null; - this.imageEditor = null; if (this.state.isView) { if (!this.imageElement) { @@ -158,37 +71,13 @@ export default class ImageEditor extends Component; - if (!this.props.readOnly || !this.state.isView) { + /*if (!this.props.readOnly || !this.state.isView) { editToggle = (
); - } + }*/ return (
diff --git a/app/src/UX/Labels.tsx b/app/src/UX/Labels.tsx index 4b05aead..aa1390d2 100644 --- a/app/src/UX/Labels.tsx +++ b/app/src/UX/Labels.tsx @@ -85,9 +85,14 @@ export const MCPackLabel: React.FC & IComp ); -export const RemoteMinecraftLabel: React.FC & ISelectableLabelProps> = ( - props: ISelectableLabelProps -) => ( +export const RemoteMinecraftLabel: React.FC< + React.HTMLAttributes & { + isCompact: boolean; + theme: ThemeInput; + isSelected: boolean; + isWebServer: boolean; + } +> = (props: { isCompact: boolean; theme: ThemeInput; isSelected: boolean; isWebServer: boolean }) => ( - {!props.isCompact ? Remote : <>} + {!props.isCompact ? {props.isWebServer ? "Login" : "Remote"} : <>} ); @@ -456,6 +461,24 @@ export const OpenInMinecraftLabel: React.FC ); +export const TopsMapLabel: React.FC> = () => ( + + Tops + +); + +export const PlusMapLevelLabel: React.FC> = () => ( + + + + +); + +export const MinusMapLevelLabel: React.FC> = () => ( + + - + +); + export const TeleportInMinecraftLabel: React.FC> = () => ( diff --git a/app/src/app/Carto.ts b/app/src/app/Carto.ts index 9239d0df..9df248fe 100644 --- a/app/src/app/Carto.ts +++ b/app/src/app/Carto.ts @@ -181,6 +181,14 @@ export default class Carto { this.#data.formatBeforeSave = newValue; } + public get conversionJarPath() { + return this.#data.conversionJarPath; + } + + public set conversionJarPath(newValue: string | undefined) { + this.#data.conversionJarPath = newValue; + } + public get preferredTextSize() { if (this.#data.preferredTextSize === undefined) { return 16; @@ -367,14 +375,14 @@ export default class Carto { } } - public get iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashTerms() { - return this.#data.iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashTerms; + public get iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashEula() { + return this.#data.iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashEula; } - public set iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashTerms( + public set iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashEula( newPort: boolean | undefined ) { - this.#data.iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashTerms = newPort; + this.#data.iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashEula = newPort; } public get dedicatedServerSlotCount() { diff --git a/app/src/app/ICartoData.ts b/app/src/app/ICartoData.ts index e30dcdee..0dba2ecb 100644 --- a/app/src/app/ICartoData.ts +++ b/app/src/app/ICartoData.ts @@ -66,7 +66,8 @@ export default interface ICartoData { editorViewMode?: CartoEditorViewMode; defaultFunction?: string; customTools: ICustomTool[]; - iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashTerms?: boolean; + conversionJarPath?: string; + iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashEula?: boolean; autoStartDedicatedServer?: boolean; dedicatedServerMode?: DedicatedServerMode; dedicatedServerPath?: string; diff --git a/app/src/app/Project.ts b/app/src/app/Project.ts index dcb0ef34..016d0ccc 100644 --- a/app/src/app/Project.ts +++ b/app/src/app/Project.ts @@ -3241,6 +3241,9 @@ export default class Project { if (folder !== this.#projectFolder) { this._unapplyFromProjectFolder(); + + await folder.ensureExists(); + this.#projectFolder = folder; this._applyToProjectFolder(); } @@ -3251,6 +3254,9 @@ export default class Project { if (folder !== this.#projectFolder) { this._unapplyFromProjectFolder(); + + await folder.ensureExists(); + this.#projectFolder = folder; this._applyToProjectFolder(); Log.debug( @@ -3272,6 +3278,9 @@ export default class Project { if (folder !== this.#projectFolder) { this._unapplyFromProjectFolder(); + + await folder.ensureExists(); + this.#projectFolder = folder; this._applyToProjectFolder(); } @@ -3283,6 +3292,7 @@ export default class Project { if (folder !== this.#mainDeployFolder) { this.#mainDeployFolder = folder; + this.#mainDeploySync = new ProjectDeploySync(this, folder); await this.#mainDeploySync.fullIngestIntoProject(); @@ -3301,6 +3311,7 @@ export default class Project { if (folder !== this.#projectFolder) { this._unapplyFromProjectFolder(); + await folder.ensureExists(); this.#projectFolder = folder; this._applyToProjectFolder(); } diff --git a/app/src/app/ProjectExporter.ts b/app/src/app/ProjectExporter.ts index 987008be..b2b9cf6d 100644 --- a/app/src/app/ProjectExporter.ts +++ b/app/src/app/ProjectExporter.ts @@ -778,9 +778,13 @@ export default class ProjectExporter { const workingFolder = carto.workingStorage.rootFolder.ensureFolder(tempWorkingPathName); + await workingFolder.ensureExists(); + if (world) { const inputFolder = workingFolder.ensureFolder("source-" + settings.name); + await inputFolder.ensureExists(); + await world.copyAsFolderTo(inputFolder); } diff --git a/app/src/core/AppServiceProxy.ts b/app/src/core/AppServiceProxy.ts index 420a8cda..d5bd22e6 100644 --- a/app/src/core/AppServiceProxy.ts +++ b/app/src/core/AppServiceProxy.ts @@ -244,6 +244,7 @@ export default class AppServiceProxy { const commandStr = "async" + (commandName as string) + "|" + position; + // Do not uncomment this as it'll cause a loop. // Log.verbose("Sending async command '" + commandStr + "' + data: " + data); AppServiceProxy._api.send("appweb", commandStr, data); @@ -296,7 +297,6 @@ export default class AppServiceProxy { } private static _handleNewMessage(args: string) { - // Log.verbose("New message inbound: '" + args + "'"); if (args !== null && args.length > 0) { if (args.startsWith("async")) { const argSplit = args.split("|"); diff --git a/app/src/dataform/DataForm.css b/app/src/dataform/DataForm.css index 0ac46eeb..bdf73588 100644 --- a/app/src/dataform/DataForm.css +++ b/app/src/dataform/DataForm.css @@ -80,13 +80,17 @@ } .df-fieldWrap .ui-form__label { - padding-bottom: 2px; + padding-bottom: 4px; + vertical-align: bottom; + padding-right: 4px; display: inline-block !important; min-width: 90px; } + .df-fieldWrap .ui-dropdown { display: inline-block; } + .df-fieldWrap .ui-dropdown__container { width: 235px; } diff --git a/app/src/images/mctoolstext_l.png b/app/src/images/mctoolstext_l.png new file mode 100644 index 0000000000000000000000000000000000000000..17afa55fd766cb45d49517a53a89debed85fe340 GIT binary patch literal 8590 zcmeHN2~<Rg?Jqffz|MBbBArDj6l%$yk8K=KD9x`>sCg=?^O2Ujg*|CVF)!S~b_a^uraO#O zRQ$H@+m1qgm!>x3^Bz)P81k`eI1072QTCljClnk(p$t~-vDtp`m?xieyHJlEw;+Tu zSnZMb!@sZIs-6DF396FEM=AY@YuswrpZWxBzw*<*olmcBuA|nJls{qdKRip@zNqK@ z)bsskcU^FO|FbWOFE813_47?_gLV*OI)Q(X*z?UtF1=Y2QG*e;S?#nc;aja3F+By`dOV8(WxomgyA7kp` zO%^wnv-VwuF*fa`Q2|;mzRQLB&k8{9P29sm4ka!v%M{+c4CwC2&De=I3BS#zP1Y2I z3xe_C?=@j<+r;XRL!~W0JAjN;BAD>u07?0D4p>(hZaQqa-C{it#NG5b5NctgfYymM#RljA5;-ZJ&6W34K8|Ci=dX!L?#^+c-Z9oD+9w_2;t3w^y6W$!(6{Q+8`d*TQ(`ZuO~FLq9*iD0frDZQ&lH#kAh<_td*~M@_d{nDZpZJGzX! zqC~l@ec^@t2Zvdypu@b3sa?alXdjTXl^hyLiAXO1YW9M!uA$R%}hjG1~!sD!1gzuL4ndj;OhOh^3H`#Y8IIe=>mJuy+3c_;C z%kp5{{9-WU7liFJ_c4jmWJ7n@z)|WN1XU4+j(G?`R*DDkv2_%)X{x`MMo$OqQfp>o)tz>l-f+-X3%%Fh8m8@0kgI$uvb+z_2Oy2#2(BbaNsaA_2 zkm~@MQh<>e4=XJKAuCysg`1NfhLm+ZZCXEL)iV*vHf@D;FrYl9CgQ5D9u*t|DZUvopwQOM`f!oB z)JyyW@1J>gXYcHqud+sss;NcR!jKca(8O=ufTL3#8qFpXT}PEQny~cyGs$E!kd9C?i1rBfr$(fEHOzOR-xse-cLb95 z>d&Q`cdFn)G!wdkgBb>yz_k44Q5IxH2D*u2^~n%v3o{_qgE=OR!=#89VVPjk5oBEy z_ZAbgBwpwnZ7q+5jO9*@cxG1v`*}ZOfs(>26v9)tg)#8A~My= z(>!3>yEi4gjM&-88d{VJ1`idp_b2&OvA*BK1o31c$nCn$>UbHtGs{ACNtZ|@FM`ZLF|$9v zPvSLc3TxewVu(3H#+M&o0&MMY5M@vVjF9lq0}UUMCM$fSSc$zaGB5 zhg9y~J}z|%0tdRI@RDmS&`WF1N!~s3K6w@TtSS2-5GPWfdxAop4Xo^5LRpA3qzsC+ zkm8uDe9pQGS}~u5m-PPM0|wzG#a*WwUthN2ySoGRq_mr##F{-peeY}jft2SfpR&$W zN^T$A+1bfw5gq8mcKF@Pk{+c$c<><2-F&xR@$&Lm1X@(P4vhLBxt>o%f6K;^n%eHJ z!?%&7(IH~MjknewY;K=^K4n29R0Lmi4?89p+5STYY z8insJ!4X@;Ufe+;>x@P%EGX-WFCm1zPv(IT)q4WK6syzkOEJv@Fgs<~bwL6CIcvlP zkXSMGKb0pkocK`XkRPc$_}ux#BnI@U^cIJsToXzVq(N82*3^47)z^X(1K-v za)aGSlqgM@{dvxYhHJKI8v}Zt$0GpNIP$01puKdlx}zEd-xe?sP7zwJ2cskqZl?0V|egL+7kA_y#M9dze*W zCj+xQ%MUTbu^DHujp$N_GuLYkMJDFaf{H4s8>7?^AG(q9$QvFrc!9GJekqB{ux zy1%1b*8DDn#QAC`v1Fjs`*abIZvqLp39d+-<=83qG%F;$r-7!gwzIQqk~@(13E8x_ zzfj5hMfeLzeN_PqD!chJCln(k_`NB~aKFidNRd%T4H~XMzE{~uWgjg*S(B?6eojzZ z{kt2V>x%m8U}uZVKH4u-FI#*9uzl;9nTEY*2A+Quir0VTW_)3|1g({biE&RxM@Oeb zB9ZV`kakixf7NU0)l;QcPou)WEJXazoec?=r<_NKx0ic8U_WrO)yghhlEr-*)l2UN6eG(|Hto zd=phzSEi?@%aMU%7*wB=#vj1TfAXIQ(mR4Hcj8~WFi+Qh@k*4kk3M^fXvC7ppyEV~eZ+@_IuQ(rS`Fmp_nli<#j zB~$bUCI;w`F>!!Y8GKQ_Yg?;rd0Z_4hk*P_vuj0c-nvGk!+6f>5wN2`#axF&LmTKM)>JIAAuCKBXn*t!c4_bY zSMkxwhrE4Qf>#sal7P{FX;Ld7H7+bBMrV3vXKqHuIOIX)u8BF=oiAA%?mPhaH_MSU z@jSEl{tBi3OdH7wG@5yZ=o)5?*4v0dJLsR)MAMlF$u)wtwUdq?G+PyR;=I;pGf|)D zfqMc-+-@OAIFS5QL`$gp@&J%TTk9NB66zmHLsz&^@;oeMUz)q zzuCt1H5@8}$vyS|C}gWOS+{PTEOmS;MnKaQGaros3mxCwBp+>eP45cXYA?}+7-SZ@ zcV&0A-<_XJVR=HU>u}IIC*wm4wAuuEx0Gw`z@ts5qfDK{J6THSREuSQbwDL(4ZsLH z$0&2#RY#P!pi++RT7l4Y8&pn(-A{$Q7s`|5iDmP#gDCpPQW?XUP^^KTWuT1oqK;&J zjWxLU^Rq;4*%JC5KSqA!N2C-kEL&4U>1?)(GO3$r0`n5aU7fC-F{L7pP; createStorage(path: string): Promise; + + processConversion(settings: IConversionSettings): Promise; } diff --git a/app/src/local/LocalEnvironment.ts b/app/src/local/LocalEnvironment.ts index b836735b..5515b21c 100644 --- a/app/src/local/LocalEnvironment.ts +++ b/app/src/local/LocalEnvironment.ts @@ -174,9 +174,12 @@ export default class LocalEnvironment { } newPasscode = newPasscode.toLowerCase(); + newPasscode = newPasscode.replace("-", ""); if (newPasscode.length !== 8 || !Utilities.isAlphaNumeric(newPasscode)) { - throw new Error("Improperly formatted passcode."); + throw new Error( + "Improperly formatted display read-only passcode. Passcodes should be 8 alphanumeric characters." + ); } this.#data.displayReadOnlyPasscode = newPasscode; @@ -197,9 +200,10 @@ export default class LocalEnvironment { } newPasscode = newPasscode.toLowerCase(); + newPasscode = newPasscode.replace("-", ""); if (newPasscode.length !== 8 || !Utilities.isAlphaNumeric(newPasscode)) { - throw new Error("Improperly formatted passcode."); + throw new Error("Improperly formatted full read-only passcode. Passcodes should be 8 alphanumeric characters."); } this.#data.fullReadOnlyPasscode = newPasscode; @@ -220,9 +224,10 @@ export default class LocalEnvironment { } newPasscode = newPasscode.toLowerCase(); + newPasscode = newPasscode.replace("-", ""); if (newPasscode.length !== 8 || !Utilities.isAlphaNumeric(newPasscode)) { - throw new Error("Improperly formatted passcode."); + throw new Error("Improperly formatted update passcode. Passcodes should be 8 alphanumeric characters."); } this.#data.updateStatePasscode = newPasscode; @@ -242,9 +247,10 @@ export default class LocalEnvironment { } newPasscode = newPasscode.toLowerCase(); + newPasscode = newPasscode.replace("-", ""); if (newPasscode.length !== 8 || !Utilities.isAlphaNumeric(newPasscode)) { - throw new Error("Improperly formatted passcode."); + throw new Error("Improperly formatted admin passcode. Passcodes should be 8 alphanumeric characters."); } this.#data.adminPasscode = newPasscode; @@ -255,14 +261,14 @@ export default class LocalEnvironment { return this.#data.tokenEncryptionPassword; } - get iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashTerms() { - return this.#data.iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashTerms; + get iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashEula() { + return this.#data.iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashEula; } - set iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashTerms( + set iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashEula( iAgreeValue: boolean | undefined ) { - this.#data.iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashTerms = iAgreeValue; + this.#data.iAgreeToTheMinecraftEndUserLicenseAgreementAndPrivacyPolicyAtMinecraftDotNetSlashEula = iAgreeValue; } public constructor(subscribeToLog: boolean) { diff --git a/app/src/local/LocalUtilities.ts b/app/src/local/LocalUtilities.ts index 417f5851..8717052e 100644 --- a/app/src/local/LocalUtilities.ts +++ b/app/src/local/LocalUtilities.ts @@ -7,10 +7,15 @@ import NodeStorage from "./NodeStorage"; import IStorage from "./../storage/IStorage"; import ILocalUtilities from "./ILocalUtilities"; import Log from "../core/Log"; +import IConversionSettings from "../core/IConversionSettings"; export default class LocalUtilities implements ILocalUtilities { #productNameSeed = "mctools"; + get isWindows() { + return os.platform() === "win32"; + } + get productNameSeed() { return this.#productNameSeed; } @@ -24,27 +29,35 @@ export default class LocalUtilities implements ILocalUtilities { } get localAppDataPath() { - return ( - this.userDataPath + - NodeStorage.folderDelimiter + - "AppData" + - NodeStorage.folderDelimiter + - "Local" + - NodeStorage.folderDelimiter - ); + if (this.isWindows) { + return ( + this.userDataPath + + NodeStorage.folderDelimiter + + "AppData" + + NodeStorage.folderDelimiter + + "Local" + + NodeStorage.folderDelimiter + ); + } else { + return this.userDataPath; + } } get localServerLogPath() { - return ( - this.userDataPath + - NodeStorage.folderDelimiter + - "AppData" + - NodeStorage.folderDelimiter + - "Roaming" + - NodeStorage.folderDelimiter + - "logs" + - NodeStorage.folderDelimiter - ); + if (this.isWindows) { + return ( + this.userDataPath + + NodeStorage.folderDelimiter + + "AppData" + + NodeStorage.folderDelimiter + + "Roaming" + + NodeStorage.folderDelimiter + + "logs" + + NodeStorage.folderDelimiter + ); + } else { + return "." + NodeStorage.folderDelimiter; + } } get minecraftPath() { @@ -82,7 +95,12 @@ export default class LocalUtilities implements ILocalUtilities { get testWorkingPath() { let path = this.localAppDataPath; - path = NodeStorage.ensureEndsWithDelimiter(path) + this.#productNameSeed + "_test" + NodeStorage.folderDelimiter; + path = + NodeStorage.ensureEndsWithDelimiter(path) + + (this.isWindows ? "" : ".") + + this.#productNameSeed + + "_test" + + NodeStorage.folderDelimiter; return path; } @@ -90,7 +108,12 @@ export default class LocalUtilities implements ILocalUtilities { get cliWorkingPath() { let path = this.localAppDataPath; - path = NodeStorage.ensureEndsWithDelimiter(path) + this.#productNameSeed + "_cli" + NodeStorage.folderDelimiter; + path = + NodeStorage.ensureEndsWithDelimiter(path) + + (this.isWindows ? "" : ".") + + this.#productNameSeed + + "_cli" + + NodeStorage.folderDelimiter; return path; } @@ -98,7 +121,12 @@ export default class LocalUtilities implements ILocalUtilities { get serverWorkingPath() { let path = this.localAppDataPath; - path = NodeStorage.ensureEndsWithDelimiter(path) + this.#productNameSeed + "_server" + NodeStorage.folderDelimiter; + path = + NodeStorage.ensureEndsWithDelimiter(path) + + (this.isWindows ? "" : ".") + + this.#productNameSeed + + "_server" + + NodeStorage.folderDelimiter; return path; } @@ -106,7 +134,12 @@ export default class LocalUtilities implements ILocalUtilities { get worldsWorkingPath() { let path = this.localAppDataPath; - path = NodeStorage.ensureEndsWithDelimiter(path) + this.#productNameSeed + "_worlds" + NodeStorage.folderDelimiter; + path = + NodeStorage.ensureEndsWithDelimiter(path) + + (this.isWindows ? "" : ".") + + this.#productNameSeed + + "_worlds" + + NodeStorage.folderDelimiter; return path; } @@ -226,7 +259,12 @@ export default class LocalUtilities implements ILocalUtilities { fullPath = fullPath.substring(0, lastSlash + 1); } - fullPath += path.replace("/", "\\"); + if (this.isWindows) { + fullPath += path.replace("/", "\\"); + } else { + fullPath += path.replace("\\", NodeStorage.folderDelimiter); + } + return fullPath; } @@ -251,4 +289,10 @@ export default class LocalUtilities implements ILocalUtilities { return jsonData; } + + async processConversion(conversionSettings: IConversionSettings): Promise { + console.log("Converting!"); + + return true; + } } diff --git a/app/src/local/NodeStorage.ts b/app/src/local/NodeStorage.ts index 4f0d7bed..a0e2b5e5 100644 --- a/app/src/local/NodeStorage.ts +++ b/app/src/local/NodeStorage.ts @@ -4,38 +4,31 @@ import NodeFolder from "./NodeFolder"; import StorageBase from "../storage/StorageBase"; import IStorage from "../storage/IStorage"; +import * as path from "path"; export default class NodeStorage extends StorageBase implements IStorage { - path: string; + rootPath: string; name: string; rootFolder: NodeFolder; - static folderDelimiter = "\\"; + static folderDelimiter = path.sep; - static determineDelimiter(path: string) { - if (path.indexOf("\\") >= 0) { - NodeStorage.folderDelimiter = "\\"; - } else { - NodeStorage.folderDelimiter = "/"; - } - } - - constructor(path: string, name: string) { + constructor(incomingPath: string, name: string) { super(); if (NodeStorage.folderDelimiter === "\\") { - path = path.replace(/\//gi, NodeStorage.folderDelimiter); - path = path.replace(/\\\\/gi, "\\"); + incomingPath = incomingPath.replace(/\//gi, NodeStorage.folderDelimiter); + incomingPath = incomingPath.replace(/\\\\/gi, "\\"); } else if (NodeStorage.folderDelimiter === "/") { - path = path.replace(/\\/gi, NodeStorage.folderDelimiter); - path = path.replace(/\/\//gi, NodeStorage.folderDelimiter); + incomingPath = incomingPath.replace(/\\/gi, NodeStorage.folderDelimiter); + incomingPath = incomingPath.replace(/\/\//gi, NodeStorage.folderDelimiter); } - this.path = path; + this.rootPath = incomingPath; this.name = name; - this.rootFolder = new NodeFolder(this, null, path, name); + this.rootFolder = new NodeFolder(this, null, incomingPath, name); } joinPath(pathA: string, pathB: string) { @@ -50,29 +43,29 @@ export default class NodeStorage extends StorageBase implements IStorage { return fullPath; } - static getParentFolderPath(path: string) { - const lastDelim = path.lastIndexOf(this.folderDelimiter); + static getParentFolderPath(parentPath: string) { + const lastDelim = parentPath.lastIndexOf(this.folderDelimiter); if (lastDelim < 0) { - return path; + return parentPath; } - return path.substring(0, lastDelim); + return parentPath.substring(0, lastDelim); } - public static ensureEndsWithDelimiter(path: string) { - if (!path.endsWith(NodeStorage.folderDelimiter)) { - path = path + NodeStorage.folderDelimiter; + public static ensureEndsWithDelimiter(pth: string) { + if (!pth.endsWith(NodeStorage.folderDelimiter)) { + pth = pth + NodeStorage.folderDelimiter; } - return path; + return pth; } - public static ensureStartsWithDelimiter(path: string) { - if (!path.startsWith(NodeStorage.folderDelimiter)) { - path = NodeStorage.folderDelimiter + path; + public static ensureStartsWithDelimiter(pth: string) { + if (!pth.startsWith(NodeStorage.folderDelimiter)) { + pth = NodeStorage.folderDelimiter + pth; } - return path; + return pth; } } diff --git a/app/src/minecraft/ActorItem.ts b/app/src/minecraft/ActorItem.ts index fc375023..37bbac0b 100644 --- a/app/src/minecraft/ActorItem.ts +++ b/app/src/minecraft/ActorItem.ts @@ -97,8 +97,8 @@ export default class ActorItem { actorStorage.fromBinary(keyData, true, false, 0, true); - if (actorStorage.root) { - this.#nbtRoot = actorStorage.root; + if (actorStorage.singleRoot) { + this.#nbtRoot = actorStorage.singleRoot; this.loadFromNbt(); } } diff --git a/app/src/minecraft/BlockPalette.ts b/app/src/minecraft/BlockPalette.ts index cf38eb2b..7530abe3 100644 --- a/app/src/minecraft/BlockPalette.ts +++ b/app/src/minecraft/BlockPalette.ts @@ -16,11 +16,11 @@ export default class BlockPalette { Log.assert(index <= bytes.length, "Unexpected expansion of bytes processed."); - if (nbt.root === null) { + if (nbt.singleRoot === null) { return index; } - const children = nbt.root.getTagChildren(); + const children = nbt.singleRoot.getTagChildren(); let block = null; diff --git a/app/src/minecraft/LevelDb.ts b/app/src/minecraft/LevelDb.ts index ffc94124..5683f89b 100644 --- a/app/src/minecraft/LevelDb.ts +++ b/app/src/minecraft/LevelDb.ts @@ -96,6 +96,7 @@ export default class LevelDb implements IErrorable { try { const index = parseInt(file.name); + // if (true) { if (!this.deletedFileNumber || !this.deletedFileNumber.includes(index)) { let level = 0; @@ -118,7 +119,9 @@ export default class LevelDb implements IErrorable { level: level, }); } - } catch (e) {} + } catch (e: any) { + this._pushError("Error including LDB file: " + file.fullPath + " Error: " + e.toString()); + } } const ldbFileInfoSorted = ldbFileInfos.sort((fileA: ILevelDbFileInfo, fileB: ILevelDbFileInfo) => { @@ -229,6 +232,8 @@ export default class LevelDb implements IErrorable { if (!indexContent) { indexContent = indexContentCompressed; + + this._pushError("Treating level DB content as compressed.", context); } if (indexContent) { diff --git a/app/src/minecraft/MCWorld.ts b/app/src/minecraft/MCWorld.ts index e6004810..709b7fb9 100644 --- a/app/src/minecraft/MCWorld.ts +++ b/app/src/minecraft/MCWorld.ts @@ -45,7 +45,6 @@ const MANIFEST_RELPATH = "/manifest.json"; const CHUNK_X_SIZE = 16; const CHUNK_Z_SIZE = 16; -const SUBCHUNK_Y_SIZE = 16; const CREATOR_TOOLS_EDITOR_BPUUID = "5d2f0b91-ca29-49da-a275-e6c6262ea3de"; @@ -182,8 +181,8 @@ export default class MCWorld implements IGetSetPropertyObject, IDimension, IErro } public get generationSeed() { - if (this._generationSeed === undefined && this._levelChunkMetaData && this._levelChunkMetaData.root) { - const tag = this._levelChunkMetaData.root.find("GenerationSeed"); + if (this._generationSeed === undefined && this._levelChunkMetaData && this._levelChunkMetaData.singleRoot) { + const tag = this._levelChunkMetaData.singleRoot.find("GenerationSeed"); if (tag !== null) { this._generationSeed = tag.valueAsBigInt.toString(); } @@ -1469,22 +1468,22 @@ export default class MCWorld implements IGetSetPropertyObject, IDimension, IErro } const chunkZ = Math.floor(blockLocation.z / CHUNK_Z_SIZE); - const zDim = xDim[chunkZ]; - if (zDim === undefined) { + const chunk = xDim[chunkZ]; + if (chunk === undefined) { return new Block("air"); } + let offsetX = blockLocation.x % 16; + let offsetZ = blockLocation.z % 16; - const subChunk = zDim.subChunks[Math.floor(blockLocation.y / SUBCHUNK_Y_SIZE)]; + if (offsetX < 0) { + offsetX += 16; + } - if (subChunk === undefined) { - return new Block("air"); + if (offsetZ < 0) { + offsetZ += 16; } - const block = zDim.getBlock( - blockLocation.x - chunkX * CHUNK_X_SIZE, - blockLocation.y, - blockLocation.z - chunkZ * CHUNK_Z_SIZE - ); + const block = chunk.getBlock(offsetX, blockLocation.y, offsetZ); if (!block) { return new Block("air"); @@ -1548,8 +1547,8 @@ export default class MCWorld implements IGetSetPropertyObject, IDimension, IErro dynamicProps.fromBinary(dynamicPropertyBytes, true, false, 0, true); - if (dynamicProps.root) { - const children = dynamicProps.root.getTagChildren(); + if (dynamicProps.singleRoot) { + const children = dynamicProps.singleRoot.getTagChildren(); this._dynamicProperties = {}; for (const child of children) { @@ -1573,6 +1572,7 @@ export default class MCWorld implements IGetSetPropertyObject, IDimension, IErro } } else if (keyname.startsWith("LevelChunkMetaDataDictionary") && keyValue) { const levelChunkMetaBytes = keyValue.value; + if (levelChunkMetaBytes) { const levelChunkMeta = new NbtBinary(); @@ -1597,7 +1597,7 @@ export default class MCWorld implements IGetSetPropertyObject, IDimension, IErro let dim = 0; - if (keyBytes.length >= 25) { + if (keyBytes.length >= 17) { dim = DataUtilities.getSignedInteger(keyBytes[8], keyBytes[9], keyBytes[10], keyBytes[11], true); Log.assert(dim >= 0 && dim <= 2, "Unexpected dimension index - digp (" + dim + ")"); @@ -1735,7 +1735,9 @@ export default class MCWorld implements IGetSetPropertyObject, IDimension, IErro (keyname.length === 9 || keyname.length === 10 || keyname.length === 13 || keyname.length === 14) ) { const keyBytes = keyValue.keyBytes; - const hasDimensionParam = keyname.length > 18 || keyname.length === 13 || keyname.length === 14; + const hasDimensionParam = keyname.length >= 13; + + Log.assertDefined(keyBytes); if (keyBytes) { const x = DataUtilities.getSignedInteger(keyBytes[0], keyBytes[1], keyBytes[2], keyBytes[3], true); @@ -1745,8 +1747,9 @@ export default class MCWorld implements IGetSetPropertyObject, IDimension, IErro if (hasDimensionParam) { dim = DataUtilities.getSignedInteger(keyBytes[8], keyBytes[9], keyBytes[10], keyBytes[11], true); - if (dim < 0 || dim > 2) { - // Log.assert(dim >= 0 && dim <= 2, "Unexpected dimension index. (" + dim + ")"); + if (dim < 1 || dim > 2) { + // note overworld dimension = 0, but should be omitted so we should not see overworld = 0. + this._pushError("Unexpected dimension index. (" + dim + ")"); continue; } } diff --git a/app/src/minecraft/NbtBinary.ts b/app/src/minecraft/NbtBinary.ts index 498b5410..89d23318 100644 --- a/app/src/minecraft/NbtBinary.ts +++ b/app/src/minecraft/NbtBinary.ts @@ -8,11 +8,23 @@ import Log from "../core/Log"; import { IErrorMessage, IErrorable } from "../core/IErrorable"; export default class NbtBinary implements IErrorable { - root: NbtBinaryTag | null = null; + roots: NbtBinaryTag[] | null = null; context?: string; isInErrorState?: boolean; errorMessages?: IErrorMessage[]; + get singleRoot() { + if (this.roots === null) { + return null; + } + + if (this.roots.length !== 1) { + throw new Error("Unexpectedly did not find a single root."); + } + + return this.roots[0]; + } + private _pushError(message: string, contextIn?: string) { this.isInErrorState = true; @@ -205,36 +217,54 @@ export default class NbtBinary implements IErrorable { } getJson(): INbtTag { - if (this.root === null) { + if (this.roots === null) { return {}; } - return this.root.getJson(); + + if (this.roots.length === 1) { + return this.roots[0].getJson(); + } + + throw new Error("Unexpected multiple roots."); } toBinary(): Uint8Array | undefined { - if (this.root === undefined || this.root === null) { + if (this.roots === undefined || this.roots === null) { return undefined; } - const byteSize = this.root.getByteSize(); + let byteSize = 0; + for (let i = 0; i < this.roots.length; i++) { + byteSize += this.roots[i].getByteSize(); + } const ab = new ArrayBuffer(byteSize); const bytes = new Uint8Array(ab); - const bytesWritten = this.root.writeBytes(bytes, 0, true); + let bytesWrittenAll = 0; - if (bytesWritten !== byteSize) { - throw new Error("Unexpectedly didn't write out our full structure."); + for (let i = 0; i < this.roots.length; i++) { + bytesWrittenAll += this.roots[i].writeBytes(bytes, bytesWrittenAll, true); } + Log.assert(bytesWrittenAll === byteSize, "Unexpectedly did not write full NBT."); + return bytes; } - ensureRoot() { - if (this.root) { - return; + ensureSingleRoot() { + if (this.roots) { + if (this.roots.length !== 1) { + throw new Error("Unexpected root count."); + } + + return this.roots[0]; } - this.root = new NbtBinaryTag(NbtTagType.compound, "", false); + this.roots = []; + + this.roots.push(new NbtBinaryTag(NbtTagType.compound, "", false)); + + return this.roots[0]; } fromBinary( @@ -242,12 +272,15 @@ export default class NbtBinary implements IErrorable { littleEndian: boolean, isVarint: boolean, skipBytes?: number, - stringsAreASCII?: boolean + stringsAreASCII?: boolean, + processAsList?: boolean ) { const tagStack: NbtBinaryTag[] = []; const listCountStack: number[] = []; const listTypeStack: NbtTagType[] = []; + this.roots = []; + let i = 0; if (skipBytes !== undefined) { @@ -297,7 +330,7 @@ export default class NbtBinary implements IErrorable { const activeTag = new NbtBinaryTag(tagType, name, isListChild); if (tagStack.length === 0) { - this.root = activeTag; + this.roots.push(activeTag); } // if (activeTag.type !== NbtTagType.end) else { const parentTag = tagStack[tagStack.length - 1]; @@ -324,7 +357,7 @@ export default class NbtBinary implements IErrorable { tagStack.push(activeTag); } else if (activeTag.type === NbtTagType.end) { tagStack.pop(); - if (tagStack.length === 0) { + if (tagStack.length === 0 && !processAsList) { break; } } else if (activeTag.type === NbtTagType.byte) { diff --git a/app/src/minecraft/Structure.ts b/app/src/minecraft/Structure.ts index cf2a3bdd..10b41842 100644 --- a/app/src/minecraft/Structure.ts +++ b/app/src/minecraft/Structure.ts @@ -3,7 +3,7 @@ import BlockCube from "./BlockCube"; import NbtBinary from "./NbtBinary"; -import NbtBinaryTag, { NbtTagType } from "./NbtBinaryTag"; +import { NbtTagType } from "./NbtBinaryTag"; import ISnbtContent from "./ISnbtContent"; import MinecraftUtilities from "./MinecraftUtilities"; import ISnbtBlock from "./ISnbtBlock"; @@ -52,9 +52,7 @@ export default class Structure { const nbt = new NbtBinary(); - const root = new NbtBinaryTag(NbtTagType.compound, "", false); - - nbt.root = root; + const root = nbt.ensureSingleRoot(); root.addTag(NbtTagType.int, "format_version").value = 1; @@ -276,13 +274,15 @@ export default class Structure { async loadFromNbt(binary: NbtBinary) { const cube = new BlockCube(); - if (binary.root == null) { + const root = binary.singleRoot; + + if (root === null) { return; } - const paletteTag = binary.root.find("block_palette"); - const indicesTag = binary.root.find("block_indices"); - const sizeTag = binary.root.find("size"); + const paletteTag = root.find("block_palette"); + const indicesTag = root.find("block_indices"); + const sizeTag = root.find("size"); if ( paletteTag === null || @@ -383,7 +383,7 @@ export default class Structure { } } - const entities = binary.root.find("entities"); + const entities = root.find("entities"); this._entities = []; @@ -469,7 +469,7 @@ export default class Structure { } } - const structureOrigin = binary.root.find("structure_world_origin"); + const structureOrigin = root.find("structure_world_origin"); if (structureOrigin !== null && structureOrigin.getTagChildren().length === 3) { const structuresOriginChildren = structureOrigin.getTagChildren(); diff --git a/app/src/minecraft/WorldChunk.ts b/app/src/minecraft/WorldChunk.ts index 9581f14c..0f676264 100644 --- a/app/src/minecraft/WorldChunk.ts +++ b/app/src/minecraft/WorldChunk.ts @@ -43,6 +43,7 @@ export default class WorldChunk { blockActorsEnsured = false; absoluteZeroY = -512; chunkMinY: number = 0; + legacyVersion: number | undefined; world: MCWorld; legacyTerrainBytes: Uint8Array | undefined; @@ -89,15 +90,15 @@ export default class WorldChunk { constructor(world: MCWorld, inX: number, inZ: number) { this.world = world; - this.subChunks = new Array(64); - this.subChunkFormatType = new Array(64); - this.blockPalettes = new Array(64); - this.bitsPerBlock = new Array(64); - this.blockDataStart = new Array(64); - this.auxBlockPalettes = new Array(64); - this.auxBitsPerBlock = new Array(64); - this.auxBlockDataStart = new Array(64); - this.pendingSubChunksToProcess = new Array(64); + this.subChunks = []; + this.subChunkFormatType = []; + this.blockPalettes = []; + this.bitsPerBlock = []; + this.blockDataStart = []; + this.auxBlockPalettes = []; + this.auxBitsPerBlock = []; + this.auxBlockDataStart = []; + this.pendingSubChunksToProcess = []; this.actorDigests = []; for (let i = 0; i < 64; i++) { @@ -127,55 +128,84 @@ export default class WorldChunk { processSubChunk(index: number) { if (this.pendingSubChunksToProcess[index] === true) { + this.pendingSubChunksToProcess[index] = false; this.parseSubChunk(index); } - - this.pendingSubChunksToProcess[index] = false; } addKeyValue(keyValue: LevelKeyValue) { let keyBytes = keyValue.keyBytes; if (keyBytes) { - const dimExtensionBytes = keyBytes.length > 18 || keyBytes.length === 13 || keyBytes.length === 14 ? 4 : 0; + const dimExtensionBytes = keyBytes.length >= 13 ? 4 : 0; const val = keyBytes[8 + dimExtensionBytes]; // disabling the "duplicate unexpected versions" since this assumption is violated in C&C R17 world switch (val) { - case 43: // not sure what chunk #43 is, or if this is a parsing bug. observed to be 578 bytes. "data3d" + case 43: + Log.assert( + keyValue.value !== undefined && keyValue.value.length > 512, + "Unexpected length for a type 43 recrod." + ); + + if (keyValue.value) { + this.blockTops = []; + + for (let i = 0; i < 16; i++) { + const arr = []; + + for (let j = 0; j < 16; j++) { + let val = keyValue.value[j * 32 + i * 2] + keyValue.value[j * 32 + (i * 2 + 1)] * 256; + + arr.push(val - 65); // subtracting - 65 is arbitrary here + } + + this.blockTops.push(arr); + } + } + break; - case 115: // not sure what chunk #61 is, or if this is a parsing bug. observed to be one byte with a value of 0 + + case 115: // not sure what chunk #115 is, or if this is a parsing bug. observed to be one byte with a value of 0 + Log.assert(false, "Unexpected type 115 record."); break; case 118: // 118 = legacy version + Log.assert(keyValue.value !== undefined && keyValue.value.length === 1, "Unexpected type 118 record."); + + if (keyValue.value) { + this.legacyVersion = keyValue.value[0]; + } + break; + case 44: // version - // Log.assert(!this.chunkVersion, "Unexpected multiple chunk versions."); this.chunkVersion = keyValue; break; case 45: // data2d - // Log.assert(!this.biomesAndElevation, "Unexpected multiple biomes and elevations."); this.biomesAndElevation = keyValue; break; case 46: // data2d legacy + Log.assert(false, "Unexpected data 2D legacy."); break; case 47: // subchunk prefix let subChunkIndex = this.translateSubChunkIndex(keyBytes[9 + dimExtensionBytes]); if (subChunkIndex < 0) { + Log.fail("Unexpected sub chunk index."); return; } if (this.subChunks[subChunkIndex] !== undefined) { - //Log.fail("Unexpected subchunk already defined."); + // Log.fail("Unexpected subchunk already defined."); } if (!keyValue.value || keyValue.value.length <= 0) { - //Log.fail("Empty subchunk defined."); + Log.fail("Empty subchunk defined."); return; } @@ -211,7 +241,9 @@ export default class WorldChunk { break; case 52: // legacy block extra data + Log.assert(false, "Unexpected legacy block extra data."); break; + case 53: // biome state //Log.assert(!this.biomeState, "Unexpected multiple biome states."); this.biomeState = keyValue; @@ -229,6 +261,7 @@ export default class WorldChunk { break; case 58: // random tick break; + case 59: // check sums // Log.assert(!this.checksumKey, "Unexpected multiple states."); this.checksumKey = keyValue; @@ -236,8 +269,10 @@ export default class WorldChunk { case 60: // generation seed break; + case 61: // generated pre caves and cliffs blending (unused) break; + case 62: // blending biome height (unused) break; @@ -246,10 +281,12 @@ export default class WorldChunk { case 64: // blending data break; + case 65: // actor digest version break; case 119: // ?? + Log.assert(false, "Unexpected type 119 data."); break; default: throw new Error("Unsupported chunk type: " + val); @@ -369,56 +406,58 @@ export default class WorldChunk { tag.context = this.world.name + " chunk at x:" + this.x * 16 + " z:" + this.z * 16; try { - tag.fromBinary(keyValue.value, true, false, 0, true); + tag.fromBinary(keyValue.value, true, false, 0, true, true); } catch (e) { Log.error("Could not parse a block actor."); } - if (tag.root) { - const ba = new GenericBlockActor(tag.root); - - if ( - ba.x !== undefined && - ba.z !== undefined && - ba.y !== undefined && - ba.x >= this.x * 16 && - ba.x < (this.x + 1) * 16 && - ba.z >= this.z * 16 && - ba.z < (this.z + 1) * 16 - ) { - let actorRelX = ba.x % 16; - let actorRelZ = ba.z % 16; - - if (actorRelX < 0) { - actorRelX = 16 + actorRelX; - } + if (tag.roots) { + for (let i = 0; i < tag.roots.length; i++) { + const ba = new GenericBlockActor(tag.roots[i]); + + if ( + ba.x !== undefined && + ba.z !== undefined && + ba.y !== undefined && + ba.x >= this.x * 16 && + ba.x < (this.x + 1) * 16 && + ba.z >= this.z * 16 && + ba.z < (this.z + 1) * 16 + ) { + let actorRelX = ba.x % 16; + let actorRelZ = ba.z % 16; + + if (actorRelX < 0) { + actorRelX = 16 + actorRelX; + } - if (actorRelZ < 0) { - actorRelZ = 16 + actorRelZ; - } + if (actorRelZ < 0) { + actorRelZ = 16 + actorRelZ; + } - if (ba.id) { - const specificBa = BlockActorFactory.create(ba.id, tag.root); + if (ba.id) { + const specificBa = BlockActorFactory.create(ba.id, tag.roots[i]); - if (specificBa) { - specificBa.load(); - if (!this._blockActorsRelLoc[actorRelX]) { - this._blockActorsRelLoc[actorRelX] = []; - } - if (!this._blockActorsRelLoc[actorRelX][ba.y]) { - this._blockActorsRelLoc[actorRelX][ba.y] = []; - } + if (specificBa) { + specificBa.load(); + if (!this._blockActorsRelLoc[actorRelX]) { + this._blockActorsRelLoc[actorRelX] = []; + } + if (!this._blockActorsRelLoc[actorRelX][ba.y]) { + this._blockActorsRelLoc[actorRelX][ba.y] = []; + } - this._blockActorsRelLoc[actorRelX][ba.y][actorRelZ] = specificBa; + this._blockActorsRelLoc[actorRelX][ba.y][actorRelZ] = specificBa; - if (specificBa.x !== undefined && specificBa.y !== undefined && specificBa.z !== undefined) { - this.removeBlockActorAtLoc(specificBa.x, specificBa.y, specificBa.z); + if (specificBa.x !== undefined && specificBa.y !== undefined && specificBa.z !== undefined) { + // this.removeBlockActorAtLoc(specificBa.x, specificBa.y, specificBa.z); + } + + this._blockActors.push(specificBa); } - this._blockActors.push(specificBa); + Log.assert(specificBa !== undefined, "Could not find an actor implementation for '" + ba.id + "'"); } - - Log.assert(specificBa !== undefined, "Could not find an actor implementation for '" + ba.id + "'"); } } } @@ -747,6 +786,8 @@ export default class WorldChunk { return undefined; } + Log.assert(x >= 0 && x < 16 && z >= 0 && z < 16, "Retrieving an out-of-range block from a chunk."); + if (this.legacyTerrainBytes) { return this._getBlockLegacy(x, y, z); } @@ -1154,6 +1195,7 @@ export default class WorldChunk { const bytes = this.subChunks[subChunkIndex].value; if (bytes === undefined || bytes.length <= 0) { + Log.fail("Unexpected no bytes supplied for a chunk."); return; } diff --git a/app/src/minecraft/WorldLevelDat.ts b/app/src/minecraft/WorldLevelDat.ts index a1bb5a4e..decabb98 100644 --- a/app/src/minecraft/WorldLevelDat.ts +++ b/app/src/minecraft/WorldLevelDat.ts @@ -240,7 +240,7 @@ export default class WorldLevelDat implements IWorldSettings, IErrorable { tag.context = this.context; - tag.ensureRoot(); + tag.ensureSingleRoot(); this.nbt = tag; } @@ -815,7 +815,7 @@ export default class WorldLevelDat implements IWorldSettings, IErrorable { } _saveToNbt(binary: NbtBinary) { - const root = binary.root; + const root = binary.ensureSingleRoot(); if (root == null) { return; @@ -1330,11 +1330,11 @@ export default class WorldLevelDat implements IWorldSettings, IErrorable { loadFromNbt(binary: NbtBinary) { this.nbt = binary; - if (binary.root == null) { + if (binary.singleRoot == null) { return; } - const root = binary.root; + const root = binary.singleRoot; let tag = root.find("LevelName"); diff --git a/app/src/storage/FileBase.ts b/app/src/storage/FileBase.ts index 813f796f..32591ada 100644 --- a/app/src/storage/FileBase.ts +++ b/app/src/storage/FileBase.ts @@ -121,6 +121,18 @@ export default abstract class FileBase implements IFile { return result + this.name; } + get coreContentLength() { + if (!this.content) { + return 0; + } + + if (this.isBinary || typeof this.content !== "string") { + return this.content.length; + } + + return this.content.replace(/\s/g, "").length; + } + constructor() { this.modified = null; this.modifiedAtLoad = null; diff --git a/app/src/storage/IFile.ts b/app/src/storage/IFile.ts index 51591606..6a5c2f1d 100644 --- a/app/src/storage/IFile.ts +++ b/app/src/storage/IFile.ts @@ -16,6 +16,7 @@ export default interface IFile extends IStorageObject { needsSave: boolean; fileContainerStorage: IStorage | null; extendedPath: string; + readonly coreContentLength: number; isBinary: boolean; isString: boolean; diff --git a/app/src/storage/StorageUtilities.ts b/app/src/storage/StorageUtilities.ts index 15664885..e6bcbfc6 100644 --- a/app/src/storage/StorageUtilities.ts +++ b/app/src/storage/StorageUtilities.ts @@ -32,6 +32,7 @@ const _allowedExtensions = [ "yml", "ico", "ogg", + "nojekyll", "env", "wav", "tga", @@ -504,7 +505,7 @@ export default class StorageUtilities { const fileB = folderB.files[fileName]; if (fileA === undefined) { - return { result: false, reason: "Unexpected file undefined. " }; + return { result: false, reason: "Unexpected file '" + fileName + "' undefined." }; } if (fileB === undefined) { @@ -522,7 +523,18 @@ export default class StorageUtilities { if (!result) { return { result: false, - reason: "File '" + fileA.fullPath + "' contents does not match '" + fileB.fullPath, + reason: + "File '" + + fileA.fullPath + + "' (size: " + + fileA.content?.length + + (fileA.isBinary ? "B" : "C") + + ") contents does not match '" + + fileB.fullPath + + "' (size: " + + fileB.content?.length + + (fileB.isBinary ? "B" : "C") + + ")", }; } } diff --git a/app/src/test/CartoTest.ts b/app/src/test/CartoTest.ts index d556a124..81389559 100644 --- a/app/src/test/CartoTest.ts +++ b/app/src/test/CartoTest.ts @@ -184,6 +184,7 @@ describe("deployJs", async () => { const worldSettings: IWorldSettings = { generator: Generator.infinite, gameType: GameType.survival, + randomSeed: "3000", lastPlayed: BigInt(new Date(2023, 0, 1).getTime()), }; @@ -192,7 +193,7 @@ describe("deployJs", async () => { await ProjectExporter.deployProjectAndGeneratedWorldTo(carto, project, worldSettings, resultsOutFolder); - await folderMatches("deployJs"); + await folderMatches("deployJs", ["level.dat", "level.dat_old"]); }); }); diff --git a/app/test/scenarios/deployJs/minecraftWorlds/deployJs Test World/behavior_packs/deployJs/manifest.json b/app/test/scenarios/deployJs/minecraftWorlds/deployJs Test World/behavior_packs/deployJs/manifest.json index 7690cea0..9117ac12 100644 --- a/app/test/scenarios/deployJs/minecraftWorlds/deployJs Test World/behavior_packs/deployJs/manifest.json +++ b/app/test/scenarios/deployJs/minecraftWorlds/deployJs Test World/behavior_packs/deployJs/manifest.json @@ -33,7 +33,7 @@ "dependencies": [ { "module_name": "@minecraft/server", - "version": "1.14.0-beta" + "version": "1.15.0-beta" }, { "module_name": "@minecraft/server-gametest", diff --git a/app/test/scenarios/deployJs/minecraftWorlds/deployJs Test World/level.dat b/app/test/scenarios/deployJs/minecraftWorlds/deployJs Test World/level.dat index 59e7ddf4ad34bc99298eb67c43746d66f2602266..c264df7de066feda531e3cf8cb51925e5769aac4 100644 GIT binary patch delta 21 ZcmX>jaz95crbZU!*etj4Uy4gf!C1ZDsL delta 21 ccmX>jaz95aWcT;Q}~-G7>!)tJ@T0Z!}&hyVZp diff --git a/app/test/scenarios/deployJs/minecraftWorlds/deployJs Test World/level.dat_old b/app/test/scenarios/deployJs/minecraftWorlds/deployJs Test World/level.dat_old index 59e7ddf4ad34bc99298eb67c43746d66f2602266..c264df7de066feda531e3cf8cb51925e5769aac4 100644 GIT binary patch delta 21 ZcmX>jaz95crbZU!*etj4Uy4gf!C1ZDsL delta 21 ccmX>jaz95aWcT;Q}~-G7>!)tJ@T0Z!}&hyVZp diff --git a/app/test/scenarios/simple/report.json b/app/test/scenarios/simple/report.json index 7b84c1b4..7dbbf9e3 100644 --- a/app/test/scenarios/simple/report.json +++ b/app/test/scenarios/simple/report.json @@ -10,10 +10,10 @@ "entityTypeResourceCount": 0, "behaviorPackAnimationCount": 0, "behaviorPackAnimationControllerCount": 0, - "overallSize": 19250, + "overallSize": 18965, "fileCounts": 5, "folderCounts": 5, - "contentSize": 19250, + "contentSize": 18965, "contentFileCounts": 5, "contentFolderCounts": 3, "defaultBehaviorPackUuid": "afeeb2ab-0404-4518-822f-9837117e78e1", @@ -23,14 +23,15 @@ "defaultBehaviorPackDescription": "Introductory tests for Minecraft GameTest Framework.", "textureCount": 0, "chunkCount": 0, + "subchunkLessChunkCount": 0, "worldLoadErrors": 0, "featureSets": { "Behavior pack manifest Size": { "Instance Count": 1, - "Total": 506, - "Max": 506, - "Min": 506, - "Average": 506 + "Total": 356, + "Max": 356, + "Min": 356, + "Average": 356 }, "Behavior pack manifest Lines": { "Instance Count": 1, @@ -48,10 +49,10 @@ }, "Catalog index Size": { "Instance Count": 1, - "Total": 142, - "Max": 142, - "Min": 142, - "Average": 142 + "Total": 116, + "Max": 116, + "Min": 116, + "Average": 116 }, "Catalog index Lines": { "Instance Count": 1, @@ -62,10 +63,10 @@ }, "JavaScript Size": { "Instance Count": 1, - "Total": 638, - "Max": 638, - "Min": 638, - "Average": 638 + "Total": 529, + "Max": 529, + "Min": 529, + "Average": 529 }, "JavaScript Lines": { "Instance Count": 1, @@ -365,10 +366,10 @@ "fs": { "Size": { "Instance Count": 1, - "Total": 506, - "Max": 506, - "Min": 506, - "Average": 506 + "Total": 356, + "Max": 356, + "Min": 356, + "Average": 356 }, "Lines": { "Instance Count": 1, @@ -402,10 +403,10 @@ "fs": { "Size": { "Instance Count": 1, - "Total": 142, - "Max": 142, - "Min": 142, - "Average": 142 + "Total": 116, + "Max": 116, + "Min": 116, + "Average": 116 }, "Lines": { "Instance Count": 1, @@ -424,10 +425,10 @@ "fs": { "Size": { "Instance Count": 1, - "Total": 638, - "Max": 638, - "Min": 638, - "Average": 638 + "Total": 529, + "Max": 529, + "Min": 529, + "Average": 529 }, "Lines": { "Instance Count": 1, @@ -457,7 +458,7 @@ "iTp": 7, "gId": "PACKSIZE", "gIx": 1, - "d": 19250 + "d": 18965 }, { "iTp": 7, @@ -475,7 +476,7 @@ "iTp": 7, "gId": "PACKSIZE", "gIx": 4, - "d": 19250 + "d": 18965 }, { "iTp": 7, @@ -1005,5 +1006,5 @@ }, "generatorName": "Minecraft Creator Tools", "suite": 0, - "generatorVersion": "0.2.3" + "generatorVersion": "0.2.9" } \ No newline at end of file diff --git a/app/test/scenarios/validateAddons1WellFormedCommand/content1.mcr.json b/app/test/scenarios/validateAddons1WellFormedCommand/content1.mcr.json index 610c2cd1..79ec49de 100644 --- a/app/test/scenarios/validateAddons1WellFormedCommand/content1.mcr.json +++ b/app/test/scenarios/validateAddons1WellFormedCommand/content1.mcr.json @@ -10,14 +10,15 @@ "entityTypeResourceCount": 0, "behaviorPackAnimationCount": 0, "behaviorPackAnimationControllerCount": 0, - "overallSize": 78655, + "overallSize": 54260, "fileCounts": 37, "folderCounts": 23, - "contentSize": 78655, + "contentSize": 54260, "contentFileCounts": 37, "contentFolderCounts": 18, "textureCount": 0, "chunkCount": 0, + "subchunkLessChunkCount": 0, "worldLoadErrors": 0, "featureSets": { "Textures Entity Resource Count": { @@ -130,7 +131,7 @@ "iTp": 7, "gId": "PACKSIZE", "gIx": 1, - "d": 78655 + "d": 54260 }, { "iTp": 7, @@ -148,7 +149,7 @@ "iTp": 7, "gId": "PACKSIZE", "gIx": 4, - "d": 78655 + "d": 54260 }, { "iTp": 7, @@ -1353,5 +1354,5 @@ ], "generatorName": "Minecraft Creator Tools", "suite": 2, - "generatorVersion": "0.2.3" + "generatorVersion": "0.2.9" } \ No newline at end of file diff --git a/app/test/scenarios/validateAddons1WellFormedCommand/content1.report.html b/app/test/scenarios/validateAddons1WellFormedCommand/content1.report.html index d2b7cf34..42afff48 100644 --- a/app/test/scenarios/validateAddons1WellFormedCommand/content1.report.html +++ b/app/test/scenarios/validateAddons1WellFormedCommand/content1.report.html @@ -6,7 +6,7 @@ _reportObjects.push(data); } -_addReportJson({"info":{"behaviorPackManifestCount":0,"unknownJsonCount":0,"entityTypeManifestCount":0,"itemTypeManifestCount":0,"blockTypeManifestCount":0,"resourcePackManifestCount":0,"worldCount":0,"entityTypeResourceCount":0,"behaviorPackAnimationCount":0,"behaviorPackAnimationControllerCount":0,"overallSize":78655,"fileCounts":37,"folderCounts":23,"contentSize":78655,"contentFileCounts":37,"contentFolderCounts":18,"textureCount":0,"chunkCount":0,"worldLoadErrors":0,"featureSets":{"Textures Entity Resource Count":{"Count":3},"Textures Texture References":{"Count":3},"Textures Entity References":{"Count":3},"Textures File Count":{"Count":4},"Textures Unique Texture Handles (estimated)":{"Count":3},"Textures Unique Texture Paths":{"Count":3},"Textures Unique Particle Texture Paths":{"Count":0},"Textures Unique Particle Texture Vanilla Paths":{"Count":1},"Textures Unique Entity Texture Paths":{"Count":3},"Command say":{"Count":1},"Command summon":{"Count":1}},"summary":{"PACKSIZE":{"1":{"title":"Overall Size"},"2":{"title":"Overall File Count","defaultMessage":"File Counts"},"3":{"title":"Overall Folder Count","defaultMessage":"Folder Counts"},"4":{"title":"Content Size"},"5":{"title":"Content File Count","defaultMessage":"Content File Counts"},"6":{"title":"Content Folder Count","defaultMessage":"Content Folder Counts"}},"ADDONREQ":{"102":{"title":"102","defaultMessage":"Found an add-on-blocked folder 'entities' in a parent folder pack\\loot_tables. Should be named 'creatorshortname' and not a common term","testCompleteFails":1},"104":{"title":"104","defaultMessage":"Found a loose file 'sheepomelon.json' in loot_tables\\entities. Files should only be in the folder loot_tables\\entities\\","testCompleteFails":2}},"TEXTURE":{"1":{"title":"Textures"}},"WORLDDATA":{"1":{"defaultMessage":"Blocks","testCompleteSuccesses":1},"2":{"defaultMessage":"Block Data"},"3":{"defaultMessage":"Commands"},"4":{"defaultMessage":"Execute Sub Commands"},"5":{"defaultMessage":"NBT Tags"},"6":{"defaultMessage":"NBT Experiment Tags"}},"ADDONIREQ":{"1":{"defaultMessage":"Test Addon Item Requirements Generator completed successfully.","testCompleteSuccesses":1}}}},"items":[{"iTp":7,"gId":"PACKSIZE","gIx":1,"d":78655},{"iTp":7,"gId":"PACKSIZE","gIx":2,"d":37},{"iTp":7,"gId":"PACKSIZE","gIx":3,"d":23},{"iTp":7,"gId":"PACKSIZE","gIx":4,"d":78655},{"iTp":7,"gId":"PACKSIZE","gIx":5,"d":37},{"iTp":7,"gId":"PACKSIZE","gIx":6,"d":18},{"iTp":1,"gId":"ADDONREQ","gIx":102,"d":"entities"},{"iTp":1,"gId":"ADDONREQ","gIx":104,"d":"sheepomelon.json"},{"iTp":1,"gId":"ADDONREQ","gIx":104,"m":"Found a loose file 'sheepomelon_shear.json' in loot_tables\\entities. Files should only be in the folder loot_tables\\entities\\","d":"sheepomelon_shear.json"},{"iTp":7,"gId":"TEXTURE","gIx":1,"fs":{"Entity Resource Count":{"Count":3},"Texture References":{"Count":3},"Entity References":{"Count":3},"File Count":{"Count":4},"Unique Texture Handles (estimated)":{"Count":3},"Unique Texture Paths":{"Count":3},"Unique Particle Texture Paths":{"Count":0},"Unique Particle Texture Vanilla Paths":{"Count":1},"Unique Entity Texture Paths":{"Count":3}}},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/manifest.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/manifest.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/manifest.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/manifest.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/manifest.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/manifest.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/animations/sheepomelon.bp_anims.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/animations/sheepomelon.bp_anims.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/animations/sheepomelon.bp_anims.json","fs":{"say":{"Count":1},"summon":{"Count":1}}},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/animations/sheepomelon.bp_anims.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/animations/sheepomelon.bp_anims.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/animations/sheepomelon.bp_anims.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/animation_controllers/sheepomelon.bp_ac.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/animation_controllers/sheepomelon.bp_ac.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/animation_controllers/sheepomelon.bp_ac.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/animation_controllers/sheepomelon.bp_ac.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/animation_controllers/sheepomelon.bp_ac.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/animation_controllers/sheepomelon.bp_ac.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/entities/biceson.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/entities/biceson.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/entities/biceson.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/entities/biceson.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/entities/biceson.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/entities/biceson.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/entities/nardolphle.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/entities/nardolphle.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/entities/nardolphle.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/entities/nardolphle.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/entities/nardolphle.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/entities/nardolphle.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/entities/sheepomelon.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/entities/sheepomelon.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/entities/sheepomelon.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/entities/sheepomelon.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/entities/sheepomelon.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/entities/sheepomelon.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/loot_tables/entities/sheepomelon.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/loot_tables/entities/sheepomelon.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/loot_tables/entities/sheepomelon.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/loot_tables/entities/sheepomelon.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/loot_tables/entities/sheepomelon.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/loot_tables/entities/sheepomelon.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/loot_tables/entities/sheepomelon_shear.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/loot_tables/entities/sheepomelon_shear.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/loot_tables/entities/sheepomelon_shear.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/loot_tables/entities/sheepomelon_shear.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/loot_tables/entities/sheepomelon_shear.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/loot_tables/entities/sheepomelon_shear.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/biceson.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/biceson.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/biceson.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/biceson.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/biceson.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/biceson.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/nardolphle.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/nardolphle.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/nardolphle.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/nardolphle.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/nardolphle.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/nardolphle.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/sheepomelon.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/sheepomelon.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/sheepomelon.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/sheepomelon.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/sheepomelon.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/sheepomelon.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/texts/en_US.lang"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/texts/en_US.lang"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/texts/en_US.lang"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/texts/en_US.lang"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/texts/en_US.lang"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/texts/en_US.lang"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/texts/languages.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/texts/languages.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/texts/languages.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/texts/languages.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/texts/languages.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/texts/languages.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/manifest.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/manifest.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/manifest.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/manifest.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/manifest.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/manifest.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/sounds.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/sounds.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/sounds.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/sounds.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/sounds.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/sounds.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/animations/biceson.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/animations/biceson.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/animations/biceson.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/animations/biceson.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/animations/biceson.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/animations/biceson.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/animations/nardolphle.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/animations/nardolphle.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/animations/nardolphle.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/animations/nardolphle.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/animations/nardolphle.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/animations/nardolphle.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/animations/sheepomelon.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/animations/sheepomelon.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/animations/sheepomelon.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/animations/sheepomelon.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/animations/sheepomelon.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/animations/sheepomelon.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/entity/biceson.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/entity/biceson.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/entity/biceson.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/entity/biceson.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/entity/biceson.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/entity/biceson.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/entity/nardolphle.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/entity/nardolphle.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/entity/nardolphle.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/entity/nardolphle.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/entity/nardolphle.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/entity/nardolphle.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/entity/sheepomelon.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/entity/sheepomelon.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/entity/sheepomelon.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/entity/sheepomelon.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/entity/sheepomelon.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/entity/sheepomelon.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/materials/entity.material"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/materials/entity.material"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/materials/entity.material"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/materials/entity.material"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/materials/entity.material"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/materials/entity.material"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/models/entity/biceson.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/models/entity/biceson.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/models/entity/biceson.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/models/entity/biceson.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/models/entity/biceson.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/models/entity/biceson.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/models/entity/nardolphle.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/models/entity/nardolphle.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/models/entity/nardolphle.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/models/entity/nardolphle.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/models/entity/nardolphle.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/models/entity/nardolphle.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/models/entity/sheepomelon.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/models/entity/sheepomelon.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/models/entity/sheepomelon.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/models/entity/sheepomelon.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/models/entity/sheepomelon.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/models/entity/sheepomelon.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/particles/fireworks_pop.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/particles/fireworks_pop.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/particles/fireworks_pop.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/particles/fireworks_pop.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/particles/fireworks_pop.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/particles/fireworks_pop.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/particles/smoke_puff.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/particles/smoke_puff.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/particles/smoke_puff.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/particles/smoke_puff.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/particles/smoke_puff.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/particles/smoke_puff.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/texts/en_US.lang"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/texts/en_US.lang"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/texts/en_US.lang"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/texts/en_US.lang"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/texts/en_US.lang"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/texts/en_US.lang"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/texts/languages.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/texts/languages.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/texts/languages.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/texts/languages.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/texts/languages.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/texts/languages.json"},{"iTp":0,"gId":"WORLDDATA","gIx":1,"m":"Test World Data Validation completed successfully."},{"iTp":0,"gId":"ADDONIREQ","gIx":1}],"generatorName":"Minecraft Creator Tools","suite":2,"generatorVersion":"0.2.3","sourceName":"content1","sourcePath":"/"}); +_addReportJson({"info":{"behaviorPackManifestCount":0,"unknownJsonCount":0,"entityTypeManifestCount":0,"itemTypeManifestCount":0,"blockTypeManifestCount":0,"resourcePackManifestCount":0,"worldCount":0,"entityTypeResourceCount":0,"behaviorPackAnimationCount":0,"behaviorPackAnimationControllerCount":0,"overallSize":54260,"fileCounts":37,"folderCounts":23,"contentSize":54260,"contentFileCounts":37,"contentFolderCounts":18,"textureCount":0,"chunkCount":0,"subchunkLessChunkCount":0,"worldLoadErrors":0,"featureSets":{"Textures Entity Resource Count":{"Count":3},"Textures Texture References":{"Count":3},"Textures Entity References":{"Count":3},"Textures File Count":{"Count":4},"Textures Unique Texture Handles (estimated)":{"Count":3},"Textures Unique Texture Paths":{"Count":3},"Textures Unique Particle Texture Paths":{"Count":0},"Textures Unique Particle Texture Vanilla Paths":{"Count":1},"Textures Unique Entity Texture Paths":{"Count":3},"Command say":{"Count":1},"Command summon":{"Count":1}},"summary":{"PACKSIZE":{"1":{"title":"Overall Size"},"2":{"title":"Overall File Count","defaultMessage":"File Counts"},"3":{"title":"Overall Folder Count","defaultMessage":"Folder Counts"},"4":{"title":"Content Size"},"5":{"title":"Content File Count","defaultMessage":"Content File Counts"},"6":{"title":"Content Folder Count","defaultMessage":"Content Folder Counts"}},"ADDONREQ":{"102":{"title":"102","defaultMessage":"Found an add-on-blocked folder 'entities' in a parent folder pack\\loot_tables. Should be named 'creatorshortname' and not a common term","testCompleteFails":1},"104":{"title":"104","defaultMessage":"Found a loose file 'sheepomelon.json' in loot_tables\\entities. Files should only be in the folder loot_tables\\entities\\","testCompleteFails":2}},"TEXTURE":{"1":{"title":"Textures"}},"WORLDDATA":{"1":{"defaultMessage":"Blocks","testCompleteSuccesses":1},"2":{"defaultMessage":"Block Data"},"3":{"defaultMessage":"Commands"},"4":{"defaultMessage":"Execute Sub Commands"},"5":{"defaultMessage":"NBT Tags"},"6":{"defaultMessage":"NBT Experiment Tags"}},"ADDONIREQ":{"1":{"defaultMessage":"Test Addon Item Requirements Generator completed successfully.","testCompleteSuccesses":1}}}},"items":[{"iTp":7,"gId":"PACKSIZE","gIx":1,"d":54260},{"iTp":7,"gId":"PACKSIZE","gIx":2,"d":37},{"iTp":7,"gId":"PACKSIZE","gIx":3,"d":23},{"iTp":7,"gId":"PACKSIZE","gIx":4,"d":54260},{"iTp":7,"gId":"PACKSIZE","gIx":5,"d":37},{"iTp":7,"gId":"PACKSIZE","gIx":6,"d":18},{"iTp":1,"gId":"ADDONREQ","gIx":102,"d":"entities"},{"iTp":1,"gId":"ADDONREQ","gIx":104,"d":"sheepomelon.json"},{"iTp":1,"gId":"ADDONREQ","gIx":104,"m":"Found a loose file 'sheepomelon_shear.json' in loot_tables\\entities. Files should only be in the folder loot_tables\\entities\\","d":"sheepomelon_shear.json"},{"iTp":7,"gId":"TEXTURE","gIx":1,"fs":{"Entity Resource Count":{"Count":3},"Texture References":{"Count":3},"Entity References":{"Count":3},"File Count":{"Count":4},"Unique Texture Handles (estimated)":{"Count":3},"Unique Texture Paths":{"Count":3},"Unique Particle Texture Paths":{"Count":0},"Unique Particle Texture Vanilla Paths":{"Count":1},"Unique Entity Texture Paths":{"Count":3}}},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/manifest.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/manifest.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/manifest.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/manifest.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/manifest.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/manifest.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/animations/sheepomelon.bp_anims.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/animations/sheepomelon.bp_anims.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/animations/sheepomelon.bp_anims.json","fs":{"say":{"Count":1},"summon":{"Count":1}}},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/animations/sheepomelon.bp_anims.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/animations/sheepomelon.bp_anims.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/animations/sheepomelon.bp_anims.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/animation_controllers/sheepomelon.bp_ac.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/animation_controllers/sheepomelon.bp_ac.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/animation_controllers/sheepomelon.bp_ac.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/animation_controllers/sheepomelon.bp_ac.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/animation_controllers/sheepomelon.bp_ac.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/animation_controllers/sheepomelon.bp_ac.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/entities/biceson.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/entities/biceson.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/entities/biceson.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/entities/biceson.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/entities/biceson.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/entities/biceson.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/entities/nardolphle.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/entities/nardolphle.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/entities/nardolphle.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/entities/nardolphle.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/entities/nardolphle.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/entities/nardolphle.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/entities/sheepomelon.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/entities/sheepomelon.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/entities/sheepomelon.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/entities/sheepomelon.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/entities/sheepomelon.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/entities/sheepomelon.behavior.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/loot_tables/entities/sheepomelon.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/loot_tables/entities/sheepomelon.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/loot_tables/entities/sheepomelon.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/loot_tables/entities/sheepomelon.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/loot_tables/entities/sheepomelon.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/loot_tables/entities/sheepomelon.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/loot_tables/entities/sheepomelon_shear.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/loot_tables/entities/sheepomelon_shear.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/loot_tables/entities/sheepomelon_shear.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/loot_tables/entities/sheepomelon_shear.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/loot_tables/entities/sheepomelon_shear.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/loot_tables/entities/sheepomelon_shear.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/biceson.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/biceson.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/biceson.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/biceson.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/biceson.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/biceson.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/nardolphle.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/nardolphle.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/nardolphle.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/nardolphle.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/nardolphle.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/nardolphle.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/sheepomelon.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/sheepomelon.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/sheepomelon.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/sheepomelon.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/sheepomelon.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/spawn_rules/sheepomelon.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/texts/en_US.lang"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/texts/en_US.lang"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/texts/en_US.lang"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/texts/en_US.lang"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/texts/en_US.lang"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/texts/en_US.lang"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/behavior_packs/aop_mobsbp/texts/languages.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/behavior_packs/aop_mobsbp/texts/languages.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/behavior_packs/aop_mobsbp/texts/languages.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/behavior_packs/aop_mobsbp/texts/languages.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/behavior_packs/aop_mobsbp/texts/languages.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/behavior_packs/aop_mobsbp/texts/languages.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/manifest.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/manifest.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/manifest.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/manifest.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/manifest.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/manifest.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/sounds.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/sounds.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/sounds.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/sounds.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/sounds.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/sounds.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/animations/biceson.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/animations/biceson.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/animations/biceson.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/animations/biceson.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/animations/biceson.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/animations/biceson.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/animations/nardolphle.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/animations/nardolphle.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/animations/nardolphle.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/animations/nardolphle.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/animations/nardolphle.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/animations/nardolphle.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/animations/sheepomelon.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/animations/sheepomelon.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/animations/sheepomelon.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/animations/sheepomelon.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/animations/sheepomelon.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/animations/sheepomelon.animation.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/entity/biceson.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/entity/biceson.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/entity/biceson.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/entity/biceson.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/entity/biceson.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/entity/biceson.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/entity/nardolphle.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/entity/nardolphle.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/entity/nardolphle.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/entity/nardolphle.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/entity/nardolphle.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/entity/nardolphle.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/entity/sheepomelon.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/entity/sheepomelon.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/entity/sheepomelon.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/entity/sheepomelon.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/entity/sheepomelon.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/entity/sheepomelon.entity.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/materials/entity.material"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/materials/entity.material"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/materials/entity.material"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/materials/entity.material"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/materials/entity.material"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/materials/entity.material"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/models/entity/biceson.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/models/entity/biceson.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/models/entity/biceson.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/models/entity/biceson.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/models/entity/biceson.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/models/entity/biceson.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/models/entity/nardolphle.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/models/entity/nardolphle.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/models/entity/nardolphle.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/models/entity/nardolphle.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/models/entity/nardolphle.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/models/entity/nardolphle.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/models/entity/sheepomelon.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/models/entity/sheepomelon.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/models/entity/sheepomelon.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/models/entity/sheepomelon.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/models/entity/sheepomelon.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/models/entity/sheepomelon.geometry.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/particles/fireworks_pop.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/particles/fireworks_pop.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/particles/fireworks_pop.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/particles/fireworks_pop.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/particles/fireworks_pop.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/particles/fireworks_pop.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/particles/smoke_puff.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/particles/smoke_puff.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/particles/smoke_puff.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/particles/smoke_puff.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/particles/smoke_puff.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/particles/smoke_puff.json"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/texts/en_US.lang"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/texts/en_US.lang"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/texts/en_US.lang"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/texts/en_US.lang"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/texts/en_US.lang"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/texts/en_US.lang"},{"iTp":7,"gId":"WORLDDATA","gIx":1,"p":"/Content/resource_packs/aop_mobsrp/texts/languages.json"},{"iTp":7,"gId":"WORLDDATA","gIx":2,"p":"/Content/resource_packs/aop_mobsrp/texts/languages.json"},{"iTp":7,"gId":"WORLDDATA","gIx":3,"p":"/Content/resource_packs/aop_mobsrp/texts/languages.json"},{"iTp":7,"gId":"WORLDDATA","gIx":4,"p":"/Content/resource_packs/aop_mobsrp/texts/languages.json"},{"iTp":7,"gId":"WORLDDATA","gIx":5,"p":"/Content/resource_packs/aop_mobsrp/texts/languages.json"},{"iTp":7,"gId":"WORLDDATA","gIx":6,"p":"/Content/resource_packs/aop_mobsrp/texts/languages.json"},{"iTp":0,"gId":"WORLDDATA","gIx":1,"m":"Test World Data Validation completed successfully."},{"iTp":0,"gId":"ADDONIREQ","gIx":1}],"generatorName":"Minecraft Creator Tools","suite":2,"generatorVersion":"0.2.9","sourceName":"content1","sourcePath":"/"});