diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..6512b512 --- /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: Install Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + + - name: Setup PNPM + uses: pnpm/action-setup@v4 + with: + version: 8.15.6 + env: + ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' + - 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..09cabe64 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,34 @@ +name: Lint + +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: Install Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + + - name: Setup PNPM + uses: pnpm/action-setup@v4 + with: + version: 8.15.6 + env: + ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' + - 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 b6cea58d..00000000 --- a/.github/workflows/node.js.yml +++ /dev/null @@ -1,39 +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: [20.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 - uses: pnpm/action-setup@v3 - with: - version: 8.6.0 - 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..8b765c0f --- /dev/null +++ b/.github/workflows/type-check.yml @@ -0,0 +1,34 @@ +name: Type Check + +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: Install Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + + - name: Setup PNPM + uses: pnpm/action-setup@v4 + with: + version: 8.15.6 + env: + ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' + - run: pnpm i -g @microsoft/rush + + - run: rush install + - run: rush build:types -f @pixi-essentials/svg + 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 9eb6de65..3ef9a9c2 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -15,8 +15,8 @@ dependencies: specifier: ^5.1.0 version: 5.3.12 '@pixi/eslint-config': - specifier: ~1.0.1 - version: 1.0.1 + specifier: ~5.1.0 + version: 5.1.0(typescript@5.3.3) '@pixi/graphics': specifier: ^7.0.0 version: 7.1.4 @@ -61,7 +61,7 @@ dependencies: 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 + version: file:projects/eslint-config.tgz(typescript@5.3.3) '@rush-temp/examples': specifier: file:./projects/examples.tgz version: file:projects/examples.tgz @@ -103,19 +103,13 @@ dependencies: version: file:projects/types.tgz '@rush-temp/unit-tests': specifier: file:./projects/unit-tests.tgz - version: 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 - '@typescript-eslint/eslint-plugin': - specifier: ~3.9.1 - version: 3.9.1(@typescript-eslint/parser@3.9.1)(eslint@7.7.0) - '@typescript-eslint/parser': - specifier: ~3.9.1 - version: 3.9.1(eslint@7.7.0) d-path-parser: specifier: ^1.0.0 version: 1.0.0 @@ -137,6 +131,9 @@ dependencies: tinycolor2: specifier: ^1.4.1 version: 1.6.0 + typescript: + specifier: ~5.3.3 + version: 5.3.3 packages: @@ -190,6 +187,31 @@ packages: - supports-color dev: false + /@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} @@ -309,12 +331,14 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: false - /@microsoft/api-extractor-model@7.13.3: - resolution: {integrity: sha512-uXilAhu2GcvyY/0NwVRk3AN7TFYjkPnjHLV2UywTTz9uglS+Af0YjNrCy+aaK8qXtfbFWdBzkH9N2XU8/YBeRQ==} + /@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: @@ -324,22 +348,25 @@ packages: '@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: @@ -394,21 +421,21 @@ 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: 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: @@ -565,40 +592,50 @@ packages: 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(@typescript-eslint/parser@2.34.0) - '@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.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.13.0)(typescript@4.9.5): - 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(@typescript-eslint/parser@2.34.0)(eslint@7.13.0)(typescript@4.9.5) - '@typescript-eslint/parser': 2.34.0(eslint@7.13.0)(typescript@4.9.5) - typescript: 4.9.5 + '@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: - - 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(typescript@5.3.3): + resolution: {integrity: sha512-J1/YOGs4tVOleZU1WyoglZQyWHHbZjOyrma2ZbtpLYwmRzAqYesda1RrbMlcWXcAsVqSyothwMuOJxHNBojT1Q==} peerDependencies: - typescript: ^3.8.3 - dependencies: - '@typescript-eslint/eslint-plugin': 2.34.0(@typescript-eslint/parser@2.34.0)(eslint@7.7.0) - '@typescript-eslint/parser': 2.34.0(eslint@7.7.0) + 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 @@ -1059,6 +1096,10 @@ packages: 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 @@ -1088,18 +1129,22 @@ 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: @@ -1108,10 +1153,10 @@ packages: '@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 @@ -1121,6 +1166,29 @@ packages: colors: 1.2.5 dev: false + /@rushstack/terminal@0.14.2: + resolution: {integrity: sha512-2fC1wqu1VCExKC0/L+0noVcFQEXEnoBOtCIex1TOjBzEDWcw8KzJjjj7aTP6mLxepG0XIyn9OufeFb6SFsa+sg==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@rushstack/node-core-library': 5.9.0 + supports-color: 8.1.1 + dev: false + + /@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 + string-argv: 0.3.1 + transitivePeerDependencies: + - '@types/node' + dev: false + /@rushstack/ts-command-line@4.3.14: resolution: {integrity: sha512-YJZIyKvkm3f6ZdKSfMntHS9542Y2mmMWzaiPPoXxLFZntKxEIDE3WfUNlvOSo3yK4fNd09Tz3hfvTivQNHSiKQ==} dependencies: @@ -1138,15 +1206,6 @@ packages: string-argv: 0.3.1 dev: false - /@rushstack/ts-command-line@4.7.10: - resolution: {integrity: sha512-8t042g8eerypNOEcdpxwRA3uCmz0duMo21rG4Z2mdz7JxJeylDmzjlU3wDdef2t3P1Z61JCdZB6fbm1Mh0zi7w==} - dependencies: - '@types/argparse': 1.0.38 - argparse: 1.0.10 - colors: 1.2.5 - string-argv: 0.3.1 - dev: false - /@sindresorhus/is@0.14.0: resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} engines: {node: '>=6'} @@ -1244,6 +1303,14 @@ packages: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: false + /@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 @@ -1286,146 +1353,153 @@ packages: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} dev: false - /@typescript-eslint/eslint-plugin@2.34.0(@typescript-eslint/parser@2.34.0): - 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(eslint@7.7.0) - '@typescript-eslint/parser': 2.34.0(eslint@7.7.0) - functional-red-black-tree: 1.0.1 - regexpp: 3.2.0 - tsutils: 3.21.0(typescript@4.9.5) - transitivePeerDependencies: - - supports-color + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} dev: false - /@typescript-eslint/eslint-plugin@2.34.0(@typescript-eslint/parser@2.34.0)(eslint@7.13.0)(typescript@4.9.5): - 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.13.0)(typescript@4.9.5) - '@typescript-eslint/parser': 2.34.0(eslint@7.13.0)(typescript@4.9.5) + '@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(typescript@4.9.5) - typescript: 4.9.5 + 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@2.34.0(@typescript-eslint/parser@2.34.0)(eslint@7.7.0): - 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.7.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) + '@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 - tsutils: 3.21.0(typescript@4.9.5) + 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(@typescript-eslint/parser@3.9.1): - 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(eslint@7.7.0) - '@typescript-eslint/parser': 3.9.1(eslint@7.7.0) + '@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(typescript@4.9.5) + 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/eslint-plugin@3.9.1(@typescript-eslint/parser@3.9.1)(eslint@7.13.0)(typescript@4.9.5): - 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.7.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(eslint@7.13.0)(typescript@4.9.5) - '@typescript-eslint/parser': 3.9.1(eslint@7.13.0)(typescript@4.9.5) + '@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.13.0 - functional-red-black-tree: 1.0.1 - regexpp: 3.2.0 - semver: 7.3.8 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + 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 dev: false - /@typescript-eslint/eslint-plugin@3.9.1(@typescript-eslint/parser@3.9.1)(eslint@7.7.0): - 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)(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(eslint@7.7.0) - '@typescript-eslint/parser': 3.9.1(eslint@7.7.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 - eslint: 7.7.0 - functional-red-black-tree: 1.0.1 - regexpp: 3.2.0 - semver: 7.3.8 - tsutils: 3.21.0(typescript@4.9.5) + 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(eslint@7.13.0)(typescript@4.9.5): - resolution: {integrity: sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.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: eslint: '*' dependencies: '@types/json-schema': 7.0.11 - '@typescript-eslint/typescript-estree': 2.34.0(typescript@4.9.5) + '@typescript-eslint/types': 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 @@ -1434,14 +1508,15 @@ packages: - 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/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: eslint: '*' dependencies: '@types/json-schema': 7.0.11 - '@typescript-eslint/typescript-estree': 2.34.0(typescript@4.9.5) + '@typescript-eslint/types': 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 @@ -1450,116 +1525,153 @@ packages: - typescript dev: false - /@typescript-eslint/experimental-utils@3.9.1(eslint@7.13.0)(typescript@4.9.5): - resolution: {integrity: sha512-lkiZ8iBBaYoyEKhCkkw4SAeatXyBq9Ece5bZXdLe1LWBUwTszGbmbiqmQbwWA8cSYDnjWXp9eDbXpf9Sn0hLAg==} + /@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: '*' + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@types/json-schema': 7.0.11 + '@types/eslint-visitor-keys': 1.0.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@4.9.5) + '@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 + eslint-visitor-keys: 1.3.0 + typescript: 5.3.3 transitivePeerDependencies: - supports-color - - typescript dev: false - /@typescript-eslint/experimental-utils@3.9.1(eslint@7.7.0): - resolution: {integrity: sha512-lkiZ8iBBaYoyEKhCkkw4SAeatXyBq9Ece5bZXdLe1LWBUwTszGbmbiqmQbwWA8cSYDnjWXp9eDbXpf9Sn0hLAg==} + /@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: '*' + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@types/json-schema': 7.0.11 + '@types/eslint-visitor-keys': 1.0.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@4.9.5) + '@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 + eslint-visitor-keys: 1.3.0 + typescript: 5.3.3 transitivePeerDependencies: - supports-color - - typescript dev: false - /@typescript-eslint/parser@2.34.0(eslint@7.13.0)(typescript@4.9.5): - resolution: {integrity: sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + /@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 + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@types/eslint-visitor-keys': 1.0.0 - '@typescript-eslint/experimental-utils': 2.34.0(eslint@7.13.0)(typescript@4.9.5) - '@typescript-eslint/typescript-estree': 2.34.0(typescript@4.9.5) + '@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 - eslint-visitor-keys: 1.3.0 - typescript: 4.9.5 + 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@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 + eslint: ^7.0.0 || ^8.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@4.9.5) + '@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/parser@3.9.1(eslint@7.13.0)(typescript@4.9.5): - resolution: {integrity: sha512-y5QvPFUn4Vl4qM40lI+pNWhTcOWtpZAJ8pOEQ21fTTW4xTJkRplMjMRje7LYTXqVKKX9GJhcyweMz2+W1J5bMg==} - engines: {node: ^10.12.0 || >=12.0.0} + /@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/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: ^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.13.0)(typescript@4.9.5) - '@typescript-eslint/types': 3.9.1 - '@typescript-eslint/typescript-estree': 3.9.1(typescript@4.9.5) + '@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: 7.13.0 - eslint-visitor-keys: 1.3.0 - typescript: 4.9.5 + ts-api-utils: 1.3.0(typescript@5.3.3) + 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/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: ^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@4.9.5) + '@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 - eslint-visitor-keys: 1.3.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 @@ -1569,47 +1681,91 @@ packages: engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} dev: false - /@typescript-eslint/typescript-estree@2.34.0(typescript@4.9.5): - resolution: {integrity: sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + /@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: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: + '@typescript-eslint/types': 3.9.1 + '@typescript-eslint/visitor-keys': 3.9.1 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(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/typescript-estree@3.9.1(typescript@4.9.5): - resolution: {integrity: sha512-IqM0gfGxOmIKPhiHW/iyAEXwSVqMmR2wJ9uXHNdFpqVvPaQ3dWg302vW127sBpAiqM9SfHhyS40NKLsoMpN2KA==} - engines: {node: ^10.12.0 || >=12.0.0} + /@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': 3.9.1 - '@typescript-eslint/visitor-keys': 3.9.1 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 - glob: 7.2.3 + globby: 11.1.0 is-glob: 4.0.3 - lodash: 4.17.21 - semver: 7.3.8 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + 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: @@ -1619,6 +1775,14 @@ packages: eslint-visitor-keys: 1.3.0 dev: false + /@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: @@ -1827,6 +1991,23 @@ packages: es6-promisify: 5.0.0 dev: false + /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: @@ -1853,6 +2034,15 @@ packages: uri-js: 4.4.1 dev: false + /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'} @@ -1911,6 +2101,63 @@ packages: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: false + /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'} @@ -1922,6 +2169,20 @@ packages: is-string: 1.0.7 dev: false + /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 @@ -1951,6 +2212,13 @@ packages: engines: {node: '>= 0.4'} dev: false + /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 @@ -2045,6 +2313,17 @@ packages: get-intrinsic: 1.2.0 dev: false + /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'} @@ -2266,6 +2545,33 @@ packages: resolution: {integrity: sha512-CY3xMMjZ0LfS0YFTLcrcZxb79yaJzdnDu7KRTZxsbTjCH11PzQSxgTGRxsFb4F4o4dU069B1InS5n3TUDP1XUg==} dev: false + /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: @@ -2345,6 +2651,15 @@ packages: resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} dev: false + /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'} @@ -2353,6 +2668,15 @@ packages: object-keys: 1.1.1 dev: false + /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'} @@ -2381,6 +2705,20 @@ packages: engines: {node: '>=0.3.1'} dev: false + /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'} @@ -2505,14 +2843,85 @@ packages: which-typed-array: 1.1.9 dev: false + /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-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'} @@ -2522,6 +2931,21 @@ packages: has-tostringtag: 1.0.0 dev: false + /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'} @@ -2544,22 +2968,128 @@ packages: /es6-promisify@5.0.0: resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} dependencies: - es6-promise: 4.2.8 + 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 - /escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} + /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: + '@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: @@ -2587,6 +3117,11 @@ packages: engines: {node: '>=10'} dev: false + /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} @@ -3011,6 +3546,10 @@ packages: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: false + /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'} @@ -3021,6 +3560,16 @@ packages: functions-have-names: 1.2.3 dev: false + /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 @@ -3046,6 +3595,17 @@ packages: has-symbols: 1.0.3 dev: false + /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'} @@ -3068,6 +3628,15 @@ packages: get-intrinsic: 1.2.0 dev: false + /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'} @@ -3195,6 +3764,18 @@ packages: define-properties: 1.2.0 dev: false + /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: @@ -3231,6 +3812,10 @@ packages: resolution: {integrity: sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==} dev: false + /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'} @@ -3256,11 +3841,22 @@ packages: get-intrinsic: 1.2.0 dev: false + /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-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'} @@ -3273,6 +3869,13 @@ packages: has-symbols: 1.0.3 dev: false + /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'} @@ -3280,6 +3883,13 @@ packages: function-bind: 1.1.1 dev: false + /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 @@ -3331,6 +3941,11 @@ packages: engines: {node: '>= 4'} dev: false + /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 @@ -3407,6 +4022,15 @@ packages: side-channel: 1.0.4 dev: false + /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'} @@ -3420,6 +4044,14 @@ packages: is-typed-array: 1.1.10 dev: false + /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 @@ -3461,6 +4093,20 @@ packages: has: 1.0.3 dev: false + /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'} @@ -3499,6 +4145,11 @@ packages: engines: {node: '>= 0.4'} dev: false + /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'} @@ -3543,6 +4194,13 @@ packages: call-bind: 1.0.2 dev: false + /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'} @@ -3575,6 +4233,13 @@ packages: has-tostringtag: 1.0.0 dev: false + /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 @@ -3598,6 +4263,10 @@ packages: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: false + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: false + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: false @@ -3686,6 +4355,13 @@ packages: dev: false optional: true + /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'} @@ -3924,6 +4600,13 @@ packages: 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 @@ -4128,6 +4811,11 @@ packages: resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} dev: false + /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'} @@ -4153,6 +4841,26 @@ packages: object-keys: 1.1.1 dev: false + /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'} @@ -4163,6 +4871,24 @@ packages: es-abstract: 1.21.1 dev: false + /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: @@ -4304,6 +5030,11 @@ packages: isarray: 0.0.1 dev: false + /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 @@ -4439,6 +5170,11 @@ packages: 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'} @@ -4585,6 +5321,16 @@ packages: 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: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} @@ -4627,18 +5373,20 @@ packages: 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 @@ -4884,6 +5632,16 @@ packages: tslib: 1.14.1 dev: false + /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 @@ -4900,6 +5658,15 @@ packages: is-regex: 1.1.4 dev: false + /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 @@ -4934,6 +5701,11 @@ packages: hasBin: true dev: false + /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'} @@ -4942,6 +5714,14 @@ packages: lru-cache: 6.0.0 dev: false + /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'} @@ -4967,6 +5747,28 @@ packages: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: false + /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'} @@ -5036,6 +5838,11 @@ packages: supports-color: 7.2.0 dev: false + /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'} @@ -5166,6 +5973,16 @@ packages: strip-ansi: 6.0.1 dev: false + /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: @@ -5174,6 +5991,14 @@ packages: es-abstract: 1.21.1 dev: false + /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: @@ -5182,6 +6007,15 @@ packages: es-abstract: 1.21.1 dev: false + /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: @@ -5209,6 +6043,11 @@ packages: ansi-regex: 5.0.1 dev: false + /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'} @@ -5415,6 +6254,15 @@ packages: resolution: {integrity: sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==} dev: false + /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 @@ -5435,6 +6283,15 @@ packages: 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 @@ -5443,14 +6300,14 @@ packages: resolution: {integrity: sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==} dev: false - /tsutils@3.21.0(typescript@4.9.5): + /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: 4.9.5 + typescript: 5.3.3 dev: false /tunnel@0.0.6: @@ -5494,6 +6351,38 @@ packages: engines: {node: '>=8'} dev: false + /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: @@ -5502,6 +6391,18 @@ packages: is-typed-array: 1.1.10 dev: false + /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: @@ -5518,21 +6419,21 @@ packages: 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 @@ -5717,6 +6618,17 @@ packages: resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} dev: false + /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'} @@ -5858,42 +6770,43 @@ packages: dev: false file:projects/area-allocator.tgz: - resolution: {integrity: sha512-H4SQJYfzmJStcYXuJbU/LyYN3fgE/ihQDVkzDIpbSklFYLhzYnMHjPeP1MD3dtF9yxjXxkV0t64UDamVI4Ko4w==, 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 + '@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-lTIrYbJR6TNel/WPRFHkUCZA0MllUqrWu1D8TdQFP7YtoCpBezOR+wMIMFKi7zuxQ/qJoj0T9Mws4k1izdjDcQ==, 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 + '@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-6k9ddjPERx2lVFQNSGVw5Ql9oeaD/40069v/u2v9nvbGHWaTeZrTHq4BsT9uM9Bf191fShZS1Ba55L3yeXU1PA==, 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: @@ -5903,19 +6816,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/conic.tgz(@pixi/utils@5.3.12): - resolution: {integrity: sha512-lw063JObNc7vqgOgKAGbSsGWfc0p9k+EwugASJlSMzGRk2dQWDbjsBSnAtCpFmpk8Gk+Qp4Sd5QLu92ejl5EpQ==, tarball: file:projects/conic.tgz} + 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 + '@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 @@ -5927,7 +6840,7 @@ packages: 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' @@ -5936,11 +6849,11 @@ packages: dev: false file:projects/cull.tgz: - resolution: {integrity: sha512-YZAlbOwzQrO8IsBdNAG8DY4GyIpBbhUico/ikX/HOACbLA1UvEq2cBR4z5/QsMPuMchI0hGC1iBctGOqJA/X1w==, 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 + '@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 @@ -5950,14 +6863,14 @@ packages: 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-rlyec+Lc8TMNxAuuOZQ6OGruVoJYSI2qRQl4KzNkCVaW7skX1Pm3QPzT+gsIzkqKNGm7elIsodRsnes1MFstNQ==, 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: @@ -5965,7 +6878,7 @@ 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 @@ -5990,15 +6903,16 @@ packages: - '@types/node' dev: false - file:projects/eslint-config.tgz: - resolution: {integrity: sha512-GnTmodETTCzHTybUz8Mg4+xgAP8wBwWkNY2o47O8zFtkEYDkaRmIjjf2DmQ1WYIWtok0gM9ZkzVcwCorksGYAg==, 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(@typescript-eslint/parser@3.9.1) - '@typescript-eslint/parser': 3.9.1(eslint@7.7.0) + '@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 @@ -6006,24 +6920,24 @@ packages: dev: false file:projects/examples.tgz: - resolution: {integrity: sha512-nDyAi0ZebKMsm27FdJhHe4N1VEO+CtF0/79FrcwR4o2cdlbx9OBZg274KCxqz2Ze1ASKI0ieVouXxsrWAY2fHg==, tarball: 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': 1.0.1(eslint@7.13.0)(typescript@4.9.5) + '@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@4.9.5) - '@typescript-eslint/parser': 3.9.1(eslint@7.13.0)(typescript@4.9.5) + '@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: 4.9.5 + typescript: 5.3.3 webpack: 5.91.0(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack@5.91.0) transitivePeerDependencies: @@ -6031,7 +6945,7 @@ packages: dev: false file:projects/filter-fft.tgz: - resolution: {integrity: sha512-IY3WOPXKgYMQaG9/LbDIcs8bKK8pP6k/yX/gsRbo+ouDgvIvATGr66ZrH42gokbgOIQmqUwNf0+/ptvBYiMk7A==, 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: @@ -6040,31 +6954,31 @@ 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/gradients.tgz: - resolution: {integrity: sha512-Ij0A3OfMl+mYDRodqvx2LKKQbRnb3NRsylkZgfSMe89c5RqnXW75/DC7XMhlNxjgxesHLbIgusJx7VMxnHooRw==, 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 + '@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-IBqPMC+brvjLlroL0Hh9V/7vTNXE+cU0YExUz1RbEvEnFGDmN+NafrIpNOOCn9dAITJK2kLNRH1riaOqVS44ww==, 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: @@ -6075,14 +6989,14 @@ 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/mixin-smart-mask.tgz: - resolution: {integrity: sha512-1xDx3VWjwQaXj3sYKpAWpg7eAKJJfjcfS3rnImc/1Z0dWyLHXsySvOE9dAjGp3nw6sWZmS3cVUU9vk3VesUpKA==, 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: @@ -6094,14 +7008,14 @@ 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-U7HrIoAhCfM60OysxbCppu7WebgAtwnnYWOjbiPcmY2GvlUQZYGlt31AmJW6h+k1UU2W43iJyC24DcVtLVmyIw==, 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: @@ -6114,14 +7028,14 @@ 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(@pixi/constants@5.3.12)(@pixi/graphics@7.1.4)(@pixi/ticker@7.1.4): - resolution: {integrity: sha512-61WBZARG8+XIViLi438mKzoR8bF8d8GNSCH8u3uto6B0HHgjAjle05Ds5coP3MT5H+Jb8N6PgaFfEF7H8STH0w==, tarball: file:projects/react-bindings.tgz} + 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 @@ -6135,7 +7049,7 @@ packages: 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' @@ -6158,7 +7072,7 @@ packages: dev: false file:projects/shader-preprocessor.tgz: - resolution: {integrity: sha512-xvm0bKKrXdS6tpkKCAmnepiySNsOt/IoRhWag1qz+M9bm0ot7S02QN9SyxpeWVVCrDfIYe0pDYgQHHTBqUQDQQ==, 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: @@ -6170,18 +7084,18 @@ 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-qUOIRWGMmYkwyAFUufipBm6uucOSwzx/QeMQVWpRceimcZ8M8fY4b6OVm/u5MAUItuzoQi+Db0Z7+ydXU8NudA==, 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 + '@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 @@ -6197,14 +7111,14 @@ packages: 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-3UTMrtupUOalo54W6aIL1ya+nrutnsu/h7Yx3UiaC1dhQQftnVUuL+bn/g8GdHIMf1s9GKuuipjuLAgBmhGGew==, 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: @@ -6216,18 +7130,18 @@ 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-STCFdKWYuzacKSxF8MvZrTgbHy6tS32VV1eRAGH2ynJkNmYkpSk5f9hJvCZQ99418HjUb/R40dBGXR51FMDbbw==, 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 + '@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 @@ -6236,18 +7150,18 @@ packages: 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-luJbAtM8wpiNmaYVpp6hJIeevzwcFmFSP2O5bzua3uIraliHUMwcKQM8qLKFCNeGmW/wUeRk+C10ku7FOsrUFA==, 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 + '@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 @@ -6257,37 +7171,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/types.tgz: - resolution: {integrity: sha512-rbq20z5R5s9849c/smUG+vTgNKvn8MS+as2Ura4MUQO+qQSKFslOM4u4DnRGrExgnuLrohDB6efvGj7fKbrZQQ==, 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: + '@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-Sb0anZycCXik1+fghAgZx3gL/N8CeYEJiJJSmTsBFp75G7wRpfqXvW03hrWmPO4YWsm609FV/vrJQaNtniYysA==, 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(@typescript-eslint/parser@3.9.1)(eslint@7.7.0) - '@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) diff --git a/examples/package.json b/examples/package.json index 936c436d..9361b00e 100644 --- a/examples/package.json +++ b/examples/package.json @@ -25,7 +25,7 @@ "homepage": "https://github.com/SukantPal/pixi-essentials#readme", "dependencies": { "@rushstack/eslint-patch": "~1.0.3", - "@pixi/eslint-config": "~1.0.1", + "@pixi/eslint-config": "~5.1.0", "@pixi-essentials/gradients": "1.0.1", "@pixi-essentials/texture-allocator": "2.0.1", "@pixi-essentials/svg": "2.0.2", @@ -40,6 +40,6 @@ "@rollup/plugin-sucrase": "^5.0.2", "eslint": "~7.13.0", "rollup": "^2.28.1", - "typescript": "~4.9.5" + "typescript": "~5.3.3" } } 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/package.json b/packages/area-allocator/package.json index ce607f00..f742decc 100644 --- a/packages/area-allocator/package.json +++ b/packages/area-allocator/package.json @@ -7,11 +7,12 @@ "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/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/package.json b/packages/gradients/package.json index f4c7cd35..6aeada90 100644 --- a/packages/gradients/package.json +++ b/packages/gradients/package.json @@ -40,7 +40,7 @@ "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/GradientFactory.ts b/packages/gradients/src/GradientFactory.ts index 4ede8f22..0572d9cc 100644 --- a/packages/gradients/src/GradientFactory.ts +++ b/packages/gradients/src/GradientFactory.ts @@ -1,4 +1,4 @@ -import {CanvasSource, Renderer, Texture} from 'pixi.js'; +import { Renderer, Texture } from 'pixi.js'; import 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/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 889c219b..874c0cc1 100644 --- a/packages/svg/package.json +++ b/packages/svg/package.json @@ -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", @@ -40,8 +41,8 @@ "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.js": "^8.4.0" diff --git a/packages/svg/src/SVGGraphicsNode.ts b/packages/svg/src/SVGGraphicsNode.ts index 301ddd8b..58333641 100644 --- a/packages/svg/src/SVGGraphicsNode.ts +++ b/packages/svg/src/SVGGraphicsNode.ts @@ -1,12 +1,12 @@ import { - Matrix, Graphics, - Point, GraphicsPath, + Matrix, + Point, } from 'pixi.js'; -import type { PaintServer } from './paint/PaintServer'; import type { Renderer } from 'pixi.js'; +import type { PaintServer } from './paint/PaintServer'; import type { SVGSceneContext } from './SVGSceneContext'; const tempMatrix = new Matrix(); diff --git a/packages/svg/src/SVGImageNode.ts b/packages/svg/src/SVGImageNode.ts index b9b06745..0674f10c 100644 --- a/packages/svg/src/SVGImageNode.ts +++ b/packages/svg/src/SVGImageNode.ts @@ -1,4 +1,4 @@ -import { Texture, Matrix, ImageSource } from 'pixi.js'; +import { ImageSource, Matrix, Texture } from 'pixi.js'; import { SVGGraphicsNode } from './SVGGraphicsNode'; const tempMatrix = new Matrix(); diff --git a/packages/svg/src/SVGPathNode.ts b/packages/svg/src/SVGPathNode.ts index f204af2a..666ac81b 100644 --- a/packages/svg/src/SVGPathNode.ts +++ b/packages/svg/src/SVGPathNode.ts @@ -1,6 +1,6 @@ -import { SVGGraphicsNode } from './SVGGraphicsNode'; import dPathParser from 'd-path-parser'; import { GraphicsPath, Point } from 'pixi.js'; +import { SVGGraphicsNode } from './SVGGraphicsNode'; const tempPoint = new Point(); diff --git a/packages/svg/src/SVGScene.ts b/packages/svg/src/SVGScene.ts index eb9b978b..7d6e27fb 100644 --- a/packages/svg/src/SVGScene.ts +++ b/packages/svg/src/SVGScene.ts @@ -1,17 +1,16 @@ -import { CanvasTextureAllocator } from '@pixi-essentials/texture-allocator'; -import { Cull } from '@pixi-essentials/cull'; -import { InheritedPaintProvider } from './paint/InheritedPaintProvider'; -import { MaskServer } from './mask/MaskServer'; -import * as Loader from './loader'; +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 { Bounds, Container, Matrix, Rectangle, Renderer, RenderTexture, Texture } from 'pixi.js'; 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'; @@ -61,11 +60,6 @@ export class SVGScene extends Container */ 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. @@ -134,7 +128,8 @@ export class SVGScene extends Container * * @param renderer */ - drawPaints(renderer: Renderer): void { + drawPaints(renderer: Renderer): void + { for (const node of this._elementToRenderNode.values()) { const paintServers = ((node as any)?.paintServers ?? []) as PaintServer[]; @@ -360,8 +355,8 @@ export class SVGScene extends Container basePaint?: Paint; } = {}, ): { - paint: Paint; - } + paint: Paint; + } { const { basePaint, @@ -441,7 +436,7 @@ export class SVGScene extends Container ...this._context, disableRootPopulation: true, }), - svgDocument.querySelector('#' + useTargetURL.split('#')[1]) + svgDocument.querySelector(`#${useTargetURL.split('#')[1]}`) ] as [SVGScene, SVGElement]) .then(([shellScene, useTarget]) => { @@ -459,7 +454,8 @@ export class SVGScene extends Container this._transformDirty = true; - shellScene.on(TRANSFORM_DIRTY, () => { + shellScene.on(TRANSFORM_DIRTY, () => + { this._transformDirty = true; }); }); @@ -532,7 +528,7 @@ export class SVGScene extends Container // TODO: Support dashed strokes. // dashArray: strokeDashArray, // dashOffset: strokeDashOffset === null ? strokeDashOffset : 0, - join: strokeLineJoin === null ? 'miter' : strokeLineJoin as unknown as LineJoin, + join: strokeLineJoin === null ? 'miter' : strokeLineJoin as unknown as LineJoin, matrix: new Matrix(), miterLimit: strokeMiterLimit === null ? 150 : strokeMiterLimit, texture: strokeTexture || Texture.WHITE, @@ -636,8 +632,6 @@ export class SVGScene extends Container paintServer.resolvePaintDimensions(bbox.rectangle); }); - console.log(node.context.instructions) - const instructions = node.context.instructions; for (const instruction of instructions) @@ -740,7 +734,8 @@ export class SVGScene extends Container * @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/SVGTextEngineImpl.ts b/packages/svg/src/SVGTextEngineImpl.ts index fc45a135..fc7ce8b4 100644 --- a/packages/svg/src/SVGTextEngineImpl.ts +++ b/packages/svg/src/SVGTextEngineImpl.ts @@ -1,13 +1,13 @@ -import { NODE_TRANSFORM_DIRTY } from './const'; import { CanvasTextMetrics, + fontStringFromTextStyle, Sprite, - Texture, TextStyle, - fontStringFromTextStyle, + Texture, } from 'pixi.js'; +import { NODE_TRANSFORM_DIRTY } from './const'; -import type { PointData, Matrix } from 'pixi.js'; +import type { Matrix, PointData } from 'pixi.js'; import type { SVGTextEngine } from './SVGTextEngine'; /** @@ -101,7 +101,7 @@ 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 = CanvasTextMetrics.measureText(content, new TextStyle(style), this.canvas, false); const textStyle = new TextStyle(style); diff --git a/packages/svg/src/SVGTextNode.ts b/packages/svg/src/SVGTextNode.ts index 74541228..b3681af9 100644 --- a/packages/svg/src/SVGTextNode.ts +++ b/packages/svg/src/SVGTextNode.ts @@ -41,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/index.ts b/packages/svg/src/index.ts index 67a4c0b6..dbf6f739 100644 --- a/packages/svg/src/index.ts +++ b/packages/svg/src/index.ts @@ -1,21 +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 './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'; +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/MaskServer.ts b/packages/svg/src/mask/MaskServer.ts index 2073d553..5ea7d1e0 100644 --- a/packages/svg/src/mask/MaskServer.ts +++ b/packages/svg/src/mask/MaskServer.ts @@ -1,10 +1,10 @@ -import { Rectangle, Sprite } from 'pixi.js'; -import { l2rFilter } from './L2RFilter'; +import { Sprite } from 'pixi.js'; -import type { Container, ContainerChild, Renderer, RenderTexture } from 'pixi.js'; +// 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 @@ -31,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 */ @@ -61,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: 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(); - } - } + // 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 09d45344..9015f215 100644 --- a/packages/svg/src/paint/InheritedPaintProvider.ts +++ b/packages/svg/src/paint/InheritedPaintProvider.ts @@ -1,5 +1,5 @@ -import type { Paint } from './Paint'; 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 diff --git a/packages/svg/src/paint/PaintProvider.ts b/packages/svg/src/paint/PaintProvider.ts index 2286543e..3cfdc327 100644 --- a/packages/svg/src/paint/PaintProvider.ts +++ b/packages/svg/src/paint/PaintProvider.ts @@ -1,7 +1,7 @@ import color from 'tinycolor2'; -import type { Paint } from './Paint'; 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 diff --git a/packages/svg/src/paint/PaintServer.ts b/packages/svg/src/paint/PaintServer.ts index 6f798e61..f640263d 100644 --- a/packages/svg/src/paint/PaintServer.ts +++ b/packages/svg/src/paint/PaintServer.ts @@ -1,5 +1,5 @@ -import { GradientFactory } from '@pixi-essentials/gradients'; import { PaintProvider } from './PaintProvider'; +import { GradientFactory } from '@pixi-essentials/gradients'; import type { Rectangle, Renderer, RenderTexture, Texture } from 'pixi.js'; import type { ColorStop } from '@pixi-essentials/gradients'; diff --git a/packages/svg/src/style/DashedLineStyle.ts b/packages/svg/src/style/DashedLineStyle.ts index 7eba7f43..f5c0577c 100644 --- a/packages/svg/src/style/DashedLineStyle.ts +++ b/packages/svg/src/style/DashedLineStyle.ts @@ -1,6 +1,7 @@ import { ConvertedStrokeStyle, StrokeStyle } from 'pixi.js'; -export interface DashedStrokeStyle extends StrokeStyle { +export interface DashedStrokeStyle extends StrokeStyle +{ dashArray: number[]; dashOffset: number; } diff --git a/packages/svg/src/utils/Path.ts b/packages/svg/src/utils/Path.ts index c0344b90..0319529c 100644 --- a/packages/svg/src/utils/Path.ts +++ b/packages/svg/src/utils/Path.ts @@ -14,7 +14,8 @@ export type Contour = Array; * * @public */ -export enum FILL_RULE { +export enum FILL_RULE + { NONZERO = 'nonzero', EVENODD = 'evenodd', } @@ -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; @@ -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,23 +237,23 @@ 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); + 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 910b2568..12c6b238 100644 --- a/packages/svg/src/utils/buildDashedLine.ts +++ b/packages/svg/src/utils/buildDashedLine.ts @@ -1,566 +1,566 @@ -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); - } -} +// 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 a42ec926..5e041308 100644 --- a/packages/svg/src/utils/buildPath.ts +++ b/packages/svg/src/utils/buildPath.ts @@ -1,5 +1,5 @@ -import { FILL_RULE } from './Path'; import * as libtess from 'libtess'; +import { FILL_RULE } from './Path'; import type { Path } from './Path'; @@ -30,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/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 61919e99..8bede2f1 100644 --- a/packages/texture-allocator/package.json +++ b/packages/texture-allocator/package.json @@ -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", @@ -41,10 +42,10 @@ "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 7145d288..665434af 100644 --- a/packages/texture-allocator/src/AtlasAllocator.ts +++ b/packages/texture-allocator/src/AtlasAllocator.ts @@ -1,9 +1,9 @@ -import { AtlasSource, optimizeAtlasUploads } from './AtlasSource'; import { Texture } from 'pixi.js'; +import { AtlasSource, optimizeAtlasUploads } from './AtlasSource'; import { TextureAllocator } from './TextureAllocator'; -import type { AtlasItemSource, AtlasItem } from './AtlasSource'; import type { Renderer } from 'pixi.js'; +import type { AtlasItem, AtlasItemSource } from './AtlasSource'; /** * This texture allocator auto-manages the base-texture with an {@link AtlasSource}. You can also @@ -21,7 +21,8 @@ export class AtlasAllocator extends TextureAllocator * @param slabWidth * @param slabHeight */ - constructor(renderer: Renderer | null, slabWidth = 2048, slabHeight = 2048) { + constructor(renderer: Renderer | null, slabWidth = 2048, slabHeight = 2048) + { super(slabWidth, slabHeight); if (renderer) diff --git a/packages/texture-allocator/src/AtlasSource.ts b/packages/texture-allocator/src/AtlasSource.ts index fa5821c6..a5b7b11c 100644 --- a/packages/texture-allocator/src/AtlasSource.ts +++ b/packages/texture-allocator/src/AtlasSource.ts @@ -1,6 +1,6 @@ import { GlTextureSystem, Renderer, TextureSource } from 'pixi.js'; -import type { GlTexture, GlRenderingContext, GLTextureUploader, GpuTextureUploader, GPU, Rectangle, Texture } from 'pixi.js'; +import type { GlRenderingContext, GlTexture, GLTextureUploader, GPU, GpuTextureUploader, Rectangle, Texture } from 'pixi.js'; /** * Types of image sources supported by {@link AtlasSource}. @@ -183,7 +183,8 @@ const gpuUploadAtlasResource = { } gpu.device.queue.copyExternalImageToTexture( - { source: item.source }, + // TODO: Why does this need to be casted? + { source: item.source as any }, { texture: gpuTexture, premultipliedAlpha, origin: { diff --git a/packages/texture-allocator/src/TextureAllocator.ts b/packages/texture-allocator/src/TextureAllocator.ts index 6cba8c5b..039cf777 100644 --- a/packages/texture-allocator/src/TextureAllocator.ts +++ b/packages/texture-allocator/src/TextureAllocator.ts @@ -182,7 +182,7 @@ export abstract class TextureAllocator, 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) { diff --git a/packages/texture-allocator/src/TextureSlab.ts b/packages/texture-allocator/src/TextureSlab.ts index 17a00fd0..df5855af 100644 --- a/packages/texture-allocator/src/TextureSlab.ts +++ b/packages/texture-allocator/src/TextureSlab.ts @@ -1,5 +1,5 @@ -import type { AreaAllocator } from '@pixi-essentials/area-allocator'; import type { Rectangle, Texture, TextureSource } from 'pixi.js'; +import type { AreaAllocator } from '@pixi-essentials/area-allocator'; /** * An entry of an issued texture from a {@link 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/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" }