From db9d54c68bfe4adaf1d17a5d261d5b3ef9c863bd Mon Sep 17 00:00:00 2001 From: Alexis Munsayac Date: Sat, 18 Mar 2023 17:36:55 +0800 Subject: [PATCH 01/16] Add workflow --- .github/workflows/main.yml | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..2e82958 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,35 @@ +name: CI +on: + - push +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - uses: pnpm/action-setup@v2.2.2 + with: + version: 7 + run_install: | + - recursive: true + args: [--frozen-lockfile] + + - uses: actions/setup-node@v3 + with: + node-version: 16 + cache: 'pnpm' + + - name: Clean + run: pnpm recursive run clean + env: + CI: true + + - name: Build + run: pnpm recursive run build + env: + CI: true + + - name: Begin Tests + run: pnpm recursive run test + env: + CI: true From ab805016864f0fa7ad6fa174ed3b8dd34ecd224d Mon Sep 17 00:00:00 2001 From: Alexis Munsayac Date: Sat, 18 Mar 2023 19:39:27 +0800 Subject: [PATCH 02/16] Bump dependencies --- package.json | 4 ++-- packages/forgetti/package.json | 12 ++++++------ packages/rollup/package.json | 4 ++-- packages/vite/package.json | 8 ++++---- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index 3fa9f81..28c8889 100644 --- a/package.json +++ b/package.json @@ -6,9 +6,9 @@ "examples/*" ], "devDependencies": { - "eslint": "^8.33.0", + "eslint": "^8.36.0", "eslint-config-lxsmnsyc": "^0.4.8", - "lerna": "^6.4.1", + "lerna": "^6.5.1", "typescript": "^4.9.5" } } diff --git a/packages/forgetti/package.json b/packages/forgetti/package.json index bc34f8c..3223e36 100644 --- a/packages/forgetti/package.json +++ b/packages/forgetti/package.json @@ -14,21 +14,21 @@ "pridepack" ], "devDependencies": { - "@babel/core": "^7.20.12", + "@babel/core": "^7.21.3", "@types/babel__core": "^7.20.0", "@types/babel__traverse": "^7.18.3", - "@types/node": "^18.13.0", - "eslint": "^8.32.0", + "@types/node": "^18.15.3", + "eslint": "^8.36.0", "eslint-config-lxsmnsyc": "^0.4.8", - "pridepack": "2.4.0", + "pridepack": "2.4.2", "tslib": "^2.5.0", "typescript": "^4.9.4", "vitest": "^0.28.1" }, "dependencies": { "@babel/helper-module-imports": "^7.18.6", - "@babel/traverse": "^7.20.13", - "@babel/types": "^7.20.7" + "@babel/traverse": "^7.21.3", + "@babel/types": "^7.21.3" }, "peerDependencies": { "@babel/core": "^7" diff --git a/packages/rollup/package.json b/packages/rollup/package.json index d9e8f93..af08c3f 100644 --- a/packages/rollup/package.json +++ b/packages/rollup/package.json @@ -38,8 +38,8 @@ "typescript": "^4.9.5" }, "dependencies": { - "@babel/core": "^7.20.12", - "@babel/preset-typescript": "^7.18.6", + "@babel/core": "^7.21.3", + "@babel/preset-typescript": "^7.21.0", "@rollup/pluginutils": "^5.0.2", "forgetti": "0.3.0" }, diff --git a/packages/vite/package.json b/packages/vite/package.json index d4b076b..8621de5 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -30,8 +30,8 @@ "name": "vite-plugin-forgetti", "devDependencies": { "@types/babel__core": "^7.20.0", - "@types/node": "^18.13.0", - "eslint": "^8.34.0", + "@types/node": "^18.15.3", + "eslint": "^8.36.0", "eslint-config-lxsmnsyc": "^0.4.8", "pridepack": "2.4.1", "tslib": "^2.5.0", @@ -39,8 +39,8 @@ "vite": "^4.1.4" }, "dependencies": { - "@babel/core": "^7.20.12", - "@babel/preset-typescript": "^7.18.6", + "@babel/core": "^7.21.3", + "@babel/preset-typescript": "^7.21.0", "@rollup/pluginutils": "^5.0.2", "forgetti": "0.3.0" }, From f182a9d8650133932c102eb658eb266ae20de99c Mon Sep 17 00:00:00 2001 From: Alexis Munsayac Date: Sat, 18 Mar 2023 19:40:10 +0800 Subject: [PATCH 03/16] Update pnpm-lock.yaml --- pnpm-lock.yaml | 2020 +++++++++++++++++++++++++----------------------- 1 file changed, 1054 insertions(+), 966 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c476714..d566e1f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,14 +4,14 @@ importers: .: specifiers: - eslint: ^8.33.0 + eslint: ^8.36.0 eslint-config-lxsmnsyc: ^0.4.8 - lerna: ^6.4.1 + lerna: ^6.5.1 typescript: ^4.9.5 devDependencies: - eslint: 8.34.0 - eslint-config-lxsmnsyc: 0.4.8_7kw3g6rralp5ps6mg3uyzz6azm - lerna: 6.4.1 + eslint: 8.36.0 + eslint-config-lxsmnsyc: 0.4.8_vgl77cfdswitgr47lm5swmv43m + lerna: 6.5.1 typescript: 4.9.5 examples/preact: @@ -22,7 +22,7 @@ importers: preact: ^10.13.0 typescript: ^4.9.5 vite: ^4.1.2 - vite-plugin-forgetti: 0.0.1 + vite-plugin-forgetti: 0.3.0 dependencies: preact: 10.13.0 devDependencies: @@ -44,7 +44,7 @@ importers: react-dom: ^18.2.0 typescript: ^4.9.5 vite: ^4.1.2 - vite-plugin-forgetti: 0.0.1 + vite-plugin-forgetti: 0.3.0 dependencies: react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -60,52 +60,52 @@ importers: packages/forgetti: specifiers: - '@babel/core': ^7.20.12 + '@babel/core': ^7.21.3 '@babel/helper-module-imports': ^7.18.6 - '@babel/traverse': ^7.20.13 - '@babel/types': ^7.20.7 + '@babel/traverse': ^7.21.3 + '@babel/types': ^7.21.3 '@types/babel__core': ^7.20.0 '@types/babel__traverse': ^7.18.3 - '@types/node': ^18.13.0 - eslint: ^8.32.0 + '@types/node': ^18.15.3 + eslint: ^8.36.0 eslint-config-lxsmnsyc: ^0.4.8 - pridepack: 2.4.0 + pridepack: 2.4.2 tslib: ^2.5.0 typescript: ^4.9.4 vitest: ^0.28.1 dependencies: '@babel/helper-module-imports': 7.18.6 - '@babel/traverse': 7.20.13 - '@babel/types': 7.20.7 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 devDependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.3 '@types/babel__core': 7.20.0 '@types/babel__traverse': 7.18.3 - '@types/node': 18.13.0 - eslint: 8.34.0 - eslint-config-lxsmnsyc: 0.4.8_7kw3g6rralp5ps6mg3uyzz6azm - pridepack: 2.4.0_64oh6xetmihmk3s5lpnh2fqrua + '@types/node': 18.15.3 + eslint: 8.36.0 + eslint-config-lxsmnsyc: 0.4.8_vgl77cfdswitgr47lm5swmv43m + pridepack: 2.4.2_a37tusewm2jlajv35tjly5qag4 tslib: 2.5.0 typescript: 4.9.5 vitest: 0.28.4 packages/rollup: specifiers: - '@babel/core': ^7.20.12 - '@babel/preset-typescript': ^7.18.6 + '@babel/core': ^7.21.3 + '@babel/preset-typescript': ^7.21.0 '@rollup/pluginutils': ^5.0.2 '@types/babel__core': ^7.20.0 '@types/node': ^18.13.0 eslint: ^8.34.0 eslint-config-lxsmnsyc: ^0.4.8 - forgetti: 0.0.1 + forgetti: 0.3.0 pridepack: 2.4.1 rollup: ^3.15.0 tslib: ^2.5.0 typescript: ^4.9.5 dependencies: - '@babel/core': 7.20.12 - '@babel/preset-typescript': 7.21.0_@babel+core@7.20.12 + '@babel/core': 7.21.3 + '@babel/preset-typescript': 7.21.0_@babel+core@7.21.3 '@rollup/pluginutils': 5.0.2_rollup@3.15.0 forgetti: link:../forgetti devDependencies: @@ -120,32 +120,32 @@ importers: packages/vite: specifiers: - '@babel/core': ^7.20.12 - '@babel/preset-typescript': ^7.18.6 + '@babel/core': ^7.21.3 + '@babel/preset-typescript': ^7.21.0 '@rollup/pluginutils': ^5.0.2 '@types/babel__core': ^7.20.0 - '@types/node': ^18.13.0 - eslint: ^8.34.0 + '@types/node': ^18.15.3 + eslint: ^8.36.0 eslint-config-lxsmnsyc: ^0.4.8 - forgetti: 0.0.1 + forgetti: 0.3.0 pridepack: 2.4.1 tslib: ^2.5.0 typescript: ^4.9.5 vite: ^4.1.4 dependencies: - '@babel/core': 7.20.12 - '@babel/preset-typescript': 7.21.0_@babel+core@7.20.12 + '@babel/core': 7.21.3 + '@babel/preset-typescript': 7.21.0_@babel+core@7.21.3 '@rollup/pluginutils': 5.0.2 forgetti: link:../forgetti devDependencies: '@types/babel__core': 7.20.0 - '@types/node': 18.13.0 - eslint: 8.34.0 - eslint-config-lxsmnsyc: 0.4.8_7kw3g6rralp5ps6mg3uyzz6azm - pridepack: 2.4.1_64oh6xetmihmk3s5lpnh2fqrua + '@types/node': 18.15.3 + eslint: 8.36.0 + eslint-config-lxsmnsyc: 0.4.8_vgl77cfdswitgr47lm5swmv43m + pridepack: 2.4.1_a37tusewm2jlajv35tjly5qag4 tslib: 2.5.0 typescript: 4.9.5 - vite: 4.1.4_@types+node@18.13.0 + vite: 4.1.4_@types+node@18.15.3 packages: @@ -172,14 +172,37 @@ packages: dependencies: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.14 + '@babel/generator': 7.21.3 '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 - '@babel/helper-module-transforms': 7.20.11 - '@babel/helpers': 7.20.13 - '@babel/parser': 7.20.15 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helpers': 7.21.0 + '@babel/parser': 7.21.3 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.13 - '@babel/types': 7.20.7 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/core/7.21.3: + resolution: {integrity: sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.0 + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.21.3 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.3 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helpers': 7.21.0 + '@babel/parser': 7.21.3 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 convert-source-map: 1.9.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -188,33 +211,48 @@ packages: transitivePeerDependencies: - supports-color - /@babel/eslint-parser/7.19.1_ydmbqfus77qykiqxhcwsorsqbq: + /@babel/eslint-parser/7.19.1_pbvtqpyzjxqz5iuwx4l5fsvzvy: resolution: {integrity: sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: '@babel/core': '>=7.11.0' eslint: ^7.5.0 || ^8.0.0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.3 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 eslint: 8.34.0 eslint-visitor-keys: 2.1.0 semver: 6.3.0 dev: true - /@babel/generator/7.20.14: - resolution: {integrity: sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==} + /@babel/eslint-parser/7.19.1_pxuto7xgangxlusvzceggvrmde: + resolution: {integrity: sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': '>=7.11.0' + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@babel/core': 7.21.3 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.36.0 + eslint-visitor-keys: 2.1.0 + semver: 6.3.0 + dev: true + + /@babel/generator/7.21.3: + resolution: {integrity: sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.3 '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.17 jsesc: 2.5.2 /@babel/helper-annotate-as-pure/7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.3 /@babel/helper-compilation-targets/7.20.7_@babel+core@7.20.12: resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} @@ -228,14 +266,28 @@ packages: browserslist: 4.21.5 lru-cache: 5.1.1 semver: 6.3.0 + dev: true - /@babel/helper-create-class-features-plugin/7.21.0_@babel+core@7.20.12: + /@babel/helper-compilation-targets/7.20.7_@babel+core@7.21.3: + resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.20.14 + '@babel/core': 7.21.3 + '@babel/helper-validator-option': 7.21.0 + browserslist: 4.21.5 + lru-cache: 5.1.1 + semver: 6.3.0 + + /@babel/helper-create-class-features-plugin/7.21.0_@babel+core@7.21.3: resolution: {integrity: sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.3 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-function-name': 7.21.0 @@ -252,42 +304,34 @@ packages: resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} engines: {node: '>=6.9.0'} - /@babel/helper-function-name/7.19.0: - resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.20.7 - '@babel/types': 7.21.2 - /@babel/helper-function-name/7.21.0: resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.20.7 - '@babel/types': 7.21.2 - dev: false + '@babel/types': 7.21.3 /@babel/helper-hoist-variables/7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.3 /@babel/helper-member-expression-to-functions/7.21.0: resolution: {integrity: sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.3 dev: false /@babel/helper-module-imports/7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.3 - /@babel/helper-module-transforms/7.20.11: - resolution: {integrity: sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==} + /@babel/helper-module-transforms/7.21.2: + resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-environment-visitor': 7.18.9 @@ -296,8 +340,8 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/helper-validator-identifier': 7.19.1 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.13 - '@babel/types': 7.20.7 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 transitivePeerDependencies: - supports-color @@ -305,7 +349,7 @@ packages: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.3 dev: false /@babel/helper-plugin-utils/7.20.2: @@ -320,8 +364,8 @@ packages: '@babel/helper-member-expression-to-functions': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.13 - '@babel/types': 7.20.7 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 transitivePeerDependencies: - supports-color dev: false @@ -330,20 +374,20 @@ packages: resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.3 /@babel/helper-skip-transparent-expression-wrappers/7.20.0: resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.3 dev: false /@babel/helper-split-export-declaration/7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.3 /@babel/helper-string-parser/7.19.4: resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} @@ -357,13 +401,13 @@ packages: resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} engines: {node: '>=6.9.0'} - /@babel/helpers/7.20.13: - resolution: {integrity: sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==} + /@babel/helpers/7.21.0: + resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.20.7 - '@babel/traverse': 7.20.13 - '@babel/types': 7.20.7 + '@babel/traverse': 7.21.3 + '@babel/types': 7.21.3 transitivePeerDependencies: - supports-color @@ -380,24 +424,32 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.3 + dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.20.12: + /@babel/parser/7.21.3: + resolution: {integrity: sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.21.3 + + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.21.3: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.3 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-decorators/7.19.0_@babel+core@7.20.12: + /@babel/plugin-syntax-decorators/7.19.0_@babel+core@7.21.3: resolution: {integrity: sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.3 '@babel/helper-plugin-utils': 7.20.2 dev: true @@ -410,23 +462,23 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.12: + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.21.3: resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.3 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.20.12: + /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.21.3: resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.3 '@babel/helper-plugin-utils': 7.20.2 dev: false @@ -469,33 +521,33 @@ packages: '@babel/helper-module-imports': 7.18.6 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-jsx': 7.18.6 - '@babel/types': 7.21.2 + '@babel/types': 7.21.3 dev: true - /@babel/plugin-transform-typescript/7.21.0_@babel+core@7.20.12: + /@babel/plugin-transform-typescript/7.21.0_@babel+core@7.21.3: resolution: {integrity: sha512-xo///XTPp3mDzTtrqXoBlK9eiAYW3wv9JXglcn/u1bi60RW11dEUxIgA8cbnDhutS1zacjMRmAwxE0gMklLnZg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.20.12 + '@babel/core': 7.21.3 + '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.21.3 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.12 + '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.21.3 transitivePeerDependencies: - supports-color dev: false - /@babel/preset-typescript/7.21.0_@babel+core@7.20.12: + /@babel/preset-typescript/7.21.0_@babel+core@7.21.3: resolution: {integrity: sha512-myc9mpoVA5m1rF8K8DgLEatOYFDpwC+RkMkjZ0Du6uI62YvDe8uxIEYVs/VCdSJ097nlALiU/yBC7//3nI+hNg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.3 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-validator-option': 7.21.0 - '@babel/plugin-transform-typescript': 7.21.0_@babel+core@7.20.12 + '@babel/plugin-transform-typescript': 7.21.0_@babel+core@7.21.3 transitivePeerDependencies: - supports-color dev: false @@ -512,36 +564,28 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/parser': 7.20.15 - '@babel/types': 7.20.7 + '@babel/parser': 7.21.3 + '@babel/types': 7.21.3 - /@babel/traverse/7.20.13: - resolution: {integrity: sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==} + /@babel/traverse/7.21.3: + resolution: {integrity: sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.14 + '@babel/generator': 7.21.3 '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 + '@babel/helper-function-name': 7.21.0 '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.20.15 - '@babel/types': 7.20.7 + '@babel/parser': 7.21.3 + '@babel/types': 7.21.3 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/types/7.20.7: - resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.19.4 - '@babel/helper-validator-identifier': 7.19.1 - to-fast-properties: 2.0.0 - - /@babel/types/7.21.2: - resolution: {integrity: sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==} + /@babel/types/7.21.3: + resolution: {integrity: sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.19.4 @@ -944,13 +988,28 @@ packages: dev: true optional: true + /@eslint-community/eslint-utils/4.3.0_eslint@8.36.0: + resolution: {integrity: sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.36.0 + eslint-visitor-keys: 3.3.0 + dev: true + + /@eslint-community/regexpp/4.4.0: + resolution: {integrity: sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + /@eslint/eslintrc/1.4.1: resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.4.1 + espree: 9.5.0 globals: 13.20.0 ignore: 5.2.4 import-fresh: 3.3.0 @@ -961,794 +1020,122 @@ packages: - supports-color dev: true - /@gar/promisify/1.1.3: - resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} - dev: true - - /@humanwhocodes/config-array/0.11.8: - resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@humanwhocodes/module-importer/1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: true - - /@humanwhocodes/object-schema/1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - dev: true - - /@hutson/parse-repository-url/3.0.2: - resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==} - engines: {node: '>=6.9.0'} - dev: true - - /@isaacs/string-locale-compare/1.1.0: - resolution: {integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==} - dev: true - - /@jridgewell/gen-mapping/0.1.1: - resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - - /@jridgewell/gen-mapping/0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.17 - - /@jridgewell/resolve-uri/3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} - - /@jridgewell/set-array/1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - - /@jridgewell/sourcemap-codec/1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - - /@jridgewell/trace-mapping/0.3.17: - resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - - /@lerna/add/6.4.1: - resolution: {integrity: sha512-YSRnMcsdYnQtQQK0NSyrS9YGXvB3jzvx183o+JTH892MKzSlBqwpBHekCknSibyxga1HeZ0SNKQXgsHAwWkrRw==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/bootstrap': 6.4.1 - '@lerna/command': 6.4.1 - '@lerna/filter-options': 6.4.1 - '@lerna/npm-conf': 6.4.1 - '@lerna/validation-error': 6.4.1 - dedent: 0.7.0 - npm-package-arg: 8.1.1 - p-map: 4.0.0 - pacote: 13.6.2 - semver: 7.3.8 - transitivePeerDependencies: - - bluebird - - supports-color - dev: true - - /@lerna/bootstrap/6.4.1: - resolution: {integrity: sha512-64cm0mnxzxhUUjH3T19ZSjPdn28vczRhhTXhNAvOhhU0sQgHrroam1xQC1395qbkV3iosSertlu8e7xbXW033w==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/command': 6.4.1 - '@lerna/filter-options': 6.4.1 - '@lerna/has-npm-version': 6.4.1 - '@lerna/npm-install': 6.4.1 - '@lerna/package-graph': 6.4.1 - '@lerna/pulse-till-done': 6.4.1 - '@lerna/rimraf-dir': 6.4.1 - '@lerna/run-lifecycle': 6.4.1 - '@lerna/run-topologically': 6.4.1 - '@lerna/symlink-binary': 6.4.1 - '@lerna/symlink-dependencies': 6.4.1 - '@lerna/validation-error': 6.4.1 - '@npmcli/arborist': 5.3.0 - dedent: 0.7.0 - get-port: 5.1.1 - multimatch: 5.0.0 - npm-package-arg: 8.1.1 - npmlog: 6.0.2 - p-map: 4.0.0 - p-map-series: 2.1.0 - p-waterfall: 2.1.1 - semver: 7.3.8 - transitivePeerDependencies: - - bluebird - - supports-color - dev: true - - /@lerna/changed/6.4.1: - resolution: {integrity: sha512-Z/z0sTm3l/iZW0eTSsnQpcY5d6eOpNO0g4wMOK+hIboWG0QOTc8b28XCnfCUO+33UisKl8PffultgoaHMKkGgw==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/collect-updates': 6.4.1 - '@lerna/command': 6.4.1 - '@lerna/listable': 6.4.1 - '@lerna/output': 6.4.1 - dev: true - - /@lerna/check-working-tree/6.4.1: - resolution: {integrity: sha512-EnlkA1wxaRLqhJdn9HX7h+JYxqiTK9aWEFOPqAE8lqjxHn3RpM9qBp1bAdL7CeUk3kN1lvxKwDEm0mfcIyMbPA==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/collect-uncommitted': 6.4.1 - '@lerna/describe-ref': 6.4.1 - '@lerna/validation-error': 6.4.1 - dev: true - - /@lerna/child-process/6.4.1: - resolution: {integrity: sha512-dvEKK0yKmxOv8pccf3I5D/k+OGiLxQp5KYjsrDtkes2pjpCFfQAMbmpol/Tqx6w/2o2rSaRrLsnX8TENo66FsA==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - chalk: 4.1.2 - execa: 5.1.1 - strong-log-transformer: 2.1.0 - dev: true - - /@lerna/clean/6.4.1: - resolution: {integrity: sha512-FuVyW3mpos5ESCWSkQ1/ViXyEtsZ9k45U66cdM/HnteHQk/XskSQw0sz9R+whrZRUDu6YgYLSoj1j0YAHVK/3A==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/command': 6.4.1 - '@lerna/filter-options': 6.4.1 - '@lerna/prompt': 6.4.1 - '@lerna/pulse-till-done': 6.4.1 - '@lerna/rimraf-dir': 6.4.1 - p-map: 4.0.0 - p-map-series: 2.1.0 - p-waterfall: 2.1.1 - dev: true - - /@lerna/cli/6.4.1: - resolution: {integrity: sha512-2pNa48i2wzFEd9LMPKWI3lkW/3widDqiB7oZUM1Xvm4eAOuDWc9I3RWmAUIVlPQNf3n4McxJCvsZZ9BpQN50Fg==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/global-options': 6.4.1 - dedent: 0.7.0 - npmlog: 6.0.2 - yargs: 16.2.0 - dev: true - - /@lerna/collect-uncommitted/6.4.1: - resolution: {integrity: sha512-5IVQGhlLrt7Ujc5ooYA1Xlicdba/wMcDSnbQwr8ufeqnzV2z4729pLCVk55gmi6ZienH/YeBPHxhB5u34ofE0Q==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/child-process': 6.4.1 - chalk: 4.1.2 - npmlog: 6.0.2 - dev: true - - /@lerna/collect-updates/6.4.1: - resolution: {integrity: sha512-pzw2/FC+nIqYkknUHK9SMmvP3MsLEjxI597p3WV86cEDN3eb1dyGIGuHiKShtjvT08SKSwpTX+3bCYvLVxtC5Q==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/child-process': 6.4.1 - '@lerna/describe-ref': 6.4.1 - minimatch: 3.1.2 - npmlog: 6.0.2 - slash: 3.0.0 - dev: true - - /@lerna/command/6.4.1: - resolution: {integrity: sha512-3Lifj8UTNYbRad8JMP7IFEEdlIyclWyyvq/zvNnTS9kCOEymfmsB3lGXr07/AFoi6qDrvN64j7YSbPZ6C6qonw==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/child-process': 6.4.1 - '@lerna/package-graph': 6.4.1 - '@lerna/project': 6.4.1 - '@lerna/validation-error': 6.4.1 - '@lerna/write-log-file': 6.4.1 - clone-deep: 4.0.1 - dedent: 0.7.0 - execa: 5.1.1 - is-ci: 2.0.0 - npmlog: 6.0.2 - dev: true - - /@lerna/conventional-commits/6.4.1: - resolution: {integrity: sha512-NIvCOjStjQy5O8VojB7/fVReNNDEJOmzRG2sTpgZ/vNS4AzojBQZ/tobzhm7rVkZZ43R9srZeuhfH9WgFsVUSA==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/validation-error': 6.4.1 - conventional-changelog-angular: 5.0.13 - conventional-changelog-core: 4.2.4 - conventional-recommended-bump: 6.1.0 - fs-extra: 9.1.0 - get-stream: 6.0.1 - npm-package-arg: 8.1.1 - npmlog: 6.0.2 - pify: 5.0.0 - semver: 7.3.8 - dev: true - - /@lerna/create-symlink/6.4.1: - resolution: {integrity: sha512-rNivHFYV1GAULxnaTqeGb2AdEN2OZzAiZcx5CFgj45DWXQEGwPEfpFmCSJdXhFZbyd3K0uiDlAXjAmV56ov3FQ==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - cmd-shim: 5.0.0 - fs-extra: 9.1.0 - npmlog: 6.0.2 - dev: true - - /@lerna/create/6.4.1: - resolution: {integrity: sha512-qfQS8PjeGDDlxEvKsI/tYixIFzV2938qLvJohEKWFn64uvdLnXCamQ0wvRJST8p1ZpHWX4AXrB+xEJM3EFABrA==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/child-process': 6.4.1 - '@lerna/command': 6.4.1 - '@lerna/npm-conf': 6.4.1 - '@lerna/validation-error': 6.4.1 - dedent: 0.7.0 - fs-extra: 9.1.0 - init-package-json: 3.0.2 - npm-package-arg: 8.1.1 - p-reduce: 2.1.0 - pacote: 13.6.2 - pify: 5.0.0 - semver: 7.3.8 - slash: 3.0.0 - validate-npm-package-license: 3.0.4 - validate-npm-package-name: 4.0.0 - yargs-parser: 20.2.4 - transitivePeerDependencies: - - bluebird - - supports-color - dev: true - - /@lerna/describe-ref/6.4.1: - resolution: {integrity: sha512-MXGXU8r27wl355kb1lQtAiu6gkxJ5tAisVJvFxFM1M+X8Sq56icNoaROqYrvW6y97A9+3S8Q48pD3SzkFv31Xw==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/child-process': 6.4.1 - npmlog: 6.0.2 - dev: true - - /@lerna/diff/6.4.1: - resolution: {integrity: sha512-TnzJsRPN2fOjUrmo5Boi43fJmRtBJDsVgwZM51VnLoKcDtO1kcScXJ16Od2Xx5bXbp5dES5vGDLL/USVVWfeAg==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/child-process': 6.4.1 - '@lerna/command': 6.4.1 - '@lerna/validation-error': 6.4.1 - npmlog: 6.0.2 - dev: true - - /@lerna/exec/6.4.1: - resolution: {integrity: sha512-KAWfuZpoyd3FMejHUORd0GORMr45/d9OGAwHitfQPVs4brsxgQFjbbBEEGIdwsg08XhkDb4nl6IYVASVTq9+gA==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/child-process': 6.4.1 - '@lerna/command': 6.4.1 - '@lerna/filter-options': 6.4.1 - '@lerna/profiler': 6.4.1 - '@lerna/run-topologically': 6.4.1 - '@lerna/validation-error': 6.4.1 - p-map: 4.0.0 - dev: true - - /@lerna/filter-options/6.4.1: - resolution: {integrity: sha512-efJh3lP2T+9oyNIP2QNd9EErf0Sm3l3Tz8CILMsNJpjSU6kO43TYWQ+L/ezu2zM99KVYz8GROLqDcHRwdr8qUA==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/collect-updates': 6.4.1 - '@lerna/filter-packages': 6.4.1 - dedent: 0.7.0 - npmlog: 6.0.2 - dev: true - - /@lerna/filter-packages/6.4.1: - resolution: {integrity: sha512-LCMGDGy4b+Mrb6xkcVzp4novbf5MoZEE6ZQF1gqG0wBWqJzNcKeFiOmf352rcDnfjPGZP6ct5+xXWosX/q6qwg==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/validation-error': 6.4.1 - multimatch: 5.0.0 - npmlog: 6.0.2 - dev: true - - /@lerna/get-npm-exec-opts/6.4.1: - resolution: {integrity: sha512-IvN/jyoklrWcjssOf121tZhOc16MaFPOu5ii8a+Oy0jfTriIGv929Ya8MWodj75qec9s+JHoShB8yEcMqZce4g==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - npmlog: 6.0.2 - dev: true - - /@lerna/get-packed/6.4.1: - resolution: {integrity: sha512-uaDtYwK1OEUVIXn84m45uPlXShtiUcw6V9TgB3rvHa3rrRVbR7D4r+JXcwVxLGrAS7LwxVbYWEEO/Z/bX7J/Lg==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - fs-extra: 9.1.0 - ssri: 9.0.1 - tar: 6.1.13 - dev: true - - /@lerna/github-client/6.4.1: - resolution: {integrity: sha512-ridDMuzmjMNlcDmrGrV9mxqwUKzt9iYqCPwVYJlRYrnE3jxyg+RdooquqskVFj11djcY6xCV2Q2V1lUYwF+PmA==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/child-process': 6.4.1 - '@octokit/plugin-enterprise-rest': 6.0.1 - '@octokit/rest': 19.0.7 - git-url-parse: 13.1.0 - npmlog: 6.0.2 - transitivePeerDependencies: - - encoding - dev: true - - /@lerna/gitlab-client/6.4.1: - resolution: {integrity: sha512-AdLG4d+jbUvv0jQyygQUTNaTCNSMDxioJso6aAjQ/vkwyy3fBJ6FYzX74J4adSfOxC2MQZITFyuG+c9ggp7pyQ==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - node-fetch: 2.6.9 - npmlog: 6.0.2 - transitivePeerDependencies: - - encoding - dev: true - - /@lerna/global-options/6.4.1: - resolution: {integrity: sha512-UTXkt+bleBB8xPzxBPjaCN/v63yQdfssVjhgdbkQ//4kayaRA65LyEtJTi9rUrsLlIy9/rbeb+SAZUHg129fJg==} - engines: {node: ^14.15.0 || >=16.0.0} - dev: true - - /@lerna/has-npm-version/6.4.1: - resolution: {integrity: sha512-vW191w5iCkwNWWWcy4542ZOpjKYjcP/pU3o3+w6NM1J3yBjWZcNa8lfzQQgde2QkGyNi+i70o6wIca1o0sdKwg==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/child-process': 6.4.1 - semver: 7.3.8 - dev: true - - /@lerna/import/6.4.1: - resolution: {integrity: sha512-oDg8g1PNrCM1JESLsG3rQBtPC+/K9e4ohs0xDKt5E6p4l7dc0Ib4oo0oCCT/hGzZUlNwHxrc2q9JMRzSAn6P/Q==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/child-process': 6.4.1 - '@lerna/command': 6.4.1 - '@lerna/prompt': 6.4.1 - '@lerna/pulse-till-done': 6.4.1 - '@lerna/validation-error': 6.4.1 - dedent: 0.7.0 - fs-extra: 9.1.0 - p-map-series: 2.1.0 - dev: true - - /@lerna/info/6.4.1: - resolution: {integrity: sha512-Ks4R7IndIr4vQXz+702gumPVhH6JVkshje0WKA3+ew2qzYZf68lU1sBe1OZsQJU3eeY2c60ax+bItSa7aaIHGw==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/command': 6.4.1 - '@lerna/output': 6.4.1 - envinfo: 7.8.1 - dev: true - - /@lerna/init/6.4.1: - resolution: {integrity: sha512-CXd/s/xgj0ZTAoOVyolOTLW2BG7uQOhWW4P/ktlwwJr9s3c4H/z+Gj36UXw3q5X1xdR29NZt7Vc6fvROBZMjUQ==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/child-process': 6.4.1 - '@lerna/command': 6.4.1 - '@lerna/project': 6.4.1 - fs-extra: 9.1.0 - p-map: 4.0.0 - write-json-file: 4.3.0 - dev: true - - /@lerna/link/6.4.1: - resolution: {integrity: sha512-O8Rt7MAZT/WT2AwrB/+HY76ktnXA9cDFO9rhyKWZGTHdplbzuJgfsGzu8Xv0Ind+w+a8xLfqtWGPlwiETnDyrw==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/command': 6.4.1 - '@lerna/package-graph': 6.4.1 - '@lerna/symlink-dependencies': 6.4.1 - '@lerna/validation-error': 6.4.1 - p-map: 4.0.0 - slash: 3.0.0 - dev: true - - /@lerna/list/6.4.1: - resolution: {integrity: sha512-7a6AKgXgC4X7nK6twVPNrKCiDhrCiAhL/FE4u9HYhHqw9yFwyq8Qe/r1RVOkAOASNZzZ8GuBvob042bpunupCw==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/command': 6.4.1 - '@lerna/filter-options': 6.4.1 - '@lerna/listable': 6.4.1 - '@lerna/output': 6.4.1 - dev: true - - /@lerna/listable/6.4.1: - resolution: {integrity: sha512-L8ANeidM10aoF8aL3L/771Bb9r/TRkbEPzAiC8Iy2IBTYftS87E3rT/4k5KBEGYzMieSKJaskSFBV0OQGYV1Cw==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/query-graph': 6.4.1 - chalk: 4.1.2 - columnify: 1.6.0 - dev: true - - /@lerna/log-packed/6.4.1: - resolution: {integrity: sha512-Pwv7LnIgWqZH4vkM1rWTVF+pmWJu7d0ZhVwyhCaBJUsYbo+SyB2ZETGygo3Z/A+vZ/S7ImhEEKfIxU9bg5lScQ==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - byte-size: 7.0.1 - columnify: 1.6.0 - has-unicode: 2.0.1 - npmlog: 6.0.2 - dev: true - - /@lerna/npm-conf/6.4.1: - resolution: {integrity: sha512-Q+83uySGXYk3n1pYhvxtzyGwBGijYgYecgpiwRG1YNyaeGy+Mkrj19cyTWubT+rU/kM5c6If28+y9kdudvc7zQ==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - config-chain: 1.1.13 - pify: 5.0.0 - dev: true - - /@lerna/npm-dist-tag/6.4.1: - resolution: {integrity: sha512-If1Hn4q9fn0JWuBm455iIZDWE6Fsn4Nv8Tpqb+dYf0CtoT5Hn+iT64xSiU5XJw9Vc23IR7dIujkEXm2MVbnvZw==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/otplease': 6.4.1 - npm-package-arg: 8.1.1 - npm-registry-fetch: 13.3.1 - npmlog: 6.0.2 - transitivePeerDependencies: - - bluebird - - supports-color - dev: true - - /@lerna/npm-install/6.4.1: - resolution: {integrity: sha512-7gI1txMA9qTaT3iiuk/8/vL78wIhtbbOLhMf8m5yQ2G+3t47RUA8MNgUMsq4Zszw9C83drayqesyTf0u8BzVRg==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/child-process': 6.4.1 - '@lerna/get-npm-exec-opts': 6.4.1 - fs-extra: 9.1.0 - npm-package-arg: 8.1.1 - npmlog: 6.0.2 - signal-exit: 3.0.7 - write-pkg: 4.0.0 - dev: true - - /@lerna/npm-publish/6.4.1: - resolution: {integrity: sha512-lbNEg+pThPAD8lIgNArm63agtIuCBCF3umxvgTQeLzyqUX6EtGaKJFyz/6c2ANcAuf8UfU7WQxFFbOiolibXTQ==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/otplease': 6.4.1 - '@lerna/run-lifecycle': 6.4.1 - fs-extra: 9.1.0 - libnpmpublish: 6.0.5 - npm-package-arg: 8.1.1 - npmlog: 6.0.2 - pify: 5.0.0 - read-package-json: 5.0.2 - transitivePeerDependencies: - - bluebird - - supports-color - dev: true - - /@lerna/npm-run-script/6.4.1: - resolution: {integrity: sha512-HyvwuyhrGqDa1UbI+pPbI6v+wT6I34R0PW3WCADn6l59+AyqLOCUQQr+dMW7jdYNwjO6c/Ttbvj4W58EWsaGtQ==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/child-process': 6.4.1 - '@lerna/get-npm-exec-opts': 6.4.1 - npmlog: 6.0.2 - dev: true - - /@lerna/otplease/6.4.1: - resolution: {integrity: sha512-ePUciFfFdythHNMp8FP5K15R/CoGzSLVniJdD50qm76c4ATXZHnGCW2PGwoeAZCy4QTzhlhdBq78uN0wAs75GA==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/prompt': 6.4.1 - dev: true - - /@lerna/output/6.4.1: - resolution: {integrity: sha512-A1yRLF0bO+lhbIkrryRd6hGSD0wnyS1rTPOWJhScO/Zyv8vIPWhd2fZCLR1gI2d/Kt05qmK3T/zETTwloK7Fww==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - npmlog: 6.0.2 - dev: true - - /@lerna/pack-directory/6.4.1: - resolution: {integrity: sha512-kBtDL9bPP72/Nl7Gqa2CA3Odb8CYY1EF2jt801f+B37TqRLf57UXQom7yF3PbWPCPmhoU+8Fc4RMpUwSbFC46Q==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/get-packed': 6.4.1 - '@lerna/package': 6.4.1 - '@lerna/run-lifecycle': 6.4.1 - '@lerna/temp-write': 6.4.1 - npm-packlist: 5.1.3 - npmlog: 6.0.2 - tar: 6.1.13 - transitivePeerDependencies: - - bluebird - - supports-color - dev: true - - /@lerna/package-graph/6.4.1: - resolution: {integrity: sha512-fQvc59stRYOqxT3Mn7g/yI9/Kw5XetJoKcW5l8XeqKqcTNDURqKnN0qaNBY6lTTLOe4cR7gfXF2l1u3HOz0qEg==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/prerelease-id-from-version': 6.4.1 - '@lerna/validation-error': 6.4.1 - npm-package-arg: 8.1.1 - npmlog: 6.0.2 - semver: 7.3.8 - dev: true - - /@lerna/package/6.4.1: - resolution: {integrity: sha512-TrOah58RnwS9R8d3+WgFFTu5lqgZs7M+e1dvcRga7oSJeKscqpEK57G0xspvF3ycjfXQwRMmEtwPmpkeEVLMzA==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - load-json-file: 6.2.0 - npm-package-arg: 8.1.1 - write-pkg: 4.0.0 - dev: true - - /@lerna/prerelease-id-from-version/6.4.1: - resolution: {integrity: sha512-uGicdMFrmfHXeC0FTosnUKRgUjrBJdZwrmw7ZWMb5DAJGOuTzrvJIcz5f0/eL3XqypC/7g+9DoTgKjX3hlxPZA==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - semver: 7.3.8 - dev: true - - /@lerna/profiler/6.4.1: - resolution: {integrity: sha512-dq2uQxcu0aq6eSoN+JwnvHoAnjtZAVngMvywz5bTAfzz/sSvIad1v8RCpJUMBQHxaPtbfiNvOIQgDZOmCBIM4g==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - fs-extra: 9.1.0 - npmlog: 6.0.2 - upath: 2.0.1 - dev: true - - /@lerna/project/6.4.1: - resolution: {integrity: sha512-BPFYr4A0mNZ2jZymlcwwh7PfIC+I6r52xgGtJ4KIrIOB6mVKo9u30dgYJbUQxmSuMRTOnX7PJZttQQzSda4gEg==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/package': 6.4.1 - '@lerna/validation-error': 6.4.1 - cosmiconfig: 7.1.0 - dedent: 0.7.0 - dot-prop: 6.0.1 - glob-parent: 5.1.2 - globby: 11.1.0 - js-yaml: 4.1.0 - load-json-file: 6.2.0 - npmlog: 6.0.2 - p-map: 4.0.0 - resolve-from: 5.0.0 - write-json-file: 4.3.0 - dev: true - - /@lerna/prompt/6.4.1: - resolution: {integrity: sha512-vMxCIgF9Vpe80PnargBGAdS/Ib58iYEcfkcXwo7mYBCxEVcaUJFKZ72FEW8rw+H5LkxBlzrBJyfKRoOe0ks9gQ==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - inquirer: 8.2.5 - npmlog: 6.0.2 - dev: true - - /@lerna/publish/6.4.1_nx@15.6.3+typescript@4.9.5: - resolution: {integrity: sha512-/D/AECpw2VNMa1Nh4g29ddYKRIqygEV1ftV8PYXVlHpqWN7VaKrcbRU6pn0ldgpFlMyPtESfv1zS32F5CQ944w==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/check-working-tree': 6.4.1 - '@lerna/child-process': 6.4.1 - '@lerna/collect-updates': 6.4.1 - '@lerna/command': 6.4.1 - '@lerna/describe-ref': 6.4.1 - '@lerna/log-packed': 6.4.1 - '@lerna/npm-conf': 6.4.1 - '@lerna/npm-dist-tag': 6.4.1 - '@lerna/npm-publish': 6.4.1 - '@lerna/otplease': 6.4.1 - '@lerna/output': 6.4.1 - '@lerna/pack-directory': 6.4.1 - '@lerna/prerelease-id-from-version': 6.4.1 - '@lerna/prompt': 6.4.1 - '@lerna/pulse-till-done': 6.4.1 - '@lerna/run-lifecycle': 6.4.1 - '@lerna/run-topologically': 6.4.1 - '@lerna/validation-error': 6.4.1 - '@lerna/version': 6.4.1_nx@15.6.3+typescript@4.9.5 - fs-extra: 9.1.0 - libnpmaccess: 6.0.4 - npm-package-arg: 8.1.1 - npm-registry-fetch: 13.3.1 - npmlog: 6.0.2 - p-map: 4.0.0 - p-pipe: 3.1.0 - pacote: 13.6.2 - semver: 7.3.8 - transitivePeerDependencies: - - bluebird - - encoding - - nx - - supports-color - - typescript - dev: true - - /@lerna/pulse-till-done/6.4.1: - resolution: {integrity: sha512-efAkOC1UuiyqYBfrmhDBL6ufYtnpSqAG+lT4d/yk3CzJEJKkoCwh2Hb692kqHHQ5F74Uusc8tcRB7GBcfNZRWA==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - npmlog: 6.0.2 - dev: true - - /@lerna/query-graph/6.4.1: - resolution: {integrity: sha512-gBGZLgu2x6L4d4ZYDn4+d5rxT9RNBC+biOxi0QrbaIq83I+JpHVmFSmExXK3rcTritrQ3JT9NCqb+Yu9tL9adQ==} - engines: {node: ^14.15.0 || >=16.0.0} + /@eslint/eslintrc/2.0.1: + resolution: {integrity: sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@lerna/package-graph': 6.4.1 + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.5.0 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color dev: true - /@lerna/resolve-symlink/6.4.1: - resolution: {integrity: sha512-gnqltcwhWVLUxCuwXWe/ch9WWTxXRI7F0ZvCtIgdfOpbosm3f1g27VO1LjXeJN2i6ks03qqMowqy4xB4uMR9IA==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - fs-extra: 9.1.0 - npmlog: 6.0.2 - read-cmd-shim: 3.0.1 + /@eslint/js/8.36.0: + resolution: {integrity: sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@lerna/rimraf-dir/6.4.1: - resolution: {integrity: sha512-5sDOmZmVj0iXIiEgdhCm0Prjg5q2SQQKtMd7ImimPtWKkV0IyJWxrepJFbeQoFj5xBQF7QB5jlVNEfQfKhD6pQ==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/child-process': 6.4.1 - npmlog: 6.0.2 - path-exists: 4.0.0 - rimraf: 3.0.2 + /@gar/promisify/1.1.3: + resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} dev: true - /@lerna/run-lifecycle/6.4.1: - resolution: {integrity: sha512-42VopI8NC8uVCZ3YPwbTycGVBSgukJltW5Saein0m7TIqFjwSfrcP0n7QJOr+WAu9uQkk+2kBstF5WmvKiqgEA==} - engines: {node: ^14.15.0 || >=16.0.0} + /@humanwhocodes/config-array/0.11.8: + resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} + engines: {node: '>=10.10.0'} dependencies: - '@lerna/npm-conf': 6.4.1 - '@npmcli/run-script': 4.2.1 - npmlog: 6.0.2 - p-queue: 6.6.2 + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 transitivePeerDependencies: - - bluebird - supports-color dev: true - /@lerna/run-topologically/6.4.1: - resolution: {integrity: sha512-gXlnAsYrjs6KIUGDnHM8M8nt30Amxq3r0lSCNAt+vEu2sMMEOh9lffGGaJobJZ4bdwoXnKay3uER/TU8E9owMw==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/query-graph': 6.4.1 - p-queue: 6.6.2 + /@humanwhocodes/module-importer/1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} dev: true - /@lerna/run/6.4.1: - resolution: {integrity: sha512-HRw7kS6KNqTxqntFiFXPEeBEct08NjnL6xKbbOV6pXXf+lXUQbJlF8S7t6UYqeWgTZ4iU9caIxtZIY+EpW93mQ==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/command': 6.4.1 - '@lerna/filter-options': 6.4.1 - '@lerna/npm-run-script': 6.4.1 - '@lerna/output': 6.4.1 - '@lerna/profiler': 6.4.1 - '@lerna/run-topologically': 6.4.1 - '@lerna/timer': 6.4.1 - '@lerna/validation-error': 6.4.1 - fs-extra: 9.1.0 - nx: 15.6.3 - p-map: 4.0.0 - transitivePeerDependencies: - - '@swc-node/register' - - '@swc/core' - - debug + /@humanwhocodes/object-schema/1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@lerna/symlink-binary/6.4.1: - resolution: {integrity: sha512-poZX90VmXRjL/JTvxaUQPeMDxFUIQvhBkHnH+dwW0RjsHB/2Tu4QUAsE0OlFnlWQGsAtXF4FTtW8Xs57E/19Kw==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/create-symlink': 6.4.1 - '@lerna/package': 6.4.1 - fs-extra: 9.1.0 - p-map: 4.0.0 + /@hutson/parse-repository-url/3.0.2: + resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==} + engines: {node: '>=6.9.0'} dev: true - /@lerna/symlink-dependencies/6.4.1: - resolution: {integrity: sha512-43W2uLlpn3TTYuHVeO/2A6uiTZg6TOk/OSKi21ujD7IfVIYcRYCwCV+8LPP12R3rzyab0JWkWnhp80Z8A2Uykw==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - '@lerna/create-symlink': 6.4.1 - '@lerna/resolve-symlink': 6.4.1 - '@lerna/symlink-binary': 6.4.1 - fs-extra: 9.1.0 - p-map: 4.0.0 - p-map-series: 2.1.0 + /@isaacs/string-locale-compare/1.1.0: + resolution: {integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==} dev: true - /@lerna/temp-write/6.4.1: - resolution: {integrity: sha512-7uiGFVoTyos5xXbVQg4bG18qVEn9dFmboXCcHbMj5mc/+/QmU9QeNz/Cq36O5TY6gBbLnyj3lfL5PhzERWKMFg==} + /@jridgewell/gen-mapping/0.1.1: + resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} + engines: {node: '>=6.0.0'} dependencies: - graceful-fs: 4.2.10 - is-stream: 2.0.1 - make-dir: 3.1.0 - temp-dir: 1.0.0 - uuid: 8.3.2 - dev: true + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 - /@lerna/timer/6.4.1: - resolution: {integrity: sha512-ogmjFTWwRvevZr76a2sAbhmu3Ut2x73nDIn0bcwZwZ3Qc3pHD8eITdjs/wIKkHse3J7l3TO5BFJPnrvDS7HLnw==} - engines: {node: ^14.15.0 || >=16.0.0} - dev: true + /@jridgewell/gen-mapping/0.3.2: + resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/trace-mapping': 0.3.17 + + /@jridgewell/resolve-uri/3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + + /@jridgewell/set-array/1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + + /@jridgewell/sourcemap-codec/1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + + /@jridgewell/trace-mapping/0.3.17: + resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 - /@lerna/validation-error/6.4.1: - resolution: {integrity: sha512-fxfJvl3VgFd7eBfVMRX6Yal9omDLs2mcGKkNYeCEyt4Uwlz1B5tPAXyk/sNMfkKV2Aat/mlK5tnY13vUrMKkyA==} + /@lerna/child-process/6.5.1: + resolution: {integrity: sha512-QfyleXSD9slh4qM54wDaqKVPvtUH1NJMgsFc9BabqSHO1Ttpandv1EAvTCN9Lu73RbCX3LJpn+BfJmnjHbjCyw==} engines: {node: ^14.15.0 || >=16.0.0} dependencies: - npmlog: 6.0.2 + chalk: 4.1.2 + execa: 5.1.1 + strong-log-transformer: 2.1.0 dev: true - /@lerna/version/6.4.1_nx@15.6.3+typescript@4.9.5: - resolution: {integrity: sha512-1/krPq0PtEqDXtaaZsVuKev9pXJCkNC1vOo2qCcn6PBkODw/QTAvGcUi0I+BM2c//pdxge9/gfmbDo1lC8RtAQ==} + /@lerna/create/6.5.1: + resolution: {integrity: sha512-ejERJnfA36jEuKrfM+94feLiyf2/hF2NoG923N0rE4rsmvRFPr1XLVPvAKleXW+Gdi/t1p410lJ7NKaLRMYCYw==} engines: {node: ^14.15.0 || >=16.0.0} dependencies: - '@lerna/check-working-tree': 6.4.1 - '@lerna/child-process': 6.4.1 - '@lerna/collect-updates': 6.4.1 - '@lerna/command': 6.4.1 - '@lerna/conventional-commits': 6.4.1 - '@lerna/github-client': 6.4.1 - '@lerna/gitlab-client': 6.4.1 - '@lerna/output': 6.4.1 - '@lerna/prerelease-id-from-version': 6.4.1 - '@lerna/prompt': 6.4.1 - '@lerna/run-lifecycle': 6.4.1 - '@lerna/run-topologically': 6.4.1 - '@lerna/temp-write': 6.4.1 - '@lerna/validation-error': 6.4.1 - '@nrwl/devkit': 15.6.3_nx@15.6.3+typescript@4.9.5 - chalk: 4.1.2 + '@lerna/child-process': 6.5.1 dedent: 0.7.0 - load-json-file: 6.2.0 - minimatch: 3.1.2 - npmlog: 6.0.2 - p-map: 4.0.0 - p-pipe: 3.1.0 + fs-extra: 9.1.0 + init-package-json: 3.0.2 + npm-package-arg: 8.1.1 p-reduce: 2.1.0 - p-waterfall: 2.1.1 + pacote: 13.6.2 + pify: 5.0.0 semver: 7.3.8 slash: 3.0.0 - write-json-file: 4.3.0 + validate-npm-package-license: 3.0.4 + validate-npm-package-name: 4.0.0 + yargs-parser: 20.2.4 transitivePeerDependencies: - bluebird - - encoding - - nx - supports-color - - typescript - dev: true - - /@lerna/write-log-file/6.4.1: - resolution: {integrity: sha512-LE4fueQSDrQo76F4/gFXL0wnGhqdG7WHVH8D8TrKouF2Afl4NHltObCm4WsSMPjcfciVnZQFfx1ruxU4r/enHQ==} - engines: {node: ^14.15.0 || >=16.0.0} - dependencies: - npmlog: 6.0.2 - write-file-atomic: 4.0.2 dev: true /@mdn/browser-compat-data/3.3.14: @@ -1925,6 +1312,20 @@ packages: infer-owner: 1.0.4 dev: true + /@npmcli/run-script/4.1.7: + resolution: {integrity: sha512-WXr/MyM4tpKA4BotB81NccGAv8B48lNH0gRoILucbcAhTQXLCoi6HflMV3KdXubIqvP9SuLsFn68Z7r4jl+ppw==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + '@npmcli/node-gyp': 2.0.0 + '@npmcli/promise-spawn': 3.0.0 + node-gyp: 9.3.1 + read-package-json-fast: 2.0.3 + which: 2.0.2 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + /@npmcli/run-script/4.2.1: resolution: {integrity: sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -2017,6 +1418,14 @@ packages: - encoding dev: true + /@octokit/openapi-types/12.11.0: + resolution: {integrity: sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==} + dev: true + + /@octokit/openapi-types/14.0.0: + resolution: {integrity: sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==} + dev: true + /@octokit/openapi-types/16.0.0: resolution: {integrity: sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==} dev: true @@ -2025,14 +1434,14 @@ packages: resolution: {integrity: sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==} dev: true - /@octokit/plugin-paginate-rest/6.0.0_@octokit+core@4.2.0: - resolution: {integrity: sha512-Sq5VU1PfT6/JyuXPyt04KZNVsFOSBaYOAq2QRZUwzVlI10KFvcbUo8lR258AAQL1Et60b0WuVik+zOWKLuDZxw==} + /@octokit/plugin-paginate-rest/3.1.0_@octokit+core@4.2.0: + resolution: {integrity: sha512-+cfc40pMzWcLkoDcLb1KXqjX0jTGYXjKuQdFQDc6UAknISJHnZTiBqld6HDwRJvD4DsouDKrWXNbNV0lE/3AXA==} engines: {node: '>= 14'} peerDependencies: '@octokit/core': '>=4' dependencies: '@octokit/core': 4.2.0 - '@octokit/types': 9.0.0 + '@octokit/types': 6.41.0 dev: true /@octokit/plugin-request-log/1.0.4_@octokit+core@4.2.0: @@ -2043,14 +1452,14 @@ packages: '@octokit/core': 4.2.0 dev: true - /@octokit/plugin-rest-endpoint-methods/7.0.1_@octokit+core@4.2.0: - resolution: {integrity: sha512-pnCaLwZBudK5xCdrR823xHGNgqOzRnJ/mpC/76YPpNP7DybdsJtP7mdOwh+wYZxK5jqeQuhu59ogMI4NRlBUvA==} + /@octokit/plugin-rest-endpoint-methods/6.8.1_@octokit+core@4.2.0: + resolution: {integrity: sha512-QrlaTm8Lyc/TbU7BL/8bO49vp+RZ6W3McxxmmQTgYxf2sWkO8ZKuj4dLhPNJD6VCUW1hetCmeIM0m6FTVpDiEg==} engines: {node: '>= 14'} peerDependencies: '@octokit/core': '>=3' dependencies: '@octokit/core': 4.2.0 - '@octokit/types': 9.0.0 + '@octokit/types': 8.2.1 deprecation: 2.3.1 dev: true @@ -2077,18 +1486,30 @@ packages: - encoding dev: true - /@octokit/rest/19.0.7: - resolution: {integrity: sha512-HRtSfjrWmWVNp2uAkEpQnuGMJsu/+dBr47dRc5QVgsCbnIc1+GFEaoKBWkYG+zjrsHpSqcAElMio+n10c0b5JA==} + /@octokit/rest/19.0.3: + resolution: {integrity: sha512-5arkTsnnRT7/sbI4fqgSJ35KiFaN7zQm0uQiQtivNQLI8RQx8EHwJCajcTUwmaCMNDg7tdCvqAnc7uvHHPxrtQ==} engines: {node: '>= 14'} dependencies: '@octokit/core': 4.2.0 - '@octokit/plugin-paginate-rest': 6.0.0_@octokit+core@4.2.0 + '@octokit/plugin-paginate-rest': 3.1.0_@octokit+core@4.2.0 '@octokit/plugin-request-log': 1.0.4_@octokit+core@4.2.0 - '@octokit/plugin-rest-endpoint-methods': 7.0.1_@octokit+core@4.2.0 + '@octokit/plugin-rest-endpoint-methods': 6.8.1_@octokit+core@4.2.0 transitivePeerDependencies: - encoding dev: true + /@octokit/types/6.41.0: + resolution: {integrity: sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==} + dependencies: + '@octokit/openapi-types': 12.11.0 + dev: true + + /@octokit/types/8.2.1: + resolution: {integrity: sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw==} + dependencies: + '@octokit/openapi-types': 14.0.0 + dev: true + /@octokit/types/9.0.0: resolution: {integrity: sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==} dependencies: @@ -2114,7 +1535,7 @@ packages: peerDependencies: typescript: ^3 || ^4 dependencies: - esquery: 1.4.0 + esquery: 1.5.0 typescript: 4.9.5 dev: true @@ -2160,7 +1581,7 @@ packages: preact: ^10.4.0 vite: '>=2.0.0-beta.3' dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.3 '@prefresh/babel-plugin': 0.4.4 '@prefresh/core': 1.4.1_preact@10.13.0 '@prefresh/utils': 1.1.3 @@ -2217,7 +1638,7 @@ packages: resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} dependencies: '@babel/parser': 7.20.15 - '@babel/types': 7.20.7 + '@babel/types': 7.21.3 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.18.3 @@ -2226,20 +1647,20 @@ packages: /@types/babel__generator/7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.3 dev: true /@types/babel__template/7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.20.15 - '@babel/types': 7.20.7 + '@babel/parser': 7.21.3 + '@babel/types': 7.21.3 dev: true /@types/babel__traverse/7.18.3: resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.3 dev: true /@types/chai-subset/1.3.3: @@ -2276,6 +1697,10 @@ packages: resolution: {integrity: sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==} dev: true + /@types/node/18.15.3: + resolution: {integrity: sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==} + dev: true + /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true @@ -2310,6 +1735,34 @@ packages: resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} dev: true + /@typescript-eslint/eslint-plugin/5.51.0_2uf2vhztc4ckxd4qxmfbkpecpu: + resolution: {integrity: sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/parser': 5.51.0_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/scope-manager': 5.51.0 + '@typescript-eslint/type-utils': 5.51.0_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/utils': 5.51.0_vgl77cfdswitgr47lm5swmv43m + debug: 4.3.4 + eslint: 8.36.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + regexpp: 3.2.0 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/eslint-plugin/5.51.0_z4swst3wuuqk4hlme4ajzslgh4: resolution: {integrity: sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2351,6 +1804,19 @@ packages: - typescript dev: true + /@typescript-eslint/experimental-utils/5.51.0_vgl77cfdswitgr47lm5swmv43m: + resolution: {integrity: sha512-8/3+ZyBENl2aog1/QB3S39ptkZ2oRhDB+sJt15UWXBE3skgwL1C8BN9RjpOyhTejwR2hVrvqEjcYcNY6qtZ7nw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@typescript-eslint/utils': 5.51.0_vgl77cfdswitgr47lm5swmv43m + eslint: 8.36.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@typescript-eslint/parser/5.51.0_7kw3g6rralp5ps6mg3uyzz6azm: resolution: {integrity: sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2371,6 +1837,26 @@ packages: - supports-color dev: true + /@typescript-eslint/parser/5.51.0_vgl77cfdswitgr47lm5swmv43m: + resolution: {integrity: sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.51.0 + '@typescript-eslint/types': 5.51.0 + '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 + debug: 4.3.4 + eslint: 8.36.0 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/scope-manager/5.51.0: resolution: {integrity: sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2399,6 +1885,26 @@ packages: - supports-color dev: true + /@typescript-eslint/type-utils/5.51.0_vgl77cfdswitgr47lm5swmv43m: + resolution: {integrity: sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 + '@typescript-eslint/utils': 5.51.0_vgl77cfdswitgr47lm5swmv43m + debug: 4.3.4 + eslint: 8.36.0 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/types/5.51.0: resolution: {integrity: sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2445,6 +1951,26 @@ packages: - typescript dev: true + /@typescript-eslint/utils/5.51.0_vgl77cfdswitgr47lm5swmv43m: + resolution: {integrity: sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.51.0 + '@typescript-eslint/types': 5.51.0 + '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 + eslint: 8.36.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@8.36.0 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@typescript-eslint/visitor-keys/5.51.0: resolution: {integrity: sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2895,8 +2421,8 @@ packages: semver: 7.3.8 dev: true - /byte-size/7.0.1: - resolution: {integrity: sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A==} + /byte-size/7.0.0: + resolution: {integrity: sha512-NNiBxKgxybMBtWdmvx7ZITJi4ZG+CYUgwOSZTfqB1qogkRHrhbQE/R2r5Fh94X+InN5MCYz6SvB/ejHMj/HbsQ==} engines: {node: '>=10'} dev: true @@ -2981,6 +2507,14 @@ packages: escape-string-regexp: 1.0.5 supports-color: 5.5.0 + /chalk/4.1.0: + resolution: {integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + /chalk/4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -3163,8 +2697,8 @@ packages: typedarray: 0.0.6 dev: true - /config-chain/1.1.13: - resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + /config-chain/1.1.12: + resolution: {integrity: sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==} dependencies: ini: 1.3.8 proto-list: 1.2.4 @@ -3190,8 +2724,8 @@ packages: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} dev: true - /conventional-changelog-angular/5.0.13: - resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==} + /conventional-changelog-angular/5.0.12: + resolution: {integrity: sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw==} engines: {node: '>=10'} dependencies: compare-func: 2.0.0 @@ -3287,8 +2821,8 @@ packages: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cosmiconfig/7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + /cosmiconfig/7.0.0: + resolution: {integrity: sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==} engines: {node: '>=10'} dependencies: '@types/parse-json': 4.0.0 @@ -3740,6 +3274,21 @@ packages: engines: {node: '>=10'} dev: true + /eslint-config-airbnb-base/15.0.0_eakrjjutlgqjxe5ydhtnd4qdmy: + resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.2 + dependencies: + confusing-browser-globals: 1.0.11 + eslint: 8.36.0 + eslint-plugin-import: 2.27.5_y3kxypljbrsqsvzx2vonfsz2na + object.assign: 4.1.4 + object.entries: 1.1.6 + semver: 6.3.0 + dev: true + /eslint-config-airbnb-base/15.0.0_mvgyw3chnqkp6sgfmmtihyjpnm: resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} engines: {node: ^10.12.0 || >=12.0.0} @@ -3755,6 +3304,26 @@ packages: semver: 6.3.0 dev: true + /eslint-config-airbnb/19.0.4_guhfqc3yvckhutqwrddiy54d5i: + resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} + engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.3 + eslint-plugin-jsx-a11y: ^6.5.1 + eslint-plugin-react: ^7.28.0 + eslint-plugin-react-hooks: ^4.3.0 + dependencies: + eslint: 8.36.0 + eslint-config-airbnb-base: 15.0.0_eakrjjutlgqjxe5ydhtnd4qdmy + eslint-plugin-import: 2.27.5_y3kxypljbrsqsvzx2vonfsz2na + eslint-plugin-jsx-a11y: 6.7.1_eslint@8.36.0 + eslint-plugin-react: 7.32.2_eslint@8.36.0 + eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 + object.assign: 4.1.4 + object.entries: 1.1.6 + dev: true + /eslint-config-airbnb/19.0.4_hbw3smywoiafix46yjc35xsaqq: resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3802,16 +3371,65 @@ packages: - supports-color dev: true + /eslint-config-lxsmnsyc/0.4.8_vgl77cfdswitgr47lm5swmv43m: + resolution: {integrity: sha512-ScahTJ0rHq1upD6T8Radj28KkADtQF4vWJ0JNYTdEOiY+qwWvH3kGafN3HY7Pu/tEUhAGWYc3gMe1g74MR3wOg==} + peerDependencies: + eslint: ^8.0 + typescript: ^4.0 + dependencies: + '@next/eslint-plugin-next': 12.3.4 + '@typescript-eslint/eslint-plugin': 5.51.0_2uf2vhztc4ckxd4qxmfbkpecpu + '@typescript-eslint/parser': 5.51.0_vgl77cfdswitgr47lm5swmv43m + eslint: 8.36.0 + eslint-config-airbnb: 19.0.4_guhfqc3yvckhutqwrddiy54d5i + eslint-config-airbnb-base: 15.0.0_eakrjjutlgqjxe5ydhtnd4qdmy + eslint-config-preact: 1.3.0_bhvtjkvghps2on5snwbnqfulzi + eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-typescript: 2.7.1_eakrjjutlgqjxe5ydhtnd4qdmy + eslint-plugin-import: 2.27.5_y3kxypljbrsqsvzx2vonfsz2na + eslint-plugin-jsx-a11y: 6.7.1_eslint@8.36.0 + eslint-plugin-react: 7.32.2_eslint@8.36.0 + eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 + eslint-plugin-vue: 9.9.0_eslint@8.36.0 + typescript: 4.9.5 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - jest + - supports-color + dev: true + + /eslint-config-preact/1.3.0_bhvtjkvghps2on5snwbnqfulzi: + resolution: {integrity: sha512-yHYXg5qNzEJd3D/30AmsIW0W8MuY858KpApXp7xxBF08IYUljSKCOqMx+dVucXHQnAm7+11wOnMkgVHIBAechw==} + peerDependencies: + eslint: 6.x || 7.x || 8.x + dependencies: + '@babel/core': 7.21.3 + '@babel/eslint-parser': 7.19.1_pxuto7xgangxlusvzceggvrmde + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.21.3 + '@babel/plugin-syntax-decorators': 7.19.0_@babel+core@7.21.3 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.21.3 + eslint: 8.36.0 + eslint-plugin-compat: 4.1.1_eslint@8.36.0 + eslint-plugin-jest: 25.7.0_bhvtjkvghps2on5snwbnqfulzi + eslint-plugin-react: 7.32.2_eslint@8.36.0 + eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 + transitivePeerDependencies: + - '@typescript-eslint/eslint-plugin' + - jest + - supports-color + - typescript + dev: true + /eslint-config-preact/1.3.0_wz3lx5pragqwrk3vwpswr7bnzu: resolution: {integrity: sha512-yHYXg5qNzEJd3D/30AmsIW0W8MuY858KpApXp7xxBF08IYUljSKCOqMx+dVucXHQnAm7+11wOnMkgVHIBAechw==} peerDependencies: eslint: 6.x || 7.x || 8.x dependencies: - '@babel/core': 7.20.12 - '@babel/eslint-parser': 7.19.1_ydmbqfus77qykiqxhcwsorsqbq - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.12 - '@babel/plugin-syntax-decorators': 7.19.0_@babel+core@7.20.12 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 + '@babel/core': 7.21.3 + '@babel/eslint-parser': 7.19.1_pbvtqpyzjxqz5iuwx4l5fsvzvy + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.21.3 + '@babel/plugin-syntax-decorators': 7.19.0_@babel+core@7.21.3 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.21.3 eslint: 8.34.0 eslint-plugin-compat: 4.1.1_eslint@8.34.0 eslint-plugin-jest: 25.7.0_wz3lx5pragqwrk3vwpswr7bnzu @@ -3834,6 +3452,24 @@ packages: - supports-color dev: true + /eslint-import-resolver-typescript/2.7.1_eakrjjutlgqjxe5ydhtnd4qdmy: + resolution: {integrity: sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==} + engines: {node: '>=4'} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.4 + eslint: 8.36.0 + eslint-plugin-import: 2.27.5_y3kxypljbrsqsvzx2vonfsz2na + glob: 7.2.3 + is-glob: 4.0.3 + resolve: 1.22.1 + tsconfig-paths: 3.14.1 + transitivePeerDependencies: + - supports-color + dev: true + /eslint-import-resolver-typescript/2.7.1_mvgyw3chnqkp6sgfmmtihyjpnm: resolution: {integrity: sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==} engines: {node: '>=4'} @@ -3852,6 +3488,36 @@ packages: - supports-color dev: true + /eslint-module-utils/2.7.4_4q4yscu2jvzevotod3tr2unfbq: + resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 5.51.0_vgl77cfdswitgr47lm5swmv43m + debug: 3.2.7 + eslint: 8.36.0 + eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-typescript: 2.7.1_eakrjjutlgqjxe5ydhtnd4qdmy + transitivePeerDependencies: + - supports-color + dev: true + /eslint-module-utils/2.7.4_t5wp3c6bya7m2e5r5egiqynqou: resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} @@ -3899,6 +3565,23 @@ packages: semver: 7.3.8 dev: true + /eslint-plugin-compat/4.1.1_eslint@8.36.0: + resolution: {integrity: sha512-vUAaqKcDwXpVASyCAfKzkfaw3NxZ6FqeCNSGp7yqHpUMzkAiWRO0B6pR5zqh8RUhvybwXhPXvwVKDLr9GqGFUQ==} + engines: {node: '>=9.x'} + peerDependencies: + eslint: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@mdn/browser-compat-data': 5.2.35 + ast-metadata-inferer: 0.7.0 + browserslist: 4.21.5 + caniuse-lite: 1.0.30001451 + core-js: 3.27.2 + eslint: 8.36.0 + find-up: 5.0.0 + lodash.memoize: 4.1.2 + semver: 7.3.8 + dev: true + /eslint-plugin-import/2.27.5_quy4g5efgijwa67gk4incjhlny: resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} @@ -3932,6 +3615,60 @@ packages: - supports-color dev: true + /eslint-plugin-import/2.27.5_y3kxypljbrsqsvzx2vonfsz2na: + resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 5.51.0_vgl77cfdswitgr47lm5swmv43m + array-includes: 3.1.6 + array.prototype.flat: 1.3.1 + array.prototype.flatmap: 1.3.1 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.36.0 + eslint-import-resolver-node: 0.3.7 + eslint-module-utils: 2.7.4_4q4yscu2jvzevotod3tr2unfbq + has: 1.0.3 + is-core-module: 2.11.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.6 + resolve: 1.22.1 + semver: 6.3.0 + tsconfig-paths: 3.14.1 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-jest/25.7.0_bhvtjkvghps2on5snwbnqfulzi: + resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^4.0.0 || ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 5.51.0_2uf2vhztc4ckxd4qxmfbkpecpu + '@typescript-eslint/experimental-utils': 5.51.0_vgl77cfdswitgr47lm5swmv43m + eslint: 8.36.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /eslint-plugin-jest/25.7.0_wz3lx5pragqwrk3vwpswr7bnzu: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -3978,6 +3715,31 @@ packages: semver: 6.3.0 dev: true + /eslint-plugin-jsx-a11y/6.7.1_eslint@8.36.0: + resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + '@babel/runtime': 7.20.13 + aria-query: 5.1.3 + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + ast-types-flow: 0.0.7 + axe-core: 4.6.3 + axobject-query: 3.1.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 8.36.0 + has: 1.0.3 + jsx-ast-utils: 3.3.3 + language-tags: 1.0.5 + minimatch: 3.1.2 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + semver: 6.3.0 + dev: true + /eslint-plugin-react-hooks/4.6.0_eslint@8.34.0: resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} @@ -3987,6 +3749,15 @@ packages: eslint: 8.34.0 dev: true + /eslint-plugin-react-hooks/4.6.0_eslint@8.36.0: + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.36.0 + dev: true + /eslint-plugin-react/7.32.2_eslint@8.34.0: resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} engines: {node: '>=4'} @@ -4011,6 +3782,30 @@ packages: string.prototype.matchall: 4.0.8 dev: true + /eslint-plugin-react/7.32.2_eslint@8.36.0: + resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + array.prototype.tosorted: 1.1.1 + doctrine: 2.1.0 + eslint: 8.36.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.3 + minimatch: 3.1.2 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + object.hasown: 1.1.2 + object.values: 1.1.6 + prop-types: 15.8.1 + resolve: 2.0.0-next.4 + semver: 6.3.0 + string.prototype.matchall: 4.0.8 + dev: true + /eslint-plugin-vue/9.9.0_eslint@8.34.0: resolution: {integrity: sha512-YbubS7eK0J7DCf0U2LxvVP7LMfs6rC6UltihIgval3azO3gyDwEGVgsCMe1TmDiEkl6GdMKfRpaME6QxIYtzDQ==} engines: {node: ^14.17.0 || >=16.0.0} @@ -4029,6 +3824,24 @@ packages: - supports-color dev: true + /eslint-plugin-vue/9.9.0_eslint@8.36.0: + resolution: {integrity: sha512-YbubS7eK0J7DCf0U2LxvVP7LMfs6rC6UltihIgval3azO3gyDwEGVgsCMe1TmDiEkl6GdMKfRpaME6QxIYtzDQ==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + dependencies: + eslint: 8.36.0 + eslint-utils: 3.0.0_eslint@8.36.0 + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.0.11 + semver: 7.3.8 + vue-eslint-parser: 9.1.0_eslint@8.36.0 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /eslint-scope/5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -4055,6 +3868,16 @@ packages: eslint-visitor-keys: 2.1.0 dev: true + /eslint-utils/3.0.0_eslint@8.36.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.36.0 + eslint-visitor-keys: 2.1.0 + dev: true + /eslint-visitor-keys/2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} engines: {node: '>=10'} @@ -4065,12 +3888,63 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.34.0: - resolution: {integrity: sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==} + /eslint/8.34.0: + resolution: {integrity: sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint/eslintrc': 1.4.1 + '@humanwhocodes/config-array': 0.11.8 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.1.1 + eslint-utils: 3.0.0_eslint@8.34.0 + eslint-visitor-keys: 3.3.0 + espree: 9.4.1 + esquery: 1.4.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.20.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-sdsl: 4.3.0 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + regexpp: 3.2.0 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint/8.36.0: + resolution: {integrity: sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint/eslintrc': 1.4.1 + '@eslint-community/eslint-utils': 4.3.0_eslint@8.36.0 + '@eslint-community/regexpp': 4.4.0 + '@eslint/eslintrc': 2.0.1 + '@eslint/js': 8.36.0 '@humanwhocodes/config-array': 0.11.8 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -4081,10 +3955,9 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.34.0 eslint-visitor-keys: 3.3.0 - espree: 9.4.1 - esquery: 1.4.0 + espree: 9.5.0 + esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 @@ -4105,7 +3978,6 @@ packages: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.1 - regexpp: 3.2.0 strip-ansi: 6.0.1 strip-json-comments: 3.1.1 text-table: 0.2.0 @@ -4122,6 +3994,15 @@ packages: eslint-visitor-keys: 3.3.0 dev: true + /espree/9.5.0: + resolution: {integrity: sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.8.2 + acorn-jsx: 5.3.2_acorn@8.8.2 + eslint-visitor-keys: 3.3.0 + dev: true + /esprima/4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -4135,6 +4016,13 @@ packages: estraverse: 5.3.0 dev: true + /esquery/1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + /esrecurse/4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} @@ -4164,6 +4052,21 @@ packages: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} dev: true + /execa/5.0.0: + resolution: {integrity: sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + /execa/5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -4434,6 +4337,11 @@ packages: engines: {node: '>=8'} dev: true + /get-stream/6.0.0: + resolution: {integrity: sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==} + engines: {node: '>=10'} + dev: true + /get-stream/6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -4989,11 +4897,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /is-plain-obj/2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - dev: true - /is-plain-object/2.0.4: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} @@ -5030,6 +4933,11 @@ packages: protocols: 2.0.1 dev: true + /is-stream/2.0.0: + resolution: {integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==} + engines: {node: '>=8'} + dev: true + /is-stream/2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -5253,36 +5161,87 @@ packages: language-subtag-registry: 0.3.22 dev: true - /lerna/6.4.1: - resolution: {integrity: sha512-0t8TSG4CDAn5+vORjvTFn/ZEGyc4LOEsyBUpzcdIxODHPKM4TVOGvbW9dBs1g40PhOrQfwhHS+3fSx/42j42dQ==} + /lerna/6.5.1: + resolution: {integrity: sha512-Va1bysubwWdoWZ1ncKcoTGBXNAu/10/TwELb550TTivXmEWjCCdek4eX0BNLTEYKxu3tpV2UEeqVisUiWGn4WA==} engines: {node: ^14.15.0 || >=16.0.0} hasBin: true dependencies: - '@lerna/add': 6.4.1 - '@lerna/bootstrap': 6.4.1 - '@lerna/changed': 6.4.1 - '@lerna/clean': 6.4.1 - '@lerna/cli': 6.4.1 - '@lerna/command': 6.4.1 - '@lerna/create': 6.4.1 - '@lerna/diff': 6.4.1 - '@lerna/exec': 6.4.1 - '@lerna/filter-options': 6.4.1 - '@lerna/import': 6.4.1 - '@lerna/info': 6.4.1 - '@lerna/init': 6.4.1 - '@lerna/link': 6.4.1 - '@lerna/list': 6.4.1 - '@lerna/publish': 6.4.1_nx@15.6.3+typescript@4.9.5 - '@lerna/run': 6.4.1 - '@lerna/validation-error': 6.4.1 - '@lerna/version': 6.4.1_nx@15.6.3+typescript@4.9.5 + '@lerna/child-process': 6.5.1 + '@lerna/create': 6.5.1 + '@npmcli/arborist': 5.3.0 + '@npmcli/run-script': 4.1.7 '@nrwl/devkit': 15.6.3_nx@15.6.3+typescript@4.9.5 + '@octokit/plugin-enterprise-rest': 6.0.1 + '@octokit/rest': 19.0.3 + byte-size: 7.0.0 + chalk: 4.1.0 + clone-deep: 4.0.1 + cmd-shim: 5.0.0 + columnify: 1.6.0 + config-chain: 1.1.12 + conventional-changelog-angular: 5.0.12 + conventional-changelog-core: 4.2.4 + conventional-recommended-bump: 6.1.0 + cosmiconfig: 7.0.0 + dedent: 0.7.0 + dot-prop: 6.0.1 + envinfo: 7.8.1 + execa: 5.0.0 + fs-extra: 9.1.0 + get-port: 5.1.1 + get-stream: 6.0.0 + git-url-parse: 13.1.0 + glob-parent: 5.1.2 + globby: 11.1.0 + graceful-fs: 4.2.10 + has-unicode: 2.0.1 import-local: 3.1.0 + init-package-json: 3.0.2 inquirer: 8.2.5 + is-ci: 2.0.0 + is-stream: 2.0.0 + js-yaml: 4.1.0 + libnpmaccess: 6.0.3 + libnpmpublish: 6.0.4 + load-json-file: 6.2.0 + make-dir: 3.1.0 + minimatch: 3.0.5 + multimatch: 5.0.0 + node-fetch: 2.6.7 + npm-package-arg: 8.1.1 + npm-packlist: 5.1.1 + npm-registry-fetch: 13.3.0 npmlog: 6.0.2 nx: 15.6.3 + p-map: 4.0.0 + p-map-series: 2.1.0 + p-pipe: 3.1.0 + p-queue: 6.6.2 + p-reduce: 2.1.0 + p-waterfall: 2.1.1 + pacote: 13.6.1 + path-exists: 4.0.0 + pify: 5.0.0 + read-cmd-shim: 3.0.0 + read-package-json: 5.0.1 + resolve-from: 5.0.0 + rimraf: 3.0.2 + semver: 7.3.4 + signal-exit: 3.0.7 + slash: 3.0.0 + ssri: 9.0.1 + strong-log-transformer: 2.1.0 + tar: 6.1.11 + temp-dir: 1.0.0 typescript: 4.9.5 + upath: 2.0.1 + uuid: 8.3.2 + validate-npm-package-license: 3.0.4 + validate-npm-package-name: 4.0.0 + write-file-atomic: 4.0.1 + write-pkg: 4.0.0 + yargs: 16.2.0 + yargs-parser: 20.2.4 transitivePeerDependencies: - '@swc-node/register' - '@swc/core' @@ -5300,8 +5259,8 @@ packages: type-check: 0.4.0 dev: true - /libnpmaccess/6.0.4: - resolution: {integrity: sha512-qZ3wcfIyUoW0+qSFkMBovcTrSGJ3ZeyvpR7d5N9pEYv/kXs8sHP2wiqEIXBKLFrZlmM0kR0RJD7mtfLngtlLag==} + /libnpmaccess/6.0.3: + resolution: {integrity: sha512-4tkfUZprwvih2VUZYMozL7EMKgQ5q9VW2NtRyxWtQWlkLTAWHRklcAvBN49CVqEkhUw7vTX2fNgB5LzgUucgYg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: aproba: 2.0.0 @@ -5313,8 +5272,8 @@ packages: - supports-color dev: true - /libnpmpublish/6.0.5: - resolution: {integrity: sha512-LUR08JKSviZiqrYTDfywvtnsnxr+tOvBU0BF8H+9frt7HMvc6Qn6F8Ubm72g5hDTHbq8qupKfDvDAln2TVPvFg==} + /libnpmpublish/6.0.4: + resolution: {integrity: sha512-lvAEYW8mB8QblL6Q/PI/wMzKNvIrF7Kpujf/4fGS/32a2i3jzUXi04TNyIBcK6dQJ34IgywfaKGh+Jq4HYPFmg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: normalize-package-data: 4.0.1 @@ -5748,6 +5707,18 @@ packages: resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} dev: true + /node-fetch/2.6.7: + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: true + /node-fetch/2.6.9: resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} engines: {node: 4.x || >=6.0.0} @@ -5881,6 +5852,17 @@ packages: validate-npm-package-name: 4.0.0 dev: true + /npm-packlist/5.1.1: + resolution: {integrity: sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + hasBin: true + dependencies: + glob: 8.1.0 + ignore-walk: 5.0.1 + npm-bundled: 1.1.2 + npm-normalize-package-bin: 1.0.1 + dev: true + /npm-packlist/5.1.3: resolution: {integrity: sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -5902,6 +5884,22 @@ packages: semver: 7.3.8 dev: true + /npm-registry-fetch/13.3.0: + resolution: {integrity: sha512-10LJQ/1+VhKrZjIuY9I/+gQTvumqqlgnsCufoXETHAPFTS3+M+Z5CFhZRDHGavmJ6rOye3UvNga88vl8n1r6gg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + make-fetch-happen: 10.2.1 + minipass: 3.3.6 + minipass-fetch: 2.1.2 + minipass-json-stream: 1.0.1 + minizlib: 2.1.2 + npm-package-arg: 9.1.2 + proc-log: 2.0.1 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + /npm-registry-fetch/13.3.1: resolution: {integrity: sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -6240,6 +6238,37 @@ packages: resolution: {integrity: sha512-Bey4gdRuOwDbS8Fj1qA3/pTq5r8pqiI5E3tjSqCdhaLSsyGG364VFzXLTIexN5AaNGe/vgdBzLfoKdr7EVg2KQ==} dev: true + /pacote/13.6.1: + resolution: {integrity: sha512-L+2BI1ougAPsFjXRyBhcKmfT016NscRFLv6Pz5EiNf1CCFJFU0pSKKQwsZTyAQB+sTuUL4TyFyp6J1Ork3dOqw==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + hasBin: true + dependencies: + '@npmcli/git': 3.0.2 + '@npmcli/installed-package-contents': 1.0.7 + '@npmcli/promise-spawn': 3.0.0 + '@npmcli/run-script': 4.2.1 + cacache: 16.1.3 + chownr: 2.0.0 + fs-minipass: 2.1.0 + infer-owner: 1.0.4 + minipass: 3.3.6 + mkdirp: 1.0.4 + npm-package-arg: 9.1.2 + npm-packlist: 5.1.3 + npm-pick-manifest: 7.0.2 + npm-registry-fetch: 13.3.1 + proc-log: 2.0.1 + promise-retry: 2.0.1 + read-package-json: 5.0.2 + read-package-json-fast: 2.0.3 + rimraf: 3.0.2 + ssri: 9.0.1 + tar: 6.1.13 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + /pacote/13.6.2: resolution: {integrity: sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -6450,8 +6479,8 @@ packages: react-is: 17.0.2 dev: true - /pridepack/2.4.0_64oh6xetmihmk3s5lpnh2fqrua: - resolution: {integrity: sha512-KL+X7UP1UNO/+ylH4xr8FPnThvbWPbNQonHI1RPk36bptA0/vjkZPU6PTKH3oTJVvd4Gvs2FfsSOFtT4hEoB0A==} + /pridepack/2.4.1_64oh6xetmihmk3s5lpnh2fqrua: + resolution: {integrity: sha512-WxHA4t9bn0vAPF+8WaqoJveT9HiHN6yg1sE5GXCBiLQUZnvmK6D+/2Nato+UQ3SpIiiOXeZKfOYpHVjDedkj1g==} engines: {node: '>=12.12.0'} hasBin: true peerDependencies: @@ -6475,7 +6504,7 @@ packages: yargs: 17.6.2 dev: true - /pridepack/2.4.1_64oh6xetmihmk3s5lpnh2fqrua: + /pridepack/2.4.1_a37tusewm2jlajv35tjly5qag4: resolution: {integrity: sha512-WxHA4t9bn0vAPF+8WaqoJveT9HiHN6yg1sE5GXCBiLQUZnvmK6D+/2Nato+UQ3SpIiiOXeZKfOYpHVjDedkj1g==} engines: {node: '>=12.12.0'} hasBin: true @@ -6488,7 +6517,32 @@ packages: degit: 2.8.4 dotenv: 16.0.3 esbuild: 0.17.7 - eslint: 8.34.0 + eslint: 8.36.0 + execa: 5.1.1 + license: 1.0.3 + ora: 6.1.2 + package-json-type: 1.0.3 + pretty-bytes: 6.1.0 + prompts: 2.4.2 + tslib: 2.5.0 + typescript: 4.9.5 + yargs: 17.6.2 + dev: true + + /pridepack/2.4.2_a37tusewm2jlajv35tjly5qag4: + resolution: {integrity: sha512-Ef6TxQunAxb09aX9NyETUgS1gKiQjX2W2UE/MM9z0XtWtzzLopRZ8YoK940uomE9vH52A40aXMKoKAzgCzeNcA==} + engines: {node: '>=12.12.0'} + hasBin: true + peerDependencies: + eslint: ^8.0 + tslib: ^2.0 + typescript: ^4.0 + dependencies: + '@ovyerus/licenses': 6.4.4 + degit: 2.8.4 + dotenv: 16.0.3 + esbuild: 0.17.7 + eslint: 8.36.0 execa: 5.1.1 license: 1.0.3 ora: 6.1.2 @@ -6617,6 +6671,11 @@ packages: loose-envify: 1.4.0 dev: false + /read-cmd-shim/3.0.0: + resolution: {integrity: sha512-KQDVjGqhZk92PPNRj9ZEXEuqg8bUobSKRw+q0YQ3TKI5xkce7bUJobL4Z/OtiEbAAv70yEpYIXp4iQ9L8oPVog==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dev: true + /read-cmd-shim/3.0.1: resolution: {integrity: sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -6630,6 +6689,16 @@ packages: npm-normalize-package-bin: 1.0.1 dev: true + /read-package-json/5.0.1: + resolution: {integrity: sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + glob: 8.1.0 + json-parse-even-better-errors: 2.3.1 + normalize-package-data: 4.0.1 + npm-normalize-package-bin: 1.0.1 + dev: true + /read-package-json/5.0.2: resolution: {integrity: sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -6979,13 +7048,6 @@ packages: is-plain-obj: 1.1.0 dev: true - /sort-keys/4.2.0: - resolution: {integrity: sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==} - engines: {node: '>=8'} - dependencies: - is-plain-obj: 2.1.0 - dev: true - /source-map-js/1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -7208,6 +7270,18 @@ packages: readable-stream: 3.6.0 dev: true + /tar/6.1.11: + resolution: {integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==} + engines: {node: '>= 10'} + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 3.3.6 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + dev: true + /tar/6.1.13: resolution: {integrity: sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==} engines: {node: '>=10'} @@ -7511,7 +7585,7 @@ packages: builtins: 5.0.1 dev: true - /vite-node/0.28.4_@types+node@18.13.0: + /vite-node/0.28.4_@types+node@18.15.3: resolution: {integrity: sha512-KM0Q0uSG/xHHKOJvVHc5xDBabgt0l70y7/lWTR7Q0pR5/MrYxadT+y32cJOE65FfjGmJgxpVEEY+69btJgcXOQ==} engines: {node: '>=v14.16.0'} hasBin: true @@ -7523,7 +7597,7 @@ packages: picocolors: 1.0.0 source-map: 0.6.1 source-map-support: 0.5.21 - vite: 4.1.4_@types+node@18.13.0 + vite: 4.1.4_@types+node@18.15.3 transitivePeerDependencies: - '@types/node' - less @@ -7534,7 +7608,7 @@ packages: - terser dev: true - /vite/4.1.1_@types+node@18.13.0: + /vite/4.1.1_@types+node@18.15.3: resolution: {integrity: sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -7559,7 +7633,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.13.0 + '@types/node': 18.15.3 esbuild: 0.16.17 postcss: 8.4.21 resolve: 1.22.1 @@ -7601,7 +7675,7 @@ packages: fsevents: 2.3.2 dev: true - /vite/4.1.4_@types+node@18.13.0: + /vite/4.1.4_@types+node@18.15.3: resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -7626,7 +7700,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.13.0 + '@types/node': 18.15.3 esbuild: 0.16.17 postcss: 8.4.21 resolve: 1.22.1 @@ -7659,7 +7733,7 @@ packages: dependencies: '@types/chai': 4.3.4 '@types/chai-subset': 1.3.3 - '@types/node': 18.13.0 + '@types/node': 18.15.3 '@vitest/expect': 0.28.4 '@vitest/runner': 0.28.4 '@vitest/spy': 0.28.4 @@ -7678,8 +7752,8 @@ packages: tinybench: 2.3.1 tinypool: 0.3.1 tinyspy: 1.1.1 - vite: 4.1.1_@types+node@18.13.0 - vite-node: 0.28.4_@types+node@18.13.0 + vite: 4.1.1_@types+node@18.15.3 + vite-node: 0.28.4_@types+node@18.15.3 why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -7700,8 +7774,26 @@ packages: eslint: 8.34.0 eslint-scope: 7.1.1 eslint-visitor-keys: 3.3.0 - espree: 9.4.1 - esquery: 1.4.0 + espree: 9.5.0 + esquery: 1.5.0 + lodash: 4.17.21 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + dev: true + + /vue-eslint-parser/9.1.0_eslint@8.36.0: + resolution: {integrity: sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + debug: 4.3.4 + eslint: 8.36.0 + eslint-scope: 7.1.1 + eslint-visitor-keys: 3.3.0 + espree: 9.5.0 + esquery: 1.5.0 lodash: 4.17.21 semver: 7.3.8 transitivePeerDependencies: @@ -7839,6 +7931,14 @@ packages: typedarray-to-buffer: 3.1.5 dev: true + /write-file-atomic/4.0.1: + resolution: {integrity: sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + /write-file-atomic/4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -7859,18 +7959,6 @@ packages: write-file-atomic: 2.4.3 dev: true - /write-json-file/4.3.0: - resolution: {integrity: sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ==} - engines: {node: '>=8.3'} - dependencies: - detect-indent: 6.1.0 - graceful-fs: 4.2.10 - is-plain-obj: 2.1.0 - make-dir: 3.1.0 - sort-keys: 4.2.0 - write-file-atomic: 3.0.3 - dev: true - /write-pkg/4.0.0: resolution: {integrity: sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==} engines: {node: '>=8'} From 0049b92502191d987b3ae2a50a71c512546ede4c Mon Sep 17 00:00:00 2001 From: Alexis Munsayac Date: Sat, 18 Mar 2023 20:18:59 +0800 Subject: [PATCH 04/16] Optimize loops --- examples/preact/package.json | 2 +- examples/react/package.json | 2 +- package.json | 2 +- packages/forgetti/package.json | 2 +- packages/forgetti/src/core/arrays.ts | 70 ---- .../forgetti/src/core/get-foreign-bindings.ts | 7 +- .../src/core/is-guaranteed-literal.ts | 15 +- packages/forgetti/src/core/optimizer-scope.ts | 4 +- packages/forgetti/src/core/optimizer.ts | 108 +++-- packages/forgetti/src/index.ts | 160 ++++---- packages/rollup/package.json | 2 +- packages/vite/package.json | 2 +- pnpm-lock.yaml | 368 +++++++++++++----- 13 files changed, 456 insertions(+), 288 deletions(-) delete mode 100644 packages/forgetti/src/core/arrays.ts diff --git a/examples/preact/package.json b/examples/preact/package.json index a5082f1..8d2e682 100644 --- a/examples/preact/package.json +++ b/examples/preact/package.json @@ -9,7 +9,7 @@ "devDependencies": { "@preact/preset-vite": "^2.5.0", "eslint": "^8.34.0", - "eslint-config-lxsmnsyc": "^0.4.8", + "eslint-config-lxsmnsyc": "^0.5.1", "typescript": "^4.9.5", "vite": "^4.1.2", "vite-plugin-forgetti": "0.3.0" diff --git a/examples/react/package.json b/examples/react/package.json index bb33b08..2775fdd 100644 --- a/examples/react/package.json +++ b/examples/react/package.json @@ -11,7 +11,7 @@ "@types/react-dom": "^18.0.11", "@vitejs/plugin-react": "^3.1.0", "eslint": "^8.34.0", - "eslint-config-lxsmnsyc": "^0.4.8", + "eslint-config-lxsmnsyc": "^0.5.1", "typescript": "^4.9.5", "vite": "^4.1.2", "vite-plugin-forgetti": "0.3.0" diff --git a/package.json b/package.json index 28c8889..755ac48 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ ], "devDependencies": { "eslint": "^8.36.0", - "eslint-config-lxsmnsyc": "^0.4.8", + "eslint-config-lxsmnsyc": "^0.5.1", "lerna": "^6.5.1", "typescript": "^4.9.5" } diff --git a/packages/forgetti/package.json b/packages/forgetti/package.json index 3223e36..dc1a5f2 100644 --- a/packages/forgetti/package.json +++ b/packages/forgetti/package.json @@ -19,7 +19,7 @@ "@types/babel__traverse": "^7.18.3", "@types/node": "^18.15.3", "eslint": "^8.36.0", - "eslint-config-lxsmnsyc": "^0.4.8", + "eslint-config-lxsmnsyc": "^0.5.1", "pridepack": "2.4.2", "tslib": "^2.5.0", "typescript": "^4.9.4", diff --git a/packages/forgetti/src/core/arrays.ts b/packages/forgetti/src/core/arrays.ts deleted file mode 100644 index 6e5caa0..0000000 --- a/packages/forgetti/src/core/arrays.ts +++ /dev/null @@ -1,70 +0,0 @@ -export function forEach(arr: T[], callback: (value: T, index: number) => (boolean | void)) { - for (let i = 0, len = arr.length; i < len; i += 1) { - if (callback(arr[i], i)) { - break; - } - } -} - -export function some(arr: T[], callback: (value: T, index: number) => boolean) { - for (let i = 0, len = arr.length; i < len; i += 1) { - if (callback(arr[i], i)) { - return true; - } - } - return false; -} - -export function every(arr: T[], callback: (value: T, index: number) => boolean) { - for (let i = 0, len = arr.length; i < len; i += 1) { - if (!callback(arr[i], i)) { - return false; - } - } - return true; -} - -export function join(arr: string[], joiner?: string) { - let result = ''; - if (joiner) { - forEach(arr, (value, i) => { - result += value; - if (i < arr.length - 1) { - result += joiner; - } - }); - } else { - forEach(arr, (value) => { - result += value; - }); - } - return result; -} - -type Flat = T extends Array - ? Flat - : T; - -export function flat(arr: T[]): Flat[] { - const result: Flat[] = []; - - forEach(arr, (item) => { - if (Array.isArray(item)) { - forEach(flat(item), (value) => { - result.push(value as Flat); - }); - } else { - result.push(item as Flat); - } - }); - - return result; -} - -export function map(arr: T[], callback: (value: T, index: number) => R): R[] { - const values: R[] = []; - for (let i = 0, len = arr.length; i < len; i += 1) { - values[i] = callback(arr[i], i); - } - return values; -} diff --git a/packages/forgetti/src/core/get-foreign-bindings.ts b/packages/forgetti/src/core/get-foreign-bindings.ts index 2c31b83..6ce5b19 100644 --- a/packages/forgetti/src/core/get-foreign-bindings.ts +++ b/packages/forgetti/src/core/get-foreign-bindings.ts @@ -1,6 +1,5 @@ import * as babel from '@babel/core'; import * as t from '@babel/types'; -import { map } from './arrays'; function isForeignBinding( source: babel.NodePath, @@ -59,5 +58,9 @@ export default function getForeignBindings(path: babel.NodePath): t.Identifier[] }, }); - return map([...identifiers], (value) => t.identifier(value)); + const result: t.Identifier[] = []; + for (const identifier of identifiers) { + result.push(t.identifier(identifier)); + } + return result; } diff --git a/packages/forgetti/src/core/is-guaranteed-literal.ts b/packages/forgetti/src/core/is-guaranteed-literal.ts index cbdddc6..43f1c2c 100644 --- a/packages/forgetti/src/core/is-guaranteed-literal.ts +++ b/packages/forgetti/src/core/is-guaranteed-literal.ts @@ -1,17 +1,22 @@ import * as t from '@babel/types'; -import { every } from './arrays'; import { isNestedExpression } from './checks'; export default function isGuaranteedLiteral(node: t.Node): node is t.Literal { if (t.isLiteral(node)) { // Check if it is template literal but with only static expressions if (t.isTemplateLiteral(node)) { - return every(node.expressions, (expr) => { + let expr: t.Expression | t.TSType; + for (let i = 0, len = node.expressions.length; i < len; i++) { + expr = node.expressions[i]; if (t.isExpression(expr)) { - return isGuaranteedLiteral(expr); + if (!isGuaranteedLiteral(expr)) { + return false; + } + } else { + return false; } - return false; - }); + } + return true; } return true; } diff --git a/packages/forgetti/src/core/optimizer-scope.ts b/packages/forgetti/src/core/optimizer-scope.ts index e9eef4b..604c792 100644 --- a/packages/forgetti/src/core/optimizer-scope.ts +++ b/packages/forgetti/src/core/optimizer-scope.ts @@ -6,7 +6,9 @@ import { OptimizedExpression, StateContext } from './types'; function mergeVariableDeclaration(statements: t.Statement[]) { let stack: t.VariableDeclarator[] = []; const newStatements: t.Statement[] = []; - for (const value of statements) { + let value: t.Statement; + for (let i = 0, len = statements.length; i < len; i++) { + value = statements[i]; if (t.isVariableDeclaration(value) && value.kind === 'let') { stack.push(...value.declarations); } else { diff --git a/packages/forgetti/src/core/optimizer.ts b/packages/forgetti/src/core/optimizer.ts index dff50e9..4e40f91 100644 --- a/packages/forgetti/src/core/optimizer.ts +++ b/packages/forgetti/src/core/optimizer.ts @@ -1,6 +1,5 @@ import * as babel from '@babel/core'; import * as t from '@babel/types'; -import { forEach } from './arrays'; import { isNestedExpression, isPathValid } from './checks'; import getForeignBindings from './get-foreign-bindings'; import isGuaranteedLiteral from './is-guaranteed-literal'; @@ -77,7 +76,9 @@ export default class Optimizer { if (Array.isArray(dependencies)) { const newSet = new Set(); - forEach(dependencies, (dependency) => { + let dependency: t.Expression; + for (let i = 0, len = dependencies.length; i < len; i++) { + dependency = dependencies[i]; if (condition && dependency) { if (t.isIdentifier(dependency)) { if (!newSet.has(dependency)) { @@ -93,7 +94,7 @@ export default class Optimizer { newSet.add(dependency); } } - }); + } } else if (dependencies === true) { // Do nothing } else if (dependencies) { @@ -443,8 +444,9 @@ export default class Optimizer { if (binding) { const registrations = this.ctx.registrations.hooksNamespaces.get(binding); if (registrations) { + let registration: typeof registrations[0]; for (let i = 0, len = registrations.length; i < len; i += 1) { - const registration = registrations[i]; + registration = registrations[i]; if (registration.name === trueMember.property.name) { switch (registration.type) { case 'callback': @@ -471,7 +473,9 @@ export default class Optimizer { if (isHook) { const argumentsPath = path.get('arguments'); const dependencies = createDependencies(); - forEach(argumentsPath, (argument, i) => { + let argument: typeof argumentsPath[0]; + for (let i = 0, len = argumentsPath.length; i < len; i++) { + argument = argumentsPath[i]; if (isPathValid(argument, t.isExpression)) { const optimized = this.createDependency(argument); if (optimized) { @@ -485,7 +489,7 @@ export default class Optimizer { argument.node.argument = optimized.expr; } } - }); + } return optimizedExpr(path.node); } // Build dependencies @@ -501,7 +505,9 @@ export default class Optimizer { mergeDependencies(condition, callee.deps); } const argumentsPath = path.get('arguments'); - forEach(argumentsPath, (argument, i) => { + let argument: typeof argumentsPath[0]; + for (let i = 0, len = argumentsPath.length; i < len; i++) { + argument = argumentsPath[i]; if (isPathValid(argument, t.isExpression)) { const optimized = this.createDependency(argument); if (optimized) { @@ -515,7 +521,7 @@ export default class Optimizer { argument.node.argument = optimized.expr; } } - }); + } return this.createMemo(path.node, condition); } return optimizedExpr(path.node); @@ -539,10 +545,12 @@ export default class Optimizer { ) { const bindings = getForeignBindings(path); const dependencies = createDependencies(); - forEach(bindings, (binding) => { + let binding: t.Identifier; + for (let i = 0, len = bindings.length; i < len; i++) { + binding = bindings[i]; const optimized = this.memoizeIdentifier(path, binding); mergeDependencies(dependencies, optimized.deps); - }); + } return this.createMemo(path.node, dependencies); } @@ -596,7 +604,9 @@ export default class Optimizer { ) { const condition = createDependencies(); const elementsPath = path.get('elements'); - forEach(elementsPath, (element, i) => { + let element: typeof elementsPath[0]; + for (let i = 0, len = elementsPath.length; i < len; i++) { + element = elementsPath[i]; if (isPathValid(element, t.isExpression)) { const optimized = this.createDependency(element); if (optimized) { @@ -610,8 +620,7 @@ export default class Optimizer { element.node.argument = optimized.expr; } } - }); - + } return this.createMemo(path.node, condition); } @@ -620,7 +629,9 @@ export default class Optimizer { ) { const condition = createDependencies(); const elementsPath = path.get('properties'); - forEach(elementsPath, (element) => { + let element: typeof elementsPath[0]; + for (let i = 0, len = elementsPath.length; i < len; i++) { + element = elementsPath[i]; if (isPathValid(element, t.isObjectProperty)) { const valuePath = element.get('value'); @@ -651,13 +662,15 @@ export default class Optimizer { } else if (isPathValid(element, t.isObjectMethod)) { const bindings = getForeignBindings(path); const dependencies = createDependencies(); - forEach(bindings, (binding) => { + let binding: t.Identifier; + for (let k = 0, klen = bindings.length; k < klen; k++) { + binding = bindings[i]; const optimized = this.memoizeIdentifier(path, binding); mergeDependencies(dependencies, optimized.deps); - }); + } mergeDependencies(condition, dependencies); } - }); + } return this.createMemo(path.node, condition); } @@ -675,7 +688,9 @@ export default class Optimizer { mergeDependencies(condition, callee.deps); } const argumentsPath = path.get('arguments'); - forEach(argumentsPath, (argument, i) => { + let argument: typeof argumentsPath[0]; + for (let i = 0, len = argumentsPath.length; i < len; i++) { + argument = argumentsPath[i]; if (isPathValid(argument, t.isExpression)) { const optimized = this.createDependency(argument); if (optimized) { @@ -689,7 +704,7 @@ export default class Optimizer { argument.node.argument = optimized.expr; } } - }); + } return this.createMemo(path.node, condition); } return optimizedExpr(path.node); @@ -698,10 +713,13 @@ export default class Optimizer { optimizeSequenceExpression( path: babel.NodePath, ) { - forEach(path.get('expressions'), (expr, i) => { + const expressions = path.get('expressions'); + let expr: typeof expressions[0]; + for (let i = 0, len = expressions.length; i < len; i++) { + expr = expressions[i]; const result = this.optimizeExpression(expr); path.node.expressions[i] = result.expr; - }); + } return optimizedExpr(path.node); } @@ -709,7 +727,10 @@ export default class Optimizer { path: babel.NodePath, ) { const conditions = createDependencies(); - forEach(path.get('expressions'), (expr, i) => { + const expressions = path.get('expressions'); + let expr: typeof expressions[0]; + for (let i = 0, len = expressions.length; i < len; i++) { + expr = expressions[i]; if (isPathValid(expr, t.isExpression)) { const dependency = this.createDependency(expr); if (dependency) { @@ -717,7 +738,7 @@ export default class Optimizer { mergeDependencies(conditions, dependency.deps); } } - }); + } return { expr: path.node, deps: conditions, @@ -751,7 +772,10 @@ export default class Optimizer { path: babel.NodePath, ) { const conditions = createDependencies(); - forEach(path.get('children'), (child, i) => { + const children = path.get('children'); + let child: typeof children[0]; + for (let i = 0, len = children.length; i < len; i++) { + child = children[i]; if (isPathValid(child, t.isJSXFragment)) { const optimized = this.createDependency(child); if (optimized) { @@ -774,7 +798,7 @@ export default class Optimizer { } } } - }); + } return conditions; } @@ -795,7 +819,9 @@ export default class Optimizer { if (this.ctx.preset.optimizeJSX) { const dependencies = createDependencies(); const attributes = path.get('openingElement').get('attributes'); - forEach(attributes, (attribute) => { + let attribute: typeof attributes[0]; + for (let i = 0, len = attributes.length; i < len; i++) { + attribute = attributes[i]; if (isPathValid(attribute, t.isJSXAttribute)) { const value = attribute.get('value'); if (value) { @@ -829,7 +855,7 @@ export default class Optimizer { mergeDependencies(dependencies, optimized.deps); } } - }); + } if (path.node.children.length) { mergeDependencies(dependencies, this.memoizeJSXChildren(path)); } @@ -929,7 +955,10 @@ export default class Optimizer { optimizeVariableDeclaration( path: babel.NodePath, ) { - forEach(path.get('declarations'), (declaration) => { + const declarations = path.get('declarations'); + let declaration: typeof declarations[0]; + for (let i = 0, len = declarations.length; i < len; i++) { + declaration = declarations[i]; const init = declaration.node.init ? this.optimizeExpression( declaration.get('init') as babel.NodePath, @@ -946,7 +975,7 @@ export default class Optimizer { ], ), ); - }); + } } optimizeReturnStatement( @@ -970,9 +999,10 @@ export default class Optimizer { private optimizeBlock( path: babel.NodePath, ) { - forEach(path.get('body'), (statement) => { - this.optimizeStatement(statement); - }); + const statements = path.get('body'); + for (let i = 0, len = statements.length; i < len; i++) { + this.optimizeStatement(statements[i]); + } } optimizeBlockStatement( @@ -1048,15 +1078,19 @@ export default class Optimizer { path.node.discriminant = discriminant.expr; const parent = this.scope; - forEach(path.get('cases'), (current) => { + const cases = path.get('cases'); + let current: typeof cases[0]; + for (let i = 0, len = cases.length; i < len; i++) { + current = cases[i]; const scope = new OptimizerScope(parent.ctx, current, parent); this.scope = scope; - forEach(current.get('consequent'), (consequent) => { - this.optimizeStatement(consequent); - }); + const consequents = current.get('consequent'); + for (let k = 0, klen = consequents.length; k < klen; k++) { + this.optimizeStatement(consequents[k]); + } this.scope = parent; current.node.consequent = scope.getStatements(); - }); + } this.scope = parent; this.scope.push(path.node); diff --git a/packages/forgetti/src/index.ts b/packages/forgetti/src/index.ts index 308ce13..74ed33e 100644 --- a/packages/forgetti/src/index.ts +++ b/packages/forgetti/src/index.ts @@ -1,19 +1,96 @@ import * as babel from '@babel/core'; import * as t from '@babel/types'; -import { forEach } from './core/arrays'; import { isComponent, isComponentNameValid, getImportSpecifierName, } from './core/checks'; import Optimizer from './core/optimizer'; -import { PRESETS, Options } from './core/presets'; +import { + PRESETS, + Options, + HookRegistration, + ImportRegistration, +} from './core/presets'; import { StateContext, State } from './core/types'; import unwrapNode from './core/unwrap-node'; import unwrapPath from './core/unwrap-path'; export { Options }; +function registerHookSpecifiers( + ctx: StateContext, + path: babel.NodePath, + hook: HookRegistration, +) { + let specifier: typeof path.node.specifiers[0]; + for (let i = 0, len = path.node.specifiers.length; i < len; i++) { + specifier = path.node.specifiers[i]; + if (t.isImportSpecifier(specifier)) { + if ( + hook.kind === 'named' + && getImportSpecifierName(specifier) === hook.name + ) { + ctx.registrations.hooks.set(specifier.local, hook); + } + if ( + hook.kind === 'default' + && getImportSpecifierName(specifier) === 'default' + ) { + ctx.registrations.hooks.set(specifier.local, hook); + } + } else if (t.isImportDefaultSpecifier(specifier)) { + if (hook.kind === 'default' && specifier.local.name === hook.name) { + ctx.registrations.hooks.set(specifier.local, hook); + } + } else if (t.isImportNamespaceSpecifier(specifier)) { + let current = ctx.registrations.hooksNamespaces.get(specifier.local); + if (!current) { + current = []; + } + current.push(hook); + ctx.registrations.hooksNamespaces.set(specifier.local, current); + } + } +} + +function registerHOCSpecifiers( + ctx: StateContext, + path: babel.NodePath, + hoc: ImportRegistration, +) { + let specifier: typeof path.node.specifiers[0]; + for (let i = 0, len = path.node.specifiers.length; i < len; i++) { + specifier = path.node.specifiers[i]; + if (t.isImportSpecifier(specifier)) { + if ( + hoc.kind === 'named' + && getImportSpecifierName(specifier) === hoc.name + ) { + ctx.registrations.hocs.set(specifier.local, hoc); + } + // For `import { default as x }` + if ( + hoc.kind === 'default' + && getImportSpecifierName(specifier) === 'default' + ) { + ctx.registrations.hocs.set(specifier.local, hoc); + } + } else if (t.isImportDefaultSpecifier(specifier)) { + if (hoc.kind === 'default' && specifier.local.name === hoc.name) { + ctx.registrations.hocs.set(specifier.local, hoc); + } + } else if (t.isImportNamespaceSpecifier(specifier)) { + let current = ctx.registrations.hocsNamespaces.get(specifier.local); + if (!current) { + current = []; + } + current.push(hoc); + ctx.registrations.hocsNamespaces.set(specifier.local, current); + } + } +} + function extractImportIdentifiers( ctx: StateContext, path: babel.NodePath, @@ -21,70 +98,21 @@ function extractImportIdentifiers( const mod = path.node.source.value; // Identify hooks - forEach(ctx.preset.hooks, (registration) => { - if (mod === registration.source) { - forEach(path.node.specifiers, (specifier) => { - if (t.isImportSpecifier(specifier)) { - if ( - registration.kind === 'named' - && getImportSpecifierName(specifier) === registration.name - ) { - ctx.registrations.hooks.set(specifier.local, registration); - } - if ( - registration.kind === 'default' - && getImportSpecifierName(specifier) === 'default' - ) { - ctx.registrations.hooks.set(specifier.local, registration); - } - } else if (t.isImportDefaultSpecifier(specifier)) { - if (registration.kind === 'default' && specifier.local.name === registration.name) { - ctx.registrations.hooks.set(specifier.local, registration); - } - } else if (t.isImportNamespaceSpecifier(specifier)) { - let current = ctx.registrations.hooksNamespaces.get(specifier.local); - if (!current) { - current = []; - } - current.push(registration); - ctx.registrations.hooksNamespaces.set(specifier.local, current); - } - }); + let hook: HookRegistration; + for (let i = 0, len = ctx.preset.hooks.length; i < len; i++) { + hook = ctx.preset.hooks[i]; + if (mod === hook.source) { + registerHookSpecifiers(ctx, path, hook); } - }); + } // Identify hocs - forEach(ctx.preset.hocs, (registration) => { - if (mod === registration.source) { - forEach(path.node.specifiers, (specifier) => { - if (t.isImportSpecifier(specifier)) { - if ( - registration.kind === 'named' - && getImportSpecifierName(specifier) === registration.name - ) { - ctx.registrations.hocs.set(specifier.local, registration); - } - // For `import { default as x }` - if ( - registration.kind === 'default' - && getImportSpecifierName(specifier) === 'default' - ) { - ctx.registrations.hocs.set(specifier.local, registration); - } - } else if (t.isImportDefaultSpecifier(specifier)) { - if (registration.kind === 'default' && specifier.local.name === registration.name) { - ctx.registrations.hocs.set(specifier.local, registration); - } - } else if (t.isImportNamespaceSpecifier(specifier)) { - let current = ctx.registrations.hocsNamespaces.get(specifier.local); - if (!current) { - current = []; - } - current.push(registration); - ctx.registrations.hocsNamespaces.set(specifier.local, current); - } - }); + let hoc: ImportRegistration; + for (let i = 0, len = ctx.preset.hocs.length; i < len; i++) { + hoc = ctx.preset.hocs[i]; + if (mod === hoc.source) { + registerHOCSpecifiers(ctx, path, hoc); } - }); + } } type Argument = @@ -137,11 +165,13 @@ function transformHOC( const registrations = ctx.registrations.hocsNamespaces.get(binding); if (registrations) { const propName = trueMember.property.name; - forEach(registrations, (registration) => { + let registration: typeof registrations[0]; + for (let i = 0, len = registrations.length; i < len; i++) { + registration = registrations[i]; if (registration && registration.name === propName) { transformFunction(ctx, path.get('arguments')[0]); } - }); + } } } } diff --git a/packages/rollup/package.json b/packages/rollup/package.json index af08c3f..c641dcd 100644 --- a/packages/rollup/package.json +++ b/packages/rollup/package.json @@ -31,7 +31,7 @@ "@types/babel__core": "^7.20.0", "@types/node": "^18.13.0", "eslint": "^8.34.0", - "eslint-config-lxsmnsyc": "^0.4.8", + "eslint-config-lxsmnsyc": "^0.5.1", "pridepack": "2.4.1", "rollup": "^3.15.0", "tslib": "^2.5.0", diff --git a/packages/vite/package.json b/packages/vite/package.json index 8621de5..0647d17 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -32,7 +32,7 @@ "@types/babel__core": "^7.20.0", "@types/node": "^18.15.3", "eslint": "^8.36.0", - "eslint-config-lxsmnsyc": "^0.4.8", + "eslint-config-lxsmnsyc": "^0.5.1", "pridepack": "2.4.1", "tslib": "^2.5.0", "typescript": "^4.9.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d566e1f..97069cc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,12 +5,12 @@ importers: .: specifiers: eslint: ^8.36.0 - eslint-config-lxsmnsyc: ^0.4.8 + eslint-config-lxsmnsyc: ^0.5.1 lerna: ^6.5.1 typescript: ^4.9.5 devDependencies: eslint: 8.36.0 - eslint-config-lxsmnsyc: 0.4.8_vgl77cfdswitgr47lm5swmv43m + eslint-config-lxsmnsyc: 0.5.1_vgl77cfdswitgr47lm5swmv43m lerna: 6.5.1 typescript: 4.9.5 @@ -18,7 +18,7 @@ importers: specifiers: '@preact/preset-vite': ^2.5.0 eslint: ^8.34.0 - eslint-config-lxsmnsyc: ^0.4.8 + eslint-config-lxsmnsyc: ^0.5.1 preact: ^10.13.0 typescript: ^4.9.5 vite: ^4.1.2 @@ -28,7 +28,7 @@ importers: devDependencies: '@preact/preset-vite': 2.5.0_preact@10.13.0+vite@4.1.4 eslint: 8.34.0 - eslint-config-lxsmnsyc: 0.4.8_7kw3g6rralp5ps6mg3uyzz6azm + eslint-config-lxsmnsyc: 0.5.1_7kw3g6rralp5ps6mg3uyzz6azm typescript: 4.9.5 vite: 4.1.4 vite-plugin-forgetti: link:../../packages/vite @@ -39,7 +39,7 @@ importers: '@types/react-dom': ^18.0.11 '@vitejs/plugin-react': ^3.1.0 eslint: ^8.34.0 - eslint-config-lxsmnsyc: ^0.4.8 + eslint-config-lxsmnsyc: ^0.5.1 react: ^18.2.0 react-dom: ^18.2.0 typescript: ^4.9.5 @@ -53,7 +53,7 @@ importers: '@types/react-dom': 18.0.11 '@vitejs/plugin-react': 3.1.0_vite@4.1.4 eslint: 8.34.0 - eslint-config-lxsmnsyc: 0.4.8_7kw3g6rralp5ps6mg3uyzz6azm + eslint-config-lxsmnsyc: 0.5.1_7kw3g6rralp5ps6mg3uyzz6azm typescript: 4.9.5 vite: 4.1.4 vite-plugin-forgetti: link:../../packages/vite @@ -68,7 +68,7 @@ importers: '@types/babel__traverse': ^7.18.3 '@types/node': ^18.15.3 eslint: ^8.36.0 - eslint-config-lxsmnsyc: ^0.4.8 + eslint-config-lxsmnsyc: ^0.5.1 pridepack: 2.4.2 tslib: ^2.5.0 typescript: ^4.9.4 @@ -83,7 +83,7 @@ importers: '@types/babel__traverse': 7.18.3 '@types/node': 18.15.3 eslint: 8.36.0 - eslint-config-lxsmnsyc: 0.4.8_vgl77cfdswitgr47lm5swmv43m + eslint-config-lxsmnsyc: 0.5.1_vgl77cfdswitgr47lm5swmv43m pridepack: 2.4.2_a37tusewm2jlajv35tjly5qag4 tslib: 2.5.0 typescript: 4.9.5 @@ -97,7 +97,7 @@ importers: '@types/babel__core': ^7.20.0 '@types/node': ^18.13.0 eslint: ^8.34.0 - eslint-config-lxsmnsyc: ^0.4.8 + eslint-config-lxsmnsyc: ^0.5.1 forgetti: 0.3.0 pridepack: 2.4.1 rollup: ^3.15.0 @@ -112,7 +112,7 @@ importers: '@types/babel__core': 7.20.0 '@types/node': 18.13.0 eslint: 8.34.0 - eslint-config-lxsmnsyc: 0.4.8_7kw3g6rralp5ps6mg3uyzz6azm + eslint-config-lxsmnsyc: 0.5.1_7kw3g6rralp5ps6mg3uyzz6azm pridepack: 2.4.1_64oh6xetmihmk3s5lpnh2fqrua rollup: 3.15.0 tslib: 2.5.0 @@ -126,7 +126,7 @@ importers: '@types/babel__core': ^7.20.0 '@types/node': ^18.15.3 eslint: ^8.36.0 - eslint-config-lxsmnsyc: ^0.4.8 + eslint-config-lxsmnsyc: ^0.5.1 forgetti: 0.3.0 pridepack: 2.4.1 tslib: ^2.5.0 @@ -141,7 +141,7 @@ importers: '@types/babel__core': 7.20.0 '@types/node': 18.15.3 eslint: 8.36.0 - eslint-config-lxsmnsyc: 0.4.8_vgl77cfdswitgr47lm5swmv43m + eslint-config-lxsmnsyc: 0.5.1_vgl77cfdswitgr47lm5swmv43m pridepack: 2.4.1_a37tusewm2jlajv35tjly5qag4 tslib: 2.5.0 typescript: 4.9.5 @@ -988,6 +988,16 @@ packages: dev: true optional: true + /@eslint-community/eslint-utils/4.3.0_eslint@8.34.0: + resolution: {integrity: sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.34.0 + eslint-visitor-keys: 3.3.0 + dev: true + /@eslint-community/eslint-utils/4.3.0_eslint@8.36.0: resolution: {integrity: sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1146,8 +1156,8 @@ packages: resolution: {integrity: sha512-WMGl70X/upKye9Ix0xQtaKzNsFJE6I4ZEexypk1gyiB5REQZv9BI3Stw8Tby25YSGJ7OuYG0+5oCnkv1A+3kRA==} dev: true - /@next/eslint-plugin-next/12.3.4: - resolution: {integrity: sha512-BFwj8ykJY+zc1/jWANsDprDIu2MgwPOIKxNVnrKvPs+f5TPegrVnem8uScND+1veT4B7F6VeqgaNLFW1Hzl9Og==} + /@next/eslint-plugin-next/13.2.4: + resolution: {integrity: sha512-ck1lI+7r1mMJpqLNa3LJ5pxCfOB1lfJncKmRJeJxcJqcngaFwylreLP7da6Rrjr6u2gVRTfmnkSkjc80IiQCwQ==} dependencies: glob: 7.1.7 dev: true @@ -1539,6 +1549,18 @@ packages: typescript: 4.9.5 dev: true + /@pkgr/utils/2.3.1: + resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + is-glob: 4.0.3 + open: 8.4.1 + picocolors: 1.0.0 + tiny-glob: 0.2.9 + tslib: 2.5.0 + dev: true + /@preact/preset-vite/2.5.0_preact@10.13.0+vite@4.1.4: resolution: {integrity: sha512-BUhfB2xQ6ex0yPkrT1Z3LbfPzjpJecOZwQ/xJrXGFSZD84+ObyS//41RdEoQCMWsM0t7UHGaujUxUBub7WM1Jw==} peerDependencies: @@ -1735,8 +1757,8 @@ packages: resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} dev: true - /@typescript-eslint/eslint-plugin/5.51.0_2uf2vhztc4ckxd4qxmfbkpecpu: - resolution: {integrity: sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==} + /@typescript-eslint/eslint-plugin/5.55.0_342y7v4tc7ytrrysmit6jo4wri: + resolution: {integrity: sha512-IZGc50rtbjk+xp5YQoJvmMPmJEYoC53SiKPXyqWfv15XoD2Y5Kju6zN0DwlmaGJp1Iw33JsWJcQ7nw0lGCGjVg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -1746,16 +1768,16 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.51.0_vgl77cfdswitgr47lm5swmv43m - '@typescript-eslint/scope-manager': 5.51.0 - '@typescript-eslint/type-utils': 5.51.0_vgl77cfdswitgr47lm5swmv43m - '@typescript-eslint/utils': 5.51.0_vgl77cfdswitgr47lm5swmv43m + '@eslint-community/regexpp': 4.4.0 + '@typescript-eslint/parser': 5.55.0_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/scope-manager': 5.55.0 + '@typescript-eslint/type-utils': 5.55.0_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/utils': 5.55.0_vgl77cfdswitgr47lm5swmv43m debug: 4.3.4 eslint: 8.36.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 - regexpp: 3.2.0 semver: 7.3.8 tsutils: 3.21.0_typescript@4.9.5 typescript: 4.9.5 @@ -1763,8 +1785,8 @@ packages: - supports-color dev: true - /@typescript-eslint/eslint-plugin/5.51.0_z4swst3wuuqk4hlme4ajzslgh4: - resolution: {integrity: sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==} + /@typescript-eslint/eslint-plugin/5.55.0_54sixstqqtaemiqprjgwc4xpmu: + resolution: {integrity: sha512-IZGc50rtbjk+xp5YQoJvmMPmJEYoC53SiKPXyqWfv15XoD2Y5Kju6zN0DwlmaGJp1Iw33JsWJcQ7nw0lGCGjVg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -1774,16 +1796,16 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm - '@typescript-eslint/scope-manager': 5.51.0 - '@typescript-eslint/type-utils': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm - '@typescript-eslint/utils': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + '@eslint-community/regexpp': 4.4.0 + '@typescript-eslint/parser': 5.55.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/scope-manager': 5.55.0 + '@typescript-eslint/type-utils': 5.55.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/utils': 5.55.0_7kw3g6rralp5ps6mg3uyzz6azm debug: 4.3.4 eslint: 8.34.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 - regexpp: 3.2.0 semver: 7.3.8 tsutils: 3.21.0_typescript@4.9.5 typescript: 4.9.5 @@ -1817,8 +1839,8 @@ packages: - typescript dev: true - /@typescript-eslint/parser/5.51.0_7kw3g6rralp5ps6mg3uyzz6azm: - resolution: {integrity: sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==} + /@typescript-eslint/parser/5.55.0_7kw3g6rralp5ps6mg3uyzz6azm: + resolution: {integrity: sha512-ppvmeF7hvdhUUZWSd2EEWfzcFkjJzgNQzVST22nzg958CR+sphy8A6K7LXQZd6V75m1VKjp+J4g/PCEfSCmzhw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1827,9 +1849,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.51.0 - '@typescript-eslint/types': 5.51.0 - '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.55.0 + '@typescript-eslint/types': 5.55.0 + '@typescript-eslint/typescript-estree': 5.55.0_typescript@4.9.5 debug: 4.3.4 eslint: 8.34.0 typescript: 4.9.5 @@ -1837,8 +1859,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser/5.51.0_vgl77cfdswitgr47lm5swmv43m: - resolution: {integrity: sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==} + /@typescript-eslint/parser/5.55.0_vgl77cfdswitgr47lm5swmv43m: + resolution: {integrity: sha512-ppvmeF7hvdhUUZWSd2EEWfzcFkjJzgNQzVST22nzg958CR+sphy8A6K7LXQZd6V75m1VKjp+J4g/PCEfSCmzhw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1847,9 +1869,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.51.0 - '@typescript-eslint/types': 5.51.0 - '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.55.0 + '@typescript-eslint/types': 5.55.0 + '@typescript-eslint/typescript-estree': 5.55.0_typescript@4.9.5 debug: 4.3.4 eslint: 8.36.0 typescript: 4.9.5 @@ -1865,8 +1887,16 @@ packages: '@typescript-eslint/visitor-keys': 5.51.0 dev: true - /@typescript-eslint/type-utils/5.51.0_7kw3g6rralp5ps6mg3uyzz6azm: - resolution: {integrity: sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ==} + /@typescript-eslint/scope-manager/5.55.0: + resolution: {integrity: sha512-OK+cIO1ZGhJYNCL//a3ROpsd83psf4dUJ4j7pdNVzd5DmIk+ffkuUIX2vcZQbEW/IR41DYsfJTB19tpCboxQuw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.55.0 + '@typescript-eslint/visitor-keys': 5.55.0 + dev: true + + /@typescript-eslint/type-utils/5.55.0_7kw3g6rralp5ps6mg3uyzz6azm: + resolution: {integrity: sha512-ObqxBgHIXj8rBNm0yh8oORFrICcJuZPZTqtAFh0oZQyr5DnAHZWfyw54RwpEEH+fD8suZaI0YxvWu5tYE/WswA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -1875,8 +1905,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 - '@typescript-eslint/utils': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/typescript-estree': 5.55.0_typescript@4.9.5 + '@typescript-eslint/utils': 5.55.0_7kw3g6rralp5ps6mg3uyzz6azm debug: 4.3.4 eslint: 8.34.0 tsutils: 3.21.0_typescript@4.9.5 @@ -1885,8 +1915,8 @@ packages: - supports-color dev: true - /@typescript-eslint/type-utils/5.51.0_vgl77cfdswitgr47lm5swmv43m: - resolution: {integrity: sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ==} + /@typescript-eslint/type-utils/5.55.0_vgl77cfdswitgr47lm5swmv43m: + resolution: {integrity: sha512-ObqxBgHIXj8rBNm0yh8oORFrICcJuZPZTqtAFh0oZQyr5DnAHZWfyw54RwpEEH+fD8suZaI0YxvWu5tYE/WswA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -1895,8 +1925,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 - '@typescript-eslint/utils': 5.51.0_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/typescript-estree': 5.55.0_typescript@4.9.5 + '@typescript-eslint/utils': 5.55.0_vgl77cfdswitgr47lm5swmv43m debug: 4.3.4 eslint: 8.36.0 tsutils: 3.21.0_typescript@4.9.5 @@ -1910,6 +1940,11 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@typescript-eslint/types/5.55.0: + resolution: {integrity: sha512-M4iRh4AG1ChrOL6Y+mETEKGeDnT7Sparn6fhZ5LtVJF1909D5O4uqK+C5NPbLmpfZ0XIIxCdwzKiijpZUOvOug==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /@typescript-eslint/typescript-estree/5.51.0_typescript@4.9.5: resolution: {integrity: sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1931,6 +1966,27 @@ packages: - supports-color dev: true + /@typescript-eslint/typescript-estree/5.55.0_typescript@4.9.5: + resolution: {integrity: sha512-I7X4A9ovA8gdpWMpr7b1BN9eEbvlEtWhQvpxp/yogt48fy9Lj3iE3ild/1H3jKBBIYj5YYJmS2+9ystVhC7eaQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.55.0 + '@typescript-eslint/visitor-keys': 5.55.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/utils/5.51.0_7kw3g6rralp5ps6mg3uyzz6azm: resolution: {integrity: sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1971,6 +2027,46 @@ packages: - typescript dev: true + /@typescript-eslint/utils/5.55.0_7kw3g6rralp5ps6mg3uyzz6azm: + resolution: {integrity: sha512-FkW+i2pQKcpDC3AY6DU54yl8Lfl14FVGYDgBTyGKB75cCwV3KpkpTMFi9d9j2WAJ4271LR2HeC5SEWF/CZmmfw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.3.0_eslint@8.34.0 + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.55.0 + '@typescript-eslint/types': 5.55.0 + '@typescript-eslint/typescript-estree': 5.55.0_typescript@4.9.5 + eslint: 8.34.0 + eslint-scope: 5.1.1 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils/5.55.0_vgl77cfdswitgr47lm5swmv43m: + resolution: {integrity: sha512-FkW+i2pQKcpDC3AY6DU54yl8Lfl14FVGYDgBTyGKB75cCwV3KpkpTMFi9d9j2WAJ4271LR2HeC5SEWF/CZmmfw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.3.0_eslint@8.36.0 + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.55.0 + '@typescript-eslint/types': 5.55.0 + '@typescript-eslint/typescript-estree': 5.55.0_typescript@4.9.5 + eslint: 8.36.0 + eslint-scope: 5.1.1 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@typescript-eslint/visitor-keys/5.51.0: resolution: {integrity: sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1979,6 +2075,14 @@ packages: eslint-visitor-keys: 3.3.0 dev: true + /@typescript-eslint/visitor-keys/5.55.0: + resolution: {integrity: sha512-q2dlHHwWgirKh1D3acnuApXG+VNXpEY5/AwRxDVuEQpxWaB0jCDe0jFMVMALJ3ebSfuOVE8/rMS+9ZOYGg1GWw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.55.0 + eslint-visitor-keys: 3.3.0 + dev: true + /@vitejs/plugin-react/3.1.0_vite@4.1.4: resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} engines: {node: ^14.18.0 || >=16.0.0} @@ -3096,6 +3200,14 @@ packages: once: 1.4.0 dev: true + /enhanced-resolve/5.12.0: + resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.10 + tapable: 2.2.1 + dev: true + /enquirer/2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} @@ -3283,7 +3395,7 @@ packages: dependencies: confusing-browser-globals: 1.0.11 eslint: 8.36.0 - eslint-plugin-import: 2.27.5_y3kxypljbrsqsvzx2vonfsz2na + eslint-plugin-import: 2.27.5_v7jo3sddp7aqau7pajjy572cju object.assign: 4.1.4 object.entries: 1.1.6 semver: 6.3.0 @@ -3298,7 +3410,7 @@ packages: dependencies: confusing-browser-globals: 1.0.11 eslint: 8.34.0 - eslint-plugin-import: 2.27.5_quy4g5efgijwa67gk4incjhlny + eslint-plugin-import: 2.27.5_a6uwapjbxc7nnb5wlh3oxxa364 object.assign: 4.1.4 object.entries: 1.1.6 semver: 6.3.0 @@ -3316,7 +3428,7 @@ packages: dependencies: eslint: 8.36.0 eslint-config-airbnb-base: 15.0.0_eakrjjutlgqjxe5ydhtnd4qdmy - eslint-plugin-import: 2.27.5_y3kxypljbrsqsvzx2vonfsz2na + eslint-plugin-import: 2.27.5_v7jo3sddp7aqau7pajjy572cju eslint-plugin-jsx-a11y: 6.7.1_eslint@8.36.0 eslint-plugin-react: 7.32.2_eslint@8.36.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 @@ -3336,7 +3448,7 @@ packages: dependencies: eslint: 8.34.0 eslint-config-airbnb-base: 15.0.0_mvgyw3chnqkp6sgfmmtihyjpnm - eslint-plugin-import: 2.27.5_quy4g5efgijwa67gk4incjhlny + eslint-plugin-import: 2.27.5_a6uwapjbxc7nnb5wlh3oxxa364 eslint-plugin-jsx-a11y: 6.7.1_eslint@8.34.0 eslint-plugin-react: 7.32.2_eslint@8.34.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.34.0 @@ -3344,22 +3456,22 @@ packages: object.entries: 1.1.6 dev: true - /eslint-config-lxsmnsyc/0.4.8_7kw3g6rralp5ps6mg3uyzz6azm: - resolution: {integrity: sha512-ScahTJ0rHq1upD6T8Radj28KkADtQF4vWJ0JNYTdEOiY+qwWvH3kGafN3HY7Pu/tEUhAGWYc3gMe1g74MR3wOg==} + /eslint-config-lxsmnsyc/0.5.1_7kw3g6rralp5ps6mg3uyzz6azm: + resolution: {integrity: sha512-uFz8kAC8SygviM2Y6Pw+7x84X1BTu5H/dC1ygD2noittPF/3NVlf51Z/MDC9vGwunG4TFSM+mlWN9UyWj8GKtA==} peerDependencies: eslint: ^8.0 typescript: ^4.0 dependencies: - '@next/eslint-plugin-next': 12.3.4 - '@typescript-eslint/eslint-plugin': 5.51.0_z4swst3wuuqk4hlme4ajzslgh4 - '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + '@next/eslint-plugin-next': 13.2.4 + '@typescript-eslint/eslint-plugin': 5.55.0_54sixstqqtaemiqprjgwc4xpmu + '@typescript-eslint/parser': 5.55.0_7kw3g6rralp5ps6mg3uyzz6azm eslint: 8.34.0 eslint-config-airbnb: 19.0.4_hbw3smywoiafix46yjc35xsaqq eslint-config-airbnb-base: 15.0.0_mvgyw3chnqkp6sgfmmtihyjpnm - eslint-config-preact: 1.3.0_wz3lx5pragqwrk3vwpswr7bnzu + eslint-config-preact: 1.3.0_cztdi3huhwehmiuceyld6jjjfe eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 2.7.1_mvgyw3chnqkp6sgfmmtihyjpnm - eslint-plugin-import: 2.27.5_quy4g5efgijwa67gk4incjhlny + eslint-import-resolver-typescript: 3.5.3_mvgyw3chnqkp6sgfmmtihyjpnm + eslint-plugin-import: 2.27.5_a6uwapjbxc7nnb5wlh3oxxa364 eslint-plugin-jsx-a11y: 6.7.1_eslint@8.34.0 eslint-plugin-react: 7.32.2_eslint@8.34.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.34.0 @@ -3371,22 +3483,22 @@ packages: - supports-color dev: true - /eslint-config-lxsmnsyc/0.4.8_vgl77cfdswitgr47lm5swmv43m: - resolution: {integrity: sha512-ScahTJ0rHq1upD6T8Radj28KkADtQF4vWJ0JNYTdEOiY+qwWvH3kGafN3HY7Pu/tEUhAGWYc3gMe1g74MR3wOg==} + /eslint-config-lxsmnsyc/0.5.1_vgl77cfdswitgr47lm5swmv43m: + resolution: {integrity: sha512-uFz8kAC8SygviM2Y6Pw+7x84X1BTu5H/dC1ygD2noittPF/3NVlf51Z/MDC9vGwunG4TFSM+mlWN9UyWj8GKtA==} peerDependencies: eslint: ^8.0 typescript: ^4.0 dependencies: - '@next/eslint-plugin-next': 12.3.4 - '@typescript-eslint/eslint-plugin': 5.51.0_2uf2vhztc4ckxd4qxmfbkpecpu - '@typescript-eslint/parser': 5.51.0_vgl77cfdswitgr47lm5swmv43m + '@next/eslint-plugin-next': 13.2.4 + '@typescript-eslint/eslint-plugin': 5.55.0_342y7v4tc7ytrrysmit6jo4wri + '@typescript-eslint/parser': 5.55.0_vgl77cfdswitgr47lm5swmv43m eslint: 8.36.0 eslint-config-airbnb: 19.0.4_guhfqc3yvckhutqwrddiy54d5i eslint-config-airbnb-base: 15.0.0_eakrjjutlgqjxe5ydhtnd4qdmy - eslint-config-preact: 1.3.0_bhvtjkvghps2on5snwbnqfulzi + eslint-config-preact: 1.3.0_77hzc3m4z2zccvz4y3m32ao6om eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 2.7.1_eakrjjutlgqjxe5ydhtnd4qdmy - eslint-plugin-import: 2.27.5_y3kxypljbrsqsvzx2vonfsz2na + eslint-import-resolver-typescript: 3.5.3_eakrjjutlgqjxe5ydhtnd4qdmy + eslint-plugin-import: 2.27.5_v7jo3sddp7aqau7pajjy572cju eslint-plugin-jsx-a11y: 6.7.1_eslint@8.36.0 eslint-plugin-react: 7.32.2_eslint@8.36.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 @@ -3398,7 +3510,7 @@ packages: - supports-color dev: true - /eslint-config-preact/1.3.0_bhvtjkvghps2on5snwbnqfulzi: + /eslint-config-preact/1.3.0_77hzc3m4z2zccvz4y3m32ao6om: resolution: {integrity: sha512-yHYXg5qNzEJd3D/30AmsIW0W8MuY858KpApXp7xxBF08IYUljSKCOqMx+dVucXHQnAm7+11wOnMkgVHIBAechw==} peerDependencies: eslint: 6.x || 7.x || 8.x @@ -3410,7 +3522,7 @@ packages: '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.21.3 eslint: 8.36.0 eslint-plugin-compat: 4.1.1_eslint@8.36.0 - eslint-plugin-jest: 25.7.0_bhvtjkvghps2on5snwbnqfulzi + eslint-plugin-jest: 25.7.0_77hzc3m4z2zccvz4y3m32ao6om eslint-plugin-react: 7.32.2_eslint@8.36.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.36.0 transitivePeerDependencies: @@ -3420,7 +3532,7 @@ packages: - typescript dev: true - /eslint-config-preact/1.3.0_wz3lx5pragqwrk3vwpswr7bnzu: + /eslint-config-preact/1.3.0_cztdi3huhwehmiuceyld6jjjfe: resolution: {integrity: sha512-yHYXg5qNzEJd3D/30AmsIW0W8MuY858KpApXp7xxBF08IYUljSKCOqMx+dVucXHQnAm7+11wOnMkgVHIBAechw==} peerDependencies: eslint: 6.x || 7.x || 8.x @@ -3432,7 +3544,7 @@ packages: '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.21.3 eslint: 8.34.0 eslint-plugin-compat: 4.1.1_eslint@8.34.0 - eslint-plugin-jest: 25.7.0_wz3lx5pragqwrk3vwpswr7bnzu + eslint-plugin-jest: 25.7.0_cztdi3huhwehmiuceyld6jjjfe eslint-plugin-react: 7.32.2_eslint@8.34.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.34.0 transitivePeerDependencies: @@ -3452,43 +3564,47 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript/2.7.1_eakrjjutlgqjxe5ydhtnd4qdmy: - resolution: {integrity: sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==} - engines: {node: '>=4'} + /eslint-import-resolver-typescript/3.5.3_eakrjjutlgqjxe5ydhtnd4qdmy: + resolution: {integrity: sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' dependencies: debug: 4.3.4 + enhanced-resolve: 5.12.0 eslint: 8.36.0 - eslint-plugin-import: 2.27.5_y3kxypljbrsqsvzx2vonfsz2na - glob: 7.2.3 + eslint-plugin-import: 2.27.5_v7jo3sddp7aqau7pajjy572cju + get-tsconfig: 4.4.0 + globby: 13.1.3 + is-core-module: 2.11.0 is-glob: 4.0.3 - resolve: 1.22.1 - tsconfig-paths: 3.14.1 + synckit: 0.8.5 transitivePeerDependencies: - supports-color dev: true - /eslint-import-resolver-typescript/2.7.1_mvgyw3chnqkp6sgfmmtihyjpnm: - resolution: {integrity: sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==} - engines: {node: '>=4'} + /eslint-import-resolver-typescript/3.5.3_mvgyw3chnqkp6sgfmmtihyjpnm: + resolution: {integrity: sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' dependencies: debug: 4.3.4 + enhanced-resolve: 5.12.0 eslint: 8.34.0 - eslint-plugin-import: 2.27.5_quy4g5efgijwa67gk4incjhlny - glob: 7.2.3 + eslint-plugin-import: 2.27.5_a6uwapjbxc7nnb5wlh3oxxa364 + get-tsconfig: 4.4.0 + globby: 13.1.3 + is-core-module: 2.11.0 is-glob: 4.0.3 - resolve: 1.22.1 - tsconfig-paths: 3.14.1 + synckit: 0.8.5 transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils/2.7.4_4q4yscu2jvzevotod3tr2unfbq: + /eslint-module-utils/2.7.4_m3p7mhlogeivjavjnfedeph5t4: resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -3509,16 +3625,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.51.0_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/parser': 5.55.0_7kw3g6rralp5ps6mg3uyzz6azm debug: 3.2.7 - eslint: 8.36.0 + eslint: 8.34.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 2.7.1_eakrjjutlgqjxe5ydhtnd4qdmy + eslint-import-resolver-typescript: 3.5.3_mvgyw3chnqkp6sgfmmtihyjpnm transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils/2.7.4_t5wp3c6bya7m2e5r5egiqynqou: + /eslint-module-utils/2.7.4_wgltsi2kbncdpzwytonvdf2oba: resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -3539,11 +3655,11 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/parser': 5.55.0_vgl77cfdswitgr47lm5swmv43m debug: 3.2.7 - eslint: 8.34.0 + eslint: 8.36.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 2.7.1_mvgyw3chnqkp6sgfmmtihyjpnm + eslint-import-resolver-typescript: 3.5.3_eakrjjutlgqjxe5ydhtnd4qdmy transitivePeerDependencies: - supports-color dev: true @@ -3582,7 +3698,7 @@ packages: semver: 7.3.8 dev: true - /eslint-plugin-import/2.27.5_quy4g5efgijwa67gk4incjhlny: + /eslint-plugin-import/2.27.5_a6uwapjbxc7nnb5wlh3oxxa364: resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -3592,7 +3708,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/parser': 5.55.0_7kw3g6rralp5ps6mg3uyzz6azm array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -3600,7 +3716,7 @@ packages: doctrine: 2.1.0 eslint: 8.34.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4_t5wp3c6bya7m2e5r5egiqynqou + eslint-module-utils: 2.7.4_m3p7mhlogeivjavjnfedeph5t4 has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 @@ -3615,7 +3731,7 @@ packages: - supports-color dev: true - /eslint-plugin-import/2.27.5_y3kxypljbrsqsvzx2vonfsz2na: + /eslint-plugin-import/2.27.5_v7jo3sddp7aqau7pajjy572cju: resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -3625,7 +3741,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.51.0_vgl77cfdswitgr47lm5swmv43m + '@typescript-eslint/parser': 5.55.0_vgl77cfdswitgr47lm5swmv43m array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -3633,7 +3749,7 @@ packages: doctrine: 2.1.0 eslint: 8.36.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4_4q4yscu2jvzevotod3tr2unfbq + eslint-module-utils: 2.7.4_wgltsi2kbncdpzwytonvdf2oba has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 @@ -3648,7 +3764,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest/25.7.0_bhvtjkvghps2on5snwbnqfulzi: + /eslint-plugin-jest/25.7.0_77hzc3m4z2zccvz4y3m32ao6om: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -3661,7 +3777,7 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.51.0_2uf2vhztc4ckxd4qxmfbkpecpu + '@typescript-eslint/eslint-plugin': 5.55.0_342y7v4tc7ytrrysmit6jo4wri '@typescript-eslint/experimental-utils': 5.51.0_vgl77cfdswitgr47lm5swmv43m eslint: 8.36.0 transitivePeerDependencies: @@ -3669,7 +3785,7 @@ packages: - typescript dev: true - /eslint-plugin-jest/25.7.0_wz3lx5pragqwrk3vwpswr7bnzu: + /eslint-plugin-jest/25.7.0_cztdi3huhwehmiuceyld6jjjfe: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -3682,7 +3798,7 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.51.0_z4swst3wuuqk4hlme4ajzslgh4 + '@typescript-eslint/eslint-plugin': 5.55.0_54sixstqqtaemiqprjgwc4xpmu '@typescript-eslint/experimental-utils': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm eslint: 8.34.0 transitivePeerDependencies: @@ -4355,6 +4471,10 @@ packages: get-intrinsic: 1.2.0 dev: true + /get-tsconfig/4.4.0: + resolution: {integrity: sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ==} + dev: true + /git-config-path/2.0.0: resolution: {integrity: sha512-qc8h1KIQbJpp+241id3GuAtkdyJ+IK+LIVtkiFTRKRrmddDzs3SI9CvP1QYmWBFvm1I/PWRwj//of8bgAc0ltA==} engines: {node: '>=4'} @@ -4484,6 +4604,10 @@ packages: define-properties: 1.2.0 dev: true + /globalyzer/0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + dev: true + /globby/11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -4496,6 +4620,21 @@ packages: slash: 3.0.0 dev: true + /globby/13.1.3: + resolution: {integrity: sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 4.0.0 + dev: true + + /globrex/0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: true + /gopd/1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: @@ -7009,6 +7148,11 @@ packages: engines: {node: '>=8'} dev: true + /slash/4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + dev: true + /slice-ansi/5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} @@ -7259,6 +7403,19 @@ packages: engines: {node: '>= 0.4'} dev: true + /synckit/0.8.5: + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/utils': 2.3.1 + tslib: 2.5.0 + dev: true + + /tapable/2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: true + /tar-stream/2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} @@ -7325,6 +7482,13 @@ packages: readable-stream: 3.6.0 dev: true + /tiny-glob/0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + dependencies: + globalyzer: 0.1.0 + globrex: 0.1.2 + dev: true + /tinybench/2.3.1: resolution: {integrity: sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==} dev: true From 6f515c964a2a543c83cf9148c513d389c864065f Mon Sep 17 00:00:00 2001 From: Alexis Munsayac Date: Sat, 18 Mar 2023 20:44:43 +0800 Subject: [PATCH 05/16] Add some comments --- packages/forgetti/src/core/optimizer.ts | 60 ++++++++++++++++++++++++- 1 file changed, 58 insertions(+), 2 deletions(-) diff --git a/packages/forgetti/src/core/optimizer.ts b/packages/forgetti/src/core/optimizer.ts index 4e40f91..0655d52 100644 --- a/packages/forgetti/src/core/optimizer.ts +++ b/packages/forgetti/src/core/optimizer.ts @@ -53,34 +53,55 @@ export default class Optimizer { this.scope = new OptimizerScope(ctx, path); } + /** + * This method declares the memoized value + * - if the dependencies is an expression, the expression is used + * as the memoization condition + * - if the dependencies is an array, the array is combined with + * logical AND into a single expression + * - if the dependencies is `true`, then this expression is to be + * memoized as a "constant" (aka one-time generation) + * - if the dependencies is `false`, then it means that it is being + * used as a dependency and so it must be compared to its memoized + * version. + */ createMemo( current: t.Expression, dependencies?: t.Expression | t.Expression[] | boolean, ): OptimizedExpression { + // Check if the identifier is an already optimized + // identifier so that we can skip it. if (t.isIdentifier(current)) { const optimized = this.scope.getOptimized(current); if (optimized) { return optimized; } } + // Creates the cache header const header = ( this.scope.isInLoop ? this.scope.createLoopHeader() : this.scope.createHeader() ); + // Get the memo index const index = this.scope.createIndex(); + // Generate the access expression const pos = t.memberExpression(header, index, true); + // Generate the `v` identifier const vid = this.path.scope.generateUidIdentifier('v'); let condition: t.Expression | undefined; + // Dependencies is an array of conditions if (Array.isArray(dependencies)) { + // Makes sure to dedupe const newSet = new Set(); let dependency: t.Expression; for (let i = 0, len = dependencies.length; i < len; i++) { dependency = dependencies[i]; if (condition && dependency) { if (t.isIdentifier(dependency)) { + // dependency is already part of the condition, skip if (!newSet.has(dependency)) { condition = t.logicalExpression('&&', condition, dependency); newSet.add(dependency); @@ -98,8 +119,10 @@ export default class Optimizer { } else if (dependencies === true) { // Do nothing } else if (dependencies) { + // just reuse the dependency condition = dependencies; } else { + // Compare memoized version to incoming version condition = t.callExpression( t.memberExpression(t.identifier('Object'), t.identifier('is')), [pos, current], @@ -108,26 +131,34 @@ export default class Optimizer { let eqid: t.Expression; + // Generates the condition expression if (condition == null) { + // Specifies that this memoization mode + // is a "constant" + // so we don't need to generate an extra + // declaration eqid = pos; } else if (t.isIdentifier(condition)) { + // Reuse the identifier eqid = condition; } else { + // Generate a new identifier for the condition eqid = this.path.scope.generateUidIdentifier('eq'); } + // Generates the variable declaration const declaration: t.VariableDeclarator[] = []; - if (condition && !t.isIdentifier(condition)) { declaration.push(t.variableDeclarator(eqid, condition)); } const optimized = optimizedExpr(vid, condition ? eqid : undefined); - + // Register as a constant if (condition == null) { this.scope.addConstant(vid); } + // Mark the identifier as optimized if (t.isIdentifier(current)) { this.scope.setOptimized(current, optimized); this.scope.setOptimized(vid, optimized); @@ -152,18 +183,31 @@ export default class Optimizer { dependency = new WeakMap(); + /** + * Registers a dependency + */ createDependency(path: babel.NodePath) { + // Get optimized expression const optimized = this.optimizeExpression(path); + // If the expression is a constant + // ignore this dependency if (optimized.constant) { return undefined; } + // If the expression is an identifier + // and potentially optimized as a constant + // then just return it if (t.isIdentifier(optimized.expr) && this.scope.hasConstant(optimized.expr)) { return optimized; } + // If the node itself is a "dependency" + // then this is basically redundant work, skipping const result = this.dependency.get(path.node); if (result) { return result; } + // The value has been optimized but value isn't referentially + // compared, so generate a referential-comparison memo const record = this.createMemo(optimized.expr, false); this.dependency.set(path.node, record); return record; @@ -173,12 +217,18 @@ export default class Optimizer { path: babel.NodePath, id: t.Identifier, ) { + // Check if scope has the binding (no globals) + // we only want to memoize identifiers + // that are part of the render evaluation if (path.scope.hasBinding(id.name, true)) { const binding = path.scope.getBindingIdentifier(id.name); if (binding) { + // Memoize as a "dependency" return this.createMemo(binding, false); } } + // Identifier is marked as optimized + // but we just basically "skip" return optimizedExpr(id, undefined, true); } @@ -191,12 +241,15 @@ export default class Optimizer { memoizeMemberExpression( path: babel.NodePath, ) { + // Create dependencies const condition = createDependencies(); + // Mark source as a dependency const source = this.createDependency(path.get('object')); if (source) { path.node.object = source.expr; mergeDependencies(condition, source.deps); } + // Only memoize computed properties (obviously) if (path.node.computed) { const propertyPath = path.get('property'); if (isPathValid(propertyPath, t.isExpression)) { @@ -218,6 +271,9 @@ export default class Optimizer { path: babel.NodePath, ) { const result = this.memoizeMemberExpression(path as babel.NodePath); + // Memoize the entire expression as a whole + // The method above only memoized part of the expression + // but it is also needed to get its dependencies return this.createMemo(result.expr, result.deps); } From 73e7023fd8578fdafb8de91a5cb33e3bb03461d6 Mon Sep 17 00:00:00 2001 From: Alexis Munsayac Date: Sat, 18 Mar 2023 22:47:23 +0800 Subject: [PATCH 06/16] Add `forgetti/runtime` --- packages/forgetti/pridepack.json | 6 +- packages/forgetti/runtime/index.ts | 10 ++ .../src/core/get-import-identifier.ts | 21 +++ packages/forgetti/src/core/imports.ts | 13 ++ packages/forgetti/src/core/optimizer-scope.ts | 35 ++-- packages/forgetti/src/core/optimizer.ts | 4 +- .../__snapshots__/expressions.test.ts.snap | 159 +++++++++++------- .../test/__snapshots__/hooks.test.ts.snap | 27 +-- .../test/__snapshots__/index.test.ts.snap | 6 +- .../__snapshots__/statements.test.ts.snap | 83 +++++---- packages/forgetti/tsconfig.eslint.json | 2 +- packages/forgetti/tsconfig.json | 4 +- 12 files changed, 237 insertions(+), 133 deletions(-) create mode 100644 packages/forgetti/runtime/index.ts create mode 100644 packages/forgetti/src/core/get-import-identifier.ts create mode 100644 packages/forgetti/src/core/imports.ts diff --git a/packages/forgetti/pridepack.json b/packages/forgetti/pridepack.json index 1e3f72f..44539bb 100644 --- a/packages/forgetti/pridepack.json +++ b/packages/forgetti/pridepack.json @@ -1,3 +1,7 @@ { - "target": "es2017" + "target": "es2017", + "entrypoints": { + ".": "src/index.ts", + "./runtime": "runtime/index.ts" + } } \ No newline at end of file diff --git a/packages/forgetti/runtime/index.ts b/packages/forgetti/runtime/index.ts new file mode 100644 index 0000000..4aa03b9 --- /dev/null +++ b/packages/forgetti/runtime/index.ts @@ -0,0 +1,10 @@ +export function $$equals(a: unknown, b: unknown): boolean { + // eslint-disable-next-line no-self-compare + return a !== b || (a !== a && b !== b); +} + +export type MemoHook = (callback: () => T, dependencies: unknown[]) => T; + +export function $$cache(hook: MemoHook, size: number) { + return hook(() => new Array(size), []); +} diff --git a/packages/forgetti/src/core/get-import-identifier.ts b/packages/forgetti/src/core/get-import-identifier.ts new file mode 100644 index 0000000..04219a4 --- /dev/null +++ b/packages/forgetti/src/core/get-import-identifier.ts @@ -0,0 +1,21 @@ +import * as babel from '@babel/core'; +import { addDefault, addNamed } from '@babel/helper-module-imports'; +import { ImportRegistration } from './presets'; +import { StateContext } from './types'; + +export default function getImportIdentifier( + ctx: StateContext, + path: babel.NodePath, + definition: ImportRegistration, +) { + const target = `${definition.source}[${definition.name}]`; + const current = ctx.hooks.get(target); + if (current) { + return current; + } + const newID = (definition.kind === 'named') + ? addNamed(path, definition.name, definition.source) + : addDefault(path, definition.source); + ctx.hooks.set(target, newID); + return newID; +} diff --git a/packages/forgetti/src/core/imports.ts b/packages/forgetti/src/core/imports.ts new file mode 100644 index 0000000..ea241e5 --- /dev/null +++ b/packages/forgetti/src/core/imports.ts @@ -0,0 +1,13 @@ +import { ImportRegistration } from './presets'; + +export const RUNTIME_EQUALS: ImportRegistration = { + name: '$$equals', + source: 'forgetti/runtime', + kind: 'named', +}; + +export const RUNTIME_CACHE: ImportRegistration = { + name: '$$cache', + source: 'forgetti/runtime', + kind: 'named', +}; diff --git a/packages/forgetti/src/core/optimizer-scope.ts b/packages/forgetti/src/core/optimizer-scope.ts index 604c792..f01e108 100644 --- a/packages/forgetti/src/core/optimizer-scope.ts +++ b/packages/forgetti/src/core/optimizer-scope.ts @@ -1,7 +1,8 @@ /* eslint-disable @typescript-eslint/no-this-alias */ import * as t from '@babel/types'; -import { addDefault, addNamed } from '@babel/helper-module-imports'; import { OptimizedExpression, StateContext } from './types'; +import getImportIdentifier from './get-import-identifier'; +import { RUNTIME_CACHE } from './imports'; function mergeVariableDeclaration(statements: t.Statement[]) { let stack: t.VariableDeclarator[] = []; @@ -49,20 +50,6 @@ export default class OptimizerScope { this.isInLoop = isInLoop; } - getMemoIdentifier() { - const { name, source, kind } = this.ctx.preset.memo; - const target = `memo/${source}[${name}]`; - const current = this.ctx.hooks.get(target); - if (current) { - return current; - } - const newID = (kind === 'named') - ? addNamed(this.path, name, source) - : addDefault(this.path, source); - this.ctx.hooks.set(target, newID); - return newID; - } - createHeader() { if (!this.memo) { this.memo = this.path.scope.generateUidIdentifier('c'); @@ -103,16 +90,18 @@ export default class OptimizerScope { t.variableDeclarator( this.memo, t.callExpression( - this.getMemoIdentifier(), + getImportIdentifier( + this.ctx, + this.path, + RUNTIME_CACHE, + ), [ - t.arrowFunctionExpression( - [], - t.newExpression( - t.identifier('Array'), - [t.numericLiteral(this.indeces)], - ), + getImportIdentifier( + this.ctx, + this.path, + this.ctx.preset.memo, ), - t.arrayExpression(), + t.numericLiteral(this.indeces), ], ), ), diff --git a/packages/forgetti/src/core/optimizer.ts b/packages/forgetti/src/core/optimizer.ts index 0655d52..693150a 100644 --- a/packages/forgetti/src/core/optimizer.ts +++ b/packages/forgetti/src/core/optimizer.ts @@ -2,6 +2,8 @@ import * as babel from '@babel/core'; import * as t from '@babel/types'; import { isNestedExpression, isPathValid } from './checks'; import getForeignBindings from './get-foreign-bindings'; +import getImportIdentifier from './get-import-identifier'; +import { RUNTIME_EQUALS } from './imports'; import isGuaranteedLiteral from './is-guaranteed-literal'; import OptimizerScope from './optimizer-scope'; import { ComponentNode, OptimizedExpression, StateContext } from './types'; @@ -124,7 +126,7 @@ export default class Optimizer { } else { // Compare memoized version to incoming version condition = t.callExpression( - t.memberExpression(t.identifier('Object'), t.identifier('is')), + getImportIdentifier(this.ctx, this.path, RUNTIME_EQUALS), [pos, current], ); } diff --git a/packages/forgetti/test/__snapshots__/expressions.test.ts.snap b/packages/forgetti/test/__snapshots__/expressions.test.ts.snap index 6794131..bcb21fc 100644 --- a/packages/forgetti/test/__snapshots__/expressions.test.ts.snap +++ b/packages/forgetti/test/__snapshots__/expressions.test.ts.snap @@ -2,22 +2,24 @@ exports[`expressions > should optimize JSX Element 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c = _useMemo(() => new Array(10), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 10), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props, _v2 = _eq ? _c[1] : _c[1] = _v.title, - _eq2 = Object.is(_c[2], _v2), + _eq2 = _$$equals(_c[2], _v2), _v3 = _eq2 ? _c[2] : _c[2] = _v2, _v4 = _eq ? _c[3] : _c[3] = _v.title, - _eq3 = Object.is(_c[4], _v4), + _eq3 = _$$equals(_c[4], _v4), _v5 = _eq3 ? _c[4] : _c[4] = _v4, _eq4 = _eq2 && _eq3, _v6 = _eq4 ? _c[5] : _c[5] =

Title: {_v5}

, - _eq5 = Object.is(_c[6], _v6), + _eq5 = _$$equals(_c[6], _v6), _v7 = _eq5 ? _c[6] : _c[6] = _v6, _v8 = _eq ? _c[7] : _c[7] = _v.children, - _eq6 = Object.is(_c[8], _v8), + _eq6 = _$$equals(_c[8], _v8), _v9 = _eq6 ? _c[8] : _c[8] = _v8, _eq7 = _eq5 && _eq6, _v10 = _eq7 ? _c[9] : _c[9] =
@@ -30,22 +32,24 @@ function Example(props) { exports[`expressions > should optimize JSX Fragment 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c = _useMemo(() => new Array(10), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 10), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props, _v2 = _eq ? _c[1] : _c[1] = _v.title, - _eq2 = Object.is(_c[2], _v2), + _eq2 = _$$equals(_c[2], _v2), _v3 = _eq2 ? _c[2] : _c[2] = _v2, _v4 = _eq ? _c[3] : _c[3] = _v.title, - _eq3 = Object.is(_c[4], _v4), + _eq3 = _$$equals(_c[4], _v4), _v5 = _eq3 ? _c[4] : _c[4] = _v4, _eq4 = _eq2 && _eq3, _v6 = _eq4 ? _c[5] : _c[5] =

Title: {_v5}

, - _eq5 = Object.is(_c[6], _v6), + _eq5 = _$$equals(_c[6], _v6), _v7 = _eq5 ? _c[6] : _c[6] = _v6, _v8 = _eq ? _c[7] : _c[7] = _v.children, - _eq6 = Object.is(_c[8], _v8), + _eq6 = _$$equals(_c[8], _v8), _v9 = _eq6 ? _c[8] : _c[8] = _v8, _eq7 = _eq5 && _eq6, _v10 = _eq7 ? _c[9] : _c[9] = <> @@ -58,18 +62,20 @@ function Example(props) { exports[`expressions > should optimize array expressions 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c = _useMemo(() => new Array(8), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 8), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props, _v2 = _eq ? _c[1] : _c[1] = _v.a, - _eq2 = Object.is(_c[2], _v2), + _eq2 = _$$equals(_c[2], _v2), _v3 = _eq2 ? _c[2] : _c[2] = _v2, _v4 = _eq ? _c[3] : _c[3] = _v.b, - _eq3 = Object.is(_c[4], _v4), + _eq3 = _$$equals(_c[4], _v4), _v5 = _eq3 ? _c[4] : _c[4] = _v4, _v6 = _eq ? _c[5] : _c[5] = _v.c, - _eq4 = Object.is(_c[6], _v6), + _eq4 = _$$equals(_c[6], _v6), _v7 = _eq4 ? _c[6] : _c[6] = _v6, _eq5 = _eq2 && _eq3 && _eq4, _v8 = _eq5 ? _c[7] : _c[7] = [_v3, _v5, ..._v7]; @@ -79,21 +85,23 @@ function Example(props) { exports[`expressions > should optimize assignment expressions 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c = _useMemo(() => new Array(5), []), + let _c = _$$cache(_useMemo, 5), a, b, c, - _eq = Object.is(_c[0], props), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props, _v2 = _eq ? _c[1] : _c[1] = _v.x, - _eq2 = Object.is(_c[2], _v2), + _eq2 = _$$equals(_c[2], _v2), _v3 = _eq2 ? _c[2] : _c[2] = _v2, _v4 = c = _v3, - _eq3 = Object.is(_c[3], _v4), + _eq3 = _$$equals(_c[3], _v4), _v5 = _eq3 ? _c[3] : _c[3] = _v4, _v6 = b = _v5, - _eq4 = Object.is(_c[4], _v6), + _eq4 = _$$equals(_c[4], _v6), _v7 = _eq4 ? _c[4] : _c[4] = _v6, _v8 = a = _v7; _v8; @@ -102,12 +110,14 @@ function Example(props) { exports[`expressions > should optimize await/yield expressions 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; async function Example(props) { - let _c = _useMemo(() => new Array(3), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 3), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props, _v2 = _eq ? _c[1] : _c[1] = _v.call(), - _eq2 = Object.is(_c[2], _v2), + _eq2 = _$$equals(_c[2], _v2), _v3 = _eq2 ? _c[2] : _c[2] = _v2; return await _v3; }" @@ -115,15 +125,17 @@ async function Example(props) { exports[`expressions > should optimize binary expressions 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c = _useMemo(() => new Array(5), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 5), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props, _v2 = _eq ? _c[1] : _c[1] = _v.a, - _eq2 = Object.is(_c[2], _v2), + _eq2 = _$$equals(_c[2], _v2), _v3 = _eq2 ? _c[2] : _c[2] = _v2, _v4 = _eq ? _c[3] : _c[3] = _v.b, - _eq3 = Object.is(_c[4], _v4), + _eq3 = _$$equals(_c[4], _v4), _v5 = _eq3 ? _c[4] : _c[4] = _v4; return _v3 + _v5; }" @@ -131,9 +143,11 @@ function Example(props) { exports[`expressions > should optimize call expressions 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c = _useMemo(() => new Array(2), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 2), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props, _v2 = _eq ? _c[1] : _c[1] = _v.call(); return _v2; @@ -142,9 +156,11 @@ function Example(props) { exports[`expressions > should optimize conditional expressions 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c = _useMemo(() => new Array(4), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 4), + _eq = _$$equals(_c[0], props), _v2 = _eq ? _c[0] : _c[0] = props, _v3 = _eq ? _c[1] : _c[1] = _v2.a, _v; @@ -163,9 +179,11 @@ function Example(props) { exports[`expressions > should optimize function expressions 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c = _useMemo(() => new Array(2), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 2), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props, _v2 = _eq ? _c[1] : _c[1] = () => { console.log(props.message); @@ -176,8 +194,9 @@ function Example(props) { exports[`expressions > should optimize guaranteed literals 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; function Example(props) { - let _c = _useMemo(() => new Array(1), []), + let _c = _$$cache(_useMemo, 1), _v = _c[0] ||= 1 + 2; return _v; }" @@ -185,9 +204,11 @@ function Example(props) { exports[`expressions > should optimize identifiers 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c = _useMemo(() => new Array(1), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 1), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props; return _v; }" @@ -195,9 +216,11 @@ function Example(props) { exports[`expressions > should optimize logical expressions 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c = _useMemo(() => new Array(3), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 3), + _eq = _$$equals(_c[0], props), _v2 = _eq ? _c[0] : _c[0] = props, _v3 = _eq ? _c[1] : _c[1] = _v2.a, _v; @@ -212,9 +235,11 @@ function Example(props) { exports[`expressions > should optimize member expressions 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c = _useMemo(() => new Array(2), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 2), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props, _v2 = _eq ? _c[1] : _c[1] = _v.example; return _v2; @@ -223,9 +248,11 @@ function Example(props) { exports[`expressions > should optimize new expressions 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c = _useMemo(() => new Array(2), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 2), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props, _v2 = _eq ? _c[1] : _c[1] = new X(_v); return _v2; @@ -234,14 +261,16 @@ function Example(props) { exports[`expressions > should optimize object expressions 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c = _useMemo(() => new Array(6), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 6), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props, _v2 = _eq ? _c[1] : _c[1] = _v.a, _v3 = _eq ? _c[2] : _c[2] = _v.b, _v4 = _eq ? _c[3] : _c[3] = _v.c, - _eq2 = Object.is(_c[4], _v4), + _eq2 = _$$equals(_c[4], _v4), _v5 = _eq2 ? _c[4] : _c[4] = _v4, _eq3 = _eq && _eq2, _v6 = _eq3 ? _c[5] : _c[5] = { @@ -255,9 +284,11 @@ function Example(props) { exports[`expressions > should optimize sequence expressions 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c = _useMemo(() => new Array(3), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 3), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props, _v2 = _eq ? _c[1] : _c[1] = _v.a(), _v3 = _eq ? _c[2] : _c[2] = _v.b(); @@ -267,18 +298,20 @@ function Example(props) { exports[`expressions > should optimize tagged templates 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c = _useMemo(() => new Array(8), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 8), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props, _v2 = _eq ? _c[1] : _c[1] = _v.tag, - _eq2 = Object.is(_c[2], _v2), + _eq2 = _$$equals(_c[2], _v2), _v3 = _eq2 ? _c[2] : _c[2] = _v2, _v4 = _eq ? _c[3] : _c[3] = _v.a(), - _eq3 = Object.is(_c[4], _v4), + _eq3 = _$$equals(_c[4], _v4), _v5 = _eq3 ? _c[4] : _c[4] = _v4, _v6 = _eq ? _c[5] : _c[5] = _v.b(), - _eq4 = Object.is(_c[6], _v6), + _eq4 = _$$equals(_c[6], _v6), _v7 = _eq4 ? _c[6] : _c[6] = _v6, _eq5 = _eq2 && _eq3 && _eq4, _v8 = _eq5 ? _c[7] : _c[7] = _v3\`\${_v5}, \${_v7}\`; @@ -288,15 +321,17 @@ function Example(props) { exports[`expressions > should optimize template literals 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c = _useMemo(() => new Array(6), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 6), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props, _v2 = _eq ? _c[1] : _c[1] = _v.a(), - _eq2 = Object.is(_c[2], _v2), + _eq2 = _$$equals(_c[2], _v2), _v3 = _eq2 ? _c[2] : _c[2] = _v2, _v4 = _eq ? _c[3] : _c[3] = _v.b(), - _eq3 = Object.is(_c[4], _v4), + _eq3 = _$$equals(_c[4], _v4), _v5 = _eq3 ? _c[4] : _c[4] = _v4, _eq4 = _eq2 && _eq3, _v6 = _eq4 ? _c[5] : _c[5] = \`\${_v3}, \${_v5}\`; @@ -306,12 +341,14 @@ function Example(props) { exports[`expressions > should optimize unary expressions 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c = _useMemo(() => new Array(3), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 3), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props, _v2 = _eq ? _c[1] : _c[1] = _v.a, - _eq2 = Object.is(_c[2], _v2), + _eq2 = _$$equals(_c[2], _v2), _v3 = _eq2 ? _c[2] : _c[2] = _v2; return !_v3; }" diff --git a/packages/forgetti/test/__snapshots__/hooks.test.ts.snap b/packages/forgetti/test/__snapshots__/hooks.test.ts.snap index c1b4268..27a1264 100644 --- a/packages/forgetti/test/__snapshots__/hooks.test.ts.snap +++ b/packages/forgetti/test/__snapshots__/hooks.test.ts.snap @@ -2,13 +2,15 @@ exports[`hooks > should optimize useCallback 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; import { useCallback } from 'react'; function Example(props) { - let _c = _useMemo(() => new Array(5), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 5), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props, _v2 = _eq ? _c[1] : _c[1] = _v.value, - _eq2 = Object.is(_c[2], _v2), + _eq2 = _$$equals(_c[2], _v2), _v3 = _eq2 ? _c[2] : _c[2] = _v2, _v4 = _eq2 ? _c[3] : _c[3] = [_v3], _v5 = _eq2 ? _c[4] : _c[4] = () => props.value(); @@ -18,13 +20,15 @@ function Example(props) { exports[`hooks > should optimize useEffect 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; import { useEffect } from 'react'; function Example(props) { - let _c = _useMemo(() => new Array(4), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 4), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props, _v2 = _eq ? _c[1] : _c[1] = _v.example, - _eq2 = Object.is(_c[2], _v2), + _eq2 = _$$equals(_c[2], _v2), _v3 = _eq2 ? _c[2] : _c[2] = _v2, _v4 = _eq2 ? _c[3] : _c[3] = [_v3]; useEffect(() => props.value(), [_v4]); @@ -33,13 +37,15 @@ function Example(props) { exports[`hooks > should optimize useMemo 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; import { useMemo } from 'react'; function Example(props) { - let _c = _useMemo(() => new Array(5), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 5), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props, _v2 = _eq ? _c[1] : _c[1] = _v.value, - _eq2 = Object.is(_c[2], _v2), + _eq2 = _$$equals(_c[2], _v2), _v3 = _eq2 ? _c[2] : _c[2] = _v2, _v4 = _eq2 ? _c[3] : _c[3] = [_v3], _v5 = _eq2 ? _c[4] : _c[4] = (() => props.value())(); @@ -49,9 +55,10 @@ function Example(props) { exports[`hooks > should optimize useRef 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; import { useRef } from 'react'; function Example(props) { - let _c = _useMemo(() => new Array(1), []), + let _c = _$$cache(_useMemo, 1), _v = _c[0] ||= { current: props.value }; diff --git a/packages/forgetti/test/__snapshots__/index.test.ts.snap b/packages/forgetti/test/__snapshots__/index.test.ts.snap index 5139ec8..4a6899b 100644 --- a/packages/forgetti/test/__snapshots__/index.test.ts.snap +++ b/packages/forgetti/test/__snapshots__/index.test.ts.snap @@ -2,9 +2,11 @@ exports[`statements > should optimize for-of statements 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c = _useMemo(() => new Array(5), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 5), + _eq = _$$equals(_c[0], props), _v4 = _eq ? _c[0] : _c[0] = props, _v5 = _eq ? _c[1] : _c[1] = _v4.a, _v3; diff --git a/packages/forgetti/test/__snapshots__/statements.test.ts.snap b/packages/forgetti/test/__snapshots__/statements.test.ts.snap index 8390727..64c09e0 100644 --- a/packages/forgetti/test/__snapshots__/statements.test.ts.snap +++ b/packages/forgetti/test/__snapshots__/statements.test.ts.snap @@ -2,15 +2,17 @@ exports[`statements > should optimize do-while statements 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c2 = _useMemo(() => new Array(1), []), + let _c2 = _$$cache(_useMemo, 1), i = 0, _c = _c2[0] ||= [], _id = 0; do { let _lid = _id++, _l = _c[_lid] ||= new Array(2), - _eq = Object.is(_l[0], i), + _eq = _$$equals(_l[0], i), _v = _eq ? _l[0] : _l[0] = i, _v2 = _eq ? _l[1] : _l[1] = console.log(_v); _v2; @@ -22,14 +24,16 @@ function Example(props) { exports[`statements > should optimize for statements 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c2 = _useMemo(() => new Array(1), []), + let _c2 = _$$cache(_useMemo, 1), _c = _c2[0] ||= [], _id = 0; for (let i = 0; i < 10; i += 1) { let _lid = _id++, _l = _c[_lid] ||= new Array(2), - _eq = Object.is(_l[0], i), + _eq = _$$equals(_l[0], i), _v = _eq ? _l[0] : _l[0] = i, _v2 = _eq ? _l[1] : _l[1] = console.log(_v); _v2; @@ -39,9 +43,11 @@ function Example(props) { exports[`statements > should optimize for-in statements 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c = _useMemo(() => new Array(3), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 3), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props, _v2 = _eq ? _c[1] : _c[1] = _v.arr, _c2 = _c[2] ||= [], @@ -49,7 +55,7 @@ function Example(props) { for (const x in _v2) { let _lid = _id++, _l = _c2[_lid] ||= new Array(2), - _eq2 = Object.is(_l[0], x), + _eq2 = _$$equals(_l[0], x), _v3 = _eq2 ? _l[0] : _l[0] = x, _v4 = _eq2 ? _l[1] : _l[1] = console.log(_v3); _v4; @@ -59,9 +65,11 @@ function Example(props) { exports[`statements > should optimize for-of statements 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c = _useMemo(() => new Array(3), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 3), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props, _v2 = _eq ? _c[1] : _c[1] = _v.arr, _c2 = _c[2] ||= [], @@ -69,7 +77,7 @@ function Example(props) { for (const x of _v2) { let _lid = _id++, _l = _c2[_lid] ||= new Array(2), - _eq2 = Object.is(_l[0], x), + _eq2 = _$$equals(_l[0], x), _v3 = _eq2 ? _l[0] : _l[0] = x, _v4 = _eq2 ? _l[1] : _l[1] = console.log(_v3); _v4; @@ -79,24 +87,26 @@ function Example(props) { exports[`statements > should optimize if statements 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c = _useMemo(() => new Array(5), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 5), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props, _v2 = _eq ? _c[1] : _c[1] = _v.type, - _eq2 = Object.is(_c[2], _v2), + _eq2 = _$$equals(_c[2], _v2), _v3 = _eq2 ? _c[2] : _c[2] = _v2; if (_v3 === 'a') { let _c2 = _c[3] ||= new Array(3), _v4 = _eq ? _c2[0] : _c2[0] = _v.value, - _eq3 = Object.is(_c2[1], _v4), + _eq3 = _$$equals(_c2[1], _v4), _v5 = _eq3 ? _c2[1] : _c2[1] = _v4, _v6 = _eq3 ? _c2[2] : _c2[2] = examples.a(_v5); return _v6; } else { let _c3 = _c[4] ||= new Array(3), _v7 = _eq ? _c3[0] : _c3[0] = _v.value, - _eq4 = Object.is(_c3[1], _v7), + _eq4 = _$$equals(_c3[1], _v7), _v8 = _eq4 ? _c3[1] : _c3[1] = _v7, _v9 = _eq4 ? _c3[2] : _c3[2] = examples.b(_v8); return _v9; @@ -106,8 +116,9 @@ function Example(props) { exports[`statements > should optimize labeled statements 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; function Example(props) { - let _c3 = _useMemo(() => new Array(2), []); + let _c3 = _$$cache(_useMemo, 2); foo: { let _c2 = _c3[0] ||= new Array(1); { @@ -126,37 +137,39 @@ function Example(props) { exports[`statements > should optimize switch statements 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c = _useMemo(() => new Array(6), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 6), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props, _v2 = _eq ? _c[1] : _c[1] = _v.type; switch (_v2) { case 'a': let _c2 = _c[2] ||= new Array(3), _v3 = _eq ? _c2[0] : _c2[0] = _v.value, - _eq2 = Object.is(_c2[1], _v3), + _eq2 = _$$equals(_c2[1], _v3), _v4 = _eq2 ? _c2[1] : _c2[1] = _v3, _v5 = _eq2 ? _c2[2] : _c2[2] = examples.a(_v4); return _v5; case 'b': let _c3 = _c[3] ||= new Array(3), _v6 = _eq ? _c3[0] : _c3[0] = _v.value, - _eq3 = Object.is(_c3[1], _v6), + _eq3 = _$$equals(_c3[1], _v6), _v7 = _eq3 ? _c3[1] : _c3[1] = _v6, _v8 = _eq3 ? _c3[2] : _c3[2] = examples.b(_v7); return _v8; case 'c': let _c4 = _c[4] ||= new Array(3), _v9 = _eq ? _c4[0] : _c4[0] = _v.value, - _eq4 = Object.is(_c4[1], _v9), + _eq4 = _$$equals(_c4[1], _v9), _v10 = _eq4 ? _c4[1] : _c4[1] = _v9, _v11 = _eq4 ? _c4[2] : _c4[2] = examples.c(_v10); return _v11; default: let _c5 = _c[5] ||= new Array(3), _v12 = _eq ? _c5[0] : _c5[0] = _v.value, - _eq5 = Object.is(_c5[1], _v12), + _eq5 = _$$equals(_c5[1], _v12), _v13 = _eq5 ? _c5[1] : _c5[1] = _v12, _v14 = _eq5 ? _c5[2] : _c5[2] = examples.default(_v13); return _v14; @@ -166,12 +179,14 @@ function Example(props) { exports[`statements > should optimize throw statements 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c = _useMemo(() => new Array(4), []), - _eq = Object.is(_c[0], props), + let _c = _$$cache(_useMemo, 4), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props, _v2 = _eq ? _c[1] : _c[1] = _v.message, - _eq2 = Object.is(_c[2], _v2), + _eq2 = _$$equals(_c[2], _v2), _v3 = _eq2 ? _c[2] : _c[2] = _v2, _v4 = _eq2 ? _c[3] : _c[3] = createError(_v3); throw _v4; @@ -180,26 +195,28 @@ function Example(props) { exports[`statements > should optimize try statements 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c2 = _useMemo(() => new Array(3), []); + let _c2 = _$$cache(_useMemo, 3); try { let _c = _c2[0] ||= new Array(2), - _eq = Object.is(_c[0], props), + _eq = _$$equals(_c[0], props), _v = _eq ? _c[0] : _c[0] = props, _v2 = _eq ? _c[1] : _c[1] = _v.a(); _v2; } catch (e) { let _c3 = _c2[1] ||= new Array(3), - _eq2 = Object.is(_c3[0], props), + _eq2 = _$$equals(_c3[0], props), _v3 = _eq2 ? _c3[0] : _c3[0] = props, - _eq3 = Object.is(_c3[1], e), + _eq3 = _$$equals(_c3[1], e), _v4 = _eq3 ? _c3[1] : _c3[1] = e, _eq4 = _eq2 && _eq3, _v5 = _eq4 ? _c3[2] : _c3[2] = _v3.b(_v4); _v5; } finally { let _c4 = _c2[2] ||= new Array(2), - _eq5 = Object.is(_c4[0], props), + _eq5 = _$$equals(_c4[0], props), _v6 = _eq5 ? _c4[0] : _c4[0] = props, _v7 = _eq5 ? _c4[1] : _c4[1] = _v6.c(); _v7; @@ -209,15 +226,17 @@ function Example(props) { exports[`statements > should optimize while statements 1`] = ` "import { useMemo as _useMemo } from \\"react\\"; +import { $$cache as _$$cache } from \\"forgetti/runtime\\"; +import { $$equals as _$$equals } from \\"forgetti/runtime\\"; function Example(props) { - let _c2 = _useMemo(() => new Array(1), []), + let _c2 = _$$cache(_useMemo, 1), i = 0, _c = _c2[0] ||= [], _id = 0; while (i < props.x) { let _lid = _id++, _l = _c[_lid] ||= new Array(2), - _eq = Object.is(_l[0], i), + _eq = _$$equals(_l[0], i), _v = _eq ? _l[0] : _l[0] = i, _v2 = _eq ? _l[1] : _l[1] = console.log(_v); _v2; diff --git a/packages/forgetti/tsconfig.eslint.json b/packages/forgetti/tsconfig.eslint.json index 1442b22..4b05e0d 100644 --- a/packages/forgetti/tsconfig.eslint.json +++ b/packages/forgetti/tsconfig.eslint.json @@ -1,6 +1,6 @@ { "exclude": ["node_modules"], - "include": ["src", "types", "test", "babel"], + "include": ["src", "types", "test", "runtime"], "compilerOptions": { "module": "ESNext", "lib": ["ESNext"], diff --git a/packages/forgetti/tsconfig.json b/packages/forgetti/tsconfig.json index bf2004e..e1b7abe 100644 --- a/packages/forgetti/tsconfig.json +++ b/packages/forgetti/tsconfig.json @@ -1,13 +1,13 @@ { "exclude": ["node_modules"], - "include": ["src", "types", "src"], + "include": ["src", "types", "runtime"], "compilerOptions": { "module": "ESNext", "lib": ["ESNext"], "importHelpers": true, "declaration": true, "sourceMap": true, - "rootDir": "src", + "rootDir": "./", "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, From 9877fcaa868163d4129d80b99bd2d0647d9bf6e7 Mon Sep 17 00:00:00 2001 From: Alexis Munsayac Date: Sat, 18 Mar 2023 22:55:47 +0800 Subject: [PATCH 07/16] Fix package info --- packages/forgetti/package.json | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/packages/forgetti/package.json b/packages/forgetti/package.json index dc1a5f2..05b4620 100644 --- a/packages/forgetti/package.json +++ b/packages/forgetti/package.json @@ -59,9 +59,13 @@ "author": "Alexis Munsayac", "private": false, "typesVersions": { - "*": {} + "*": { + "runtime": [ + "./dist/types/runtime/index.d.ts" + ] + } }, - "types": "./dist/types/index.d.ts", + "types": "./dist/types/src/index.d.ts", "main": "./dist/cjs/production/index.cjs", "module": "./dist/esm/production/index.mjs", "exports": { @@ -72,7 +76,16 @@ }, "require": "./dist/cjs/production/index.cjs", "import": "./dist/esm/production/index.mjs", - "types": "./dist/types/index.d.ts" + "types": "./dist/types/src/index.d.ts" + }, + "./runtime": { + "development": { + "require": "./dist/cjs/development/runtime.cjs", + "import": "./dist/esm/development/runtime.mjs" + }, + "require": "./dist/cjs/production/runtime.cjs", + "import": "./dist/esm/production/runtime.mjs", + "types": "./dist/types/runtime/index.d.ts" } } } From 6871b0ab1e89c9a18eb836c51049bd4d6627e258 Mon Sep 17 00:00:00 2001 From: Alexis Munsayac Date: Sat, 18 Mar 2023 23:05:52 +0800 Subject: [PATCH 08/16] Fix equals --- examples/preact/package.json | 1 + examples/react/package.json | 1 + packages/forgetti/runtime/index.ts | 2 +- packages/rollup/package.json | 6 +++--- packages/vite/package.json | 7 ++++--- pnpm-lock.yaml | 8 +++++--- 6 files changed, 15 insertions(+), 10 deletions(-) diff --git a/examples/preact/package.json b/examples/preact/package.json index 8d2e682..aa8a7b0 100644 --- a/examples/preact/package.json +++ b/examples/preact/package.json @@ -15,6 +15,7 @@ "vite-plugin-forgetti": "0.3.0" }, "dependencies": { + "forgetti": "0.3.0", "preact": "^10.13.0" }, "version": "0.3.0" diff --git a/examples/react/package.json b/examples/react/package.json index 2775fdd..5566f7e 100644 --- a/examples/react/package.json +++ b/examples/react/package.json @@ -17,6 +17,7 @@ "vite-plugin-forgetti": "0.3.0" }, "dependencies": { + "forgetti": "0.3.0", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/packages/forgetti/runtime/index.ts b/packages/forgetti/runtime/index.ts index 4aa03b9..122b1d9 100644 --- a/packages/forgetti/runtime/index.ts +++ b/packages/forgetti/runtime/index.ts @@ -1,6 +1,6 @@ export function $$equals(a: unknown, b: unknown): boolean { // eslint-disable-next-line no-self-compare - return a !== b || (a !== a && b !== b); + return a === b || (a !== a && b !== b); } export type MemoHook = (callback: () => T, dependencies: unknown[]) => T; diff --git a/packages/rollup/package.json b/packages/rollup/package.json index c641dcd..af5832b 100644 --- a/packages/rollup/package.json +++ b/packages/rollup/package.json @@ -40,11 +40,11 @@ "dependencies": { "@babel/core": "^7.21.3", "@babel/preset-typescript": "^7.21.0", - "@rollup/pluginutils": "^5.0.2", - "forgetti": "0.3.0" + "@rollup/pluginutils": "^5.0.2" }, "peerDependencies": { - "rollup": "^3" + "rollup": "^3", + "forgetti": "0.3.0" }, "scripts": { "prepublish": "pridepack clean && pridepack build", diff --git a/packages/vite/package.json b/packages/vite/package.json index 0647d17..953ac0f 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -33,6 +33,7 @@ "@types/node": "^18.15.3", "eslint": "^8.36.0", "eslint-config-lxsmnsyc": "^0.5.1", + "forgetti": "0.3.0", "pridepack": "2.4.1", "tslib": "^2.5.0", "typescript": "^4.9.5", @@ -41,11 +42,11 @@ "dependencies": { "@babel/core": "^7.21.3", "@babel/preset-typescript": "^7.21.0", - "@rollup/pluginutils": "^5.0.2", - "forgetti": "0.3.0" + "@rollup/pluginutils": "^5.0.2" }, "peerDependencies": { - "vite": "^3 || ^4" + "vite": "^3 || ^4", + "forgetti": "0.3.0" }, "scripts": { "prepublish": "pridepack clean && pridepack build", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 97069cc..66ccbbe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,11 +19,13 @@ importers: '@preact/preset-vite': ^2.5.0 eslint: ^8.34.0 eslint-config-lxsmnsyc: ^0.5.1 + forgetti: 0.3.0 preact: ^10.13.0 typescript: ^4.9.5 vite: ^4.1.2 vite-plugin-forgetti: 0.3.0 dependencies: + forgetti: link:../../packages/forgetti preact: 10.13.0 devDependencies: '@preact/preset-vite': 2.5.0_preact@10.13.0+vite@4.1.4 @@ -40,12 +42,14 @@ importers: '@vitejs/plugin-react': ^3.1.0 eslint: ^8.34.0 eslint-config-lxsmnsyc: ^0.5.1 + forgetti: 0.3.0 react: ^18.2.0 react-dom: ^18.2.0 typescript: ^4.9.5 vite: ^4.1.2 vite-plugin-forgetti: 0.3.0 dependencies: + forgetti: link:../../packages/forgetti react: 18.2.0 react-dom: 18.2.0_react@18.2.0 devDependencies: @@ -98,7 +102,6 @@ importers: '@types/node': ^18.13.0 eslint: ^8.34.0 eslint-config-lxsmnsyc: ^0.5.1 - forgetti: 0.3.0 pridepack: 2.4.1 rollup: ^3.15.0 tslib: ^2.5.0 @@ -107,7 +110,6 @@ importers: '@babel/core': 7.21.3 '@babel/preset-typescript': 7.21.0_@babel+core@7.21.3 '@rollup/pluginutils': 5.0.2_rollup@3.15.0 - forgetti: link:../forgetti devDependencies: '@types/babel__core': 7.20.0 '@types/node': 18.13.0 @@ -136,12 +138,12 @@ importers: '@babel/core': 7.21.3 '@babel/preset-typescript': 7.21.0_@babel+core@7.21.3 '@rollup/pluginutils': 5.0.2 - forgetti: link:../forgetti devDependencies: '@types/babel__core': 7.20.0 '@types/node': 18.15.3 eslint: 8.36.0 eslint-config-lxsmnsyc: 0.5.1_vgl77cfdswitgr47lm5swmv43m + forgetti: link:../forgetti pridepack: 2.4.1_a37tusewm2jlajv35tjly5qag4 tslib: 2.5.0 typescript: 4.9.5 From e09d251bdf32ad1e81434e61bb563f3f7a1b796a Mon Sep 17 00:00:00 2001 From: Alexis Munsayac Date: Sat, 18 Mar 2023 23:31:12 +0800 Subject: [PATCH 09/16] Remove test --- packages/rollup/package.json | 3 +-- packages/vite/package.json | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/rollup/package.json b/packages/rollup/package.json index af5832b..abc1de7 100644 --- a/packages/rollup/package.json +++ b/packages/rollup/package.json @@ -52,8 +52,7 @@ "type-check": "pridepack check", "lint": "pridepack lint", "clean": "pridepack clean", - "watch": "pridepack watch", - "test": "vitest" + "watch": "pridepack watch" }, "description": "Solve your hook spaghetti. Inspired by React Forget", "repository": { diff --git a/packages/vite/package.json b/packages/vite/package.json index 953ac0f..0d187f3 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -54,8 +54,7 @@ "type-check": "pridepack check", "lint": "pridepack lint", "clean": "pridepack clean", - "watch": "pridepack watch", - "test": "vitest" + "watch": "pridepack watch" }, "description": "Solve your hook spaghetti. Inspired by React Forget", "repository": { From 700363d2e07fcbebacab81bb48fbc17fe50e887d Mon Sep 17 00:00:00 2001 From: Alexis Munsayac Date: Sun, 19 Mar 2023 15:38:31 +0800 Subject: [PATCH 10/16] Fix sourcemaps --- packages/rollup/package.json | 1 + packages/rollup/src/index.ts | 7 ++++++- packages/vite/src/index.ts | 7 ++++++- pnpm-lock.yaml | 2 ++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/rollup/package.json b/packages/rollup/package.json index abc1de7..2555ab5 100644 --- a/packages/rollup/package.json +++ b/packages/rollup/package.json @@ -32,6 +32,7 @@ "@types/node": "^18.13.0", "eslint": "^8.34.0", "eslint-config-lxsmnsyc": "^0.5.1", + "forgetti": "0.3.0", "pridepack": "2.4.1", "rollup": "^3.15.0", "tslib": "^2.5.0", diff --git a/packages/rollup/src/index.ts b/packages/rollup/src/index.ts index c5689da..1d60ee5 100644 --- a/packages/rollup/src/index.ts +++ b/packages/rollup/src/index.ts @@ -2,8 +2,8 @@ import forgettiBabel, { Options } from 'forgetti'; import { Plugin } from 'rollup'; import { createFilter, FilterPattern } from '@rollup/pluginutils'; import * as babel from '@babel/core'; -import path from 'path'; import ts from '@babel/preset-typescript'; +import path from 'path'; export interface ForgettiPluginFilter { include?: FilterPattern; @@ -41,6 +41,11 @@ export default function forgettiPlugin( ...(options.babel?.plugins ?? []), ], filename: path.basename(id), + ast: false, + sourceMaps: true, + configFile: false, + babelrc: false, + sourceFileName: id, }); if (result) { diff --git a/packages/vite/src/index.ts b/packages/vite/src/index.ts index 6645bb9..0f2c0d5 100644 --- a/packages/vite/src/index.ts +++ b/packages/vite/src/index.ts @@ -2,8 +2,8 @@ import forgettiBabel, { Options } from 'forgetti'; import { Plugin } from 'vite'; import { createFilter, FilterPattern } from '@rollup/pluginutils'; import * as babel from '@babel/core'; -import path from 'path'; import ts from '@babel/preset-typescript'; +import path from 'path'; export interface ForgettiPluginFilter { include?: FilterPattern; @@ -75,6 +75,11 @@ export default function forgettiPlugin( ...(options.babel?.plugins ?? []), ], filename: path.basename(id), + ast: false, + sourceMaps: true, + configFile: false, + babelrc: false, + sourceFileName: id, }); if (result) { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 66ccbbe..95dfe3d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -102,6 +102,7 @@ importers: '@types/node': ^18.13.0 eslint: ^8.34.0 eslint-config-lxsmnsyc: ^0.5.1 + forgetti: 0.3.0 pridepack: 2.4.1 rollup: ^3.15.0 tslib: ^2.5.0 @@ -115,6 +116,7 @@ importers: '@types/node': 18.13.0 eslint: 8.34.0 eslint-config-lxsmnsyc: 0.5.1_7kw3g6rralp5ps6mg3uyzz6azm + forgetti: link:../forgetti pridepack: 2.4.1_64oh6xetmihmk3s5lpnh2fqrua rollup: 3.15.0 tslib: 2.5.0 From 66b150e8ddd674adfde30ae9cb7614b7b7cc6a04 Mon Sep 17 00:00:00 2001 From: Alexis Munsayac Date: Sun, 19 Mar 2023 15:56:19 +0800 Subject: [PATCH 11/16] Remove `@babel/preset-typescript` --- packages/rollup/package.json | 1 - packages/rollup/src/index.ts | 20 +++++--- packages/vite/package.json | 1 - packages/vite/src/index.ts | 21 +++++--- pnpm-lock.yaml | 98 +----------------------------------- 5 files changed, 31 insertions(+), 110 deletions(-) diff --git a/packages/rollup/package.json b/packages/rollup/package.json index 2555ab5..65f5b38 100644 --- a/packages/rollup/package.json +++ b/packages/rollup/package.json @@ -40,7 +40,6 @@ }, "dependencies": { "@babel/core": "^7.21.3", - "@babel/preset-typescript": "^7.21.0", "@rollup/pluginutils": "^5.0.2" }, "peerDependencies": { diff --git a/packages/rollup/src/index.ts b/packages/rollup/src/index.ts index 1d60ee5..d507c77 100644 --- a/packages/rollup/src/index.ts +++ b/packages/rollup/src/index.ts @@ -2,7 +2,6 @@ import forgettiBabel, { Options } from 'forgetti'; import { Plugin } from 'rollup'; import { createFilter, FilterPattern } from '@rollup/pluginutils'; import * as babel from '@babel/core'; -import ts from '@babel/preset-typescript'; import path from 'path'; export interface ForgettiPluginFilter { @@ -18,6 +17,8 @@ export interface ForgettiPluginOptions extends Options { const DEFAULT_INCLUDE = 'src/**/*.{jsx,tsx,ts,js,mjs,cjs}'; const DEFAULT_EXCLUDE = 'node_modules/**/*.{jsx,tsx,ts,js,mjs,cjs}'; +const IS_TS = /\.[mc]?ts|tsx$/i; + export default function forgettiPlugin( options: ForgettiPluginOptions = { preset: 'react' }, ): Plugin { @@ -30,16 +31,23 @@ export default function forgettiPlugin( name: 'forgetti', async transform(code, id) { if (filter(id)) { + const plugins: NonNullable['plugins']> = ['jsx'] ; + if (IS_TS.test(id)) { + plugins.push('typescript'); + } const result = await babel.transformAsync(code, { ...options.babel, - presets: [ - [ts], - ...(options.babel?.presets ?? []), - ], plugins: [ [forgettiBabel, { preset }], - ...(options.babel?.plugins ?? []), + ...(options.babel?.plugins || []), ], + parserOpts: { + ...(options.babel?.parserOpts || {}), + plugins: [ + ...(options.babel?.parserOpts?.plugins || []), + ...plugins, + ], + }, filename: path.basename(id), ast: false, sourceMaps: true, diff --git a/packages/vite/package.json b/packages/vite/package.json index 0d187f3..35cc840 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -41,7 +41,6 @@ }, "dependencies": { "@babel/core": "^7.21.3", - "@babel/preset-typescript": "^7.21.0", "@rollup/pluginutils": "^5.0.2" }, "peerDependencies": { diff --git a/packages/vite/src/index.ts b/packages/vite/src/index.ts index 0f2c0d5..c121eab 100644 --- a/packages/vite/src/index.ts +++ b/packages/vite/src/index.ts @@ -2,7 +2,6 @@ import forgettiBabel, { Options } from 'forgetti'; import { Plugin } from 'vite'; import { createFilter, FilterPattern } from '@rollup/pluginutils'; import * as babel from '@babel/core'; -import ts from '@babel/preset-typescript'; import path from 'path'; export interface ForgettiPluginFilter { @@ -39,6 +38,8 @@ function repushPlugin(plugins: Plugin[], plugin: Plugin, pluginNames: string[]) const DEFAULT_INCLUDE = 'src/**/*.{jsx,tsx,ts,js,mjs,cjs}'; const DEFAULT_EXCLUDE = 'node_modules/**/*.{jsx,tsx,ts,js,mjs,cjs}'; +const IS_TS = /\.[mc]?ts|tsx$/i; + export default function forgettiPlugin( options: ForgettiPluginOptions = { preset: 'react' }, ): Plugin { @@ -64,16 +65,24 @@ export default function forgettiPlugin( }, async transform(code, id) { if (filter(id)) { + const plugins: NonNullable['plugins']> = ['jsx'] ; + + if (IS_TS.test(id)) { + plugins.push('typescript'); + } const result = await babel.transformAsync(code, { ...options.babel, - presets: [ - [ts], - ...(options.babel?.presets ?? []), - ], plugins: [ [forgettiBabel, { preset }], - ...(options.babel?.plugins ?? []), + ...(options.babel?.plugins || []), ], + parserOpts: { + ...(options.babel?.parserOpts || {}), + plugins: [ + ...(options.babel?.parserOpts?.plugins || []), + ...plugins, + ], + }, filename: path.basename(id), ast: false, sourceMaps: true, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 95dfe3d..1e4f178 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -96,7 +96,6 @@ importers: packages/rollup: specifiers: '@babel/core': ^7.21.3 - '@babel/preset-typescript': ^7.21.0 '@rollup/pluginutils': ^5.0.2 '@types/babel__core': ^7.20.0 '@types/node': ^18.13.0 @@ -109,7 +108,6 @@ importers: typescript: ^4.9.5 dependencies: '@babel/core': 7.21.3 - '@babel/preset-typescript': 7.21.0_@babel+core@7.21.3 '@rollup/pluginutils': 5.0.2_rollup@3.15.0 devDependencies: '@types/babel__core': 7.20.0 @@ -125,7 +123,6 @@ importers: packages/vite: specifiers: '@babel/core': ^7.21.3 - '@babel/preset-typescript': ^7.21.0 '@rollup/pluginutils': ^5.0.2 '@types/babel__core': ^7.20.0 '@types/node': ^18.15.3 @@ -138,7 +135,6 @@ importers: vite: ^4.1.4 dependencies: '@babel/core': 7.21.3 - '@babel/preset-typescript': 7.21.0_@babel+core@7.21.3 '@rollup/pluginutils': 5.0.2 devDependencies: '@types/babel__core': 7.20.0 @@ -257,6 +253,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.21.3 + dev: true /@babel/helper-compilation-targets/7.20.7_@babel+core@7.20.12: resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} @@ -285,25 +282,6 @@ packages: lru-cache: 5.1.1 semver: 6.3.0 - /@babel/helper-create-class-features-plugin/7.21.0_@babel+core@7.21.3: - resolution: {integrity: sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.21.3 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-member-expression-to-functions': 7.21.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.20.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/helper-split-export-declaration': 7.18.6 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/helper-environment-visitor/7.18.9: resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} engines: {node: '>=6.9.0'} @@ -321,13 +299,6 @@ packages: dependencies: '@babel/types': 7.21.3 - /@babel/helper-member-expression-to-functions/7.21.0: - resolution: {integrity: sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.21.3 - dev: false - /@babel/helper-module-imports/7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} @@ -349,30 +320,10 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-optimise-call-expression/7.18.6: - resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.21.3 - dev: false - /@babel/helper-plugin-utils/7.20.2: resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} engines: {node: '>=6.9.0'} - - /@babel/helper-replace-supers/7.20.7: - resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-member-expression-to-functions': 7.21.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.3 - '@babel/types': 7.21.3 - transitivePeerDependencies: - - supports-color - dev: false + dev: true /@babel/helper-simple-access/7.20.2: resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} @@ -380,13 +331,6 @@ packages: dependencies: '@babel/types': 7.21.3 - /@babel/helper-skip-transparent-expression-wrappers/7.20.0: - resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.21.3 - dev: false - /@babel/helper-split-export-declaration/7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} @@ -476,16 +420,6 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.21.3: - resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - /@babel/plugin-transform-react-jsx-development/7.18.6: resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} engines: {node: '>=6.9.0'} @@ -528,34 +462,6 @@ packages: '@babel/types': 7.21.3 dev: true - /@babel/plugin-transform-typescript/7.21.0_@babel+core@7.21.3: - resolution: {integrity: sha512-xo///XTPp3mDzTtrqXoBlK9eiAYW3wv9JXglcn/u1bi60RW11dEUxIgA8cbnDhutS1zacjMRmAwxE0gMklLnZg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.3 - '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.21.3 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.21.3 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/preset-typescript/7.21.0_@babel+core@7.21.3: - resolution: {integrity: sha512-myc9mpoVA5m1rF8K8DgLEatOYFDpwC+RkMkjZ0Du6uI62YvDe8uxIEYVs/VCdSJ097nlALiU/yBC7//3nI+hNg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.3 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-option': 7.21.0 - '@babel/plugin-transform-typescript': 7.21.0_@babel+core@7.21.3 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/runtime/7.20.13: resolution: {integrity: sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==} engines: {node: '>=6.9.0'} From ea2f420eaf579d1600a98982f34444002c7f44bb Mon Sep 17 00:00:00 2001 From: Alexis Munsayac Date: Sun, 19 Mar 2023 16:33:14 +0800 Subject: [PATCH 12/16] Fix lint --- .../rollup/{.eslintrc.js => .eslintrc.cjs} | 0 packages/rollup/src/index.ts | 15 +++++++-------- packages/vite/{.eslintrc.js => .eslintrc.cjs} | 0 packages/vite/src/index.ts | 18 ++++++++---------- 4 files changed, 15 insertions(+), 18 deletions(-) rename packages/rollup/{.eslintrc.js => .eslintrc.cjs} (100%) rename packages/vite/{.eslintrc.js => .eslintrc.cjs} (100%) diff --git a/packages/rollup/.eslintrc.js b/packages/rollup/.eslintrc.cjs similarity index 100% rename from packages/rollup/.eslintrc.js rename to packages/rollup/.eslintrc.cjs diff --git a/packages/rollup/src/index.ts b/packages/rollup/src/index.ts index d507c77..925fea6 100644 --- a/packages/rollup/src/index.ts +++ b/packages/rollup/src/index.ts @@ -17,8 +17,6 @@ export interface ForgettiPluginOptions extends Options { const DEFAULT_INCLUDE = 'src/**/*.{jsx,tsx,ts,js,mjs,cjs}'; const DEFAULT_EXCLUDE = 'node_modules/**/*.{jsx,tsx,ts,js,mjs,cjs}'; -const IS_TS = /\.[mc]?ts|tsx$/i; - export default function forgettiPlugin( options: ForgettiPluginOptions = { preset: 'react' }, ): Plugin { @@ -26,19 +24,20 @@ export default function forgettiPlugin( options.filter?.include || DEFAULT_INCLUDE, options.filter?.exclude || DEFAULT_EXCLUDE, ); - const preset = options.preset; + const { preset } = options; return { name: 'forgetti', async transform(code, id) { if (filter(id)) { - const plugins: NonNullable['plugins']> = ['jsx'] ; - if (IS_TS.test(id)) { + const pluginOption = [forgettiBabel, { preset }]; + const plugins: NonNullable['plugins']> = ['jsx']; + if (/\.[mc]?tsx?$/i.test(id)) { plugins.push('typescript'); } const result = await babel.transformAsync(code, { ...options.babel, plugins: [ - [forgettiBabel, { preset }], + pluginOption, ...(options.babel?.plugins || []), ], parserOpts: { @@ -58,7 +57,7 @@ export default function forgettiPlugin( if (result) { return { - code: result.code ?? '', + code: result.code || '', map: result.map, }; } @@ -66,4 +65,4 @@ export default function forgettiPlugin( return undefined; }, }; -} \ No newline at end of file +} diff --git a/packages/vite/.eslintrc.js b/packages/vite/.eslintrc.cjs similarity index 100% rename from packages/vite/.eslintrc.js rename to packages/vite/.eslintrc.cjs diff --git a/packages/vite/src/index.ts b/packages/vite/src/index.ts index c121eab..d9ebd69 100644 --- a/packages/vite/src/index.ts +++ b/packages/vite/src/index.ts @@ -38,8 +38,6 @@ function repushPlugin(plugins: Plugin[], plugin: Plugin, pluginNames: string[]) const DEFAULT_INCLUDE = 'src/**/*.{jsx,tsx,ts,js,mjs,cjs}'; const DEFAULT_EXCLUDE = 'node_modules/**/*.{jsx,tsx,ts,js,mjs,cjs}'; -const IS_TS = /\.[mc]?ts|tsx$/i; - export default function forgettiPlugin( options: ForgettiPluginOptions = { preset: 'react' }, ): Plugin { @@ -47,7 +45,7 @@ export default function forgettiPlugin( options.filter?.include || DEFAULT_INCLUDE, options.filter?.exclude || DEFAULT_EXCLUDE, ); - const preset = options.preset; + const { preset } = options; const plugin: Plugin = { name: 'forgetti', enforce: 'pre', @@ -60,20 +58,20 @@ export default function forgettiPlugin( 'vite:react-babel', 'vite:react-jsx', // https://github.com/preactjs/preset-vite/blob/main/src/index.ts - "vite:preact-jsx", + 'vite:preact-jsx', ]); }, async transform(code, id) { if (filter(id)) { - const plugins: NonNullable['plugins']> = ['jsx'] ; - - if (IS_TS.test(id)) { + const pluginOption = [forgettiBabel, { preset }]; + const plugins: NonNullable['plugins']> = ['jsx']; + if (/\.[mc]?tsx?$/i.test(id)) { plugins.push('typescript'); } const result = await babel.transformAsync(code, { ...options.babel, plugins: [ - [forgettiBabel, { preset }], + pluginOption, ...(options.babel?.plugins || []), ], parserOpts: { @@ -93,7 +91,7 @@ export default function forgettiPlugin( if (result) { return { - code: result.code ?? '', + code: result.code || '', map: result.map, }; } @@ -103,4 +101,4 @@ export default function forgettiPlugin( }; return plugin; -} \ No newline at end of file +} From bbb30790071321ba751984e7827eb577ededbd02 Mon Sep 17 00:00:00 2001 From: Alexis Munsayac Date: Mon, 20 Mar 2023 18:13:59 +0800 Subject: [PATCH 13/16] Optimize `isGuaranteedLiteral` --- .../src/core/is-guaranteed-literal.ts | 76 +++++++++++-------- 1 file changed, 43 insertions(+), 33 deletions(-) diff --git a/packages/forgetti/src/core/is-guaranteed-literal.ts b/packages/forgetti/src/core/is-guaranteed-literal.ts index 43f1c2c..90c8b8f 100644 --- a/packages/forgetti/src/core/is-guaranteed-literal.ts +++ b/packages/forgetti/src/core/is-guaranteed-literal.ts @@ -1,10 +1,16 @@ import * as t from '@babel/types'; -import { isNestedExpression } from './checks'; export default function isGuaranteedLiteral(node: t.Node): node is t.Literal { - if (t.isLiteral(node)) { - // Check if it is template literal but with only static expressions - if (t.isTemplateLiteral(node)) { + switch (node.type) { + case 'BigIntLiteral': + case 'BooleanLiteral': + case 'DecimalLiteral': + case 'NullLiteral': + case 'NumericLiteral': + case 'RegExpLiteral': + case 'StringLiteral': + return true; + case 'TemplateLiteral': { let expr: t.Expression | t.TSType; for (let i = 0, len = node.expressions.length; i < len; i++) { expr = node.expressions[i]; @@ -18,36 +24,40 @@ export default function isGuaranteedLiteral(node: t.Node): node is t.Literal { } return true; } - return true; - } - if (isNestedExpression(node)) { - return isGuaranteedLiteral(node.expression); - } - if (t.isUnaryExpression(node)) { - if (node.operator === 'throw' || node.operator === 'delete') { + case 'ParenthesizedExpression': + case 'TypeCastExpression': + case 'TSAsExpression': + case 'TSSatisfiesExpression': + case 'TSNonNullExpression': + case 'TSTypeAssertion': + case 'TSInstantiationExpression': + return isGuaranteedLiteral(node.expression); + case 'UnaryExpression': + switch (node.operator) { + case 'throw': + case 'delete': + return false; + default: + return isGuaranteedLiteral(node.argument); + } + case 'ConditionalExpression': + return isGuaranteedLiteral(node.test) + && isGuaranteedLiteral(node.consequent) + && isGuaranteedLiteral(node.alternate); + case 'BinaryExpression': + if (node.operator === '|>') { + return false; + } + if (t.isExpression(node.left)) { + return isGuaranteedLiteral(node.left); + } + if (t.isExpression(node.right)) { + return isGuaranteedLiteral(node.right); + } return false; - } - return isGuaranteedLiteral(node.argument); - } - if (t.isConditionalExpression(node)) { - return isGuaranteedLiteral(node.test) - || isGuaranteedLiteral(node.consequent) - || isGuaranteedLiteral(node.alternate); - } - if (t.isBinaryExpression(node)) { - if (node.operator === 'in' || node.operator === 'instanceof' || node.operator === '|>') { + case 'LogicalExpression': + return isGuaranteedLiteral(node.left) && isGuaranteedLiteral(node.right); + default: return false; - } - if (t.isExpression(node.left)) { - return isGuaranteedLiteral(node.left); - } - if (t.isExpression(node.right)) { - return isGuaranteedLiteral(node.right); - } - return false; - } - if (t.isLogicalExpression(node)) { - return isGuaranteedLiteral(node.left) || isGuaranteedLiteral(node.right); } - return false; } From 0ed33f2341a284fbba0d40048a753030b84f35c9 Mon Sep 17 00:00:00 2001 From: Alexis Munsayac Date: Mon, 20 Mar 2023 18:20:43 +0800 Subject: [PATCH 14/16] Optimize checks --- packages/forgetti/src/core/checks.ts | 17 +++-- packages/forgetti/src/index.ts | 109 +++++++++++++++------------ 2 files changed, 71 insertions(+), 55 deletions(-) diff --git a/packages/forgetti/src/core/checks.ts b/packages/forgetti/src/core/checks.ts index 6ca343b..e39ed33 100644 --- a/packages/forgetti/src/core/checks.ts +++ b/packages/forgetti/src/core/checks.ts @@ -3,18 +3,21 @@ import * as babel from '@babel/core'; import { ComponentNode, StateContext } from './types'; export function getImportSpecifierName(specifier: t.ImportSpecifier): string { - if (t.isIdentifier(specifier.imported)) { + if (specifier.imported.type === 'Identifier') { return specifier.imported.name; } return specifier.imported.value; } export function isComponent(node: t.Node): node is ComponentNode { - return ( - t.isArrowFunctionExpression(node) - || t.isFunctionExpression(node) - || t.isFunctionDeclaration(node) - ); + switch (node.type) { + case 'ArrowFunctionExpression': + case 'FunctionExpression': + case 'FunctionDeclaration': + return true; + default: + return false; + } } export function isComponentNameValid( @@ -23,7 +26,7 @@ export function isComponentNameValid( checkName = false, ) { if (checkName) { - if (t.isFunctionExpression(node) || t.isFunctionDeclaration(node)) { + if (node.type !== 'ArrowFunctionExpression') { return ( node.id && ( diff --git a/packages/forgetti/src/index.ts b/packages/forgetti/src/index.ts index 74ed33e..b128b56 100644 --- a/packages/forgetti/src/index.ts +++ b/packages/forgetti/src/index.ts @@ -26,30 +26,37 @@ function registerHookSpecifiers( let specifier: typeof path.node.specifiers[0]; for (let i = 0, len = path.node.specifiers.length; i < len; i++) { specifier = path.node.specifiers[i]; - if (t.isImportSpecifier(specifier)) { - if ( - hook.kind === 'named' - && getImportSpecifierName(specifier) === hook.name - ) { - ctx.registrations.hooks.set(specifier.local, hook); - } - if ( - hook.kind === 'default' - && getImportSpecifierName(specifier) === 'default' - ) { - ctx.registrations.hooks.set(specifier.local, hook); - } - } else if (t.isImportDefaultSpecifier(specifier)) { - if (hook.kind === 'default' && specifier.local.name === hook.name) { - ctx.registrations.hooks.set(specifier.local, hook); - } - } else if (t.isImportNamespaceSpecifier(specifier)) { - let current = ctx.registrations.hooksNamespaces.get(specifier.local); - if (!current) { - current = []; + switch (specifier.type) { + case 'ImportDefaultSpecifier': + if (hook.kind === 'default' && specifier.local.name === hook.name) { + ctx.registrations.hooks.set(specifier.local, hook); + } + break; + case 'ImportNamespaceSpecifier': { + let current = ctx.registrations.hooksNamespaces.get(specifier.local); + if (!current) { + current = []; + } + current.push(hook); + ctx.registrations.hooksNamespaces.set(specifier.local, current); } - current.push(hook); - ctx.registrations.hooksNamespaces.set(specifier.local, current); + break; + case 'ImportSpecifier': + if ( + ( + hook.kind === 'named' + && getImportSpecifierName(specifier) === hook.name + ) + || ( + hook.kind === 'default' + && getImportSpecifierName(specifier) === 'default' + ) + ) { + ctx.registrations.hooks.set(specifier.local, hook); + } + break; + default: + break; } } } @@ -62,31 +69,37 @@ function registerHOCSpecifiers( let specifier: typeof path.node.specifiers[0]; for (let i = 0, len = path.node.specifiers.length; i < len; i++) { specifier = path.node.specifiers[i]; - if (t.isImportSpecifier(specifier)) { - if ( - hoc.kind === 'named' - && getImportSpecifierName(specifier) === hoc.name - ) { - ctx.registrations.hocs.set(specifier.local, hoc); - } - // For `import { default as x }` - if ( - hoc.kind === 'default' - && getImportSpecifierName(specifier) === 'default' - ) { - ctx.registrations.hocs.set(specifier.local, hoc); - } - } else if (t.isImportDefaultSpecifier(specifier)) { - if (hoc.kind === 'default' && specifier.local.name === hoc.name) { - ctx.registrations.hocs.set(specifier.local, hoc); - } - } else if (t.isImportNamespaceSpecifier(specifier)) { - let current = ctx.registrations.hocsNamespaces.get(specifier.local); - if (!current) { - current = []; + switch (specifier.type) { + case 'ImportDefaultSpecifier': + if (hoc.kind === 'default' && specifier.local.name === hoc.name) { + ctx.registrations.hocs.set(specifier.local, hoc); + } + break; + case 'ImportNamespaceSpecifier': { + let current = ctx.registrations.hocsNamespaces.get(specifier.local); + if (!current) { + current = []; + } + current.push(hoc); + ctx.registrations.hocsNamespaces.set(specifier.local, current); } - current.push(hoc); - ctx.registrations.hocsNamespaces.set(specifier.local, current); + break; + case 'ImportSpecifier': + if ( + ( + hoc.kind === 'named' + && getImportSpecifierName(specifier) === hoc.name + ) + || ( + hoc.kind === 'default' + && getImportSpecifierName(specifier) === 'default' + ) + ) { + ctx.registrations.hocs.set(specifier.local, hoc); + } + break; + default: + break; } } } @@ -142,7 +155,7 @@ function transformHOC( } // Check if callee is potentially a named or default import const trueID = unwrapNode(path.node.callee, t.isIdentifier); - if (t.isIdentifier(trueID)) { + if (trueID) { const binding = path.scope.getBindingIdentifier(trueID.name); if (binding) { const registration = ctx.registrations.hocs.get(binding); From 5b6c42edf5d836e67bc7a83d90072337d9288c1b Mon Sep 17 00:00:00 2001 From: Alexis Munsayac Date: Mon, 20 Mar 2023 21:21:07 +0800 Subject: [PATCH 15/16] Fix support for reserved variables --- packages/forgetti/src/core/is-guaranteed-literal.ts | 9 +++++++++ packages/forgetti/src/core/optimizer.ts | 9 ++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/packages/forgetti/src/core/is-guaranteed-literal.ts b/packages/forgetti/src/core/is-guaranteed-literal.ts index 90c8b8f..df354cc 100644 --- a/packages/forgetti/src/core/is-guaranteed-literal.ts +++ b/packages/forgetti/src/core/is-guaranteed-literal.ts @@ -10,6 +10,15 @@ export default function isGuaranteedLiteral(node: t.Node): node is t.Literal { case 'RegExpLiteral': case 'StringLiteral': return true; + case 'Identifier': + switch (node.name) { + case 'undefined': + case 'NaN': + case 'Infinity': + return true; + default: + return false; + } case 'TemplateLiteral': { let expr: t.Expression | t.TSType; for (let i = 0, len = node.expressions.length; i < len; i++) { diff --git a/packages/forgetti/src/core/optimizer.ts b/packages/forgetti/src/core/optimizer.ts index 693150a..a06a9e9 100644 --- a/packages/forgetti/src/core/optimizer.ts +++ b/packages/forgetti/src/core/optimizer.ts @@ -938,7 +938,14 @@ export default class Optimizer { } // if (t.isIdentifier(path.node)) { if (isPathValid(path, t.isIdentifier)) { - return this.optimizeIdentifier(path); + switch (path.node.name) { + case 'undefined': + case 'NaN': + case 'Infinity': + return optimizedExpr(path.node, undefined, true); + default: + return this.optimizeIdentifier(path); + } } if ( isPathValid(path, t.isMemberExpression) From bc15aa4711f1c688aa12770e61e669f3490c9fdd Mon Sep 17 00:00:00 2001 From: Alexis Munsayac Date: Wed, 22 Mar 2023 22:22:28 +0800 Subject: [PATCH 16/16] Fix installation guide --- packages/rollup/README.md | 3 +++ packages/vite/README.md | 3 +++ 2 files changed, 6 insertions(+) diff --git a/packages/rollup/README.md b/packages/rollup/README.md index d35733b..ecf72e5 100644 --- a/packages/rollup/README.md +++ b/packages/rollup/README.md @@ -7,14 +7,17 @@ ## Install ```bash +npm install forgetti npm install --D rollup-plugin-forgetti ``` ```bash +yarn add forgetti yarn add -D rollup-plugin-forgetti ``` ```bash +pnpm add forgetti pnpm add -D rollup-plugin-forgetti ``` diff --git a/packages/vite/README.md b/packages/vite/README.md index ec8c923..c3c638c 100644 --- a/packages/vite/README.md +++ b/packages/vite/README.md @@ -7,14 +7,17 @@ ## Install ```bash +npm install forgetti npm install --D vite-plugin-forgetti ``` ```bash +yarn add forgetti yarn add -D vite-plugin-forgetti ``` ```bash +pnpm add forgetti pnpm add -D vite-plugin-forgetti ```