diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..e3890d8c --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,34 @@ +name: Build + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [20.x, 22.x] + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + steps: + - uses: actions/checkout@v4 + + - name: Setup PNPM + uses: pnpm/action-setup@v4 + env: + ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' + + - name: Install Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + cache: 'pnpm' + node-version: ${{ matrix.node-version }} + + - run: pnpm i -g @microsoft/rush + + - run: rush install + - run: rush rebuild + diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 00000000..d689284f --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,34 @@ +name: Lint + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + lint: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [20.x, 22.x] + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + steps: + - uses: actions/checkout@v4 + + - name: Setup PNPM + uses: pnpm/action-setup@v4 + env: + ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' + + - name: Install Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + cache: 'pnpm' + node-version: ${{ matrix.node-version }} + + - run: pnpm i -g @microsoft/rush + + - run: rush install + - run: rush lint + diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml deleted file mode 100644 index 4a13a377..00000000 --- a/.github/workflows/node.js.yml +++ /dev/null @@ -1,42 +0,0 @@ -# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions - -name: Node.js CI - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - build: - - runs-on: ubuntu-latest - - strategy: - matrix: - node-version: [14.x] - # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - - steps: - - uses: actions/checkout@v2 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node-version }} - - name: Setup PNPM - # You may pin to the exact commit or the version. - # uses: pnpm/action-setup@935101478d12d633ea2e71bb8b63d18e00bda099 - uses: pnpm/action-setup@v1.2.0 - with: - # Version of PNPM to install - version: 5.18.1 - env: - ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' - - run: pnpm i -g @microsoft/rush - - run: rush install - - run: rush rebuild -# - uses: GabrielBB/xvfb-action@v1.0 -# with: -# run: rush unit-test diff --git a/.github/workflows/type-check.yml b/.github/workflows/type-check.yml new file mode 100644 index 00000000..9f15d369 --- /dev/null +++ b/.github/workflows/type-check.yml @@ -0,0 +1,34 @@ +name: Type Check + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + type-check: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [20.x, 22.x] + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + steps: + - uses: actions/checkout@v4 + + - name: Setup PNPM + uses: pnpm/action-setup@v4 + env: + ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' + + - name: Install Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + cache: 'pnpm' + node-version: ${{ matrix.node-version }} + + - run: pnpm i -g @microsoft/rush + + - run: rush install + - run: rush build:types -f @pixi-essentials/svg + diff --git a/common/changes/@pixi-essentials/bounds/shukant-svg-upgrade_2024-10-08-00-57.json b/common/changes/@pixi-essentials/bounds/shukant-svg-upgrade_2024-10-08-00-57.json new file mode 100644 index 00000000..c5caf609 --- /dev/null +++ b/common/changes/@pixi-essentials/bounds/shukant-svg-upgrade_2024-10-08-00-57.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@pixi-essentials/bounds", + "comment": "", + "type": "none" + } + ], + "packageName": "@pixi-essentials/bounds" +} \ No newline at end of file diff --git a/common/changes/@pixi-essentials/bvh/shukant-svg-upgrade_2024-10-08-00-57.json b/common/changes/@pixi-essentials/bvh/shukant-svg-upgrade_2024-10-08-00-57.json new file mode 100644 index 00000000..c765b12a --- /dev/null +++ b/common/changes/@pixi-essentials/bvh/shukant-svg-upgrade_2024-10-08-00-57.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@pixi-essentials/bvh", + "comment": "", + "type": "none" + } + ], + "packageName": "@pixi-essentials/bvh" +} \ No newline at end of file diff --git a/common/changes/@pixi-essentials/conic/shukant-svg-upgrade_2024-10-08-00-57.json b/common/changes/@pixi-essentials/conic/shukant-svg-upgrade_2024-10-08-00-57.json new file mode 100644 index 00000000..33de149a --- /dev/null +++ b/common/changes/@pixi-essentials/conic/shukant-svg-upgrade_2024-10-08-00-57.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@pixi-essentials/conic", + "comment": "", + "type": "none" + } + ], + "packageName": "@pixi-essentials/conic" +} \ No newline at end of file diff --git a/common/changes/@pixi-essentials/cull/shukant-svg-upgrade_2024-10-08-00-57.json b/common/changes/@pixi-essentials/cull/shukant-svg-upgrade_2024-10-08-00-57.json new file mode 100644 index 00000000..5a9322c9 --- /dev/null +++ b/common/changes/@pixi-essentials/cull/shukant-svg-upgrade_2024-10-08-00-57.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@pixi-essentials/cull", + "comment": "", + "type": "none" + } + ], + "packageName": "@pixi-essentials/cull" +} \ No newline at end of file diff --git a/common/changes/@pixi-essentials/data-half-edge-mesh/shukant-svg-upgrade_2024-10-08-00-57.json b/common/changes/@pixi-essentials/data-half-edge-mesh/shukant-svg-upgrade_2024-10-08-00-57.json new file mode 100644 index 00000000..b4c3cd18 --- /dev/null +++ b/common/changes/@pixi-essentials/data-half-edge-mesh/shukant-svg-upgrade_2024-10-08-00-57.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@pixi-essentials/data-half-edge-mesh", + "comment": "", + "type": "none" + } + ], + "packageName": "@pixi-essentials/data-half-edge-mesh" +} \ No newline at end of file diff --git a/common/changes/@pixi-essentials/filter-fft/shukant-svg-upgrade_2024-10-08-00-57.json b/common/changes/@pixi-essentials/filter-fft/shukant-svg-upgrade_2024-10-08-00-57.json new file mode 100644 index 00000000..b54d7858 --- /dev/null +++ b/common/changes/@pixi-essentials/filter-fft/shukant-svg-upgrade_2024-10-08-00-57.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@pixi-essentials/filter-fft", + "comment": "", + "type": "none" + } + ], + "packageName": "@pixi-essentials/filter-fft" +} \ No newline at end of file diff --git a/common/changes/@pixi-essentials/instanced-renderer/shukant-svg-upgrade_2024-10-08-00-57.json b/common/changes/@pixi-essentials/instanced-renderer/shukant-svg-upgrade_2024-10-08-00-57.json new file mode 100644 index 00000000..a8c5c5c9 --- /dev/null +++ b/common/changes/@pixi-essentials/instanced-renderer/shukant-svg-upgrade_2024-10-08-00-57.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@pixi-essentials/instanced-renderer", + "comment": "", + "type": "none" + } + ], + "packageName": "@pixi-essentials/instanced-renderer" +} \ No newline at end of file diff --git a/common/changes/@pixi-essentials/mixin-smart-mask/shukant-svg-upgrade_2024-10-08-00-57.json b/common/changes/@pixi-essentials/mixin-smart-mask/shukant-svg-upgrade_2024-10-08-00-57.json new file mode 100644 index 00000000..0f740af4 --- /dev/null +++ b/common/changes/@pixi-essentials/mixin-smart-mask/shukant-svg-upgrade_2024-10-08-00-57.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@pixi-essentials/mixin-smart-mask", + "comment": "", + "type": "none" + } + ], + "packageName": "@pixi-essentials/mixin-smart-mask" +} \ No newline at end of file diff --git a/common/changes/@pixi-essentials/object-pool/shukant-svg-upgrade_2024-10-08-00-57.json b/common/changes/@pixi-essentials/object-pool/shukant-svg-upgrade_2024-10-08-00-57.json new file mode 100644 index 00000000..d575df94 --- /dev/null +++ b/common/changes/@pixi-essentials/object-pool/shukant-svg-upgrade_2024-10-08-00-57.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@pixi-essentials/object-pool", + "comment": "", + "type": "none" + } + ], + "packageName": "@pixi-essentials/object-pool" +} \ No newline at end of file diff --git a/common/changes/@pixi-essentials/react-bindings/shukant-svg-upgrade_2024-10-08-00-57.json b/common/changes/@pixi-essentials/react-bindings/shukant-svg-upgrade_2024-10-08-00-57.json new file mode 100644 index 00000000..5228d7c5 --- /dev/null +++ b/common/changes/@pixi-essentials/react-bindings/shukant-svg-upgrade_2024-10-08-00-57.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@pixi-essentials/react-bindings", + "comment": "", + "type": "none" + } + ], + "packageName": "@pixi-essentials/react-bindings" +} \ No newline at end of file diff --git a/common/changes/@pixi-essentials/shader-preprocessor/shukant-svg-upgrade_2024-10-08-00-57.json b/common/changes/@pixi-essentials/shader-preprocessor/shukant-svg-upgrade_2024-10-08-00-57.json new file mode 100644 index 00000000..03c95a43 --- /dev/null +++ b/common/changes/@pixi-essentials/shader-preprocessor/shukant-svg-upgrade_2024-10-08-00-57.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@pixi-essentials/shader-preprocessor", + "comment": "", + "type": "none" + } + ], + "packageName": "@pixi-essentials/shader-preprocessor" +} \ No newline at end of file diff --git a/common/changes/@pixi-essentials/svg/master_2023-07-03-13-16.json b/common/changes/@pixi-essentials/svg/master_2023-07-03-13-16.json deleted file mode 100644 index b930dcef..00000000 --- a/common/changes/@pixi-essentials/svg/master_2023-07-03-13-16.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@pixi-essentials/svg", - "comment": "", - "type": "none" - } - ], - "packageName": "@pixi-essentials/svg" -} \ No newline at end of file diff --git a/common/changes/@pixi-essentials/svg/master_2023-07-03-13-17.json b/common/changes/@pixi-essentials/svg/master_2023-07-03-13-17.json deleted file mode 100644 index b930dcef..00000000 --- a/common/changes/@pixi-essentials/svg/master_2023-07-03-13-17.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@pixi-essentials/svg", - "comment": "", - "type": "none" - } - ], - "packageName": "@pixi-essentials/svg" -} \ No newline at end of file diff --git a/common/changes/@pixi-essentials/system-g/shukant-svg-upgrade_2024-10-08-00-57.json b/common/changes/@pixi-essentials/system-g/shukant-svg-upgrade_2024-10-08-00-57.json new file mode 100644 index 00000000..186d2e30 --- /dev/null +++ b/common/changes/@pixi-essentials/system-g/shukant-svg-upgrade_2024-10-08-00-57.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@pixi-essentials/system-g", + "comment": "", + "type": "none" + } + ], + "packageName": "@pixi-essentials/system-g" +} \ No newline at end of file diff --git a/common/changes/@pixi-essentials/texture-allocator/master_2023-07-03-13-16.json b/common/changes/@pixi-essentials/texture-allocator/master_2023-07-03-13-16.json deleted file mode 100644 index adda9a75..00000000 --- a/common/changes/@pixi-essentials/texture-allocator/master_2023-07-03-13-16.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@pixi-essentials/texture-allocator", - "comment": "", - "type": "none" - } - ], - "packageName": "@pixi-essentials/texture-allocator" -} \ No newline at end of file diff --git a/common/changes/@pixi-essentials/texture-allocator/master_2023-07-03-13-17.json b/common/changes/@pixi-essentials/texture-allocator/master_2023-07-03-13-17.json deleted file mode 100644 index adda9a75..00000000 --- a/common/changes/@pixi-essentials/texture-allocator/master_2023-07-03-13-17.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@pixi-essentials/texture-allocator", - "comment": "", - "type": "none" - } - ], - "packageName": "@pixi-essentials/texture-allocator" -} \ No newline at end of file diff --git a/common/changes/@pixi-essentials/transformer/shukant-svg-upgrade_2024-10-08-00-57.json b/common/changes/@pixi-essentials/transformer/shukant-svg-upgrade_2024-10-08-00-57.json new file mode 100644 index 00000000..c66124c1 --- /dev/null +++ b/common/changes/@pixi-essentials/transformer/shukant-svg-upgrade_2024-10-08-00-57.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@pixi-essentials/transformer", + "comment": "", + "type": "none" + } + ], + "packageName": "@pixi-essentials/transformer" +} \ No newline at end of file diff --git a/common/changes/@pixi-essentials/types/shukant-svg-upgrade_2024-10-08-00-57.json b/common/changes/@pixi-essentials/types/shukant-svg-upgrade_2024-10-08-00-57.json new file mode 100644 index 00000000..b1f06c5b --- /dev/null +++ b/common/changes/@pixi-essentials/types/shukant-svg-upgrade_2024-10-08-00-57.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@pixi-essentials/types", + "comment": "", + "type": "none" + } + ], + "packageName": "@pixi-essentials/types" +} \ No newline at end of file diff --git a/common/config/rush/command-line.json b/common/config/rush/command-line.json index f41fbaf1..5d469a1a 100644 --- a/common/config/rush/command-line.json +++ b/common/config/rush/command-line.json @@ -16,6 +16,16 @@ "description": "@microsoft/api-extractor is used to bundle the compiler generated .d.ts files", "safeForSimultaneousRushProcesses": true, "enableParallelism": true, + "ignoreMissingScript": true, + "allowWarningsInSuccessfulBuild": true + }, + { + "commandKind": "bulk", + "name": "lint", + "summary": "Lint all TypeScript files in the project", + "description": "Uses ESLint to lint all TypeScript files in the project", + "safeForSimultaneousRushProcesses": true, + "enableParallelism": true, "ignoreMissingScript": true } ] diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 93924651..3ef9a9c2 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -1,114 +1,161 @@ -lockfileVersion: 5.4 - -specifiers: - '@pixi-build-tools/floss-rush-monorepo': 1.0.1 - '@pixi-build-tools/rollup-configurator': ^1.0.10 - '@pixi/constants': ^5.1.0 - '@pixi/eslint-config': ~1.0.1 - '@pixi/graphics': ^7.0.0 - '@pixi/react': ^7.0.0 - '@pixi/sprite': ^7.0.0 - '@pixi/ticker': ^7.0.0 - '@pixi/utils': ^5.1.0 - '@rush-temp/area-allocator': file:./projects/area-allocator.tgz - '@rush-temp/bounds': file:./projects/bounds.tgz - '@rush-temp/bvh': file:./projects/bvh.tgz - '@rush-temp/conic': file:./projects/conic.tgz - '@rush-temp/cull': file:./projects/cull.tgz - '@rush-temp/data-half-edge-mesh': file:./projects/data-half-edge-mesh.tgz - '@rush-temp/diagnostic-geometry': file:./projects/diagnostic-geometry.tgz - '@rush-temp/eslint-config': file:./projects/eslint-config.tgz - '@rush-temp/filter-fft': file:./projects/filter-fft.tgz - '@rush-temp/gradients': file:./projects/gradients.tgz - '@rush-temp/instanced-renderer': file:./projects/instanced-renderer.tgz - '@rush-temp/mixin-smart-mask': file:./projects/mixin-smart-mask.tgz - '@rush-temp/object-pool': file:./projects/object-pool.tgz - '@rush-temp/react-bindings': file:./projects/react-bindings.tgz - '@rush-temp/shader-preprocessor': file:./projects/shader-preprocessor.tgz - '@rush-temp/svg': file:./projects/svg.tgz - '@rush-temp/system-g': file:./projects/system-g.tgz - '@rush-temp/texture-allocator': file:./projects/texture-allocator.tgz - '@rush-temp/transformer': file:./projects/transformer.tgz - '@rush-temp/types': file:./projects/types.tgz - '@rush-temp/unit-tests': file:./projects/unit-tests.tgz - '@rushstack/eslint-patch': ~1.0.3 - '@types/react': ^16.9.46 - '@typescript-eslint/eslint-plugin': ~3.9.1 - '@typescript-eslint/parser': ~3.9.1 - d-path-parser: ^1.0.0 - electron: ~11.3.0 - floss: ^4.0.0 - gl-mat3: 2.0.0 - libtess: ~1.2.2 - pixi.js: ^7.0.0 - sinon: ~9.2.4 - tinycolor2: ^1.4.1 +lockfileVersion: '6.0' + +settings: + autoInstallPeers: false + excludeLinksFromLockfile: false dependencies: - '@pixi-build-tools/floss-rush-monorepo': 1.0.1 - '@pixi-build-tools/rollup-configurator': 1.0.14 - '@pixi/constants': 5.3.12 - '@pixi/eslint-config': 1.0.1 - '@pixi/graphics': 7.1.4 - '@pixi/react': 7.1.0_ixhinzbrtvxaplzl5esyie5uue - '@pixi/sprite': 7.1.4 - '@pixi/ticker': 7.1.4 - '@pixi/utils': 5.3.12 - '@rush-temp/area-allocator': file:projects/area-allocator.tgz - '@rush-temp/bounds': file:projects/bounds.tgz - '@rush-temp/bvh': file:projects/bvh.tgz - '@rush-temp/conic': file:projects/conic.tgz_@pixi+utils@5.3.12 - '@rush-temp/cull': file:projects/cull.tgz - '@rush-temp/data-half-edge-mesh': file:projects/data-half-edge-mesh.tgz - '@rush-temp/diagnostic-geometry': file:projects/diagnostic-geometry.tgz_vdrtr6h4e3e47nhkcu2cx5y2na - '@rush-temp/eslint-config': file:projects/eslint-config.tgz - '@rush-temp/filter-fft': file:projects/filter-fft.tgz - '@rush-temp/gradients': file:projects/gradients.tgz - '@rush-temp/instanced-renderer': file:projects/instanced-renderer.tgz - '@rush-temp/mixin-smart-mask': file:projects/mixin-smart-mask.tgz - '@rush-temp/object-pool': file:projects/object-pool.tgz - '@rush-temp/react-bindings': file:projects/react-bindings.tgz_ixhinzbrtvxaplzl5esyie5uue - '@rush-temp/shader-preprocessor': file:projects/shader-preprocessor.tgz - '@rush-temp/svg': file:projects/svg.tgz - '@rush-temp/system-g': file:projects/system-g.tgz - '@rush-temp/texture-allocator': file:projects/texture-allocator.tgz - '@rush-temp/transformer': file:projects/transformer.tgz - '@rush-temp/types': file:projects/types.tgz - '@rush-temp/unit-tests': file:projects/unit-tests.tgz - '@rushstack/eslint-patch': 1.0.9 - '@types/react': 16.14.35 - '@typescript-eslint/eslint-plugin': 3.9.1_i4ziokri6n3rwd6nkfbszx5k7y - '@typescript-eslint/parser': 3.9.1 - d-path-parser: 1.0.0 - electron: 11.3.0 - floss: 4.0.0_electron@11.3.0 - gl-mat3: 2.0.0 - libtess: 1.2.2 - pixi.js: 7.1.4 - sinon: 9.2.4 - tinycolor2: 1.6.0 + '@pixi-build-tools/floss-rush-monorepo': + specifier: 1.0.1 + version: 1.0.1 + '@pixi-build-tools/rollup-configurator': + specifier: ^1.0.10 + version: 1.0.14(rollup@2.79.1) + '@pixi/constants': + specifier: ^5.1.0 + version: 5.3.12 + '@pixi/eslint-config': + specifier: ~5.1.0 + version: 5.1.0(typescript@5.3.3) + '@pixi/graphics': + specifier: ^7.0.0 + version: 7.1.4 + '@pixi/react': + specifier: ^7.0.0 + version: 7.1.0(@pixi/constants@5.3.12)(@pixi/display@7.1.4)(@pixi/graphics@7.1.4)(@pixi/math@7.1.4)(@pixi/ticker@7.1.4)(react@18.2.0) + '@pixi/ticker': + specifier: ^7.0.0 + version: 7.1.4 + '@pixi/utils': + specifier: ^5.1.0 + version: 5.3.12 + '@rollup/plugin-commonjs': + specifier: ~25.0.7 + version: 25.0.7(rollup@2.79.1) + '@rollup/plugin-node-resolve': + specifier: ~15.2.3 + version: 15.2.3(rollup@2.79.1) + '@rollup/plugin-sucrase': + specifier: ^5.0.2 + version: 5.0.2(rollup@2.79.1) + '@rush-temp/area-allocator': + specifier: file:./projects/area-allocator.tgz + version: file:projects/area-allocator.tgz + '@rush-temp/bounds': + specifier: file:./projects/bounds.tgz + version: file:projects/bounds.tgz + '@rush-temp/bvh': + specifier: file:./projects/bvh.tgz + version: file:projects/bvh.tgz + '@rush-temp/conic': + specifier: file:./projects/conic.tgz + version: file:projects/conic.tgz(@pixi/utils@5.3.12) + '@rush-temp/cull': + specifier: file:./projects/cull.tgz + version: file:projects/cull.tgz + '@rush-temp/data-half-edge-mesh': + specifier: file:./projects/data-half-edge-mesh.tgz + version: file:projects/data-half-edge-mesh.tgz + '@rush-temp/diagnostic-geometry': + specifier: file:./projects/diagnostic-geometry.tgz + version: file:projects/diagnostic-geometry.tgz(@pixi/constants@5.3.12)(@pixi/utils@5.3.12) + '@rush-temp/eslint-config': + specifier: file:./projects/eslint-config.tgz + version: file:projects/eslint-config.tgz(typescript@5.3.3) + '@rush-temp/examples': + specifier: file:./projects/examples.tgz + version: file:projects/examples.tgz + '@rush-temp/filter-fft': + specifier: file:./projects/filter-fft.tgz + version: file:projects/filter-fft.tgz + '@rush-temp/gradients': + specifier: file:./projects/gradients.tgz + version: file:projects/gradients.tgz + '@rush-temp/instanced-renderer': + specifier: file:./projects/instanced-renderer.tgz + version: file:projects/instanced-renderer.tgz + '@rush-temp/mixin-smart-mask': + specifier: file:./projects/mixin-smart-mask.tgz + version: file:projects/mixin-smart-mask.tgz + '@rush-temp/object-pool': + specifier: file:./projects/object-pool.tgz + version: file:projects/object-pool.tgz + '@rush-temp/react-bindings': + specifier: file:./projects/react-bindings.tgz + version: file:projects/react-bindings.tgz(@pixi/constants@5.3.12)(@pixi/graphics@7.1.4)(@pixi/ticker@7.1.4) + '@rush-temp/shader-preprocessor': + specifier: file:./projects/shader-preprocessor.tgz + version: file:projects/shader-preprocessor.tgz + '@rush-temp/svg': + specifier: file:./projects/svg.tgz + version: file:projects/svg.tgz + '@rush-temp/system-g': + specifier: file:./projects/system-g.tgz + version: file:projects/system-g.tgz + '@rush-temp/texture-allocator': + specifier: file:./projects/texture-allocator.tgz + version: file:projects/texture-allocator.tgz + '@rush-temp/transformer': + specifier: file:./projects/transformer.tgz + version: file:projects/transformer.tgz + '@rush-temp/types': + specifier: file:./projects/types.tgz + version: file:projects/types.tgz + '@rush-temp/unit-tests': + specifier: file:./projects/unit-tests.tgz + version: file:projects/unit-tests.tgz(typescript@5.3.3) + '@rushstack/eslint-patch': + specifier: ~1.0.3 + version: 1.0.9 + '@types/react': + specifier: ^16.9.46 + version: 16.14.35 + d-path-parser: + specifier: ^1.0.0 + version: 1.0.0 + electron: + specifier: ~11.3.0 + version: 11.3.0 + floss: + specifier: ^4.0.0 + version: 4.0.0(electron@11.3.0) + gl-mat3: + specifier: 2.0.0 + version: 2.0.0 + libtess: + specifier: ~1.2.2 + version: 1.2.2 + sinon: + specifier: ~9.2.4 + version: 9.2.4 + tinycolor2: + specifier: ^1.4.1 + version: 1.6.0 + typescript: + specifier: ~5.3.3 + version: 5.3.3 packages: - /@babel/code-frame/7.12.11: + /@babel/code-frame@7.12.11: resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} dependencies: '@babel/highlight': 7.18.6 dev: false - /@babel/code-frame/7.18.6: + /@babel/code-frame@7.18.6: resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.18.6 dev: false - /@babel/helper-validator-identifier/7.19.1: + /@babel/helper-validator-identifier@7.19.1: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} dev: false - /@babel/highlight/7.18.6: + /@babel/highlight@7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} dependencies: @@ -117,7 +164,12 @@ packages: js-tokens: 4.0.0 dev: false - /@electron/get/1.14.1: + /@discoveryjs/json-ext@0.5.7: + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} + dev: false + + /@electron/get@1.14.1: resolution: {integrity: sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==} engines: {node: '>=8.6'} dependencies: @@ -135,7 +187,32 @@ packages: - supports-color dev: false - /@eslint/eslintrc/0.2.2: + /@eslint-community/eslint-utils@4.4.0(eslint@7.13.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 7.13.0 + eslint-visitor-keys: 3.4.3 + dev: false + + /@eslint-community/eslint-utils@4.4.0(eslint@7.7.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 7.7.0 + eslint-visitor-keys: 3.4.3 + dev: false + + /@eslint-community/regexpp@4.11.1: + resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: false + + /@eslint/eslintrc@0.2.2: resolution: {integrity: sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: @@ -153,7 +230,7 @@ packages: - supports-color dev: false - /@eslint/eslintrc/0.4.3: + /@eslint/eslintrc@0.4.3: resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: @@ -170,7 +247,7 @@ packages: - supports-color dev: false - /@humanwhocodes/config-array/0.5.0: + /@humanwhocodes/config-array@0.5.0: resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} engines: {node: '>=10.10.0'} dependencies: @@ -181,11 +258,11 @@ packages: - supports-color dev: false - /@humanwhocodes/object-schema/1.2.1: + /@humanwhocodes/object-schema@1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: false - /@jridgewell/gen-mapping/0.3.2: + /@jridgewell/gen-mapping@0.3.2: resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} engines: {node: '>=6.0.0'} dependencies: @@ -194,68 +271,105 @@ packages: '@jridgewell/trace-mapping': 0.3.17 dev: false - /@jridgewell/resolve-uri/3.1.0: + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/trace-mapping': 0.3.25 + dev: false + + /@jridgewell/resolve-uri@3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} dev: false - /@jridgewell/set-array/1.1.2: + /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} dev: false - /@jridgewell/source-map/0.3.2: + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + dev: false + + /@jridgewell/source-map@0.3.2: resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} dependencies: '@jridgewell/gen-mapping': 0.3.2 '@jridgewell/trace-mapping': 0.3.17 dev: false - /@jridgewell/sourcemap-codec/1.4.14: + /@jridgewell/source-map@0.3.6: + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: false + + /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} dev: false - /@jridgewell/trace-mapping/0.3.17: + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: false + + /@jridgewell/trace-mapping@0.3.17: resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 dev: false - /@microsoft/api-extractor-model/7.13.3: - resolution: {integrity: sha512-uXilAhu2GcvyY/0NwVRk3AN7TFYjkPnjHLV2UywTTz9uglS+Af0YjNrCy+aaK8qXtfbFWdBzkH9N2XU8/YBeRQ==} + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: false + + /@microsoft/api-extractor-model@7.29.8: + resolution: {integrity: sha512-t3Z/xcO6TRbMcnKGVMs4uMzv/gd5j0NhMiJIGjD4cJMeFJ1Hf8wnLSx37vxlRlL0GWlGJhnFgxvnaL6JlS+73g==} dependencies: - '@microsoft/tsdoc': 0.13.2 - '@microsoft/tsdoc-config': 0.15.2 - '@rushstack/node-core-library': 3.39.0 + '@microsoft/tsdoc': 0.15.0 + '@microsoft/tsdoc-config': 0.17.0 + '@rushstack/node-core-library': 5.9.0 + transitivePeerDependencies: + - '@types/node' dev: false - /@microsoft/api-extractor-model/7.7.11: + /@microsoft/api-extractor-model@7.7.11: resolution: {integrity: sha512-Kf3RytYDq7sP4ASaaA9IcvaOPbVj1Xj34E2Wxd9DznI7sG4HzcpoOGmxaZHCzyYVh7wfAaAlvcXf3SV+djhNZw==} dependencies: '@microsoft/tsdoc': 0.12.19 '@rushstack/node-core-library': 3.19.7 dev: false - /@microsoft/api-extractor/7.16.1: - resolution: {integrity: sha512-hKFoLdmEUbHMIH48MXzSg8rndiugrXHruMVk+BQvhu14yX3LxH9re1CKwj4vLZb7bVBn+FfaWSZ5d3ltiXvX3w==} + /@microsoft/api-extractor@7.47.9: + resolution: {integrity: sha512-TTq30M1rikVsO5wZVToQT/dGyJY7UXJmjiRtkHPLb74Prx3Etw8+bX7Bv7iLuby6ysb7fuu1NFWqma+csym8Jw==} hasBin: true dependencies: - '@microsoft/api-extractor-model': 7.13.3 - '@microsoft/tsdoc': 0.13.2 - '@microsoft/tsdoc-config': 0.15.2 - '@rushstack/node-core-library': 3.39.0 - '@rushstack/rig-package': 0.2.12 - '@rushstack/ts-command-line': 4.7.10 - colors: 1.2.5 + '@microsoft/api-extractor-model': 7.29.8 + '@microsoft/tsdoc': 0.15.0 + '@microsoft/tsdoc-config': 0.17.0 + '@rushstack/node-core-library': 5.9.0 + '@rushstack/rig-package': 0.5.3 + '@rushstack/terminal': 0.14.2 + '@rushstack/ts-command-line': 4.22.8 lodash: 4.17.21 - resolve: 1.17.0 - semver: 7.3.8 + minimatch: 3.0.8 + resolve: 1.22.1 + semver: 7.5.4 source-map: 0.6.1 - typescript: 4.3.5 + typescript: 5.4.2 + transitivePeerDependencies: + - '@types/node' dev: false - /@microsoft/api-extractor/7.7.13: + /@microsoft/api-extractor@7.7.13: resolution: {integrity: sha512-7+EGunGd7OSfDxZl4aDI4qMWG98+I84vTryNadti+IfgpB9IyhJtgA4r3dCG7hewTwKACBhi5aPqpH2C7l/30A==} hasBin: true dependencies: @@ -270,7 +384,7 @@ packages: typescript: 3.7.7 dev: false - /@microsoft/rush-lib/5.33.2: + /@microsoft/rush-lib@5.33.2: resolution: {integrity: sha512-rheYnnZ0YG3U7jqUFPRjsD5n6BxEqRDmVEmstsjmfGYkRgKlcOw/iAc5eAzZx4gE9jJcRlkgSZ7T8IKSz9m72w==} engines: {node: '>=5.6.0'} dependencies: @@ -307,24 +421,24 @@ packages: z-schema: 3.18.4 dev: false - /@microsoft/tsdoc-config/0.15.2: - resolution: {integrity: sha512-mK19b2wJHSdNf8znXSMYVShAHktVr/ib0Ck2FA3lsVBSEhSI/TfXT7DJQkAYgcztTuwazGcg58ZjYdk0hTCVrA==} + /@microsoft/tsdoc-config@0.17.0: + resolution: {integrity: sha512-v/EYRXnCAIHxOHW+Plb6OWuUoMotxTN0GLatnpOb1xq0KuTNw/WI3pamJx/UbsoJP5k9MCw1QxvvhPcF9pH3Zg==} dependencies: - '@microsoft/tsdoc': 0.13.2 - ajv: 6.12.6 + '@microsoft/tsdoc': 0.15.0 + ajv: 8.12.0 jju: 1.4.0 - resolve: 1.19.0 + resolve: 1.22.8 dev: false - /@microsoft/tsdoc/0.12.19: + /@microsoft/tsdoc@0.12.19: resolution: {integrity: sha512-IpgPxHrNxZiMNUSXqR1l/gePKPkfAmIKoDRP9hp7OwjU29ZR8WCJsOJ8iBKgw0Qk+pFwR+8Y1cy8ImLY6e9m4A==} dev: false - /@microsoft/tsdoc/0.13.2: - resolution: {integrity: sha512-WrHvO8PDL8wd8T2+zBGKrMwVL5IyzR3ryWUsl0PXgEV0QHup4mTLi0QcATefGI6Gx9Anu7vthPyyyLpY0EpiQg==} + /@microsoft/tsdoc@0.15.0: + resolution: {integrity: sha512-HZpPoABogPvjeJOdzCOSJsXeL/SMCBgBZMVC3X3d7YYp2gf31MfxhUoYUNwf1ERPJOnQc0wkFn9trqI6ZEdZuA==} dev: false - /@nodelib/fs.scandir/2.1.5: + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} dependencies: @@ -332,12 +446,12 @@ packages: run-parallel: 1.2.0 dev: false - /@nodelib/fs.stat/2.0.5: + /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} dev: false - /@nodelib/fs.walk/1.2.8: + /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} dependencies: @@ -345,117 +459,104 @@ packages: fastq: 1.15.0 dev: false - /@pixi-build-tools/floss-rush-monorepo/1.0.1: + /@pixi-build-tools/floss-rush-monorepo@1.0.1: resolution: {integrity: sha512-5hlkOvptcZP/rLZb3c6h1MFbZDuNvlmbdpwp2Jglbh3WTeGsqgCOWDdIdYED0BvAgptlkBK1YIto4s1TxhEeTw==} dependencies: '@microsoft/rush-lib': 5.33.2 chai: 4.2.0 sinon: 9.0.3 - sinon-chai: 3.5.0_chai@4.2.0+sinon@9.0.3 + sinon-chai: 3.5.0(chai@4.2.0)(sinon@9.0.3) dev: false - /@pixi-build-tools/globals/1.0.6: + /@pixi-build-tools/globals@1.0.6: resolution: {integrity: sha512-ZkiQRW5zrT2VvLrhXKRObSFBf8it+GW+ITcHvULxXx313soIPDt7ai7233M+7XtJmA5H0V6LaDlFrwnjNY2xEQ==} dev: false - /@pixi-build-tools/rollup-configurator/1.0.14: - resolution: {integrity: sha512-7P0tX53AoQHAtD4iGWRoFOulVOYV4DZuRXG31UdxK0xMJ1054eM0p9JtZRrNyOkE1AAcfJQbXz0cNrnGcnMLyg==} - peerDependencies: - rollup: '*' - dependencies: - '@pixi-build-tools/globals': 1.0.6 - '@rollup/plugin-commonjs': 15.0.0 - '@rollup/plugin-sucrase': 3.1.1 - rollup-plugin-node-resolve: 5.2.0 - rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.6.3 - rollup-plugin-string: 3.0.0 - rollup-plugin-terser: 7.0.2 - transitivePeerDependencies: - - '@types/node' - dev: false - - /@pixi-build-tools/rollup-configurator/1.0.14_rollup@2.27.1: + /@pixi-build-tools/rollup-configurator@1.0.14(rollup@2.27.1): resolution: {integrity: sha512-7P0tX53AoQHAtD4iGWRoFOulVOYV4DZuRXG31UdxK0xMJ1054eM0p9JtZRrNyOkE1AAcfJQbXz0cNrnGcnMLyg==} peerDependencies: rollup: '*' dependencies: '@pixi-build-tools/globals': 1.0.6 - '@rollup/plugin-commonjs': 15.0.0_rollup@2.27.1 - '@rollup/plugin-sucrase': 3.1.1_rollup@2.27.1 + '@rollup/plugin-commonjs': 15.0.0(rollup@2.27.1) + '@rollup/plugin-sucrase': 3.1.1(rollup@2.27.1) rollup: 2.27.1 - rollup-plugin-node-resolve: 5.2.0_rollup@2.27.1 + rollup-plugin-node-resolve: 5.2.0(rollup@2.27.1) rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.6.3_rollup@2.27.1 + rollup-plugin-sourcemaps: 0.6.3(rollup@2.27.1) rollup-plugin-string: 3.0.0 - rollup-plugin-terser: 7.0.2_rollup@2.27.1 + rollup-plugin-terser: 7.0.2(rollup@2.27.1) transitivePeerDependencies: - '@types/node' dev: false - /@pixi-build-tools/rollup-configurator/1.0.14_rollup@2.33.3: + /@pixi-build-tools/rollup-configurator@1.0.14(rollup@2.33.3): resolution: {integrity: sha512-7P0tX53AoQHAtD4iGWRoFOulVOYV4DZuRXG31UdxK0xMJ1054eM0p9JtZRrNyOkE1AAcfJQbXz0cNrnGcnMLyg==} peerDependencies: rollup: '*' dependencies: '@pixi-build-tools/globals': 1.0.6 - '@rollup/plugin-commonjs': 15.0.0_rollup@2.33.3 - '@rollup/plugin-sucrase': 3.1.1_rollup@2.33.3 + '@rollup/plugin-commonjs': 15.0.0(rollup@2.33.3) + '@rollup/plugin-sucrase': 3.1.1(rollup@2.33.3) rollup: 2.33.3 - rollup-plugin-node-resolve: 5.2.0_rollup@2.33.3 + rollup-plugin-node-resolve: 5.2.0(rollup@2.33.3) rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.6.3_rollup@2.33.3 + rollup-plugin-sourcemaps: 0.6.3(rollup@2.33.3) rollup-plugin-string: 3.0.0 - rollup-plugin-terser: 7.0.2_rollup@2.33.3 + rollup-plugin-terser: 7.0.2(rollup@2.33.3) transitivePeerDependencies: - '@types/node' dev: false - /@pixi-build-tools/rollup-configurator/1.0.14_rollup@2.79.1: + /@pixi-build-tools/rollup-configurator@1.0.14(rollup@2.79.1): resolution: {integrity: sha512-7P0tX53AoQHAtD4iGWRoFOulVOYV4DZuRXG31UdxK0xMJ1054eM0p9JtZRrNyOkE1AAcfJQbXz0cNrnGcnMLyg==} peerDependencies: rollup: '*' dependencies: '@pixi-build-tools/globals': 1.0.6 - '@rollup/plugin-commonjs': 15.0.0_rollup@2.79.1 - '@rollup/plugin-sucrase': 3.1.1_rollup@2.79.1 + '@rollup/plugin-commonjs': 15.0.0(rollup@2.79.1) + '@rollup/plugin-sucrase': 3.1.1(rollup@2.79.1) rollup: 2.79.1 - rollup-plugin-node-resolve: 5.2.0_rollup@2.79.1 + rollup-plugin-node-resolve: 5.2.0(rollup@2.79.1) rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.6.3_rollup@2.79.1 + rollup-plugin-sourcemaps: 0.6.3(rollup@2.79.1) rollup-plugin-string: 3.0.0 - rollup-plugin-terser: 7.0.2_rollup@2.79.1 + rollup-plugin-terser: 7.0.2(rollup@2.79.1) transitivePeerDependencies: - '@types/node' dev: false - /@pixi/accessibility/7.1.4: + /@pixi/accessibility@7.1.4: resolution: {integrity: sha512-F0hge+UE200uu3Sk8MJtKhJ2eisZ/mkZMmUO/8ZTmj9wXRbp8qGDrlmEX/UbwBYUrdXG9cCrFZ+XXHA/Aq5fxg==} dev: false - /@pixi/app/7.1.4: + /@pixi/app@7.1.4: resolution: {integrity: sha512-zUZeRnuUS+94ynCpYGaZHBZjUqpKITk7Zz196RY6F6pRs5ycZTmtA+ChnU45N0xg11rsyT2Qam3ogdL2SjkNpw==} dev: false - /@pixi/assets/7.1.4: + /@pixi/assets@7.1.4: resolution: {integrity: sha512-lRrTOyd8d4+vl4nqz7C7rjnfwcgOGrIjNg7KDm1ntKB7QeTLAf0CbtWbgy3MFPnos0qvYLZwGai6I+bcW6NzxA==} dependencies: '@types/css-font-loading-module': 0.0.7 dev: false - /@pixi/compressed-textures/7.1.4: + /@pixi/colord@2.9.6: + resolution: {integrity: sha512-nezytU2pw587fQstUu1AsJZDVEynjskwOL+kibwcdxsMBFqPsFFNA7xl0ii/gXuDi6M0xj3mfRJj8pBSc2jCfA==} + dev: false + + /@pixi/compressed-textures@7.1.4: resolution: {integrity: sha512-tiolPtyOZmtZIXcC3DvNUzuAtmKpqL6LPm3craPkPUEm07Ma1IY0Xf17i2trLu8PeWpl0rcc6iW+/Nukusqa2A==} dev: false - /@pixi/constants/5.3.12: + /@pixi/constants@5.3.12: resolution: {integrity: sha512-UcuvZZ8cQu+ZC7ufLpKi8NfZX0FncPuxKd0Rf6u6pzO2SmHPq4C1moXYGDnkZjPFAjNYFFHC7chU+zolMtkL/g==} dev: false - /@pixi/constants/7.1.4: + /@pixi/constants@7.1.4: resolution: {integrity: sha512-mSXWnpNQ9h73RMHZoavmHHVnLprLhrWZnJtt0jqF0e4i7nVfU6WGB9wHfhk29TI9MWcZ487qHgdLHpDgUaulSw==} dev: false - /@pixi/core/5.3.12: + /@pixi/core@5.3.12: resolution: {integrity: sha512-SKZPU2mP4UE4trWOTcubGekKwopnotbyR2X8nb68wffBd1GzMoaxyakltfJF2oCV/ivrru/biP4CkW9K6MJ56g==} dependencies: '@pixi/constants': 5.3.12 @@ -466,7 +567,7 @@ packages: '@pixi/utils': 5.3.12 dev: false - /@pixi/core/7.1.4: + /@pixi/core@7.1.4: resolution: {integrity: sha512-0QBVJK00qaqd5bf+Wv6pwTjGkwYuxjS/kbhyacuGM23XyoMr6Xqaa4jZiy7g5Ug3iW7HFALAPDnjyyzeeeTRsQ==} dependencies: '@pixi/constants': 7.1.4 @@ -479,7 +580,7 @@ packages: '@types/offscreencanvas': 2019.7.0 dev: false - /@pixi/display/5.3.12: + /@pixi/display@5.3.12: resolution: {integrity: sha512-/fsH/GAxc62rvwTnmrnV8oGCkk4LwJ9pt2Jv3UIorNsjXyL0V5fGw7uZnilF2eSdu6LgQKBMWPOtBF0TNML3lg==} dependencies: '@pixi/math': 5.3.12 @@ -487,144 +588,134 @@ packages: '@pixi/utils': 5.3.12 dev: false - /@pixi/display/7.1.4: + /@pixi/display@7.1.4: resolution: {integrity: sha512-vdRvydZZp0HXQuJF9A6GPoV+D4ya3775cB1TxLC5/7Wtgvjo/LuZjfpaYXU7Or4HZ5mu5LaUAmAQ71fiwrZOXg==} dev: false - /@pixi/eslint-config/1.0.1: - resolution: {integrity: sha512-VWJansY/GywVKN9yMgRQW/ZftCl5rElvSO/FdYzSwzhaePt2qbPR6+XWmNo2JiEDkf8ZXgBt0N22dQrb5R5BlQ==} + /@pixi/eslint-config@5.1.0(eslint@7.13.0)(typescript@5.3.3): + resolution: {integrity: sha512-J1/YOGs4tVOleZU1WyoglZQyWHHbZjOyrma2ZbtpLYwmRzAqYesda1RrbMlcWXcAsVqSyothwMuOJxHNBojT1Q==} peerDependencies: - typescript: ^3.8.3 + eslint: '>=8' + typescript: '>=5' dependencies: - '@typescript-eslint/eslint-plugin': 2.34.0_nkwwrnsqdhbb7bsmptgflh6cwa - '@typescript-eslint/parser': 2.34.0 + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@7.13.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@7.13.0)(typescript@5.3.3) + eslint: 7.13.0 + eslint-plugin-import: 2.31.0(eslint@7.13.0) + eslint-plugin-simple-import-sort: 10.0.0(eslint@7.13.0) + typescript: 5.3.3 transitivePeerDependencies: - - eslint - supports-color dev: false - /@pixi/eslint-config/1.0.1_eslint@7.7.0: - resolution: {integrity: sha512-VWJansY/GywVKN9yMgRQW/ZftCl5rElvSO/FdYzSwzhaePt2qbPR6+XWmNo2JiEDkf8ZXgBt0N22dQrb5R5BlQ==} + /@pixi/eslint-config@5.1.0(eslint@7.7.0)(typescript@5.3.3): + resolution: {integrity: sha512-J1/YOGs4tVOleZU1WyoglZQyWHHbZjOyrma2ZbtpLYwmRzAqYesda1RrbMlcWXcAsVqSyothwMuOJxHNBojT1Q==} peerDependencies: - typescript: ^3.8.3 + eslint: '>=8' + typescript: '>=5' dependencies: - '@typescript-eslint/eslint-plugin': 2.34.0_y27tdfd25teu7om2ob46p36x2q - '@typescript-eslint/parser': 2.34.0_eslint@7.7.0 + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@7.7.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@7.7.0)(typescript@5.3.3) + eslint: 7.7.0 + eslint-plugin-import: 2.31.0(eslint@7.7.0) + eslint-plugin-simple-import-sort: 10.0.0(eslint@7.7.0) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@pixi/eslint-config@5.1.0(typescript@5.3.3): + resolution: {integrity: sha512-J1/YOGs4tVOleZU1WyoglZQyWHHbZjOyrma2ZbtpLYwmRzAqYesda1RrbMlcWXcAsVqSyothwMuOJxHNBojT1Q==} + peerDependencies: + eslint: '>=8' + typescript: '>=5' + dependencies: + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@7.7.0)(typescript@5.3.3) + eslint-plugin-import: 2.31.0(eslint@7.7.0) + eslint-plugin-simple-import-sort: 10.0.0(eslint@7.7.0) + typescript: 5.3.3 transitivePeerDependencies: - - eslint - supports-color dev: false - /@pixi/events/7.1.4: + /@pixi/events@7.1.4: resolution: {integrity: sha512-VbmFeMMHOquFl+mTx2UbPSZwpUJMBW7IdjbywFFE01YmEsRcom8TgUzw+hJGBilkp50KSWKEvlOJmjxuY/XMUg==} dev: false - /@pixi/extensions/7.1.4: + /@pixi/extensions@7.1.4: resolution: {integrity: sha512-slyfaLfV+LwPeFpJsRuDThHFH6jJLe5I/v+y381YJtA8CanxdQZt2JeA0wCJDIj3/FrZ73IrTbpiW6sw4f2Fmg==} dev: false - /@pixi/extract/7.1.4: + /@pixi/extract@7.1.4: resolution: {integrity: sha512-r5CjOq4kM+yxd+8NMpgwxN6kXMAByNtwmM2dHyKUqKg+a+xfC5BqBa9wOpmO6cXJq7zzb1+zZxzryIsGa2H2GQ==} dev: false - /@pixi/filter-alpha/7.1.4: + /@pixi/filter-alpha@7.1.4: resolution: {integrity: sha512-H1cLuZGrXw5asm1ywgb+3M3xyC1IoHPUBCw+f9CZlEKSAivWlez6BWAvjD4OK9v248TzQQ24A8XluUcYFAex3w==} dev: false - /@pixi/filter-blur/7.1.4: + /@pixi/filter-blur@7.1.4: resolution: {integrity: sha512-VXyuDsMKXnCnbBo+YEPYBEjfFiuoSwmpOxD6Thb6sNc0pRYW4Nbd59oZqb3lOee6I1+np6fnA+U9SV5bIt0PEQ==} dev: false - /@pixi/filter-color-matrix/7.1.4: + /@pixi/filter-color-matrix@7.1.4: resolution: {integrity: sha512-TGZysSqqmOQaRPyTsOAiJi6RDOMes9wAy9eR7/P2eiaXyBS1IgK33qqfZTyTyOtZrEs5jyStl2Wx7WaOV5ilnQ==} dev: false - /@pixi/filter-displacement/7.1.4: + /@pixi/filter-displacement@7.1.4: resolution: {integrity: sha512-nr6UhJ5b0YbfsKrgHiD5ZAMcCxp3of6pq0w0duw5XtEGi16O4lAu6tC1FU06C2LLxW49R2aoAVKiX8h+otHmwA==} dev: false - /@pixi/filter-fxaa/7.1.4: + /@pixi/filter-fxaa@7.1.4: resolution: {integrity: sha512-3cnMf91/YKDBeULFy44usr+ld6eKL0MID8cx9BXVq0W0bRpJYHfycfmA5ycEh7xJ4MsKZ8VRBSx/2hTDstCxhA==} dev: false - /@pixi/filter-noise/7.1.4: + /@pixi/filter-noise@7.1.4: resolution: {integrity: sha512-IhN3sjctm8s650OGfQo2NuyjSZ912F2YXywrbDc8nt34fXk2O5Z/g4g2hORbfW4+YE7vrm+5xS8MU7/Xam0Tfg==} dev: false - /@pixi/graphics/7.1.4: + /@pixi/graphics@7.1.4: resolution: {integrity: sha512-1mLvS01o9HffUG09ngp4DZGCz6jFzOpctXKZFosd/2rfVPVQWy/P5csgu8XqRk8ZrxJE6tgUK/asb7RiG+B9cQ==} dev: false - /@pixi/math/5.3.12: + /@pixi/math@5.3.12: resolution: {integrity: sha512-VMccUVKSRlLFTGQu6Z450q/W6LVibaFWEo2eSZZfxz+hwjlYiqRPx4heG++4Y6tGskZK7W8l8h+2ixjmo65FCg==} dev: false - /@pixi/math/7.1.4: + /@pixi/math@7.1.4: resolution: {integrity: sha512-BK5aT5HfMw1WPoIl46hX0eWf3jBVUYExOj5JGmGDbpdA/RLyz2YBR3Ueegrl4H+iFY7d7He/hUq3a6vLpu0hMA==} dev: false - /@pixi/mesh-extras/7.1.4: + /@pixi/mesh-extras@7.1.4: resolution: {integrity: sha512-bqOfrgCItiMNFMEsRWXInRMsYrNAQM3GykC+lUTrTZgNJf3kX2PCyv2SDXSZCb29Fo/puGL6q55JDpn0LeLJdg==} dev: false - /@pixi/mesh/7.1.4: + /@pixi/mesh@7.1.4: resolution: {integrity: sha512-i7d6Pmx8ZanUSIBTxVasyxDfn4zB89u82GULSWvChLn/yQrA30F3Rd3+yC5g9ZgWG3uzYjC2jqBMB4VmvCnLUQ==} dev: false - /@pixi/mixin-cache-as-bitmap/7.1.4: + /@pixi/mixin-cache-as-bitmap@7.1.4: resolution: {integrity: sha512-ZTi4cp1IJxpMVdVDwvSBMK8NvxbXE4jHlxvwCXzdByZjOqeO+dr93Gob3/h91ttAfUwPIGKnpKTXqJ0slvvOwg==} dev: false - /@pixi/mixin-get-child-by-name/7.1.4: + /@pixi/mixin-get-child-by-name@7.1.4: resolution: {integrity: sha512-XroDBm/KqC8rPUBsD/5wlkibJcjBPSqag1rXmJr6SKPStHrGD3BPcVDJCC8sBbMlOYOp/vxPNzf2qF1JJhaL/w==} dev: false - /@pixi/mixin-get-global-position/7.1.4: + /@pixi/mixin-get-global-position@7.1.4: resolution: {integrity: sha512-Vp6PXghk4sTo/Ke6AB+YcAAadTPwnSEJgpVJH86i7BNOrojV69m0BSwPSdueOhh8rO+t45h2tDrLobm3JXAoqA==} dev: false - /@pixi/particle-container/7.1.4: + /@pixi/particle-container@7.1.4: resolution: {integrity: sha512-IAFhqkBgsyehc9J0tGc5mh4mSe/EJ1Wvl/rQaNEuj2mXDK8hKU/kXOKmgPwUImUeVTavDeBRrwpGum8F5KgQ9w==} dev: false - /@pixi/prepare/7.1.4: + /@pixi/prepare@7.1.4: resolution: {integrity: sha512-E886CuBC3I8RPb9Mmm7ko+MLRQAb47ec6xpdL1c3t5w4D/iiYHV9Z/mKBluI6ElhSeZkkq3EbEiMSCB1ZTYXag==} dev: false - /@pixi/react/7.1.0_ixhinzbrtvxaplzl5esyie5uue: - resolution: {integrity: sha512-HnZSEyqIoIsgnilJ8U4N1SqSfCxl7y+drwzej5Vwi4Q2cPb420uPhPma1OXskxRo7HAWBjgdKBHlcEk40ZAKGg==} - peerDependencies: - '@babel/runtime': ^7.14.8 - '@pixi/app': '>=6.0.0' - '@pixi/constants': '>=6.0.0' - '@pixi/core': '>=6.0.0' - '@pixi/display': '>=6.0.0' - '@pixi/extensions': '>=6.0.0' - '@pixi/graphics': '>=6.0.0' - '@pixi/math': '>=6.0.0' - '@pixi/mesh': '>=6.0.0' - '@pixi/mesh-extras': '>=6.0.0' - '@pixi/particle-container': '>=6.0.0' - '@pixi/sprite': '>=6.0.0' - '@pixi/sprite-animated': '>=6.0.0' - '@pixi/sprite-tiling': '>=6.0.0' - '@pixi/text': '>=6.0.0' - '@pixi/text-bitmap': '>=6.0.0' - '@pixi/ticker': '>=6.0.0' - react: '>=17.0.0' - react-dom: '>=17.0.0' - dependencies: - '@pixi/constants': 5.3.12 - '@pixi/graphics': 7.1.4 - '@pixi/sprite': 7.1.4 - '@pixi/ticker': 7.1.4 - lodash.isnil: 4.0.0 - lodash.times: 4.3.2 - performance-now: 2.1.0 - prop-types: 15.8.1 - dev: false - - /@pixi/react/7.1.0_obisx3exolhfyr6dq2wtfbn2uq: + /@pixi/react@7.1.0(@pixi/constants@5.3.12)(@pixi/display@7.1.4)(@pixi/graphics@7.1.4)(@pixi/math@7.1.4)(@pixi/ticker@7.1.4)(react@18.2.0): resolution: {integrity: sha512-HnZSEyqIoIsgnilJ8U4N1SqSfCxl7y+drwzej5Vwi4Q2cPb420uPhPma1OXskxRo7HAWBjgdKBHlcEk40ZAKGg==} peerDependencies: '@babel/runtime': ^7.14.8 @@ -651,7 +742,6 @@ packages: '@pixi/display': 7.1.4 '@pixi/graphics': 7.1.4 '@pixi/math': 7.1.4 - '@pixi/sprite': 7.1.4 '@pixi/ticker': 7.1.4 lodash.isnil: 4.0.0 lodash.times: 4.3.2 @@ -660,58 +750,58 @@ packages: react: 18.2.0 dev: false - /@pixi/runner/5.3.12: + /@pixi/runner@5.3.12: resolution: {integrity: sha512-I5mXx4BiP8Bx5CFIXy3XV3ABYFXbIWaY6FxWsNFkySn0KUhizN7SarPdhFGs//hJuC54EH2FsKKNa98Lfc2nCQ==} dev: false - /@pixi/runner/7.1.4: + /@pixi/runner@7.1.4: resolution: {integrity: sha512-HJLnA2ToQWWqDRRPqFGshDVeBzS0wzWkdD0e9M5SgzGodZdSLDqfPq8Z7ZeeJbP6tH4nYfvpemmGN5Gxvoaitg==} dev: false - /@pixi/settings/5.3.12: + /@pixi/settings@5.3.12: resolution: {integrity: sha512-tLAa8tpDGllgj88NMUQn2Obn9MFJfHNF/CKs8aBhfeZGU4yL4PZDtlI+tqaB1ITGl3xxyHmJK+qfmv5lJn+zyA==} dependencies: ismobilejs: 1.1.1 dev: false - /@pixi/settings/7.1.4: + /@pixi/settings@7.1.4: resolution: {integrity: sha512-T+ksa5t7X8Y/cUO6hgXwM+YyHJR5m+yv1Rhf/MKkniRsDDB2Qg3U7UNr6snOemAXIg6BTw/wwzIFz4ZguG9wqg==} dependencies: '@pixi/constants': 7.1.4 '@types/css-font-loading-module': 0.0.7 dev: false - /@pixi/sprite-animated/7.1.4: + /@pixi/sprite-animated@7.1.4: resolution: {integrity: sha512-FH5e4PDP2ULQhJ33RBOJltHLtBkL0uV4MUPUWG280aTiXG9M52dUK8EvH+svtzkaPHWiTaDuHPdpMmWVF0E4SA==} dev: false - /@pixi/sprite-tiling/7.1.4: + /@pixi/sprite-tiling@7.1.4: resolution: {integrity: sha512-MtCZYkAXr4BwAJac8DY1KFTD/oaPIB7GVnw30+oMQ0qE8hp2QcgcmzwRZ3Ln7ll8sOQzbg2H2WMZylqHG+yeOw==} dev: false - /@pixi/sprite/7.1.4: + /@pixi/sprite@7.1.4: resolution: {integrity: sha512-I6skGi8ZVgfjKGnpZBZg7pevpkNnqAJibXFsDZ31/lCAmDbK3fx+K4sRcYR5JxuQN6nW52WsuWKZF1cgt/lNuA==} dev: false - /@pixi/spritesheet/7.1.4: + /@pixi/spritesheet@7.1.4: resolution: {integrity: sha512-L9gBE8iuVpF6zOc27e2UH5JHGv+dLNudxMfJQdr7b+inBBK+YP5gwBkIEq87zRISqlcYJcrC+GbQmtQwLcKR4Q==} dev: false - /@pixi/text-bitmap/7.1.4: + /@pixi/text-bitmap@7.1.4: resolution: {integrity: sha512-bltYKvN1wQN6kHH8MOh5KDBQIZIWYjS8eGI9j9y6JdI0hu5lRmjKKFdsFaEn32MeW7xABfGICOFEJVp61IJjAQ==} dev: false - /@pixi/text/7.1.4: + /@pixi/text@7.1.4: resolution: {integrity: sha512-nMDLsv0JdIZZ1nKJWsRNqtEuP/zOSF5nTq60wRnz3WGt4AHajlvratxT+NikS7Um8UiZWDa6dB2NoCvk8rrJxw==} dev: false - /@pixi/ticker/5.3.12: + /@pixi/ticker@5.3.12: resolution: {integrity: sha512-YNYUj94XgogipYhPOjbdFBIsy7+U6KmolvK+Av1G88GDac5SDoALb1Nt6s23fd8HIz6b4YnabHOdXGz3zPir1Q==} dependencies: '@pixi/settings': 5.3.12 dev: false - /@pixi/ticker/7.1.4: + /@pixi/ticker@7.1.4: resolution: {integrity: sha512-u9pS3KAiQ14mN6PmiCEF+Ocmli/lAJLm/tzLcaBrBeBQqJ3jCZreoSbZ8znRY29YkdWMazPk+anUEGX1EsU5sg==} dependencies: '@pixi/extensions': 7.1.4 @@ -719,7 +809,7 @@ packages: '@pixi/utils': 7.1.4 dev: false - /@pixi/utils/5.3.12: + /@pixi/utils@5.3.12: resolution: {integrity: sha512-PU/L852YjVbTy/6fDKQtYji6Vqcwi5FZNIjK6JXKuDPF411QfJK3QBaEqJTrexzHlc9Odr0tYECjwtXkCUR02g==} dependencies: '@pixi/constants': 5.3.12 @@ -729,7 +819,7 @@ packages: url: 0.11.0 dev: false - /@pixi/utils/7.1.4: + /@pixi/utils@7.1.4: resolution: {integrity: sha512-n02nsAWcOp8+2yWFQ7CjWctVnGFs8jpD9A8H+RFcvdy2kdjApAU8+HsuJIrl/wfrwnTRxUzYatTRejz0jD9bKA==} dependencies: '@pixi/constants': 7.1.4 @@ -740,12 +830,12 @@ packages: url: 0.11.0 dev: false - /@pnpm/error/1.4.0: + /@pnpm/error@1.4.0: resolution: {integrity: sha512-vxkRrkneBPVmP23kyjnYwVOtipwlSl6UfL+h+Xa3TrABJTz5rYBXemlTsU5BzST8U4pD7YDkTb3SQu+MMuIDKA==} engines: {node: '>=10.16'} dev: false - /@pnpm/link-bins/5.3.25: + /@pnpm/link-bins@5.3.25: resolution: {integrity: sha512-9Xq8lLNRHFDqvYPXPgaiKkZ4rtdsm7izwM/cUsFDc5IMnG0QYIVBXQbgwhz2UvjUotbJrvfKLJaCfA3NGBnLDg==} engines: {node: '>=10.16'} dependencies: @@ -764,7 +854,7 @@ packages: ramda: 0.27.2 dev: false - /@pnpm/package-bins/4.1.0: + /@pnpm/package-bins@4.1.0: resolution: {integrity: sha512-57/ioGYLBbVRR80Ux9/q2i3y8Q+uQADc3c+Yse8jr/60YLOi3jcWz13e2Jy+ANYtZI258Qc5wk2X077rp0Ly/Q==} engines: {node: '>=10.16'} dependencies: @@ -773,14 +863,14 @@ packages: is-subdir: 1.2.0 dev: false - /@pnpm/read-modules-dir/2.0.3: + /@pnpm/read-modules-dir@2.0.3: resolution: {integrity: sha512-i9OgRvSlxrTS9a2oXokhDxvQzDtfqtsooJ9jaGoHkznue5aFCTSrNZFQ6M18o8hC03QWfnxaKi0BtOvNkKu2+A==} engines: {node: '>=10.13'} dependencies: mz: 2.7.0 dev: false - /@pnpm/read-package-json/4.0.0: + /@pnpm/read-package-json@4.0.0: resolution: {integrity: sha512-1cr2tEwe4YU6SI0Hmg+wnsr6yxBt2iJtqv6wrF84On8pS9hx4A2PLw3CIgbwxaG0b+ur5wzhNogwl4qD5FLFNg==} engines: {node: '>=10.16'} dependencies: @@ -790,7 +880,7 @@ packages: normalize-package-data: 3.0.3 dev: false - /@pnpm/read-project-manifest/1.1.7: + /@pnpm/read-project-manifest@1.1.7: resolution: {integrity: sha512-tj8ExXZeDcMmMUj7D292ETe/RiEirr1X1wpT6Zy85z2MrFYoG9jfCJpps40OdZBNZBhxbuKtGPWKVSgXD0yrVw==} engines: {node: '>=10.16'} dependencies: @@ -808,12 +898,12 @@ packages: strip-bom: 4.0.0 dev: false - /@pnpm/types/6.4.0: + /@pnpm/types@6.4.0: resolution: {integrity: sha512-nco4+4sZqNHn60Y4VE/fbtlShCBqipyUO+nKRPvDHqLrecMW9pzHWMVRxk4nrMRoeowj3q0rX3GYRBa8lsHTAg==} engines: {node: '>=10.16'} dev: false - /@pnpm/write-project-manifest/1.1.7: + /@pnpm/write-project-manifest@1.1.7: resolution: {integrity: sha512-OLkDZSqkA1mkoPNPvLFXyI6fb0enCuFji6Zfditi/CLAo9kmIhQFmEUDu4krSB8i908EljG8YwL5Xjxzm5wsWA==} engines: {node: '>=10.16'} dependencies: @@ -824,124 +914,138 @@ packages: write-yaml-file: 4.2.0 dev: false - /@rollup/plugin-commonjs/15.0.0: + /@rollup/plugin-commonjs@15.0.0(rollup@2.27.1): resolution: {integrity: sha512-8uAdikHqVyrT32w1zB9VhW6uGwGjhKgnDNP4pQJsjdnyF4FgCj6/bmv24c7v2CuKhq32CcyCwRzMPEElaKkn0w==} engines: {node: '>= 8.0.0'} peerDependencies: rollup: ^2.22.0 dependencies: - '@rollup/pluginutils': 3.1.0 + '@rollup/pluginutils': 3.1.0(rollup@2.27.1) commondir: 1.0.1 estree-walker: 2.0.2 glob: 7.2.3 is-reference: 1.2.1 magic-string: 0.25.9 resolve: 1.22.1 + rollup: 2.27.1 dev: false - /@rollup/plugin-commonjs/15.0.0_rollup@2.27.1: + /@rollup/plugin-commonjs@15.0.0(rollup@2.33.3): resolution: {integrity: sha512-8uAdikHqVyrT32w1zB9VhW6uGwGjhKgnDNP4pQJsjdnyF4FgCj6/bmv24c7v2CuKhq32CcyCwRzMPEElaKkn0w==} engines: {node: '>= 8.0.0'} peerDependencies: rollup: ^2.22.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.27.1 + '@rollup/pluginutils': 3.1.0(rollup@2.33.3) commondir: 1.0.1 estree-walker: 2.0.2 glob: 7.2.3 is-reference: 1.2.1 magic-string: 0.25.9 resolve: 1.22.1 - rollup: 2.27.1 + rollup: 2.33.3 dev: false - /@rollup/plugin-commonjs/15.0.0_rollup@2.33.3: + /@rollup/plugin-commonjs@15.0.0(rollup@2.79.1): resolution: {integrity: sha512-8uAdikHqVyrT32w1zB9VhW6uGwGjhKgnDNP4pQJsjdnyF4FgCj6/bmv24c7v2CuKhq32CcyCwRzMPEElaKkn0w==} engines: {node: '>= 8.0.0'} peerDependencies: rollup: ^2.22.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.33.3 + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) commondir: 1.0.1 estree-walker: 2.0.2 glob: 7.2.3 is-reference: 1.2.1 magic-string: 0.25.9 resolve: 1.22.1 - rollup: 2.33.3 + rollup: 2.79.1 dev: false - /@rollup/plugin-commonjs/15.0.0_rollup@2.79.1: - resolution: {integrity: sha512-8uAdikHqVyrT32w1zB9VhW6uGwGjhKgnDNP4pQJsjdnyF4FgCj6/bmv24c7v2CuKhq32CcyCwRzMPEElaKkn0w==} - engines: {node: '>= 8.0.0'} + /@rollup/plugin-commonjs@25.0.7(rollup@2.79.1): + resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} + engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^2.22.0 + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.79.1 + '@rollup/pluginutils': 5.1.0(rollup@2.79.1) commondir: 1.0.1 estree-walker: 2.0.2 - glob: 7.2.3 + glob: 8.1.0 is-reference: 1.2.1 - magic-string: 0.25.9 - resolve: 1.22.1 + magic-string: 0.30.10 rollup: 2.79.1 dev: false - /@rollup/plugin-sucrase/3.1.1: - resolution: {integrity: sha512-ifMWKtajaNvR2ybaJbBMkGZXxIUj0tovg5ARvlQHbAG7leJXe48D7TrZ7HIc8ROE/zs1Zh3UOXWmkNdjPGutZg==} - engines: {node: '>=8.0.0'} + /@rollup/plugin-node-resolve@15.2.3(rollup@2.79.1): + resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} + engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0 || ^2.0.0 + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true dependencies: - '@rollup/pluginutils': 3.1.0 - sucrase: 3.29.0 + '@rollup/pluginutils': 5.1.0(rollup@2.79.1) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-builtin-module: 3.2.1 + is-module: 1.0.0 + resolve: 1.22.1 + rollup: 2.79.1 dev: false - /@rollup/plugin-sucrase/3.1.1_rollup@2.27.1: + /@rollup/plugin-sucrase@3.1.1(rollup@2.27.1): resolution: {integrity: sha512-ifMWKtajaNvR2ybaJbBMkGZXxIUj0tovg5ARvlQHbAG7leJXe48D7TrZ7HIc8ROE/zs1Zh3UOXWmkNdjPGutZg==} engines: {node: '>=8.0.0'} peerDependencies: rollup: ^1.20.0 || ^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.27.1 + '@rollup/pluginutils': 3.1.0(rollup@2.27.1) rollup: 2.27.1 sucrase: 3.29.0 dev: false - /@rollup/plugin-sucrase/3.1.1_rollup@2.33.3: + /@rollup/plugin-sucrase@3.1.1(rollup@2.33.3): resolution: {integrity: sha512-ifMWKtajaNvR2ybaJbBMkGZXxIUj0tovg5ARvlQHbAG7leJXe48D7TrZ7HIc8ROE/zs1Zh3UOXWmkNdjPGutZg==} engines: {node: '>=8.0.0'} peerDependencies: rollup: ^1.20.0 || ^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.33.3 + '@rollup/pluginutils': 3.1.0(rollup@2.33.3) rollup: 2.33.3 sucrase: 3.29.0 dev: false - /@rollup/plugin-sucrase/3.1.1_rollup@2.79.1: + /@rollup/plugin-sucrase@3.1.1(rollup@2.79.1): resolution: {integrity: sha512-ifMWKtajaNvR2ybaJbBMkGZXxIUj0tovg5ARvlQHbAG7leJXe48D7TrZ7HIc8ROE/zs1Zh3UOXWmkNdjPGutZg==} engines: {node: '>=8.0.0'} peerDependencies: rollup: ^1.20.0 || ^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.79.1 + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) rollup: 2.79.1 sucrase: 3.29.0 dev: false - /@rollup/pluginutils/3.1.0: - resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} - engines: {node: '>= 8.0.0'} + /@rollup/plugin-sucrase@5.0.2(rollup@2.79.1): + resolution: {integrity: sha512-4MhIVH9Dy2Hwose1/x5QMs0XF7yn9jDd/yozHqzdIrMWIolgFpGnrnVhQkqTaK1RALY/fpyrEKmwH/04vr1THA==} + engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0 + rollup: ^2.53.1||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true dependencies: - '@types/estree': 0.0.39 - estree-walker: 1.0.1 - picomatch: 2.3.1 + '@rollup/pluginutils': 5.1.0(rollup@2.79.1) + rollup: 2.79.1 + sucrase: 3.29.0 dev: false - /@rollup/pluginutils/3.1.0_rollup@2.27.1: + /@rollup/pluginutils@3.1.0(rollup@2.27.1): resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} peerDependencies: @@ -953,7 +1057,7 @@ packages: rollup: 2.27.1 dev: false - /@rollup/pluginutils/3.1.0_rollup@2.33.3: + /@rollup/pluginutils@3.1.0(rollup@2.33.3): resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} peerDependencies: @@ -965,7 +1069,7 @@ packages: rollup: 2.33.3 dev: false - /@rollup/pluginutils/3.1.0_rollup@2.79.1: + /@rollup/pluginutils@3.1.0(rollup@2.79.1): resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} peerDependencies: @@ -977,11 +1081,30 @@ packages: rollup: 2.79.1 dev: false - /@rushstack/eslint-patch/1.0.9: + /@rollup/pluginutils@5.1.0(rollup@2.79.1): + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 2.79.1 + dev: false + + /@rtsao/scc@1.1.0: + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + dev: false + + /@rushstack/eslint-patch@1.0.9: resolution: {integrity: sha512-yk9Xj/3bUxyz3azMXW8qigLqXWEr2R0h9G7PVnnmjNQdlZLN+aESqCTnVN7ubtYUIQfW32/v8+AXsbpL1ryI1A==} dev: false - /@rushstack/node-core-library/3.19.7: + /@rushstack/node-core-library@3.19.7: resolution: {integrity: sha512-gKE/OXH5GAj8yJ1kEyRW68UekJernilZ3QTRgmQ0MUHBCQmtZ9Q6T5PQ1sVbcL4teH8BMdpZeFy1DKnHs8h3PA==} dependencies: '@types/node': 10.17.13 @@ -993,7 +1116,7 @@ packages: z-schema: 3.18.4 dev: false - /@rushstack/node-core-library/3.28.0: + /@rushstack/node-core-library@3.28.0: resolution: {integrity: sha512-9I9kSbZCwjx6y5F6HejTE529xDYIlGM8mu691XtyLl4OzX+1EZ4xxOXkWVVxirolk6SilDu5UqSeFuVgmb5dwA==} dependencies: '@types/node': 10.17.13 @@ -1006,58 +1129,76 @@ packages: z-schema: 3.18.4 dev: false - /@rushstack/node-core-library/3.39.0: - resolution: {integrity: sha512-kgu3+7/zOBkZU0+NdJb1rcHcpk3/oTjn5c8cg5nUTn+JDjEw58yG83SoeJEcRNNdl11dGX0lKG2PxPsjCokZOQ==} + /@rushstack/node-core-library@5.9.0: + resolution: {integrity: sha512-MMsshEWkTbXqxqFxD4gcIUWQOCeBChlGczdZbHfqmNZQFLHB3yWxDFSMHFUdu2/OB9NUk7Awn5qRL+rws4HQNg==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true dependencies: - '@types/node': 10.17.13 - colors: 1.2.5 + ajv: 8.13.0 + ajv-draft-04: 1.0.0(ajv@8.13.0) + ajv-formats: 3.0.1 fs-extra: 7.0.1 import-lazy: 4.0.0 jju: 1.4.0 - resolve: 1.17.0 - semver: 7.3.8 - timsort: 0.3.0 - z-schema: 3.18.4 + resolve: 1.22.1 + semver: 7.5.4 dev: false - /@rushstack/package-deps-hash/2.4.44: + /@rushstack/package-deps-hash@2.4.44: resolution: {integrity: sha512-EBz0+VsC7ti1IKS3iACTbrgm5f9+gqAsaZdWhovJ1Gjh9wIfI2zcht7il9WiZdYwjSCfC/56bexjjfw1KFjiKQ==} dependencies: '@rushstack/node-core-library': 3.28.0 dev: false - /@rushstack/rig-package/0.2.12: - resolution: {integrity: sha512-nbePcvF8hQwv0ql9aeQxcaMPK/h1OLAC00W7fWCRWIvD2MchZOE8jumIIr66HGrfG2X1sw++m/ZYI4D+BM5ovQ==} + /@rushstack/rig-package@0.5.3: + resolution: {integrity: sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==} dependencies: - resolve: 1.17.0 + resolve: 1.22.1 strip-json-comments: 3.1.1 dev: false - /@rushstack/stream-collator/3.2.43: + /@rushstack/stream-collator@3.2.43: resolution: {integrity: sha512-xeEFYaahkDQwo+Y8f+VMA8VgH6JYCDIEb0HMO/CxiDaPd1MkoDZf9Hnkyv/hwRhvvPQjwazzY4s0MegusGGvKQ==} dependencies: colors: 1.2.5 dev: false - /@rushstack/ts-command-line/4.3.14: - resolution: {integrity: sha512-YJZIyKvkm3f6ZdKSfMntHS9542Y2mmMWzaiPPoXxLFZntKxEIDE3WfUNlvOSo3yK4fNd09Tz3hfvTivQNHSiKQ==} + /@rushstack/terminal@0.14.2: + resolution: {integrity: sha512-2fC1wqu1VCExKC0/L+0noVcFQEXEnoBOtCIex1TOjBzEDWcw8KzJjjj7aTP6mLxepG0XIyn9OufeFb6SFsa+sg==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true dependencies: - '@types/argparse': 1.0.33 - argparse: 1.0.10 - colors: 1.2.5 + '@rushstack/node-core-library': 5.9.0 + supports-color: 8.1.1 dev: false - /@rushstack/ts-command-line/4.6.1: - resolution: {integrity: sha512-Vzi9gVZiv0iA+vLp48ddvyjR7XpkrBgF2X/BEEPtapNkQMkOA1Z01QTtsCWBK0xc1k59R3L6VaM+ilHpPaMpHA==} + /@rushstack/ts-command-line@4.22.8: + resolution: {integrity: sha512-XbFjOoV7qZHJnSuFUHv0pKaFA4ixyCuki+xMjsMfDwfvQjs5MYG0IK5COal3tRnG7KCDe2l/G+9LrzYE/RJhgg==} dependencies: + '@rushstack/terminal': 0.14.2 '@types/argparse': 1.0.38 argparse: 1.0.10 - colors: 1.2.5 string-argv: 0.3.1 + transitivePeerDependencies: + - '@types/node' dev: false - /@rushstack/ts-command-line/4.7.10: - resolution: {integrity: sha512-8t042g8eerypNOEcdpxwRA3uCmz0duMo21rG4Z2mdz7JxJeylDmzjlU3wDdef2t3P1Z61JCdZB6fbm1Mh0zi7w==} + /@rushstack/ts-command-line@4.3.14: + resolution: {integrity: sha512-YJZIyKvkm3f6ZdKSfMntHS9542Y2mmMWzaiPPoXxLFZntKxEIDE3WfUNlvOSo3yK4fNd09Tz3hfvTivQNHSiKQ==} + dependencies: + '@types/argparse': 1.0.33 + argparse: 1.0.10 + colors: 1.2.5 + dev: false + + /@rushstack/ts-command-line@4.6.1: + resolution: {integrity: sha512-Vzi9gVZiv0iA+vLp48ddvyjR7XpkrBgF2X/BEEPtapNkQMkOA1Z01QTtsCWBK0xc1k59R3L6VaM+ilHpPaMpHA==} dependencies: '@types/argparse': 1.0.38 argparse: 1.0.10 @@ -1065,31 +1206,31 @@ packages: string-argv: 0.3.1 dev: false - /@sindresorhus/is/0.14.0: + /@sindresorhus/is@0.14.0: resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} engines: {node: '>=6'} dev: false - /@sinonjs/commons/1.8.6: + /@sinonjs/commons@1.8.6: resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} dependencies: type-detect: 4.0.8 dev: false - /@sinonjs/fake-timers/6.0.1: + /@sinonjs/fake-timers@6.0.1: resolution: {integrity: sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==} dependencies: '@sinonjs/commons': 1.8.6 dev: false - /@sinonjs/formatio/5.0.1: + /@sinonjs/formatio@5.0.1: resolution: {integrity: sha512-KaiQ5pBf1MpS09MuA0kp6KBQt2JUOQycqVG1NZXvzeaXe5LGFqAKueIS0bw4w0P9r7KuBSVdUk5QjXsUdu2CxQ==} dependencies: '@sinonjs/commons': 1.8.6 '@sinonjs/samsam': 5.3.1 dev: false - /@sinonjs/samsam/5.3.1: + /@sinonjs/samsam@5.3.1: resolution: {integrity: sha512-1Hc0b1TtyfBu8ixF/tpfSHTVWKwCBLY4QJbkgnE7HcwyvT2xArDxb4K7dMgqRm3szI+LJbzmW/s4xxEhv6hwDg==} dependencies: '@sinonjs/commons': 1.8.6 @@ -1097,70 +1238,100 @@ packages: type-detect: 4.0.8 dev: false - /@sinonjs/text-encoding/0.7.2: + /@sinonjs/text-encoding@0.7.2: resolution: {integrity: sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==} dev: false - /@szmarczak/http-timer/1.1.2: + /@szmarczak/http-timer@1.1.2: resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} engines: {node: '>=6'} dependencies: defer-to-connect: 1.1.3 dev: false - /@types/argparse/1.0.33: + /@types/argparse@1.0.33: resolution: {integrity: sha512-VQgHxyPMTj3hIlq9SY1mctqx+Jj8kpQfoLvDlVSDNOyuYs8JYfkuY3OW/4+dO657yPmNhHpePRx0/Tje5ImNVQ==} dev: false - /@types/argparse/1.0.38: + /@types/argparse@1.0.38: resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} dev: false - /@types/css-font-loading-module/0.0.7: + /@types/css-font-loading-module@0.0.12: + resolution: {integrity: sha512-x2tZZYkSxXqWvTDgveSynfjq/T2HyiZHXb00j/+gy19yp70PHCizM48XFdjBCWH7eHBD0R5i/pw9yMBP/BH5uA==} + dev: false + + /@types/css-font-loading-module@0.0.7: resolution: {integrity: sha512-nl09VhutdjINdWyXxHWN/w9zlNCfr60JUqJbd24YXUuCwgeL0TpFSdElCwb6cxfB6ybE19Gjj4g0jsgkXxKv1Q==} dev: false - /@types/earcut/2.1.1: + /@types/earcut@2.1.1: resolution: {integrity: sha512-w8oigUCDjElRHRRrMvn/spybSMyX8MTkKA5Dv+tS1IE/TgmNZPqUYtvYBXGY8cieSE66gm+szeK+bnbxC2xHTQ==} dev: false - /@types/eslint-visitor-keys/1.0.0: + /@types/earcut@2.1.4: + resolution: {integrity: sha512-qp3m9PPz4gULB9MhjGID7wpo3gJ4bTGXm7ltNDsmOvsPduTeHp8wSW9YckBj3mljeOh4F0m2z/0JKAALRKbmLQ==} + dev: false + + /@types/eslint-scope@3.7.7: + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + dependencies: + '@types/eslint': 8.56.10 + '@types/estree': 1.0.5 + dev: false + + /@types/eslint-visitor-keys@1.0.0: resolution: {integrity: sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==} dev: false - /@types/estree/0.0.39: + /@types/eslint@8.56.10: + resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.11 + dev: false + + /@types/estree@0.0.39: resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} dev: false - /@types/estree/1.0.0: - resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: false - /@types/json-schema/7.0.11: + /@types/json-schema@7.0.11: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: false - /@types/node/10.17.13: + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: false + + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: false + + /@types/node@10.17.13: resolution: {integrity: sha512-pMCcqU2zT4TjqYFrWtYHKal7Sl30Ims6ulZ4UFXxI4xbtQqK/qqKwkDoBFCfooRqqmRu9vY3xaJRwxSh673aYg==} dev: false - /@types/node/12.20.55: + /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: false - /@types/node/18.14.6: + /@types/node@18.14.6: resolution: {integrity: sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==} dev: false - /@types/offscreencanvas/2019.7.0: + /@types/offscreencanvas@2019.7.0: resolution: {integrity: sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==} dev: false - /@types/prop-types/15.7.5: + /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} dev: false - /@types/react/16.14.35: + /@types/react@16.14.35: resolution: {integrity: sha512-NUEiwmSS1XXtmBcsm1NyRRPYjoZF2YTE89/5QiLt5mlGffYK9FQqOKuOLuXNrjPQV04oQgaZG+Yq02ZfHoFyyg==} dependencies: '@types/prop-types': 15.7.5 @@ -1168,58 +1339,49 @@ packages: csstype: 3.1.1 dev: false - /@types/resolve/0.0.8: + /@types/resolve@0.0.8: resolution: {integrity: sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==} dependencies: '@types/node': 18.14.6 dev: false - /@types/scheduler/0.16.2: + /@types/resolve@1.20.2: + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + dev: false + + /@types/scheduler@0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} dev: false - /@typescript-eslint/eslint-plugin/2.34.0_nkwwrnsqdhbb7bsmptgflh6cwa: - resolution: {integrity: sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - peerDependencies: - '@typescript-eslint/parser': ^2.0.0 - eslint: ^5.0.0 || ^6.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/experimental-utils': 2.34.0 - '@typescript-eslint/parser': 2.34.0 - functional-red-black-tree: 1.0.1 - regexpp: 3.2.0 - tsutils: 3.21.0 - transitivePeerDependencies: - - supports-color + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} dev: false - /@typescript-eslint/eslint-plugin/2.34.0_y27tdfd25teu7om2ob46p36x2q: - resolution: {integrity: sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + /@typescript-eslint/eslint-plugin@3.9.1(@typescript-eslint/parser@3.9.1)(eslint@7.13.0)(typescript@5.3.3): + resolution: {integrity: sha512-XIr+Mfv7i4paEdBf0JFdIl9/tVxyj+rlilWIfZ97Be0lZ7hPvUbS5iHt9Glc8kRI53dsr0PcAEudbf8rO2wGgg==} + engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: - '@typescript-eslint/parser': ^2.0.0 - eslint: ^5.0.0 || ^6.0.0 + '@typescript-eslint/parser': ^3.0.0 + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/experimental-utils': 2.34.0_eslint@7.7.0 - '@typescript-eslint/parser': 2.34.0_eslint@7.7.0 - eslint: 7.7.0 + '@typescript-eslint/experimental-utils': 3.9.1(eslint@7.13.0)(typescript@5.3.3) + '@typescript-eslint/parser': 3.9.1(eslint@7.13.0)(typescript@5.3.3) + debug: 4.3.4 + eslint: 7.13.0 functional-red-black-tree: 1.0.1 regexpp: 3.2.0 - tsutils: 3.21.0 + semver: 7.3.8 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/eslint-plugin/3.9.1_f5aguhtmld35l63cxb6elsyj54: + /@typescript-eslint/eslint-plugin@3.9.1(@typescript-eslint/parser@3.9.1)(eslint@7.7.0)(typescript@5.3.3): resolution: {integrity: sha512-XIr+Mfv7i4paEdBf0JFdIl9/tVxyj+rlilWIfZ97Be0lZ7hPvUbS5iHt9Glc8kRI53dsr0PcAEudbf8rO2wGgg==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -1230,72 +1392,106 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/experimental-utils': 3.9.1_eslint@7.7.0 - '@typescript-eslint/parser': 3.9.1_eslint@7.7.0 + '@typescript-eslint/experimental-utils': 3.9.1(eslint@7.7.0)(typescript@5.3.3) + '@typescript-eslint/parser': 3.9.1(eslint@7.7.0)(typescript@5.3.3) debug: 4.3.4 eslint: 7.7.0 functional-red-black-tree: 1.0.1 regexpp: 3.2.0 semver: 7.3.8 - tsutils: 3.21.0 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/eslint-plugin/3.9.1_i4ziokri6n3rwd6nkfbszx5k7y: - resolution: {integrity: sha512-XIr+Mfv7i4paEdBf0JFdIl9/tVxyj+rlilWIfZ97Be0lZ7hPvUbS5iHt9Glc8kRI53dsr0PcAEudbf8rO2wGgg==} - engines: {node: ^10.12.0 || >=12.0.0} + /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@7.13.0)(typescript@5.3.3): + resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - '@typescript-eslint/parser': ^3.0.0 - eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/experimental-utils': 3.9.1 - '@typescript-eslint/parser': 3.9.1 + '@eslint-community/regexpp': 4.11.1 + '@typescript-eslint/parser': 6.21.0(eslint@7.13.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/type-utils': 6.21.0(eslint@7.13.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.21.0(eslint@7.13.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 - functional-red-black-tree: 1.0.1 - regexpp: 3.2.0 - semver: 7.3.8 - tsutils: 3.21.0 + eslint: 7.13.0 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.3.0(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/experimental-utils/2.34.0: - resolution: {integrity: sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@7.7.0)(typescript@5.3.3): + resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: '*' + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@types/json-schema': 7.0.11 - '@typescript-eslint/typescript-estree': 2.34.0 - eslint-scope: 5.1.1 - eslint-utils: 2.1.0 + '@eslint-community/regexpp': 4.11.1 + '@typescript-eslint/parser': 6.21.0(eslint@7.7.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/type-utils': 6.21.0(eslint@7.7.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.21.0(eslint@7.7.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.4 + eslint: 7.7.0 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.3.0(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color - - typescript dev: false - /@typescript-eslint/experimental-utils/2.34.0_eslint@7.7.0: - resolution: {integrity: sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(typescript@5.3.3): + resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: '*' + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@types/json-schema': 7.0.11 - '@typescript-eslint/typescript-estree': 2.34.0 - eslint: 7.7.0 - eslint-scope: 5.1.1 - eslint-utils: 2.1.0 + '@eslint-community/regexpp': 4.11.1 + '@typescript-eslint/parser': 6.21.0(eslint@7.7.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/type-utils': 6.21.0(typescript@5.3.3) + '@typescript-eslint/utils': 6.21.0(eslint@7.7.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.4 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.3.0(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color - - typescript dev: false - /@typescript-eslint/experimental-utils/3.9.1: + /@typescript-eslint/experimental-utils@3.9.1(eslint@7.13.0)(typescript@5.3.3): resolution: {integrity: sha512-lkiZ8iBBaYoyEKhCkkw4SAeatXyBq9Ece5bZXdLe1LWBUwTszGbmbiqmQbwWA8cSYDnjWXp9eDbXpf9Sn0hLAg==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -1303,7 +1499,8 @@ packages: dependencies: '@types/json-schema': 7.0.11 '@typescript-eslint/types': 3.9.1 - '@typescript-eslint/typescript-estree': 3.9.1 + '@typescript-eslint/typescript-estree': 3.9.1(typescript@5.3.3) + eslint: 7.13.0 eslint-scope: 5.1.1 eslint-utils: 2.1.0 transitivePeerDependencies: @@ -1311,7 +1508,7 @@ packages: - typescript dev: false - /@typescript-eslint/experimental-utils/3.9.1_eslint@7.7.0: + /@typescript-eslint/experimental-utils@3.9.1(eslint@7.7.0)(typescript@5.3.3): resolution: {integrity: sha512-lkiZ8iBBaYoyEKhCkkw4SAeatXyBq9Ece5bZXdLe1LWBUwTszGbmbiqmQbwWA8cSYDnjWXp9eDbXpf9Sn0hLAg==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -1319,7 +1516,7 @@ packages: dependencies: '@types/json-schema': 7.0.11 '@typescript-eslint/types': 3.9.1 - '@typescript-eslint/typescript-estree': 3.9.1 + '@typescript-eslint/typescript-estree': 3.9.1(typescript@5.3.3) eslint: 7.7.0 eslint-scope: 5.1.1 eslint-utils: 2.1.0 @@ -1328,108 +1525,168 @@ packages: - typescript dev: false - /@typescript-eslint/parser/2.34.0: - resolution: {integrity: sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + /@typescript-eslint/parser@3.9.1(eslint@7.13.0)(typescript@5.3.3): + resolution: {integrity: sha512-y5QvPFUn4Vl4qM40lI+pNWhTcOWtpZAJ8pOEQ21fTTW4xTJkRplMjMRje7LYTXqVKKX9GJhcyweMz2+W1J5bMg==} + engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: - eslint: ^5.0.0 || ^6.0.0 + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: '@types/eslint-visitor-keys': 1.0.0 - '@typescript-eslint/experimental-utils': 2.34.0 - '@typescript-eslint/typescript-estree': 2.34.0 + '@typescript-eslint/experimental-utils': 3.9.1(eslint@7.13.0)(typescript@5.3.3) + '@typescript-eslint/types': 3.9.1 + '@typescript-eslint/typescript-estree': 3.9.1(typescript@5.3.3) + eslint: 7.13.0 eslint-visitor-keys: 1.3.0 + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/parser/2.34.0_eslint@7.7.0: - resolution: {integrity: sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + /@typescript-eslint/parser@3.9.1(eslint@7.7.0)(typescript@5.3.3): + resolution: {integrity: sha512-y5QvPFUn4Vl4qM40lI+pNWhTcOWtpZAJ8pOEQ21fTTW4xTJkRplMjMRje7LYTXqVKKX9GJhcyweMz2+W1J5bMg==} + engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: - eslint: ^5.0.0 || ^6.0.0 + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: '@types/eslint-visitor-keys': 1.0.0 - '@typescript-eslint/experimental-utils': 2.34.0_eslint@7.7.0 - '@typescript-eslint/typescript-estree': 2.34.0 + '@typescript-eslint/experimental-utils': 3.9.1(eslint@7.7.0)(typescript@5.3.3) + '@typescript-eslint/types': 3.9.1 + '@typescript-eslint/typescript-estree': 3.9.1(typescript@5.3.3) eslint: 7.7.0 eslint-visitor-keys: 1.3.0 + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/parser/3.9.1: - resolution: {integrity: sha512-y5QvPFUn4Vl4qM40lI+pNWhTcOWtpZAJ8pOEQ21fTTW4xTJkRplMjMRje7LYTXqVKKX9GJhcyweMz2+W1J5bMg==} - engines: {node: ^10.12.0 || >=12.0.0} + /@typescript-eslint/parser@6.21.0(eslint@7.13.0)(typescript@5.3.3): + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@types/eslint-visitor-keys': 1.0.0 - '@typescript-eslint/experimental-utils': 3.9.1 - '@typescript-eslint/types': 3.9.1 - '@typescript-eslint/typescript-estree': 3.9.1 - eslint-visitor-keys: 1.3.0 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.4 + eslint: 7.13.0 + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/parser/3.9.1_eslint@7.7.0: - resolution: {integrity: sha512-y5QvPFUn4Vl4qM40lI+pNWhTcOWtpZAJ8pOEQ21fTTW4xTJkRplMjMRje7LYTXqVKKX9GJhcyweMz2+W1J5bMg==} - engines: {node: ^10.12.0 || >=12.0.0} + /@typescript-eslint/parser@6.21.0(eslint@7.7.0)(typescript@5.3.3): + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@types/eslint-visitor-keys': 1.0.0 - '@typescript-eslint/experimental-utils': 3.9.1_eslint@7.7.0 - '@typescript-eslint/types': 3.9.1 - '@typescript-eslint/typescript-estree': 3.9.1 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.4 eslint: 7.7.0 - eslint-visitor-keys: 1.3.0 + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/types/3.9.1: - resolution: {integrity: sha512-15JcTlNQE1BsYy5NBhctnEhEoctjXOjOK+Q+rk8ugC+WXU9rAcS2BYhoh6X4rOaXJEpIYDl+p7ix+A5U0BqPTw==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + /@typescript-eslint/scope-manager@6.21.0: + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 dev: false - /@typescript-eslint/typescript-estree/2.34.0: - resolution: {integrity: sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + /@typescript-eslint/type-utils@6.21.0(eslint@7.13.0)(typescript@5.3.3): + resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/utils': 6.21.0(eslint@7.13.0)(typescript@5.3.3) debug: 4.3.4 - eslint-visitor-keys: 1.3.0 - glob: 7.2.3 - is-glob: 4.0.3 - lodash: 4.17.21 - semver: 7.3.8 - tsutils: 3.21.0 + eslint: 7.13.0 + ts-api-utils: 1.3.0(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/typescript-estree/3.9.1: + /@typescript-eslint/type-utils@6.21.0(eslint@7.7.0)(typescript@5.3.3): + resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/utils': 6.21.0(eslint@7.7.0)(typescript@5.3.3) + debug: 4.3.4 + eslint: 7.7.0 + ts-api-utils: 1.3.0(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/type-utils@6.21.0(typescript@5.3.3): + resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/utils': 6.21.0(eslint@7.7.0)(typescript@5.3.3) + debug: 4.3.4 + ts-api-utils: 1.3.0(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/types@3.9.1: + resolution: {integrity: sha512-15JcTlNQE1BsYy5NBhctnEhEoctjXOjOK+Q+rk8ugC+WXU9rAcS2BYhoh6X4rOaXJEpIYDl+p7ix+A5U0BqPTw==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dev: false + + /@typescript-eslint/types@6.21.0: + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: false + + /@typescript-eslint/typescript-estree@3.9.1(typescript@5.3.3): resolution: {integrity: sha512-IqM0gfGxOmIKPhiHW/iyAEXwSVqMmR2wJ9uXHNdFpqVvPaQ3dWg302vW127sBpAiqM9SfHhyS40NKLsoMpN2KA==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -1445,23 +1702,252 @@ packages: is-glob: 4.0.3 lodash: 4.17.21 semver: 7.3.8 - tsutils: 3.21.0 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/visitor-keys/3.9.1: + /@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3): + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.5.4 + ts-api-utils: 1.3.0(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/utils@6.21.0(eslint@7.13.0)(typescript@5.3.3): + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@7.13.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + eslint: 7.13.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + + /@typescript-eslint/utils@6.21.0(eslint@7.7.0)(typescript@5.3.3): + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@7.7.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + eslint: 7.7.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + + /@typescript-eslint/visitor-keys@3.9.1: resolution: {integrity: sha512-zxdtUjeoSh+prCpogswMwVUJfEFmCOjdzK9rpNjNBfm6EyPt99x3RrJoBOGZO23FCt0WPKUCOL5mb/9D5LjdwQ==} engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} dependencies: eslint-visitor-keys: 1.3.0 dev: false - /@yarnpkg/lockfile/1.0.2: + /@typescript-eslint/visitor-keys@6.21.0: + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.21.0 + eslint-visitor-keys: 3.4.3 + dev: false + + /@webassemblyjs/ast@1.12.1: + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + dev: false + + /@webassemblyjs/floating-point-hex-parser@1.11.6: + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + dev: false + + /@webassemblyjs/helper-api-error@1.11.6: + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + dev: false + + /@webassemblyjs/helper-buffer@1.12.1: + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} + dev: false + + /@webassemblyjs/helper-numbers@1.11.6: + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + dev: false + + /@webassemblyjs/helper-wasm-bytecode@1.11.6: + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + dev: false + + /@webassemblyjs/helper-wasm-section@1.12.1: + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.12.1 + dev: false + + /@webassemblyjs/ieee754@1.11.6: + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + dependencies: + '@xtuc/ieee754': 1.2.0 + dev: false + + /@webassemblyjs/leb128@1.11.6: + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + dependencies: + '@xtuc/long': 4.2.2 + dev: false + + /@webassemblyjs/utf8@1.11.6: + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + dev: false + + /@webassemblyjs/wasm-edit@1.12.1: + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-opt': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/wast-printer': 1.12.1 + dev: false + + /@webassemblyjs/wasm-gen@1.12.1: + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: false + + /@webassemblyjs/wasm-opt@1.12.1: + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + dev: false + + /@webassemblyjs/wasm-parser@1.12.1: + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: false + + /@webassemblyjs/wast-printer@1.12.1: + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@xtuc/long': 4.2.2 + dev: false + + /@webgpu/types@0.1.40: + resolution: {integrity: sha512-/BBkHLS6/eQjyWhY2H7Dx5DHcVrS2ICj9owvSRdgtQT6KcafLZA86tPze0xAOsd4FbsYKCUBUQyNi87q7gV7kw==} + dev: false + + /@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.91.0): + resolution: {integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==} + engines: {node: '>=14.15.0'} + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + dependencies: + webpack: 5.91.0(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.91.0) + dev: false + + /@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.91.0): + resolution: {integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==} + engines: {node: '>=14.15.0'} + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + dependencies: + webpack: 5.91.0(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.91.0) + dev: false + + /@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.91.0): + resolution: {integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==} + engines: {node: '>=14.15.0'} + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + webpack-dev-server: '*' + peerDependenciesMeta: + webpack-dev-server: + optional: true + dependencies: + webpack: 5.91.0(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.91.0) + dev: false + + /@xmldom/xmldom@0.8.10: + resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} + engines: {node: '>=10.0.0'} + dev: false + + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: false + + /@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: false + + /@yarnpkg/lockfile@1.0.2: resolution: {integrity: sha512-MqJ00WXw89ga0rK6GZkdmmgv3bAsxpJixyTthjcix73O44pBqotyU2BejBkLuIsaOBI6SEu77vAnSyLe5iIHkw==} dev: false - /@zkochan/cmd-shim/5.4.1: + /@zkochan/cmd-shim@5.4.1: resolution: {integrity: sha512-odWb1qUzt0dIOEUPyWBEpFDYQPRjEMr/dbHHAfgBkVkYR9aO7Zo+I7oYWrXIxl+cKlC7+49ftPm8uJxL1MA9kw==} engines: {node: '>=10.13'} dependencies: @@ -1470,7 +1956,15 @@ packages: is-windows: 1.0.2 dev: false - /acorn-jsx/5.3.2_acorn@7.4.1: + /acorn-import-assertions@1.9.0(acorn@8.8.2): + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.8.2 + dev: false + + /acorn-jsx@5.3.2(acorn@7.4.1): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1478,26 +1972,51 @@ packages: acorn: 7.4.1 dev: false - /acorn/7.4.1: + /acorn@7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} hasBin: true dev: false - /acorn/8.8.2: + /acorn@8.8.2: resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} engines: {node: '>=0.4.0'} hasBin: true dev: false - /agent-base/4.3.0: + /agent-base@4.3.0: resolution: {integrity: sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==} engines: {node: '>= 4.0.0'} dependencies: es6-promisify: 5.0.0 dev: false - /ajv/6.12.6: + /ajv-draft-04@1.0.0(ajv@8.13.0): + resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.13.0 + dev: false + + /ajv-formats@3.0.1: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + dependencies: + ajv: 8.13.0 + dev: false + + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: false + + /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 @@ -1506,7 +2025,7 @@ packages: uri-js: 4.4.1 dev: false - /ajv/8.12.0: + /ajv@8.12.0: resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} dependencies: fast-deep-equal: 3.1.3 @@ -1515,65 +2034,131 @@ packages: uri-js: 4.4.1 dev: false - /ansi-colors/3.2.3: + /ajv@8.13.0: + resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: false + + /ansi-colors@3.2.3: resolution: {integrity: sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==} engines: {node: '>=6'} dev: false - /ansi-colors/4.1.3: + /ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} dev: false - /ansi-escapes/3.2.0: + /ansi-escapes@3.2.0: resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==} engines: {node: '>=4'} dev: false - /ansi-regex/3.0.1: + /ansi-regex@3.0.1: resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} engines: {node: '>=4'} dev: false - /ansi-regex/4.1.1: + /ansi-regex@4.1.1: resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} engines: {node: '>=6'} dev: false - /ansi-regex/5.0.1: + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} dev: false - /ansi-styles/3.2.1: + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 dev: false - /ansi-styles/4.3.0: + /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 dev: false - /any-promise/1.3.0: + /any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} dev: false - /argparse/1.0.10: + /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 dev: false - /argparse/2.0.1: + /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: false - /array.prototype.reduce/1.0.5: + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + is-array-buffer: 3.0.4 + dev: false + + /array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + is-string: 1.0.7 + dev: false + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: false + + /array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + dev: false + + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + dev: false + + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + dev: false + + /array.prototype.reduce@1.0.5: resolution: {integrity: sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==} engines: {node: '>= 0.4'} dependencies: @@ -1584,92 +2169,131 @@ packages: is-string: 1.0.7 dev: false - /asap/2.0.6: + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 + dev: false + + /asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} dev: false - /assertion-error/1.1.0: + /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: false - /astral-regex/1.0.0: + /astral-regex@1.0.0: resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} engines: {node: '>=4'} dev: false - /astral-regex/2.0.0: + /astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} dev: false - /atob/2.1.2: + /atob@2.1.2: resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} engines: {node: '>= 4.5.0'} hasBin: true dev: false - /available-typed-arrays/1.0.5: + /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} dev: false - /balanced-match/1.0.2: + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + dependencies: + possible-typed-array-names: 1.0.0 + dev: false + + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: false - /better-path-resolve/1.0.0: + /better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} dependencies: is-windows: 1.0.2 dev: false - /boolean/3.2.0: + /boolean@3.2.0: resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} + requiresBuild: true dev: false optional: true - /brace-expansion/1.1.11: + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 dev: false - /braces/3.0.2: + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: false + + /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 dev: false - /browser-stdout/1.3.1: + /browser-stdout@1.3.1: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} dev: false - /buffer-crc32/0.2.13: + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001614 + electron-to-chromium: 1.4.750 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.23.0) + dev: false + + /buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} dev: false - /buffer-from/1.1.2: + /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: false - /builtin-modules/3.1.0: + /builtin-modules@3.1.0: resolution: {integrity: sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==} engines: {node: '>=6'} dev: false - /builtin-modules/3.3.0: + /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} dev: false - /builtins/1.0.3: + /builtins@1.0.3: resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} dev: false - /cacheable-request/6.1.0: + /cacheable-request@6.1.0: resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} engines: {node: '>=8'} dependencies: @@ -1682,24 +2306,39 @@ packages: responselike: 1.0.2 dev: false - /call-bind/1.0.2: + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 get-intrinsic: 1.2.0 dev: false - /callsites/3.1.0: + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + dev: false + + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} dev: false - /camelcase/5.3.1: + /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} dev: false - /chai/4.2.0: + /caniuse-lite@1.0.30001614: + resolution: {integrity: sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==} + dev: false + + /chai@4.2.0: resolution: {integrity: sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==} engines: {node: '>=4'} dependencies: @@ -1711,7 +2350,7 @@ packages: type-detect: 4.0.8 dev: false - /chai/4.3.7: + /chai@4.3.7: resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} engines: {node: '>=4'} dependencies: @@ -1724,7 +2363,7 @@ packages: type-detect: 4.0.8 dev: false - /chalk/2.4.2: + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} dependencies: @@ -1733,7 +2372,7 @@ packages: supports-color: 5.5.0 dev: false - /chalk/4.1.2: + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} dependencies: @@ -1741,37 +2380,42 @@ packages: supports-color: 7.2.0 dev: false - /chardet/0.7.0: + /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: false - /check-error/1.0.2: + /check-error@1.0.2: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} dev: false - /chownr/1.1.4: + /chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} dev: false - /cli-cursor/2.1.0: + /chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + dev: false + + /cli-cursor@2.1.0: resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} engines: {node: '>=4'} dependencies: restore-cursor: 2.0.0 dev: false - /cli-table/0.3.11: + /cli-table@0.3.11: resolution: {integrity: sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==} engines: {node: '>= 0.2.0'} dependencies: colors: 1.0.3 dev: false - /cli-width/2.2.1: + /cli-width@2.2.1: resolution: {integrity: sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==} dev: false - /cliui/5.0.0: + /cliui@5.0.0: resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} dependencies: string-width: 3.1.0 @@ -1779,71 +2423,89 @@ packages: wrap-ansi: 5.1.0 dev: false - /clone-response/1.0.3: + /clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + dev: false + + /clone-response@1.0.3: resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} dependencies: mimic-response: 1.0.1 dev: false - /cmd-extension/1.0.2: + /cmd-extension@1.0.2: resolution: {integrity: sha512-iWDjmP8kvsMdBmLTHxFaqXikO8EdFRDfim7k6vUHglY/2xJ5jLrPsnQGijdfp4U+sr/BeecG0wKm02dSIAeQ1g==} engines: {node: '>=10'} dev: false - /color-convert/1.9.3: + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 dev: false - /color-convert/2.0.1: + /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 dev: false - /color-name/1.1.3: + /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} dev: false - /color-name/1.1.4: + /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: false - /colors/1.0.3: + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: false + + /colors@1.0.3: resolution: {integrity: sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==} engines: {node: '>=0.1.90'} dev: false - /colors/1.2.5: + /colors@1.2.5: resolution: {integrity: sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==} engines: {node: '>=0.1.90'} dev: false - /commander/2.20.3: + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + dev: false + + /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: false - /commander/4.1.1: + /commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} dev: false - /commander/7.2.0: + /commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} dev: false - /commondir/1.0.1: + /commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} dev: false - /concat-map/0.0.1: + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: false - /concat-stream/1.6.2: + /concat-stream@1.6.2: resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} engines: {'0': node >= 0.8} dependencies: @@ -1853,19 +2515,20 @@ packages: typedarray: 0.0.6 dev: false - /config-chain/1.1.13: + /config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + requiresBuild: true dependencies: ini: 1.3.8 proto-list: 1.2.4 dev: false optional: true - /core-util-is/1.0.3: + /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: false - /cross-spawn/7.0.3: + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} dependencies: @@ -1874,34 +2537,61 @@ packages: which: 2.0.2 dev: false - /csstype/3.1.1: + /csstype@3.1.1: resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} dev: false - /d-path-parser/1.0.0: + /d-path-parser@1.0.0: resolution: {integrity: sha512-CY3xMMjZ0LfS0YFTLcrcZxb79yaJzdnDu7KRTZxsbTjCH11PzQSxgTGRxsFb4F4o4dU069B1InS5n3TUDP1XUg==} dev: false - /debug/2.6.9: + /data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: false + + /data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: false + + /data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: false + + /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} dependencies: ms: 2.0.0 dev: false - /debug/3.2.6: + /debug@3.2.6: resolution: {integrity: sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==} deprecated: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797) dependencies: ms: 2.1.1 dev: false - /debug/3.2.7: + /debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} dependencies: ms: 2.1.3 dev: false - /debug/4.3.4: + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -1913,50 +2603,64 @@ packages: ms: 2.1.2 dev: false - /debuglog/1.0.1: + /debuglog@1.0.1: resolution: {integrity: sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==} dev: false - /decamelize/1.2.0: + /decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} dev: false - /decode-uri-component/0.2.2: + /decode-uri-component@0.2.2: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} engines: {node: '>=0.10'} dev: false - /decompress-response/3.3.0: + /decompress-response@3.3.0: resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} engines: {node: '>=4'} dependencies: mimic-response: 1.0.1 dev: false - /deep-eql/3.0.1: + /deep-eql@3.0.1: resolution: {integrity: sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==} engines: {node: '>=0.12'} dependencies: type-detect: 4.0.8 dev: false - /deep-eql/4.1.3: + /deep-eql@4.1.3: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} engines: {node: '>=6'} dependencies: type-detect: 4.0.8 dev: false - /deep-is/0.1.4: + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: false - /defer-to-connect/1.1.3: + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: false + + /defer-to-connect@1.1.3: resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} dev: false - /define-properties/1.2.0: + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + dev: false + + /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} engines: {node: '>= 0.4'} dependencies: @@ -1964,49 +2668,77 @@ packages: object-keys: 1.1.1 dev: false - /detect-indent/6.1.0: + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + dev: false + + /detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} dev: false - /detect-node/2.1.0: + /detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + requiresBuild: true dev: false optional: true - /dezalgo/1.0.4: + /dezalgo@1.0.4: resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} dependencies: asap: 2.0.6 wrappy: 1.0.2 dev: false - /diff/3.5.0: + /diff@3.5.0: resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} engines: {node: '>=0.3.1'} dev: false - /diff/4.0.2: + /diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} dev: false - /doctrine/3.0.0: + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: false + + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: false + + /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 dev: false - /duplexer3/0.1.5: + /duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} dev: false - /earcut/2.2.4: + /earcut@2.2.4: resolution: {integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==} dev: false - /electron/11.3.0: + /electron-to-chromium@1.4.750: + resolution: {integrity: sha512-9ItEpeu15hW5m8jKdriL+BQrgwDTXEL9pn4SkillWFu73ZNNNQ2BKKLS+ZHv2vC9UkNhosAeyfxOf/5OSeTCPA==} + dev: false + + /electron@11.3.0: resolution: {integrity: sha512-MhdS0gok3wZBTscLBbYrOhLaQybCSAfkupazbK1dMP5c+84eVMxJE/QGohiWQkzs0tVFIJsAHyN19YKPbelNrQ==} engines: {node: '>= 8.6'} hasBin: true @@ -2019,45 +2751,60 @@ packages: - supports-color dev: false - /emoji-regex/7.0.3: + /emoji-regex@7.0.3: resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} dev: false - /emoji-regex/8.0.0: + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: false - /encodeurl/1.0.2: + /encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} + requiresBuild: true dev: false optional: true - /end-of-stream/1.4.4: + /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 dev: false - /enquirer/2.3.6: + /enhanced-resolve@5.16.0: + resolution: {integrity: sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: false + + /enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.3 dev: false - /env-paths/2.2.1: + /env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} dev: false - /error-ex/1.3.2: + /envinfo@7.12.0: + resolution: {integrity: sha512-Iw9rQJBGpJRd3rwXm9ft/JiGoAZmLxxJZELYDQoPRZ4USVhkKtIcNBPw6U+/K2mBpaqM25JSV6Yl4Az9vO2wJg==} + engines: {node: '>=4'} + hasBin: true + dev: false + + /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 dev: false - /es-abstract/1.21.1: + /es-abstract@1.21.1: resolution: {integrity: sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==} engines: {node: '>= 0.4'} dependencies: @@ -2096,11 +2843,86 @@ packages: which-typed-array: 1.1.9 dev: false - /es-array-method-boxes-properly/1.0.0: + /es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.2 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.3 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + dev: false + + /es-array-method-boxes-properly@1.0.0: resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} dev: false - /es-set-tostringtag/2.0.1: + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + dev: false + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + dev: false + + /es-module-lexer@1.5.2: + resolution: {integrity: sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==} + dev: false + + /es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + dev: false + + /es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} dependencies: @@ -2109,7 +2931,22 @@ packages: has-tostringtag: 1.0.0 dev: false - /es-to-primitive/1.2.1: + /es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + dev: false + + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + dependencies: + hasown: 2.0.2 + dev: false + + /es-to-primitive@1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} dependencies: @@ -2118,32 +2955,144 @@ packages: is-symbol: 1.0.4 dev: false - /es6-error/4.1.1: + /es6-error@4.1.1: resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} + requiresBuild: true dev: false optional: true - /es6-promise/4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + /es6-promise@4.2.8: + resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + dev: false + + /es6-promisify@5.0.0: + resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} + dependencies: + es6-promise: 4.2.8 + dev: false + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + dev: false + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: false + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: false + + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + dependencies: + debug: 3.2.7 + is-core-module: 2.15.1 + resolve: 1.22.8 + dev: false + + /eslint-module-utils@2.12.0(eslint@7.13.0): + resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} + engines: {node: '>=4'} + peerDependencies: + eslint: '*' + peerDependenciesMeta: + eslint: + optional: true + dependencies: + debug: 3.2.7 + eslint: 7.13.0 + dev: false + + /eslint-module-utils@2.12.0(eslint@7.7.0): + resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} + engines: {node: '>=4'} + peerDependencies: + eslint: '*' + peerDependenciesMeta: + eslint: + optional: true + dependencies: + debug: 3.2.7 + eslint: 7.7.0 + dev: false + + /eslint-plugin-import@2.31.0(eslint@7.13.0): + resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 7.13.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.0(eslint@7.13.0) + hasown: 2.0.2 + is-core-module: 2.15.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 + semver: 6.3.1 + string.prototype.trimend: 1.0.8 + tsconfig-paths: 3.15.0 dev: false - /es6-promisify/5.0.0: - resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} + /eslint-plugin-import@2.31.0(eslint@7.7.0): + resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 dependencies: - es6-promise: 4.2.8 + '@rtsao/scc': 1.1.0 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 7.7.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.0(eslint@7.7.0) + hasown: 2.0.2 + is-core-module: 2.15.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 + semver: 6.3.1 + string.prototype.trimend: 1.0.8 + tsconfig-paths: 3.15.0 dev: false - /escape-string-regexp/1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} + /eslint-plugin-simple-import-sort@10.0.0(eslint@7.13.0): + resolution: {integrity: sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==} + peerDependencies: + eslint: '>=5.0.0' + dependencies: + eslint: 7.13.0 dev: false - /escape-string-regexp/4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} + /eslint-plugin-simple-import-sort@10.0.0(eslint@7.7.0): + resolution: {integrity: sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==} + peerDependencies: + eslint: '>=5.0.0' + dependencies: + eslint: 7.7.0 dev: false - /eslint-scope/5.1.1: + /eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} dependencies: @@ -2151,24 +3100,29 @@ packages: estraverse: 4.3.0 dev: false - /eslint-utils/2.1.0: + /eslint-utils@2.1.0: resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} engines: {node: '>=6'} dependencies: eslint-visitor-keys: 1.3.0 dev: false - /eslint-visitor-keys/1.3.0: + /eslint-visitor-keys@1.3.0: resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} engines: {node: '>=4'} dev: false - /eslint-visitor-keys/2.1.0: + /eslint-visitor-keys@2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} engines: {node: '>=10'} dev: false - /eslint/7.13.0: + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false + + /eslint@7.13.0: resolution: {integrity: sha512-uCORMuOO8tUzJmsdRtrvcGq5qposf7Rw0LwkTJkoDbOycVQtQjmnhZSuLQnozLE4TmAzlMVV45eCHmQ1OpDKUQ==} engines: {node: ^10.12.0 || >=12.0.0} hasBin: true @@ -2214,7 +3168,7 @@ packages: - supports-color dev: false - /eslint/7.32.0: + /eslint@7.32.0: resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} engines: {node: ^10.12.0 || >=12.0.0} hasBin: true @@ -2263,7 +3217,7 @@ packages: - supports-color dev: false - /eslint/7.7.0: + /eslint@7.7.0: resolution: {integrity: sha512-1KUxLzos0ZVsyL81PnRN335nDtQ8/vZUD6uMtWbF+5zDtjKcsklIi78XoE0MVL93QvWTu+E5y44VyyCsOMBrIg==} engines: {node: ^10.12.0 || >=12.0.0} hasBin: true @@ -2308,71 +3262,80 @@ packages: - supports-color dev: false - /espree/7.3.1: + /espree@7.3.1: resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: acorn: 7.4.1 - acorn-jsx: 5.3.2_acorn@7.4.1 + acorn-jsx: 5.3.2(acorn@7.4.1) eslint-visitor-keys: 1.3.0 dev: false - /esprima/4.0.1: + /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true dev: false - /esquery/1.5.0: + /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 dev: false - /esrecurse/4.3.0: + /esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 dev: false - /estraverse/4.3.0: + /estraverse@4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} dev: false - /estraverse/5.3.0: + /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} dev: false - /estree-walker/0.6.1: + /estree-walker@0.6.1: resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} dev: false - /estree-walker/1.0.1: + /estree-walker@1.0.1: resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} dev: false - /estree-walker/2.0.2: + /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: false - /esutils/2.0.3: + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} dev: false - /eventemitter3/3.1.2: + /eventemitter3@3.1.2: resolution: {integrity: sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==} dev: false - /eventemitter3/4.0.7: + /eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} dev: false - /external-editor/3.1.0: + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: false + + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: false + + /external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} dependencies: @@ -2381,7 +3344,7 @@ packages: tmp: 0.0.33 dev: false - /extract-zip/1.7.0: + /extract-zip@1.7.0: resolution: {integrity: sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==} hasBin: true dependencies: @@ -2391,11 +3354,11 @@ packages: yauzl: 2.10.0 dev: false - /fast-deep-equal/3.1.3: + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: false - /fast-glob/3.2.12: + /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} dependencies: @@ -2406,62 +3369,75 @@ packages: micromatch: 4.0.5 dev: false - /fast-json-stable-stringify/2.1.0: + /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: false - /fast-levenshtein/2.0.6: + /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: false - /fastq/1.15.0: + /fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + dev: false + + /fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 dev: false - /fd-slicer/1.1.0: + /fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} dependencies: pend: 1.2.0 dev: false - /figures/2.0.0: + /figures@2.0.0: resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==} engines: {node: '>=4'} dependencies: escape-string-regexp: 1.0.5 dev: false - /file-entry-cache/5.0.1: + /file-entry-cache@5.0.1: resolution: {integrity: sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==} engines: {node: '>=4'} dependencies: flat-cache: 2.0.1 dev: false - /file-entry-cache/6.0.1: + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 dev: false - /fill-range/7.0.1: + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 dev: false - /find-up/3.0.0: + /find-up@3.0.0: resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} engines: {node: '>=6'} dependencies: locate-path: 3.0.0 dev: false - /flat-cache/2.0.1: + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: false + + /flat-cache@2.0.1: resolution: {integrity: sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==} engines: {node: '>=4'} dependencies: @@ -2470,7 +3446,7 @@ packages: write: 1.0.3 dev: false - /flat-cache/3.0.4: + /flat-cache@3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: @@ -2478,22 +3454,27 @@ packages: rimraf: 3.0.2 dev: false - /flat/4.1.1: + /flat@4.1.1: resolution: {integrity: sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==} hasBin: true dependencies: is-buffer: 2.0.5 dev: false - /flatted/2.0.2: + /flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + dev: false + + /flatted@2.0.2: resolution: {integrity: sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==} dev: false - /flatted/3.2.7: + /flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: false - /floss/4.0.0_electron@11.3.0: + /floss@4.0.0(electron@11.3.0): resolution: {integrity: sha512-oG5CX5WC4QGDwepY2DjnVk3tLSAZRYthLTo8ClqhZ+Nn2Epxt3PYqpgR8g9GbpYyniTSjQ0Cd2fsL09c2yTbnQ==} engines: {node: '>=10.0'} hasBin: true @@ -2509,13 +3490,13 @@ packages: resolve: 1.22.1 dev: false - /for-each/0.3.3: + /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 dev: false - /fs-extra/7.0.1: + /fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} dependencies: @@ -2524,7 +3505,7 @@ packages: universalify: 0.1.2 dev: false - /fs-extra/8.1.0: + /fs-extra@8.1.0: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} dependencies: @@ -2533,18 +3514,18 @@ packages: universalify: 0.1.2 dev: false - /fs-minipass/2.1.0: + /fs-minipass@2.1.0: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} engines: {node: '>= 8'} dependencies: minipass: 3.3.6 dev: false - /fs.realpath/1.0.0: + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: false - /fsevents/2.1.3: + /fsevents@2.1.3: resolution: {integrity: sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] @@ -2553,7 +3534,7 @@ packages: dev: false optional: true - /fsevents/2.3.2: + /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] @@ -2561,11 +3542,15 @@ packages: dev: false optional: true - /function-bind/1.1.1: + /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: false - /function.prototype.name/1.1.5: + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: false + + /function.prototype.name@1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} dependencies: @@ -2575,24 +3560,34 @@ packages: functions-have-names: 1.2.3 dev: false - /functional-red-black-tree/1.0.1: + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + functions-have-names: 1.2.3 + dev: false + + /functional-red-black-tree@1.0.1: resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} dev: false - /functions-have-names/1.2.3: + /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: false - /get-caller-file/2.0.5: + /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} dev: false - /get-func-name/2.0.0: + /get-func-name@2.0.0: resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} dev: false - /get-intrinsic/1.2.0: + /get-intrinsic@1.2.0: resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} dependencies: function-bind: 1.1.1 @@ -2600,21 +3595,32 @@ packages: has-symbols: 1.0.3 dev: false - /get-stream/4.1.0: + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.2 + dev: false + + /get-stream@4.1.0: resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} engines: {node: '>=6'} dependencies: pump: 3.0.0 dev: false - /get-stream/5.2.0: + /get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} dependencies: pump: 3.0.0 dev: false - /get-symbol-description/1.0.0: + /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} dependencies: @@ -2622,28 +3628,41 @@ packages: get-intrinsic: 1.2.0 dev: false - /git-repo-info/2.1.1: + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + dev: false + + /git-repo-info@2.1.1: resolution: {integrity: sha512-8aCohiDo4jwjOwma4FmYFd3i97urZulL8XL24nIPxuE+GZnfsAyy/g2Shqx6OjUiFKUXZM+Yy+KHnOmmA3FVcg==} engines: {node: '>= 4.0'} dev: false - /gl-mat3/2.0.0: + /gl-mat3@2.0.0: resolution: {integrity: sha512-/RfKyizhztkG+gH07lA0/OI9uXVEqDrvjza1U8kZc3Sjvn/iT1a99jyL1WtLzXMn/BYp0geE2/DsNp9GCXp28Q==} dev: false - /glob-escape/0.0.2: + /glob-escape@0.0.2: resolution: {integrity: sha512-L/cXYz8x7qer1HAyUQ+mbjcUsJVdpRxpAf7CwqHoNBs9vTpABlGfNN4tzkDxt+u3Z7ZncVyKlCNPtzb0R/7WbA==} engines: {node: '>= 0.10'} dev: false - /glob-parent/5.1.2: + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 dev: false - /glob/7.0.6: + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: false + + /glob@7.0.6: resolution: {integrity: sha512-f8c0rE8JiCxpa52kWPAOa3ZaYEnzofDzCQLCn3Vdk0Z5OVLq3BsRFJI4S4ykpeVW6QMGBUkMeUpoEgWnMTnw5Q==} dependencies: fs.realpath: 1.0.0 @@ -2654,7 +3673,7 @@ packages: path-is-absolute: 1.0.1 dev: false - /glob/7.1.3: + /glob@7.1.3: resolution: {integrity: sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==} dependencies: fs.realpath: 1.0.0 @@ -2665,7 +3684,7 @@ packages: path-is-absolute: 1.0.1 dev: false - /glob/7.1.6: + /glob@7.1.6: resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} dependencies: fs.realpath: 1.0.0 @@ -2676,7 +3695,7 @@ packages: path-is-absolute: 1.0.1 dev: false - /glob/7.2.3: + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 @@ -2687,7 +3706,18 @@ packages: path-is-absolute: 1.0.1 dev: false - /global-agent/3.0.0: + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + dev: false + + /global-agent@3.0.0: resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} engines: {node: '>=10.0'} requiresBuild: true @@ -2701,7 +3731,7 @@ packages: dev: false optional: true - /global-tunnel-ng/2.7.1: + /global-tunnel-ng@2.7.1: resolution: {integrity: sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==} engines: {node: '>=0.10'} requiresBuild: true @@ -2713,34 +3743,46 @@ packages: dev: false optional: true - /globals/12.4.0: + /globals@12.4.0: resolution: {integrity: sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==} engines: {node: '>=8'} dependencies: type-fest: 0.8.1 dev: false - /globals/13.20.0: + /globals@13.20.0: resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 dev: false - /globalthis/1.0.3: + /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.0 dev: false - /gopd/1.0.1: + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + dev: false + + /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.2.0 dev: false - /got/9.6.0: + /got@9.6.0: resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==} engines: {node: '>=8.6'} dependencies: @@ -2757,84 +3799,118 @@ packages: url-parse-lax: 3.0.0 dev: false - /graceful-fs/4.2.10: + /graceful-fs@4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} dev: false - /graceful-fs/4.2.4: + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + requiresBuild: true + dev: false + + /graceful-fs@4.2.4: resolution: {integrity: sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==} dev: false - /growl/1.10.5: + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: false + + /growl@1.10.5: resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==} engines: {node: '>=4.x'} dev: false - /has-bigints/1.0.2: + /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: false - /has-flag/3.0.0: + /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} dev: false - /has-flag/4.0.0: + /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} dev: false - /has-property-descriptors/1.0.0: + /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: get-intrinsic: 1.2.0 dev: false - /has-proto/1.0.1: + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + dependencies: + es-define-property: 1.0.0 + dev: false + + /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} dev: false - /has-symbols/1.0.3: + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + dev: false + + /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} dev: false - /has-tostringtag/1.0.0: + /has-tostringtag@1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: false - /has/1.0.3: + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: false + + /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 dev: false - /he/1.2.0: + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: false + + /he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true dev: false - /hosted-git-info/2.8.9: + /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: false - /hosted-git-info/4.1.0: + /hosted-git-info@4.1.0: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} dependencies: lru-cache: 6.0.0 dev: false - /http-cache-semantics/4.1.1: + /http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} dev: false - /https-proxy-agent/2.2.4: + /https-proxy-agent@2.2.4: resolution: {integrity: sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==} engines: {node: '>= 4.5.0'} dependencies: @@ -2842,34 +3918,39 @@ packages: debug: 3.2.7 dev: false - /iconv-lite/0.4.24: + /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 dev: false - /ignore-walk/3.0.4: + /ignore-walk@3.0.4: resolution: {integrity: sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==} dependencies: minimatch: 3.1.2 dev: false - /ignore/4.0.6: + /ignore@4.0.6: resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} engines: {node: '>= 4'} dev: false - /ignore/5.1.9: + /ignore@5.1.9: resolution: {integrity: sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==} engines: {node: '>= 4'} dev: false - /immediate/3.0.6: + /ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + dev: false + + /immediate@3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} dev: false - /import-fresh/3.3.0: + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} dependencies: @@ -2877,33 +3958,43 @@ packages: resolve-from: 4.0.0 dev: false - /import-lazy/4.0.0: + /import-lazy@4.0.0: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} engines: {node: '>=8'} dev: false - /imurmurhash/0.1.4: + /import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: false + + /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} dev: false - /inflight/1.0.6: + /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 dev: false - /inherits/2.0.4: + /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: false - /ini/1.3.8: + /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + requiresBuild: true dev: false optional: true - /inquirer/6.2.2: + /inquirer@6.2.2: resolution: {integrity: sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==} engines: {node: '>=6.0.0'} dependencies: @@ -2922,7 +4013,7 @@ packages: through: 2.3.8 dev: false - /internal-slot/1.0.5: + /internal-slot@1.0.5: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} dependencies: @@ -2931,7 +4022,21 @@ packages: side-channel: 1.0.4 dev: false - /is-array-buffer/3.0.2: + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.4 + dev: false + + /interpret@3.1.1: + resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} + engines: {node: '>=10.13.0'} + dev: false + + /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: call-bind: 1.0.2 @@ -2939,17 +4044,25 @@ packages: is-typed-array: 1.1.10 dev: false - /is-arrayish/0.2.1: + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: false + + /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: false - /is-bigint/1.0.4: + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 dev: false - /is-boolean-object/1.1.2: + /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: @@ -2957,84 +4070,117 @@ packages: has-tostringtag: 1.0.0 dev: false - /is-buffer/2.0.5: + /is-buffer@2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} dev: false - /is-callable/1.2.7: + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: false + + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} dev: false - /is-core-module/2.11.0: + /is-core-module@2.11.0: resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} dependencies: has: 1.0.3 dev: false - /is-date-object/1.0.5: + /is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} + dependencies: + hasown: 2.0.2 + dev: false + + /is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + dependencies: + is-typed-array: 1.1.13 + dev: false + + /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: false - /is-extglob/2.1.1: + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} dev: false - /is-fullwidth-code-point/2.0.0: + /is-fullwidth-code-point@2.0.0: resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} engines: {node: '>=4'} dev: false - /is-fullwidth-code-point/3.0.0: + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} dev: false - /is-glob/4.0.3: + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 dev: false - /is-module/1.0.0: + /is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: false - /is-negative-zero/2.0.2: + /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} dev: false - /is-number-object/1.0.7: + /is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + dev: false + + /is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: false - /is-number/7.0.0: + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} dev: false - /is-plain-obj/2.1.0: + /is-plain-obj@2.1.0: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} dev: false - /is-reference/1.2.1: + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: false + + /is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: - '@types/estree': 1.0.0 + '@types/estree': 1.0.5 dev: false - /is-regex/1.1.4: + /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: @@ -3042,34 +4188,41 @@ packages: has-tostringtag: 1.0.0 dev: false - /is-shared-array-buffer/1.0.2: + /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.2 dev: false - /is-string/1.0.7: + /is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + dev: false + + /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: false - /is-subdir/1.2.0: + /is-subdir@1.2.0: resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} engines: {node: '>=4'} dependencies: better-path-resolve: 1.0.0 dev: false - /is-symbol/1.0.4: + /is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: false - /is-typed-array/1.1.10: + /is-typed-array@1.1.10: resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} engines: {node: '>= 0.4'} dependencies: @@ -3080,38 +4233,54 @@ packages: has-tostringtag: 1.0.0 dev: false - /is-typedarray/1.0.0: + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.15 + dev: false + + /is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} dev: false - /is-weakref/1.0.2: + /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 dev: false - /is-windows/1.0.2: + /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} dev: false - /isarray/0.0.1: + /isarray@0.0.1: resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} dev: false - /isarray/1.0.0: + /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: false - /isexe/2.0.0: + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: false + + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: false - /ismobilejs/1.1.1: + /ismobilejs@1.1.1: resolution: {integrity: sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==} dev: false - /jest-worker/26.6.2: + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + dev: false + + /jest-worker@26.6.2: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: @@ -3120,15 +4289,24 @@ packages: supports-color: 7.2.0 dev: false - /jju/1.4.0: + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 18.14.6 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: false + + /jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} dev: false - /js-tokens/4.0.0: + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: false - /js-yaml/3.13.1: + /js-yaml@3.13.1: resolution: {integrity: sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==} hasBin: true dependencies: @@ -3136,7 +4314,7 @@ packages: esprima: 4.0.1 dev: false - /js-yaml/3.14.1: + /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true dependencies: @@ -3144,51 +4322,59 @@ packages: esprima: 4.0.1 dev: false - /js-yaml/4.1.0: + /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 dev: false - /json-buffer/3.0.0: + /json-buffer@3.0.0: resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} dev: false - /json-parse-even-better-errors/2.3.1: + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: false - /json-schema-traverse/0.4.1: + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: false - /json-schema-traverse/1.0.0: + /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} dev: false - /json-stable-stringify-without-jsonify/1.0.1: + /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: false - /json-stringify-safe/5.0.1: + /json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + requiresBuild: true dev: false optional: true - /json5/2.2.3: + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: false + + /json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true dev: false - /jsonfile/4.0.0: + /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 dev: false - /jszip/3.5.0: + /jszip@3.5.0: resolution: {integrity: sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==} dependencies: lie: 3.3.0 @@ -3197,17 +4383,22 @@ packages: set-immediate-shim: 1.0.1 dev: false - /just-extend/4.2.1: + /just-extend@4.2.1: resolution: {integrity: sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==} dev: false - /keyv/3.1.0: + /keyv@3.1.0: resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} dependencies: json-buffer: 3.0.0 dev: false - /levn/0.4.1: + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: false + + /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} dependencies: @@ -3215,21 +4406,21 @@ packages: type-check: 0.4.0 dev: false - /libtess/1.2.2: + /libtess@1.2.2: resolution: {integrity: sha512-Nps8HPeVVcsmJxUvFLKVJcCgcz+1ajPTXDVAVPs6+giOQP4AHV31uZFFkh+CKow/bkB7GbZWKmwmit7myaqDSw==} dev: false - /lie/3.3.0: + /lie@3.3.0: resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} dependencies: immediate: 3.0.6 dev: false - /lines-and-columns/1.2.4: + /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: false - /load-json-file/6.2.0: + /load-json-file@6.2.0: resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==} engines: {node: '>=8'} dependencies: @@ -3239,7 +4430,12 @@ packages: type-fest: 0.6.0 dev: false - /locate-path/3.0.0: + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + dev: false + + /locate-path@3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} engines: {node: '>=6'} dependencies: @@ -3247,95 +4443,109 @@ packages: path-exists: 3.0.0 dev: false - /lodash.get/4.4.2: + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: false + + /lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} dev: false - /lodash.isequal/4.5.0: + /lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} dev: false - /lodash.isnil/4.0.0: + /lodash.isnil@4.0.0: resolution: {integrity: sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==} dev: false - /lodash.merge/4.6.2: + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: false - /lodash.times/4.3.2: + /lodash.times@4.3.2: resolution: {integrity: sha512-FfaJzl0SA35CRPDh5SWe2BTght6y5KSK7yJv166qIp/8q7qOwBDCvuDZE2RUSMRpBkLF6rZKbLEUoTmaP3qg6A==} dev: false - /lodash.truncate/4.4.2: + /lodash.truncate@4.4.2: resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} dev: false - /lodash/4.17.21: + /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: false - /log-symbols/2.2.0: + /log-symbols@2.2.0: resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} engines: {node: '>=4'} dependencies: chalk: 2.4.2 dev: false - /loose-envify/1.4.0: + /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true dependencies: js-tokens: 4.0.0 dev: false - /loupe/2.3.6: + /loupe@2.3.6: resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} dependencies: get-func-name: 2.0.0 dev: false - /lowercase-keys/1.0.1: + /lowercase-keys@1.0.1: resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} engines: {node: '>=0.10.0'} dev: false - /lowercase-keys/2.0.0: + /lowercase-keys@2.0.0: resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} engines: {node: '>=8'} dev: false - /lru-cache/6.0.0: + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 dev: false - /magic-string/0.25.9: + /magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: sourcemap-codec: 1.4.8 dev: false - /matcher/3.0.0: + /magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: false + + /matcher@3.0.0: resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} engines: {node: '>=10'} + requiresBuild: true dependencies: escape-string-regexp: 4.0.0 dev: false optional: true - /merge-stream/2.0.0: + /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: false - /merge2/1.4.1: + /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} dev: false - /micromatch/4.0.5: + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: @@ -3343,46 +4553,72 @@ packages: picomatch: 2.3.1 dev: false - /mimic-fn/1.2.0: + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: false + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: false + + /mimic-fn@1.2.0: resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} engines: {node: '>=4'} dev: false - /mimic-response/1.0.1: + /mimic-response@1.0.1: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} engines: {node: '>=4'} dev: false - /minimatch/3.0.4: + /minimatch@3.0.4: resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} dependencies: brace-expansion: 1.1.11 dev: false - /minimatch/3.0.8: + /minimatch@3.0.8: resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} dependencies: brace-expansion: 1.1.11 dev: false - /minimatch/3.1.2: + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 dev: false - /minimist/1.2.8: + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: false + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: false + + /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: false - /minipass/3.3.6: + /minipass@3.3.6: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} dependencies: yallist: 4.0.0 dev: false - /minizlib/2.1.2: + /minizlib@2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} dependencies: @@ -3390,7 +4626,7 @@ packages: yallist: 4.0.0 dev: false - /mkdirp/0.5.4: + /mkdirp@0.5.4: resolution: {integrity: sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==} deprecated: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) hasBin: true @@ -3398,14 +4634,14 @@ packages: minimist: 1.2.8 dev: false - /mkdirp/0.5.6: + /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true dependencies: minimist: 1.2.8 dev: false - /mocha/6.2.3: + /mocha@6.2.3: resolution: {integrity: sha512-0R/3FvjIGH3eEuG17ccFPk117XL2rWxatr81a57D+r/x2uTYZRbdZ4oVidEUMh2W2TJDa7MdAb12Lm2/qrKajg==} engines: {node: '>= 6.0.0'} hasBin: true @@ -3435,27 +4671,27 @@ packages: yargs-unparser: 1.6.0 dev: false - /ms/2.0.0: + /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: false - /ms/2.1.1: + /ms@2.1.1: resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==} dev: false - /ms/2.1.2: + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: false - /ms/2.1.3: + /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: false - /mute-stream/0.0.7: + /mute-stream@0.0.7: resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==} dev: false - /mz/2.7.0: + /mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: any-promise: 1.3.0 @@ -3463,11 +4699,15 @@ packages: thenify-all: 1.6.0 dev: false - /natural-compare/1.4.0: + /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: false - /nise/4.1.0: + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: false + + /nise@4.1.0: resolution: {integrity: sha512-eQMEmGN/8arp0xsvGoQ+B1qvSkR73B1nWSCh7nOt5neMCtwcQVYQGdzQMhcNscktTsWB54xnlSQFzOAPJD8nXA==} dependencies: '@sinonjs/commons': 1.8.6 @@ -3477,19 +4717,23 @@ packages: path-to-regexp: 1.8.0 dev: false - /node-environment-flags/1.0.5: + /node-environment-flags@1.0.5: resolution: {integrity: sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==} dependencies: object.getownpropertydescriptors: 2.1.5 semver: 5.7.1 dev: false - /node-fetch/2.1.2: + /node-fetch@2.1.2: resolution: {integrity: sha512-IHLHYskTc2arMYsHZH82PVX8CSKT5lzb7AXeyO06QnjGDKtkv+pv3mEki6S7reB/x1QPo+YPxQRNEVgR5V/w3Q==} engines: {node: 4.x || >=6.0.0} dev: false - /normalize-package-data/2.5.0: + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: false + + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 @@ -3498,7 +4742,7 @@ packages: validate-npm-package-license: 3.0.4 dev: false - /normalize-package-data/3.0.3: + /normalize-package-data@3.0.3: resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} engines: {node: '>=10'} dependencies: @@ -3508,36 +4752,37 @@ packages: validate-npm-package-license: 3.0.4 dev: false - /normalize-path/3.0.0: + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} dev: false - /normalize-url/4.5.1: + /normalize-url@4.5.1: resolution: {integrity: sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==} engines: {node: '>=8'} dev: false - /npm-bundled/1.1.2: + /npm-bundled@1.1.2: resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==} dependencies: npm-normalize-package-bin: 1.0.1 dev: false - /npm-conf/1.1.3: + /npm-conf@1.1.3: resolution: {integrity: sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==} engines: {node: '>=4'} + requiresBuild: true dependencies: config-chain: 1.1.13 pify: 3.0.0 dev: false optional: true - /npm-normalize-package-bin/1.0.1: + /npm-normalize-package-bin@1.0.1: resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} dev: false - /npm-package-arg/6.1.1: + /npm-package-arg@6.1.1: resolution: {integrity: sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==} dependencies: hosted-git-info: 2.8.9 @@ -3546,7 +4791,7 @@ packages: validate-npm-package-name: 3.0.0 dev: false - /npm-packlist/2.1.5: + /npm-packlist@2.1.5: resolution: {integrity: sha512-KCfK3Vi2F+PH1klYauoQzg81GQ8/GGjQRKYY6tRnpQUPKTs/1gBZSRWtTEd7jGdSn1LZL7gpAmJT+BcS55k2XQ==} engines: {node: '>=10'} hasBin: true @@ -3557,21 +4802,26 @@ packages: npm-normalize-package-bin: 1.0.1 dev: false - /object-assign/4.1.1: + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} dev: false - /object-inspect/1.12.3: + /object-inspect@1.12.3: resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} dev: false - /object-keys/1.1.1: + /object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + dev: false + + /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} dev: false - /object.assign/4.1.0: + /object.assign@4.1.0: resolution: {integrity: sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==} engines: {node: '>= 0.4'} dependencies: @@ -3581,7 +4831,7 @@ packages: object-keys: 1.1.1 dev: false - /object.assign/4.1.4: + /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} dependencies: @@ -3591,7 +4841,27 @@ packages: object-keys: 1.1.1 dev: false - /object.getownpropertydescriptors/2.1.5: + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: false + + /object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + dev: false + + /object.getownpropertydescriptors@2.1.5: resolution: {integrity: sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==} engines: {node: '>= 0.8'} dependencies: @@ -3601,20 +4871,38 @@ packages: es-abstract: 1.21.1 dev: false - /once/1.4.0: + /object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + dev: false + + /object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: false + + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: false - /onetime/2.0.1: + /onetime@2.0.1: resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} engines: {node: '>=4'} dependencies: mimic-fn: 1.2.0 dev: false - /optionator/0.9.1: + /optionator@0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} engines: {node: '>= 0.8.0'} dependencies: @@ -3626,48 +4914,55 @@ packages: word-wrap: 1.2.3 dev: false - /os-homedir/1.0.2: + /os-homedir@1.0.2: resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} engines: {node: '>=0.10.0'} dev: false - /os-tmpdir/1.0.2: + /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} dev: false - /osenv/0.1.5: + /osenv@0.1.5: resolution: {integrity: sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==} dependencies: os-homedir: 1.0.2 os-tmpdir: 1.0.2 dev: false - /p-cancelable/1.1.0: + /p-cancelable@1.1.0: resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} engines: {node: '>=6'} dev: false - /p-limit/2.3.0: + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} dependencies: p-try: 2.2.0 dev: false - /p-locate/3.0.0: + /p-locate@3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} engines: {node: '>=6'} dependencies: p-limit: 2.3.0 dev: false - /p-reflect/2.1.0: + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: false + + /p-reflect@2.1.0: resolution: {integrity: sha512-paHV8NUz8zDHu5lhr/ngGWQiW067DK/+IbJ+RfZ4k+s8y4EKyYCz8pGYWjxCg35eHztpJAt+NUgvN4L+GCbPlg==} engines: {node: '>=8'} dev: false - /p-settle/4.1.1: + /p-settle@4.1.1: resolution: {integrity: sha512-6THGh13mt3gypcNMm0ADqVNCcYa3BK6DWsuJWFCuEKP1rpY+OKGp7gaZwVmLspmic01+fsg/fN57MfvDzZ/PuQ==} engines: {node: '>=10'} dependencies: @@ -3675,23 +4970,23 @@ packages: p-reflect: 2.1.0 dev: false - /p-try/2.2.0: + /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} dev: false - /pako/1.0.11: + /pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} dev: false - /parent-module/1.0.1: + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} dependencies: callsites: 3.1.0 dev: false - /parse-json/5.2.0: + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: @@ -3701,60 +4996,79 @@ packages: lines-and-columns: 1.2.4 dev: false - /path-exists/3.0.0: + /parse-svg-path@0.1.2: + resolution: {integrity: sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==} + dev: false + + /path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} dev: false - /path-is-absolute/1.0.1: + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: false + + /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} dev: false - /path-key/3.1.1: + /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} dev: false - /path-parse/1.0.7: + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: false - /path-to-regexp/1.8.0: + /path-to-regexp@1.8.0: resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==} dependencies: isarray: 0.0.1 dev: false - /pathval/1.1.1: + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: false + + /pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: false - /pend/1.2.0: + /pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} dev: false - /performance-now/2.1.0: + /performance-now@2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: false - /picomatch/2.3.1: + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: false + + /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} dev: false - /pify/3.0.0: + /pify@3.0.0: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} engines: {node: '>=4'} + requiresBuild: true dev: false optional: true - /pirates/4.0.5: + /pirates@4.0.5: resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} engines: {node: '>= 6'} dev: false - /pixi-batch-renderer/2.5.3_oxwlyxjomk2mphx7h5nmxejn3a: + /pixi-batch-renderer@2.5.3(@pixi/constants@5.3.12)(@pixi/core@5.3.12)(@pixi/display@5.3.12)(@pixi/utils@5.3.12): resolution: {integrity: sha512-YI1FQZMjFAmQxqnc1FGNowyuQ5JQidO15By1Vz1xzrnBDCvFhIDiav5phPCZ8Bdza+j1rVWmzPn/3nxd6SV1PA==} peerDependencies: '@pixi/constants': ^6.0.0 @@ -3770,7 +5084,7 @@ packages: '@pixi/utils': 5.3.12 dev: false - /pixi-batch-renderer/3.0.0_psljoirrqdaf3jymgqqgxgcr2y: + /pixi-batch-renderer@3.0.0(@pixi/constants@7.1.4)(@pixi/core@7.1.4)(@pixi/display@7.1.4)(@pixi/math@7.1.4)(@pixi/utils@5.3.12): resolution: {integrity: sha512-BaMGiLjafV9Ug+FM1B3rPtiWlg/tCGFz0Wq7v0AWZzc+OMaj6TTSiGxwjrVFR1RT9FmTj9t6caoaaWw7SsEQ1g==} peerDependencies: '@pixi/constants': ^7.0.0 @@ -3787,7 +5101,7 @@ packages: '@pixi/utils': 5.3.12 dev: false - /pixi.js/7.1.4: + /pixi.js@7.1.4: resolution: {integrity: sha512-hWV60RLU2yTZc9uzO39WKnCWQKkNqwJkbamXd9IcgBvzOJ5pqIrmQ7xVUI+Nx76IJGXFUtkbzMObaYwzK3V7lw==} dependencies: '@pixi/accessibility': 7.1.4 @@ -3821,26 +5135,66 @@ packages: '@pixi/text-bitmap': 7.1.4 dev: false - /prelude-ls/1.2.1: + /pixi.js@8.1.0: + resolution: {integrity: sha512-qclFipWxKavNZoOE0QjGgEklbxjc1mpHf46adsxYLz7O7RnV44PPkq1J5Ssa6y1JxtYUX0fwbphoE/gz276glA==} + dependencies: + '@pixi/colord': 2.9.6 + '@types/css-font-loading-module': 0.0.12 + '@types/earcut': 2.1.4 + '@webgpu/types': 0.1.40 + '@xmldom/xmldom': 0.8.10 + earcut: 2.2.4 + eventemitter3: 5.0.1 + ismobilejs: 1.1.1 + parse-svg-path: 0.1.2 + dev: false + + /pixi.js@8.4.1: + resolution: {integrity: sha512-3ZbEIkLYYi602UB5wuN7kPz3VsGHoJa6nxD8ustvMLRySxHAR9Z8tCAYY8ISgNplpPbaDw03B0yTD4/k9f6cAQ==} + dependencies: + '@pixi/colord': 2.9.6 + '@types/css-font-loading-module': 0.0.12 + '@types/earcut': 2.1.4 + '@webgpu/types': 0.1.40 + '@xmldom/xmldom': 0.8.10 + earcut: 2.2.4 + eventemitter3: 5.0.1 + ismobilejs: 1.1.1 + parse-svg-path: 0.1.2 + dev: false + + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + dev: false + + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + dev: false + + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} dev: false - /prepend-http/2.0.0: + /prepend-http@2.0.0: resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} engines: {node: '>=4'} dev: false - /process-nextick-args/2.0.1: + /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: false - /progress/2.0.3: + /progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} dev: false - /prop-types/15.8.1: + /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: loose-envify: 1.4.0 @@ -3848,59 +5202,60 @@ packages: react-is: 16.13.1 dev: false - /proto-list/1.2.4: + /proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + requiresBuild: true dev: false optional: true - /pump/3.0.0: + /pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} dependencies: end-of-stream: 1.4.4 once: 1.4.0 dev: false - /punycode/1.3.2: + /punycode@1.3.2: resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} dev: false - /punycode/2.3.0: + /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} dev: false - /querystring/0.2.0: + /querystring@0.2.0: resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==} engines: {node: '>=0.4.x'} deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. dev: false - /queue-microtask/1.2.3: + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: false - /ramda/0.27.2: + /ramda@0.27.2: resolution: {integrity: sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==} dev: false - /randombytes/2.1.0: + /randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 dev: false - /react-is/16.13.1: + /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: false - /react/18.2.0: + /react@18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 dev: false - /read-package-json/2.1.2: + /read-package-json@2.1.2: resolution: {integrity: sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==} dependencies: glob: 7.2.3 @@ -3909,7 +5264,7 @@ packages: npm-normalize-package-bin: 1.0.1 dev: false - /read-package-tree/5.1.6: + /read-package-tree@5.1.6: resolution: {integrity: sha512-FCX1aT3GWyY658wzDICef4p+n0dB+ENRct8E/Qyvppj6xVpOYerBHfUu7OP5Rt1/393Tdglguf5ju5DEX4wZNg==} deprecated: The functionality that this package provided is now in @npmcli/arborist dependencies: @@ -3920,7 +5275,7 @@ packages: readdir-scoped-modules: 1.1.0 dev: false - /read-yaml-file/2.1.0: + /read-yaml-file@2.1.0: resolution: {integrity: sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==} engines: {node: '>=10.13'} dependencies: @@ -3928,7 +5283,7 @@ packages: strip-bom: 4.0.0 dev: false - /readable-stream/2.3.8: + /readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: core-util-is: 1.0.3 @@ -3940,7 +5295,7 @@ packages: util-deprecate: 1.0.2 dev: false - /readdir-scoped-modules/1.1.0: + /readdir-scoped-modules@1.1.0: resolution: {integrity: sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==} deprecated: This functionality has been moved to @npmcli/fs dependencies: @@ -3950,74 +5305,105 @@ packages: once: 1.4.0 dev: false - /regexp.prototype.flags/1.4.3: + /rechoir@0.8.0: + resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} + engines: {node: '>= 10.13.0'} + dependencies: + resolve: 1.22.1 + dev: false + + /regexp.prototype.flags@1.4.3: resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - functions-have-names: 1.2.3 + call-bind: 1.0.2 + define-properties: 1.2.0 + functions-have-names: 1.2.3 + dev: false + + /regexp.prototype.flags@1.5.3: + resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 dev: false - /regexpp/3.2.0: + /regexpp@3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} dev: false - /require-directory/2.1.1: + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} dev: false - /require-from-string/2.0.2: + /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} dev: false - /require-main-filename/2.0.0: + /require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} dev: false - /resolve-from/4.0.0: + /resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: false + + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} dev: false - /resolve/1.17.0: + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: false + + /resolve@1.17.0: resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} dependencies: path-parse: 1.0.7 dev: false - /resolve/1.19.0: - resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} + /resolve@1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + hasBin: true dependencies: is-core-module: 2.11.0 path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 dev: false - /resolve/1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true dependencies: - is-core-module: 2.11.0 + is-core-module: 2.15.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: false - /resolve/1.8.1: + /resolve@1.8.1: resolution: {integrity: sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==} dependencies: path-parse: 1.0.7 dev: false - /responselike/1.0.2: + /responselike@1.0.2: resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} dependencies: lowercase-keys: 1.0.1 dev: false - /restore-cursor/2.0.0: + /restore-cursor@2.0.0: resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} engines: {node: '>=4'} dependencies: @@ -4025,28 +5411,29 @@ packages: signal-exit: 3.0.7 dev: false - /reusify/1.0.4: + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: false - /rimraf/2.6.3: + /rimraf@2.6.3: resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} hasBin: true dependencies: glob: 7.2.3 dev: false - /rimraf/3.0.2: + /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: glob: 7.2.3 dev: false - /roarr/2.15.4: + /roarr@2.15.4: resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} engines: {node: '>=8.0'} + requiresBuild: true dependencies: boolean: 3.2.0 detect-node: 2.1.0 @@ -4057,20 +5444,7 @@ packages: dev: false optional: true - /rollup-plugin-node-resolve/5.2.0: - resolution: {integrity: sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==} - deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-node-resolve. - peerDependencies: - rollup: '>=1.11.0' - dependencies: - '@types/resolve': 0.0.8 - builtin-modules: 3.3.0 - is-module: 1.0.0 - resolve: 1.22.1 - rollup-pluginutils: 2.8.2 - dev: false - - /rollup-plugin-node-resolve/5.2.0_rollup@2.27.1: + /rollup-plugin-node-resolve@5.2.0(rollup@2.27.1): resolution: {integrity: sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==} deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-node-resolve. peerDependencies: @@ -4084,7 +5458,7 @@ packages: rollup-pluginutils: 2.8.2 dev: false - /rollup-plugin-node-resolve/5.2.0_rollup@2.33.3: + /rollup-plugin-node-resolve@5.2.0(rollup@2.33.3): resolution: {integrity: sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==} deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-node-resolve. peerDependencies: @@ -4098,7 +5472,7 @@ packages: rollup-pluginutils: 2.8.2 dev: false - /rollup-plugin-node-resolve/5.2.0_rollup@2.79.1: + /rollup-plugin-node-resolve@5.2.0(rollup@2.79.1): resolution: {integrity: sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==} deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-node-resolve. peerDependencies: @@ -4112,7 +5486,7 @@ packages: rollup-pluginutils: 2.8.2 dev: false - /rollup-plugin-replace/2.2.0: + /rollup-plugin-replace@2.2.0: resolution: {integrity: sha512-/5bxtUPkDHyBJAKketb4NfaeZjL5yLZdeUihSfbF2PQMz+rSTEb8ARKoOl3UBT4m7/X+QOXJo3sLTcq+yMMYTA==} deprecated: This module has moved and is now available at @rollup/plugin-replace. Please update your dependencies. This version is no longer maintained. dependencies: @@ -4120,21 +5494,7 @@ packages: rollup-pluginutils: 2.8.2 dev: false - /rollup-plugin-sourcemaps/0.6.3: - resolution: {integrity: sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==} - engines: {node: '>=10.0.0'} - peerDependencies: - '@types/node': '>=10.0.0' - rollup: '>=0.31.2' - peerDependenciesMeta: - '@types/node': - optional: true - dependencies: - '@rollup/pluginutils': 3.1.0 - source-map-resolve: 0.6.0 - dev: false - - /rollup-plugin-sourcemaps/0.6.3_rollup@2.27.1: + /rollup-plugin-sourcemaps@0.6.3(rollup@2.27.1): resolution: {integrity: sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==} engines: {node: '>=10.0.0'} peerDependencies: @@ -4144,12 +5504,12 @@ packages: '@types/node': optional: true dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.27.1 + '@rollup/pluginutils': 3.1.0(rollup@2.27.1) rollup: 2.27.1 source-map-resolve: 0.6.0 dev: false - /rollup-plugin-sourcemaps/0.6.3_rollup@2.33.3: + /rollup-plugin-sourcemaps@0.6.3(rollup@2.33.3): resolution: {integrity: sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==} engines: {node: '>=10.0.0'} peerDependencies: @@ -4159,12 +5519,12 @@ packages: '@types/node': optional: true dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.33.3 + '@rollup/pluginutils': 3.1.0(rollup@2.33.3) rollup: 2.33.3 source-map-resolve: 0.6.0 dev: false - /rollup-plugin-sourcemaps/0.6.3_rollup@2.79.1: + /rollup-plugin-sourcemaps@0.6.3(rollup@2.79.1): resolution: {integrity: sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==} engines: {node: '>=10.0.0'} peerDependencies: @@ -4174,30 +5534,18 @@ packages: '@types/node': optional: true dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.79.1 + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) rollup: 2.79.1 source-map-resolve: 0.6.0 dev: false - /rollup-plugin-string/3.0.0: + /rollup-plugin-string@3.0.0: resolution: {integrity: sha512-vqyzgn9QefAgeKi+Y4A7jETeIAU1zQmS6VotH6bzm/zmUQEnYkpIGRaOBPY41oiWYV4JyBoGAaBjYMYuv+6wVw==} dependencies: rollup-pluginutils: 2.8.2 dev: false - /rollup-plugin-terser/7.0.2: - resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} - deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser - peerDependencies: - rollup: ^2.0.0 - dependencies: - '@babel/code-frame': 7.18.6 - jest-worker: 26.6.2 - serialize-javascript: 4.0.0 - terser: 5.16.5 - dev: false - - /rollup-plugin-terser/7.0.2_rollup@2.27.1: + /rollup-plugin-terser@7.0.2(rollup@2.27.1): resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser peerDependencies: @@ -4210,7 +5558,7 @@ packages: terser: 5.16.5 dev: false - /rollup-plugin-terser/7.0.2_rollup@2.33.3: + /rollup-plugin-terser@7.0.2(rollup@2.33.3): resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser peerDependencies: @@ -4223,7 +5571,7 @@ packages: terser: 5.16.5 dev: false - /rollup-plugin-terser/7.0.2_rollup@2.79.1: + /rollup-plugin-terser@7.0.2(rollup@2.79.1): resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser peerDependencies: @@ -4236,13 +5584,13 @@ packages: terser: 5.16.5 dev: false - /rollup-pluginutils/2.8.2: + /rollup-pluginutils@2.8.2: resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} dependencies: estree-walker: 0.6.1 dev: false - /rollup/2.27.1: + /rollup@2.27.1: resolution: {integrity: sha512-GiWHQvnmMgBktSpY/1+nrGpwPsTw4b9P28og2uedfeq4JZ16rzAmnQ5Pm/E0/BEmDNia1ZbY7+qu3nBgNa19Hg==} engines: {node: '>=10.0.0'} hasBin: true @@ -4250,7 +5598,7 @@ packages: fsevents: 2.1.3 dev: false - /rollup/2.33.3: + /rollup@2.33.3: resolution: {integrity: sha512-RpayhPTe4Gu/uFGCmk7Gp5Z9Qic2VsqZ040G+KZZvsZYdcuWaJg678JeDJJvJeEQXminu24a2au+y92CUWVd+w==} engines: {node: '>=10.0.0'} hasBin: true @@ -4258,7 +5606,7 @@ packages: fsevents: 2.1.3 dev: false - /rollup/2.79.1: + /rollup@2.79.1: resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} engines: {node: '>=10.0.0'} hasBin: true @@ -4266,33 +5614,43 @@ packages: fsevents: 2.3.2 dev: false - /run-async/2.4.1: + /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} dev: false - /run-parallel/1.2.0: + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 dev: false - /rxjs/6.6.7: + /rxjs@6.6.7: resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} engines: {npm: '>=2.0.0'} dependencies: tslib: 1.14.1 dev: false - /safe-buffer/5.1.2: + /safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: false + + /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: false - /safe-buffer/5.2.1: + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: false - /safe-regex-test/1.0.0: + /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 @@ -4300,31 +5658,55 @@ packages: is-regex: 1.1.4 dev: false - /safer-buffer/2.1.2: + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.1.4 + dev: false + + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: false - /semver-compare/1.0.0: + /schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.11 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: false + + /semver-compare@1.0.0: resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} + requiresBuild: true dev: false optional: true - /semver/5.3.0: + /semver@5.3.0: resolution: {integrity: sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==} hasBin: true dev: false - /semver/5.7.1: + /semver@5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true dev: false - /semver/6.3.0: + /semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true dev: false - /semver/7.3.8: + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: false + + /semver@7.3.8: resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} engines: {node: '>=10'} hasBin: true @@ -4332,42 +5714,86 @@ packages: lru-cache: 6.0.0 dev: false - /serialize-error/7.0.1: + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: false + + /serialize-error@7.0.1: resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} engines: {node: '>=10'} + requiresBuild: true dependencies: type-fest: 0.13.1 dev: false optional: true - /serialize-javascript/4.0.0: + /serialize-javascript@4.0.0: resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} dependencies: randombytes: 2.1.0 dev: false - /set-blocking/2.0.0: + /serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + dependencies: + randombytes: 2.1.0 + dev: false + + /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: false - /set-immediate-shim/1.0.1: + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + dev: false + + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + dev: false + + /set-immediate-shim@1.0.1: resolution: {integrity: sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ==} engines: {node: '>=0.10.0'} dev: false - /shebang-command/2.0.0: + /shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + dependencies: + kind-of: 6.0.3 + dev: false + + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 dev: false - /shebang-regex/3.0.0: + /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} dev: false - /side-channel/1.0.4: + /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 @@ -4375,11 +5801,11 @@ packages: object-inspect: 1.12.3 dev: false - /signal-exit/3.0.7: + /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: false - /sinon-chai/3.5.0_chai@4.2.0+sinon@9.0.3: + /sinon-chai@3.5.0(chai@4.2.0)(sinon@9.0.3): resolution: {integrity: sha512-IifbusYiQBpUxxFJkR3wTU68xzBN0+bxCScEaKMjBvAQERg6FnTTc1F17rseLb1tjmkJ23730AXpFI0c47FgAg==} peerDependencies: chai: ^4.0.0 @@ -4389,7 +5815,7 @@ packages: sinon: 9.0.3 dev: false - /sinon/9.0.3: + /sinon@9.0.3: resolution: {integrity: sha512-IKo9MIM111+smz9JGwLmw5U1075n1YXeAq8YeSFlndCLhAL5KGn6bLgu7b/4AYHTV/LcEMcRm2wU2YiL55/6Pg==} dependencies: '@sinonjs/commons': 1.8.6 @@ -4401,7 +5827,7 @@ packages: supports-color: 7.2.0 dev: false - /sinon/9.2.4: + /sinon@9.2.4: resolution: {integrity: sha512-zljcULZQsJxVra28qIAL6ow1Z9tpattkCTEJR4RBP3TGc00FcttsP5pK284Nas5WjMZU5Yzy3kAIp3B3KRf5Yg==} dependencies: '@sinonjs/commons': 1.8.6 @@ -4412,7 +5838,12 @@ packages: supports-color: 7.2.0 dev: false - /slice-ansi/2.1.0: + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: false + + /slice-ansi@2.1.0: resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} engines: {node: '>=6'} dependencies: @@ -4421,7 +5852,7 @@ packages: is-fullwidth-code-point: 2.0.0 dev: false - /slice-ansi/4.0.0: + /slice-ansi@4.0.0: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} dependencies: @@ -4430,14 +5861,14 @@ packages: is-fullwidth-code-point: 3.0.0 dev: false - /sort-keys/4.2.0: + /sort-keys@4.2.0: resolution: {integrity: sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==} engines: {node: '>=8'} dependencies: is-plain-obj: 2.1.0 dev: false - /source-map-resolve/0.6.0: + /source-map-resolve@0.6.0: resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==} deprecated: See https://github.com/lydell/source-map-resolve#deprecated dependencies: @@ -4445,72 +5876,78 @@ packages: decode-uri-component: 0.2.2 dev: false - /source-map-support/0.5.21: + /source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 dev: false - /source-map/0.6.1: + /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} dev: false - /sourcemap-codec/1.4.8: + /source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + dev: false + + /sourcemap-codec@1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} deprecated: Please use @jridgewell/sourcemap-codec instead dev: false - /spdx-correct/3.1.1: + /spdx-correct@3.1.1: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.12 dev: false - /spdx-exceptions/2.3.0: + /spdx-exceptions@2.3.0: resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} dev: false - /spdx-expression-parse/3.0.1: + /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.12 dev: false - /spdx-license-ids/3.0.12: + /spdx-license-ids@3.0.12: resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} dev: false - /sprintf-js/1.0.3: + /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: false - /sprintf-js/1.1.2: + /sprintf-js@1.1.2: resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} + requiresBuild: true dev: false optional: true - /ssri/8.0.1: + /ssri@8.0.1: resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} engines: {node: '>= 8'} dependencies: minipass: 3.3.6 dev: false - /strict-uri-encode/2.0.0: + /strict-uri-encode@2.0.0: resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} engines: {node: '>=4'} dev: false - /string-argv/0.3.1: + /string-argv@0.3.1: resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} engines: {node: '>=0.6.19'} dev: false - /string-width/2.1.1: + /string-width@2.1.1: resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} engines: {node: '>=4'} dependencies: @@ -4518,7 +5955,7 @@ packages: strip-ansi: 4.0.0 dev: false - /string-width/3.1.0: + /string-width@3.1.0: resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} engines: {node: '>=6'} dependencies: @@ -4527,7 +5964,7 @@ packages: strip-ansi: 5.2.0 dev: false - /string-width/4.2.3: + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} dependencies: @@ -4536,7 +5973,17 @@ packages: strip-ansi: 6.0.1 dev: false - /string.prototype.trimend/1.0.6: + /string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + dev: false + + /string.prototype.trimend@1.0.6: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 @@ -4544,7 +5991,15 @@ packages: es-abstract: 1.21.1 dev: false - /string.prototype.trimstart/1.0.6: + /string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: false + + /string.prototype.trimstart@1.0.6: resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 @@ -4552,49 +6007,63 @@ packages: es-abstract: 1.21.1 dev: false - /string_decoder/1.1.1: + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: false + + /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 dev: false - /strip-ansi/4.0.0: + /strip-ansi@4.0.0: resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} engines: {node: '>=4'} dependencies: ansi-regex: 3.0.1 dev: false - /strip-ansi/5.2.0: + /strip-ansi@5.2.0: resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} engines: {node: '>=6'} dependencies: ansi-regex: 4.1.1 dev: false - /strip-ansi/6.0.1: + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 dev: false - /strip-bom/4.0.0: + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: false + + /strip-bom@4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} dev: false - /strip-json-comments/2.0.1: + /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} dev: false - /strip-json-comments/3.1.1: + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} dev: false - /sucrase/3.29.0: + /sucrase@3.29.0: resolution: {integrity: sha512-bZPAuGA5SdFHuzqIhTAqt9fvNEo9rESqXIG3oiKdF8K4UmkQxC4KlNL3lVyAErXp+mPvUqZ5l13qx6TrDIGf3A==} engines: {node: '>=8'} hasBin: true @@ -4607,7 +6076,7 @@ packages: ts-interface-checker: 0.1.13 dev: false - /sumchecker/3.0.1: + /sumchecker@3.0.1: resolution: {integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==} engines: {node: '>= 8.0'} dependencies: @@ -4616,33 +6085,40 @@ packages: - supports-color dev: false - /supports-color/5.5.0: + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} dependencies: has-flag: 3.0.0 dev: false - /supports-color/6.0.0: + /supports-color@6.0.0: resolution: {integrity: sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==} engines: {node: '>=6'} dependencies: has-flag: 3.0.0 dev: false - /supports-color/7.2.0: + /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 dev: false - /supports-preserve-symlinks-flag/1.0.0: + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: false + + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} dev: false - /table/5.4.6: + /table@5.4.6: resolution: {integrity: sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==} engines: {node: '>=6.0.0'} dependencies: @@ -4652,7 +6128,7 @@ packages: string-width: 3.1.0 dev: false - /table/6.8.1: + /table@6.8.1: resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} engines: {node: '>=10.0.0'} dependencies: @@ -4663,7 +6139,12 @@ packages: strip-ansi: 6.0.1 dev: false - /tar/5.0.11: + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: false + + /tar@5.0.11: resolution: {integrity: sha512-E6q48d5y4XSCD+Xmwc0yc8lXuyDK38E0FB8N4S/drQRtXOMUhfhDxbB0xr2KKDhNfO51CFmoa6Oz00nAkWsjnA==} engines: {node: '>= 8'} dependencies: @@ -4675,7 +6156,31 @@ packages: yallist: 4.0.0 dev: false - /terser/5.16.5: + /terser-webpack-plugin@5.3.10(webpack@5.91.0): + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.30.4 + webpack: 5.91.0(webpack-cli@5.1.4) + dev: false + + /terser@5.16.5: resolution: {integrity: sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg==} engines: {node: '>=10'} hasBin: true @@ -4686,119 +6191,199 @@ packages: source-map-support: 0.5.21 dev: false - /text-table/0.2.0: + /terser@5.30.4: + resolution: {integrity: sha512-xRdd0v64a8mFK9bnsKVdoNP9GQIKUAaJPTaqEQDL4w/J8WaW4sWXXoMZ+6SimPkfT5bElreXf8m9HnmPc3E1BQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.8.2 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: false + + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: false - /thenify-all/1.6.0: + /thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} dependencies: thenify: 3.3.1 dev: false - /thenify/3.3.1: + /thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} dependencies: any-promise: 1.3.0 dev: false - /through/2.3.8: + /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: false - /timsort/0.3.0: + /timsort@0.3.0: resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} dev: false - /tinycolor2/1.6.0: + /tinycolor2@1.6.0: resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} dev: false - /tmp/0.0.33: + /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 dev: false - /to-readable-stream/1.0.0: + /to-readable-stream@1.0.0: resolution: {integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==} engines: {node: '>=6'} dev: false - /to-regex-range/5.0.1: + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 dev: false - /true-case-path/2.2.1: + /true-case-path@2.2.1: resolution: {integrity: sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==} dev: false - /ts-interface-checker/0.1.13: + /ts-api-utils@1.3.0(typescript@5.3.3): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.3.3 + dev: false + + /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: false - /tslib/1.14.1: + /ts-loader@9.5.1(typescript@4.9.5)(webpack@5.91.0): + resolution: {integrity: sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==} + engines: {node: '>=12.0.0'} + peerDependencies: + typescript: '*' + webpack: ^5.0.0 + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.16.0 + micromatch: 4.0.5 + semver: 7.3.8 + source-map: 0.7.4 + typescript: 4.9.5 + webpack: 5.91.0(webpack-cli@5.1.4) + dev: false + + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: false + + /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: false - /tslib/2.0.3: + /tslib@2.0.3: resolution: {integrity: sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==} dev: false - /tsutils/3.21.0: + /tsutils@3.21.0(typescript@5.3.3): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: 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' dependencies: tslib: 1.14.1 + typescript: 5.3.3 dev: false - /tunnel/0.0.6: + /tunnel@0.0.6: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} + requiresBuild: true dev: false optional: true - /type-check/0.4.0: + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 dev: false - /type-detect/4.0.8: + /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} dev: false - /type-fest/0.13.1: + /type-fest@0.13.1: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} + requiresBuild: true dev: false optional: true - /type-fest/0.20.2: + /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} dev: false - /type-fest/0.6.0: + /type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} dev: false - /type-fest/0.8.1: + /type-fest@0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} dev: false - /typed-array-length/1.0.4: + /typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + dev: false + + /typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + dev: false + + /typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + dev: false + + /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: call-bind: 1.0.2 @@ -4806,41 +6391,53 @@ packages: is-typed-array: 1.1.10 dev: false - /typedarray-to-buffer/3.1.5: + /typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + dev: false + + /typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: is-typedarray: 1.0.0 dev: false - /typedarray/0.0.6: + /typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} dev: false - /typescript/3.7.7: + /typescript@3.7.7: resolution: {integrity: sha512-MmQdgo/XenfZPvVLtKZOq9jQQvzaUAUpcKW8Z43x9B2fOm4S5g//tPtMweZUIP+SoBqrVPEIm+dJeQ9dfO0QdA==} engines: {node: '>=4.2.0'} hasBin: true dev: false - /typescript/4.0.8: - resolution: {integrity: sha512-oz1765PN+imfz1MlZzSZPtC/tqcwsCyIYA8L47EkRnRW97ztRk83SzMiWLrnChC0vqoYxSU1fcFUDA5gV/ZiPg==} + /typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true dev: false - /typescript/4.3.5: - resolution: {integrity: sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==} - engines: {node: '>=4.2.0'} + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} hasBin: true dev: false - /typescript/4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} + /typescript@5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + engines: {node: '>=14.17'} hasBin: true dev: false - /unbox-primitive/1.0.2: + /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: call-bind: 1.0.2 @@ -4849,58 +6446,165 @@ packages: which-boxed-primitive: 1.0.2 dev: false - /universalify/0.1.2: + /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} dev: false - /uri-js/4.4.1: + /update-browserslist-db@1.0.13(browserslist@4.23.0): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.0 + escalade: 3.1.2 + picocolors: 1.0.0 + dev: false + + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 dev: false - /url-parse-lax/3.0.0: + /url-parse-lax@3.0.0: resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} engines: {node: '>=4'} dependencies: prepend-http: 2.0.0 dev: false - /url/0.11.0: + /url@0.11.0: resolution: {integrity: sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==} dependencies: punycode: 1.3.2 querystring: 0.2.0 dev: false - /util-deprecate/1.0.2: + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: false - /v8-compile-cache/2.3.0: + /v8-compile-cache@2.3.0: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} dev: false - /validate-npm-package-license/3.0.4: + /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: spdx-correct: 3.1.1 spdx-expression-parse: 3.0.1 dev: false - /validate-npm-package-name/3.0.0: + /validate-npm-package-name@3.0.0: resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==} dependencies: builtins: 1.0.3 dev: false - /validator/8.2.0: + /validator@8.2.0: resolution: {integrity: sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==} engines: {node: '>= 0.10'} dev: false - /which-boxed-primitive/1.0.2: + /watchpack@2.4.1: + resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + dev: false + + /webpack-cli@5.1.4(webpack@5.91.0): + resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==} + engines: {node: '>=14.15.0'} + hasBin: true + peerDependencies: + '@webpack-cli/generators': '*' + webpack: 5.x.x + webpack-bundle-analyzer: '*' + webpack-dev-server: '*' + peerDependenciesMeta: + '@webpack-cli/generators': + optional: true + webpack-bundle-analyzer: + optional: true + webpack-dev-server: + optional: true + dependencies: + '@discoveryjs/json-ext': 0.5.7 + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.91.0) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.91.0) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.91.0) + colorette: 2.0.20 + commander: 10.0.1 + cross-spawn: 7.0.3 + envinfo: 7.12.0 + fastest-levenshtein: 1.0.16 + import-local: 3.1.0 + interpret: 3.1.1 + rechoir: 0.8.0 + webpack: 5.91.0(webpack-cli@5.1.4) + webpack-merge: 5.10.0 + dev: false + + /webpack-merge@5.10.0: + resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} + engines: {node: '>=10.0.0'} + dependencies: + clone-deep: 4.0.1 + flat: 5.0.2 + wildcard: 2.0.1 + dev: false + + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: false + + /webpack@5.91.0(webpack-cli@5.1.4): + resolution: {integrity: sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + acorn: 8.8.2 + acorn-import-assertions: 1.9.0(acorn@8.8.2) + browserslist: 4.23.0 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.16.0 + es-module-lexer: 1.5.2 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(webpack@5.91.0) + watchpack: 2.4.1 + webpack-cli: 5.1.4(webpack@5.91.0) + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: false + + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.4 @@ -4910,11 +6614,22 @@ packages: is-symbol: 1.0.4 dev: false - /which-module/2.0.0: + /which-module@2.0.0: resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} dev: false - /which-typed-array/1.1.9: + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + dev: false + + /which-typed-array@1.1.9: resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} engines: {node: '>= 0.4'} dependencies: @@ -4926,14 +6641,14 @@ packages: is-typed-array: 1.1.10 dev: false - /which/1.3.1: + /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true dependencies: isexe: 2.0.0 dev: false - /which/2.0.2: + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true @@ -4941,22 +6656,26 @@ packages: isexe: 2.0.0 dev: false - /wide-align/1.1.3: + /wide-align@1.1.3: resolution: {integrity: sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==} dependencies: string-width: 2.1.1 dev: false - /word-wrap/1.2.3: + /wildcard@2.0.1: + resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} + dev: false + + /word-wrap@1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} dev: false - /wordwrap/1.0.0: + /wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} dev: false - /wrap-ansi/5.1.0: + /wrap-ansi@5.1.0: resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} engines: {node: '>=6'} dependencies: @@ -4965,11 +6684,11 @@ packages: strip-ansi: 5.2.0 dev: false - /wrappy/1.0.2: + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: false - /write-file-atomic/3.0.3: + /write-file-atomic@3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} dependencies: imurmurhash: 0.1.4 @@ -4978,7 +6697,7 @@ packages: typedarray-to-buffer: 3.1.5 dev: false - /write-yaml-file/4.2.0: + /write-yaml-file@4.2.0: resolution: {integrity: sha512-LwyucHy0uhWqbrOkh9cBluZBeNVxzHjDaE9mwepZG3n3ZlbM4v3ndrFw51zW/NXYFFqP+QWZ72ihtLWTh05e4Q==} engines: {node: '>=10.13'} dependencies: @@ -4986,29 +6705,29 @@ packages: write-file-atomic: 3.0.3 dev: false - /write/1.0.3: + /write@1.0.3: resolution: {integrity: sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==} engines: {node: '>=4'} dependencies: mkdirp: 0.5.6 dev: false - /y18n/4.0.3: + /y18n@4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} dev: false - /yallist/4.0.0: + /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: false - /yargs-parser/13.1.2: + /yargs-parser@13.1.2: resolution: {integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==} dependencies: camelcase: 5.3.1 decamelize: 1.2.0 dev: false - /yargs-unparser/1.6.0: + /yargs-unparser@1.6.0: resolution: {integrity: sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==} engines: {node: '>=6'} dependencies: @@ -5017,7 +6736,7 @@ packages: yargs: 13.3.2 dev: false - /yargs/13.3.2: + /yargs@13.3.2: resolution: {integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==} dependencies: cliui: 5.0.0 @@ -5032,14 +6751,14 @@ packages: yargs-parser: 13.1.2 dev: false - /yauzl/2.10.0: + /yauzl@2.10.0: resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} dependencies: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 dev: false - /z-schema/3.18.4: + /z-schema@3.18.4: resolution: {integrity: sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw==} hasBin: true dependencies: @@ -5051,76 +6770,77 @@ packages: dev: false file:projects/area-allocator.tgz: - resolution: {integrity: sha512-SGiaCZa2qUJn8yEWScjMj9lTMJ7Z65YEgvAYkTgti1bwNaRfNM+bBMJvTV7zMbXHvDyEzmP/CB0U5wwBEoEatA==, tarball: file:projects/area-allocator.tgz} + resolution: {integrity: sha512-J7NaucaMqr5+0gCjh7n+oJGdS6ccw+jWz4x7hw0oootnC3xBgmJ5p30Sn2D744uD7uDr0uqqdmIIyR4RPyZykw==, tarball: file:projects/area-allocator.tgz} name: '@rush-temp/area-allocator' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.16.1 - '@pixi-build-tools/rollup-configurator': 1.0.14_rollup@2.33.3 + '@microsoft/api-extractor': 7.47.9 + '@pixi-build-tools/rollup-configurator': 1.0.14(rollup@2.33.3) '@pixi/math': 7.1.4 chai: 4.2.0 eslint: 7.13.0 + pixi.js: 8.4.1 rollup: 2.33.3 tslib: 2.0.3 - typescript: 4.0.8 + typescript: 5.3.3 transitivePeerDependencies: - '@types/node' - supports-color dev: false file:projects/bounds.tgz: - resolution: {integrity: sha512-h+utwz25ylUQHsQ4YDTPOLs3P3qx1Yt5e7DWJ0N/1s4wSmRLEdFafWdgw23Vi5l4uUldh0se2+DJ5mU9NgJ4dg==, tarball: file:projects/bounds.tgz} + resolution: {integrity: sha512-ygg7upCs7U3bbSvYv/COoDvfI9PNGIRbEf6tznqcQFUQjr5KISPEr6nYgbQC7X5w2tPeS7fNOnX68zga7+lvQQ==, tarball: file:projects/bounds.tgz} name: '@rush-temp/bounds' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.16.1 - '@pixi-build-tools/rollup-configurator': 1.0.14_rollup@2.27.1 + '@microsoft/api-extractor': 7.47.9 + '@pixi-build-tools/rollup-configurator': 1.0.14(rollup@2.27.1) '@pixi/math': 7.1.4 eslint: 7.7.0 rollup: 2.27.1 tslib: 2.0.3 - typescript: 4.9.5 + typescript: 5.3.3 transitivePeerDependencies: - '@types/node' - supports-color dev: false file:projects/bvh.tgz: - resolution: {integrity: sha512-bLkMtOzIlNRHXOK4G/lTi+If5lAUo69W2uAQYy0/TH4gIEX0s+SNdawj3DYcT7JgaX0xl/OANM2iG9l1C/IboQ==, tarball: file:projects/bvh.tgz} + resolution: {integrity: sha512-7A7kBHU1UaFHv4aD8Vf6vyFqYy0UGRH9t7K+oWxPEVOm699aYUzPbfv11UTnjLFACUffuxg8yFV9M+N08xAc3w==, tarball: file:projects/bvh.tgz} name: '@rush-temp/bvh' version: 0.0.0 dependencies: - '@pixi-build-tools/rollup-configurator': 1.0.14_rollup@2.27.1 + '@pixi-build-tools/rollup-configurator': 1.0.14(rollup@2.27.1) '@pixi/core': 5.3.12 '@pixi/math': 5.3.12 eslint: 7.7.0 rollup: 2.27.1 tslib: 2.0.3 - typescript: 4.9.5 + typescript: 5.3.3 transitivePeerDependencies: - '@types/node' - supports-color dev: false - file:projects/conic.tgz_@pixi+utils@5.3.12: - resolution: {integrity: sha512-K496tgBrRSEAXFbuPEuMvBXMV9LQsFiZsnNjyW9DmzQk99QrMHKBeAks5ioMqBMSWUKq+GcMsReZ3vCa5/N+3A==, tarball: file:projects/conic.tgz} + file:projects/conic.tgz(@pixi/utils@5.3.12): + resolution: {integrity: sha512-uFqH8U2iK7n/6MWZdWi33jrFGKfI5TOyyt1YqxyxWL5oe5yWWqO2EBrKkBH3/85SofbbZkr3KVRw6YRPcZh6Qg==, tarball: file:projects/conic.tgz} id: file:projects/conic.tgz name: '@rush-temp/conic' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.16.1 - '@pixi-build-tools/rollup-configurator': 1.0.14_rollup@2.27.1 + '@microsoft/api-extractor': 7.47.9 + '@pixi-build-tools/rollup-configurator': 1.0.14(rollup@2.27.1) '@pixi/constants': 7.1.4 '@pixi/core': 7.1.4 '@pixi/display': 7.1.4 '@pixi/math': 7.1.4 eslint: 7.7.0 gl-mat3: 2.0.0 - pixi-batch-renderer: 3.0.0_psljoirrqdaf3jymgqqgxgcr2y + pixi-batch-renderer: 3.0.0(@pixi/constants@7.1.4)(@pixi/core@7.1.4)(@pixi/display@7.1.4)(@pixi/math@7.1.4)(@pixi/utils@5.3.12) pixi.js: 7.1.4 rollup: 2.27.1 tslib: 2.0.3 - typescript: 4.9.5 + typescript: 5.3.3 transitivePeerDependencies: - '@pixi/settings' - '@pixi/utils' @@ -5129,50 +6849,51 @@ packages: dev: false file:projects/cull.tgz: - resolution: {integrity: sha512-wapp6l9m/s+pBd3YHmzYeEBkSsl03na+xNlfmTTXZ1PVnHIFYa4BVWTyk1AN2VJsQ3tjLxfY7LlVwpPZR24kfw==, tarball: file:projects/cull.tgz} + resolution: {integrity: sha512-20sbXUiYDRNXwRKi28Gmk61VwA/XNGUdBT5o0aj2lHwfw/QrW0yK1U086yEZvs3Vvgrmyu4EtVo2TlceFIPZxw==, tarball: file:projects/cull.tgz} name: '@rush-temp/cull' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.16.1 - '@pixi-build-tools/rollup-configurator': 1.0.14_rollup@2.27.1 + '@microsoft/api-extractor': 7.47.9 + '@pixi-build-tools/rollup-configurator': 1.0.14(rollup@2.27.1) '@pixi/display': 7.1.4 '@pixi/graphics': 7.1.4 '@pixi/math': 7.1.4 chai: 4.3.7 eslint: 7.7.0 + pixi.js: 8.1.0 rollup: 2.27.1 tslib: 2.0.3 - typescript: 4.9.5 + typescript: 5.3.3 transitivePeerDependencies: - '@types/node' - supports-color dev: false file:projects/data-half-edge-mesh.tgz: - resolution: {integrity: sha512-vwWbQP0tY+oNX4lr+x+M+DY8s3KU9k0X2QDfNKXrRf6JAdzdYLfRYJjr/LwjEaROxJn+QxNypOMCuF/UrYmtDw==, tarball: file:projects/data-half-edge-mesh.tgz} + resolution: {integrity: sha512-sqNQT8053lAv5nsRG6xTN26Ot2gzF9oBQJpbyLP/ldfQfBBOrhmfo2F9Q1cS1dvuRUCcB1qcdP5XOHyUOWx+Wg==, tarball: file:projects/data-half-edge-mesh.tgz} name: '@rush-temp/data-half-edge-mesh' version: 0.0.0 dependencies: - '@pixi-build-tools/rollup-configurator': 1.0.14_rollup@2.27.1 + '@pixi-build-tools/rollup-configurator': 1.0.14(rollup@2.27.1) eslint: 7.7.0 rollup: 2.27.1 tslib: 2.0.3 - typescript: 4.9.5 + typescript: 5.3.3 transitivePeerDependencies: - '@types/node' - supports-color dev: false - file:projects/diagnostic-geometry.tgz_vdrtr6h4e3e47nhkcu2cx5y2na: - resolution: {integrity: sha512-HCz4oZsKc2gy7dcaXG0HdUO+bDyb3vlmD1WaX6fuXXCARVVlKt1Bn1NyJ4lHNX1Zppjofr+oESizNKgATHrRGQ==, tarball: file:projects/diagnostic-geometry.tgz} + file:projects/diagnostic-geometry.tgz(@pixi/constants@5.3.12)(@pixi/utils@5.3.12): + resolution: {integrity: sha512-C4c1DUpqvqFzzUX2Snl0meAzA5vloKLeUnjT/gA0sQAvWTOkg5vS71VmkXYRxi6Jv9aoPrn9FfeOhF7IhqU3hg==, tarball: file:projects/diagnostic-geometry.tgz} id: file:projects/diagnostic-geometry.tgz name: '@rush-temp/diagnostic-geometry' version: 0.0.0 dependencies: - '@pixi-build-tools/rollup-configurator': 1.0.14_rollup@2.27.1 + '@pixi-build-tools/rollup-configurator': 1.0.14(rollup@2.27.1) '@pixi/core': 5.3.12 '@pixi/display': 5.3.12 - pixi-batch-renderer: 2.5.3_oxwlyxjomk2mphx7h5nmxejn3a + pixi-batch-renderer: 2.5.3(@pixi/constants@5.3.12)(@pixi/core@5.3.12)(@pixi/display@5.3.12)(@pixi/utils@5.3.12) rollup: 2.27.1 transitivePeerDependencies: - '@pixi/constants' @@ -5182,77 +6903,104 @@ packages: - '@types/node' dev: false - file:projects/eslint-config.tgz: - resolution: {integrity: sha512-fkQrI6q0D93OwvOBKVqgM63Pp0tCgvaEgY9mHDukXBoHkRMCoAWdOK5x5lJJbQi9HXWTyqICjbbEDcz0aJ35Jw==, tarball: file:projects/eslint-config.tgz} + file:projects/eslint-config.tgz(typescript@5.3.3): + resolution: {integrity: sha512-oWSa0EN9ACMXn3bzv92ME2nOHfCXgG97o01IUcC3oHYkck40S2VolzCk0O4NHrmmBHUjMwzJHBQXRiJNNgecjg==, tarball: file:projects/eslint-config.tgz} + id: file:projects/eslint-config.tgz name: '@rush-temp/eslint-config' version: 0.0.0 dependencies: - '@pixi/eslint-config': 1.0.1 + '@pixi/eslint-config': 5.1.0(typescript@5.3.3) '@rushstack/eslint-patch': 1.0.9 - '@typescript-eslint/eslint-plugin': 3.9.1_i4ziokri6n3rwd6nkfbszx5k7y - '@typescript-eslint/parser': 3.9.1 + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@7.7.0)(typescript@5.3.3) transitivePeerDependencies: - eslint - supports-color - typescript dev: false + file:projects/examples.tgz: + resolution: {integrity: sha512-sycezwCpKKjq10ReS5y5cUEJ+OzL3Umwuia9KO8e1l+VFJGRsdw5UDktLjC2CtGvp6TcChCFKA4KZP3FyKOT9A==, tarball: file:projects/examples.tgz} + name: '@rush-temp/examples' + version: 0.0.0 + dependencies: + '@pixi/eslint-config': 5.1.0(eslint@7.13.0)(typescript@5.3.3) + '@rollup/plugin-commonjs': 25.0.7(rollup@2.79.1) + '@rollup/plugin-node-resolve': 15.2.3(rollup@2.79.1) + '@rollup/plugin-sucrase': 5.0.2(rollup@2.79.1) + '@rushstack/eslint-patch': 1.0.9 + '@typescript-eslint/eslint-plugin': 3.9.1(@typescript-eslint/parser@3.9.1)(eslint@7.13.0)(typescript@5.3.3) + '@typescript-eslint/parser': 3.9.1(eslint@7.13.0)(typescript@5.3.3) + '@xmldom/xmldom': 0.8.10 + eslint: 7.13.0 + ismobilejs: 1.1.1 + pixi.js: 8.4.1 + rollup: 2.79.1 + ts-loader: 9.5.1(typescript@4.9.5)(webpack@5.91.0) + typescript: 5.3.3 + webpack: 5.91.0(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.91.0) + transitivePeerDependencies: + - supports-color + dev: false + file:projects/filter-fft.tgz: - resolution: {integrity: sha512-zg58dMPaC18LH3qk4iHFLk53nayGOrK2E3Tp1zYlL1ab7dUVpdw2b8S7i0v8f21lPEqGm7GuD6+NADQP1Rm+4g==, tarball: file:projects/filter-fft.tgz} + resolution: {integrity: sha512-xwnGtD6LI5TJCT5ntxI4Ku2dRI/44dFVPTQUlxijfF9K83riO93+fg3PzRBHO+jplY/s23npHPfsjxvMgpozQw==, tarball: file:projects/filter-fft.tgz} name: '@rush-temp/filter-fft' version: 0.0.0 dependencies: - '@pixi-build-tools/rollup-configurator': 1.0.14_rollup@2.27.1 + '@pixi-build-tools/rollup-configurator': 1.0.14(rollup@2.27.1) '@pixi/core': 5.3.12 eslint: 7.7.0 rollup: 2.27.1 tslib: 2.0.3 - typescript: 4.9.5 + typescript: 5.3.3 transitivePeerDependencies: - '@types/node' - supports-color dev: false file:projects/gradients.tgz: - resolution: {integrity: sha512-qAdg6mRLhm8aEXW8y+aVM9XOhMqQlOAl+sfcpJFIwlh7DiIR9bLjGlQ2exio7Lq3KAsM+sd/p3fSSWyvgr2rTA==, tarball: file:projects/gradients.tgz} + resolution: {integrity: sha512-JL311Uqb/iwI0sfVEbZWBGpmLgSz2Zgqx/c4mgVDIa42lQZeBil5hrbu6oZ8UMFIZyAKp7jchBnnmAZv+tNunw==, tarball: file:projects/gradients.tgz} name: '@rush-temp/gradients' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.16.1 - '@pixi-build-tools/rollup-configurator': 1.0.14_rollup@2.79.1 + '@microsoft/api-extractor': 7.47.9 + '@pixi-build-tools/rollup-configurator': 1.0.14(rollup@2.79.1) '@pixi/core': 7.1.4 '@pixi/math': 7.1.4 '@pixi/sprite': 7.1.4 + pixi.js: 8.4.1 rollup: 2.79.1 - typescript: 4.9.5 + typescript: 5.3.3 transitivePeerDependencies: - '@types/node' dev: false file:projects/instanced-renderer.tgz: - resolution: {integrity: sha512-0I8uqpqunp0xiTXh5IIW3+khQrtGzPH0XthY1/sMTLDs6amxP6j7xYgLMPPLOSLp9iGFu7kGLJe7YoSpShemxw==, tarball: file:projects/instanced-renderer.tgz} + resolution: {integrity: sha512-OAP29dOcAA0ZRYyOkHUcTLyvQ8E6UuDuyEhHCbnci7ORBm8Pf2Ry4shs7wbZ3h9bNNy8U6k6ZRpxMK18dFJN2A==, tarball: file:projects/instanced-renderer.tgz} name: '@rush-temp/instanced-renderer' version: 0.0.0 dependencies: - '@pixi-build-tools/rollup-configurator': 1.0.14_rollup@2.27.1 + '@pixi-build-tools/rollup-configurator': 1.0.14(rollup@2.27.1) '@pixi/constants': 5.3.12 '@pixi/core': 5.3.12 '@pixi/utils': 5.3.12 eslint: 7.7.0 rollup: 2.27.1 tslib: 2.0.3 - typescript: 4.9.5 + typescript: 5.3.3 transitivePeerDependencies: - '@types/node' - supports-color dev: false file:projects/mixin-smart-mask.tgz: - resolution: {integrity: sha512-N3MQWGL93IpsWlmZkpGKJbDPpB2l+F/RwomviZpfEJbIqj1ZYNUwKZfTcGuOJFW6Q+6DGa2iVRci67zmcluo2A==, tarball: file:projects/mixin-smart-mask.tgz} + resolution: {integrity: sha512-/Ml7i2xYoSCKphAJG7DIGyNmRbsdCfRb6FCB4Wo0D0c6xxjvQdaf7mFl/c2YcilCVLqXwlqdxe+d9jpWSQ6LwQ==, tarball: file:projects/mixin-smart-mask.tgz} name: '@rush-temp/mixin-smart-mask' version: 0.0.0 dependencies: - '@pixi-build-tools/rollup-configurator': 1.0.14_rollup@2.27.1 + '@pixi-build-tools/rollup-configurator': 1.0.14(rollup@2.27.1) '@pixi/display': 7.1.4 '@pixi/graphics': 7.1.4 '@pixi/math': 7.1.4 @@ -5260,19 +7008,19 @@ packages: eslint: 7.7.0 rollup: 2.27.1 tslib: 2.0.3 - typescript: 4.9.5 + typescript: 5.3.3 transitivePeerDependencies: - '@types/node' - supports-color dev: false file:projects/object-pool.tgz: - resolution: {integrity: sha512-Hw/ldNxrr6QTJZRf30PB/wkhQIjKW7D7YtDEnt+h4oYhUhyHBgZaAmcRylZALe915uW009SdDcCLGZYDimcM/g==, tarball: file:projects/object-pool.tgz} + resolution: {integrity: sha512-p4Q0LrhD6sjxg3EGd1raPmwl2mKcxYxkSJ9V2LYtYHr4p5ac9WldDIm8qGSpKzdbhxH5iuMTB1vRC/U3q12pQA==, tarball: file:projects/object-pool.tgz} name: '@rush-temp/object-pool' version: 0.0.0 dependencies: '@microsoft/api-extractor': 7.7.13 - '@pixi-build-tools/rollup-configurator': 1.0.14_rollup@2.27.1 + '@pixi-build-tools/rollup-configurator': 1.0.14(rollup@2.27.1) '@pixi/settings': 7.1.4 '@pixi/ticker': 7.1.4 chai: 4.3.7 @@ -5280,28 +7028,28 @@ packages: rollup: 2.27.1 sinon: 9.2.4 tslib: 2.0.3 - typescript: 4.9.5 + typescript: 5.3.3 transitivePeerDependencies: - '@types/node' - supports-color dev: false - file:projects/react-bindings.tgz_ixhinzbrtvxaplzl5esyie5uue: - resolution: {integrity: sha512-Pv1l0t/KiOLM5DALkCZzmO41w3tGmnyqMLgTyYFNy+2u0EwA3/KNcMV+AfRuKBYAjH4QsdQkwaxTX5cKNNt/Yw==, tarball: file:projects/react-bindings.tgz} + file:projects/react-bindings.tgz(@pixi/constants@5.3.12)(@pixi/graphics@7.1.4)(@pixi/ticker@7.1.4): + resolution: {integrity: sha512-t/QLdPo5yDnXb9KPVtTbaORQyTKpqsMFhLTWZ3GN6cf1Z94iyYlELCcrU3RZFeGzhSe51PEdB4w47ywmWe2pFQ==, tarball: file:projects/react-bindings.tgz} id: file:projects/react-bindings.tgz name: '@rush-temp/react-bindings' version: 0.0.0 dependencies: - '@pixi-build-tools/rollup-configurator': 1.0.14_rollup@2.27.1 + '@pixi-build-tools/rollup-configurator': 1.0.14(rollup@2.27.1) '@pixi/display': 7.1.4 '@pixi/math': 7.1.4 - '@pixi/react': 7.1.0_obisx3exolhfyr6dq2wtfbn2uq + '@pixi/react': 7.1.0(@pixi/constants@5.3.12)(@pixi/display@7.1.4)(@pixi/graphics@7.1.4)(@pixi/math@7.1.4)(@pixi/ticker@7.1.4)(react@18.2.0) '@types/react': 16.14.35 eslint: 7.7.0 react: 18.2.0 rollup: 2.27.1 tslib: 2.0.3 - typescript: 4.9.5 + typescript: 5.3.3 transitivePeerDependencies: - '@babel/runtime' - '@pixi/app' @@ -5324,11 +7072,11 @@ packages: dev: false file:projects/shader-preprocessor.tgz: - resolution: {integrity: sha512-tcDDhG9KcP+Jz4mIJvMe8uyx1QdfoH8LzsOcevH3E1bnj9rLKYqRp1uZu75A7GY5GKlBaD2W+QCubTVY9OGdDQ==, tarball: file:projects/shader-preprocessor.tgz} + resolution: {integrity: sha512-RHA8u6StVEOgBYUmIZwh2sxgGnVGOSRBGBQyU0ih4aKNm/3kZAlp6nOB4Yl/3+pRe0QVfOcJ2St0KhZVgixCIQ==, tarball: file:projects/shader-preprocessor.tgz} name: '@rush-temp/shader-preprocessor' version: 0.0.0 dependencies: - '@pixi-build-tools/rollup-configurator': 1.0.14_rollup@2.27.1 + '@pixi-build-tools/rollup-configurator': 1.0.14(rollup@2.27.1) '@pixi/core': 5.3.12 chai: 4.3.7 eslint: 7.7.0 @@ -5336,19 +7084,19 @@ packages: rollup: 2.27.1 sinon: 9.2.4 tslib: 2.0.3 - typescript: 4.9.5 + typescript: 5.3.3 transitivePeerDependencies: - '@types/node' - supports-color dev: false file:projects/svg.tgz: - resolution: {integrity: sha512-iYxgraIbdhEJNIpT6OUPkhwi9Q5lR4lMQusW7IQNFr7abdGR3Hl5fjROElYenMjv+UHT/5lK5+jd8jhQ7JoaPg==, tarball: file:projects/svg.tgz} + resolution: {integrity: sha512-D9T3FhZLJcx5gbcV0c1Lrv75AGGzX8D2u+vRHJgqcB8xOB0mWs8Gf03DmF5PbIgHWyRVmim7tL0XRrm+lBH2LA==, tarball: file:projects/svg.tgz} name: '@rush-temp/svg' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.16.1 - '@pixi-build-tools/rollup-configurator': 1.0.14_rollup@2.79.1 + '@microsoft/api-extractor': 7.47.9 + '@pixi-build-tools/rollup-configurator': 1.0.14(rollup@2.79.1) '@pixi/core': 7.1.4 '@pixi/display': 7.1.4 '@pixi/events': 7.1.4 @@ -5360,20 +7108,21 @@ packages: d-path-parser: 1.0.0 eslint: 7.32.0 libtess: 1.2.2 + pixi.js: 8.4.1 rollup: 2.79.1 tinycolor2: 1.6.0 - typescript: 4.9.5 + typescript: 5.3.3 transitivePeerDependencies: - '@types/node' - supports-color dev: false file:projects/system-g.tgz: - resolution: {integrity: sha512-9sNGVYJNvm5HQZors0XyzUG3NDk027HgLtnDoSDt6d3vj3H0tzottz29tZ/zMqOY0mJRrtjQHOyMe2As4Xl4qQ==, tarball: file:projects/system-g.tgz} + resolution: {integrity: sha512-DsA3E4VvlMgTonAFwico28/Pn5AULH3hmm/491+MrG67n7S1v5MxXSVn8+/6M/ad2dT0G+TTZ/8O6i6huvVAsA==, tarball: file:projects/system-g.tgz} name: '@rush-temp/system-g' version: 0.0.0 dependencies: - '@pixi-build-tools/rollup-configurator': 1.0.14_rollup@2.27.1 + '@pixi-build-tools/rollup-configurator': 1.0.14(rollup@2.27.1) '@pixi/constants': 5.3.12 '@pixi/core': 5.3.12 '@pixi/math': 5.3.12 @@ -5381,38 +7130,39 @@ packages: eslint: 7.7.0 rollup: 2.27.1 tslib: 2.0.3 - typescript: 4.9.5 + typescript: 5.3.3 transitivePeerDependencies: - '@types/node' - supports-color dev: false file:projects/texture-allocator.tgz: - resolution: {integrity: sha512-Aqc6HfBplKtcSC1NPT+3DKsAdp19p0zPcp5HyLXgcB3GQrSfRnNfttlnU78aEyllhsmQ5mmEMi/IAkpdSA2OVg==, tarball: file:projects/texture-allocator.tgz} + resolution: {integrity: sha512-/51erNeMNfBZd5RC7nz2dUofJUc89vccuBLBmppUlXqsRlH33i4wOKs1+rZyyAgzaaZkrJ7thMlXz+f42UIEQA==, tarball: file:projects/texture-allocator.tgz} name: '@rush-temp/texture-allocator' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.16.1 - '@pixi-build-tools/rollup-configurator': 1.0.14_rollup@2.33.3 + '@microsoft/api-extractor': 7.47.9 + '@pixi-build-tools/rollup-configurator': 1.0.14(rollup@2.33.3) '@pixi/constants': 7.1.4 '@pixi/core': 7.1.4 '@pixi/math': 7.1.4 eslint: 7.13.0 + pixi.js: 8.4.1 rollup: 2.33.3 tslib: 2.0.3 - typescript: 4.9.5 + typescript: 5.3.3 transitivePeerDependencies: - '@types/node' - supports-color dev: false file:projects/transformer.tgz: - resolution: {integrity: sha512-o+f/m7wemJunjJ8Rdk9X8eN4uWp6sDzp5GrJapSlmiF8QRoO2vdjJu4F52EATwI0X6BuBsr1sevS+3QxBla4xg==, tarball: file:projects/transformer.tgz} + resolution: {integrity: sha512-l3YnTX1KXSArLr80N6jDYpCwItorqMprkLcOjzYeZw8choRJRL6xeH9BKW4cLjKYnHyg9Bjq1Q+Pm9ZrQyfN3A==, tarball: file:projects/transformer.tgz} name: '@rush-temp/transformer' version: 0.0.0 dependencies: - '@microsoft/api-extractor': 7.16.1 - '@pixi-build-tools/rollup-configurator': 1.0.14_rollup@2.27.1 + '@microsoft/api-extractor': 7.47.9 + '@pixi-build-tools/rollup-configurator': 1.0.14(rollup@2.27.1) '@pixi/core': 7.1.4 '@pixi/display': 7.1.4 '@pixi/events': 7.1.4 @@ -5421,40 +7171,42 @@ packages: eslint: 7.7.0 rollup: 2.27.1 tslib: 2.0.3 - typescript: 4.9.5 + typescript: 5.3.3 transitivePeerDependencies: - '@types/node' - supports-color dev: false file:projects/types.tgz: - resolution: {integrity: sha512-f9ZMSwS9EJce9pg/QrhcWS6oKPfZsKyZ6T+0X1QcpXfIPgIcn0GWnzalwU5djSCaGpTfwVRhY42kkCqXhGjvKg==, tarball: file:projects/types.tgz} + resolution: {integrity: sha512-uWYEWl85uINDzZElLNIunAluQLpOc0ppXtdBcu7TdOUYMywlX/5X+zc8EIEOIhPWWSAYyN6chEYUIvm7vDoQzg==, tarball: file:projects/types.tgz} name: '@rush-temp/types' version: 0.0.0 dependencies: - '@pixi-build-tools/rollup-configurator': 1.0.14_rollup@2.27.1 + '@microsoft/api-extractor': 7.47.9 + '@pixi-build-tools/rollup-configurator': 1.0.14(rollup@2.27.1) '@pixi/math': 5.3.12 eslint: 7.7.0 rollup: 2.27.1 tslib: 2.0.3 - typescript: 4.9.5 + typescript: 5.3.3 transitivePeerDependencies: - '@types/node' - supports-color dev: false - file:projects/unit-tests.tgz: - resolution: {integrity: sha512-hV3VpYi07XyfB7IoQHXsUhGsURVdZs0qpu9ABoncMfA6wdzKeMlFKCrN7Txf1km2Sfc9DwXV71334O7LPbsBBw==, tarball: file:projects/unit-tests.tgz} + file:projects/unit-tests.tgz(typescript@5.3.3): + resolution: {integrity: sha512-mcb6+v112nYX9gSJPgCA/m0wBtpTO0HiVLO5EwW0ovuqeF3jc0f/81GXAPEjLTnnU78koZSXMyMRj/oL1kx/nQ==, tarball: file:projects/unit-tests.tgz} + id: file:projects/unit-tests.tgz name: '@rush-temp/unit-tests' version: 0.0.0 dependencies: '@pixi-build-tools/floss-rush-monorepo': 1.0.1 - '@pixi/eslint-config': 1.0.1_eslint@7.7.0 - '@typescript-eslint/eslint-plugin': 3.9.1_f5aguhtmld35l63cxb6elsyj54 - '@typescript-eslint/parser': 3.9.1_eslint@7.7.0 + '@pixi/eslint-config': 5.1.0(eslint@7.7.0)(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 3.9.1(@typescript-eslint/parser@3.9.1)(eslint@7.7.0)(typescript@5.3.3) + '@typescript-eslint/parser': 3.9.1(eslint@7.7.0)(typescript@5.3.3) electron: 11.3.0 eslint: 7.7.0 - floss: 4.0.0_electron@11.3.0 + floss: 4.0.0(electron@11.3.0) transitivePeerDependencies: - nyc - supports-color diff --git a/common/scripts/install-run-rush-pnpm.js b/common/scripts/install-run-rush-pnpm.js index 5c149955..2356649f 100644 --- a/common/scripts/install-run-rush-pnpm.js +++ b/common/scripts/install-run-rush-pnpm.js @@ -10,6 +10,9 @@ // node common/scripts/install-run-rush-pnpm.js pnpm-command // // For more information, see: https://rushjs.io/pages/maintainer/setup_new_repo/ +// +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See the @microsoft/rush package's LICENSE file for details. /******/ (() => { // webpackBootstrap /******/ "use strict"; @@ -19,7 +22,7 @@ var __webpack_exports__ = {}; \*****************************************************/ // Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. -// See the @microsoft/rush package's LICENSE file for license information. +// See LICENSE in the project root for license information. require('./install-run-rush'); //# sourceMappingURL=install-run-rush-pnpm.js.map module.exports = __webpack_exports__; diff --git a/common/scripts/install-run-rush.js b/common/scripts/install-run-rush.js index cada1ede..9676fc71 100644 --- a/common/scripts/install-run-rush.js +++ b/common/scripts/install-run-rush.js @@ -8,6 +8,9 @@ // node common/scripts/install-run-rush.js install // // For more information, see: https://rushjs.io/pages/maintainer/setup_new_repo/ +// +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See the @microsoft/rush package's LICENSE file for details. /******/ (() => { // webpackBootstrap /******/ "use strict"; @@ -113,7 +116,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! fs */ 657147); /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_1__); // Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. -// See the @microsoft/rush package's LICENSE file for license information. +// See LICENSE in the project root for license information. +/* eslint-disable no-console */ const { installAndRun, findRushJsonFolder, RUSH_JSON_FILENAME, runWithErrorAndStatusCode } = require('./install-run'); @@ -136,8 +140,8 @@ function _getRushVersion(logger) { return rushJsonMatches[1]; } catch (e) { - throw new Error(`Unable to determine the required version of Rush from rush.json (${rushJsonFolder}). ` + - "The 'rushVersion' field is either not assigned in rush.json or was specified " + + throw new Error(`Unable to determine the required version of Rush from ${RUSH_JSON_FILENAME} (${rushJsonFolder}). ` + + `The 'rushVersion' field is either not assigned in ${RUSH_JSON_FILENAME} or was specified ` + 'using an unexpected syntax.'); } } @@ -196,7 +200,7 @@ function _run() { } runWithErrorAndStatusCode(logger, () => { const version = _getRushVersion(logger); - logger.info(`The rush.json configuration requests Rush version ${version}`); + logger.info(`The ${RUSH_JSON_FILENAME} configuration requests Rush version ${version}`); const lockFilePath = process.env[INSTALL_RUN_RUSH_LOCKFILE_PATH_VARIABLE]; if (lockFilePath) { logger.info(`Found ${INSTALL_RUN_RUSH_LOCKFILE_PATH_VARIABLE}="${lockFilePath}", installing with lockfile.`); diff --git a/common/scripts/install-run-rushx.js b/common/scripts/install-run-rushx.js index b05df262..6581521f 100644 --- a/common/scripts/install-run-rushx.js +++ b/common/scripts/install-run-rushx.js @@ -10,6 +10,9 @@ // node common/scripts/install-run-rushx.js custom-command // // For more information, see: https://rushjs.io/pages/maintainer/setup_new_repo/ +// +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See the @microsoft/rush package's LICENSE file for details. /******/ (() => { // webpackBootstrap /******/ "use strict"; @@ -19,7 +22,7 @@ var __webpack_exports__ = {}; \*************************************************/ // Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. -// See the @microsoft/rush package's LICENSE file for license information. +// See LICENSE in the project root for license information. require('./install-run-rush'); //# sourceMappingURL=install-run-rushx.js.map module.exports = __webpack_exports__; diff --git a/common/scripts/install-run.js b/common/scripts/install-run.js index 68b1b56f..9283c445 100644 --- a/common/scripts/install-run.js +++ b/common/scripts/install-run.js @@ -8,6 +8,9 @@ // node common/scripts/install-run.js qrcode@1.2.2 qrcode https://rushjs.io // // For more information, see: https://rushjs.io/pages/maintainer/setup_new_repo/ +// +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See the @microsoft/rush package's LICENSE file for details. /******/ (() => { // webpackBootstrap /******/ "use strict"; @@ -21,6 +24,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "isVariableSetInNpmrcFile": () => (/* binding */ isVariableSetInNpmrcFile), /* harmony export */ "syncNpmrc": () => (/* binding */ syncNpmrc) /* harmony export */ }); /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ 657147); @@ -33,23 +37,30 @@ __webpack_require__.r(__webpack_exports__); /** - * As a workaround, copyAndTrimNpmrcFile() copies the .npmrc file to the target folder, and also trims + * This function reads the content for given .npmrc file path, and also trims * unusable lines from the .npmrc file. * - * Why are we trimming the .npmrc lines? NPM allows environment variables to be specified in - * the .npmrc file to provide different authentication tokens for different registry. - * However, if the environment variable is undefined, it expands to an empty string, which - * produces a valid-looking mapping with an invalid URL that causes an error. Instead, - * we'd prefer to skip that line and continue looking in other places such as the user's - * home directory. - * * @returns * The text of the the .npmrc. */ -function _copyAndTrimNpmrcFile(logger, sourceNpmrcPath, targetNpmrcPath) { - logger.info(`Transforming ${sourceNpmrcPath}`); // Verbose - logger.info(` --> "${targetNpmrcPath}"`); - let npmrcFileLines = fs__WEBPACK_IMPORTED_MODULE_0__.readFileSync(sourceNpmrcPath).toString().split('\n'); +// create a global _combinedNpmrc for cache purpose +const _combinedNpmrcMap = new Map(); +function _trimNpmrcFile(options) { + const { sourceNpmrcPath, linesToPrepend, linesToAppend } = options; + const combinedNpmrcFromCache = _combinedNpmrcMap.get(sourceNpmrcPath); + if (combinedNpmrcFromCache !== undefined) { + return combinedNpmrcFromCache; + } + let npmrcFileLines = []; + if (linesToPrepend) { + npmrcFileLines.push(...linesToPrepend); + } + if (fs__WEBPACK_IMPORTED_MODULE_0__.existsSync(sourceNpmrcPath)) { + npmrcFileLines.push(...fs__WEBPACK_IMPORTED_MODULE_0__.readFileSync(sourceNpmrcPath).toString().split('\n')); + } + if (linesToAppend) { + npmrcFileLines.push(...linesToAppend); + } npmrcFileLines = npmrcFileLines.map((line) => (line || '').trim()); const resultLines = []; // This finds environment variable tokens that look like "${VAR_NAME}" @@ -57,8 +68,13 @@ function _copyAndTrimNpmrcFile(logger, sourceNpmrcPath, targetNpmrcPath) { // Comment lines start with "#" or ";" const commentRegExp = /^\s*[#;]/; // Trim out lines that reference environment variables that aren't defined - for (const line of npmrcFileLines) { + for (let line of npmrcFileLines) { let lineShouldBeTrimmed = false; + //remove spaces before or after key and value + line = line + .split('=') + .map((lineToTrim) => lineToTrim.trim()) + .join('='); // Ignore comment lines if (!commentRegExp.test(line)) { const environmentVariables = line.match(expansionRegExp); @@ -85,27 +101,44 @@ function _copyAndTrimNpmrcFile(logger, sourceNpmrcPath, targetNpmrcPath) { } } const combinedNpmrc = resultLines.join('\n'); + //save the cache + _combinedNpmrcMap.set(sourceNpmrcPath, combinedNpmrc); + return combinedNpmrc; +} +function _copyAndTrimNpmrcFile(options) { + const { logger, sourceNpmrcPath, targetNpmrcPath, linesToPrepend, linesToAppend } = options; + logger.info(`Transforming ${sourceNpmrcPath}`); // Verbose + logger.info(` --> "${targetNpmrcPath}"`); + const combinedNpmrc = _trimNpmrcFile({ + sourceNpmrcPath, + linesToPrepend, + linesToAppend + }); fs__WEBPACK_IMPORTED_MODULE_0__.writeFileSync(targetNpmrcPath, combinedNpmrc); return combinedNpmrc; } -/** - * syncNpmrc() copies the .npmrc file to the target folder, and also trims unusable lines from the .npmrc file. - * If the source .npmrc file not exist, then syncNpmrc() will delete an .npmrc that is found in the target folder. - * - * IMPORTANT: THIS CODE SHOULD BE KEPT UP TO DATE WITH Utilities._syncNpmrc() - * - * @returns - * The text of the the synced .npmrc, if one exists. If one does not exist, then undefined is returned. - */ -function syncNpmrc(sourceNpmrcFolder, targetNpmrcFolder, useNpmrcPublish, logger = { - info: console.log, - error: console.error -}) { +function syncNpmrc(options) { + const { sourceNpmrcFolder, targetNpmrcFolder, useNpmrcPublish, logger = { + // eslint-disable-next-line no-console + info: console.log, + // eslint-disable-next-line no-console + error: console.error + }, createIfMissing = false, linesToAppend, linesToPrepend } = options; const sourceNpmrcPath = path__WEBPACK_IMPORTED_MODULE_1__.join(sourceNpmrcFolder, !useNpmrcPublish ? '.npmrc' : '.npmrc-publish'); const targetNpmrcPath = path__WEBPACK_IMPORTED_MODULE_1__.join(targetNpmrcFolder, '.npmrc'); try { - if (fs__WEBPACK_IMPORTED_MODULE_0__.existsSync(sourceNpmrcPath)) { - return _copyAndTrimNpmrcFile(logger, sourceNpmrcPath, targetNpmrcPath); + if (fs__WEBPACK_IMPORTED_MODULE_0__.existsSync(sourceNpmrcPath) || createIfMissing) { + // Ensure the target folder exists + if (!fs__WEBPACK_IMPORTED_MODULE_0__.existsSync(targetNpmrcFolder)) { + fs__WEBPACK_IMPORTED_MODULE_0__.mkdirSync(targetNpmrcFolder, { recursive: true }); + } + return _copyAndTrimNpmrcFile({ + sourceNpmrcPath, + targetNpmrcPath, + logger, + linesToAppend, + linesToPrepend + }); } else if (fs__WEBPACK_IMPORTED_MODULE_0__.existsSync(targetNpmrcPath)) { // If the source .npmrc doesn't exist and there is one in the target, delete the one in the target @@ -117,6 +150,16 @@ function syncNpmrc(sourceNpmrcFolder, targetNpmrcFolder, useNpmrcPublish, logger throw new Error(`Error syncing .npmrc file: ${e}`); } } +function isVariableSetInNpmrcFile(sourceNpmrcFolder, variableKey) { + const sourceNpmrcPath = `${sourceNpmrcFolder}/.npmrc`; + //if .npmrc file does not exist, return false directly + if (!fs__WEBPACK_IMPORTED_MODULE_0__.existsSync(sourceNpmrcPath)) { + return false; + } + const trimmedNpmrcFile = _trimNpmrcFile({ sourceNpmrcPath }); + const variableKeyRegExp = new RegExp(`^${variableKey}=`, 'm'); + return trimmedNpmrcFile.match(variableKeyRegExp) !== null; +} //# sourceMappingURL=npmrcUtilities.js.map /***/ }), @@ -253,7 +296,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _utilities_npmrcUtilities__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utilities/npmrcUtilities */ 679877); // Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. -// See the @microsoft/rush package's LICENSE file for license information. +// See LICENSE in the project root for license information. +/* eslint-disable no-console */ @@ -297,7 +341,7 @@ let _npmPath = undefined; function getNpmPath() { if (!_npmPath) { try { - if (os__WEBPACK_IMPORTED_MODULE_2__.platform() === 'win32') { + if (_isWindows()) { // We're on Windows const whereOutput = child_process__WEBPACK_IMPORTED_MODULE_0__.execSync('where npm', { stdio: [] }).toString(); const lines = whereOutput.split(os__WEBPACK_IMPORTED_MODULE_2__.EOL).filter((line) => !!line); @@ -359,6 +403,23 @@ function _getRushTempFolder(rushCommonFolder) { return _ensureAndJoinPath(rushCommonFolder, 'temp'); } } +/** + * Compare version strings according to semantic versioning. + * Returns a positive integer if "a" is a later version than "b", + * a negative integer if "b" is later than "a", + * and 0 otherwise. + */ +function _compareVersionStrings(a, b) { + const aParts = a.split(/[.-]/); + const bParts = b.split(/[.-]/); + const numberOfParts = Math.max(aParts.length, bParts.length); + for (let i = 0; i < numberOfParts; i++) { + if (aParts[i] !== bParts[i]) { + return (Number(aParts[i]) || 0) - (Number(bParts[i]) || 0); + } + } + return 0; +} /** * Resolve a package specifier to a static version */ @@ -376,32 +437,55 @@ function _resolvePackageVersion(logger, rushCommonFolder, { name, version }) { try { const rushTempFolder = _getRushTempFolder(rushCommonFolder); const sourceNpmrcFolder = path__WEBPACK_IMPORTED_MODULE_3__.join(rushCommonFolder, 'config', 'rush'); - (0,_utilities_npmrcUtilities__WEBPACK_IMPORTED_MODULE_4__.syncNpmrc)(sourceNpmrcFolder, rushTempFolder, undefined, logger); + (0,_utilities_npmrcUtilities__WEBPACK_IMPORTED_MODULE_4__.syncNpmrc)({ + sourceNpmrcFolder, + targetNpmrcFolder: rushTempFolder, + logger + }); const npmPath = getNpmPath(); // This returns something that looks like: - // @microsoft/rush@3.0.0 '3.0.0' - // @microsoft/rush@3.0.1 '3.0.1' - // ... - // @microsoft/rush@3.0.20 '3.0.20' - // - const npmVersionSpawnResult = child_process__WEBPACK_IMPORTED_MODULE_0__.spawnSync(npmPath, ['view', `${name}@${version}`, 'version', '--no-update-notifier'], { + // ``` + // [ + // "3.0.0", + // "3.0.1", + // ... + // "3.0.20" + // ] + // ``` + // + // if multiple versions match the selector, or + // + // ``` + // "3.0.0" + // ``` + // + // if only a single version matches. + const spawnSyncOptions = { cwd: rushTempFolder, - stdio: [] - }); + stdio: [], + shell: _isWindows() + }; + const platformNpmPath = _getPlatformPath(npmPath); + const npmVersionSpawnResult = child_process__WEBPACK_IMPORTED_MODULE_0__.spawnSync(platformNpmPath, ['view', `${name}@${version}`, 'version', '--no-update-notifier', '--json'], spawnSyncOptions); if (npmVersionSpawnResult.status !== 0) { throw new Error(`"npm view" returned error code ${npmVersionSpawnResult.status}`); } const npmViewVersionOutput = npmVersionSpawnResult.stdout.toString(); - const versionLines = npmViewVersionOutput.split('\n').filter((line) => !!line); - const latestVersion = versionLines[versionLines.length - 1]; + const parsedVersionOutput = JSON.parse(npmViewVersionOutput); + const versions = Array.isArray(parsedVersionOutput) + ? parsedVersionOutput + : [parsedVersionOutput]; + let latestVersion = versions[0]; + for (let i = 1; i < versions.length; i++) { + const latestVersionCandidate = versions[i]; + if (_compareVersionStrings(latestVersionCandidate, latestVersion) > 0) { + latestVersion = latestVersionCandidate; + } + } if (!latestVersion) { throw new Error('No versions found for the specified version range.'); } - const versionMatches = latestVersion.match(/^.+\s\'(.+)\'$/); - if (!versionMatches) { - throw new Error(`Invalid npm output ${latestVersion}`); - } - return versionMatches[1]; + return latestVersion; } catch (e) { throw new Error(`Unable to resolve version ${version} of package ${name}: ${e}`); @@ -427,7 +511,7 @@ function findRushJsonFolder() { } } while (basePath !== (tempPath = path__WEBPACK_IMPORTED_MODULE_3__.dirname(basePath))); // Exit the loop when we hit the disk root if (!_rushJsonFolder) { - throw new Error('Unable to find rush.json.'); + throw new Error(`Unable to find ${RUSH_JSON_FILENAME}.`); } } return _rushJsonFolder; @@ -515,10 +599,12 @@ function _installPackage(logger, packageInstallFolder, name, version, command) { try { logger.info(`Installing ${name}...`); const npmPath = getNpmPath(); - const result = child_process__WEBPACK_IMPORTED_MODULE_0__.spawnSync(npmPath, [command], { + const platformNpmPath = _getPlatformPath(npmPath); + const result = child_process__WEBPACK_IMPORTED_MODULE_0__.spawnSync(platformNpmPath, [command], { stdio: 'inherit', cwd: packageInstallFolder, - env: process.env + env: process.env, + shell: _isWindows() }); if (result.status !== 0) { throw new Error(`"npm ${command}" encountered an error`); @@ -534,9 +620,18 @@ function _installPackage(logger, packageInstallFolder, name, version, command) { */ function _getBinPath(packageInstallFolder, binName) { const binFolderPath = path__WEBPACK_IMPORTED_MODULE_3__.resolve(packageInstallFolder, NODE_MODULES_FOLDER_NAME, '.bin'); - const resolvedBinName = os__WEBPACK_IMPORTED_MODULE_2__.platform() === 'win32' ? `${binName}.cmd` : binName; + const resolvedBinName = _isWindows() ? `${binName}.cmd` : binName; return path__WEBPACK_IMPORTED_MODULE_3__.resolve(binFolderPath, resolvedBinName); } +/** + * Returns a cross-platform path - windows must enclose any path containing spaces within double quotes. + */ +function _getPlatformPath(platformPath) { + return _isWindows() && platformPath.includes(' ') ? `"${platformPath}"` : platformPath; +} +function _isWindows() { + return os__WEBPACK_IMPORTED_MODULE_2__.platform() === 'win32'; +} /** * Write a flag file to the package's install directory, signifying that the install was successful. */ @@ -558,7 +653,11 @@ function installAndRun(logger, packageName, packageVersion, packageBinName, pack // The package isn't already installed _cleanInstallFolder(rushTempFolder, packageInstallFolder, lockFilePath); const sourceNpmrcFolder = path__WEBPACK_IMPORTED_MODULE_3__.join(rushCommonFolder, 'config', 'rush'); - (0,_utilities_npmrcUtilities__WEBPACK_IMPORTED_MODULE_4__.syncNpmrc)(sourceNpmrcFolder, packageInstallFolder, undefined, logger); + (0,_utilities_npmrcUtilities__WEBPACK_IMPORTED_MODULE_4__.syncNpmrc)({ + sourceNpmrcFolder, + targetNpmrcFolder: packageInstallFolder, + logger + }); _createPackageJson(packageInstallFolder, packageName, packageVersion); const command = lockFilePath ? 'ci' : 'install'; _installPackage(logger, packageInstallFolder, packageName, packageVersion, command); @@ -574,15 +673,14 @@ function installAndRun(logger, packageName, packageVersion, packageBinName, pack const originalEnvPath = process.env.PATH || ''; let result; try { - // Node.js on Windows can not spawn a file when the path has a space on it - // unless the path gets wrapped in a cmd friendly way and shell mode is used - const shouldUseShell = binPath.includes(' ') && os__WEBPACK_IMPORTED_MODULE_2__.platform() === 'win32'; - const platformBinPath = shouldUseShell ? `"${binPath}"` : binPath; + // `npm` bin stubs on Windows are `.cmd` files + // Node.js will not directly invoke a `.cmd` file unless `shell` is set to `true` + const platformBinPath = _getPlatformPath(binPath); process.env.PATH = [binFolderPath, originalEnvPath].join(path__WEBPACK_IMPORTED_MODULE_3__.delimiter); result = child_process__WEBPACK_IMPORTED_MODULE_0__.spawnSync(platformBinPath, packageBinArgs, { stdio: 'inherit', windowsVerbatimArguments: false, - shell: shouldUseShell, + shell: _isWindows(), cwd: process.cwd(), env: process.env }); diff --git a/examples/.eslintrc.json b/examples/.eslintrc.json new file mode 100644 index 00000000..06e0e06c --- /dev/null +++ b/examples/.eslintrc.json @@ -0,0 +1,9 @@ +{ + "ignorePatterns": [ + "lib", + "dist" + ], + "extends": [ + "@pixi-essentials/eslint-config" + ] +} diff --git a/examples/.gitignore b/examples/.gitignore new file mode 100644 index 00000000..6c33e743 --- /dev/null +++ b/examples/.gitignore @@ -0,0 +1 @@ +public/bundles diff --git a/examples/package.json b/examples/package.json new file mode 100644 index 00000000..8490b191 --- /dev/null +++ b/examples/package.json @@ -0,0 +1,45 @@ +{ + "name": "@pixi-essentials/examples", + "private": true, + "version": "1.0.0", + "description": "Examples for using pixi-essentials", + "main": "index.js", + "scripts": { + "build": "rollup -c rollup.config.js --silent", + "lint": "eslint --ext .ts ./pages ./src", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/SukantPal/pixi-essentials.git" + }, + "keywords": [ + "pixi-essentials", + "eslint-config" + ], + "author": "Shukant K. Pal ", + "license": "MIT", + "bugs": { + "url": "https://github.com/SukantPal/pixi-essentials/issues" + }, + "homepage": "https://github.com/SukantPal/pixi-essentials#readme", + "dependencies": { + "@rushstack/eslint-patch": "~1.0.3", + "@pixi/eslint-config": "~5.1.0", + "@pixi-essentials/gradients": "2.0.0", + "@pixi-essentials/texture-allocator": "3.0.0", + "@pixi-essentials/svg": "3.0.0", + "@typescript-eslint/parser": "~3.9.1", + "@typescript-eslint/eslint-plugin": "~3.9.1", + "pixi.js": "^8.4.0" + }, + "devDependencies": { + "@pixi-essentials/eslint-config": "~1.0.0", + "@rollup/plugin-commonjs": "~25.0.7", + "@rollup/plugin-node-resolve": "~15.2.3", + "@rollup/plugin-sucrase": "^5.0.2", + "eslint": "~7.13.0", + "rollup": "^2.28.1", + "typescript": "~5.3.3" + } +} diff --git a/examples/pages/gradients/index.ts b/examples/pages/gradients/index.ts new file mode 100644 index 00000000..0388266f --- /dev/null +++ b/examples/pages/gradients/index.ts @@ -0,0 +1,57 @@ +import { RenderTexture, Sprite } from 'pixi.js'; +import { GradientFactory } from '@pixi-essentials/gradients'; +import { main } from '../../src/main'; + +main((app) => +{ + const gradient1 = GradientFactory.createLinearGradient( + app.renderer, + RenderTexture.create({ width: 800, height: 600 }), + { + x0: 0, + y0: 0, + x1: 800, + y1: 600, + colorStops: [ + { color: 0xFF0000, offset: 0 }, + { color: 0x00FF00, offset: 0.5 }, + { color: 0x0000FF, offset: 1 }, + ], + }, + ); + const gradient1Sprite = new Sprite(gradient1); + + gradient1Sprite.scale.set(0.5, 0.5); + + const gradient2 = GradientFactory.createRadialGradient( + app.renderer, + RenderTexture.create({ width: 800, height: 600 }), + { + x0: 400, + y0: 300, + r0: 10, + x1: 400, + y1: 300, + r1: 400, + colorStops: [ + { color: 0xFF0000, offset: 0 }, + { color: 0x00FF00, offset: 0.5 }, + { color: 0x0000FF, offset: 1 }, + ], + }, + ); + const gradient2Sprite = new Sprite(gradient2); + + gradient2Sprite.position.set(400, 0); + gradient2Sprite.scale.set(0.5, 0.5); + + app.stage.addChild(gradient1Sprite, gradient2Sprite); + + requestAnimationFrame(() => + { + app.render(); + }); +}, { + width: 800, + height: 300, +}); diff --git a/examples/pages/svg/image/index.ts b/examples/pages/svg/image/index.ts new file mode 100644 index 00000000..17b36c9e --- /dev/null +++ b/examples/pages/svg/image/index.ts @@ -0,0 +1,39 @@ +import { main } from '../../../src/main'; +import { SVGScene } from '@pixi-essentials/svg'; +import { Ticker } from 'pixi.js'; + +const svg = ` + + + + +`.trim(); + +main((app) => +{ + app.render = app.render.bind(app); + + const svgElement = new DOMParser().parseFromString(svg, 'image/svg+xml').documentElement as unknown as SVGSVGElement; + const svgScene = new SVGScene(svgElement); + + app.stage.addChild(svgScene); + + const imgElement = svgElement.firstElementChild as SVGImageElement; + + imgElement.addEventListener('load', () => + { + // eslint-disable-next-line no-console + console.log('loaded'); + Ticker.shared.addOnce(app.render); + }); + + Ticker.shared.add(app.render); + + Object.assign(window, { + svgElement, + }); +}, { + backgroundColor: 0xffffff, + height: 356, + width: 200, +}); diff --git a/examples/pages/svg/path/index.ts b/examples/pages/svg/path/index.ts new file mode 100644 index 00000000..f1ab4a7a --- /dev/null +++ b/examples/pages/svg/path/index.ts @@ -0,0 +1,68 @@ +import { main } from '../../../src/main'; +import { SVGScene } from '@pixi-essentials/svg'; +import { Ticker } from 'pixi.js'; + +const svg = ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +`.trim(); + +main((app) => +{ + app.render = app.render.bind(app); + + const svgElement = new DOMParser().parseFromString(svg, 'image/svg+xml').documentElement as unknown as SVGSVGElement; + const svgScene = new SVGScene(svgElement); + + svgScene.drawPaints(app.renderer); + + app.stage.addChild(svgScene); + + Ticker.shared.addOnce(app.render); + + Object.assign(window, { + svgElement, + }); +}, { + backgroundColor: 0xffffff, + height: 500, + width: 500, +}); diff --git a/examples/pages/svg/text/index.ts b/examples/pages/svg/text/index.ts new file mode 100644 index 00000000..21d3ca73 --- /dev/null +++ b/examples/pages/svg/text/index.ts @@ -0,0 +1,31 @@ +import { main } from '../../../src/main'; +import { SVGScene } from '@pixi-essentials/svg'; +import { Ticker } from 'pixi.js'; + +const svg = ` + + Hello, SVG! + +`.trim(); + +main((app) => +{ + app.render = app.render.bind(app); + + const svgElement = new DOMParser().parseFromString(svg, 'image/svg+xml').documentElement as unknown as SVGSVGElement; + const svgScene = new SVGScene(svgElement); + + svgScene.drawPaints(app.renderer); + + app.stage.addChild(svgScene); + + Ticker.shared.addOnce(app.render); + + Object.assign(window, { + svgElement, + }); +}, { + backgroundColor: 0xffffff, + height: 500, + width: 500, +}); diff --git a/examples/pages/texture-allocator/atlas/index.ts b/examples/pages/texture-allocator/atlas/index.ts new file mode 100644 index 00000000..379d220a --- /dev/null +++ b/examples/pages/texture-allocator/atlas/index.ts @@ -0,0 +1,42 @@ +import { main } from '../../../src/main'; +import { AtlasAllocator } from '@pixi-essentials/texture-allocator'; +import { Sprite, Ticker } from 'pixi.js'; + +main((app) => +{ + app.render = app.render.bind(app); + + const allocator = new AtlasAllocator(app.renderer); + const textures = [ + 'https://fastly.picsum.photos/id/977/200/200.jpg?hmac=bhLVu-kBB_plx-DkWXz4gYn-ViPAhDjTtGFwu143FiA', + 'https://fastly.picsum.photos/id/971/200/200.jpg?hmac=xcJY-VNIH_UD01lMlLi4mADmQrLTgoEE2_NYEhL3VQA', + 'https://fastly.picsum.photos/id/427/200/200.jpg?hmac=s_shz8jLgIAiRoZ7FP0MA88RuD5sS0xJIGNmuTZLvs8', + ].map((url) => + { + const image = document.createElement('img'); + + image.crossOrigin = 'anonymous'; + image.src = url; + + return allocator.allocate(200, 200, image); + }); + + for (let i = 0; i < textures.length; i++) + { + app.stage.addChild(new Sprite(textures[i])) + .position.set(200 * i, 0); + + textures[i].on('update', () => + { + // eslint-disable-next-line no-console + console.log(`Loaded texture ${i}`); + Ticker.shared.addOnce(app.render); + }); + } + + Ticker.shared.addOnce(app.render); +}, { + backgroundColor: 0xffffff, + height: 200, + width: 600, +}); diff --git a/examples/pages/texture-allocator/canvas/index.ts b/examples/pages/texture-allocator/canvas/index.ts new file mode 100644 index 00000000..d1d8ac62 --- /dev/null +++ b/examples/pages/texture-allocator/canvas/index.ts @@ -0,0 +1,50 @@ +import { CanvasSource, ICanvasRenderingContext2D, Sprite, Texture, Text } from 'pixi.js'; +import { CanvasTextureAllocator } from '@pixi-essentials/texture-allocator'; +import { main } from '../../../src/main'; + +main((app) => +{ + const allocator = new CanvasTextureAllocator(500, 1000); + const textures = new Array(8); + const colors = [ + '#66545e', + '#a39193', + '#aa6f73', + '#eea990', + '#f6e0b5', + ]; + + let ctx: ICanvasRenderingContext2D | null = null; + + for (let i = 0; i < textures.length; i++) + { + const texture = textures[i] = allocator.allocate(250, 250, 0); + const { x, y, width, height } = texture.frame; + + ctx = ctx || (texture.source as CanvasSource).resource.getContext('2d'); + ctx.fillStyle = colors[i % colors.length]; + ctx.fillRect(x, y, width, height); + } + + app.stage.addChild(new Sprite(new Texture(textures[0].source))); + app.stage.addChild(new Text({ + resolution: devicePixelRatio, + text: 'Left half - The canvas atlas\nRight half - The individual textures', + })); + + for (const texture of textures) + { + app.stage.addChild(new Sprite(texture)) + .position.set(texture.frame.x + 500, texture.frame.y); + } + + requestAnimationFrame(() => + { + app.render(); + }); +}, +{ + backgroundColor: 0xffffff, + height: 1000, + width: 1000, +}); diff --git a/examples/public/gradients.html b/examples/public/gradients.html new file mode 100644 index 00000000..e504d2a1 --- /dev/null +++ b/examples/public/gradients.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/examples/public/images/flower.webp b/examples/public/images/flower.webp new file mode 100644 index 00000000..497b81ab Binary files /dev/null and b/examples/public/images/flower.webp differ diff --git a/examples/public/images/visual.webp b/examples/public/images/visual.webp new file mode 100644 index 00000000..7ffb9a53 Binary files /dev/null and b/examples/public/images/visual.webp differ diff --git a/examples/public/svg/image.html b/examples/public/svg/image.html new file mode 100644 index 00000000..4483f022 --- /dev/null +++ b/examples/public/svg/image.html @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/examples/public/svg/path.html b/examples/public/svg/path.html new file mode 100644 index 00000000..bcac68eb --- /dev/null +++ b/examples/public/svg/path.html @@ -0,0 +1,87 @@ + + + + + + + +
+ + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + +
+
+ 500px grid divided into 100px squares, overlaid on canvas. +
+ + + diff --git a/examples/public/svg/text.html b/examples/public/svg/text.html new file mode 100644 index 00000000..af0feab9 --- /dev/null +++ b/examples/public/svg/text.html @@ -0,0 +1,14 @@ + + + + + + +
Hello, HTML!
+ + + diff --git a/examples/public/texture-allocator/atlas.html b/examples/public/texture-allocator/atlas.html new file mode 100644 index 00000000..f1261748 --- /dev/null +++ b/examples/public/texture-allocator/atlas.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/examples/public/texture-allocator/canvas.html b/examples/public/texture-allocator/canvas.html new file mode 100644 index 00000000..28fd5d52 --- /dev/null +++ b/examples/public/texture-allocator/canvas.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/examples/rollup.config.js b/examples/rollup.config.js new file mode 100644 index 00000000..57f3890d --- /dev/null +++ b/examples/rollup.config.js @@ -0,0 +1,33 @@ +const commonjs = require('@rollup/plugin-commonjs'); +const { nodeResolve } = require('@rollup/plugin-node-resolve'); +const sucrase = require('@rollup/plugin-sucrase'); + +function config(input) +{ + return { + input, + output: { + dir: `./public/bundles/${input.split('/').slice(1, -1).join('/')}`, + format: 'es', + }, + plugins: [ + nodeResolve(), + sucrase({ + include: ['**/*.ts'], + transforms: ['typescript'], + }), + commonjs({ }), + ], + preserveEntrySignatures: false, + treeshake: false, + }; +} + +module.exports = [ + config('pages/gradients/index.ts'), + config('pages/svg/image/index.ts'), + config('pages/svg/path/index.ts'), + config('pages/svg/text/index.ts'), + config('pages/texture-allocator/atlas/index.ts'), + config('pages/texture-allocator/canvas/index.ts'), +]; diff --git a/examples/src/main.ts b/examples/src/main.ts new file mode 100644 index 00000000..76033f5e --- /dev/null +++ b/examples/src/main.ts @@ -0,0 +1,34 @@ +import { Application } from 'pixi.js'; + +import type { ApplicationOptions } from 'pixi.js'; + +const useWebGPU = new URLSearchParams(window.location.search).get('webgpu') === 'true'; + +export function main(callback: (app: Application) => void, options?: Partial): void +{ + document.addEventListener('DOMContentLoaded', async function onDOMContentLoaded() + { + const app = new Application(); + + Object.assign(window, { app }); + + await app.init({ + antialias: true, + autoStart: false, + autoDensity: true, + canvas: document.getElementById('view') as HTMLCanvasElement, + height: 600, + preference: useWebGPU ? 'webgpu' : 'webgl', + resolution: devicePixelRatio, + width: 800, + ...options, + }); + + callback(app); + + Object.assign(window, { + app, + stage: app.stage, + }); + }); +} diff --git a/examples/tsconfig.json b/examples/tsconfig.json new file mode 100644 index 00000000..7aad68f1 --- /dev/null +++ b/examples/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "compile", + "skipLibCheck": true + } +} diff --git a/package.json b/package.json index 7395f3dc..22c630cb 100644 --- a/package.json +++ b/package.json @@ -30,5 +30,6 @@ "homepage": "https://github.com/SukantPal/pixi-essentials#readme", "dependencies": { "d-path-parser": "^1.0.0" - } + }, + "packageManager": "pnpm@8.15.5+sha512.b051a32c7e695833b84926d3b29b8cca57254b589f0649d899c6e9d0edb670b91ec7e2a43459bae73759bb5ce619c3266f116bf931ce22d1ef1759a7e45aa96f" } diff --git a/packages/area-allocator/CHANGELOG.json b/packages/area-allocator/CHANGELOG.json index 5b5b3dc4..6209dea9 100644 --- a/packages/area-allocator/CHANGELOG.json +++ b/packages/area-allocator/CHANGELOG.json @@ -1,6 +1,18 @@ { "name": "@pixi-essentials/area-allocator", "entries": [ + { + "version": "3.0.0", + "tag": "@pixi-essentials/area-allocator_v3.0.0", + "date": "Tue, 08 Oct 2024 00:58:26 GMT", + "comments": { + "major": [ + { + "comment": "Support PixiJS 8, renamed AtlasResource to AtlasSource." + } + ] + } + }, { "version": "2.0.0", "tag": "@pixi-essentials/area-allocator_v2.0.0", diff --git a/packages/area-allocator/CHANGELOG.md b/packages/area-allocator/CHANGELOG.md index a18dd96f..4905df06 100644 --- a/packages/area-allocator/CHANGELOG.md +++ b/packages/area-allocator/CHANGELOG.md @@ -1,6 +1,13 @@ # Change Log - @pixi-essentials/area-allocator -This log was last generated on Sun, 05 Mar 2023 03:28:18 GMT and should not be manually modified. +This log was last generated on Tue, 08 Oct 2024 00:58:26 GMT and should not be manually modified. + +## 3.0.0 +Tue, 08 Oct 2024 00:58:26 GMT + +### Breaking changes + +- Support PixiJS 8, renamed AtlasResource to AtlasSource. ## 2.0.0 Sun, 05 Mar 2023 03:28:18 GMT diff --git a/packages/area-allocator/package.json b/packages/area-allocator/package.json index ce607f00..cca1e325 100644 --- a/packages/area-allocator/package.json +++ b/packages/area-allocator/package.json @@ -1,17 +1,18 @@ { "name": "@pixi-essentials/area-allocator", - "version": "2.0.0", + "version": "3.0.0", "description": "Efficient texture area allocator for on-demand atlases", "main": "lib/area-allocator.js", "module": "lib/area-allocator.es.js", "bundle": "dist/area-allocator.js", "types": "./index.d.ts", "peerDependencies": { - "@pixi/math": "^7.0.0" + "pixi.js": "^8.4.0" }, "scripts": { "build": "rollup -c node_modules/@pixi-build-tools/rollup-configurator/index.js --silent", - "build:types": "rm -rf compile && tsc && api-extractor run" + "build:types": "rm -rf compile index.d.ts && tsc && api-extractor run && rm -rf compile", + "lint": "eslint --ext .ts,.js src/ test/" }, "repository": { "type": "git", @@ -38,10 +39,10 @@ "rollup": "~2.33.1", "@pixi-essentials/eslint-config": "~1.0.0", "eslint": "~7.13.0", - "typescript": "~4.0.5", + "typescript": "~5.3.3", "tslib": "~2.0.3", "@pixi-build-tools/rollup-configurator": "^1.0.10", "chai": "~4.2.0", - "@microsoft/api-extractor": "~7.16.1" + "@microsoft/api-extractor": "~7.47.9" } } diff --git a/packages/area-allocator/src/Area.ts b/packages/area-allocator/src/Area.ts index 96f71140..78c9b9f7 100644 --- a/packages/area-allocator/src/Area.ts +++ b/packages/area-allocator/src/Area.ts @@ -1,16 +1,17 @@ /** * The orientation of an area indicates the axis along which it is split. This is a 1-bit field. - * + * * @public */ -export enum AreaOrientation { +export enum AreaOrientation + { HORIZONTAL = 0, VERTICAL = 1 -}; +} /** * Alias for the 31-bit field texture-area type. - * + * * @public */ export type AreaField = number; @@ -20,13 +21,13 @@ export type AreaField = number; * specified along its parent's orientation axis, i.e. if the parent is horizontal, the left and right edges are defined, * else if the parent is vertical, the top and bottom edges are defined. Similarly, the open/close edges of its * children will be along its own orientation axis. - * + * * The orientation axes flip-flop along the hierarchy, i.e. an area's parent's orientation is always opposite to * the area's own orientation. This is because if the orientation were to be same, the area's children could be * "pulled up" to the parent making itself redundant. - * + * * All four edges of an area can be retrieved from it and its parent. - * + * * * * @@ -62,7 +63,7 @@ export type AreaField = number; * * *
- * + * * @public */ export class Area @@ -104,4 +105,4 @@ export class Area Area.getOrientation(area) ); } -} \ No newline at end of file +} diff --git a/packages/area-allocator/src/AreaAllocator.ts b/packages/area-allocator/src/AreaAllocator.ts index 27bdde37..bf0b6a73 100644 --- a/packages/area-allocator/src/AreaAllocator.ts +++ b/packages/area-allocator/src/AreaAllocator.ts @@ -1,4 +1,4 @@ -import type { Rectangle } from '@pixi/math' +import type { Rectangle } from 'pixi.js'; /** * @public @@ -11,4 +11,4 @@ export interface AreaAllocator allocate(width: number, height: number): Rectangle & N; free(area: N): void; -} \ No newline at end of file +} diff --git a/packages/area-allocator/src/GuilloteneAllocator.ts b/packages/area-allocator/src/GuilloteneAllocator.ts index f7d6cdda..7c79e733 100644 --- a/packages/area-allocator/src/GuilloteneAllocator.ts +++ b/packages/area-allocator/src/GuilloteneAllocator.ts @@ -1,11 +1,11 @@ -import { Rectangle } from '@pixi/math'; +import { Rectangle } from 'pixi.js'; import { Area, AreaOrientation } from './Area'; -import type { AreaAllocator } from './AreaAllocator'; import type { AreaField } from './Area'; +import type { AreaAllocator } from './AreaAllocator'; /** - * An allocator node is represented as a tuple. The zeroth element is the parent of the node. The first element + * An allocator node is represented as a tuple. The zeroth element is the parent of the node. The first element * always exists and is the texture area it wholly represents. The second element is whether the rectangle * is allocated or free. The last element is optional and is the list * of its children. @@ -17,17 +17,19 @@ export type AreaNode = [AreaNode, AreaField, boolean] | [AreaNode, AreaField, Ar /** * Pointer to guillotene node. - * + * * @public * @ignore */ +// eslint-disable-next-line camelcase export type AreaPtr = { __mem_area: AreaNode }; /** * @public * @ignore */ -export enum SPLIT_ORIENTATION { +export enum SPLIT_ORIENTATION + { HOR = 0, VERT = 1, NONE = 2 @@ -84,6 +86,7 @@ export class GuilloteneAllocator implements AreaAllocator const node = this.split(area, rect, hole); rect.copyFrom(hole); + // eslint-disable-next-line camelcase (rect as any).__mem_area = node; return rect as (Rectangle & AreaPtr); @@ -93,7 +96,7 @@ export class GuilloteneAllocator implements AreaAllocator * Frees the area represented by the given area pointer. The original rectangle returned by * {@link GuilloteneAllocator#allocate} included this pointer (the `__mem_area` property). * - * @param areaPtr + * @param areaPtr */ free(areaPtr: AreaPtr): void { @@ -116,7 +119,7 @@ export class GuilloteneAllocator implements AreaAllocator /** * Returns the [area]{@link Area} data for the node. * - * @param node + * @param node * @returns The area data for the node. */ protected getAreaField(node: AreaNode): AreaField @@ -144,7 +147,8 @@ export class GuilloteneAllocator implements AreaAllocator const nodeOpen = Area.getOpenOffset(nodeArea); const nodeClose = Area.getCloseOffset(nodeArea); const parentOpen = nodeParent ? Area.getOpenOffset(nodeParent[1]) : 0; - const parentClose = nodeParent ? Area.getCloseOffset(nodeParent[1]) : this._width;// (because root node is horizontal) + const parentClose = nodeParent + ? Area.getCloseOffset(nodeParent[1]) : this._width;// (because root node is horizontal) if (nodeOrientation) // VERTICAL { @@ -152,7 +156,7 @@ export class GuilloteneAllocator implements AreaAllocator rect.y = parentOpen; rect.width = nodeClose - rect.x; rect.height = parentClose - parentOpen; - } + } else // HORIZONTAL { rect.x = parentOpen; @@ -167,7 +171,7 @@ export class GuilloteneAllocator implements AreaAllocator /** * Returns the parent of the area node. * - * @param node + * @param node * @return The parent of `node` */ protected getParent(node: AreaNode): AreaNode @@ -178,7 +182,7 @@ export class GuilloteneAllocator implements AreaAllocator /** * Returns whether the given node has any children. * - * @param node + * @param node * @return Whether the given node has any children. */ protected hasChildren(node: AreaNode): boolean @@ -193,8 +197,9 @@ export class GuilloteneAllocator implements AreaAllocator */ protected getChildren(node: AreaNode): AreaNode[] { - if (!Array.isArray(node[2])) { - throw new Error("Children don't exist") + if (!Array.isArray(node[2])) + { + throw new Error('Children don\'t exist'); } return node[2]; @@ -202,15 +207,15 @@ export class GuilloteneAllocator implements AreaAllocator protected addChild(parent: AreaNode, ...nodes: AreaNode[]): void { - parent[2] = Array.isArray(parent[2]) ? parent[2] : [] - parent[2].push(...nodes) + parent[2] = Array.isArray(parent[2]) ? parent[2] : []; + parent[2].push(...nodes); } /** * Finds an area node with minimum width `aw` and minimum height `ah`. * - * @param aw - * @param ah + * @param aw + * @param ah */ protected findArea(aw: number, ah: number): AreaNode { @@ -220,9 +225,9 @@ export class GuilloteneAllocator implements AreaAllocator /** * The recursive implementation for {@link AreaAllocator#findArea}. * - * @param rootArea - * @param aw - * @param ah + * @param rootArea + * @param aw + * @param ah */ protected findAreaRecursive(rootArea: AreaNode, aw: number, ah: number): AreaNode { @@ -292,13 +297,16 @@ export class GuilloteneAllocator implements AreaAllocator */ protected splitOrientation(host: Rectangle, hole: Rectangle): SPLIT_ORIENTATION { - if (hole.width === host.width && hole.height === host.height) { + if (hole.width === host.width && hole.height === host.height) + { return SPLIT_ORIENTATION.NONE; } - if (hole.width === host.width) { + if (hole.width === host.width) + { return SPLIT_ORIENTATION.VERT; } - if (hole.height === host.height) { + if (hole.height === host.height) + { return SPLIT_ORIENTATION.HOR; } @@ -314,10 +322,10 @@ export class GuilloteneAllocator implements AreaAllocator // |________|_________| const horAreaDiff = Math.abs( // (Primary) Right - (host.width - hole.width) * host.height - + ((host.width - hole.width) * host.height) // (Secondary) Bottom - hole.width * (host.height - hole.height) - ) + - (hole.width * (host.height - hole.height)) + ); // ____________________ // | | | @@ -330,39 +338,39 @@ export class GuilloteneAllocator implements AreaAllocator // |__________________| const verAreaDiff = Math.abs( // (Primary) Bottom - host.width * (host.height - hole.height) - - (host.width - hole.width) * hole.height - ) + (host.width * (host.height - hole.height)) + - ((host.width - hole.width) * hole.height) + ); if (horAreaDiff > verAreaDiff) { - return SPLIT_ORIENTATION.HOR - } - else - { - return SPLIT_ORIENTATION.VERT + return SPLIT_ORIENTATION.HOR; } + + return SPLIT_ORIENTATION.VERT; } protected split( area: AreaNode, areaFrame: Rectangle, holeFrame: Rectangle, - orientation: SPLIT_ORIENTATION = this.getParent(area) ? this.splitOrientation(areaFrame, holeFrame) : SPLIT_ORIENTATION.HOR + orientation: SPLIT_ORIENTATION = + this.getParent(area) ? this.splitOrientation(areaFrame, holeFrame) : SPLIT_ORIENTATION.HOR ): AreaNode { - if (area[2] === true) + if (area[2] === true) { - throw new Error('Cannot deallocate') + throw new Error('Cannot deallocate'); } if (orientation === SPLIT_ORIENTATION.NONE) { area[2] = true; + return area; } - return this[orientation === SPLIT_ORIENTATION.HOR - ? 'splitPrimaryHorizontal' + return this[orientation === SPLIT_ORIENTATION.HOR + ? 'splitPrimaryHorizontal' : 'splitPrimaryVertical'](area, areaFrame, holeFrame); } @@ -374,7 +382,7 @@ export class GuilloteneAllocator implements AreaAllocator if (this.hasChildren(area)) { - throw new Error("Can't split non-leaf node") + throw new Error('Can\'t split non-leaf node'); } const firstChild: AreaNode = [ @@ -389,16 +397,19 @@ export class GuilloteneAllocator implements AreaAllocator const secondChild: AreaNode = [ area, Area.makeArea( - areaFrame.x + holeFrame.width, - areaFrame.right, + areaFrame.x + holeFrame.width, + areaFrame.right, AreaOrientation.VERTICAL ), false ]; - if (axis === AreaOrientation.HORIZONTAL) { - this.addChild(area, firstChild, secondChild) - } else { + if (axis === AreaOrientation.HORIZONTAL) + { + this.addChild(area, firstChild, secondChild); + } + else + { const i = this.getChildren(parent).indexOf(area); firstChild[0] = parent; @@ -432,10 +443,8 @@ export class GuilloteneAllocator implements AreaAllocator return secondaryFirstChild; } - else - { - (firstChild as AreaNode)[2] = true; - } + + (firstChild as AreaNode)[2] = true; return firstChild; } @@ -446,8 +455,9 @@ export class GuilloteneAllocator implements AreaAllocator const axis = Area.getOrientation(field); const parent = this.getParent(area); - if (this.hasChildren(area)) { - throw new Error("Can't split non-leaf node") + if (this.hasChildren(area)) + { + throw new Error('Can\'t split non-leaf node'); } const primaryFirstChild: AreaNode = [ @@ -469,13 +479,14 @@ export class GuilloteneAllocator implements AreaAllocator false ]; - if (axis === AreaOrientation.VERTICAL) + if (axis === AreaOrientation.VERTICAL) { this.addChild(area, primaryFirstChild, primarySecondChild); } else { const i = this.getChildren(parent).indexOf(area); + primaryFirstChild[0] = parent; primarySecondChild[0] = parent; this.getChildren(parent).splice(i, 1, primaryFirstChild, primarySecondChild); @@ -506,20 +517,19 @@ export class GuilloteneAllocator implements AreaAllocator return secondaryFirstChild; } - else - { - (primaryFirstChild as AreaNode)[2] = true; - } + + (primaryFirstChild as AreaNode)[2] = true; return primaryFirstChild; } protected merge( area: AreaNode - ) { + ) + { if (this.hasChildren(area)) { - throw new Error("Cannot merge a non-leaf node"); + throw new Error('Cannot merge a non-leaf node'); } const parent = this.getParent(area); @@ -548,18 +558,10 @@ export class GuilloteneAllocator implements AreaAllocator siblings.splice(i - 1, 1); } - if (siblings.length === 1) { + if (siblings.length === 1) + { parent[2] = false; this.merge(parent); } } - - private printState(area: AreaNode): void - { - if (!this.hasChildren(area)) { - console.log({ ...this.getFrame(area) }, area[2]) - } else { - this.getChildren(area).forEach(n => this.printState(n)) - } - } -} \ No newline at end of file +} diff --git a/packages/area-allocator/src/index.ts b/packages/area-allocator/src/index.ts index d8fef513..447af676 100644 --- a/packages/area-allocator/src/index.ts +++ b/packages/area-allocator/src/index.ts @@ -1,3 +1,3 @@ export * from './Area'; export * from './AreaAllocator'; -export * from './GuilloteneAllocator'; \ No newline at end of file +export * from './GuilloteneAllocator'; diff --git a/packages/bounds/package.json b/packages/bounds/package.json index 0941a5bf..defe386f 100644 --- a/packages/bounds/package.json +++ b/packages/bounds/package.json @@ -38,11 +38,11 @@ "@pixi/math": "^7.0.0", "@pixi-build-tools/rollup-configurator": "^1.0.10", "tslib": "~2.0.1", - "typescript": "~4.9.5", + "typescript": "~5.3.3", "eslint": "~7.7.0", "@pixi-essentials/eslint-config": "~1.0.0", "rollup": "~2.27.0", - "@microsoft/api-extractor": "~7.16.1" + "@microsoft/api-extractor": "~7.47.9" }, "publishConfig": { "access": "public" diff --git a/packages/bvh/package.json b/packages/bvh/package.json index 88526289..7307c140 100644 --- a/packages/bvh/package.json +++ b/packages/bvh/package.json @@ -49,7 +49,7 @@ "@pixi/math": "^5.1.0", "@pixi-build-tools/rollup-configurator": "^1.0.10", "tslib": "~2.0.1", - "typescript": "~4.9.5", + "typescript": "~5.3.3", "eslint": "~7.7.0", "@pixi-essentials/eslint-config": "~1.0.0", "rollup": "~2.27.0" diff --git a/packages/conic/package.json b/packages/conic/package.json index 0fada06b..e8d23bcf 100644 --- a/packages/conic/package.json +++ b/packages/conic/package.json @@ -47,10 +47,10 @@ "pixi.js": "^7.0.0", "@pixi-build-tools/rollup-configurator": "^1.0.10", "tslib": "~2.0.1", - "typescript": "~4.9.5", + "typescript": "~5.3.3", "eslint": "~7.7.0", "@pixi-essentials/eslint-config": "~1.0.0", "rollup": "~2.27.0", - "@microsoft/api-extractor": "~7.16.1" + "@microsoft/api-extractor": "~7.47.9" } } diff --git a/packages/cull/README.md b/packages/cull/README.md index 515b424a..144db7a9 100644 --- a/packages/cull/README.md +++ b/packages/cull/README.md @@ -1,3 +1,5 @@ +> This package has been deprecated. Use the built-in [Culler](https://pixijs.download/release/docs/scene.Culler.html) in PixiJS v8+. + # @pixi-essentials/cull This package provides an optimized, highly configurable culling mechanism. diff --git a/packages/cull/package.json b/packages/cull/package.json index 6f3d9ecb..6778926d 100644 --- a/packages/cull/package.json +++ b/packages/cull/package.json @@ -46,8 +46,8 @@ "eslint": "~7.7.0", "rollup": "~2.27.0", "tslib": "~2.0.1", - "typescript": "~4.9.5", + "typescript": "~5.3.3", "chai": "~4.3.0", - "@microsoft/api-extractor": "~7.16.1" + "@microsoft/api-extractor": "~7.47.9" } } diff --git a/packages/data-half-edge-mesh/package.json b/packages/data-half-edge-mesh/package.json index fc40e5b9..4a814a55 100644 --- a/packages/data-half-edge-mesh/package.json +++ b/packages/data-half-edge-mesh/package.json @@ -26,7 +26,7 @@ "devDependencies": { "@pixi-build-tools/rollup-configurator": "^1.0.10", "tslib": "~2.0.1", - "typescript": "~4.9.5", + "typescript": "~5.3.3", "eslint": "~7.7.0", "@pixi-essentials/eslint-config": "~1.0.0", "rollup": "~2.27.0" diff --git a/packages/diagnostic-geometry/package.json b/packages/diagnostic-geometry/package.json index 498ee922..fdbd7c9b 100644 --- a/packages/diagnostic-geometry/package.json +++ b/packages/diagnostic-geometry/package.json @@ -9,7 +9,7 @@ "types": "./index.d.ts", "scripts": { "build": "rollup -c node_modules/@pixi-build-tools/rollup-configurator/index.js --silent", - "build:types": "echo \"Error: no test specified\" && exit 1" + "build:types": "" }, "repository": { "type": "git", diff --git a/packages/filter-fft/package.json b/packages/filter-fft/package.json index 86328068..c788ddde 100644 --- a/packages/filter-fft/package.json +++ b/packages/filter-fft/package.json @@ -30,7 +30,7 @@ }, "scripts": { "build": "rollup -c node_modules/@pixi-build-tools/rollup-configurator/index.js --silent", - "build:types": "echo \"Error: run tests from root\" && exit 1" + "build:types": "echo 'No typescript build required'" }, "bugs": { "url": "https://github.com/SukantPal/pixi-essentials/issues" @@ -42,7 +42,7 @@ "@pixi/core": "^5.0.0", "@pixi-build-tools/rollup-configurator": "^1.0.10", "tslib": "~2.0.1", - "typescript": "~4.9.5", + "typescript": "~5.3.3", "eslint": "~7.7.0", "@pixi-essentials/eslint-config": "~1.0.0", "rollup": "~2.27.0" diff --git a/packages/gradients/CHANGELOG.json b/packages/gradients/CHANGELOG.json index deab373c..c723d446 100644 --- a/packages/gradients/CHANGELOG.json +++ b/packages/gradients/CHANGELOG.json @@ -1,6 +1,18 @@ { "name": "@pixi-essentials/gradients", "entries": [ + { + "version": "2.0.0", + "tag": "@pixi-essentials/gradients_v2.0.0", + "date": "Tue, 08 Oct 2024 00:58:26 GMT", + "comments": { + "major": [ + { + "comment": "Support PixiJS 8." + } + ] + } + }, { "version": "1.0.1", "tag": "@pixi-essentials/gradients_v1.0.1", diff --git a/packages/gradients/CHANGELOG.md b/packages/gradients/CHANGELOG.md index ae8c08d2..4842c6e1 100644 --- a/packages/gradients/CHANGELOG.md +++ b/packages/gradients/CHANGELOG.md @@ -1,6 +1,13 @@ # Change Log - @pixi-essentials/gradients -This log was last generated on Sun, 05 Mar 2023 03:31:22 GMT and should not be manually modified. +This log was last generated on Tue, 08 Oct 2024 00:58:26 GMT and should not be manually modified. + +## 2.0.0 +Tue, 08 Oct 2024 00:58:26 GMT + +### Breaking changes + +- Support PixiJS 8. ## 1.0.1 Sun, 05 Mar 2023 03:31:22 GMT diff --git a/packages/gradients/README.md b/packages/gradients/README.md index 1b7da2f4..5a12a712 100644 --- a/packages/gradients/README.md +++ b/packages/gradients/README.md @@ -1,3 +1,6 @@ +> Note: There is a bug in PixiJS v8.1.0 that prevents `GradientFactory` from correctly rendering into a texture. +> Make sure you have applied this patch to your PixiJS build: https://github.com/pixijs/pixijs/pull/10486 + # @pixi-essentials/gradients This package exports a `GradientFactory` that generates color gradient textures. The implementation wraps around @@ -13,4 +16,4 @@ npm install @pixi-essentials/gradients ```ts import { GradientFactory } from '@pixi-essentials/gradients'; -``` \ No newline at end of file +``` diff --git a/packages/gradients/package.json b/packages/gradients/package.json index 044498c4..94172988 100644 --- a/packages/gradients/package.json +++ b/packages/gradients/package.json @@ -1,6 +1,6 @@ { "name": "@pixi-essentials/gradients", - "version": "1.0.1", + "version": "2.0.0", "description": "Generates textures with color gradients", "main": "lib/gradients.js", "module": "lib/gradients.es.js", @@ -34,17 +34,13 @@ ], "homepage": "https://github.com/SukantPal/pixi-essentials#readme", "peerDependencies": { - "@pixi/core": "^7.0.0", - "@pixi/math": "^7.0.0", - "@pixi/sprite": "^7.0.0" + "pixi.js": "^8.1.0" }, "devDependencies": { - "@pixi/core": "^7.0.0", - "@pixi/math": "^7.0.0", - "@pixi/sprite": "^7.0.0", + "pixi.js": "^8.4.0", "rollup": "^2.28.2", "@pixi-build-tools/rollup-configurator": "^1.0.10", - "typescript": "~4.9.5", - "@microsoft/api-extractor": "~7.16.1" + "typescript": "~5.3.3", + "@microsoft/api-extractor": "~7.47.9" } } diff --git a/packages/gradients/src/ColorStop.ts b/packages/gradients/src/ColorStop.ts index e1d18b8a..98127a47 100644 --- a/packages/gradients/src/ColorStop.ts +++ b/packages/gradients/src/ColorStop.ts @@ -1,10 +1,10 @@ /** * Color stop used to generate gradients - * + * * @public */ export interface ColorStop { color: number | string; offset: number; -} \ No newline at end of file +} diff --git a/packages/gradients/src/GradientFactory.ts b/packages/gradients/src/GradientFactory.ts index f204f77d..0572d9cc 100644 --- a/packages/gradients/src/GradientFactory.ts +++ b/packages/gradients/src/GradientFactory.ts @@ -1,47 +1,43 @@ -import { Rectangle } from '@pixi/math'; -import { RenderTexture, Texture } from '@pixi/core'; -import { Sprite } from '@pixi/sprite'; +import { Renderer, Texture } from 'pixi.js'; import type { ColorStop } from './ColorStop'; -import type { Renderer } from '@pixi/core'; /** * Converts a hexadecimal color into a CSS color string. - * + * * @ignore * @param color - The hexadecimal form of the color. */ -function cssColor(color: number | string) { - if(typeof color === 'string'){ +function cssColor(color: number | string): string +{ + if (typeof color === 'string') + { return color; } let string = color.toString(16); - while (string.length < 6) { + while (string.length < 6) + { string = `0${string}`; } return `#${string}`; } -const tempSourceFrame = new Rectangle(); -const tempDestinationFrame = new Rectangle(); - /** * Factory class for generating color-gradient textures. - * + * * @public */ export class GradientFactory { /** * Renders a linear-gradient into `renderTexture` that starts from (x0, y0) and ends at (x1, y1). These - * coordinates are defined in the **texture's space**. That means only the frame (0, 0, `renderTexture.width`, `renderTexture.height`) - * will be rendered. - * - * This method can be called inside a render cycle, and will preserve the renderer state. However, the current implementation - * causes a batch renderer flush. - * + * coordinates are defined in the **texture's space**. + * That means only the frame (0, 0, `renderTexture.width`, `renderTexture.height` will be rendered. + * + * This method can be called inside a render cycle, and will preserve the renderer state. + * * @param renderer - The renderer to use for drawing the gradient. * @param renderTexture - The texture to render the gradient into. * @param options - The gradient parameters. @@ -51,19 +47,18 @@ export class GradientFactory * @param options.y1 - The y-coordinate of the gradient's end point. * @param options.colorStops - The color stops along the gradient pattern. * @todo This implementation is currently using the Canvas API (slow). It will be converted to a WebGL shader. - * @todo This implementation causes a batch renderer flush. This will be optimized in a future release. */ static createLinearGradient( - renderer: Renderer, - renderTexture: RenderTexture, + renderer: Renderer, + renderTexture: Texture, options: { - x0: number, - y0: number, - x1: number, - y1: number, - colorStops: ColorStop[] - } - ): RenderTexture + x0: number; + y0: number; + x1: number; + y1: number; + colorStops: ColorStop[]; + }, + ): Texture { const { x0, y0, x1, y1, colorStops } = options; @@ -76,30 +71,24 @@ export class GradientFactory const gradient = context.createLinearGradient(x0, y0, x1, y1); - colorStops.forEach((stop) => { + colorStops.forEach((stop) => + { gradient.addColorStop(stop.offset, cssColor(stop.color)); }); context.fillStyle = gradient; context.fillRect(0, 0, renderTexture.width, renderTexture.height); - // Store the current render-texture binding. - const renderTarget = renderer.renderTexture.current; - const sourceFrame = tempSourceFrame.copyFrom(renderer.renderTexture.sourceFrame); - const destinationFrame = tempDestinationFrame.copyFrom(renderer.renderTexture.destinationFrame); - - const renderSprite = new Sprite(Texture.from(canvas)); + const renderTarget = renderer.renderTarget.getRenderTarget(canvas); - renderer.batch.flush(); - - renderer.renderTexture.bind(renderTexture); - renderSprite.render(renderer); - - renderer.batch.flush(); - renderer.renderTexture.bind(renderTarget, sourceFrame, destinationFrame); - - // Clean up temporary sprite and texture - renderSprite.destroy({texture: true, baseTexture: true}) + renderer.renderTarget.copyToTexture( + renderTarget, + renderTexture, + { x: 0, y: 0 }, + { width: renderTexture.width, height: renderTexture.height }, + { x: renderTexture.frame.x, y: renderTexture.frame.y } + ); + renderTarget.destroy(); return renderTexture; } @@ -107,10 +96,9 @@ export class GradientFactory /** * Renders a radial-gradient into `renderTexture` that starts at the circle centered at (x0, y0) of radius r0 and * ends at the circle centered at (x1, y1) of radius r1. - * - * This method can be called inside a render cycle, and will preserve the renderer state. However, the current implementation - * causes a batch renderer flush. - * + * + * This method can be called inside a render cycle, and will preserve the renderer state. + * * @param renderer - The renderer to use for drawing the gradient. * @param renderTexture - The texture to render the gradient into. * @param options - The gradient parameters. @@ -121,21 +109,20 @@ export class GradientFactory * @param options.y1 - The y-coordinate of the ending circle's center. * @param options.colorStops - The color stops along the gradient pattern. * @todo This implementation is currently using the Canvas API (slow). It will be converted to a WebGL shader. - * @todo This implementation causes a batch renderer flush. This will be optimized in a future release. */ static createRadialGradient( - renderer: Renderer, - renderTexture: RenderTexture, + renderer: Renderer, + renderTexture: Texture, options: { - x0: number, - y0: number, - r0: number, - x1: number, - y1: number, - r1: number, - colorStops: ColorStop[] - } - ): RenderTexture + x0: number; + y0: number; + r0: number; + x1: number; + y1: number; + r1: number; + colorStops: ColorStop[]; + }, + ): Texture { const { x0, y0, r0, x1, y1, r1, colorStops } = options; @@ -148,30 +135,23 @@ export class GradientFactory const gradient = context.createRadialGradient(x0, y0, r0, x1, y1, r1); - colorStops.forEach((stop) => { + colorStops.forEach((stop) => + { gradient.addColorStop(stop.offset, cssColor(stop.color)); }); context.fillStyle = gradient; context.fillRect(0, 0, renderTexture.width, renderTexture.height); - // Store the current render-texture binding. - const renderTarget = renderer.renderTexture.current; - const sourceFrame = tempSourceFrame.copyFrom(renderer.renderTexture.sourceFrame); - const destinationFrame = tempDestinationFrame.copyFrom(renderer.renderTexture.destinationFrame); - - const renderSprite = new Sprite(Texture.from(canvas)); - - renderer.batch.flush(); - - renderer.renderTexture.bind(renderTexture); - renderSprite.render(renderer); - - renderer.batch.flush(); - renderer.renderTexture.bind(renderTarget, sourceFrame, destinationFrame); + const renderTarget = renderer.renderTarget.getRenderTarget(canvas); - // Clean up temporary sprite and texture - renderSprite.destroy({texture: true, baseTexture: true}) + renderer.renderTarget.copyToTexture( + renderTarget, + renderTexture, + { x: 0, y: 0 }, + { width: renderTexture.width, height: renderTexture.height }, + { x: renderTexture.frame.x, y: renderTexture.frame.y }); + renderTarget.destroy(); return renderTexture; } diff --git a/packages/gradients/src/index.ts b/packages/gradients/src/index.ts index b59784a0..802de4ef 100644 --- a/packages/gradients/src/index.ts +++ b/packages/gradients/src/index.ts @@ -1,3 +1,3 @@ export { GradientFactory } from './GradientFactory'; -export type { ColorStop } from './ColorStop'; \ No newline at end of file +export type { ColorStop } from './ColorStop'; diff --git a/packages/instanced-renderer/package.json b/packages/instanced-renderer/package.json index 801ffc54..43bc949f 100644 --- a/packages/instanced-renderer/package.json +++ b/packages/instanced-renderer/package.json @@ -31,7 +31,7 @@ }, "scripts": { "build": "rollup -c node_modules/@pixi-build-tools/rollup-configurator/index.js --silent", - "build:types": "echo \"Error: run tests from root\" && exit 1" + "build:types": "" }, "bugs": { "url": "https://github.com/SukantPal/pixi-essentials/issues" @@ -47,7 +47,7 @@ "@pixi/utils": "^5.1.0", "@pixi-build-tools/rollup-configurator": "^1.0.10", "tslib": "~2.0.1", - "typescript": "~4.9.5", + "typescript": "~5.3.3", "eslint": "~7.7.0", "@pixi-essentials/eslint-config": "~1.0.0", "rollup": "~2.27.0" diff --git a/packages/mixin-smart-mask/package.json b/packages/mixin-smart-mask/package.json index 6bebb17c..364bd778 100644 --- a/packages/mixin-smart-mask/package.json +++ b/packages/mixin-smart-mask/package.json @@ -49,7 +49,7 @@ "@pixi/math": "^7.0.0", "@pixi-build-tools/rollup-configurator": "^1.0.10", "tslib": "~2.0.1", - "typescript": "~4.9.5", + "typescript": "~5.3.3", "eslint": "~7.7.0", "@pixi-essentials/eslint-config": "~1.0.0", "rollup": "~2.27.0", diff --git a/packages/object-pool/package.json b/packages/object-pool/package.json index e24d4f50..0426aa86 100644 --- a/packages/object-pool/package.json +++ b/packages/object-pool/package.json @@ -49,7 +49,7 @@ "@pixi/ticker": "^7.0.0", "@pixi-build-tools/rollup-configurator": "^1.0.10", "tslib": "~2.0.1", - "typescript": "~4.9.5", + "typescript": "~5.3.3", "eslint": "~7.7.0", "@pixi-essentials/eslint-config": "~1.0.0", "rollup": "~2.27.0", diff --git a/packages/react-bindings/package.json b/packages/react-bindings/package.json index d9490d50..8f9d92c7 100644 --- a/packages/react-bindings/package.json +++ b/packages/react-bindings/package.json @@ -45,7 +45,7 @@ "@types/react": "^16.9.46", "@pixi-build-tools/rollup-configurator": "^1.0.10", "tslib": "~2.0.1", - "typescript": "~4.9.5", + "typescript": "~5.3.3", "eslint": "~7.7.0", "@pixi-essentials/eslint-config": "~1.0.0", "rollup": "~2.27.0" diff --git a/packages/shader-preprocessor/package.json b/packages/shader-preprocessor/package.json index 6b04b0b3..24959bff 100644 --- a/packages/shader-preprocessor/package.json +++ b/packages/shader-preprocessor/package.json @@ -31,7 +31,7 @@ }, "scripts": { "build": "rollup -c node_modules/@pixi-build-tools/rollup-configurator/index.js --silent", - "build:types": "echo \"Error: run tests from root\" && exit 1" + "build:types": "echo 'No typescript build required'" }, "bugs": { "url": "https://github.com/SukantPal/pixi-essentials/issues" @@ -43,7 +43,7 @@ "pixi.js": "^7.0.0", "@pixi-build-tools/rollup-configurator": "^1.0.10", "tslib": "~2.0.1", - "typescript": "~4.9.5", + "typescript": "~5.3.3", "eslint": "~7.7.0", "@pixi-essentials/eslint-config": "~1.0.0", "rollup": "~2.27.0", diff --git a/packages/svg/CHANGELOG.json b/packages/svg/CHANGELOG.json index b8ca8ceb..9487eef1 100644 --- a/packages/svg/CHANGELOG.json +++ b/packages/svg/CHANGELOG.json @@ -1,6 +1,26 @@ { "name": "@pixi-essentials/svg", "entries": [ + { + "version": "3.0.0", + "tag": "@pixi-essentials/svg_v3.0.0", + "date": "Tue, 08 Oct 2024 00:58:26 GMT", + "comments": { + "major": [ + { + "comment": "Support PixiJS 8. This version does not have compatbility with all the SVG features previously supported. CSS masks, dashed strokes, multi-contour paths have undefined behavior." + } + ], + "dependency": [ + { + "comment": "Updating dependency \"@pixi-essentials/gradients\" from `^1.0.1` to `2.0.0`" + }, + { + "comment": "Updating dependency \"@pixi-essentials/texture-allocator\" from `~2.0.1` to `3.0.0`" + } + ] + } + }, { "version": "2.0.2", "tag": "@pixi-essentials/svg_v2.0.2", diff --git a/packages/svg/CHANGELOG.md b/packages/svg/CHANGELOG.md index 8dbaa8d9..d1e991bd 100644 --- a/packages/svg/CHANGELOG.md +++ b/packages/svg/CHANGELOG.md @@ -1,6 +1,13 @@ # Change Log - @pixi-essentials/svg -This log was last generated on Sun, 05 Mar 2023 04:30:27 GMT and should not be manually modified. +This log was last generated on Tue, 08 Oct 2024 00:58:26 GMT and should not be manually modified. + +## 3.0.0 +Tue, 08 Oct 2024 00:58:26 GMT + +### Breaking changes + +- Support PixiJS 8. This version does not have compatbility with all the SVG features previously supported. CSS masks, dashed strokes, multi-contour paths have undefined behavior. ## 2.0.2 Sun, 05 Mar 2023 04:30:27 GMT diff --git a/packages/svg/api-extractor.json b/packages/svg/api-extractor.json index 35fa0cb8..0742cc9b 100644 --- a/packages/svg/api-extractor.json +++ b/packages/svg/api-extractor.json @@ -38,6 +38,12 @@ }, "ae-internal-missing-underscore": { "logLevel": "none" + }, + "ae-wrong-input-file-type": { + "logLevel": "none" + }, + "ae-forgotten-export": { + "logLevel": "none" } }, "tsdocMessageReporting": { diff --git a/packages/svg/package.json b/packages/svg/package.json index 00ec96e0..6124cccf 100644 --- a/packages/svg/package.json +++ b/packages/svg/package.json @@ -1,6 +1,6 @@ { "name": "@pixi-essentials/svg", - "version": "2.0.2", + "version": "3.0.0", "description": "Native SVG Renderer on top of PixiJS", "main": "lib/svg.js", "module": "lib/svg.es.js", @@ -8,7 +8,8 @@ "types": "./index.d.ts", "scripts": { "build": "rollup -c rollup.config.js --silent", - "build:types": "rm -rf compile && rm ./index.d.ts; tsc && api-extractor run" + "build:types": "rm -rf compile index.d.ts && tsc && api-extractor run && rm -rf compile", + "lint": "eslint --ext .ts,.js src/ test/" }, "repository": { "type": "git", @@ -35,29 +36,22 @@ "*.d.ts" ], "devDependencies": { + "pixi.js": "^8.4.0", "@pixi-essentials/eslint-config": "^1.0.0", "eslint": "^7.9.0", "rollup": "^2.28.1", "@pixi-build-tools/rollup-configurator": "^1.0.10", - "typescript": "~4.9.5", - "@microsoft/api-extractor": "~7.16.1" + "typescript": "~5.3.3", + "@microsoft/api-extractor": "~7.47.9" }, "peerDependencies": { - "@pixi/core": "^7.0.0", - "@pixi/display": "^7.0.0", - "@pixi/filter-color-matrix": "^7.0.0", - "@pixi/math": "^7.0.0", - "@pixi/graphics": "^7.0.0", - "@pixi/sprite": "^7.0.0", - "@pixi/text": "^7.0.0", - "@pixi/events": "^7.0.0" + "pixi.js": "^8.4.0" }, "dependencies": { "d-path-parser": "^1.0.0", "tinycolor2": "^1.4.1", - "@pixi-essentials/gradients": "^1.0.1", - "@pixi-essentials/cull": "^2.0.0", - "@pixi-essentials/texture-allocator": "~2.0.1", + "@pixi-essentials/gradients": "^2.0.0", + "@pixi-essentials/texture-allocator": "~3.0.0", "libtess": "~1.2.2" }, "publishConfig": { diff --git a/packages/svg/src/SVGGraphicsGeometry.ts b/packages/svg/src/SVGGraphicsGeometry.ts deleted file mode 100644 index 16cef952..00000000 --- a/packages/svg/src/SVGGraphicsGeometry.ts +++ /dev/null @@ -1,182 +0,0 @@ -import { Bounds } from '@pixi/display'; -import { GraphicsGeometry } from '@pixi/graphics'; -import { Matrix } from '@pixi/math'; -import { PATH } from './utils/Path'; -import { buildDashedLine } from './utils/buildDashedLine'; - -import type { GraphicsData } from '@pixi/graphics'; -import type { DashedLineStyle } from './style/DashedLineStyle'; -import type { Path } from './utils/Path'; -import type { Circle, Ellipse, Polygon, Rectangle, RoundedRectangle } from '@pixi/math'; - -const tmpBounds = new Bounds(); - -// @pixi/graphics should export this, ugh! -enum SHAPES { - POLY = 0, - RECT = 1, - CIRC = 2, - ELIP = 3, - RREC = 4, -} - -/** @public */ -export class SVGGraphicsGeometry extends GraphicsGeometry -{ - processLine(data: GraphicsData): void - { - // @ts-expect-error Because we are extending the Shape enum. - if (data.shape.type === PATH) - { - this.processPathLine(data); - - return; - } - - const lineStyle = data.lineStyle as DashedLineStyle; - - if (!lineStyle.dashArray) - { - super.processLine(data); - } - else - { - buildDashedLine(data, this); - } - } - - processPathLine(data: GraphicsData): void - { - const path = data.shape as unknown as Path; - const lineStyle = data.lineStyle as DashedLineStyle; - - path.contours.forEach((contour) => - { - if (contour.find((e) => isNaN(e)) !== undefined) - { - console.error('Contour has NaN, oops!'); - - return; - } - - if (lineStyle.dashArray) - { - buildDashedLine( - { - points: contour, - holes: [], - - // @ts-expect-error - shape: { points: contour, type: SHAPES.POLY }, - lineStyle, - }, - this, - ); - } - else - { - super.processLine({ - closeStroke: true, - points: contour.slice(), - holes: [], - - // @ts-expect-error - shape: { points: contour, type: SHAPES.POLY }, - lineStyle, - }); - } - }); - } - - protected calculateBounds(): void - { - const bounds = this._bounds; - const sequenceBounds = tmpBounds; - let curMatrix = Matrix.IDENTITY; - - this._bounds.clear(); - sequenceBounds.clear(); - - for (let i = 0; i < this.graphicsData.length; i++) - { - const data = this.graphicsData[i]; - const shape = data.shape; - const type = data.type; - const lineStyle = data.lineStyle; - const nextMatrix = data.matrix || Matrix.IDENTITY; - let lineWidth = 0.0; - - if (lineStyle && lineStyle.visible) - { - const alignment = lineStyle.alignment; - - lineWidth = lineStyle.width; - - if (type === SHAPES.POLY) - { - lineWidth = lineWidth * (0.5 + Math.abs(0.5 - alignment)); - } - else - { - lineWidth = lineWidth * Math.max(0, alignment); - } - } - - if (curMatrix !== nextMatrix) - { - if (!sequenceBounds.isEmpty()) - { - bounds.addBoundsMatrix(sequenceBounds, curMatrix); - sequenceBounds.clear(); - } - curMatrix = nextMatrix; - } - - if (type === SHAPES.RECT || type === SHAPES.RREC) - { - const rect = shape as Rectangle | RoundedRectangle; - - sequenceBounds.addFramePad(rect.x, rect.y, rect.x + rect.width, rect.y + rect.height, - lineWidth, lineWidth); - } - else if (type === SHAPES.CIRC) - { - const circle = shape as Circle; - - sequenceBounds.addFramePad(circle.x, circle.y, circle.x, circle.y, - circle.radius + lineWidth, circle.radius + lineWidth); - } - else if (type === SHAPES.ELIP) - { - const ellipse = shape as Ellipse; - - sequenceBounds.addFramePad(ellipse.x, ellipse.y, ellipse.x, ellipse.y, - ellipse.width + lineWidth, ellipse.height + lineWidth); - } - // @ts-expect-error Because we are extending the Shape enum. - else if (type === PATH) - { - const path = shape as any as Path; - - path.contours.forEach((contour) => - { - bounds.addVerticesMatrix(Matrix.IDENTITY, new Float32Array(contour), 0, contour.length); - }); - } - else - { - const poly = shape as Polygon; - // adding directly to the bounds - - bounds.addVerticesMatrix(curMatrix, (poly.points as any), 0, poly.points.length, lineWidth, lineWidth); - } - } - - if (!sequenceBounds.isEmpty()) - { - bounds.addBoundsMatrix(sequenceBounds, curMatrix); - } - - bounds.pad(this.boundsPadding, this.boundsPadding); - } -} diff --git a/packages/svg/src/SVGGraphicsNode.ts b/packages/svg/src/SVGGraphicsNode.ts index 410bcd58..58333641 100644 --- a/packages/svg/src/SVGGraphicsNode.ts +++ b/packages/svg/src/SVGGraphicsNode.ts @@ -1,41 +1,16 @@ -import { DashedLineStyle } from './style/DashedLineStyle'; -import { EllipticArcUtils } from './utils/EllipticArcUtils'; -import { Matrix } from '@pixi/math'; -import { LINE_CAP, LINE_JOIN } from '@pixi/graphics'; -import { GRAPHICS_CURVES, Graphics } from '@pixi/graphics'; -import { SVGGraphicsGeometry } from './SVGGraphicsGeometry'; -import { Texture } from '@pixi/core'; - +import { + Graphics, + GraphicsPath, + Matrix, + Point, +} from 'pixi.js'; + +import type { Renderer } from 'pixi.js'; import type { PaintServer } from './paint/PaintServer'; -import type { Renderer } from '@pixi/core'; import type { SVGSceneContext } from './SVGSceneContext'; -/** - * @public - * @ignore - */ -export interface ILineStyleOptions { - color?: number; - alpha?: number; - texture?: Texture; - matrix?: Matrix; - - width?: number; - alignment?: number; - native?: boolean; - cap?: LINE_CAP; - join?: LINE_JOIN; - miterLimit?: number; - - // additions - dashArray?: number[]; - dashOffset?: number; -} - const tempMatrix = new Matrix(); - -const _segmentsCount: (length: number, defaultSegments?: number) => number - = (GRAPHICS_CURVES as any)._segmentsCount.bind(GRAPHICS_CURVES); +const tempPoint = new Point(); /** * This node can be used to directly embed the following elements: @@ -51,72 +26,23 @@ const _segmentsCount: (length: number, defaultSegments?: number) => number * * It also provides an implementation for dashed stroking, by adding the `dashArray` and `dashOffset` properties * to `LineStyle`. - * + * * @public */ export class SVGGraphicsNode extends Graphics { paintServers: PaintServer[]; - protected context: SVGSceneContext; + protected _sceneContext: SVGSceneContext; constructor(context: SVGSceneContext) { super(); - this.context = context; - - (this as any)._geometry = new SVGGraphicsGeometry(); - (this as any)._geometry.refCount++; - - this._lineStyle = new DashedLineStyle(); - + this._sceneContext = context; this.paintServers = []; } - public lineTextureStyle(options: ILineStyleOptions): this - { - // Apply defaults - options = Object.assign({ - width: 0, - texture: Texture.WHITE, - color: (options && options.texture) ? 0xFFFFFF : 0x0, - alpha: 1, - matrix: null, - alignment: 0.5, - native: false, - cap: LINE_CAP.BUTT, - join: LINE_JOIN.MITER, - miterLimit: 10, - dashArray: null, - dashOffset: 0, - }, options); - - if (this.currentPath) - { - this.startPoly(); - } - - const visible = options.width > 0 && options.alpha > 0; - - if (!visible) - { - this._lineStyle.reset(); - } - else - { - if (options.matrix) - { - options.matrix = options.matrix.clone(); - options.matrix.invert(); - } - - Object.assign(this._lineStyle, { visible }, options); - } - - return this; - } - /** * Draws an elliptical arc. * @@ -141,9 +67,9 @@ export class SVGGraphicsNode extends Graphics anticlockwise = false): this { const sweepAngle = endAngle - startAngle; - const n = GRAPHICS_CURVES.adaptive - ? _segmentsCount(EllipticArcUtils.calculateArcLength(rx, ry, startAngle, endAngle - startAngle)) * 4 - : 20; + + // Choose a number of segments such that the maximum absolute deviation from the circle is approximately 0.029 + const n = (window.devicePixelRatio || 1) * Math.ceil(2.3 * Math.sqrt(rx + ry)); const delta = (anticlockwise ? -1 : 1) * Math.abs(sweepAngle) / (n - 1); tempMatrix.identity() @@ -161,11 +87,11 @@ export class SVGGraphicsNode extends Graphics if (i === 0) { - this._initCurve(x, y); + this.moveTo(x, y); continue; } - this.currentPath.points.push(x, y); + this.lineTo(x, y); } return this; @@ -204,9 +130,15 @@ export class SVGGraphicsNode extends Graphics } // See https://www.w3.org/TR/SVG2/implnote.html#ArcImplementationNotes - const points = this.currentPath.points; - const startX = points[points.length - 2]; - const startY = points[points.length - 1]; + /* eslint-disable dot-notation */ + const activePath = this.context['_activePath'] as GraphicsPath; + + activePath.shapePath['_ensurePoly'](); + activePath.getLastPoint(tempPoint); + /* eslint-enable dot-notation */ + + const startX = tempPoint.x; + const startY = tempPoint.y; const midX = (startX + endX) / 2; const midY = (startY + endY) / 2; @@ -437,6 +369,6 @@ export class SVGGraphicsNode extends Graphics paintServers[i].resolvePaint(renderer); } - super.render(renderer); + // TODO: Fix rendering } } diff --git a/packages/svg/src/SVGImageNode.ts b/packages/svg/src/SVGImageNode.ts index e77081f7..0674f10c 100644 --- a/packages/svg/src/SVGImageNode.ts +++ b/packages/svg/src/SVGImageNode.ts @@ -1,12 +1,11 @@ -import { BaseImageResource, Texture } from '@pixi/core'; -import { Matrix } from '@pixi/math'; +import { ImageSource, Matrix, Texture } from 'pixi.js'; import { SVGGraphicsNode } from './SVGGraphicsNode'; const tempMatrix = new Matrix(); /** * Draws SVG <image /> elements. - * + * * @public */ export class SVGImageNode extends SVGGraphicsNode @@ -20,7 +19,7 @@ export class SVGImageNode extends SVGGraphicsNode /** * The Canvas 2D context for `this._canvas`. */ - protected _context: CanvasRenderingContext2D; + protected _canvasContext: CanvasRenderingContext2D; /** * A texture backed by `this._canvas`. @@ -63,7 +62,7 @@ export class SVGImageNode extends SVGGraphicsNode /* eslint-disable-next-line no-undef */ const baseURL = globalThis?.location.href; const imageURL = element.getAttribute('href') || element.getAttribute('xlink:href'); - const imageOrigin = new URL(imageURL).origin; + const imageOrigin = new URL(imageURL, document.baseURI).origin; let imageElement: HTMLImageElement | SVGImageElement = element; if (imageOrigin && imageOrigin !== baseURL) @@ -79,15 +78,12 @@ export class SVGImageNode extends SVGGraphicsNode this.drawTexture(imageElement); }; - // Generate the quad geometry - this.beginTextureFill({ + this.rect(x, y, width, height); + this.fill({ texture: this._texture, alpha: opacity, - matrix: new Matrix() - .scale(1 / sx, 1 / sy), + matrix: new Matrix().scale(1 / sx, 1 / sy).translate(x, y), }); - this.drawRect(x, y, width, height); - this.endFill(); } /** @@ -102,10 +98,10 @@ export class SVGImageNode extends SVGGraphicsNode // If the texture already exists, nothing much to do. if (this._texture) { - if (this._texture.width <= this.context.atlas.maxWidth - && this._texture.height <= this.context.atlas.maxHeight) + if (this._texture.width <= this._sceneContext.atlas.maxWidth + && this._texture.height <= this._sceneContext.atlas.maxHeight) { - this.context.atlas.free(this._texture); + this._sceneContext.atlas.free(this._texture); } else { @@ -115,12 +111,12 @@ export class SVGImageNode extends SVGGraphicsNode } this._texture = null; - this._texture = this.context.atlas.allocate(width, height); + this._texture = this._sceneContext.atlas.allocate(width, height); if (this._texture) { - this._canvas = (this._texture.baseTexture.resource as BaseImageResource).source as HTMLCanvasElement; - this._context = this._canvas.getContext('2d'); + this._canvas = (this._texture.source as ImageSource).resource as HTMLCanvasElement; + this._canvasContext = this._canvas.getContext('2d'); } else // Allocation fails if the texture is too large. If so, create a standalone texture. { @@ -129,7 +125,7 @@ export class SVGImageNode extends SVGGraphicsNode this._canvas.width = width; this._canvas.height = height; - this._context = this._canvas.getContext('2d'); + this._canvasContext = this._canvas.getContext('2d'); this._texture = Texture.from(this._canvas); } } @@ -143,14 +139,14 @@ export class SVGImageNode extends SVGGraphicsNode { const destinationFrame = this._texture.frame; - this._context.clearRect( + this._canvasContext.clearRect( destinationFrame.x, destinationFrame.y, destinationFrame.width, destinationFrame.height, ); - this._context.drawImage( + this._canvasContext.drawImage( image, destinationFrame.x, destinationFrame.y, @@ -159,5 +155,6 @@ export class SVGImageNode extends SVGGraphicsNode ); this._texture.update(); + this._texture.source.update(); } } diff --git a/packages/svg/src/SVGPathNode.ts b/packages/svg/src/SVGPathNode.ts index d52031c4..666ac81b 100644 --- a/packages/svg/src/SVGPathNode.ts +++ b/packages/svg/src/SVGPathNode.ts @@ -1,79 +1,16 @@ -import { FILL_RULE, Path, PATH } from './utils/Path'; -import { SVGGraphicsNode } from './SVGGraphicsNode'; -import { buildPath } from './utils/buildPath'; -import { graphicsUtils } from '@pixi/graphics'; import dPathParser from 'd-path-parser'; +import { GraphicsPath, Point } from 'pixi.js'; +import { SVGGraphicsNode } from './SVGGraphicsNode'; -graphicsUtils.FILL_COMMANDS[PATH] = buildPath; +const tempPoint = new Point(); /** * Draws SVG <path /> elements. - * + * * @public */ export class SVGPathNode extends SVGGraphicsNode { - private currentPath2: Path; - - private startPath(): void - { - if (this.currentPath2) - { - const pts = this.currentPath2.points; - - if (pts.length > 0) - { - this.currentPath2.closeContour(); - } - } - else - { - this.currentPath2 = new Path(); - } - } - - private finishPath(): void - { - if (this.currentPath2) - { - this.currentPath2.closeContour(); - } - } - - // @ts-expect-error - get currentPath(): any - { - return this.currentPath2; - } - set currentPath(nothing: any) - { - if (nothing) - { - throw new Error('currentPath cannot be set'); - } - // readonly - } - - closePath(): any - { - this.currentPath2.points.push(this.currentPath2.points[0], this.currentPath2.points[1]) - this.finishPath(); - - return this; - } - - checkPath(): void - { - if (this.currentPath2.points.find((e) => isNaN(e)) !== undefined) - { - throw new Error('NaN is bad'); - } - } - - // Redirect moveTo, lineTo, ... onto paths!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! :P - startPoly = this.startPath; - finishPoly = this.finishPath; - /** * Embeds the `SVGPathElement` into this node. * @@ -137,8 +74,12 @@ export class SVGPathNode extends SVGGraphicsNode } case 'z': case 'Z': { - x = this.currentPath2?.points[0] || 0; - y = this.currentPath2?.points[1] || 0; + // eslint-disable-next-line dot-notation + const activePath = this.context['_activePath'] as GraphicsPath; + + activePath.getLastPoint(tempPoint); + x = tempPoint.x; + y = tempPoint.y; this.closePath(); break; } @@ -201,7 +142,7 @@ export class SVGPathNode extends SVGGraphicsNode cp1.y = (2 * y) - lastCp2.y; } - const cp2 = { x: command.cp.x , y: command.cp.y }; + const cp2 = { x: command.cp.x, y: command.cp.y }; if (command.relative) { @@ -328,13 +269,6 @@ export class SVGPathNode extends SVGGraphicsNode } } - if (this.currentPath2) - { - this.currentPath2.fillRule = element.getAttribute('fill-rule') as FILL_RULE || this.currentPath2.fillRule; - this.drawShape(this.currentPath2 as any); - this.currentPath2 = null; - } - return this; } } diff --git a/packages/svg/src/SVGScene.ts b/packages/svg/src/SVGScene.ts index 2b4e6100..7d6e27fb 100644 --- a/packages/svg/src/SVGScene.ts +++ b/packages/svg/src/SVGScene.ts @@ -1,27 +1,23 @@ -import { CanvasTextureAllocator } from '@pixi-essentials/texture-allocator'; -import { Cull } from '@pixi-essentials/cull'; -import { DisplayObject, Container } from '@pixi/display'; -import { InheritedPaintProvider } from './paint/InheritedPaintProvider'; -import { MaskServer } from './mask/MaskServer'; -import { LINE_CAP, LINE_JOIN, GraphicsData } from '@pixi/graphics'; -import * as Loader from './loader'; -import { Matrix, Rectangle } from '@pixi/math'; +import { Bounds, Container, Matrix, Rectangle, Renderer, RenderTexture, Texture } from 'pixi.js'; import { NODE_TRANSFORM_DIRTY, TRANSFORM_DIRTY } from './const'; +import * as Loader from './loader'; +import { MaskServer } from './mask/MaskServer'; +import { InheritedPaintProvider } from './paint/InheritedPaintProvider'; import { PaintProvider } from './paint/PaintProvider'; import { PaintServer } from './paint/PaintServer'; -import { RenderTexture, Texture } from '@pixi/core'; import { SVGGraphicsNode } from './SVGGraphicsNode'; import { SVGImageNode } from './SVGImageNode'; import { SVGPathNode } from './SVGPathNode'; import { SVGTextNode } from './SVGTextNode'; import { SVGUseNode } from './SVGUseNode'; +import { CanvasTextureAllocator } from '@pixi-essentials/texture-allocator'; +import type { LineCap, LineJoin } from 'pixi.js'; import type { Paint } from './paint/Paint'; import type { SVGSceneContext } from './SVGSceneContext'; -import type { Renderer } from '@pixi/core'; const tempMatrix = new Matrix(); -const tempRect = new Rectangle(); +const tempBounds = new Bounds(); /** * {@link SVGScene} can be used to build an interactive viewer for scalable vector graphics images. You must specify the size @@ -36,18 +32,13 @@ const tempRect = new Rectangle(); * * @public */ -export class SVGScene extends DisplayObject +export class SVGScene extends Container { /** * The SVG image content being rendered by the scene. */ public content: SVGSVGElement; - /** - * The root display object of the scene. - */ - public root: Container; - /** * Display objects that don't render to the screen, but are required to update before the rendering * nodes, e.g. mask sprites. @@ -69,11 +60,6 @@ export class SVGScene extends DisplayObject */ protected _height: number; - /** - * This is used to cull the SVG scene graph before rendering. - */ - protected _cull: Cull; - /** * Maps content elements to their paint. These paints do not inherit from their parent element. You must * compose an {@link InheritedPaintProvider} manually. @@ -86,6 +72,8 @@ export class SVGScene extends DisplayObject */ private _elementToMask: Map; + private _elementToRenderNode: Map; + /** * Flags whether any transform is dirty in the SVG scene graph. */ @@ -99,7 +87,9 @@ export class SVGScene extends DisplayObject */ constructor(content: SVGSVGElement, context?: Partial) { - super(); + super({ + isRenderGroup: true, + }); this.content = content; @@ -107,15 +97,19 @@ export class SVGScene extends DisplayObject this._width = content.viewBox.baseVal.width; this._height = content.viewBox.baseVal.height; - this._cull = new Cull({ recursive: true, toggle: 'renderable' }); this._elementToPaint = new Map(); this._elementToMask = new Map(); + this._elementToRenderNode = new Map(); this._transformDirty = true; this.renderServers = new Container(); + this.boundsArea = new Rectangle(0, 0, this.content.viewBox.baseVal.width, this.content.viewBox.baseVal.height); + if (!context || !context.disableRootPopulation) + { this.populateScene(); + } } initContext(context?: Partial): void @@ -129,96 +123,22 @@ export class SVGScene extends DisplayObject } /** - * Calculates the bounds of this scene, which is defined by the set `width` and `height`. The contents - * of this scene are scaled to fit these bounds, and don't affect them whatsoever. + * Draw the paints required to render the elements in this SVG scene. If not called, gradients + * and special effects may not render. * - * @override - */ - calculateBounds(): void - { - this._bounds.clear(); - this._bounds.addFrameMatrix( - this.worldTransform, - 0, - 0, - this.content.viewBox.baseVal.width, - this.content.viewBox.baseVal.height, - ); - } - - removeChild() - { - // Just to implement DisplayObject - } - - /** - * @override - */ - destroy(): void { - this.root.destroy(true); - - super.destroy(); - } - - /** - * @override + * @param renderer */ - render(renderer: Renderer): void + drawPaints(renderer: Renderer): void { - if (!this.visible || !this.renderable) + for (const node of this._elementToRenderNode.values()) { - return; - } - - // Update render-server objects - this.renderServers.render(renderer); - - // Cull the SVG scene graph - this._cull.cull(renderer.renderTexture.sourceFrame, true); + const paintServers = ((node as any)?.paintServers ?? []) as PaintServer[]; - // Render the SVG scene graph - this.root.render(renderer); - - // Uncull the SVG scene graph. This ensures the scene graph is fully 'renderable' - // outside of a render cycle. - this._cull.uncull(); - } - - /** - * @override - */ - updateTransform(): void - { - super.updateTransform(); - - this.root.alpha = this.worldAlpha; - - const worldTransform = this.worldTransform; - const rootTransform = this.root.transform.worldTransform; - - // Don't update transforms if they didn't change across frames. This is because the SVG scene graph is static. - if (rootTransform.a === worldTransform.a - && rootTransform.b === worldTransform.b - && rootTransform.c === worldTransform.c - && rootTransform.d === worldTransform.d - && rootTransform.tx === worldTransform.tx - && rootTransform.ty === worldTransform.ty - && (rootTransform as any)._worldID !== 0 - && !this._transformDirty) - { - return; + for (const paintServer of paintServers) + { + paintServer.resolvePaint(renderer); + } } - - this.root.enableTempParent(); - this.root.transform.setFromMatrix(this.worldTransform); - this.root.updateTransform(); - this.root.disableTempParent(null); - - // Calculate bounds in the SVG scene graph. This ensures they are updated whenever the transform changes. - this.root.calculateBounds(); - - // Prevent redundant recalculations. - this._transformDirty = false; } /** @@ -228,7 +148,7 @@ export class SVGScene extends DisplayObject */ protected createNode(element: SVGElement): Container { - let renderNode = null; + let renderNode: Container; switch (element.nodeName.toLowerCase()) { @@ -262,6 +182,8 @@ export class SVGScene extends DisplayObject break; } + this._elementToRenderNode.set(element, renderNode); + return renderNode; } @@ -295,7 +217,7 @@ export class SVGScene extends DisplayObject const renderTexture = RenderTexture.create({ width: 128, height: 128, - }); + }) as RenderTexture; return new PaintServer(paintServer, renderTexture); } @@ -321,7 +243,7 @@ export class SVGScene extends DisplayObject const maskTexture = RenderTexture.create({ width: localBounds.width, height: localBounds.height, - }); + }) as RenderTexture; const maskSprite = new MaskServer(maskTexture); @@ -433,8 +355,8 @@ export class SVGScene extends DisplayObject basePaint?: Paint; } = {}, ): { - paint: Paint; - } + paint: Paint; + } { const { basePaint, @@ -446,8 +368,8 @@ export class SVGScene extends DisplayObject fill, opacity, stroke, - strokeDashArray, - strokeDashOffset, + // strokeDashArray, + // strokeDashOffset, strokeLineCap, strokeLineJoin, strokeMiterLimit, @@ -458,71 +380,6 @@ export class SVGScene extends DisplayObject const transform = element instanceof SVGGraphicsElement ? element.transform.baseVal.consolidate() : null; const transformMatrix = transform ? transform.matrix : tempMatrix.identity(); - if (node instanceof SVGGraphicsNode) - { - if (fill === 'none') - { - node.beginFill(0, 0); - } - else if (typeof fill === 'number') - { - node.beginFill(fill, opacity === null ? 1 : opacity); - } - else if (!fill) - { - node.beginFill(0); - } - else - { - const ref = this.parseReference(fill); - const paintElement = this.content.querySelector(ref); - - if (paintElement && paintElement instanceof SVGGradientElement) - { - const paintServer = this.createPaintServer(paintElement); - const paintTexture = paintServer.paintTexture; - - node.paintServers.push(paintServer); - node.beginTextureFill({ - texture: paintTexture, - alpha: opacity === null ? 1 : opacity, - matrix: new Matrix(), - }); - } - } - - let strokeTexture: Texture; - - if (typeof stroke === 'string' && stroke.startsWith('url')) - { - const ref = this.parseReference(stroke); - const paintElement = this.content.querySelector(ref); - - if (paintElement && paintElement instanceof SVGGradientElement) - { - const paintServer = this.createPaintServer(paintElement); - const paintTexture = paintServer.paintTexture; - - node.paintServers.push(paintServer); - strokeTexture = paintTexture; - } - } - - node.lineTextureStyle({ - /* eslint-disable no-nested-ternary */ - color: stroke === null ? 0 : (typeof stroke === 'number' ? stroke : 0xffffff), - cap: strokeLineCap === null ? LINE_CAP.SQUARE : strokeLineCap as unknown as LINE_CAP, - dashArray: strokeDashArray, - dashOffset: strokeDashOffset === null ? strokeDashOffset : 0, - join: strokeLineJoin === null ? LINE_JOIN.MITER : strokeLineJoin as unknown as LINE_JOIN, - matrix: new Matrix(), - miterLimit: strokeMiterLimit === null ? 150 : strokeMiterLimit, - texture: strokeTexture || Texture.WHITE, - width: strokeWidth === null ? (typeof stroke === 'number' ? 1 : 0) : strokeWidth, - /* eslint-enable no-nested-ternary */ - }); - } - switch (element.nodeName.toLowerCase()) { case 'circle': @@ -567,7 +424,7 @@ export class SVGScene extends DisplayObject }) as SVGGraphicsNode; (node as SVGUseNode).ref = contentNode; - contentNode.transform.setFromMatrix(Matrix.IDENTITY);// clear transform + contentNode.setFromMatrix(Matrix.IDENTITY);// clear transform } else if (!this._context.disableHrefSVGLoading) { @@ -579,7 +436,7 @@ export class SVGScene extends DisplayObject ...this._context, disableRootPopulation: true, }), - svgDocument.querySelector('#' + useTargetURL.split('#')[1]) + svgDocument.querySelector(`#${useTargetURL.split('#')[1]}`) ] as [SVGScene, SVGElement]) .then(([shellScene, useTarget]) => { @@ -593,11 +450,12 @@ export class SVGScene extends DisplayObject }) as SVGGraphicsNode; (node as SVGUseNode).ref = contentNode; - contentNode.transform.setFromMatrix(Matrix.IDENTITY);// clear transform + contentNode.setFromMatrix(Matrix.IDENTITY);// clear transform this._transformDirty = true; - shellScene.on(TRANSFORM_DIRTY, () => { + shellScene.on(TRANSFORM_DIRTY, () => + { this._transformDirty = true; }); }); @@ -605,7 +463,81 @@ export class SVGScene extends DisplayObject } } - node.transform.setFromMatrix(tempMatrix.set( + if (node instanceof SVGGraphicsNode && !(node instanceof SVGImageNode)) + { + if (fill === 'none') + { + node.fill({ + color: 0, + alpha: 0, + }); + } + else if (typeof fill === 'number') + { + node.fill({ + color: fill, + alpha: opacity === null ? 1 : opacity, + }); + } + else if (!fill) + { + node.fill({ + color: 0, + }); + } + else + { + const ref = this.parseReference(fill); + const paintElement = this.content.querySelector(ref); + + if (paintElement && paintElement instanceof SVGGradientElement) + { + const paintServer = this.createPaintServer(paintElement); + const paintTexture = paintServer.paintTexture; + + node.paintServers.push(paintServer); + node.fill({ + texture: paintTexture, + alpha: opacity === null ? 1 : opacity, + matrix: new Matrix(), + }); + } + } + + let strokeTexture: Texture; + + if (typeof stroke === 'string' && stroke.startsWith('url')) + { + const ref = this.parseReference(stroke); + const paintElement = this.content.querySelector(ref); + + if (paintElement && paintElement instanceof SVGGradientElement) + { + const paintServer = this.createPaintServer(paintElement); + const paintTexture = paintServer.paintTexture; + + node.paintServers.push(paintServer); + strokeTexture = paintTexture; + } + } + + node.stroke({ + /* eslint-disable no-nested-ternary */ + color: stroke === null ? 0 : (typeof stroke === 'number' ? stroke : 0xffffff), + cap: strokeLineCap === null ? 'square' : strokeLineCap as unknown as LineCap, + // TODO: Support dashed strokes. + // dashArray: strokeDashArray, + // dashOffset: strokeDashOffset === null ? strokeDashOffset : 0, + join: strokeLineJoin === null ? 'miter' : strokeLineJoin as unknown as LineJoin, + matrix: new Matrix(), + miterLimit: strokeMiterLimit === null ? 150 : strokeMiterLimit, + texture: strokeTexture || Texture.WHITE, + width: strokeWidth === null ? (typeof stroke === 'number' ? 1 : 0) : strokeWidth, + /* eslint-enable no-nested-ternary */ + }); + } + + node.setFromMatrix(tempMatrix.set( transformMatrix.a, transformMatrix.b, transformMatrix.c, @@ -631,7 +563,7 @@ export class SVGScene extends DisplayObject const maskSprite = maskServer.createMask(node); this.renderServers.addChild(maskServer); - node.mask = maskSprite; + node.mask = maskSprite as Container; node.addChild(maskSprite); } } @@ -689,63 +621,51 @@ export class SVGScene extends DisplayObject if (node instanceof SVGGraphicsNode) { - const bbox = node.getLocalBounds(tempRect); + tempBounds.clear(); + + const bbox = node.getLocalBounds(tempBounds); const paintServers = node.paintServers; const { x, y, width: bwidth, height: bheight } = bbox; node.paintServers.forEach((paintServer) => { - paintServer.resolvePaintDimensions(bbox); + paintServer.resolvePaintDimensions(bbox.rectangle); }); - const geometry = node.geometry; - const graphicsData: GraphicsData[] = (geometry as any).graphicsData; + const instructions = node.context.instructions; - if (graphicsData) + for (const instruction of instructions) { - graphicsData.forEach((data) => + if (instruction.action !== 'fill' && instruction.action !== 'stroke') { - const fillStyle = data.fillStyle; - const lineStyle = data.lineStyle; - - if (fillStyle.texture && paintServers.find((server) => server.paintTexture === fillStyle.texture)) - { - const width = fillStyle.texture.width; - const height = fillStyle.texture.height; - - data.fillStyle.matrix - .invert() - .scale(bwidth / width, bheight / height) - .invert(); - } - if (fillStyle.matrix) - { - fillStyle.matrix - .invert() - .translate(x, y) - .invert(); - } - - if (lineStyle.texture && paintServers.find((server) => server.paintTexture === lineStyle.texture)) - { - const width = lineStyle.texture.width; - const height = lineStyle.texture.height; - - data.lineStyle.matrix - .invert() - .scale(bwidth / width, bheight / height) - .invert(); - } - if (lineStyle.matrix) - { - lineStyle.matrix - .invert() - .translate(x, y) - .invert(); - } - }); + continue; + } + if (!instruction.data.style.matrix) + { + instruction.data.style.matrix = new Matrix(); + } + + tempMatrix.copyFrom(instruction.data.style.matrix); + instruction.data.style.matrix.identity(); - geometry.updateBatches(); + const texture = instruction.data.style.texture; + + if (paintServers.find((server) => server.paintTexture === texture)) + { + const width = texture.width; + const height = texture.height; + + instruction.data.style.matrix.scale(bwidth / width, bheight / height); + } + + instruction.data.style.matrix.translate(x, y); + instruction.data.style.matrix + .invert() + .translate(texture.frame.x, texture.frame.y) + .scale(1 / texture.source.width, 1 / texture.source.height); + + // eslint-disable-next-line dot-notation + node.context['onUpdate'](); } } @@ -763,15 +683,7 @@ export class SVGScene extends DisplayObject */ protected populateScene(): void { - if (this.root) - { - this._cull.remove(this.root); - } - - const root = this.populateSceneRecursive(this.content); - - this.root = root; - this._cull.add(this.root); + this.addChild(this.populateSceneRecursive(this.content)); } /** @@ -822,7 +734,8 @@ export class SVGScene extends DisplayObject * @param context * @returns */ - static async from(url: string, context?: SVGSceneContext): Promise { + static async from(url: string, context?: SVGSceneContext): Promise + { return new SVGScene(await Loader._load(url), context); } } diff --git a/packages/svg/src/SVGSceneContext.ts b/packages/svg/src/SVGSceneContext.ts index f537db16..93b6eb4c 100644 --- a/packages/svg/src/SVGSceneContext.ts +++ b/packages/svg/src/SVGSceneContext.ts @@ -2,7 +2,7 @@ import type { CanvasTextureAllocator } from '@pixi-essentials/texture-allocator' /** * Options to manage the SVG scene - * + * * @public */ export interface SVGSceneContext diff --git a/packages/svg/src/SVGTextEngine.ts b/packages/svg/src/SVGTextEngine.ts index af2bcec5..a9e2981e 100644 --- a/packages/svg/src/SVGTextEngine.ts +++ b/packages/svg/src/SVGTextEngine.ts @@ -1,5 +1,4 @@ -import type { IPointData, Matrix } from '@pixi/math'; -import type { TextStyle } from '@pixi/text'; +import type { Matrix, PointData, TextStyle } from 'pixi.js'; /** * The `SVGTextEngine` interface is used to layout text content authored in SVG files. The @pixi-essentials/svg @@ -30,5 +29,5 @@ export interface SVGTextEngine * @param style - The text styling applied. * @param matrix */ - put(id: any, position: IPointData, content: string, style: Partial, matrix?: Matrix): Promise; + put(id: any, position: PointData, content: string, style: Partial, matrix?: Matrix): Promise; } diff --git a/packages/svg/src/SVGTextEngineImpl.ts b/packages/svg/src/SVGTextEngineImpl.ts index 59dfcb8e..fc7ce8b4 100644 --- a/packages/svg/src/SVGTextEngineImpl.ts +++ b/packages/svg/src/SVGTextEngineImpl.ts @@ -1,10 +1,13 @@ +import { + CanvasTextMetrics, + fontStringFromTextStyle, + Sprite, + TextStyle, + Texture, +} from 'pixi.js'; import { NODE_TRANSFORM_DIRTY } from './const'; -import { Sprite } from '@pixi/sprite'; -import { Texture } from '@pixi/core'; -import { TextMetrics, TextStyle } from '@pixi/text'; -import type { IPointData, Matrix } from '@pixi/math'; -import type { Renderer } from '@pixi/core'; +import type { Matrix, PointData } from 'pixi.js'; import type { SVGTextEngine } from './SVGTextEngine'; /** @@ -19,7 +22,7 @@ export class SVGTextEngineImpl extends Sprite implements SVGTextEngine protected canvas: HTMLCanvasElement; protected context: CanvasRenderingContext2D; protected contentList: Map; matrix?: Matrix; @@ -51,11 +54,11 @@ export class SVGTextEngineImpl extends Sprite implements SVGTextEngine async put( id: any, - position: IPointData, + position: PointData, content: string, style: Partial, matrix?: Matrix, - ): Promise + ): Promise { this.contentList.set(id, { position, @@ -64,7 +67,7 @@ export class SVGTextEngineImpl extends Sprite implements SVGTextEngine matrix, }); - const textMetrics = TextMetrics.measureText(content, new TextStyle(style), false, this.canvas); + const textMetrics = CanvasTextMetrics.measureText(content, new TextStyle(style), this.canvas, false); this.dirtyId++; @@ -81,7 +84,7 @@ export class SVGTextEngineImpl extends Sprite implements SVGTextEngine this.contentList.forEach(({ position, content, style }) => { - const textMetrics = TextMetrics.measureText(content, new TextStyle(style), false, this.canvas); + const textMetrics = CanvasTextMetrics.measureText(content, new TextStyle(style), this.canvas, false); w = Math.max(w, position.x + textMetrics.width); h = Math.max(h, position.y + textMetrics.height + textMetrics.fontProperties.descent); @@ -89,9 +92,7 @@ export class SVGTextEngineImpl extends Sprite implements SVGTextEngine const resolution = window.devicePixelRatio || 1; - this.canvas.width = w * resolution; - this.canvas.height = h * resolution; - this.texture.baseTexture.setRealSize(w, h, resolution); + this.texture.source.resize(w, h, resolution); this.texture.update(); this.context.clearRect(0, 0, w * resolution, h * resolution); @@ -100,13 +101,13 @@ export class SVGTextEngineImpl extends Sprite implements SVGTextEngine let i = 0; - for (const [_, { position, content, style }] of this.contentList) + for (const [, { position, content, style }] of this.contentList) { - const textMetrics = TextMetrics.measureText(content, new TextStyle(style), false, this.canvas); + const textMetrics = CanvasTextMetrics.measureText(content, new TextStyle(style), this.canvas, false); const textStyle = new TextStyle(style); this.context.fillStyle = typeof textStyle.fill === 'string' ? textStyle.fill : 'black'; - this.context.font = textStyle.toFontString(); + this.context.font = fontStringFromTextStyle(textStyle); this.context.fillText(content, position.x, position.y + textMetrics.height); @@ -122,16 +123,13 @@ export class SVGTextEngineImpl extends Sprite implements SVGTextEngine // Ensure the SVG scene updates its bounds after the text is rendered. this.emit(NODE_TRANSFORM_DIRTY); - } + } - render(renderer: Renderer): void + override onRender = (): void => { if (this.updateId !== this.dirtyId) { this.updateText(); - this.updateTransform(); } - - super.render(renderer); - } + }; } diff --git a/packages/svg/src/SVGTextNode.ts b/packages/svg/src/SVGTextNode.ts index f2eb2c31..b3681af9 100644 --- a/packages/svg/src/SVGTextNode.ts +++ b/packages/svg/src/SVGTextNode.ts @@ -1,13 +1,10 @@ -import '@pixi/events'; -import { Container } from '@pixi/display'; +import { Container } from 'pixi.js'; import { NODE_TRANSFORM_DIRTY } from './const'; import { SVGTextEngineImpl } from './SVGTextEngineImpl'; import { parseMeasurement } from './utils/parseMeasurement'; -import type { DisplayObject } from '@pixi/display'; -import type { IPointData } from '@pixi/math'; +import type { PointData, TextStyle, TextStyleFontWeight } from 'pixi.js'; import type { SVGTextEngine } from './SVGTextEngine'; -import type { TextStyle, TextStyleFontWeight } from '@pixi/text'; /** * Draws SVG <text /> elements. @@ -22,17 +19,17 @@ export class SVGTextNode extends Container * * @alpha */ - static defaultEngine: { new(): SVGTextEngine & DisplayObject } = SVGTextEngineImpl; + static defaultEngine: { new(): SVGTextEngine & Container } = SVGTextEngineImpl; /** * An instance of a SVG text engine used to layout and render text. */ - protected engine: SVGTextEngine & DisplayObject; + protected engine: SVGTextEngine & Container; /** * The current text position, where the next glyph will be placed. */ - protected currentTextPosition: IPointData; + protected currentTextPosition: PointData; constructor() { @@ -44,7 +41,8 @@ export class SVGTextNode extends Container // Listen to nodetransformdirty on the engine so bounds are updated // when the text is rendered. - this.engine.on(NODE_TRANSFORM_DIRTY, () => { + this.engine.on(NODE_TRANSFORM_DIRTY, () => + { this.emit(NODE_TRANSFORM_DIRTY); }); } diff --git a/packages/svg/src/SVGUseNode.ts b/packages/svg/src/SVGUseNode.ts index a578871d..3cd999fb 100644 --- a/packages/svg/src/SVGUseNode.ts +++ b/packages/svg/src/SVGUseNode.ts @@ -1,10 +1,10 @@ -import { Container } from '@pixi/display'; +import { Container } from 'pixi.js'; import type { SVGGraphicsNode } from './SVGGraphicsNode'; /** * Container for rendering SVG <use /> elements. - * + * * @public */ export class SVGUseNode extends Container @@ -57,4 +57,4 @@ export class SVGUseNode extends Container this._ref = value; this.addChild(this._ref); } -} \ No newline at end of file +} diff --git a/packages/svg/src/index.ts b/packages/svg/src/index.ts index 67863ff6..dbf6f739 100644 --- a/packages/svg/src/index.ts +++ b/packages/svg/src/index.ts @@ -1,22 +1,17 @@ export { getLoaderCache } from './loader'; - +export * from './mask/MaskServer'; export * from './paint/InheritedPaintProvider'; export * from './paint/Paint'; export * from './paint/PaintProvider'; export * from './paint/PaintServer'; - -export * from './utils/Path'; - -export * from './SVGGraphicsGeometry'; export * from './SVGGraphicsNode'; export * from './SVGImageNode'; export * from './SVGPathNode'; export * from './SVGScene'; export * from './SVGSceneContext'; -export * from './SVGUseNode'; export * from './SVGTextEngine'; export * from './SVGTextEngineImpl'; export * from './SVGTextNode'; export * from './SVGUseNode'; - -export * from './mask/MaskServer'; \ No newline at end of file +export * from './SVGUseNode'; +export * from './utils/Path'; diff --git a/packages/svg/src/loader.ts b/packages/svg/src/loader.ts index 7d6746bd..d20ebbe4 100644 --- a/packages/svg/src/loader.ts +++ b/packages/svg/src/loader.ts @@ -6,9 +6,10 @@ const _SVG_DOCUMENT_CACHE: Map = new Map(); /** * @internal - * @ignore + * @ignore */ -export async function _load(href: string): Promise { +export async function _load(href: string): Promise +{ const url = new URL(href, document.baseURI); const id = url.host + url.pathname; let doc = _SVG_DOCUMENT_CACHE.get(id); @@ -27,18 +28,20 @@ export async function _load(href: string): Promise { /** * Get information on the internal cache of the SVG loading mechanism. - * + * * @public * @returns A view on the cache - clear() method and a size property. */ export function getLoaderCache(): { clear(): void size: number -} { +} +{ return { - clear() { + clear() + { _SVG_DOCUMENT_CACHE.clear(); }, size: _SVG_DOCUMENT_CACHE.size, - } -} \ No newline at end of file + }; +} diff --git a/packages/svg/src/mask/L2RFilter.ts b/packages/svg/src/mask/L2RFilter.ts index 0a4df14f..39fb1a81 100644 --- a/packages/svg/src/mask/L2RFilter.ts +++ b/packages/svg/src/mask/L2RFilter.ts @@ -1,4 +1,4 @@ -import { ColorMatrixFilter } from '@pixi/filter-color-matrix'; +import { ColorMatrixFilter } from 'pixi.js'; /** * The luminance-to-red filter stores the luminance of the RGB components into the alpha channel diff --git a/packages/svg/src/mask/MaskServer.ts b/packages/svg/src/mask/MaskServer.ts index d3055cfc..5ea7d1e0 100644 --- a/packages/svg/src/mask/MaskServer.ts +++ b/packages/svg/src/mask/MaskServer.ts @@ -1,12 +1,10 @@ -import { Rectangle } from '@pixi/math'; -import { Sprite } from '@pixi/sprite'; -import { l2rFilter } from './L2RFilter'; +import { Sprite } from 'pixi.js'; -import type { Container, DisplayObject } from '@pixi/display'; -import type { Renderer, RenderTexture } from '@pixi/core'; +// import { l2rFilter } from './L2RFilter'; +import type { Container, Renderer, RenderTexture } from 'pixi.js'; -const tempSourceFrame = new Rectangle(); -const tempDestinationFrame = new Rectangle(); +// const tempSourceFrame = new Rectangle(); +// const tempDestinationFrame = new Rectangle(); /** * A sprite that does not render anything. It can be used as a mask whose bounds can be updated by adding it @@ -33,6 +31,8 @@ export class MaskSprite extends Sprite * to alpha = 1. The rest are filtered to an alpha such that 0 < alpha < 1.). This is in compliance * with [CSS Masking Module Level 1](https://www.w3.org/TR/css-masking-1/#MaskElement). * + * **Note: This functionality is disabled in PixiJS 8's renderer** + * * @public * @ignore */ @@ -63,46 +63,46 @@ export class MaskServer extends Sprite /** * @override */ - render(renderer: Renderer): void - { - if (this.dirtyId !== this.updateId) - { - // Update texture resolution, without changing screen-space resolution - this.texture.baseTexture.setSize(this.texture.width, this.texture.height, renderer.resolution); - - renderer.batch.flush(); - - const renderTarget = renderer.renderTexture.current; - const sourceFrame = tempSourceFrame.copyFrom(renderer.renderTexture.sourceFrame); - const destinationFrame = tempDestinationFrame.copyFrom(renderer.renderTexture.destinationFrame); - - const localBounds = (this as Sprite).getLocalBounds(null); - const children: DisplayObject[] = this.children; - - renderer.renderTexture.bind(this.texture as RenderTexture, localBounds); - renderer.renderTexture.clear(); - renderer.filter.push({ filterArea: localBounds, getBounds: () => localBounds }, [l2rFilter]); - - for (let i = 0, j = children.length; i < j; i++) - { - const child = children[i]; - - child.enableTempParent(); - child.updateTransform(); - (children[i] as Container).render(renderer); - child.disableTempParent(this); - } - - renderer.batch.flush(); - renderer.filter.pop(); - - renderer.renderTexture.bind(renderTarget, sourceFrame, destinationFrame); - - this.updateId = this.dirtyId; - - this.getBounds(); - } - } + // render(renderer: Renderer): void + // { + // if (this.dirtyId !== this.updateId) + // { + // // Update texture resolution, without changing screen-space resolution + // this.texture.baseTexture.setSize(this.texture.width, this.texture.height, renderer.resolution); + // + // renderer.batch.flush(); + // + // const renderTarget = renderer.renderTexture.current; + // const sourceFrame = tempSourceFrame.copyFrom(renderer.renderTexture.sourceFrame); + // const destinationFrame = tempDestinationFrame.copyFrom(renderer.renderTexture.destinationFrame); + // + // const localBounds = (this as Sprite).getLocalBounds(null); + // const children: ContainerChild[] = this.children; + // + // renderer.renderTexture.bind(this.texture as RenderTexture, localBounds); + // renderer.renderTexture.clear(); + // renderer.filter.push({ filterArea: localBounds, getBounds: () => localBounds }, [l2rFilter]); + // + // for (let i = 0, j = children.length; i < j; i++) + // { + // const child = children[i]; + // + // child.enableTempParent(); + // child.updateTransform(); + // (children[i] as Container).render(renderer); + // child.disableTempParent(this); + // } + // + // renderer.batch.flush(); + // renderer.filter.pop(); + // + // renderer.renderTexture.bind(renderTarget, sourceFrame, destinationFrame); + // + // this.updateId = this.dirtyId; + // + // this.getBounds(); + // } + // } /** * Create a mask that will overlay on top of the given display-object using the texture of this diff --git a/packages/svg/src/paint/InheritedPaintProvider.ts b/packages/svg/src/paint/InheritedPaintProvider.ts index 53fe63cc..9015f215 100644 --- a/packages/svg/src/paint/InheritedPaintProvider.ts +++ b/packages/svg/src/paint/InheritedPaintProvider.ts @@ -1,10 +1,10 @@ -import type { LINE_CAP, LINE_JOIN } from '@pixi/graphics'; +import type { LineCap, LineJoin } from 'pixi.js'; import type { Paint } from './Paint'; /** * Inherited paint, used for <use /> elements. The properties used on the inherited paint do not * override those on the parent. - * + * * @public */ export class InheritedPaintProvider implements Paint @@ -56,12 +56,12 @@ export class InheritedPaintProvider implements Paint ? this.provider.strokeDashOffset : this.parent.strokeDashOffset; } - get strokeLineCap(): LINE_CAP + get strokeLineCap(): LineCap { return typeof this.provider.strokeLineCap === 'string' ? this.provider.strokeLineCap : this.parent.strokeLineCap; } - get strokeLineJoin(): LINE_JOIN + get strokeLineJoin(): LineJoin { return typeof this.provider.strokeLineJoin === 'string' ? this.provider.strokeLineJoin : this.parent.strokeLineJoin; } diff --git a/packages/svg/src/paint/Paint.ts b/packages/svg/src/paint/Paint.ts index 1fee6c20..9a686b67 100644 --- a/packages/svg/src/paint/Paint.ts +++ b/packages/svg/src/paint/Paint.ts @@ -1,4 +1,4 @@ -import type { LINE_CAP, LINE_JOIN } from '@pixi/graphics'; +import type { LineCap, LineJoin } from 'pixi.js'; /** * Internal, parsed form of painting attributes. If a paint attribute was not defined, it **must** be @@ -37,12 +37,12 @@ export interface Paint /** * The line caps applied at the end of the stroke. This is not applied for closed shapes. */ - readonly strokeLineCap: LINE_CAP; + readonly strokeLineCap: LineCap; /** * The line join applied at the joint to line segments. */ - readonly strokeLineJoin: LINE_JOIN; + readonly strokeLineJoin: LineJoin; /** * The maximum miter distance. diff --git a/packages/svg/src/paint/PaintProvider.ts b/packages/svg/src/paint/PaintProvider.ts index 8d61b2df..3cfdc327 100644 --- a/packages/svg/src/paint/PaintProvider.ts +++ b/packages/svg/src/paint/PaintProvider.ts @@ -1,12 +1,12 @@ -import { LINE_CAP, LINE_JOIN } from '@pixi/graphics'; import color from 'tinycolor2'; +import type { LineCap, LineJoin } from 'pixi.js'; import type { Paint } from './Paint'; /** * Provides the `Paint` for an `SVGElement`. It will also respond to changes in the attributes of the element * (not implemented). - * + * * @public */ export class PaintProvider implements Paint @@ -18,8 +18,8 @@ export class PaintProvider implements Paint public stroke: number | string; public strokeDashArray: number[]; public strokeDashOffset: number; - public strokeLineCap: LINE_CAP; - public strokeLineJoin: LINE_JOIN; + public strokeLineCap: LineCap; + public strokeLineJoin: LineJoin; public strokeMiterLimit: number; public strokeWidth: number; @@ -51,8 +51,8 @@ export class PaintProvider implements Paint ?.split(/[, ]+/g) .map((num) => parseFloat(num.trim())); this.strokeDashOffset = strokeDashOffset && parseFloat(strokeDashOffset); - this.strokeLineCap = strokeLineCap as unknown as LINE_CAP; - this.strokeLineJoin = strokeLineJoin as unknown as LINE_JOIN; + this.strokeLineCap = strokeLineCap as unknown as LineCap; + this.strokeLineJoin = strokeLineJoin as unknown as LineJoin; this.strokeMiterLimit = strokeMiterLimit && parseFloat(strokeMiterLimit); this.strokeWidth = strokeWidth && parseFloat(strokeWidth); } diff --git a/packages/svg/src/paint/PaintServer.ts b/packages/svg/src/paint/PaintServer.ts index 6b83b9b5..f640263d 100644 --- a/packages/svg/src/paint/PaintServer.ts +++ b/packages/svg/src/paint/PaintServer.ts @@ -1,9 +1,8 @@ -import { GradientFactory } from '@pixi-essentials/gradients'; import { PaintProvider } from './PaintProvider'; +import { GradientFactory } from '@pixi-essentials/gradients'; -import type { Renderer, RenderTexture } from '@pixi/core'; +import type { Rectangle, Renderer, RenderTexture, Texture } from 'pixi.js'; import type { ColorStop } from '@pixi-essentials/gradients'; -import type { Rectangle } from '@pixi/math'; /** * Converts the linear gradient's x1, x2, y1, y2 attributes into percentage units. @@ -12,23 +11,38 @@ import type { Rectangle } from '@pixi/math'; */ function convertLinearGradientAxis(linearGradient: SVGLinearGradientElement): void { - linearGradient.x1.baseVal.convertToSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PERCENTAGE); - linearGradient.y1.baseVal.convertToSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PERCENTAGE); - linearGradient.x2.baseVal.convertToSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PERCENTAGE); - linearGradient.y2.baseVal.convertToSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PERCENTAGE); + if (linearGradient.x1.baseVal.unitType !== SVGLength.SVG_LENGTHTYPE_PERCENTAGE) + { + linearGradient.x1.baseVal.convertToSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PERCENTAGE); + } + + if (linearGradient.y1.baseVal.unitType !== SVGLength.SVG_LENGTHTYPE_PERCENTAGE) + { + linearGradient.y1.baseVal.convertToSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PERCENTAGE); + } + + if (linearGradient.x2.baseVal.unitType !== SVGLength.SVG_LENGTHTYPE_PERCENTAGE) + { + linearGradient.x2.baseVal.convertToSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PERCENTAGE); + } + + if (linearGradient.y2.baseVal.unitType !== SVGLength.SVG_LENGTHTYPE_PERCENTAGE) + { + linearGradient.y2.baseVal.convertToSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PERCENTAGE); + } } /** * [Paint Servers]{@link https://svgwg.org/svg-next/pservers.html} are implemented as textures. This class is a lazy * wrapper around paint textures, which can only be generated using the `renderer` drawing to the screen. - * + * * @public */ export class PaintServer { public paintServer: SVGGradientElement | SVGPatternElement; public paintTexture: RenderTexture; - public paintContexts: { [id: number]: number }; + public paintContexts: Map; public dirtyId: number; @@ -42,7 +56,7 @@ export class PaintServer { this.paintServer = paintServer; this.paintTexture = paintTexture; - this.paintContexts = {}; + this.paintContexts = new Map(); this.dirtyId = 0; } @@ -54,13 +68,13 @@ export class PaintServer */ public resolvePaint(renderer: Renderer): void { - const contextDirtyId = this.paintContexts[renderer.CONTEXT_UID]; + const contextDirtyId = this.paintContexts.get(renderer); const dirtyId = this.dirtyId; if (contextDirtyId === undefined || contextDirtyId < dirtyId) { this.updatePaint(renderer); - this.paintContexts[renderer.CONTEXT_UID] = dirtyId; + this.paintContexts.set(renderer, dirtyId); } } @@ -117,13 +131,13 @@ export class PaintServer } } - paintTexture.resize(width, height, true); + paintTexture.resize(width, height); return; } } - paintTexture.resize(bwidth, bheight, true); + paintTexture.resize(bwidth, bheight); } /** @@ -148,7 +162,7 @@ export class PaintServer * * @param renderer - The renderer being used to render the paint texture. */ - private linearGradient(renderer: Renderer): RenderTexture + private linearGradient(renderer: Renderer): Texture { const linearGradient = this.paintServer as SVGLinearGradientElement; const paintTexture = this.paintTexture; @@ -173,7 +187,7 @@ export class PaintServer * * @param renderer - The renderer being used to render the paint texture. */ - private radialGradient(renderer: Renderer): RenderTexture + private radialGradient(renderer: Renderer): Texture { const radialGradient = this.paintServer as SVGRadialGradientElement; const paintTexture = this.paintTexture; diff --git a/packages/svg/src/style/DashedLineStyle.ts b/packages/svg/src/style/DashedLineStyle.ts index e4a47b80..f5c0577c 100644 --- a/packages/svg/src/style/DashedLineStyle.ts +++ b/packages/svg/src/style/DashedLineStyle.ts @@ -1,38 +1,9 @@ -import { LineStyle } from '@pixi/graphics'; +import { ConvertedStrokeStyle, StrokeStyle } from 'pixi.js'; -export class DashedLineStyle extends LineStyle +export interface DashedStrokeStyle extends StrokeStyle { - /** - * The dashing pattern of dashes and gaps to stroke paths. - */ - public dashArray: number[] = null; - - /** - * The distance into the dash pattern to start from. - */ - public dashOffset = 0; - - /** - * @override - */ - public clone(): DashedLineStyle - { - const obj = super.clone() as DashedLineStyle; - - obj.dashArray = this.dashArray ? [...this.dashArray] : null; - obj.dashOffset = this.dashOffset; - - return obj; - } - - /** - * @override - */ - public reset(): void - { - super.reset(); - - this.dashArray = null; - this.dashOffset = 0; - } + dashArray: number[]; + dashOffset: number; } + +export type ConvertedDashedStrokeStyle = ConvertedStrokeStyle & { dashArray: number[]; dashOffset: number }; diff --git a/packages/svg/src/utils/Path.ts b/packages/svg/src/utils/Path.ts index a0711026..0319529c 100644 --- a/packages/svg/src/utils/Path.ts +++ b/packages/svg/src/utils/Path.ts @@ -1,4 +1,4 @@ -import { Bounds } from '@pixi/display'; +import { Bounds } from 'pixi.js'; /** @internal */ export const PATH = 100; @@ -11,17 +11,18 @@ export type Contour = Array; /** * The fill rules supported by {@link Path}. - * + * * @public */ -export enum FILL_RULE { +export enum FILL_RULE + { NONZERO = 'nonzero', EVENODD = 'evenodd', } /** * Shape extension for Graphics - * + * * @public */ export class Path @@ -86,8 +87,8 @@ export class Path const bounds = this.bounds; - if (x < bounds.minX || y < bounds.minY || - x > bounds.maxX || y > bounds.maxY) + if (x < bounds.minX || y < bounds.minY + || x > bounds.maxX || y > bounds.maxY) { return false; } @@ -149,7 +150,7 @@ export class Path */ private calculateBounds() { - const bounds = this.bounds + const bounds = this.bounds; let minX = Infinity; let minY = Infinity; @@ -175,10 +176,10 @@ export class Path bounds.maxX = maxX; bounds.maxY = maxY; } - + /** * Hit-tests the point (x, y) based on the even-odd fill rule. - * + * * @see http://geomalgorithms.com/a03-_inclusion.html */ private hitEvenOdd(x: number, y: number): boolean @@ -186,7 +187,7 @@ export class Path // Here, we do we a ray tracing of a horizontally line extending from (x, y) infinitely towards the // right. The number of edges crossing this ray are counted. let crossingCount = 0; - + for (const contour of this.contours) { for (let i = 0, j = contour.length; i < j;) @@ -196,12 +197,12 @@ export class Path const x1 = contour[i % contour.length]; const y1 = contour[(i + 1) % contour.length]; - if ((y0 < y && y1 > y) || // Downward crossing - (y0 > y && y1 < y)) // Upward crossing + if ((y0 < y && y1 > y) // Downward crossing + || (y0 > y && y1 < y)) // Upward crossing { // Calculate the x-coordinate of the point of intersection. const it = (y - y0) / (y1 - y0); - const ix = x0 + it * (x1 - x0); + const ix = x0 + (it * (x1 - x0)); if (x < ix) { @@ -236,26 +237,26 @@ export class Path if (y0 <= y) { - if (y1 > y && // Cross downward - calculateSide( + if (y1 > y // Cross downward + && calculateSide( x, y, x0, y0, x1, y1 - ) > 0) // (x, y) left of edge + ) > 0) // (x, y) left of edge { ++windingNumber; } } - else if (y1 <= y) // Cross upward + else if (y1 <= y) // Cross upward { if (calculateSide( x, y, x0, y0, x1, y1 - ) < 0) // (x, y) right of edge + ) < 0) // (x, y) right of edge { --windingNumber; - } + } } } } @@ -276,5 +277,5 @@ function calculateSide(x: number, y: number, x0: number, y0: number, x1: number, // Basically calculate the area of the triangle (x0, y0), (x1, y1), (x, y), with vertices // in that order. If counterlockwise, then the area is positive - then (x, y) is on left; - return (x1 - x0) * (y - y0) - (x - x0) * (y1 - y0); -} \ No newline at end of file + return ((x1 - x0) * (y - y0)) - ((x - x0) * (y1 - y0)); +} diff --git a/packages/svg/src/utils/buildDashedLine.ts b/packages/svg/src/utils/buildDashedLine.ts index 6282bd26..12c6b238 100644 --- a/packages/svg/src/utils/buildDashedLine.ts +++ b/packages/svg/src/utils/buildDashedLine.ts @@ -1,565 +1,566 @@ -import { GRAPHICS_CURVES, LINE_CAP, LINE_JOIN } from '@pixi/graphics'; -import { Point, SHAPES } from '@pixi/math'; - -// @ts-expect-error We'll export Polygon later. -import type { GraphicsData, GraphicsGeometry, LineStyle, Polygon } from '@pixi/graphics'; - -function distanceTo(p0: Point, p1: Point): number -{ - return Math.sqrt(((p0.x - p1.x) ** 2) + ((p0.y - p1.y) ** 2)); -} - -/** - * Buffers vertices to draw a square cap. - * - * Ignored from docs since it is not directly exposed. - * - * @ignore - * @private - * @param {number} x - X-coord of end point - * @param {number} y - Y-coord of end point - * @param {number} nx - X-coord of line normal pointing inside - * @param {number} ny - Y-coord of line normal pointing inside - * @param {Array} verts - vertex buffer - * @returns {} - */ -function square( - x: number, - y: number, - nx: number, - ny: number, - innerWeight: number, - outerWeight: number, - clockwise: boolean, /* rotation for square (true at left end, false at right end) */ - verts: Array, -): number -{ - const ix = x - (nx * innerWeight); - const iy = y - (ny * innerWeight); - const ox = x + (nx * outerWeight); - const oy = y + (ny * outerWeight); - - /* Rotate nx,ny for extension vector */ - let exx; let - eyy; - - if (clockwise) - { - exx = ny; - eyy = -nx; - } - else - { - exx = -ny; - eyy = nx; - } - - /* [i|0]x,y extended at cap */ - const eix = ix + exx; - const eiy = iy + eyy; - const eox = ox + exx; - const eoy = oy + eyy; - - /* Square itself must be inserted clockwise*/ - verts.push(eix, eiy); - verts.push(eox, eoy); - - return 2; -} - -/** - * Buffers vertices to draw an arc at the line joint or cap. - * - * Ignored from docs since it is not directly exposed. - * - * @ignore - * @private - * @param {number} cx - X-coord of center - * @param {number} cy - Y-coord of center - * @param {number} sx - X-coord of arc start - * @param {number} sy - Y-coord of arc start - * @param {number} ex - X-coord of arc end - * @param {number} ey - Y-coord of arc end - * @param {Array} verts - buffer of vertices - * @param {boolean} clockwise - orientation of vertices - * @returns {number} - no. of vertices pushed - */ -function round( - cx: number, - cy: number, - sx: number, - sy: number, - ex: number, - ey: number, - verts: Array, - clockwise: boolean, /* if not cap, then clockwise is turn of joint, otherwise rotation from angle0 to angle1 */ -): number -{ - const cx2p0x = sx - cx; - const cy2p0y = sy - cy; - - let angle0 = Math.atan2(cx2p0x, cy2p0y); - let angle1 = Math.atan2(ex - cx, ey - cy); - - if (clockwise && angle0 < angle1) - { - angle0 += Math.PI * 2; - } - else if (!clockwise && angle0 > angle1) - { - angle1 += Math.PI * 2; - } - - let startAngle = angle0; - const angleDiff = angle1 - angle0; - const absAngleDiff = Math.abs(angleDiff); - - /* if (absAngleDiff >= PI_LBOUND && absAngleDiff <= PI_UBOUND) - { - const r1x = cx - nxtPx; - const r1y = cy - nxtPy; - - if (r1x === 0) - { - if (r1y > 0) - { - angleDiff = -angleDiff; - } - } - else if (r1x >= -GRAPHICS_CURVES.epsilon) - { - angleDiff = -angleDiff; - } - }*/ - - const radius = Math.sqrt((cx2p0x * cx2p0x) + (cy2p0y * cy2p0y)); - const segCount = ((15 * absAngleDiff * Math.sqrt(radius) / Math.PI) >> 0) + 1; - const angleInc = angleDiff / segCount; - - startAngle += angleInc; - - if (clockwise) - { - verts.push(cx, cy); - verts.push(sx, sy); - - for (let i = 1, angle = startAngle; i < segCount; i++, angle += angleInc) - { - verts.push(cx, cy); - verts.push(cx + ((Math.sin(angle) * radius)), - cy + ((Math.cos(angle) * radius))); - } - - verts.push(cx, cy); - verts.push(ex, ey); - } - else - { - verts.push(sx, sy); - verts.push(cx, cy); - - for (let i = 1, angle = startAngle; i < segCount; i++, angle += angleInc) - { - verts.push(cx + ((Math.sin(angle) * radius)), - cy + ((Math.cos(angle) * radius))); - verts.push(cx, cy); - } - - verts.push(ex, ey); - verts.push(cx, cy); - } - - return segCount * 2; -} -/** - * Adapted from @pixi/graphics - buildNonNativeLine - * - * Builds a line to draw using the polygon method. - * - * Ignored from docs since it is not directly exposed. - * - * @ignore - */ -function buildDash(points: number[], style: LineStyle, graphicsGeometry: GraphicsGeometry): void -{ - // get first and last point.. figure out the middle! - - const verts = graphicsGeometry.points; - const length = points.length / 2; - let indexCount = points.length; - const indexStart = verts.length / 2; - - // Max. inner and outer width - const width = style.width / 2; - const widthSquared = width * width; - const miterLimitSquared = style.miterLimit * style.miterLimit; - - /* Line segments of interest where (x1,y1) forms the corner. */ - let x0 = points[0]; - let y0 = points[1]; - let x1 = points[2]; - let y1 = points[3]; - let x2 = 0; - let y2 = 0; - - /* perp[?](x|y) = the line normal with magnitude lineWidth. */ - let perpx = -(y0 - y1); - let perpy = x0 - x1; - let perp1x = 0; - let perp1y = 0; - - let dist = Math.sqrt((perpx * perpx) + (perpy * perpy)); - - perpx /= dist; - perpy /= dist; - perpx *= width; - perpy *= width; - - const ratio = style.alignment;// 0.5; - const innerWeight = (1 - ratio) * 2; - const outerWeight = ratio * 2; - - // if (!closedShape) - // { - if (style.cap === LINE_CAP.ROUND) - { - indexCount += round( - x0 - (perpx * (innerWeight - outerWeight) * 0.5), - y0 - (perpy * (innerWeight - outerWeight) * 0.5), - x0 - (perpx * innerWeight), - y0 - (perpy * innerWeight), - x0 + (perpx * outerWeight), - y0 + (perpy * outerWeight), - verts, - true, - ) + 2; - } - else if (style.cap === LINE_CAP.SQUARE) - { - indexCount += square(x0, y0, perpx, perpy, innerWeight, outerWeight, true, verts); - } - // } - - // Push first point (below & above vertices) - verts.push( - x0 - (perpx * innerWeight), - y0 - (perpy * innerWeight)); - verts.push( - x0 + (perpx * outerWeight), - y0 + (perpy * outerWeight)); - - for (let i = 1; i < length - 1; ++i) - { - x0 = points[(i - 1) * 2]; - y0 = points[((i - 1) * 2) + 1]; - - x1 = points[i * 2]; - y1 = points[(i * 2) + 1]; - - x2 = points[(i + 1) * 2]; - y2 = points[((i + 1) * 2) + 1]; - - perpx = -(y0 - y1); - perpy = x0 - x1; - - dist = Math.sqrt((perpx * perpx) + (perpy * perpy)); - perpx /= dist; - perpy /= dist; - perpx *= width; - perpy *= width; - - perp1x = -(y1 - y2); - perp1y = x1 - x2; - - dist = Math.sqrt((perp1x * perp1x) + (perp1y * perp1y)); - perp1x /= dist; - perp1y /= dist; - perp1x *= width; - perp1y *= width; - - /* d[x|y](0|1) = the component displacment between points p(0,1|1,2) */ - const dx0 = x1 - x0; - const dy0 = y0 - y1; - const dx1 = x1 - x2; - const dy1 = y2 - y1; - - /* +ve if internal angle counterclockwise, -ve if internal angle clockwise. */ - const cross = (dy0 * dx1) - (dy1 * dx0); - const clockwise = (cross < 0); - - /* Going nearly straight? */ - if (Math.abs(cross) < 0.1) - { - verts.push( - x1 - (perpx * innerWeight), - y1 - (perpy * innerWeight)); - verts.push( - x1 + (perpx * outerWeight), - y1 + (perpy * outerWeight)); - - continue; - } - - /* p[x|y] is the miter point. pdist is the distance between miter point and p1. */ - const c1 = ((-perpx + x0) * (-perpy + y1)) - ((-perpx + x1) * (-perpy + y0)); - const c2 = ((-perp1x + x2) * (-perp1y + y1)) - ((-perp1x + x1) * (-perp1y + y2)); - const px = ((dx0 * c2) - (dx1 * c1)) / cross; - const py = ((dy1 * c1) - (dy0 * c2)) / cross; - const pdist = ((px - x1) * (px - x1)) + ((py - y1) * (py - y1)); - - /* Inner miter point */ - const imx = x1 + ((px - x1) * innerWeight); - const imy = y1 + ((py - y1) * innerWeight); - /* Outer miter point */ - const omx = x1 - ((px - x1) * outerWeight); - const omy = y1 - ((py - y1) * outerWeight); - - if (style.join === LINE_JOIN.BEVEL || pdist / widthSquared > miterLimitSquared) - { - if (clockwise) /* rotating at inner angle */ - { - verts.push(imx, imy);// inner miter point - verts.push(x1 + (perpx * outerWeight), y1 + (perpy * outerWeight));// first segment's outer vertex - verts.push(imx, imy);// inner miter point - verts.push(x1 + (perp1x * outerWeight), y1 + (perp1y * outerWeight));// second segment's outer vertex - } - else /* rotating at outer angle */ - { - verts.push(x1 - (perpx * innerWeight), y1 - (perpy * innerWeight));// first segment's inner vertex - verts.push(omx, omy);// outer miter point - verts.push(x1 - (perp1x * innerWeight), y1 - (perp1y * innerWeight));// second segment's outer vertex - verts.push(omx, omy);// outer miter point - } - - indexCount += 2; - } - else if (style.join === LINE_JOIN.ROUND) - { - if (clockwise) /* arc is outside */ - { - verts.push(imx, imy); - verts.push(x1 + (perpx * outerWeight), y1 + (perpy * outerWeight)); - - indexCount += round( - x1, y1, - x1 + (perpx * outerWeight), y1 + (perpy * outerWeight), - x1 + (perp1x * outerWeight), y1 + (perp1y * outerWeight), - verts, true, - ) + 4; - - verts.push(imx, imy); - verts.push(x1 + (perp1x * outerWeight), y1 + (perp1y * outerWeight)); - } - else /* arc is inside */ - { - verts.push(x1 - (perpx * innerWeight), y1 - (perpy * innerWeight)); - verts.push(omx, omy); - - indexCount += round( - x1, y1, - x1 - (perpx * innerWeight), y1 - (perpy * innerWeight), - x1 - (perp1x * innerWeight), y1 - (perp1y * innerWeight), - verts, false - ) + 4; - - verts.push(x1 - (perp1x * innerWeight), y1 - (perp1y * innerWeight)); - verts.push(omx, omy); - } - } - else - { - verts.push(imx, imy); - verts.push(omx, omy); - } - } - - x0 = points[(length - 2) * 2]; - y0 = points[((length - 2) * 2) + 1]; - - x1 = points[(length - 1) * 2]; - y1 = points[((length - 1) * 2) + 1]; - - perpx = -(y0 - y1); - perpy = x0 - x1; - - dist = Math.sqrt((perpx * perpx) + (perpy * perpy)); - perpx /= dist; - perpy /= dist; - perpx *= width; - perpy *= width; - - verts.push(x1 - (perpx * innerWeight), y1 - (perpy * innerWeight)); - verts.push(x1 + (perpx * outerWeight), y1 + (perpy * outerWeight)); - - // if (!closedShape) - // { - if (style.cap === LINE_CAP.ROUND) - { - indexCount += round( - x1 - (perpx * (innerWeight - outerWeight) * 0.5), - y1 - (perpy * (innerWeight - outerWeight) * 0.5), - x1 - (perpx * innerWeight), - y1 - (perpy * innerWeight), - x1 + (perpx * outerWeight), - y1 + (perpy * outerWeight), - verts, - false - ) + 2; - } - else if (style.cap === LINE_CAP.SQUARE) - { - indexCount += square(x1, y1, perpx, perpy, innerWeight, outerWeight, false, verts); - } - // } - - const indices = graphicsGeometry.indices; - const eps2 = GRAPHICS_CURVES.epsilon * GRAPHICS_CURVES.epsilon; - - // indices.push(indexStart); - for (let i = indexStart; i < indexCount + indexStart - 2; ++i) - { - x0 = verts[(i * 2)]; - y0 = verts[(i * 2) + 1]; - - x1 = verts[(i + 1) * 2]; - y1 = verts[((i + 1) * 2) + 1]; - - x2 = verts[(i + 2) * 2]; - y2 = verts[((i + 2) * 2) + 1]; - - /* Skip zero area triangles */ - if (Math.abs((x0 * (y1 - y2)) + (x1 * (y2 - y0)) + (x2 * (y0 - y1))) < eps2) - { - continue; - } - - indices.push(i, i + 1, i + 2); - } -} - -function inDash(i: number): boolean { return i % 2 === 0; } -function incDash(i: number, dashArray: number[]): number { return (i + 1) % dashArray.length; } - -export function buildDashedLine(graphicsData: GraphicsData, graphicsGeometry: GraphicsGeometry): void -{ - const shape = graphicsData.shape as Polygon; - let points = graphicsData.points || shape.points.slice(); - const eps = graphicsGeometry.closePointEps; - - if (points.length === 0) - { - return; - } - - const firstPoint = new Point(points[0], points[1]); - const lastPoint = new Point(points[points.length - 2], points[points.length - 1]); - - const closedShape = shape.type !== SHAPES.POLY || shape.closeStroke; - const closedPath = Math.abs(firstPoint.x - lastPoint.x) < eps - && Math.abs(firstPoint.y - lastPoint.y) < eps; - - // if the first point is the last point - gonna have issues :) - if (closedShape) - { - // need to clone as we are going to slightly modify the shape.. - points = points.slice(); - - if (closedPath) - { - points.pop(); - points.pop(); - lastPoint.set(points[points.length - 2], points[points.length - 1]); - } - - const midPointX = (firstPoint.x + lastPoint.x) * 0.5; - const midPointY = (lastPoint.y + firstPoint.y) * 0.5; - - points.unshift(midPointX, midPointY); - points.push(midPointX, midPointY); - } - - const style = graphicsData.lineStyle; - - // The length into the current dash that was already been added. This is needed for dashes - // that cover multiple line segments (e.g. path turns in middle of dash). - let dashOffset: number = (style as any).dashOffset || 0; - - // Local copy of dash array - const dashArray: number[] = (style as any).dashArray || [10, 5]; - - // Number of line segments - const segCount = (points.length / 2) - 1; - - // Start of each segment - const segStart = new Point(); - - // End of each segement - const segEnd = new Point(); - - // Holds points for the dashes. When drawing a dash, this must contain more than one point. It - // may contain more than 2 points if the dash spans across multiple segments. - const segPoints = []; - - // The current head of the dash algorithm - const dashPointer = new Point(); - - // The index in dashArray of location in the path at dashPointer - let dashArrayIndex = 0; - - // Loop expects start of dash to already be present - segPoints.push(points[0], points[1]); - - for (let i = 0; i < segCount; i++) - { - // Segment start point - segStart.set(points[i * 2], points[(i * 2) + 1]); - - // Segment end point - segEnd.set(points[(i * 2) + 2], points[(i * 2) + 3]); - - // Segment length - const segLength = distanceTo(segStart, segEnd); - - const segAngle = Math.atan2(segEnd.y - segStart.y, segEnd.x - segStart.x); - const segSin = Math.sin(segAngle); - const segCos = Math.cos(segAngle); - - let segSpace = segLength; - - dashPointer.copyFrom(segStart); - - while (segSpace >= (dashArray[dashArrayIndex] - dashOffset)) - { - const dashLength = dashArray[dashArrayIndex] - dashOffset; - - dashPointer.x += segCos * dashLength; - dashPointer.y += segSin * dashLength; - segPoints.push(dashPointer.x, dashPointer.y); - - if (inDash(dashArrayIndex)) - { - buildDash(segPoints, style, graphicsGeometry); - segPoints.length = 0; - } - - segSpace -= dashLength; - dashArrayIndex = incDash(dashArrayIndex, dashArray); - dashOffset = 0; - } - - if (segSpace > 0) - { - if (inDash(dashArrayIndex)) - { - segPoints.push(segEnd.x, segEnd.y); - } - - dashOffset += segSpace; - } - } - - if (inDash(dashArrayIndex)) - { - buildDash(segPoints, style, graphicsGeometry); - } -} +// import { Point } from 'pixi.js'; +// +// // @ts-expect-error We'll export Polygon later. +// import type { GraphicsData, GraphicsGeometry, LineStyle, Polygon } from 'pixi.js'; +// +// function distanceTo(p0: Point, p1: Point): number +// { +// return Math.sqrt(((p0.x - p1.x) ** 2) + ((p0.y - p1.y) ** 2)); +// } +// +// const FLT_EPSILON = 1.19209290e-7; +// +// /** +// * Buffers vertices to draw a square cap. +// * +// * Ignored from docs since it is not directly exposed. +// * +// * @ignore +// * @private +// * @param {number} x - X-coord of end point +// * @param {number} y - Y-coord of end point +// * @param {number} nx - X-coord of line normal pointing inside +// * @param {number} ny - Y-coord of line normal pointing inside +// * @param {Array} verts - vertex buffer +// * @returns {} +// */ +// function square( +// x: number, +// y: number, +// nx: number, +// ny: number, +// innerWeight: number, +// outerWeight: number, +// clockwise: boolean, /* rotation for square (true at left end, false at right end) */ +// verts: Array, +// ): number +// { +// const ix = x - (nx * innerWeight); +// const iy = y - (ny * innerWeight); +// const ox = x + (nx * outerWeight); +// const oy = y + (ny * outerWeight); +// +// /* Rotate nx,ny for extension vector */ +// let exx; let +// eyy; +// +// if (clockwise) +// { +// exx = ny; +// eyy = -nx; +// } +// else +// { +// exx = -ny; +// eyy = nx; +// } +// +// /* [i|0]x,y extended at cap */ +// const eix = ix + exx; +// const eiy = iy + eyy; +// const eox = ox + exx; +// const eoy = oy + eyy; +// +// /* Square itself must be inserted clockwise*/ +// verts.push(eix, eiy); +// verts.push(eox, eoy); +// +// return 2; +// } +// +// /** +// * Buffers vertices to draw an arc at the line joint or cap. +// * +// * Ignored from docs since it is not directly exposed. +// * +// * @ignore +// * @private +// * @param {number} cx - X-coord of center +// * @param {number} cy - Y-coord of center +// * @param {number} sx - X-coord of arc start +// * @param {number} sy - Y-coord of arc start +// * @param {number} ex - X-coord of arc end +// * @param {number} ey - Y-coord of arc end +// * @param {Array} verts - buffer of vertices +// * @param {boolean} clockwise - orientation of vertices +// * @returns {number} - no. of vertices pushed +// */ +// function round( +// cx: number, +// cy: number, +// sx: number, +// sy: number, +// ex: number, +// ey: number, +// verts: Array, +// clockwise: boolean, /* if not cap, then clockwise is turn of joint, otherwise rotation from angle0 to angle1 */ +// ): number +// { +// const cx2p0x = sx - cx; +// const cy2p0y = sy - cy; +// +// let angle0 = Math.atan2(cx2p0x, cy2p0y); +// let angle1 = Math.atan2(ex - cx, ey - cy); +// +// if (clockwise && angle0 < angle1) +// { +// angle0 += Math.PI * 2; +// } +// else if (!clockwise && angle0 > angle1) +// { +// angle1 += Math.PI * 2; +// } +// +// let startAngle = angle0; +// const angleDiff = angle1 - angle0; +// const absAngleDiff = Math.abs(angleDiff); +// +// /* if (absAngleDiff >= PI_LBOUND && absAngleDiff <= PI_UBOUND) +// { +// const r1x = cx - nxtPx; +// const r1y = cy - nxtPy; +// +// if (r1x === 0) +// { +// if (r1y > 0) +// { +// angleDiff = -angleDiff; +// } +// } +// else if (r1x >= -GRAPHICS_CURVES.epsilon) +// { +// angleDiff = -angleDiff; +// } +// }*/ +// +// const radius = Math.sqrt((cx2p0x * cx2p0x) + (cy2p0y * cy2p0y)); +// const segCount = ((15 * absAngleDiff * Math.sqrt(radius) / Math.PI) >> 0) + 1; +// const angleInc = angleDiff / segCount; +// +// startAngle += angleInc; +// +// if (clockwise) +// { +// verts.push(cx, cy); +// verts.push(sx, sy); +// +// for (let i = 1, angle = startAngle; i < segCount; i++, angle += angleInc) +// { +// verts.push(cx, cy); +// verts.push(cx + ((Math.sin(angle) * radius)), +// cy + ((Math.cos(angle) * radius))); +// } +// +// verts.push(cx, cy); +// verts.push(ex, ey); +// } +// else +// { +// verts.push(sx, sy); +// verts.push(cx, cy); +// +// for (let i = 1, angle = startAngle; i < segCount; i++, angle += angleInc) +// { +// verts.push(cx + ((Math.sin(angle) * radius)), +// cy + ((Math.cos(angle) * radius))); +// verts.push(cx, cy); +// } +// +// verts.push(ex, ey); +// verts.push(cx, cy); +// } +// +// return segCount * 2; +// } +// /** +// * Adapted from @pixi/graphics - buildNonNativeLine +// * +// * Builds a line to draw using the polygon method. +// * +// * Ignored from docs since it is not directly exposed. +// * +// * @ignore +// */ +// function buildDash(points: number[], style: LineStyle, graphicsGeometry: GraphicsGeometry): void +// { +// // get first and last point.. figure out the middle! +// +// const verts = graphicsGeometry.points; +// const length = points.length / 2; +// let indexCount = points.length; +// const indexStart = verts.length / 2; +// +// // Max. inner and outer width +// const width = style.width / 2; +// const widthSquared = width * width; +// const miterLimitSquared = style.miterLimit * style.miterLimit; +// +// /* Line segments of interest where (x1,y1) forms the corner. */ +// let x0 = points[0]; +// let y0 = points[1]; +// let x1 = points[2]; +// let y1 = points[3]; +// let x2 = 0; +// let y2 = 0; +// +// /* perp[?](x|y) = the line normal with magnitude lineWidth. */ +// let perpx = -(y0 - y1); +// let perpy = x0 - x1; +// let perp1x = 0; +// let perp1y = 0; +// +// let dist = Math.sqrt((perpx * perpx) + (perpy * perpy)); +// +// perpx /= dist; +// perpy /= dist; +// perpx *= width; +// perpy *= width; +// +// const ratio = style.alignment;// 0.5; +// const innerWeight = (1 - ratio) * 2; +// const outerWeight = ratio * 2; +// +// // if (!closedShape) +// // { +// if (style.cap === 'round') +// { +// indexCount += round( +// x0 - (perpx * (innerWeight - outerWeight) * 0.5), +// y0 - (perpy * (innerWeight - outerWeight) * 0.5), +// x0 - (perpx * innerWeight), +// y0 - (perpy * innerWeight), +// x0 + (perpx * outerWeight), +// y0 + (perpy * outerWeight), +// verts, +// true, +// ) + 2; +// } +// else if (style.cap === 'square') +// { +// indexCount += square(x0, y0, perpx, perpy, innerWeight, outerWeight, true, verts); +// } +// // } +// +// // Push first point (below & above vertices) +// verts.push( +// x0 - (perpx * innerWeight), +// y0 - (perpy * innerWeight)); +// verts.push( +// x0 + (perpx * outerWeight), +// y0 + (perpy * outerWeight)); +// +// for (let i = 1; i < length - 1; ++i) +// { +// x0 = points[(i - 1) * 2]; +// y0 = points[((i - 1) * 2) + 1]; +// +// x1 = points[i * 2]; +// y1 = points[(i * 2) + 1]; +// +// x2 = points[(i + 1) * 2]; +// y2 = points[((i + 1) * 2) + 1]; +// +// perpx = -(y0 - y1); +// perpy = x0 - x1; +// +// dist = Math.sqrt((perpx * perpx) + (perpy * perpy)); +// perpx /= dist; +// perpy /= dist; +// perpx *= width; +// perpy *= width; +// +// perp1x = -(y1 - y2); +// perp1y = x1 - x2; +// +// dist = Math.sqrt((perp1x * perp1x) + (perp1y * perp1y)); +// perp1x /= dist; +// perp1y /= dist; +// perp1x *= width; +// perp1y *= width; +// +// /* d[x|y](0|1) = the component displacment between points p(0,1|1,2) */ +// const dx0 = x1 - x0; +// const dy0 = y0 - y1; +// const dx1 = x1 - x2; +// const dy1 = y2 - y1; +// +// /* +ve if internal angle counterclockwise, -ve if internal angle clockwise. */ +// const cross = (dy0 * dx1) - (dy1 * dx0); +// const clockwise = (cross < 0); +// +// /* Going nearly straight? */ +// if (Math.abs(cross) < 0.1) +// { +// verts.push( +// x1 - (perpx * innerWeight), +// y1 - (perpy * innerWeight)); +// verts.push( +// x1 + (perpx * outerWeight), +// y1 + (perpy * outerWeight)); +// +// continue; +// } +// +// /* p[x|y] is the miter point. pdist is the distance between miter point and p1. */ +// const c1 = ((-perpx + x0) * (-perpy + y1)) - ((-perpx + x1) * (-perpy + y0)); +// const c2 = ((-perp1x + x2) * (-perp1y + y1)) - ((-perp1x + x1) * (-perp1y + y2)); +// const px = ((dx0 * c2) - (dx1 * c1)) / cross; +// const py = ((dy1 * c1) - (dy0 * c2)) / cross; +// const pdist = ((px - x1) * (px - x1)) + ((py - y1) * (py - y1)); +// +// /* Inner miter point */ +// const imx = x1 + ((px - x1) * innerWeight); +// const imy = y1 + ((py - y1) * innerWeight); +// /* Outer miter point */ +// const omx = x1 - ((px - x1) * outerWeight); +// const omy = y1 - ((py - y1) * outerWeight); +// +// if (style.join === 'bevel' || pdist / widthSquared > miterLimitSquared) +// { +// if (clockwise) /* rotating at inner angle */ +// { +// verts.push(imx, imy);// inner miter point +// verts.push(x1 + (perpx * outerWeight), y1 + (perpy * outerWeight));// first segment's outer vertex +// verts.push(imx, imy);// inner miter point +// verts.push(x1 + (perp1x * outerWeight), y1 + (perp1y * outerWeight));// second segment's outer vertex +// } +// else /* rotating at outer angle */ +// { +// verts.push(x1 - (perpx * innerWeight), y1 - (perpy * innerWeight));// first segment's inner vertex +// verts.push(omx, omy);// outer miter point +// verts.push(x1 - (perp1x * innerWeight), y1 - (perp1y * innerWeight));// second segment's outer vertex +// verts.push(omx, omy);// outer miter point +// } +// +// indexCount += 2; +// } +// else if (style.join === 'round') +// { +// if (clockwise) /* arc is outside */ +// { +// verts.push(imx, imy); +// verts.push(x1 + (perpx * outerWeight), y1 + (perpy * outerWeight)); +// +// indexCount += round( +// x1, y1, +// x1 + (perpx * outerWeight), y1 + (perpy * outerWeight), +// x1 + (perp1x * outerWeight), y1 + (perp1y * outerWeight), +// verts, true, +// ) + 4; +// +// verts.push(imx, imy); +// verts.push(x1 + (perp1x * outerWeight), y1 + (perp1y * outerWeight)); +// } +// else /* arc is inside */ +// { +// verts.push(x1 - (perpx * innerWeight), y1 - (perpy * innerWeight)); +// verts.push(omx, omy); +// +// indexCount += round( +// x1, y1, +// x1 - (perpx * innerWeight), y1 - (perpy * innerWeight), +// x1 - (perp1x * innerWeight), y1 - (perp1y * innerWeight), +// verts, false +// ) + 4; +// +// verts.push(x1 - (perp1x * innerWeight), y1 - (perp1y * innerWeight)); +// verts.push(omx, omy); +// } +// } +// else +// { +// verts.push(imx, imy); +// verts.push(omx, omy); +// } +// } +// +// x0 = points[(length - 2) * 2]; +// y0 = points[((length - 2) * 2) + 1]; +// +// x1 = points[(length - 1) * 2]; +// y1 = points[((length - 1) * 2) + 1]; +// +// perpx = -(y0 - y1); +// perpy = x0 - x1; +// +// dist = Math.sqrt((perpx * perpx) + (perpy * perpy)); +// perpx /= dist; +// perpy /= dist; +// perpx *= width; +// perpy *= width; +// +// verts.push(x1 - (perpx * innerWeight), y1 - (perpy * innerWeight)); +// verts.push(x1 + (perpx * outerWeight), y1 + (perpy * outerWeight)); +// +// // if (!closedShape) +// // { +// if (style.cap === 'round') +// { +// indexCount += round( +// x1 - (perpx * (innerWeight - outerWeight) * 0.5), +// y1 - (perpy * (innerWeight - outerWeight) * 0.5), +// x1 - (perpx * innerWeight), +// y1 - (perpy * innerWeight), +// x1 + (perpx * outerWeight), +// y1 + (perpy * outerWeight), +// verts, +// false +// ) + 2; +// } +// else if (style.cap === 'square') +// { +// indexCount += square(x1, y1, perpx, perpy, innerWeight, outerWeight, false, verts); +// } +// // } +// +// const indices = graphicsGeometry.indices; +// const eps2 = FLT_EPSILON * FLT_EPSILON; +// +// // indices.push(indexStart); +// for (let i = indexStart; i < indexCount + indexStart - 2; ++i) +// { +// x0 = verts[(i * 2)]; +// y0 = verts[(i * 2) + 1]; +// +// x1 = verts[(i + 1) * 2]; +// y1 = verts[((i + 1) * 2) + 1]; +// +// x2 = verts[(i + 2) * 2]; +// y2 = verts[((i + 2) * 2) + 1]; +// +// /* Skip zero area triangles */ +// if (Math.abs((x0 * (y1 - y2)) + (x1 * (y2 - y0)) + (x2 * (y0 - y1))) < eps2) +// { +// continue; +// } +// +// indices.push(i, i + 1, i + 2); +// } +// } +// +// function inDash(i: number): boolean { return i % 2 === 0; } +// function incDash(i: number, dashArray: number[]): number { return (i + 1) % dashArray.length; } +// +// export function buildDashedLine(graphicsData: GraphicsData, graphicsGeometry: GraphicsGeometry): void +// { +// const shape = graphicsData.shape as Polygon; +// let points = graphicsData.points || shape.points.slice(); +// const eps = graphicsGeometry.closePointEps; +// +// if (points.length === 0) +// { +// return; +// } +// +// const firstPoint = new Point(points[0], points[1]); +// const lastPoint = new Point(points[points.length - 2], points[points.length - 1]); +// +// const closedShape = shape.type !== 'polygon' || shape.closePath; +// const closedPath = Math.abs(firstPoint.x - lastPoint.x) < eps +// && Math.abs(firstPoint.y - lastPoint.y) < eps; +// +// // if the first point is the last point - gonna have issues :) +// if (closedShape) +// { +// // need to clone as we are going to slightly modify the shape.. +// points = points.slice(); +// +// if (closedPath) +// { +// points.pop(); +// points.pop(); +// lastPoint.set(points[points.length - 2], points[points.length - 1]); +// } +// +// const midPointX = (firstPoint.x + lastPoint.x) * 0.5; +// const midPointY = (lastPoint.y + firstPoint.y) * 0.5; +// +// points.unshift(midPointX, midPointY); +// points.push(midPointX, midPointY); +// } +// +// const style = graphicsData.lineStyle; +// +// // The length into the current dash that was already been added. This is needed for dashes +// // that cover multiple line segments (e.g. path turns in middle of dash). +// let dashOffset: number = (style as any).dashOffset || 0; +// +// // Local copy of dash array +// const dashArray: number[] = (style as any).dashArray || [10, 5]; +// +// // Number of line segments +// const segCount = (points.length / 2) - 1; +// +// // Start of each segment +// const segStart = new Point(); +// +// // End of each segement +// const segEnd = new Point(); +// +// // Holds points for the dashes. When drawing a dash, this must contain more than one point. It +// // may contain more than 2 points if the dash spans across multiple segments. +// const segPoints = []; +// +// // The current head of the dash algorithm +// const dashPointer = new Point(); +// +// // The index in dashArray of location in the path at dashPointer +// let dashArrayIndex = 0; +// +// // Loop expects start of dash to already be present +// segPoints.push(points[0], points[1]); +// +// for (let i = 0; i < segCount; i++) +// { +// // Segment start point +// segStart.set(points[i * 2], points[(i * 2) + 1]); +// +// // Segment end point +// segEnd.set(points[(i * 2) + 2], points[(i * 2) + 3]); +// +// // Segment length +// const segLength = distanceTo(segStart, segEnd); +// +// const segAngle = Math.atan2(segEnd.y - segStart.y, segEnd.x - segStart.x); +// const segSin = Math.sin(segAngle); +// const segCos = Math.cos(segAngle); +// +// let segSpace = segLength; +// +// dashPointer.copyFrom(segStart); +// +// while (segSpace >= (dashArray[dashArrayIndex] - dashOffset)) +// { +// const dashLength = dashArray[dashArrayIndex] - dashOffset; +// +// dashPointer.x += segCos * dashLength; +// dashPointer.y += segSin * dashLength; +// segPoints.push(dashPointer.x, dashPointer.y); +// +// if (inDash(dashArrayIndex)) +// { +// buildDash(segPoints, style, graphicsGeometry); +// segPoints.length = 0; +// } +// +// segSpace -= dashLength; +// dashArrayIndex = incDash(dashArrayIndex, dashArray); +// dashOffset = 0; +// } +// +// if (segSpace > 0) +// { +// if (inDash(dashArrayIndex)) +// { +// segPoints.push(segEnd.x, segEnd.y); +// } +// +// dashOffset += segSpace; +// } +// } +// +// if (inDash(dashArrayIndex)) +// { +// buildDash(segPoints, style, graphicsGeometry); +// } +// } diff --git a/packages/svg/src/utils/buildPath.ts b/packages/svg/src/utils/buildPath.ts index c6360859..5e041308 100644 --- a/packages/svg/src/utils/buildPath.ts +++ b/packages/svg/src/utils/buildPath.ts @@ -1,7 +1,6 @@ -import { FILL_RULE } from './Path'; import * as libtess from 'libtess'; +import { FILL_RULE } from './Path'; -import type { GraphicsGeometry } from '@pixi/graphics'; import type { Path } from './Path'; // Not used yet, tess2 isn't so good. @@ -10,7 +9,7 @@ export const buildPath = { { /* This method is intentionally blank. */ }, - triangulate(graphicsData: any, graphicsGeometry: GraphicsGeometry): void + triangulate(graphicsData: any, graphicsGeometry: any): void { try { @@ -31,7 +30,8 @@ export const buildPath = { } function begincallback(type: number): void { - if (type !== libtess.primitiveType.GL_TRIANGLES) { + if (type !== libtess.primitiveType.GL_TRIANGLES) + { console.warn(`expected TRIANGLES but got type: ${type}`); } } diff --git a/packages/system-g/package.json b/packages/system-g/package.json index 31921276..c736f451 100644 --- a/packages/system-g/package.json +++ b/packages/system-g/package.json @@ -51,7 +51,7 @@ "@pixi/utils": "^5.1.0", "@pixi-build-tools/rollup-configurator": "^1.0.10", "tslib": "~2.0.1", - "typescript": "~4.9.5", + "typescript": "~5.3.3", "eslint": "~7.7.0", "@pixi-essentials/eslint-config": "~1.0.0", "rollup": "~2.27.0" diff --git a/packages/texture-allocator/CHANGELOG.json b/packages/texture-allocator/CHANGELOG.json index a91c617a..833af305 100644 --- a/packages/texture-allocator/CHANGELOG.json +++ b/packages/texture-allocator/CHANGELOG.json @@ -1,6 +1,23 @@ { "name": "@pixi-essentials/texture-allocator", "entries": [ + { + "version": "3.0.0", + "tag": "@pixi-essentials/texture-allocator_v3.0.0", + "date": "Tue, 08 Oct 2024 00:58:26 GMT", + "comments": { + "major": [ + { + "comment": "Support PixiJS 8, renamed AtlasResource to AtlasSource." + } + ], + "dependency": [ + { + "comment": "Updating dependency \"@pixi-essentials/area-allocator\" from `~2.0.0` to `3.0.0`" + } + ] + } + }, { "version": "2.0.1", "tag": "@pixi-essentials/texture-allocator_v2.0.1", diff --git a/packages/texture-allocator/CHANGELOG.md b/packages/texture-allocator/CHANGELOG.md index 77263b80..70cf0937 100644 --- a/packages/texture-allocator/CHANGELOG.md +++ b/packages/texture-allocator/CHANGELOG.md @@ -1,6 +1,13 @@ # Change Log - @pixi-essentials/texture-allocator -This log was last generated on Sun, 16 Apr 2023 20:43:53 GMT and should not be manually modified. +This log was last generated on Tue, 08 Oct 2024 00:58:26 GMT and should not be manually modified. + +## 3.0.0 +Tue, 08 Oct 2024 00:58:26 GMT + +### Breaking changes + +- Support PixiJS 8, renamed AtlasResource to AtlasSource. ## 2.0.1 Sun, 16 Apr 2023 20:43:53 GMT diff --git a/packages/texture-allocator/api-extractor.json b/packages/texture-allocator/api-extractor.json index e09a36a3..3c9c3dcf 100644 --- a/packages/texture-allocator/api-extractor.json +++ b/packages/texture-allocator/api-extractor.json @@ -32,6 +32,12 @@ }, "ae-unresolved-link": { "logLevel": "none" + }, + "ae-wrong-input-file-type": { + "logLevel": "none" + }, + "ae-forgotten-export": { + "logLevel": "none" } }, "tsdocMessageReporting": { diff --git a/packages/texture-allocator/package.json b/packages/texture-allocator/package.json index f62a891b..2e4474a3 100644 --- a/packages/texture-allocator/package.json +++ b/packages/texture-allocator/package.json @@ -1,6 +1,6 @@ { "name": "@pixi-essentials/texture-allocator", - "version": "2.0.1", + "version": "3.0.0", "description": "Dynamic texture allocator based on @pixi-essentials/area-allocator", "main": "lib/texture-allocator.js", "module": "lib/texture-allocator.es.js", @@ -8,7 +8,8 @@ "types": "./index.d.ts", "scripts": { "build": "rollup -c node_modules/@pixi-build-tools/rollup-configurator/index.js --silent", - "build:types": "rm -rf compile && tsc && api-extractor run" + "build:types": "rm -rf compile index.d.ts && tsc && api-extractor run; rm -rf compile", + "lint": "eslint --ext .ts,.js src/" }, "repository": { "type": "git", @@ -32,20 +33,19 @@ }, "homepage": "https://github.com/SukantPal/pixi-essentials#readme", "dependencies": { - "@pixi-essentials/area-allocator": "~2.0.0" + "@pixi-essentials/area-allocator": "~3.0.0" }, "peerDependencies": { - "@pixi/core": "^7.0.0", - "@pixi/math": "^7.0.0", - "@pixi/constants": "^7.0.0" + "pixi.js": "^8.1.0" }, "devDependencies": { "rollup": "~2.33.1", "@pixi-build-tools/rollup-configurator": "^1.0.10", "tslib": "~2.0.3", - "typescript": "~4.9.5", + "typescript": "~5.3.3", "eslint": "~7.13.0", "@pixi-essentials/eslint-config": "~1.0.0", - "@microsoft/api-extractor": "~7.16.1" + "@microsoft/api-extractor": "~7.47.9", + "pixi.js": "^8.4.0" } } diff --git a/packages/texture-allocator/src/AtlasAllocator.ts b/packages/texture-allocator/src/AtlasAllocator.ts index ef648f63..665434af 100644 --- a/packages/texture-allocator/src/AtlasAllocator.ts +++ b/packages/texture-allocator/src/AtlasAllocator.ts @@ -1,56 +1,65 @@ -import { AtlasResource } from './AtlasResource'; -import { BaseTexture, Texture } from '@pixi/core'; -import { GuilloteneAllocator } from '@pixi-essentials/area-allocator'; +import { Texture } from 'pixi.js'; +import { AtlasSource, optimizeAtlasUploads } from './AtlasSource'; import { TextureAllocator } from './TextureAllocator'; -import { TextureSlab } from './TextureSlab'; -import type { AtlasResourceSource } from './AtlasResource'; +import type { Renderer } from 'pixi.js'; +import type { AtlasItem, AtlasItemSource } from './AtlasSource'; /** - * This texture allocator auto-manages the base-texture with an {@link AtlasResource}. You can also + * This texture allocator auto-manages the base-texture with an {@link AtlasSource}. You can also * pass a texture source to `allocate`, mimicing {@link Texture.from} functionality. - * + * * @public */ -export class AtlasAllocator extends TextureAllocator +export class AtlasAllocator extends TextureAllocator { /** - * Creates a texture slab backed by an {@link AtlasResource}. + * Creates an atlas allocator. + * + * @param renderer - The renderer to register the atlas source uploader for. This is optional, but + * the atlas textures won't work without calling {@link optimizeAtlasUploads} on the renderer. + * @param slabWidth + * @param slabHeight */ - protected createSlab(): TextureSlab + constructor(renderer: Renderer | null, slabWidth = 2048, slabHeight = 2048) { - return { - managedArea: new GuilloteneAllocator(this.slabWidth, this.slabHeight), - managedTextures: [], - slab: new BaseTexture(new AtlasResource(this.slabWidth, this.slabHeight), - { - width: this.slabWidth, - height: this.slabHeight, - }), - }; + super(slabWidth, slabHeight); + + if (renderer) + { + optimizeAtlasUploads(renderer); + } + } + + /** + * Creates a texture slab backed by an {@link AtlasSource}. + */ + protected override createSlabSource(): AtlasSource + { + return new AtlasSource(this.slabWidth, this.slabHeight); } /** * Allocates a texture backed by the given atlas source, with the given padding. * * @override - * @param width - * @param height - * @param padding - * @param source + * @param width + * @param height + * @param padding + * @param source */ - allocate(width: number, height: number, padding?: number, source?: AtlasResourceSource): Texture; + allocate(width: number, height: number, padding?: number, source?: AtlasItemSource): Texture; /** * Allocates a texture backed by the given source, with default padding. * * @param width - * @param height - * @param source + * @param height + * @param source */ - allocate(width: number, height: number, source?: AtlasResourceSource): Texture; + allocate(width: number, height: number, source?: AtlasItemSource): Texture; - allocate(width: number, height: number, paddingOrSource?: number | AtlasResourceSource, source?: AtlasResourceSource): Texture + allocate(width: number, height: number, paddingOrSource?: number | AtlasItemSource, source?: AtlasItemSource): Texture { let padding: number; @@ -68,7 +77,7 @@ export class AtlasAllocator extends TextureAllocator if (source) { - const atlas = texture.baseTexture.resource as AtlasResource; + const atlas = texture.source as AtlasSource; const item = { frame: texture.frame, source, @@ -76,20 +85,28 @@ export class AtlasAllocator extends TextureAllocator dirtyId: source instanceof HTMLImageElement && !source.complete ? -1 : 0, updateId: -1, texture, - }; + } satisfies AtlasItem; atlas.managedItems.push(item); - if (source instanceof HTMLImageElement && !source.complete) { - source.addEventListener('load', () => { - if (texture.baseTexture.valid && !texture.baseTexture.destroyed && atlas.managedItems.indexOf(item) >= 0) { + if (source instanceof HTMLImageElement && !source.complete) + { + source.addEventListener('load', () => + { + if (!texture.source.destroyed && atlas.managedItems.indexOf(item) >= 0) + { item.dirtyId++; - texture.baseTexture.update(); + atlas.update(); + texture.update(); + } + else + { + console.warn('Image loaded after texture was destroyed'); } }); } - texture.baseTexture.update(); + atlas.update(); } return texture; @@ -99,12 +116,12 @@ export class AtlasAllocator extends TextureAllocator { super.free(texture); - const atlas = texture.baseTexture.resource as AtlasResource; - const item = atlas.managedItems.find(item => item.texture === texture); + const atlas = texture.source as AtlasSource; + const item = atlas.managedItems.find((item) => item.texture === texture); if (item) { atlas.managedItems.splice(atlas.managedItems.indexOf(item), 1); } } -} \ No newline at end of file +} diff --git a/packages/texture-allocator/src/AtlasResource.ts b/packages/texture-allocator/src/AtlasResource.ts deleted file mode 100644 index 9b11a033..00000000 --- a/packages/texture-allocator/src/AtlasResource.ts +++ /dev/null @@ -1,185 +0,0 @@ -import { ALPHA_MODES } from '@pixi/constants'; -import { BaseTexture, GLTexture, Resource, Renderer } from '@pixi/core'; - -import type { Rectangle } from '@pixi/math'; -import type { Texture } from '@pixi/core'; - -/** - * Types of image sources supported by {@link AtlasResource}. - * - * @public - */ -export type AtlasResourceSource = HTMLImageElement | HTMLCanvasElement | ImageBitmap | ImageData | ArrayBufferView; - -/** - * An item that is uploaded to the atlas texture. - * - * @public - */ -export type AtlasResourceItem = -{ - /** - * The location of the atlas item in the base-texture's space. - */ - frame: Rectangle; - - /** - * The source of the texture data. - */ - source: AtlasResourceSource; - - /** - * This flags when the resource is to be re-uploaded. - */ - dirtyId: number; - - /** - * This flags when the resource is uploaded and update-to-date with the dirty ID. - */ - updateId: number; - - /** - * The texture holding this item. - */ - texture: Texture; -}; - -/** - * An {@code AtlasResource} is used by {@link AtlasAllocator} to manage texture sources - * - * @public - */ -export class AtlasResource extends Resource -{ - /** - * The list of managed resources in the atlas. - */ - public managedItems: AtlasResourceItem[]; - - /** - * Creates an atlas resource. - * - * @param width - * @param height - */ - constructor(width: number, height: number) - { - super(width, height); - - this.managedItems = []; - } - - /** - * Uploads the atlas. - * - * @param renderer - * @param baseTexture - * @param glTexture - */ - upload(renderer: Renderer, baseTexture: BaseTexture, glTexture: GLTexture): boolean - { - const gl: WebGLRenderingContext = renderer.gl; - const width = baseTexture.realWidth; - const height = baseTexture.realHeight; - - gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, baseTexture.alphaMode === ALPHA_MODES.UNPACK) - - // Allocate the texture on the GPU - if (glTexture.width !== width || - glTexture.height !== height) - { - glTexture.width = width; - glTexture.height = height; - - gl.texImage2D( - baseTexture.target, - 0, - baseTexture.format, - width, - height, - 0, - baseTexture.format, - baseTexture.type, - undefined - ); - } - - const items = this.managedItems; - - // Upload all atlas items. - for (let i = 0, j = items.length; i < j; i++) - { - this.uploadItem( - renderer, - baseTexture.target, - baseTexture.format, - baseTexture.type, - items[i] - ); - } - - return true; - } - - /** - * Uploads the atlas item to the GPU. - * - * @param renderer - The renderer holding the WebGL context. - * @param target - The binding point of the base-texture. - * @param format - The format of the base-texture. - * @param type - The type of the base-texture data. - * @param item - The item to upload. - */ - protected uploadItem( - renderer: Renderer, - target: number, - format: number, - type: number, - item: AtlasResourceItem - ): void - { - if (item.updateId === item.dirtyId) - { - return; - } - - const gl: WebGLRenderingContext = renderer.gl; - const isWebGL2 = (gl instanceof WebGL2RenderingContext); - const frame = item.frame; - let source = item.source; - - // if WebGL1, convert whatever we have into a typed array - if (!isWebGL2) { - if (source instanceof ImageData) { - source = source.data; // pass the typed array directly - } else if (source instanceof HTMLCanvasElement) { - const ctx = source.getContext('2d'); - const [w, h] = [source.width, source.height]; - source = ctx.getImageData(0, 0, w, h).data; - } else if (source instanceof HTMLImageElement) { - const [w, h] = [source.naturalWidth, source.naturalHeight]; - const canvas = document.createElement('canvas'); - canvas.width = w; - canvas.height = h; - - const ctx = canvas.getContext('2d'); - ctx.drawImage(source, 0, 0); - source = ctx.getImageData(0, 0, w, h).data; - } - } - - gl.texSubImage2D( - target, - 0, - frame.x, - frame.y, - frame.width, - frame.height, - format, - type, - source as any, - ); - - item.updateId = item.dirtyId; - } -} \ No newline at end of file diff --git a/packages/texture-allocator/src/AtlasSource.ts b/packages/texture-allocator/src/AtlasSource.ts new file mode 100644 index 00000000..a5b7b11c --- /dev/null +++ b/packages/texture-allocator/src/AtlasSource.ts @@ -0,0 +1,222 @@ +import { GlTextureSystem, Renderer, TextureSource } from 'pixi.js'; + +import type { GlRenderingContext, GlTexture, GLTextureUploader, GPU, GpuTextureUploader, Rectangle, Texture } from 'pixi.js'; + +/** + * Types of image sources supported by {@link AtlasSource}. + * + * @public + */ +export type AtlasItemSource = HTMLImageElement | HTMLCanvasElement | ImageBitmap | ImageData | ArrayBufferView; + +/** + * An item that is uploaded to the atlas texture. + * + * @public + */ +export type AtlasItem = +{ + /** + * The location of the atlas item in the base-texture's space. + */ + frame: Rectangle; + + /** + * The source of the texture data. + */ + source: AtlasItemSource; + + /** + * This flags when the resource is to be re-uploaded. + */ + dirtyId: number; + + /** + * This flags when the resource is uploaded and update-to-date with the dirty ID. + */ + updateId: number; + + /** + * The texture holding this item. + */ + texture: Texture; +}; + +/** + * An {@code AtlasSource} is used by {@link AtlasAllocator} to manage texture sources. + * + * @public + */ +export class AtlasSource extends TextureSource +{ + /** + * The list of managed texture sources in the atlas. + */ + public managedItems: AtlasItem[]; + + public uploadMethodId = 'atlas'; + + /** + * Creates an atlas resource. + * + * @param width + * @param height + */ + constructor(width: number, height: number) + { + super({ + width, + height, + }); + + this.managedItems = []; + } +} + +let didWarnUnsupportedAtlasSource = false; + +const glUploadAtlasResource = { + id: 'atlas', + upload(source: AtlasSource, glTexture: GlTexture, gl: GlRenderingContext, webGLVersion: number): void + { + const { width, height } = source; + const premultipliedAlpha = source.alphaMode === 'premultiply-alpha-on-upload'; + + gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, premultipliedAlpha); + + // Allocate the texture on the GPU + if (glTexture.width !== width || glTexture.height !== height) + { + glTexture.width = width; + glTexture.height = height; + + gl.texImage2D( + glTexture.target, + 0, + glTexture.format, + width, + height, + 0, + glTexture.format, + glTexture.type, + undefined, + ); + } + + const items = source.managedItems; + + // Upload all atlas items. + for (let i = 0, j = items.length; i < j; i++) + { + const item = items[i]; + + if (item.updateId === item.dirtyId) + { + continue; + } + + const frame = item.frame; + let source = item.source; + + if (webGLVersion === 1) + { + if (source instanceof ImageData) + { + source = source.data; // pass the typed array directly + } + else if (source instanceof HTMLCanvasElement) + { + const ctx = source.getContext('2d'); + const [w, h] = [source.width, source.height]; + + source = ctx.getImageData(0, 0, w, h).data; + } + else if (source instanceof HTMLImageElement) + { + const [w, h] = [source.naturalWidth, source.naturalHeight]; + const canvas = document.createElement('canvas'); + + canvas.width = w; + canvas.height = h; + + const ctx = canvas.getContext('2d'); + + ctx.drawImage(source, 0, 0); + source = ctx.getImageData(0, 0, w, h).data; + } + else + if (!didWarnUnsupportedAtlasSource) + { + console.warn('Unsupported atlas source type. Failed to upload on WebGL 1', source); + didWarnUnsupportedAtlasSource = true; + } + } + + gl.texSubImage2D( + glTexture.target, + 0, + frame.x, + frame.y, + frame.width, + frame.height, + glTexture.format, + glTexture.type, + source as any, + ); + + item.updateId = item.dirtyId; + } + }, +} satisfies GLTextureUploader; + +const gpuUploadAtlasResource = { + type: 'atlas', + upload(source: AtlasSource, gpuTexture: GPUTexture, gpu: GPU): void + { + const premultipliedAlpha = source.alphaMode === 'premultiply-alpha-on-upload'; + + for (const item of source.managedItems) + { + if (item.updateId === item.dirtyId) + { + continue; + } + + gpu.device.queue.copyExternalImageToTexture( + // TODO: Why does this need to be casted? + { source: item.source as any }, + { + texture: gpuTexture, premultipliedAlpha, + origin: { + x: item.frame.x, + y: item.frame.y, + }, + }, + { + height: item.frame.height, + width: item.frame.width, + }, + ); + } + }, +} satisfies GpuTextureUploader; + +/** + * Registers the optimized atlas texture uploader for use in WebGL. + * + * @param renderer + * @public + */ +export function optimizeAtlasUploads(renderer: Renderer): void +{ + if (renderer.texture instanceof GlTextureSystem) + { + // eslint-disable-next-line dot-notation + renderer.texture['_uploads'].atlas = glUploadAtlasResource; + } + else + { + // eslint-disable-next-line dot-notation + renderer.texture['_uploads'].atlas = gpuUploadAtlasResource; + } +} diff --git a/packages/texture-allocator/src/CanvasTextureAllocator.ts b/packages/texture-allocator/src/CanvasTextureAllocator.ts index 88f2f89c..3a0f9359 100644 --- a/packages/texture-allocator/src/CanvasTextureAllocator.ts +++ b/packages/texture-allocator/src/CanvasTextureAllocator.ts @@ -1,33 +1,22 @@ -import { GuilloteneAllocator } from '@pixi-essentials/area-allocator'; -import { BaseTexture } from '@pixi/core'; +import { CanvasSource } from 'pixi.js'; import { TextureAllocator } from './TextureAllocator'; -import { TextureSlab } from './TextureSlab'; /** - * This allocator issues texture backed by a canvas. You can draw on to that canvas to soruce + * This allocator issues texture backed by a canvas. You can draw on to that canvas to source * each texture. - * + * * @public */ -export class CanvasTextureAllocator extends TextureAllocator +export class CanvasTextureAllocator extends TextureAllocator { /** * Creates a texture slab backed by a canvas. */ - protected createSlab(): TextureSlab + protected override createSlabSource(): CanvasSource { - const canvas = document.createElement('canvas'); - - canvas.width = this.slabWidth; - canvas.height = this.slabHeight; - - return { - managedArea: new GuilloteneAllocator(this.slabWidth, this.slabHeight), - managedTextures: [], - slab: new BaseTexture(canvas, { - width: this.slabWidth, - height: this.slabHeight - }) - }; + return new CanvasSource({ + height: this.slabHeight, + width: this.slabWidth, + }); } -} \ No newline at end of file +} diff --git a/packages/texture-allocator/src/RenderTextureAllocator.ts b/packages/texture-allocator/src/RenderTextureAllocator.ts index 68fdac11..271ce46b 100644 --- a/packages/texture-allocator/src/RenderTextureAllocator.ts +++ b/packages/texture-allocator/src/RenderTextureAllocator.ts @@ -1,41 +1,37 @@ -import { BaseRenderTexture, RenderTexture } from '@pixi/core'; -import { GuilloteneAllocator } from '@pixi-essentials/area-allocator'; +import { RenderTexture, TextureSource } from 'pixi.js'; import { TextureAllocator } from './TextureAllocator'; -import type { BaseTexture } from '@pixi/core'; -import type { Rectangle } from '@pixi/math'; -import type { TextureSlab } from './TextureSlab'; +import type { Rectangle } from 'pixi.js'; /** * This allocator issues render-textures, and is otherwise just like {@link TextureAllocator}. - * + * * @public */ -export class RenderTextureAllocator extends TextureAllocator +export class RenderTextureAllocator extends TextureAllocator { /** * Creates a texture slab backed by a base render-texture. */ - protected createSlab(): TextureSlab + protected override createSlabSource(): TextureSource { - return { - managedArea: new GuilloteneAllocator(this.slabWidth, this.slabHeight), - managedTextures: [], - slab: new BaseRenderTexture({ - width: this.slabWidth, - height: this.slabHeight - }) - }; + return new TextureSource({ + height: this.slabHeight, + width: this.slabWidth, + }); } /** * Creates a render-texture from the given base render-texture. * - * @param baseTexture - * @param frame + * @param source + * @param frame */ - protected createTexture(baseTexture: BaseTexture, frame: Rectangle): RenderTexture + protected override createTexture(source: TextureSource, frame: Rectangle): RenderTexture { - return new RenderTexture(baseTexture as BaseRenderTexture, frame); + return new RenderTexture({ + frame, + source, + }); } -} \ No newline at end of file +} diff --git a/packages/texture-allocator/src/TextureAllocator.ts b/packages/texture-allocator/src/TextureAllocator.ts index b848d340..039cf777 100644 --- a/packages/texture-allocator/src/TextureAllocator.ts +++ b/packages/texture-allocator/src/TextureAllocator.ts @@ -1,18 +1,22 @@ -import { BaseTexture, Texture } from '@pixi/core'; +import { Rectangle, Texture, TextureSource } from 'pixi.js'; import { GuilloteneAllocator } from '@pixi-essentials/area-allocator'; -import { Rectangle } from '@pixi/math'; import type { TextureSlab } from './TextureSlab'; const tempRect = new Rectangle(); +function padded(val: number, padding: number): number +{ + return val + (2 * padding); +} + /** * The texture allocator dynamically manages space on base-texture slabs. It can be used to generate * atlases on demand, which improve batching efficiency. - * + * * @public */ -export class TextureAllocator +export abstract class TextureAllocator { /** * The width of texture slabs. @@ -27,7 +31,7 @@ export class TextureAllocator /** * The list of base-textures that are used to allocate texture space. */ - protected textureSlabs: TextureSlab[]; + protected textureSlabs: TextureSlab[]; /** * @param slabWidth - The width of base-texture slabs. This should be at most 2048. @@ -41,22 +45,24 @@ export class TextureAllocator this.textureSlabs = []; } - get maxWidth() { + get maxWidth(): number + { return this.slabWidth - (2 * this.calculatePadding(this.slabWidth, this.slabHeight)); } - get maxHeight() { + get maxHeight(): number + { return this.slabHeight - (2 * this.calculatePadding(this.slabWidth, this.slabHeight)); } /** - * Allocates a texture from this allocator. - * + * Allocates a texture from this allocator. + * * If its existing slab pool has enough space, the texture is issued from one. Otherwise, * a new slab is created and the texture is issued from it. However, if the requested * dimensions are larger than slabs themselves, then `null` is always returned. - * - * To upload a texture source, you will have to create an atlas-managing {@link Resource} + * + * To upload a texture source, you will have to create an atlas-managing {@link TextureSource} * yourself on the base-texture. The {@link AtlasAllocator} does this for you, while the * {@link CanvasTextureAllocator} can be used to draw on a canvas-based atlas. * @@ -68,8 +74,8 @@ export class TextureAllocator allocate(width: number, height: number, padding = this.calculatePadding(width, height)): T { // Cannot allocate a texture larger than a texture-slab. - if (width + 2 * padding > this.slabWidth || - height + 2 * padding > this.slabHeight) + if (padded(width, padding) > this.slabWidth + || padded(height, padding) > this.slabHeight) { return null; } @@ -102,29 +108,28 @@ export class TextureAllocator * Frees the texture and reclaims its space. It is assumed you will not use it again, and have * destroyed any resource uploading its data. * - * @param texture + * @param texture * @throws When the texture was not located in this allocator. */ free(texture: T): void { - const baseTexture = (texture as Texture).baseTexture; - const slab = this.textureSlabs.find(sl => sl.slab === baseTexture); + const slab = this.textureSlabs.find((sl) => sl.slab === texture.source); if (!slab) { - throw new Error("The texture cannot be freed because " + - "its base-texture is not pooled by this allocator. " + - "This is either a bug in TextureAllocator or you tried to free a " + - "texture that was never allocated by one."); + throw new Error('The texture cannot be freed because ' + + 'its base-texture is not pooled by this allocator. ' + + 'This is either a bug in TextureAllocator or you tried to free a ' + + 'texture that was never allocated by one.'); } - const textureEntry = slab.managedTextures.find(entry => entry.texture === texture); + const textureEntry = slab.managedTextures.find((entry) => entry.texture === texture); if (!textureEntry) { - throw new Error("The texture cannot be freed because it was not found " + - "in the managed list of issued textures on its slab. This may be because you " + - "duplicated this texture or a bug in TextureAllocator"); + throw new Error('The texture cannot be freed because it was not found ' + + 'in the managed list of issued textures on its slab. This may be because you ' + + 'duplicated this texture or a bug in TextureAllocator'); } slab.managedArea.free(textureEntry.area); @@ -147,40 +152,37 @@ export class TextureAllocator { return 8; } - else - { - return 16; - } + + return 16; } /** - * Creates a texture slab. The slab's base-texture is not backed by any resource. You - * will have to manage that yourself. See {@link AtlasAllocator} or {@link CanvasTextureAllocator} - * for better resource semantics. + * Creates a texture slab. Uses {@link this.createSlabSource} to initialize the texture data. */ - protected createSlab(): TextureSlab + protected createSlab(): TextureSlab { return { managedArea: new GuilloteneAllocator(this.slabWidth, this.slabHeight), managedTextures: [], - slab: new BaseTexture(null, - { - width: this.slabWidth, - height: this.slabHeight, - }), + slab: this.createSlabSource(), }; } + /** + * Creates a new texture source to initialize a texture slab. + */ + protected abstract createSlabSource(): S; + /** * Creates a texture on the given base-texture at {@code frame}. * - * @param baseTexture - The base texture that will hold the texture's space. + * @param source - The atlas source that will hold the texture's space. * @param frame - The frame in which the texture will be stored. */ - protected createTexture(baseTexture: BaseTexture, frame: Rectangle): T + protected createTexture(source: S, frame: Rectangle): T { // Override this method to return correct texture type T. - return new Texture(baseTexture, frame) as T; + return new Texture({ source, frame }) as unknown as T; } /** @@ -192,9 +194,9 @@ export class TextureAllocator * @param padding - Padding required around the texture. * @return The issued texture, if successful; otherwise, `null`. */ - protected issueTexture(slab: TextureSlab, width: number, height: number, padding = 0): T + protected issueTexture(slab: TextureSlab, width: number, height: number, padding = 0): T { - const area = slab.managedArea.allocate(width + 2 * padding, height + 2 * padding); + const area = slab.managedArea.allocate(width + (2 * padding), height + (2 * padding)); if (!area) { @@ -204,8 +206,7 @@ export class TextureAllocator tempRect.copyFrom(area); tempRect.pad(-padding); - const baseTexture = slab.slab; - const issuedTexture = this.createTexture(baseTexture, tempRect.clone()); + const issuedTexture = this.createTexture(slab.slab, tempRect.clone()); slab.managedTextures.push({ area, @@ -214,4 +215,4 @@ export class TextureAllocator return issuedTexture; } -} \ No newline at end of file +} diff --git a/packages/texture-allocator/src/TextureSlab.ts b/packages/texture-allocator/src/TextureSlab.ts index 26032ee2..df5855af 100644 --- a/packages/texture-allocator/src/TextureSlab.ts +++ b/packages/texture-allocator/src/TextureSlab.ts @@ -1,13 +1,12 @@ +import type { Rectangle, Texture, TextureSource } from 'pixi.js'; import type { AreaAllocator } from '@pixi-essentials/area-allocator'; -import type { BaseTexture, Texture } from '@pixi/core'; -import type { Rectangle } from '@pixi/math'; /** * An entry of an issued texture from a {@link TextureSlab}. - * + * * @public */ -export type TextureEntry = +export type TextureEntry = { /** * The area returned by the area allocator, with the `__mem_area` key. @@ -23,16 +22,16 @@ export type TextureEntry = /** * A texture slab holds a managed base-texture that is used to issue allocated texture space. The * texture allocator maintains a pool of these texture slabs. - * + * * @public */ -export type TextureSlab = +export type TextureSlab = { /** * The area allocator that issues texture space. */ managedArea: AreaAllocator; - + /** * The list of allocated textures and their area. */ @@ -41,5 +40,5 @@ export type TextureSlab = /** * The base-texture that holds all the issued textures. */ - slab: BaseTexture; -}; \ No newline at end of file + slab: T; +}; diff --git a/packages/texture-allocator/src/index.ts b/packages/texture-allocator/src/index.ts index 204ae411..e6a79389 100644 --- a/packages/texture-allocator/src/index.ts +++ b/packages/texture-allocator/src/index.ts @@ -1,6 +1,6 @@ export * from './AtlasAllocator'; -export * from './AtlasResource'; +export * from './AtlasSource'; export * from './CanvasTextureAllocator'; export * from './RenderTextureAllocator'; export * from './TextureAllocator'; -export * from './TextureSlab'; \ No newline at end of file +export * from './TextureSlab'; diff --git a/packages/transformer/package.json b/packages/transformer/package.json index 949453ca..a81b76fe 100644 --- a/packages/transformer/package.json +++ b/packages/transformer/package.json @@ -45,10 +45,10 @@ "@pixi-essentials/eslint-config": "~1.0.0", "@pixi-build-tools/rollup-configurator": "^1.0.10", "tslib": "~2.0.1", - "typescript": "~4.9.5", + "typescript": "~5.3.3", "eslint": "~7.7.0", "rollup": "~2.27.0", - "@microsoft/api-extractor": "~7.16.1" + "@microsoft/api-extractor": "~7.47.9" }, "publishConfig": { "access": "public" diff --git a/packages/types/package.json b/packages/types/package.json index b74a66a6..1c685f63 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -38,9 +38,10 @@ "@pixi/math": "^5.1.0", "@pixi-build-tools/rollup-configurator": "^1.0.10", "tslib": "~2.0.1", - "typescript": "~4.9.5", + "typescript": "~5.3.3", "eslint": "~7.7.0", "@pixi-essentials/eslint-config": "~1.0.0", - "rollup": "~2.27.0" + "rollup": "~2.27.0", + "@microsoft/api-extractor": "~7.47.9" } } diff --git a/rush.json b/rush.json index 3f3e3529..99e75a32 100644 --- a/rush.json +++ b/rush.json @@ -1,13 +1,13 @@ { "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/rush.schema.json", - "rushVersion": "5.90.0", - "pnpmVersion": "7.25.0", + "rushVersion": "5.122.0", + "pnpmVersion": "8.15.6", "pnpmOptions": { "pnpmStore": "global", "strictPeerDependencies": false, "resolutionStrategy": "fast" }, - "nodeSupportedVersionRange": ">=14.0.0 <19.0.0", + "nodeSupportedVersionRange": ">=18.0.0 <=23.0.0", "suppressNodeLtsWarning": true, "repository": { "url": "https://github.com/SukantPal/pixi-essentials", @@ -63,6 +63,12 @@ "reviewCategory": "development", "shouldPublish": false }, + { + "packageName": "@pixi-essentials/examples", + "projectFolder": "examples", + "reviewCategory": "development", + "shouldPublish": false + }, { "packageName": "@pixi-essentials/filter-fft", "projectFolder": "packages/filter-fft", diff --git a/tools/eslint-config/package.json b/tools/eslint-config/package.json index b348a1cc..2ce7604a 100644 --- a/tools/eslint-config/package.json +++ b/tools/eslint-config/package.json @@ -23,8 +23,8 @@ "homepage": "https://github.com/SukantPal/pixi-essentials#readme", "dependencies": { "@rushstack/eslint-patch": "~1.0.3", - "@pixi/eslint-config": "~1.0.1", - "@typescript-eslint/parser": "~3.9.1", - "@typescript-eslint/eslint-plugin": "~3.9.1" + "@pixi/eslint-config": "~5.1.0", + "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^6.21.0" } } \ No newline at end of file diff --git a/tools/unit-tests/package.json b/tools/unit-tests/package.json index fb4fbc64..74614f90 100644 --- a/tools/unit-tests/package.json +++ b/tools/unit-tests/package.json @@ -22,7 +22,7 @@ "floss": "^4.0.0", "@pixi-build-tools/floss-rush-monorepo": "1.0.1", "eslint": "~7.7.0", - "@pixi/eslint-config": "~1.0.1", + "@pixi/eslint-config": "~5.1.0", "@typescript-eslint/eslint-plugin": "~3.9.1", "@typescript-eslint/parser": "~3.9.1" } diff --git a/tsconfig.json b/tsconfig.json index 85c41385..96a088a7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es6", + "target": "es2020", "allowJs": true, "sourceMap": true, "removeComments": false,