diff --git a/package.json b/package.json index 421974d0..9e7e2281 100644 --- a/package.json +++ b/package.json @@ -20,9 +20,8 @@ "format:fix": "prettier --write \"**/*.@(js|ts|json|md)\" --ignore-path=.gitignore", "format:validate": "prettier --check \"**/*.@(js|ts|json|md)\" --ignore-path=.gitignore", "preinstall": "npx only-allow pnpm", - "legal:copy-license": "node scripts/legal-copy.js copy && pnpm -r exec -- shx cp -r ../../LICENSES LICENSES", - "legal:copy-reuse": "pnpm -r exec -- shx cp -r ../../.reuse .reuse", - "legal:delete": "node scripts/legal-copy.js delete && pnpm -r exec -- shx rm -rf .reuse LICENSES || true", + "legal:copy": "node scripts/legal-copy.js copy", + "legal:delete": "node scripts/legal-copy.js delete", "lint:fix": "eslint . --ext=js,ts,vue --fix --max-warnings=0 --ignore-path=.gitignore", "lint:validate": "eslint . --ext=js,ts,vue --max-warnings=0 --ignore-path=.gitignore", "prepare": "husky install", @@ -37,6 +36,7 @@ "@changesets/cli": "2.29.5", "@commitlint/cli": "19.5.0", "@commitlint/config-conventional": "19.5.0", + "@manypkg/get-packages": "1.1.3", "@types/chai": "4.3.20", "@types/chai-as-promised": "7.1.8", "@types/deep-equal-in-any-order": "1.0.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3a048ada..93e2db8c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,6 +17,9 @@ importers: '@commitlint/config-conventional': specifier: 19.5.0 version: 19.5.0 + '@manypkg/get-packages': + specifier: 1.1.3 + version: 1.1.3 '@types/chai': specifier: 4.3.20 version: 4.3.20 @@ -597,6 +600,27 @@ importers: specifier: 1.5.2 version: 1.5.2 + projects/yeoman-ui: + devDependencies: + null-loader: + specifier: 4.0.1 + version: 4.0.1(webpack@5.106.2) + string-replace-loader: + specifier: 3.0.3 + version: 3.0.3(webpack@5.106.2) + terser-webpack-plugin: + specifier: 5.5.0 + version: 5.5.0(webpack@5.106.2) + ts-loader: + specifier: 9.6.2 + version: 9.6.2(loader-utils@2.0.4)(typescript@5.7.3)(webpack@5.106.2) + webpack: + specifier: 5.106.2 + version: 5.106.2(webpack-cli@5.1.4) + webpack-cli: + specifier: 5.1.4 + version: 5.1.4(webpack@5.106.2) + projects/yeoman-ui/packages/backend: dependencies: '@sap-devx/webview-rpc': @@ -647,12 +671,15 @@ importers: vscode-uri: specifier: 3.1.0 version: 3.1.0 + yeoman-env-v3: + specifier: workspace:* + version: link:../yeoman-env-v3 yeoman-environment: - specifier: 3.19.3 - version: 3.19.3(@types/node@14.18.63) + specifier: 6.1.0 + version: 6.1.0(@types/node@14.18.63)(@yeoman/adapter@4.0.2(@types/node@14.18.63))(@yeoman/types@1.11.1(@types/node@14.18.63)(@yeoman/adapter@4.0.2(@types/node@14.18.63))(mem-fs@4.1.4))(mem-fs@4.1.4) yeoman-generator: - specifier: ^4.13.0 - version: 4.13.0(encoding@0.1.13) + specifier: 8.2.2 + version: 8.2.2(@types/node@14.18.63)(@yeoman/types@1.11.1(@types/node@14.18.63)(@yeoman/adapter@4.0.2(@types/node@14.18.63))(mem-fs@4.1.4))(mem-fs@4.1.4) devDependencies: '@types/cheerio': specifier: ^0.22.31 @@ -684,21 +711,18 @@ importers: '@types/ws': specifier: ^8.5.14 version: 8.18.1 - '@types/yeoman-environment': - specifier: ^2.10.3 - version: 2.10.11(mem-fs@4.1.4) - '@types/yeoman-generator': - specifier: 5.2.14 - version: 5.2.14(mem-fs@4.1.4) '@vscode/vsce': specifier: 2.24.0 version: 2.24.0 + '@yeoman/types': + specifier: 1.11.1 + version: 1.11.1(@types/node@14.18.63)(@yeoman/adapter@4.0.2(@types/node@14.18.63))(mem-fs@4.1.4) c8: specifier: 11.0.0 version: 11.0.0 copy-webpack-plugin: specifier: ^12.0.2 - version: 12.0.2(webpack@5.106.2) + version: 12.0.2(webpack@5.106.2(webpack-cli@6.0.1(webpack@5.104.1))) cross-env: specifier: ^10.1.0 version: 10.1.0 @@ -708,27 +732,18 @@ importers: sinon: specifier: ^18.0.1 version: 18.0.1 - string-replace-loader: - specifier: 3.0.3 - version: 3.0.3(webpack@5.106.2) + spdx-exceptions: + specifier: ^2.5.0 + version: 2.5.0 + spdx-license-ids: + specifier: ^3.0.20 + version: 3.0.23 terser: specifier: ^5.48.0 version: 5.48.0 - terser-webpack-plugin: - specifier: ^5.3.0 - version: 5.5.0(webpack@5.106.2) - ts-loader: - specifier: ^9.2.3 - version: 9.4.2(typescript@5.7.3)(webpack@5.106.2) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@14.18.63)(typescript@5.7.3) - webpack: - specifier: ^5.94.0 - version: 5.106.2(webpack-cli@5.1.4) - webpack-cli: - specifier: ^5.1.4 - version: 5.1.4(webpack@5.106.2) ws: specifier: 8.17.1 version: 8.17.1(bufferutil@4.1.0)(utf-8-validate@5.0.10) @@ -863,6 +878,16 @@ importers: specifier: 0.25.5 version: 0.25.5 + projects/yeoman-ui/packages/yeoman-env-v3: + dependencies: + yeoman-environment: + specifier: 3.19.3 + version: 3.19.3(@types/node@16.11.10) + devDependencies: + '@types/yeoman-environment': + specifier: 2.10.11 + version: 2.10.11(@yeoman/types@1.11.1(@types/node@16.11.10)(@yeoman/adapter@4.0.2(@types/node@16.11.10))(mem-fs@4.1.4))(mem-fs@4.1.4) + packages: '@asamuzakjp/css-color@3.2.0': @@ -2008,6 +2033,10 @@ packages: resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@gar/promise-retry@1.0.3': + resolution: {integrity: sha512-GmzA9ckNokPypTg10pgpeHNQe7ph+iIKKmhKu3Ob9ANkswreCx7R3cKmY781K8QK3AqVL3xVh9A42JvIAbkkSA==} + engines: {node: ^20.17.0 || >=22.9.0} + '@gar/promisify@1.1.3': resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} @@ -2024,6 +2053,55 @@ packages: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} deprecated: Use @eslint/object-schema instead + '@inquirer/ansi@2.0.7': + resolution: {integrity: sha512-3eTuUO1vH2cZm2ZKHeQxnOqlTi9EfZDGgIe3BL3I4u+rJHocr9Fz86M4fjYABPvFnQG/gGK551HqDiIcETwU6Q==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} + + '@inquirer/checkbox@5.2.1': + resolution: {integrity: sha512-b6xmA/VlTe0ZgDQHDui+Nav470u7u49nRd8/iuhOcQPO9Ch7lGuogydhi2VOmNlZ+zXcM8IcPuNSwQcdJaF/kw==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/confirm@6.1.1': + resolution: {integrity: sha512-eb8DBZcz/2qHWQda4rk2JiQk5h9QV/cVHi1yjt0f69WFZMRFn0sJTye3EAP8icut8UDMjQPsaH5KbcOogefrFQ==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/core@11.2.1': + resolution: {integrity: sha512-Qd6GJT1yVyrZZCfN8W2qKF5ApmqryXRhRKCuip8h01x2w/esJQ2XIYc6f9abMIHgKQdBfFTSOdbHRLAhuM09UA==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/editor@5.2.2': + resolution: {integrity: sha512-ZRVd/oD+sYsUd5zVm0NflqEzlqfYCyHNsqkHl2oWXEUHs12tCbcSFi+wVFEvD8+LGRaMUsVrE7qeo6lSG/S1Vg==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/expand@5.1.1': + resolution: {integrity: sha512-YmQpenjbFSHAK3sOd44puHh3V1KXXr+JiNpUztoSQ4drLh2rTVzTap/YtlAVu/5xavifIlBfNEzJ/neZJ1a/1g==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/external-editor@1.0.3': resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} engines: {node: '>=18'} @@ -2033,10 +2111,99 @@ packages: '@types/node': optional: true + '@inquirer/external-editor@3.0.3': + resolution: {integrity: sha512-6thf5I8q7lZwzGLAxPaaGEREEkZ3nyePPDQ1oyobblxmEE8mqTLguScP7pDjUTAibiyb4hfXl+qjUEJ+di/aNA==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/figures@2.0.7': + resolution: {integrity: sha512-aJ8TBPOGB6f/2qziPfElISTCEd5XOYTFckA2SGjhNmiKzfK/u4ot3v0DUzGVdUnKjN10EqnnEPck36BkyfLnJw==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} + + '@inquirer/input@5.1.2': + resolution: {integrity: sha512-9K/DDBSQpOyZSkt6sOVP9Vo0TR7atX2kuILsUu0x3wVcVbe97lJwIJKMLdMw25tDYuXl/qp6erT0Xs1rfmcfZg==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/number@4.1.1': + resolution: {integrity: sha512-XF4IXAbPnGPgw0wsbC/i2tPcyfdZgDpUlhsqU0SfT4IRIGWha6Xm9VRgN5yYxJq+jnyXlfXI/nQ3ulfk0iEICA==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/password@5.1.1': + resolution: {integrity: sha512-3XBfF7DAsp5qeDsvN5Rd1HmbNokVvEQoUM0QLrRcybC9nX96w3Pbmu7qUsb3IT3J3jBvs2+mTXaKHOUsgHMLzg==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/prompts@8.5.2': + resolution: {integrity: sha512-IYR/3C/paEVVQYQvdDlFZVjRCJVYHHON0XXMH91KO9GSxs0TdKYWlUdvfQl2EfAHDxUaN3IBffkE/BDTh5nJ6g==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/rawlist@5.3.1': + resolution: {integrity: sha512-QqdTqQddL3qPX/PPrjobpsO25NZ4dWXgTLenrR445L2ptLEYE6Z+PD5c5CNDJNx4ugRgELAIpSIJxZaO2jJ2Og==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/search@4.2.1': + resolution: {integrity: sha512-xJj8QWKRSrfKoBIITLZK61dD3zwo0Rz11fgDImku30/Oe81zMdIdGgrLY2h6RkJ+KZ/GhNYIRMKnH/62qBTA5g==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/select@5.2.1': + resolution: {integrity: sha512-FlDndEUww8m7BfukO2nJa25vhD+H5jxxCv4oGioKqzyWz3nPHhhw4LKdYRSlXuAx7DsdWia7iyaBPKKS95Evfw==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/type@4.0.7': + resolution: {integrity: sha512-t28inv14nMQ1PhKpsJPY+kEs/c00qzeCOS2gTNRyTjG5d6qsVA2fItxW4hkvGZ5lvanGLdtCzVIx5dwdRpN1+g==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + '@isaacs/string-locale-compare@1.1.0': resolution: {integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==} @@ -2250,11 +2417,20 @@ packages: resolution: {integrity: sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==} engines: {node: ^16.14.0 || >=18.0.0} + '@npmcli/agent@4.0.2': + resolution: {integrity: sha512-EUEuWAxnL07Sp5/iC/1X6Xj+XThUvnbei9zfRWZdEXa7lss9RTHMhAHBeg+MZ5To9s/gGaSI+UwZTPdYMvKSeg==} + engines: {node: ^20.17.0 || >=22.9.0} + '@npmcli/arborist@4.3.1': resolution: {integrity: sha512-yMRgZVDpwWjplorzt9SFSaakWx6QIK248Nw4ZFgkrAy/GvJaFRaSZzE6nD7JBK5r8g/+PTxFq5Wj/sfciE7x+A==} engines: {node: ^12.13.0 || ^14.15.0 || >=16} hasBin: true + '@npmcli/arborist@9.9.0': + resolution: {integrity: sha512-tzsb1R8mx0k0drlLDT/9ckEYaQHIaWnUti/ci2IaFoQqdqwfmYrc+90p1+QEZC/ocvqcxBep9P1xKw4FbAGofw==} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + '@npmcli/fs@1.1.1': resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} @@ -2266,22 +2442,43 @@ packages: resolution: {integrity: sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + '@npmcli/fs@5.0.0': + resolution: {integrity: sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==} + engines: {node: ^20.17.0 || >=22.9.0} + '@npmcli/git@2.1.0': resolution: {integrity: sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==} + '@npmcli/git@7.0.2': + resolution: {integrity: sha512-oeolHDjExNAJAnlYP2qzNjMX/Xi9bmu78C9dIGr4xjobrSKbuMYCph8lTzn4vnW3NjIqVmw/f8BCfouqyJXlRg==} + engines: {node: ^20.17.0 || >=22.9.0} + '@npmcli/installed-package-contents@1.0.7': resolution: {integrity: sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==} engines: {node: '>= 10'} hasBin: true + '@npmcli/installed-package-contents@4.0.0': + resolution: {integrity: sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA==} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + '@npmcli/map-workspaces@2.0.4': resolution: {integrity: sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + '@npmcli/map-workspaces@5.0.3': + resolution: {integrity: sha512-o2grssXo1e774E5OtEwwrgoszYRh0lqkJH+Pb9r78UcqdGJRDRfhpM8DvZPjzNLLNYeD/rNbjOKM3Ss5UABROw==} + engines: {node: ^20.17.0 || >=22.9.0} + '@npmcli/metavuln-calculator@2.0.0': resolution: {integrity: sha512-VVW+JhWCKRwCTE+0xvD6p3uV4WpqocNYYtzyvenqL/u1Q3Xx6fGTJ+6UoIoii07fbuEO9U3IIyuGY0CYHDv1sg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16} + '@npmcli/metavuln-calculator@9.0.3': + resolution: {integrity: sha512-94GLSYhLXF2t2LAC7pDwLaM4uCARzxShyAQKsirmlNcpidH89VA4/+K1LbJmRMgz5gy65E/QBBWQdUvGLe2Frg==} + engines: {node: ^20.17.0 || >=22.9.0} + '@npmcli/move-file@1.1.2': resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==} engines: {node: '>=10'} @@ -2295,15 +2492,43 @@ packages: '@npmcli/name-from-folder@1.0.1': resolution: {integrity: sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==} + '@npmcli/name-from-folder@4.0.0': + resolution: {integrity: sha512-qfrhVlOSqmKM8i6rkNdZzABj8MKEITGFAY+4teqBziksCQAOLutiAxM1wY2BKEd8KjUSpWmWCYxvXr0y4VTlPg==} + engines: {node: ^20.17.0 || >=22.9.0} + '@npmcli/node-gyp@1.0.3': resolution: {integrity: sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==} + '@npmcli/node-gyp@5.0.0': + resolution: {integrity: sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==} + engines: {node: ^20.17.0 || >=22.9.0} + '@npmcli/package-json@1.0.1': resolution: {integrity: sha512-y6jnu76E9C23osz8gEMBayZmaZ69vFOIk8vR1FJL/wbEJ54+9aVG9rLTjQKSXfgYZEr50nw1txBBFfBZZe+bYg==} + '@npmcli/package-json@7.0.5': + resolution: {integrity: sha512-iVuTlG3ORq2iaVa1IWUxAO/jIp77tUKBhoMjuzYW2kL4MLN1bi/ofqkZ7D7OOwh8coAx1/S2ge0rMdGv8sLSOQ==} + engines: {node: ^20.17.0 || >=22.9.0} + '@npmcli/promise-spawn@1.3.2': resolution: {integrity: sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==} + '@npmcli/promise-spawn@9.0.1': + resolution: {integrity: sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q==} + engines: {node: ^20.17.0 || >=22.9.0} + + '@npmcli/query@5.0.0': + resolution: {integrity: sha512-8TZWfTQOsODpLqo9SVhVjHovmKXNpevHU0gO9e+y4V4fRIOneiXy0u0sMP9LmS71XivrEWfZWg50ReH4WRT4aQ==} + engines: {node: ^20.17.0 || >=22.9.0} + + '@npmcli/redact@4.0.0': + resolution: {integrity: sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==} + engines: {node: ^20.17.0 || >=22.9.0} + + '@npmcli/run-script@10.0.4': + resolution: {integrity: sha512-mGUWr1uMnf0le2TwfOZY4SFxZGXGfm4Jtay/nwAa2FLNAKXUoUwaGwBMNH36UHPtinWfTSJ3nqFQr0091CxVGg==} + engines: {node: ^20.17.0 || >=22.9.0} + '@npmcli/run-script@2.0.0': resolution: {integrity: sha512-fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig==} @@ -2461,6 +2686,18 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} + '@pnpm/config.env-replace@1.1.0': + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + engines: {node: '>=12.22.0'} + + '@pnpm/network.ca-file@1.0.2': + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} + + '@pnpm/npm-conf@3.0.3': + resolution: {integrity: sha512-//0sR/cow/s4ICQaYoAobOl4aU8cjU6x/V24V7XkKotb9+O+3zySIYp146vpaobYHnxa4pZX8NkV54Z5AwbDKA==} + engines: {node: '>=12'} + '@sap-devx/feature-toggle-node@2.0.3': resolution: {integrity: sha512-OxdJigAFybeZH9Uxm14EXp0NAb+pWzU4U0CvttJgmrRx+NL1loL0/o8gb/Vqk8wHAtNTqXjhz7GvLZ4tfDjUrA==} engines: {node: '>=14.21.2'} @@ -2534,6 +2771,9 @@ packages: '@sap_oss/task_contrib_types@3.1.0': resolution: {integrity: sha512-kqGkb8hNCbqv05qY37peOtQFsjRoSbJvwTi+PAAkzfUrGEmKinJWXAVqGIoPKM1KYCSNWDEpSU7uEjoYXykrJg==} + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + '@secretlint/config-creator@10.1.1': resolution: {integrity: sha512-TJ42CHZqqnEe9ORvIXVVMqdu3KAtyZRxLspjFexo6XgrwJ6CoFHQYzIihilqRjo2sJh9HMrpnYSj/5hopofGrA==} engines: {node: '>=20.0.0'} @@ -2579,6 +2819,30 @@ packages: resolution: {integrity: sha512-/JGAvVkurVHkargk3AC7UxRy+Ymc+52AVBO/fZA5pShuLW2dX4O/rKc4n8cyhQiOb/3ym5ACSlLQuQ8apPfxrQ==} engines: {node: '>=20.0.0'} + '@sigstore/bundle@4.0.0': + resolution: {integrity: sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A==} + engines: {node: ^20.17.0 || >=22.9.0} + + '@sigstore/core@3.2.1': + resolution: {integrity: sha512-qRsxPnCrbC/puegGxKuynfnxgLiHqWStrSjxkoB4YKqq3Z3s4cyZyj42ZdWFAEblNP65C+rBH8EuREHIXoi83g==} + engines: {node: ^20.17.0 || >=22.9.0} + + '@sigstore/protobuf-specs@0.5.1': + resolution: {integrity: sha512-/ScWUhhoFasJsSRGTVBwId1loQjjnjAfE4djL6ZhrXRpNCmPTnUKF5Jokd58ILseOMjzET3UrMOtJPS9sYeI0g==} + engines: {node: ^18.17.0 || >=20.5.0} + + '@sigstore/sign@4.1.1': + resolution: {integrity: sha512-Hf4xglukg0XXQ2RiD5vSoLjdPe8OBUPA8XeVjUObheuDcWdYWrnH/BNmxZCzkAy68MzmNCxXLeurJvs6hcP2OQ==} + engines: {node: ^20.17.0 || >=22.9.0} + + '@sigstore/tuf@4.0.2': + resolution: {integrity: sha512-TCAzTy0xzdP79EnxSjq9KQ3eaR7+FmudLC6eRKknVKZbV7ZNlGLClAAQb/HMNJ5n2OBNk2GT1tEmU0xuPr+SLQ==} + engines: {node: ^20.17.0 || >=22.9.0} + + '@sigstore/verify@3.1.1': + resolution: {integrity: sha512-qv7+G3J2cc6wwFj3yKvXOamzqhMwSk1ogPGmhpS8iXllcPrJaIIBA+4HbttlHVu1pqWTdmaCH/WE7UOC51kdoA==} + engines: {node: ^20.17.0 || >=22.9.0} + '@simple-git/args-pathspec@1.0.3': resolution: {integrity: sha512-ngJMaHlsWDTfjyq9F3VIQ8b7NXbBLq5j9i5bJ6XLYtD6qlDXT7fdKY2KscWWUF8t18xx052Y/PUO1K1TRc9yKA==} @@ -2592,6 +2856,10 @@ packages: resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + '@sinonjs/commons@1.8.6': resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} @@ -2663,6 +2931,14 @@ packages: '@tsconfig/node16@1.0.4': resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + '@tufjs/canonical-json@2.0.0': + resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} + engines: {node: ^16.14.0 || >=18.0.0} + + '@tufjs/models@4.1.0': + resolution: {integrity: sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww==} + engines: {node: ^20.17.0 || >=22.9.0} + '@types/aws-lambda@8.10.147': resolution: {integrity: sha512-nD0Z9fNIZcxYX5Mai2CTmFD7wX7UldCkW2ezCF8D1T5hdiLsnTWDGRpfRYntU6VjTdLQjOvyszru7I1c1oCQew==} @@ -2791,16 +3067,15 @@ packages: '@types/keyv@3.1.4': resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + '@types/lodash-es@4.17.12': + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} + '@types/lodash@4.14.177': resolution: {integrity: sha512-0fDwydE2clKe9MNfvXHBHF9WEahRuj+msTuQqOmAApNORFvhMYZKNGGJdCzuhheVjMps/ti0Ak/iJPACMaevvw==} '@types/lodash@4.14.202': resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==} - '@types/mem-fs-editor@10.0.1': - resolution: {integrity: sha512-x8YRuVyEsp7AwHXwnOwjsroItyadmXHi3qglNHbzdCr/X9ofOn4IcTZl6RHEKtBJcYXK6KzX2N98kNVhUefbSA==} - deprecated: This is a stub types definition. mem-fs-editor provides its own type definitions, so you do not need this installed. - '@types/mem-fs@2.2.0': resolution: {integrity: sha512-G7D5J0wx7jMJ5dBMDFYcbE/VXol/51o/vpJu3DqRk1R7SrZYtzhDMf1eFoG8A/HOTM7EAbov/euJkULhwvLK1Q==} deprecated: This is a stub types definition. mem-fs provides its own type definitions, so you do not need this installed. @@ -2971,8 +3246,9 @@ packages: '@types/yeoman-environment@2.10.11': resolution: {integrity: sha512-kIDgoiuPnL9HGHwa2t6h4FiUgYFb411/okY0nKhRKw+IMsRxMOWzQUFhZ/CKQvwXvKoCjFTj+MZI2KXAKxVmug==} - '@types/yeoman-generator@5.2.14': - resolution: {integrity: sha512-eIYBqQyURXiAaoU6jvJqMI+tNSG4s7EXtcHucLCgb8EV2vqz4x1WPr91MT0MiWHV8+9dDRrMkc1VZ6LduexuyA==} + '@types/yeoman-generator@6.0.0': + resolution: {integrity: sha512-K3UaW2Y2o1g+0bbaMtdtWA1oQe//W4AD8LYxDXT/qhjeLies35CV/2zWK9Rx32WYqp3FaYbHYKAS9e/5oZqvrw==} + deprecated: This is a stub types definition. yeoman-generator provides its own type definitions, so you do not need this installed. '@typescript-eslint/eslint-plugin@8.60.1': resolution: {integrity: sha512-JQ4S5GB0tfjO8BuJ4fcX+HodkzJjYBV+7OJ+wLygaX7OGQ7FudyHL4NSCA6ob+w3Yn+5MkKIozOwQhXeM7opVg==} @@ -3296,6 +3572,41 @@ packages: '@xtuc/long@4.2.2': resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + '@yeoman/adapter@4.0.2': + resolution: {integrity: sha512-4uttbNuZ/guMBRhf7R6TCfnLT6XY1HGpxsq6vpHRM3AVr5G6Qz7xXqxG2kdMzBGtIuH5CkXz0k/Byl27GsvIkg==} + engines: {node: 20 || >=22} + + '@yeoman/conflicter@4.1.0': + resolution: {integrity: sha512-Py62rJdWHf1zMpf801Ql7kg+sbUeVmvfmZf++mgA1SOk/uByLIfcXUMDzQPSHkW4Y7I2yVWLKZATRGjoczXVFQ==} + engines: {node: 20 || >=22} + peerDependencies: + '@types/node': '>=20.14.8' + '@yeoman/types': ^1.0.0 + mem-fs: ^4.0.0 + + '@yeoman/namespace@2.1.0': + resolution: {integrity: sha512-/BxsZlALPRp34juAzzh9QUr2hR9w9o+dBSw8sF/iv7NfUU/A/QI0xOyVtQJz2uCPuvtY6nkGDxYxZoKI/lnFQg==} + engines: {node: ^16.13.0 || >=18.12.0} + + '@yeoman/transform@2.1.2': + resolution: {integrity: sha512-LdPNm5Moc+Z8l2YeQ0IzsybXoV531o7RmGJB8lpFr8SjtqqGkT2bZYlS1LftPpCcPJ//yE0MbI/fPGh1WWlabg==} + engines: {node: '>=18.19.0'} + peerDependencies: + '@types/node': '>=18.19.44' + + '@yeoman/types@1.11.1': + resolution: {integrity: sha512-27CI5hHQAHfq8ohYILmLNzClbdzBJzu+ny9AzUVV6naJO0l4/+t+67QDKlwQvt+TW3oE5j74I/Mh4Kn14rsVXA==} + engines: {node: ^16.13.0 || >=18.12.0} + peerDependencies: + '@types/node': '>=16.18.26' + '@yeoman/adapter': ^1.6.0 || ^2.0.0-beta.0 || ^3.0.0 || ^4.0.0 + mem-fs: ^3.0.0 || ^4.0.0-beta.1 + peerDependenciesMeta: + '@yeoman/adapter': + optional: true + mem-fs: + optional: true + JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -3311,6 +3622,10 @@ packages: resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + abbrev@4.0.0: + resolution: {integrity: sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==} + engines: {node: ^20.17.0 || >=22.9.0} + abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -3434,10 +3749,6 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} - ansi-regex@6.2.2: resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} @@ -3594,6 +3905,10 @@ packages: resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} engines: {node: '>=8'} + arrify@3.0.0: + resolution: {integrity: sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==} + engines: {node: '>=12'} + asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} @@ -3771,10 +4086,18 @@ packages: resolution: {integrity: sha512-zKdnMPWEdh4F5INR07/eBrodC7QrF5JKvqskjz/ZZRXg5YSAZIbn8zGhbhUrElzHBZ2fvEQdOU59RHcTG3GiwA==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + bin-links@6.0.2: + resolution: {integrity: sha512-frE1t78WOwJ45PKV2cF2tNPjTcs9L1J9s6VkrV59wanRP4GlaomuxYPVma7BwthMg8WnfSory4w5PTE6FZZ81w==} + engines: {node: ^20.17.0 || >=22.9.0} + binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + binary-extensions@3.1.0: + resolution: {integrity: sha512-Jvvd9hy1w+xUad8+ckQsWA/V1AoyubOvqn0aygjMOVM4BfIaRav1NFS3LsTSDaV4n4FtcCtQXvzep1E6MboqwQ==} + engines: {node: '>=18.20'} + binary@0.3.0: resolution: {integrity: sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==} @@ -3922,6 +4245,10 @@ packages: resolution: {integrity: sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==} engines: {node: ^16.14.0 || >=18.0.0} + cacache@20.0.4: + resolution: {integrity: sha512-M3Lab8NPYlZU2exsL3bMVvMrMqgwCnMWfdZbK28bn3pK6APT/Te/I8hjRPNu1uwORY9a1eEQoifXbKPQMfMTOA==} + engines: {node: ^20.17.0 || >=22.9.0} + cache-base@1.0.1: resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} engines: {node: '>=0.10.0'} @@ -4019,6 +4346,10 @@ packages: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} @@ -4057,6 +4388,10 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + chrome-trace-event@1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} @@ -4080,10 +4415,18 @@ packages: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} + cli-spinners@3.4.0: + resolution: {integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==} + engines: {node: '>=18.20'} + cli-table@0.3.11: resolution: {integrity: sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==} engines: {node: '>= 0.2.0'} @@ -4096,6 +4439,10 @@ packages: resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} engines: {node: '>= 10'} + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} @@ -4136,6 +4483,10 @@ packages: resolution: {integrity: sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + cmd-shim@8.0.0: + resolution: {integrity: sha512-Jk/BK6NCapZ58BKUxlSI+ouKRbjH1NLZCgJkYoab+vEHUY3f6OzpNBN9u7HFSv9J6TRDGs4PLOHezoKGaFRSCA==} + engines: {node: ^20.17.0 || >=22.9.0} + co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} @@ -4206,6 +4557,10 @@ packages: resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} engines: {node: '>=18'} + commander@14.0.3: + resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} + engines: {node: '>=20'} + commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -4236,6 +4591,10 @@ packages: common-ancestor-path@1.0.1: resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} + common-ancestor-path@2.0.0: + resolution: {integrity: sha512-dnN3ibLeoRf2HNC+OlCiNc5d2zxbLJXOtiZUudNFSXZrNSydxcCsSpRzXwfu7BBWCIfHPw+xTayeBvJCP/D8Ng==} + engines: {node: '>= 18'} + commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} @@ -4515,6 +4874,10 @@ packages: dateformat@4.6.3: resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} + dateformat@5.0.3: + resolution: {integrity: sha512-Kvr6HmPXUMerlLcLF+Pwq3K7apHpYmGDVqrxcDasBg86UcKeTSNWbEzU8bwdXnxnR44FtMhJAxI4Bov6Y/KUfA==} + engines: {node: '>=12.20'} + debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -4955,6 +5318,10 @@ packages: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} + env-paths@3.0.0: + resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + envinfo@7.14.0: resolution: {integrity: sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==} engines: {node: '>=4'} @@ -5232,6 +5599,9 @@ packages: eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} + events-universal@1.0.1: resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==} @@ -5251,6 +5621,10 @@ packages: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} + execa@9.6.1: + resolution: {integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==} + engines: {node: ^18.19.0 || >=20.5.0} + exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} @@ -5271,6 +5645,9 @@ packages: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + exponential-backoff@3.1.3: + resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} + express@4.22.1: resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==} engines: {node: '>= 0.10.0'} @@ -5349,9 +5726,18 @@ packages: fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + fast-string-truncated-width@3.0.3: + resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==} + + fast-string-width@3.0.2: + resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==} + fast-uri@3.1.2: resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==} + fast-wrap-ansi@0.2.2: + resolution: {integrity: sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==} + fastest-levenshtein@1.0.12: resolution: {integrity: sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==} @@ -5380,6 +5766,10 @@ packages: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -5414,6 +5804,10 @@ packages: resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} engines: {node: '>=8'} + find-up-simple@1.0.1: + resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} + engines: {node: '>=18'} + find-up@1.1.2: resolution: {integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==} engines: {node: '>=0.10.0'} @@ -5456,6 +5850,10 @@ packages: flatted@3.4.2: resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + fly-import@1.0.0: + resolution: {integrity: sha512-JZEaXZw9QR+DRMClMVJYeY5SNn8zzHBuc+KTreFGDBghRXzCiGR9aDgYGP7O/EeoxwHBZ2Brl+2ixlH/Jmt/qg==} + engines: {node: ^20.17.0 || >=22.9.0} + fn.name@1.1.0: resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} @@ -5626,6 +6024,10 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + get-east-asian-width@1.6.0: + resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} + engines: {node: '>=18'} + get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} @@ -5668,6 +6070,10 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} + get-symbol-description@1.1.0: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} @@ -5763,10 +6169,6 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} - globby@11.0.4: - resolution: {integrity: sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==} - engines: {node: '>=10'} - globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -5779,6 +6181,10 @@ packages: resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==} engines: {node: '>=18'} + globby@16.2.1: + resolution: {integrity: sha512-JmsqJalahxxgW8V2ecSQ2G7UjPlI9cpKdrkG9KoNiXhd/YslXOTEB0cViENWUznuovIuNT+FkMbraDGjr4FCUg==} + engines: {node: '>=20'} + globby@8.0.2: resolution: {integrity: sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==} engines: {node: '>=4'} @@ -5795,6 +6201,9 @@ packages: resolution: {integrity: sha512-Y/K3EDuiQN9rTZhBvPRWMLXIKdeD1Rj0nzunfoi0Yyn5WBEbzxXKU9Ub2X41oZBagVWOBU3MuDonFMgPWQFnwg==} engines: {node: '>=4'} + graceful-fs@4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -5922,6 +6331,10 @@ packages: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} + hosted-git-info@9.0.3: + resolution: {integrity: sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==} + engines: {node: ^20.17.0 || >=22.9.0} + html-encoding-sniffer@2.0.1: resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} engines: {node: '>=10'} @@ -6011,6 +6424,10 @@ packages: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} + human-signals@8.0.1: + resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} + engines: {node: '>=18.18.0'} + humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} @@ -6042,6 +6459,10 @@ packages: resolution: {integrity: sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==} engines: {node: '>=10'} + ignore-walk@8.0.0: + resolution: {integrity: sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A==} + engines: {node: ^20.17.0 || >=22.9.0} + ignore@3.3.10: resolution: {integrity: sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==} @@ -6110,6 +6531,10 @@ packages: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} + index-to-position@1.2.0: + resolution: {integrity: sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==} + engines: {node: '>=18'} + infer-owner@1.0.4: resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} @@ -6127,6 +6552,23 @@ packages: resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + ini@5.0.0: + resolution: {integrity: sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw==} + engines: {node: ^18.17.0 || >=20.5.0} + + ini@6.0.0: + resolution: {integrity: sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==} + engines: {node: ^20.17.0 || >=22.9.0} + + inquirer@13.4.3: + resolution: {integrity: sha512-EPd3IqieHSavSOXh+LZhrIkdQcOELWeRblLT6kslQr+cF9XTh/HxZdSt1YkHH1iq4dvqBnV42uwg2YlorgOy6g==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + inquirer@7.3.3: resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} engines: {node: '>=8.0.0'} @@ -6273,6 +6715,10 @@ packages: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + is-lambda@1.0.1: resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} @@ -6311,6 +6757,10 @@ packages: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} + is-path-inside@4.0.0: + resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} + engines: {node: '>=12'} + is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} @@ -6323,6 +6773,10 @@ packages: resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} engines: {node: '>=10'} + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + is-plain-object@2.0.4: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} @@ -6370,6 +6824,10 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + is-string@1.1.1: resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} @@ -6397,6 +6855,10 @@ packages: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + is-utf8@0.2.1: resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} @@ -6441,6 +6903,10 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isexe@4.0.0: + resolution: {integrity: sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==} + engines: {node: '>=20'} + isobject@2.1.0: resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} engines: {node: '>=0.10.0'} @@ -6889,6 +7355,10 @@ packages: resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + json-parse-even-better-errors@5.0.0: + resolution: {integrity: sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==} + engines: {node: ^20.17.0 || >=22.9.0} + json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -6911,11 +7381,6 @@ packages: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true - json5@2.2.0: - resolution: {integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==} - engines: {node: '>=6'} - hasBin: true - json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -6951,6 +7416,9 @@ packages: just-diff@5.2.0: resolution: {integrity: sha512-6ufhP9SHjb7jibNFrNxyFZ6od3g+An6Ai9mhGRvcYe8UJlH0prseN64M+6ZBBUoKYHZsitDP42gAJ8+eVWr3lw==} + just-diff@6.0.2: + resolution: {integrity: sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==} + just-extend@6.2.0: resolution: {integrity: sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==} @@ -7017,6 +7485,14 @@ packages: kuler@2.0.0: resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} + ky@1.14.3: + resolution: {integrity: sha512-9zy9lkjac+TR1c2tG+mkNSVlyOpInnWdSMiue4F+kq8TwJSgv6o8jhLRg8Ho6SnZ9wOYUq/yozts9qQCfk7bIw==} + engines: {node: '>=18'} + + latest-version@9.0.0: + resolution: {integrity: sha512-7W0vV3rqv5tokqkBAFV1LbR7HPOWzXQDpDgEuib/aJ1jsZZx6x3c2mBI+TJhJzOhkGeaLbCKEHXEXLfirtG2JA==} + engines: {node: '>=18'} + lazy-cache@2.0.2: resolution: {integrity: sha512-7vp2Acd2+Kz4XkzxGxaB1FWOi8KjWIWsgdfD5MCb86DWvlLqhRPM+d6Pro3iNEL5VT9mstz5hKAlcd+QR6H3aA==} engines: {node: '>=0.10.0'} @@ -7119,6 +7595,13 @@ packages: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + locate-path@8.0.0: + resolution: {integrity: sha512-XT9ewWAC43tiAV7xDAPflMkG0qOPn2QjHqlgX8FOqmWa/rxnyYDulF9T0F7tRy1u+TVTmK/M//6VIOye+2zDXg==} + engines: {node: '>=20'} + + lodash-es@4.18.1: + resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} + lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} @@ -7201,6 +7684,10 @@ packages: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} + log-symbols@7.0.1: + resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==} + engines: {node: '>=18'} + log-update@4.0.0: resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} engines: {node: '>=10'} @@ -7235,6 +7722,10 @@ packages: resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} engines: {node: 20 || >=22} + lru-cache@11.5.1: + resolution: {integrity: sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -7268,6 +7759,10 @@ packages: resolution: {integrity: sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==} engines: {node: ^16.14.0 || >=18.0.0} + make-fetch-happen@15.0.6: + resolution: {integrity: sha512-Je0fLJ0F5atA7F+eIlLzk+Wkcl57JDf4kf+EW8xiP5E31xOQxkIxTbgf1Oi1Lw9tRI9UEMRdI5Vz2xTzoNU1Jw==} + engines: {node: ^20.17.0 || >=22.9.0} + make-fetch-happen@9.1.0: resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==} engines: {node: '>= 10'} @@ -7457,6 +7952,10 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} @@ -7506,6 +8005,10 @@ packages: resolution: {integrity: sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + minipass-fetch@5.0.2: + resolution: {integrity: sha512-2d0q2a8eCi2IRg/IGubCNRJoYbA1+YPXAzQVRFmB45gdGZafyivnZ5YSEfo3JikbjGxOdntGFvBQGqaSMXlAFQ==} + engines: {node: ^20.17.0 || >=22.9.0} + minipass-flush@1.0.7: resolution: {integrity: sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA==} engines: {node: '>= 8'} @@ -7521,6 +8024,10 @@ packages: resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} engines: {node: '>=8'} + minipass-sized@2.0.0: + resolution: {integrity: sha512-zSsHhto5BcUVM2m1LurnXY6M//cGhVaegT71OfOXoprxT6o780GZd792ea6FfrQkuU4usHZIUczAQMRUE2plzA==} + engines: {node: '>=8'} + minipass@3.3.6: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} @@ -7541,6 +8048,10 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} + engines: {node: '>= 18'} + mixin-deep@1.3.2: resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} engines: {node: '>=0.10.0'} @@ -7617,6 +8128,10 @@ packages: mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + mute-stream@3.0.0: + resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==} + engines: {node: ^20.17.0 || >=22.9.0} + nanoid@3.3.12: resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -7636,6 +8151,10 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} @@ -7680,6 +8199,11 @@ packages: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true + node-gyp@12.4.0: + resolution: {integrity: sha512-OMcPNvqTCFUnNaBlmdgq+lfNqY7gTiSmNRDjY3uAXRyudeKZEZxu3CLtjMQrx4zZxCX2b/mpNqTtwuCJgXhHkw==} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + node-gyp@8.4.1: resolution: {integrity: sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==} engines: {node: '>= 10.12.0'} @@ -7718,6 +8242,11 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hasBin: true + nopt@9.0.0: + resolution: {integrity: sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -7725,6 +8254,10 @@ packages: resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} engines: {node: ^16.14.0 || >=18.0.0} + normalize-package-data@8.0.0: + resolution: {integrity: sha512-RWk+PI433eESQ7ounYxIp67CYuVsS1uYSonX3kA6ps/3LWfjVQa/ptEg6Y3T6uAMq1mWpX9PQ+qx+QaHpsc7gQ==} + engines: {node: ^20.17.0 || >=22.9.0} + normalize-path@2.1.1: resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} engines: {node: '>=0.10.0'} @@ -7740,10 +8273,18 @@ packages: npm-bundled@1.1.2: resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==} + npm-bundled@5.0.0: + resolution: {integrity: sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==} + engines: {node: ^20.17.0 || >=22.9.0} + npm-install-checks@4.0.0: resolution: {integrity: sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==} engines: {node: '>=10'} + npm-install-checks@8.0.0: + resolution: {integrity: sha512-ScAUdMpyzkbpxoNekQ3tNRdFI8SJ86wgKZSQZdUxT+bj0wVFpsEMWnkXP0twVe1gJyNF5apBWDJhhIbgrIViRA==} + engines: {node: ^20.17.0 || >=22.9.0} + npm-normalize-package-bin@1.0.1: resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} @@ -7751,19 +8292,35 @@ packages: resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + npm-normalize-package-bin@5.0.0: + resolution: {integrity: sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==} + engines: {node: ^20.17.0 || >=22.9.0} + npm-package-arg@11.0.3: resolution: {integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==} engines: {node: ^16.14.0 || >=18.0.0} + npm-package-arg@13.0.2: + resolution: {integrity: sha512-IciCE3SY3uE84Ld8WZU23gAPPV9rIYod4F+rc+vJ7h7cwAJt9Vk6TVsK60ry7Uj3SRS3bqRRIGuTp9YVlk6WNA==} + engines: {node: ^20.17.0 || >=22.9.0} + npm-package-arg@8.1.5: resolution: {integrity: sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==} engines: {node: '>=10'} + npm-packlist@10.0.4: + resolution: {integrity: sha512-uMW73iajD8hiH4ZBxEV3HC+eTnppIqwakjOYuvgddnalIw2lJguKviK1pcUJDlIWm1wSJkchpDZDSVVsZEYRng==} + engines: {node: ^20.17.0 || >=22.9.0} + npm-packlist@3.0.0: resolution: {integrity: sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ==} engines: {node: '>=10'} hasBin: true + npm-pick-manifest@11.0.3: + resolution: {integrity: sha512-buzyCfeoGY/PxKqmBqn1IUJrZnUi1VVJTdSSRPGI60tJdUhUoSQFhs0zycJokDdOznQentgrpf8LayEHyyYlqQ==} + engines: {node: ^20.17.0 || >=22.9.0} + npm-pick-manifest@6.1.1: resolution: {integrity: sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==} @@ -7775,6 +8332,10 @@ packages: resolution: {integrity: sha512-PQCELXKt8Azvxnt5Y85GseQDJJlglTFM9L9U9gkv2y4e9s0k3GVDdOx3YoB6gm2Do0hlkzC39iCGXby+Wve1Bw==} engines: {node: ^16.14.0 || >=18.0.0} + npm-registry-fetch@19.1.1: + resolution: {integrity: sha512-TakBap6OM1w0H73VZVDf44iFXsOS3h+L4wVMXmbWOQroZgFhMch0juN6XSzBNlD965yIKvWg2dfu7NSiaYLxtw==} + engines: {node: ^20.17.0 || >=22.9.0} + npm-run-all2@5.0.2: resolution: {integrity: sha512-S2G6FWZ3pNWAAKm2PFSOtEAG/N+XO/kz3+9l6V91IY+Y3XFSt7Lp7DV92KCgEboEW0hRTu0vFaMe4zXDZYaOyA==} engines: {node: '>= 10'} @@ -7788,6 +8349,10 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} + npmlog@5.0.1: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} deprecated: This package is no longer supported. @@ -7804,6 +8369,12 @@ packages: resolution: {integrity: sha512-j8ZNHg19TyIQOWCGeeQJBuu6xZYIEurf8M1Qsfd8mFrGEfIZytbw18YjKWg+LcO25NowXGZXZpKAx+Ui3TFfDw==} engines: {node: '>=0.10.0'} + null-loader@4.0.1: + resolution: {integrity: sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + nwsapi@2.2.23: resolution: {integrity: sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==} @@ -7881,6 +8452,10 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + open@10.1.2: resolution: {integrity: sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==} engines: {node: '>=18'} @@ -7901,6 +8476,10 @@ packages: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} + ora@9.4.1: + resolution: {integrity: sha512-6VlU9MLXbjVQD04AZCMX28hVtA5bUoadvUqO76MUCVA0ilwJbMiHsITRPfyVm6p/BC0Av/BXMujx39WCe1LEqw==} + engines: {node: '>=20'} + os-homedir@1.0.2: resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} engines: {node: '>=0.10.0'} @@ -7980,14 +8559,34 @@ packages: resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} engines: {node: '>=8'} + p-queue@8.1.1: + resolution: {integrity: sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==} + engines: {node: '>=18'} + + p-queue@9.3.1: + resolution: {integrity: sha512-POWdiIPmsUPGwb4FeQ4OBg46aqmcInSWe45CKDsGHiOBiVQM9chqfQTuqhuTzcg2Vz9faTI65at0KkVyVEiCHw==} + engines: {node: '>=20'} + p-timeout@3.2.0: resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} engines: {node: '>=8'} + p-timeout@6.1.4: + resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} + engines: {node: '>=14.16'} + + p-timeout@7.0.1: + resolution: {integrity: sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==} + engines: {node: '>=20'} + p-transform@1.3.0: resolution: {integrity: sha512-UJKdSzgd3KOnXXAtqN5+/eeHcvTn1hBkesEmElVgvO/NAYcxAvmjzIGmnNd3Tb/gRAvMBdNRFD4qAWdHxY6QXg==} engines: {node: '>=12.10.0'} + p-transform@5.0.1: + resolution: {integrity: sha512-tb3/zIwbU6Z9RMDxZM3/UsyL5LpIUQj7Drq7iXWG9ilPpzyGG28EEFRRrGTsxHf3sOSOiQEiwevQH/VWtHbZfg==} + engines: {node: '>=18.19.0'} + p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -8003,6 +8602,10 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + package-json@10.0.1: + resolution: {integrity: sha512-ua1L4OgXSBdsu1FPb7F3tYH0F48a6kxvod4pLUlGY9COeJAJQNX/sNH2IiEmsxw7lqYiAwrdHMjz1FctOsyDQg==} + engines: {node: '>=18'} + package-manager-detector@0.2.8: resolution: {integrity: sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==} @@ -8011,6 +8614,11 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16} hasBin: true + pacote@21.5.1: + resolution: {integrity: sha512-KvcJ9iy3crysCsgqc4+PknH/w6jkrp8JN36mpZBPwNaDRwTfMZD37YzRazNstiZUOhuF5pno9f78n9mEJBavwg==} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + paged-request@2.0.2: resolution: {integrity: sha512-NWrGqneZImDdcMU/7vMcAOo1bIi5h/pmpJqe7/jdsy85BA/s5MSaU/KlpxwW/IVPmIwBcq2uKPrBWWhEWhtxag==} engines: {node: '>=8'} @@ -8023,6 +8631,10 @@ packages: resolution: {integrity: sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + parse-conflict-json@5.0.1: + resolution: {integrity: sha512-ZHEmNKMq1wyJXNwLxyHnluPfRAFSIliBvbK/UiOceROt4Xh9Pz0fq49NytIaeaCUf5VR86hwQ/34FCcNU5/LKQ==} + engines: {node: ^20.17.0 || >=22.9.0} + parse-json@2.2.0: resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==} engines: {node: '>=0.10.0'} @@ -8035,6 +8647,14 @@ packages: resolution: {integrity: sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==} engines: {node: '>=16'} + parse-json@8.3.0: + resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} + engines: {node: '>=18'} + + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + parse-semver@1.1.1: resolution: {integrity: sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==} @@ -8092,6 +8712,10 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -8149,10 +8773,6 @@ packages: resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} - engines: {node: '>=12'} - picomatch@4.0.4: resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} @@ -8212,6 +8832,10 @@ packages: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} + postcss-selector-parser@7.1.4: + resolution: {integrity: sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==} + engines: {node: '>=4'} + postcss@8.5.15: resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} engines: {node: ^10 || ^12 || >=14} @@ -8252,6 +8876,10 @@ packages: resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} engines: {node: '>=6'} + pretty-bytes@7.1.0: + resolution: {integrity: sha512-nODzvTiYVRGRqAOvE84Vk5JDPyyxsVk0/fbA/bq7RqlnhksGpset09XTxbpvLTIjoaF7K8Z8DG8yHtKGTPSYRw==} + engines: {node: '>=20'} + pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -8260,6 +8888,10 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + pretty-ms@9.3.0: + resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} + engines: {node: '>=18'} + pretty@2.0.0: resolution: {integrity: sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==} engines: {node: '>=0.10.0'} @@ -8275,6 +8907,10 @@ packages: resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + proc-log@6.1.0: + resolution: {integrity: sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==} + engines: {node: ^20.17.0 || >=22.9.0} + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -8286,12 +8922,19 @@ packages: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} + proggy@4.0.0: + resolution: {integrity: sha512-MbA4R+WQT76ZBm/5JUpV9yqcJt92175+Y0Bodg3HgiXzrmKu7Ggq+bpn6y6wHH+gN9NcyKn3yg1+d47VaKwNAQ==} + engines: {node: ^20.17.0 || >=22.9.0} + promise-all-reject-late@1.0.1: resolution: {integrity: sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==} promise-call-limit@1.0.2: resolution: {integrity: sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA==} + promise-call-limit@3.0.2: + resolution: {integrity: sha512-mRPQO2T1QQVw11E7+UdCJu7S61eJVWknzml9sC1heAdj1jxl0fWMBypIt9ZOcLFf8FkG995ZD7RnVk7HH72fZw==} + promise-inflight@1.0.1: resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} peerDependencies: @@ -8417,10 +9060,18 @@ packages: resolution: {integrity: sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + read-cmd-shim@6.0.0: + resolution: {integrity: sha512-1zM5HuOfagXCBWMN83fuFI/x+T/UhZ7k+KIzhrHXcQoeX5+7gmaDYjELQHmmzIodumBHeByBJT4QYS7ufAgs7A==} + engines: {node: ^20.17.0 || >=22.9.0} + read-package-json-fast@2.0.3: resolution: {integrity: sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==} engines: {node: '>=10'} + read-package-up@12.0.0: + resolution: {integrity: sha512-Q5hMVBYur/eQNWDdbF4/Wqqr9Bjvtrw2kjGxxBbKLbx8bVCL8gcArjTy8zDUuLGQicftpMuU0riQNcAsbtOVsw==} + engines: {node: '>=20'} + read-pkg-up@1.0.1: resolution: {integrity: sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==} engines: {node: '>=0.10.0'} @@ -8433,6 +9084,10 @@ packages: resolution: {integrity: sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==} engines: {node: '>=0.10.0'} + read-pkg@10.1.0: + resolution: {integrity: sha512-I8g2lArQiP78ll51UeMZojewtYgIRCKCWqZEgOO8c/uefTI+XDXvCSXu3+YNUaTNvZzobrL5+SqHjBrByRRTdg==} + engines: {node: '>=20'} + read-pkg@5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} @@ -8506,6 +9161,18 @@ packages: resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} engines: {node: '>=4'} + registry-auth-token@5.1.1: + resolution: {integrity: sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==} + engines: {node: '>=14'} + + registry-url@6.0.1: + resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} + engines: {node: '>=12'} + + registry-url@7.2.0: + resolution: {integrity: sha512-I5UEBQ+09LWKInA1fPswOMZps0cs2Z+IQXb5Z5EkTJiUmIN52Vm/FD3ji5X82c5jIXL3nWEWOrYK0RkON6Oqyg==} + engines: {node: '>=18'} + regjsgen@0.8.0: resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} @@ -8616,6 +9283,10 @@ packages: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + ret@0.1.15: resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} engines: {node: '>=0.12'} @@ -8664,6 +9335,10 @@ packages: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} + run-async@4.0.6: + resolution: {integrity: sha512-IoDlSLTs3Yq593mb3ZoKWKXMNu3UpObxhgA/Xuid5p4bbfi2jdY1Hj0m1K+0/tEuQTxIGMhQDqGjKb7RuxGpAQ==} + engines: {node: '>=0.12.0'} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -8920,6 +9595,10 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + sigstore@4.1.1: + resolution: {integrity: sha512-endqECJkfhozrXMK5ngu/UAA0xVcVEFdnHJCElGaExypjW+HK5i6zu3NteLoaX/iFbRUbC3+DjttQs0GARr+5w==} + engines: {node: ^20.17.0 || >=22.9.0} + simple-concat@1.0.1: resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} @@ -9009,6 +9688,10 @@ packages: sort-any@2.0.0: resolution: {integrity: sha512-T9JoiDewQEmWcnmPn/s9h/PH9t3d/LSWi0RgVmXSuDYeZXTZOZ1/wrK2PHaptuR1VXe3clLLt0pD6sgVOwjNEA==} + sort-keys@6.0.1: + resolution: {integrity: sha512-w7xWRu8U9MneKNna8ptG194jp9PLtbd/Rl6gwrmbK4yUeKbE66a64rHgl0iKTBBDr/hpanx7zMGP1Qo8MRkc/w==} + engines: {node: '>=20'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -9063,12 +9746,21 @@ packages: spdx-exceptions@2.3.0: resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + spdx-expression-parse@4.0.0: + resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} + spdx-license-ids@3.0.11: resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==} + spdx-license-ids@3.0.23: + resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==} + split-string@3.1.0: resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} engines: {node: '>=0.10.0'} @@ -9092,6 +9784,10 @@ packages: resolution: {integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + ssri@13.0.1: + resolution: {integrity: sha512-QUiRf1+u9wPTL/76GTYlKttDEBWV1ga9ZXW8BG6kfdeyyM8LGPix9gROyg9V2+P0xNyF3X2Go526xKFdMZrHSQ==} + engines: {node: ^20.17.0 || >=22.9.0} + ssri@8.0.1: resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} engines: {node: '>= 8'} @@ -9138,6 +9834,10 @@ packages: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} + stdin-discarder@0.3.2: + resolution: {integrity: sha512-eCPu1qRxPVkl5605OTWF8Wz40b4Mf45NY5LQmVPQ599knfs5QhASUm9GbJ5BDMDOXgrnh0wyEdvzmL//YMlw0A==} + engines: {node: '>=18'} + stop-iteration-iterator@1.1.0: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} @@ -9187,6 +9887,10 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} + string-width@8.2.1: + resolution: {integrity: sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==} + engines: {node: '>=20'} + string.prototype.trim@1.2.10: resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} engines: {node: '>= 0.4'} @@ -9225,10 +9929,6 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - strip-ansi@7.2.0: resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} engines: {node: '>=12'} @@ -9269,6 +9969,10 @@ packages: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} + strip-indent@1.0.1: resolution: {integrity: sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==} engines: {node: '>=0.10.0'} @@ -9324,6 +10028,10 @@ packages: resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} engines: {node: '>=10.0.0'} + tagged-tag@1.0.0: + resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} + engines: {node: '>=20'} + tapable@1.1.3: resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} engines: {node: '>=6'} @@ -9344,6 +10052,10 @@ packages: engines: {node: '>=10'} deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + tar@7.5.19: + resolution: {integrity: sha512-4LeEWl96twnS2Q7Bz4MGqgazLqO+hJN63GZxXoIqh1T3VweYD997gbU1ItNsQafqqXTXd5WFyFdReLtwvRBNiw==} + engines: {node: '>=18'} + teex@1.0.1: resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==} @@ -9512,6 +10224,10 @@ packages: treeverse@1.0.4: resolution: {integrity: sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g==} + treeverse@3.0.0: + resolution: {integrity: sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + trim-newlines@1.0.0: resolution: {integrity: sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==} engines: {node: '>=0.10.0'} @@ -9581,6 +10297,17 @@ packages: typescript: '*' webpack: ^5.0.0 + ts-loader@9.6.2: + resolution: {integrity: sha512-R4iuczmtgxvtuI556s+hTZ6/7Ee03VCAk/l/M8LY1OAsUgB7YydsCxkgq9D9pKRaD7GJqUi2u8fp9zZP/ufjKA==} + engines: {node: '>=12.0.0'} + peerDependencies: + loader-utils: '*' + typescript: '*' + webpack: ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + loader-utils: + optional: true + ts-node@10.9.2: resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true @@ -9610,6 +10337,10 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tuf-js@4.1.0: + resolution: {integrity: sha512-50QV99kCKH5P/Vs4E2Gzp7BopNV+KzTXqWeaxrfu5IQJBOULRsTIS9seSsOVT8ZnGXzCyx55nYWAi4qJzpZKEQ==} + engines: {node: ^20.17.0 || >=22.9.0} + tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} @@ -9668,6 +10399,10 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} + type-fest@5.8.0: + resolution: {integrity: sha512-YGYEVz3Fm5iy/AybuA0oyNFq7H4CgQNfRp/qfe8nurE1kuCeNm3/vfm9X4Mtl+qLyaKJUh5xrFZwogr41SMjYA==} + engines: {node: '>=20'} + type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -9736,6 +10471,10 @@ packages: undici-types@7.24.6: resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==} + undici@6.27.0: + resolution: {integrity: sha512-YmfV3YnEDzXRC5lZ2jWtWWHKGUm1zIt8AhesR1tens+HTNv+YZlN/dp6G727LOvMJ8xjP9Be7Y2Sdr96LDm+pg==} + engines: {node: '>=18.17'} + undici@7.25.0: resolution: {integrity: sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==} engines: {node: '>=20.18.1'} @@ -9764,6 +10503,10 @@ packages: resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} engines: {node: '>=18'} + unicorn-magic@0.4.0: + resolution: {integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==} + engines: {node: '>=20'} + union-value@1.0.1: resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} engines: {node: '>=0.10.0'} @@ -9824,6 +10567,10 @@ packages: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} + untildify@6.0.0: + resolution: {integrity: sha512-sA2YTBvW2F463GvSbiZtso+dpuQV+B7xX9saX30SGrR5Fyx4AUcvA/zN+ShAkABKUKVyDaHECsJrHv5ToTuHsQ==} + engines: {node: '>=20'} + unzip-response@2.0.1: resolution: {integrity: sha512-N0XH6lqDtFH84JxptQoZYmloF4nzrQqqrAymNj+/gW60AO2AZgOcf4O/nUXJcYfyQkqvMo9lSupBZmmgvuVXlw==} engines: {node: '>=4'} @@ -9914,6 +10661,10 @@ packages: resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + validate-npm-package-name@7.0.2: + resolution: {integrity: sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==} + engines: {node: ^20.17.0 || >=22.9.0} + vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -10063,6 +10814,10 @@ packages: walk-up-path@1.0.0: resolution: {integrity: sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==} + walk-up-path@4.0.0: + resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==} + engines: {node: 20 || >=22} + walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} @@ -10214,6 +10969,10 @@ packages: which-module@2.0.0: resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} + which-package-manager@1.0.1: + resolution: {integrity: sha512-Nse2rVsL302dkEhCyyS1U3iEQ9FRYPPkWJNk188xUVkKIGXjMmDPlA3L1VettE+T2z7SGLsJiDaZw//8CHUQwQ==} + engines: {node: '>=18'} + which-pm@2.2.0: resolution: {integrity: sha512-MOiaDbA5ZZgUjkeMWM5EkJp4loW5ZRoa5bc3/aeMox/PJelMhE6t7S/mLuiY43DBupyxH+S0U1bTui9kWUlmsw==} engines: {node: '>=8.15'} @@ -10231,6 +10990,11 @@ packages: engines: {node: '>= 8'} hasBin: true + which@6.0.1: + resolution: {integrity: sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} @@ -10303,6 +11067,10 @@ packages: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + write-file-atomic@7.0.1: + resolution: {integrity: sha512-OTIk8iR8/aCRWBqvxrzxR0hgxWpnYBblY1S5hDWBQfk/VFmJwzmJgQFN3WsoUKHISv2eAwe+PpbUzyL1CKTLXg==} + engines: {node: ^20.17.0 || >=22.9.0} + ws@7.5.10: resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} engines: {node: '>=8.3.0'} @@ -10402,6 +11170,10 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} @@ -10448,10 +11220,30 @@ packages: engines: {node: '>=12.10.0'} hasBin: true + yeoman-environment@6.1.0: + resolution: {integrity: sha512-QSKMfrSx3js9fxbMDBa+sZG0ctF0NDxcO6VA5BnrWdo6wqhdalT2IUU/ZrNakQLZQ76E3B6b0lXHKEA7ivsWxA==} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + peerDependencies: + '@yeoman/adapter': ^4.0.2 + '@yeoman/types': ^1.10.3 + mem-fs: ^4.1.4 + yeoman-generator@4.13.0: resolution: {integrity: sha512-f2/5N5IR3M2Ozm+QocvZQudlQITv2DwI6Mcxfy7R7gTTzaKgvUpgo/pQMJ+WQKm0KN0YMWCFOZpj0xFGxevc1w==} engines: {node: '>=10'} + yeoman-generator@8.2.2: + resolution: {integrity: sha512-GIvRULf09VrTyJ1nMIxCRFTI8gzW9zsAxVXTHOmsWVKZ7QYPdByRQvFtnp0XOObM6dvDSoAwBhuYR6i5inp/ig==} + engines: {node: ^20.17.0 || >=22.9.0} + peerDependencies: + '@types/node': '>=20.19.35' + '@yeoman/types': ^1.1.1 + mem-fs: ^4.0.0 + peerDependenciesMeta: + '@types/node': + optional: true + yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} @@ -10464,6 +11256,10 @@ packages: resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} engines: {node: '>=12.20'} + yoctocolors@2.1.2: + resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} + engines: {node: '>=18'} + snapshots: '@asamuzakjp/css-color@3.2.0': @@ -11789,6 +12585,8 @@ snapshots: '@eslint/js@8.57.1': {} + '@gar/promise-retry@1.0.3': {} + '@gar/promisify@1.1.3': {} '@humanwhocodes/config-array@0.13.0': @@ -11803,114 +12601,366 @@ snapshots: '@humanwhocodes/object-schema@2.0.3': {} - '@inquirer/external-editor@1.0.3(@types/node@14.18.63)': + '@inquirer/ansi@2.0.7': {} + + '@inquirer/checkbox@5.2.1(@types/node@14.18.63)': dependencies: - chardet: 2.1.1 - iconv-lite: 0.7.2 + '@inquirer/ansi': 2.0.7 + '@inquirer/core': 11.2.1(@types/node@14.18.63) + '@inquirer/figures': 2.0.7 + '@inquirer/type': 4.0.7(@types/node@14.18.63) optionalDependencies: '@types/node': 14.18.63 - '@isaacs/cliui@8.0.2': + '@inquirer/checkbox@5.2.1(@types/node@16.11.10)': dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 + '@inquirer/ansi': 2.0.7 + '@inquirer/core': 11.2.1(@types/node@16.11.10) + '@inquirer/figures': 2.0.7 + '@inquirer/type': 4.0.7(@types/node@16.11.10) + optionalDependencies: + '@types/node': 16.11.10 + optional: true - '@isaacs/string-locale-compare@1.1.0': {} + '@inquirer/confirm@6.1.1(@types/node@14.18.63)': + dependencies: + '@inquirer/core': 11.2.1(@types/node@14.18.63) + '@inquirer/type': 4.0.7(@types/node@14.18.63) + optionalDependencies: + '@types/node': 14.18.63 - '@istanbuljs/load-nyc-config@1.1.0': + '@inquirer/confirm@6.1.1(@types/node@16.11.10)': dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.2 - resolve-from: 5.0.0 + '@inquirer/core': 11.2.1(@types/node@16.11.10) + '@inquirer/type': 4.0.7(@types/node@16.11.10) + optionalDependencies: + '@types/node': 16.11.10 + optional: true - '@istanbuljs/schema@0.1.3': {} + '@inquirer/core@11.2.1(@types/node@14.18.63)': + dependencies: + '@inquirer/ansi': 2.0.7 + '@inquirer/figures': 2.0.7 + '@inquirer/type': 4.0.7(@types/node@14.18.63) + cli-width: 4.1.0 + fast-wrap-ansi: 0.2.2 + mute-stream: 3.0.0 + signal-exit: 4.1.0 + optionalDependencies: + '@types/node': 14.18.63 - '@jest/console@27.5.1': + '@inquirer/core@11.2.1(@types/node@16.11.10)': dependencies: - '@jest/types': 27.5.1 + '@inquirer/ansi': 2.0.7 + '@inquirer/figures': 2.0.7 + '@inquirer/type': 4.0.7(@types/node@16.11.10) + cli-width: 4.1.0 + fast-wrap-ansi: 0.2.2 + mute-stream: 3.0.0 + signal-exit: 4.1.0 + optionalDependencies: '@types/node': 16.11.10 - chalk: 4.1.2 - jest-message-util: 27.5.1 - jest-util: 27.5.1 - slash: 3.0.0 + optional: true - '@jest/console@29.7.0': + '@inquirer/editor@5.2.2(@types/node@14.18.63)': dependencies: - '@jest/types': 29.6.3 + '@inquirer/core': 11.2.1(@types/node@14.18.63) + '@inquirer/external-editor': 3.0.3(@types/node@14.18.63) + '@inquirer/type': 4.0.7(@types/node@14.18.63) + optionalDependencies: + '@types/node': 14.18.63 + + '@inquirer/editor@5.2.2(@types/node@16.11.10)': + dependencies: + '@inquirer/core': 11.2.1(@types/node@16.11.10) + '@inquirer/external-editor': 3.0.3(@types/node@16.11.10) + '@inquirer/type': 4.0.7(@types/node@16.11.10) + optionalDependencies: '@types/node': 16.11.10 - chalk: 4.1.2 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 + optional: true - '@jest/core@27.5.1(bufferutil@4.1.0)(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.7.3))(utf-8-validate@5.0.10)': + '@inquirer/expand@5.1.1(@types/node@14.18.63)': dependencies: - '@jest/console': 27.5.1 - '@jest/reporters': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 + '@inquirer/core': 11.2.1(@types/node@14.18.63) + '@inquirer/type': 4.0.7(@types/node@14.18.63) + optionalDependencies: + '@types/node': 14.18.63 + + '@inquirer/expand@5.1.1(@types/node@16.11.10)': + dependencies: + '@inquirer/core': 11.2.1(@types/node@16.11.10) + '@inquirer/type': 4.0.7(@types/node@16.11.10) + optionalDependencies: '@types/node': 16.11.10 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.8.1 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 27.5.1 - jest-config: 27.5.1(bufferutil@4.1.0)(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.7.3))(utf-8-validate@5.0.10) - jest-haste-map: 27.5.1 - jest-message-util: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-resolve-dependencies: 27.5.1 - jest-runner: 27.5.1(bufferutil@4.1.0)(utf-8-validate@5.0.10) - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 - jest-watcher: 27.5.1 - micromatch: 4.0.8 - rimraf: 3.0.2 - slash: 3.0.0 - strip-ansi: 6.0.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate + optional: true - '@jest/core@29.7.0(ts-node@10.9.2(@types/node@16.11.10)(typescript@5.7.3))': + '@inquirer/external-editor@1.0.3(@types/node@16.11.10)': dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 + chardet: 2.1.1 + iconv-lite: 0.7.2 + optionalDependencies: '@types/node': 16.11.10 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@16.11.10)(ts-node@10.9.2(@types/node@16.11.10)(typescript@5.7.3)) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 + + '@inquirer/external-editor@3.0.3(@types/node@14.18.63)': + dependencies: + chardet: 2.1.1 + iconv-lite: 0.7.2 + optionalDependencies: + '@types/node': 14.18.63 + + '@inquirer/external-editor@3.0.3(@types/node@16.11.10)': + dependencies: + chardet: 2.1.1 + iconv-lite: 0.7.2 + optionalDependencies: + '@types/node': 16.11.10 + optional: true + + '@inquirer/figures@2.0.7': {} + + '@inquirer/input@5.1.2(@types/node@14.18.63)': + dependencies: + '@inquirer/core': 11.2.1(@types/node@14.18.63) + '@inquirer/type': 4.0.7(@types/node@14.18.63) + optionalDependencies: + '@types/node': 14.18.63 + + '@inquirer/input@5.1.2(@types/node@16.11.10)': + dependencies: + '@inquirer/core': 11.2.1(@types/node@16.11.10) + '@inquirer/type': 4.0.7(@types/node@16.11.10) + optionalDependencies: + '@types/node': 16.11.10 + optional: true + + '@inquirer/number@4.1.1(@types/node@14.18.63)': + dependencies: + '@inquirer/core': 11.2.1(@types/node@14.18.63) + '@inquirer/type': 4.0.7(@types/node@14.18.63) + optionalDependencies: + '@types/node': 14.18.63 + + '@inquirer/number@4.1.1(@types/node@16.11.10)': + dependencies: + '@inquirer/core': 11.2.1(@types/node@16.11.10) + '@inquirer/type': 4.0.7(@types/node@16.11.10) + optionalDependencies: + '@types/node': 16.11.10 + optional: true + + '@inquirer/password@5.1.1(@types/node@14.18.63)': + dependencies: + '@inquirer/ansi': 2.0.7 + '@inquirer/core': 11.2.1(@types/node@14.18.63) + '@inquirer/type': 4.0.7(@types/node@14.18.63) + optionalDependencies: + '@types/node': 14.18.63 + + '@inquirer/password@5.1.1(@types/node@16.11.10)': + dependencies: + '@inquirer/ansi': 2.0.7 + '@inquirer/core': 11.2.1(@types/node@16.11.10) + '@inquirer/type': 4.0.7(@types/node@16.11.10) + optionalDependencies: + '@types/node': 16.11.10 + optional: true + + '@inquirer/prompts@8.5.2(@types/node@14.18.63)': + dependencies: + '@inquirer/checkbox': 5.2.1(@types/node@14.18.63) + '@inquirer/confirm': 6.1.1(@types/node@14.18.63) + '@inquirer/editor': 5.2.2(@types/node@14.18.63) + '@inquirer/expand': 5.1.1(@types/node@14.18.63) + '@inquirer/input': 5.1.2(@types/node@14.18.63) + '@inquirer/number': 4.1.1(@types/node@14.18.63) + '@inquirer/password': 5.1.1(@types/node@14.18.63) + '@inquirer/rawlist': 5.3.1(@types/node@14.18.63) + '@inquirer/search': 4.2.1(@types/node@14.18.63) + '@inquirer/select': 5.2.1(@types/node@14.18.63) + optionalDependencies: + '@types/node': 14.18.63 + + '@inquirer/prompts@8.5.2(@types/node@16.11.10)': + dependencies: + '@inquirer/checkbox': 5.2.1(@types/node@16.11.10) + '@inquirer/confirm': 6.1.1(@types/node@16.11.10) + '@inquirer/editor': 5.2.2(@types/node@16.11.10) + '@inquirer/expand': 5.1.1(@types/node@16.11.10) + '@inquirer/input': 5.1.2(@types/node@16.11.10) + '@inquirer/number': 4.1.1(@types/node@16.11.10) + '@inquirer/password': 5.1.1(@types/node@16.11.10) + '@inquirer/rawlist': 5.3.1(@types/node@16.11.10) + '@inquirer/search': 4.2.1(@types/node@16.11.10) + '@inquirer/select': 5.2.1(@types/node@16.11.10) + optionalDependencies: + '@types/node': 16.11.10 + optional: true + + '@inquirer/rawlist@5.3.1(@types/node@14.18.63)': + dependencies: + '@inquirer/core': 11.2.1(@types/node@14.18.63) + '@inquirer/type': 4.0.7(@types/node@14.18.63) + optionalDependencies: + '@types/node': 14.18.63 + + '@inquirer/rawlist@5.3.1(@types/node@16.11.10)': + dependencies: + '@inquirer/core': 11.2.1(@types/node@16.11.10) + '@inquirer/type': 4.0.7(@types/node@16.11.10) + optionalDependencies: + '@types/node': 16.11.10 + optional: true + + '@inquirer/search@4.2.1(@types/node@14.18.63)': + dependencies: + '@inquirer/core': 11.2.1(@types/node@14.18.63) + '@inquirer/figures': 2.0.7 + '@inquirer/type': 4.0.7(@types/node@14.18.63) + optionalDependencies: + '@types/node': 14.18.63 + + '@inquirer/search@4.2.1(@types/node@16.11.10)': + dependencies: + '@inquirer/core': 11.2.1(@types/node@16.11.10) + '@inquirer/figures': 2.0.7 + '@inquirer/type': 4.0.7(@types/node@16.11.10) + optionalDependencies: + '@types/node': 16.11.10 + optional: true + + '@inquirer/select@5.2.1(@types/node@14.18.63)': + dependencies: + '@inquirer/ansi': 2.0.7 + '@inquirer/core': 11.2.1(@types/node@14.18.63) + '@inquirer/figures': 2.0.7 + '@inquirer/type': 4.0.7(@types/node@14.18.63) + optionalDependencies: + '@types/node': 14.18.63 + + '@inquirer/select@5.2.1(@types/node@16.11.10)': + dependencies: + '@inquirer/ansi': 2.0.7 + '@inquirer/core': 11.2.1(@types/node@16.11.10) + '@inquirer/figures': 2.0.7 + '@inquirer/type': 4.0.7(@types/node@16.11.10) + optionalDependencies: + '@types/node': 16.11.10 + optional: true + + '@inquirer/type@4.0.7(@types/node@14.18.63)': + optionalDependencies: + '@types/node': 14.18.63 + + '@inquirer/type@4.0.7(@types/node@16.11.10)': + optionalDependencies: + '@types/node': 16.11.10 + optional: true + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.2.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.3 + + '@isaacs/string-locale-compare@1.1.0': {} + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.2 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jest/console@27.5.1': + dependencies: + '@jest/types': 27.5.1 + '@types/node': 16.11.10 + chalk: 4.1.2 + jest-message-util: 27.5.1 + jest-util: 27.5.1 + slash: 3.0.0 + + '@jest/console@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@types/node': 16.11.10 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + + '@jest/core@27.5.1(bufferutil@4.1.0)(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.7.3))(utf-8-validate@5.0.10)': + dependencies: + '@jest/console': 27.5.1 + '@jest/reporters': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 16.11.10 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.8.1 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 27.5.1 + jest-config: 27.5.1(bufferutil@4.1.0)(ts-node@10.9.2(@types/node@25.9.1)(typescript@5.7.3))(utf-8-validate@5.0.10) + jest-haste-map: 27.5.1 + jest-message-util: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-resolve-dependencies: 27.5.1 + jest-runner: 27.5.1(bufferutil@4.1.0)(utf-8-validate@5.0.10) + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + jest-watcher: 27.5.1 + micromatch: 4.0.8 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + '@jest/core@29.7.0(ts-node@10.9.2(@types/node@16.11.10)(typescript@5.7.3))': + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 16.11.10 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@16.11.10)(ts-node@10.9.2(@types/node@16.11.10)(typescript@5.7.3)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 jest-watcher: 29.7.0 micromatch: 4.0.8 pretty-format: 29.7.0 @@ -12232,7 +13282,7 @@ snapshots: '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 - globby: 11.0.4 + globby: 11.1.0 read-yaml-file: 1.1.0 '@mdi/font@5.9.55': {} @@ -12293,6 +13343,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@npmcli/agent@4.0.2': + dependencies: + agent-base: 7.1.4 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + lru-cache: 11.5.1 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + '@npmcli/arborist@4.3.1': dependencies: '@isaacs/string-locale-compare': 1.1.0 @@ -12331,6 +13391,45 @@ snapshots: - bluebird - supports-color + '@npmcli/arborist@9.9.0': + dependencies: + '@gar/promise-retry': 1.0.3 + '@isaacs/string-locale-compare': 1.1.0 + '@npmcli/fs': 5.0.0 + '@npmcli/installed-package-contents': 4.0.0 + '@npmcli/map-workspaces': 5.0.3 + '@npmcli/metavuln-calculator': 9.0.3 + '@npmcli/name-from-folder': 4.0.0 + '@npmcli/node-gyp': 5.0.0 + '@npmcli/package-json': 7.0.5 + '@npmcli/query': 5.0.0 + '@npmcli/redact': 4.0.0 + '@npmcli/run-script': 10.0.4 + bin-links: 6.0.2 + cacache: 20.0.4 + common-ancestor-path: 2.0.0 + hosted-git-info: 9.0.3 + json-stringify-nice: 1.1.4 + lru-cache: 11.5.1 + minimatch: 10.2.5 + nopt: 9.0.0 + npm-install-checks: 8.0.0 + npm-package-arg: 13.0.2 + npm-pick-manifest: 11.0.3 + npm-registry-fetch: 19.1.1 + pacote: 21.5.1 + parse-conflict-json: 5.0.1 + proc-log: 6.1.0 + proggy: 4.0.0 + promise-all-reject-late: 1.0.1 + promise-call-limit: 3.0.2 + semver: 7.6.3 + ssri: 13.0.1 + treeverse: 3.0.0 + walk-up-path: 4.0.0 + transitivePeerDependencies: + - supports-color + '@npmcli/fs@1.1.1': dependencies: '@gar/promisify': 1.1.3 @@ -12345,6 +13444,10 @@ snapshots: dependencies: semver: 7.6.3 + '@npmcli/fs@5.0.0': + dependencies: + semver: 7.6.3 + '@npmcli/git@2.1.0': dependencies: '@npmcli/promise-spawn': 1.3.2 @@ -12358,11 +13461,27 @@ snapshots: transitivePeerDependencies: - bluebird + '@npmcli/git@7.0.2': + dependencies: + '@gar/promise-retry': 1.0.3 + '@npmcli/promise-spawn': 9.0.1 + ini: 6.0.0 + lru-cache: 11.5.1 + npm-pick-manifest: 11.0.3 + proc-log: 6.1.0 + semver: 7.6.3 + which: 6.0.1 + '@npmcli/installed-package-contents@1.0.7': dependencies: npm-bundled: 1.1.2 npm-normalize-package-bin: 1.0.1 + '@npmcli/installed-package-contents@4.0.0': + dependencies: + npm-bundled: 5.0.0 + npm-normalize-package-bin: 5.0.0 + '@npmcli/map-workspaces@2.0.4': dependencies: '@npmcli/name-from-folder': 1.0.1 @@ -12370,6 +13489,13 @@ snapshots: minimatch: 5.1.6 read-package-json-fast: 2.0.3 + '@npmcli/map-workspaces@5.0.3': + dependencies: + '@npmcli/name-from-folder': 4.0.0 + '@npmcli/package-json': 7.0.5 + glob: 13.0.6 + minimatch: 10.2.5 + '@npmcli/metavuln-calculator@2.0.0': dependencies: cacache: 15.3.0 @@ -12380,6 +13506,16 @@ snapshots: - bluebird - supports-color + '@npmcli/metavuln-calculator@9.0.3': + dependencies: + cacache: 20.0.4 + json-parse-even-better-errors: 5.0.0 + pacote: 21.5.1 + proc-log: 6.1.0 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + '@npmcli/move-file@1.1.2': dependencies: mkdirp: 1.0.4 @@ -12392,16 +13528,48 @@ snapshots: '@npmcli/name-from-folder@1.0.1': {} + '@npmcli/name-from-folder@4.0.0': {} + '@npmcli/node-gyp@1.0.3': {} + '@npmcli/node-gyp@5.0.0': {} + '@npmcli/package-json@1.0.1': dependencies: json-parse-even-better-errors: 2.3.1 + '@npmcli/package-json@7.0.5': + dependencies: + '@npmcli/git': 7.0.2 + glob: 13.0.6 + hosted-git-info: 9.0.3 + json-parse-even-better-errors: 5.0.0 + proc-log: 6.1.0 + semver: 7.6.3 + spdx-expression-parse: 4.0.0 + '@npmcli/promise-spawn@1.3.2': dependencies: infer-owner: 1.0.4 + '@npmcli/promise-spawn@9.0.1': + dependencies: + which: 6.0.1 + + '@npmcli/query@5.0.0': + dependencies: + postcss-selector-parser: 7.1.4 + + '@npmcli/redact@4.0.0': {} + + '@npmcli/run-script@10.0.4': + dependencies: + '@npmcli/node-gyp': 5.0.0 + '@npmcli/package-json': 7.0.5 + '@npmcli/promise-spawn': 9.0.1 + node-gyp: 12.4.0 + proc-log: 6.1.0 + '@npmcli/run-script@2.0.0': dependencies: '@npmcli/node-gyp': 1.0.3 @@ -12604,6 +13772,18 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true + '@pnpm/config.env-replace@1.1.0': {} + + '@pnpm/network.ca-file@1.0.2': + dependencies: + graceful-fs: 4.2.10 + + '@pnpm/npm-conf@3.0.3': + dependencies: + '@pnpm/config.env-replace': 1.1.0 + '@pnpm/network.ca-file': 1.0.2 + config-chain: 1.1.13 + '@sap-devx/feature-toggle-node@2.0.3': dependencies: node-cache: 5.1.2 @@ -12793,6 +13973,8 @@ snapshots: '@sap_oss/task_contrib_types@3.1.0': {} + '@sec-ant/readable-stream@0.4.1': {} + '@secretlint/config-creator@10.1.1': dependencies: '@secretlint/types': 10.1.1 @@ -12867,6 +14049,38 @@ snapshots: '@secretlint/types@10.1.1': {} + '@sigstore/bundle@4.0.0': + dependencies: + '@sigstore/protobuf-specs': 0.5.1 + + '@sigstore/core@3.2.1': {} + + '@sigstore/protobuf-specs@0.5.1': {} + + '@sigstore/sign@4.1.1': + dependencies: + '@gar/promise-retry': 1.0.3 + '@sigstore/bundle': 4.0.0 + '@sigstore/core': 3.2.1 + '@sigstore/protobuf-specs': 0.5.1 + make-fetch-happen: 15.0.6 + proc-log: 6.1.0 + transitivePeerDependencies: + - supports-color + + '@sigstore/tuf@4.0.2': + dependencies: + '@sigstore/protobuf-specs': 0.5.1 + tuf-js: 4.1.0 + transitivePeerDependencies: + - supports-color + + '@sigstore/verify@3.1.1': + dependencies: + '@sigstore/bundle': 4.0.0 + '@sigstore/core': 3.2.1 + '@sigstore/protobuf-specs': 0.5.1 + '@simple-git/args-pathspec@1.0.3': {} '@simple-git/argv-parser@1.1.1': @@ -12877,6 +14091,8 @@ snapshots: '@sindresorhus/merge-streams@2.3.0': {} + '@sindresorhus/merge-streams@4.0.0': {} + '@sinonjs/commons@1.8.6': dependencies: type-detect: 4.0.8 @@ -12961,6 +14177,13 @@ snapshots: '@tsconfig/node16@1.0.4': {} + '@tufjs/canonical-json@2.0.0': {} + + '@tufjs/models@4.1.0': + dependencies: + '@tufjs/canonical-json': 2.0.0 + minimatch: 10.2.5 + '@types/aws-lambda@8.10.147': {} '@types/babel__core@7.20.5': @@ -13129,20 +14352,14 @@ snapshots: dependencies: '@types/node': 16.11.10 + '@types/lodash-es@4.17.12': + dependencies: + '@types/lodash': 4.14.202 + '@types/lodash@4.14.177': {} '@types/lodash@4.14.202': {} - '@types/mem-fs-editor@10.0.1(@types/node@16.11.10)(mem-fs@4.1.4)': - dependencies: - mem-fs-editor: 12.0.4(@types/node@16.11.10)(mem-fs@4.1.4) - transitivePeerDependencies: - - '@types/node' - - bare-abort-controller - - mem-fs - - react-native-b4a - - supports-color - '@types/mem-fs@2.2.0': dependencies: mem-fs: 4.1.4 @@ -13303,7 +14520,7 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@types/yeoman-environment@2.10.11(mem-fs@4.1.4)': + '@types/yeoman-environment@2.10.11(@yeoman/types@1.11.1(@types/node@16.11.10)(@yeoman/adapter@4.0.2(@types/node@16.11.10))(mem-fs@4.1.4))(mem-fs@4.1.4)': dependencies: '@types/diff': 8.0.0 '@types/inquirer': 8.2.13 @@ -13311,27 +14528,24 @@ snapshots: '@types/node': 16.11.10 '@types/text-table': 0.2.5 '@types/vinyl': 2.0.12 - '@types/yeoman-generator': 5.2.14(mem-fs@4.1.4) + '@types/yeoman-generator': 6.0.0(@types/node@16.11.10)(@yeoman/types@1.11.1(@types/node@16.11.10)(@yeoman/adapter@4.0.2(@types/node@16.11.10))(mem-fs@4.1.4))(mem-fs@4.1.4) chalk: 4.1.2 commander: 9.5.0 execa: 5.1.1 rxjs: 6.6.7 transitivePeerDependencies: + - '@yeoman/types' - bare-abort-controller - mem-fs - react-native-b4a - supports-color - '@types/yeoman-generator@5.2.14(mem-fs@4.1.4)': + '@types/yeoman-generator@6.0.0(@types/node@16.11.10)(@yeoman/types@1.11.1(@types/node@16.11.10)(@yeoman/adapter@4.0.2(@types/node@16.11.10))(mem-fs@4.1.4))(mem-fs@4.1.4)': dependencies: - '@types/debug': 4.1.13 - '@types/ejs': 3.1.5 - '@types/inquirer': 8.2.13 - '@types/mem-fs-editor': 10.0.1(@types/node@16.11.10)(mem-fs@4.1.4) - '@types/node': 16.11.10 - '@types/yeoman-environment': 2.10.11(mem-fs@4.1.4) - rxjs: 6.6.7 + yeoman-generator: 8.2.2(@types/node@16.11.10)(@yeoman/types@1.11.1(@types/node@16.11.10)(@yeoman/adapter@4.0.2(@types/node@16.11.10))(mem-fs@4.1.4))(mem-fs@4.1.4) transitivePeerDependencies: + - '@types/node' + - '@yeoman/types' - bare-abort-controller - mem-fs - react-native-b4a @@ -13817,6 +15031,76 @@ snapshots: '@xtuc/long@4.2.2': {} + '@yeoman/adapter@4.0.2(@types/node@14.18.63)': + dependencies: + '@inquirer/core': 11.2.1(@types/node@14.18.63) + '@inquirer/prompts': 8.5.2(@types/node@14.18.63) + chalk: 5.6.2 + inquirer: 13.4.3(@types/node@14.18.63) + log-symbols: 7.0.1 + ora: 9.4.1 + p-queue: 9.3.1 + text-table: 0.2.0 + transitivePeerDependencies: + - '@types/node' + + '@yeoman/adapter@4.0.2(@types/node@16.11.10)': + dependencies: + '@inquirer/core': 11.2.1(@types/node@16.11.10) + '@inquirer/prompts': 8.5.2(@types/node@16.11.10) + chalk: 5.6.2 + inquirer: 13.4.3(@types/node@16.11.10) + log-symbols: 7.0.1 + ora: 9.4.1 + p-queue: 9.3.1 + text-table: 0.2.0 + transitivePeerDependencies: + - '@types/node' + optional: true + + '@yeoman/conflicter@4.1.0(@types/node@14.18.63)(@yeoman/types@1.11.1(@types/node@14.18.63)(@yeoman/adapter@4.0.2(@types/node@14.18.63))(mem-fs@4.1.4))(mem-fs@4.1.4)': + dependencies: + '@types/node': 14.18.63 + '@yeoman/transform': 2.1.2(@types/node@14.18.63) + '@yeoman/types': 1.11.1(@types/node@14.18.63)(@yeoman/adapter@4.0.2(@types/node@14.18.63))(mem-fs@4.1.4) + binary-extensions: 3.1.0 + cli-table: 0.3.11 + dateformat: 5.0.3 + diff: 9.0.0 + isbinaryfile: 5.0.7 + mem-fs: 4.1.4 + mem-fs-editor: 12.0.4(@types/node@14.18.63)(mem-fs@4.1.4) + minimatch: 10.2.5 + p-transform: 5.0.1 + pretty-bytes: 7.1.0 + slash: 5.1.0 + textextensions: 6.11.0 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + - supports-color + + '@yeoman/namespace@2.1.0': {} + + '@yeoman/transform@2.1.2(@types/node@14.18.63)': + dependencies: + '@types/node': 14.18.63 + minimatch: 9.0.9 + + '@yeoman/types@1.11.1(@types/node@14.18.63)(@yeoman/adapter@4.0.2(@types/node@14.18.63))(mem-fs@4.1.4)': + dependencies: + '@types/node': 14.18.63 + optionalDependencies: + '@yeoman/adapter': 4.0.2(@types/node@14.18.63) + mem-fs: 4.1.4 + + '@yeoman/types@1.11.1(@types/node@16.11.10)(@yeoman/adapter@4.0.2(@types/node@16.11.10))(mem-fs@4.1.4)': + dependencies: + '@types/node': 16.11.10 + optionalDependencies: + '@yeoman/adapter': 4.0.2(@types/node@16.11.10) + mem-fs: 4.1.4 + JSONStream@1.3.5: dependencies: jsonparse: 1.3.1 @@ -13828,6 +15112,8 @@ snapshots: abbrev@2.0.0: {} + abbrev@4.0.0: {} + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 @@ -13944,8 +15230,6 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.1.0: {} - ansi-regex@6.2.2: {} ansi-styles@2.2.1: {} @@ -14102,6 +15386,8 @@ snapshots: arrify@2.0.1: {} + arrify@3.0.0: {} + asap@2.0.6: {} asn1@0.2.6: @@ -14303,8 +15589,18 @@ snapshots: rimraf: 3.0.2 write-file-atomic: 4.0.2 + bin-links@6.0.2: + dependencies: + cmd-shim: 8.0.0 + npm-normalize-package-bin: 5.0.0 + proc-log: 6.1.0 + read-cmd-shim: 6.0.0 + write-file-atomic: 7.0.1 + binary-extensions@2.3.0: {} + binary-extensions@3.1.0: {} + binary@0.3.0: dependencies: buffers: 0.1.1 @@ -14522,6 +15818,19 @@ snapshots: tar: 6.2.1 unique-filename: 3.0.0 + cacache@20.0.4: + dependencies: + '@npmcli/fs': 5.0.0 + fs-minipass: 3.0.3 + glob: 13.0.6 + lru-cache: 11.5.1 + minipass: 7.1.3 + minipass-collect: 2.0.1 + minipass-flush: 1.0.7 + minipass-pipeline: 1.2.4 + p-map: 7.0.3 + ssri: 13.0.1 + cache-base@1.0.1: dependencies: collection-visit: 1.0.0 @@ -14651,6 +15960,8 @@ snapshots: chalk@5.3.0: {} + chalk@5.6.2: {} + char-regex@1.0.2: {} chardet@0.7.0: {} @@ -14719,6 +16030,8 @@ snapshots: chownr@2.0.0: {} + chownr@3.0.0: {} + chrome-trace-event@1.0.3: {} ci-info@3.9.0: {} @@ -14738,8 +16051,14 @@ snapshots: dependencies: restore-cursor: 3.1.0 + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + cli-spinners@2.9.2: {} + cli-spinners@3.4.0: {} + cli-table@0.3.11: dependencies: colors: 1.0.3 @@ -14751,6 +16070,8 @@ snapshots: cli-width@3.0.0: {} + cli-width@4.1.0: {} + cliui@6.0.0: dependencies: string-width: 4.2.3 @@ -14799,6 +16120,8 @@ snapshots: dependencies: mkdirp-infer-owner: 2.0.0 + cmd-shim@8.0.0: {} + co@4.6.0: {} cockatiel@3.2.1: {} @@ -14853,6 +16176,8 @@ snapshots: commander@12.1.0: {} + commander@14.0.3: {} + commander@2.20.3: {} commander@6.2.1: {} @@ -14881,6 +16206,8 @@ snapshots: common-ancestor-path@1.0.1: {} + common-ancestor-path@2.0.0: {} + commondir@1.0.1: {} compare-func@2.0.0: @@ -14964,7 +16291,7 @@ snapshots: serialize-javascript: 6.0.0 webpack: 5.106.2(webpack-cli@6.0.1(webpack@5.104.1)) - copy-webpack-plugin@12.0.2(webpack@5.106.2): + copy-webpack-plugin@12.0.2(webpack@5.106.2(webpack-cli@6.0.1(webpack@5.104.1))): dependencies: fast-glob: 3.3.3 glob-parent: 6.0.2 @@ -14972,7 +16299,7 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.3.3 serialize-javascript: 6.0.2 - webpack: 5.106.2(webpack-cli@5.1.4) + webpack: 5.106.2(webpack-cli@6.0.1(webpack@5.104.1)) copy-webpack-plugin@9.0.1(webpack@5.106.2(webpack-cli@6.0.1(webpack@5.104.1))): dependencies: @@ -15218,6 +16545,8 @@ snapshots: dateformat@4.6.3: {} + dateformat@5.0.3: {} + debug@2.6.9: dependencies: ms: 2.0.0 @@ -15613,6 +16942,8 @@ snapshots: env-paths@2.2.1: {} + env-paths@3.0.0: {} + envinfo@7.14.0: {} err-code@2.0.3: {} @@ -16030,6 +17361,8 @@ snapshots: eventemitter3@4.0.7: {} + eventemitter3@5.0.4: {} + events-universal@1.0.1: dependencies: bare-events: 2.8.3 @@ -16070,9 +17403,24 @@ snapshots: merge-stream: 2.0.0 npm-run-path: 4.0.1 onetime: 5.1.2 - signal-exit: 3.0.6 + signal-exit: 3.0.7 strip-final-newline: 2.0.0 + execa@9.6.1: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + cross-spawn: 7.0.6 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.1 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.3.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + yoctocolors: 2.1.2 + exit@0.1.2: {} expand-brackets@2.1.4: @@ -16105,6 +17453,8 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 + exponential-backoff@3.1.3: {} + express@4.22.1: dependencies: accepts: 1.3.8 @@ -16239,8 +17589,18 @@ snapshots: fast-safe-stringify@2.1.1: {} + fast-string-truncated-width@3.0.3: {} + + fast-string-width@3.0.2: + dependencies: + fast-string-truncated-width: 3.0.3 + fast-uri@3.1.2: {} + fast-wrap-ansi@0.2.2: + dependencies: + fast-string-width: 3.0.2 + fastest-levenshtein@1.0.12: {} fastq@1.13.0: @@ -16265,6 +17625,10 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 + figures@6.1.0: + dependencies: + is-unicode-supported: 2.1.0 + file-entry-cache@6.0.1: dependencies: flat-cache: 3.0.4 @@ -16323,6 +17687,8 @@ snapshots: make-dir: 3.1.0 pkg-dir: 4.2.0 + find-up-simple@1.0.1: {} + find-up@1.1.2: dependencies: path-exists: 2.1.0 @@ -16368,6 +17734,15 @@ snapshots: flatted@3.4.2: {} + fly-import@1.0.0: + dependencies: + '@npmcli/arborist': 9.9.0 + env-paths: 3.0.0 + registry-auth-token: 5.1.1 + registry-url: 7.2.0 + transitivePeerDependencies: + - supports-color + fn.name@1.1.0: {} follow-redirects@1.15.11: {} @@ -16559,6 +17934,8 @@ snapshots: get-caller-file@2.0.5: {} + get-east-asian-width@1.6.0: {} + get-func-name@2.0.2: {} get-intrinsic@1.2.4: @@ -16606,6 +17983,11 @@ snapshots: get-stream@6.0.1: {} + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 + get-symbol-description@1.1.0: dependencies: call-bound: 1.0.4 @@ -16728,15 +18110,6 @@ snapshots: define-properties: 1.2.1 gopd: 1.2.0 - globby@11.0.4: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.3 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 - globby@11.1.0: dependencies: array-union: 2.1.0 @@ -16763,6 +18136,15 @@ snapshots: slash: 5.1.0 unicorn-magic: 0.3.0 + globby@16.2.1: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + fast-glob: 3.3.3 + ignore: 7.0.5 + is-path-inside: 4.0.0 + slash: 5.1.0 + unicorn-magic: 0.4.0 + globby@8.0.2: dependencies: array-union: 1.0.2 @@ -16807,6 +18189,8 @@ snapshots: unzip-response: 2.0.1 url-parse-lax: 1.0.0 + graceful-fs@4.2.10: {} + graceful-fs@4.2.11: {} graceful-fs@4.2.8: {} @@ -16918,6 +18302,10 @@ snapshots: dependencies: lru-cache: 10.4.3 + hosted-git-info@9.0.3: + dependencies: + lru-cache: 11.5.1 + html-encoding-sniffer@2.0.1: dependencies: whatwg-encoding: 1.0.5 @@ -17048,6 +18436,8 @@ snapshots: human-signals@2.1.0: {} + human-signals@8.0.1: {} + humanize-ms@1.2.1: dependencies: ms: 2.1.3 @@ -17076,6 +18466,10 @@ snapshots: dependencies: minimatch: 3.1.2 + ignore-walk@8.0.0: + dependencies: + minimatch: 10.2.5 + ignore@3.3.10: optional: true @@ -17128,6 +18522,8 @@ snapshots: indent-string@4.0.0: {} + index-to-position@1.2.0: {} + infer-owner@1.0.4: {} inflight@1.0.6: @@ -17141,6 +18537,35 @@ snapshots: ini@4.1.1: {} + ini@5.0.0: {} + + ini@6.0.0: {} + + inquirer@13.4.3(@types/node@14.18.63): + dependencies: + '@inquirer/ansi': 2.0.7 + '@inquirer/core': 11.2.1(@types/node@14.18.63) + '@inquirer/prompts': 8.5.2(@types/node@14.18.63) + '@inquirer/type': 4.0.7(@types/node@14.18.63) + mute-stream: 3.0.0 + run-async: 4.0.6 + rxjs: 7.8.2 + optionalDependencies: + '@types/node': 14.18.63 + + inquirer@13.4.3(@types/node@16.11.10): + dependencies: + '@inquirer/ansi': 2.0.7 + '@inquirer/core': 11.2.1(@types/node@16.11.10) + '@inquirer/prompts': 8.5.2(@types/node@16.11.10) + '@inquirer/type': 4.0.7(@types/node@16.11.10) + mute-stream: 3.0.0 + run-async: 4.0.6 + rxjs: 7.8.2 + optionalDependencies: + '@types/node': 16.11.10 + optional: true + inquirer@7.3.3: dependencies: ansi-escapes: 4.3.2 @@ -17157,9 +18582,9 @@ snapshots: strip-ansi: 6.0.1 through: 2.3.8 - inquirer@8.2.7(@types/node@14.18.63): + inquirer@8.2.7(@types/node@16.11.10): dependencies: - '@inquirer/external-editor': 1.0.3(@types/node@14.18.63) + '@inquirer/external-editor': 1.0.3(@types/node@16.11.10) ansi-escapes: 4.3.2 chalk: 4.1.2 cli-cursor: 3.1.0 @@ -17307,6 +18732,8 @@ snapshots: is-interactive@1.0.0: {} + is-interactive@2.0.0: {} + is-lambda@1.0.1: {} is-map@2.0.3: {} @@ -17332,12 +18759,16 @@ snapshots: is-path-inside@3.0.3: {} + is-path-inside@4.0.0: {} + is-plain-obj@1.1.0: {} is-plain-obj@2.1.0: {} is-plain-obj@3.0.0: {} + is-plain-obj@4.1.0: {} + is-plain-object@2.0.4: dependencies: isobject: 3.0.1 @@ -17376,6 +18807,8 @@ snapshots: is-stream@2.0.1: {} + is-stream@4.0.1: {} + is-string@1.1.1: dependencies: call-bound: 1.0.4 @@ -17403,6 +18836,8 @@ snapshots: is-unicode-supported@0.1.0: {} + is-unicode-supported@2.1.0: {} + is-utf8@0.2.1: {} is-weakmap@2.0.2: {} @@ -17434,6 +18869,8 @@ snapshots: isexe@2.0.0: {} + isexe@4.0.0: {} + isobject@2.1.0: dependencies: isarray: 1.0.0 @@ -18497,6 +19934,8 @@ snapshots: json-parse-even-better-errors@3.0.2: {} + json-parse-even-better-errors@5.0.0: {} + json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} @@ -18513,10 +19952,6 @@ snapshots: dependencies: minimist: 1.2.8 - json5@2.2.0: - dependencies: - minimist: 1.2.8 - json5@2.2.3: {} jsonc-parser@3.0.0: {} @@ -18559,6 +19994,8 @@ snapshots: just-diff@5.2.0: {} + just-diff@6.0.2: {} + just-extend@6.2.0: {} jwa@1.4.2: @@ -18657,6 +20094,12 @@ snapshots: kuler@2.0.0: {} + ky@1.14.3: {} + + latest-version@9.0.0: + dependencies: + package-json: 10.0.1 + lazy-cache@2.0.2: dependencies: set-getter: 0.1.1 @@ -18770,7 +20213,7 @@ snapshots: dependencies: big.js: 5.2.2 emojis-list: 3.0.0 - json5: 2.2.0 + json5: 2.2.3 locate-path@3.0.0: dependencies: @@ -18789,6 +20232,12 @@ snapshots: dependencies: p-locate: 6.0.0 + locate-path@8.0.0: + dependencies: + p-locate: 6.0.0 + + lodash-es@4.18.1: {} + lodash.camelcase@4.3.0: {} lodash.flattendeep@4.4.0: {} @@ -18847,6 +20296,11 @@ snapshots: chalk: 4.1.2 is-unicode-supported: 0.1.0 + log-symbols@7.0.1: + dependencies: + is-unicode-supported: 2.1.0 + yoctocolors: 2.1.2 + log-update@4.0.0: dependencies: ansi-escapes: 4.3.2 @@ -18892,6 +20346,8 @@ snapshots: lru-cache@11.1.0: {} + lru-cache@11.5.1: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -18955,6 +20411,23 @@ snapshots: transitivePeerDependencies: - supports-color + make-fetch-happen@15.0.6: + dependencies: + '@gar/promise-retry': 1.0.3 + '@npmcli/agent': 4.0.2 + '@npmcli/redact': 4.0.0 + cacache: 20.0.4 + http-cache-semantics: 4.2.0 + minipass: 7.1.3 + minipass-fetch: 5.0.2 + minipass-flush: 1.0.7 + minipass-pipeline: 1.2.4 + negotiator: 1.0.0 + proc-log: 6.1.0 + ssri: 13.0.1 + transitivePeerDependencies: + - supports-color + make-fetch-happen@9.1.0: dependencies: agentkeepalive: 4.6.0 @@ -19028,6 +20501,30 @@ snapshots: media-typer@0.3.0: {} + mem-fs-editor@12.0.4(@types/node@14.18.63)(mem-fs@4.1.4): + dependencies: + '@types/ejs': 3.1.5 + '@types/picomatch': 4.0.3 + binaryextensions: 6.11.0 + commondir: 1.0.1 + debug: 4.4.3 + deep-extend: 0.6.0 + ejs: 5.0.2 + isbinaryfile: 5.0.7 + mem-fs: 4.1.4 + minimatch: 10.2.5 + multimatch: 8.0.0 + normalize-path: 3.0.0 + textextensions: 6.11.0 + tinyglobby: 0.2.17 + vinyl: 3.0.1 + optionalDependencies: + '@types/node': 14.18.63 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + - supports-color + mem-fs-editor@12.0.4(@types/node@16.11.10)(mem-fs@4.1.4): dependencies: '@types/ejs': 3.1.5 @@ -19182,7 +20679,7 @@ snapshots: micromatch@4.0.6: dependencies: braces: 3.0.3 - picomatch: 4.0.2 + picomatch: 4.0.4 micromatch@4.0.8: dependencies: @@ -19218,6 +20715,8 @@ snapshots: mimic-fn@2.1.0: {} + mimic-function@5.0.1: {} + mimic-response@3.1.0: optional: true @@ -19277,6 +20776,14 @@ snapshots: optionalDependencies: encoding: 0.1.13 + minipass-fetch@5.0.2: + dependencies: + minipass: 7.1.3 + minipass-sized: 2.0.0 + minizlib: 3.1.0 + optionalDependencies: + iconv-lite: 0.7.2 + minipass-flush@1.0.7: dependencies: minipass: 3.3.6 @@ -19294,6 +20801,10 @@ snapshots: dependencies: minipass: 3.3.6 + minipass-sized@2.0.0: + dependencies: + minipass: 7.1.3 + minipass@3.3.6: dependencies: yallist: 4.0.0 @@ -19309,6 +20820,10 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 + minizlib@3.1.0: + dependencies: + minipass: 7.1.3 + mixin-deep@1.3.2: dependencies: for-in: 1.0.2 @@ -19403,6 +20918,8 @@ snapshots: mute-stream@0.0.8: {} + mute-stream@3.0.0: {} + nanoid@3.3.12: {} nanomatch@1.2.13: @@ -19428,6 +20945,8 @@ snapshots: negotiator@0.6.3: {} + negotiator@1.0.0: {} + neo-async@2.6.2: {} next-tick@1.1.0: {} @@ -19472,6 +20991,19 @@ snapshots: node-gyp-build@4.8.4: {} + node-gyp@12.4.0: + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.3 + graceful-fs: 4.2.11 + nopt: 9.0.0 + proc-log: 6.1.0 + semver: 7.6.3 + tar: 7.5.19 + tinyglobby: 0.2.17 + undici: 6.27.0 + which: 6.0.1 + node-gyp@8.4.1: dependencies: env-paths: 2.2.1 @@ -19517,6 +21049,10 @@ snapshots: dependencies: abbrev: 2.0.0 + nopt@9.0.0: + dependencies: + abbrev: 4.0.0 + normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 @@ -19530,6 +21066,12 @@ snapshots: semver: 7.6.3 validate-npm-package-license: 3.0.4 + normalize-package-data@8.0.0: + dependencies: + hosted-git-info: 9.0.3 + semver: 7.6.3 + validate-npm-package-license: 3.0.4 + normalize-path@2.1.1: dependencies: remove-trailing-separator: 1.1.0 @@ -19553,14 +21095,24 @@ snapshots: dependencies: npm-normalize-package-bin: 1.0.1 + npm-bundled@5.0.0: + dependencies: + npm-normalize-package-bin: 5.0.0 + npm-install-checks@4.0.0: dependencies: semver: 7.6.3 + npm-install-checks@8.0.0: + dependencies: + semver: 7.6.3 + npm-normalize-package-bin@1.0.1: {} npm-normalize-package-bin@2.0.0: {} + npm-normalize-package-bin@5.0.0: {} + npm-package-arg@11.0.3: dependencies: hosted-git-info: 7.0.2 @@ -19568,12 +21120,24 @@ snapshots: semver: 7.6.3 validate-npm-package-name: 5.0.1 + npm-package-arg@13.0.2: + dependencies: + hosted-git-info: 9.0.3 + proc-log: 6.1.0 + semver: 7.6.3 + validate-npm-package-name: 7.0.2 + npm-package-arg@8.1.5: dependencies: hosted-git-info: 4.0.2 semver: 7.6.3 validate-npm-package-name: 3.0.0 + npm-packlist@10.0.4: + dependencies: + ignore-walk: 8.0.0 + proc-log: 6.1.0 + npm-packlist@3.0.0: dependencies: glob: 7.2.0 @@ -19581,6 +21145,13 @@ snapshots: npm-bundled: 1.1.2 npm-normalize-package-bin: 1.0.1 + npm-pick-manifest@11.0.3: + dependencies: + npm-install-checks: 8.0.0 + npm-normalize-package-bin: 5.0.0 + npm-package-arg: 13.0.2 + semver: 7.6.3 + npm-pick-manifest@6.1.1: dependencies: npm-install-checks: 4.0.0 @@ -19612,6 +21183,19 @@ snapshots: transitivePeerDependencies: - supports-color + npm-registry-fetch@19.1.1: + dependencies: + '@npmcli/redact': 4.0.0 + jsonparse: 1.3.1 + make-fetch-happen: 15.0.6 + minipass: 7.1.3 + minipass-fetch: 5.0.2 + minizlib: 3.1.0 + npm-package-arg: 13.0.2 + proc-log: 6.1.0 + transitivePeerDependencies: + - supports-color + npm-run-all2@5.0.2: dependencies: ansi-styles: 5.2.0 @@ -19630,6 +21214,11 @@ snapshots: dependencies: path-key: 3.1.1 + npm-run-path@6.0.0: + dependencies: + path-key: 4.0.0 + unicorn-magic: 0.3.0 + npmlog@5.0.1: dependencies: are-we-there-yet: 2.0.0 @@ -19650,6 +21239,12 @@ snapshots: null-check@1.0.0: {} + null-loader@4.0.1(webpack@5.106.2): + dependencies: + loader-utils: 2.0.4 + schema-utils: 3.1.1 + webpack: 5.106.2(webpack-cli@5.1.4) + nwsapi@2.2.23: {} nyc@15.1.0: @@ -19766,6 +21361,10 @@ snapshots: dependencies: mimic-fn: 2.1.0 + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + open@10.1.2: dependencies: default-browser: 5.2.1 @@ -19807,6 +21406,17 @@ snapshots: strip-ansi: 6.0.0 wcwidth: 1.0.1 + ora@9.4.1: + dependencies: + chalk: 5.6.2 + cli-cursor: 5.0.0 + cli-spinners: 3.4.0 + is-interactive: 2.0.0 + is-unicode-supported: 2.1.0 + log-symbols: 7.0.1 + stdin-discarder: 0.3.2 + string-width: 8.2.1 + os-homedir@1.0.2: {} os-tmpdir@1.0.2: {} @@ -19877,10 +21487,24 @@ snapshots: eventemitter3: 4.0.7 p-timeout: 3.2.0 + p-queue@8.1.1: + dependencies: + eventemitter3: 5.0.4 + p-timeout: 6.1.4 + + p-queue@9.3.1: + dependencies: + eventemitter3: 5.0.4 + p-timeout: 7.0.1 + p-timeout@3.2.0: dependencies: p-finally: 1.0.0 + p-timeout@6.1.4: {} + + p-timeout@7.0.1: {} + p-transform@1.3.0: dependencies: debug: 4.4.3 @@ -19888,6 +21512,11 @@ snapshots: transitivePeerDependencies: - supports-color + p-transform@5.0.1: + dependencies: + '@types/node': 25.9.1 + p-queue: 8.1.1 + p-try@2.2.0: {} p-wait-for@3.2.0: @@ -19903,6 +21532,13 @@ snapshots: package-json-from-dist@1.0.1: {} + package-json@10.0.1: + dependencies: + ky: 1.14.3 + registry-auth-token: 5.1.1 + registry-url: 6.0.1 + semver: 7.6.3 + package-manager-detector@0.2.8: {} pacote@12.0.3: @@ -19930,6 +21566,28 @@ snapshots: - bluebird - supports-color + pacote@21.5.1: + dependencies: + '@gar/promise-retry': 1.0.3 + '@npmcli/git': 7.0.2 + '@npmcli/installed-package-contents': 4.0.0 + '@npmcli/package-json': 7.0.5 + '@npmcli/promise-spawn': 9.0.1 + '@npmcli/run-script': 10.0.4 + cacache: 20.0.4 + fs-minipass: 3.0.3 + minipass: 7.1.3 + npm-package-arg: 13.0.2 + npm-packlist: 10.0.4 + npm-pick-manifest: 11.0.3 + npm-registry-fetch: 19.1.1 + proc-log: 6.1.0 + sigstore: 4.1.1 + ssri: 13.0.1 + tar: 7.5.19 + transitivePeerDependencies: + - supports-color + paged-request@2.0.2(debug@3.2.7): dependencies: axios: 0.21.4(debug@3.2.7) @@ -19947,6 +21605,12 @@ snapshots: just-diff: 5.2.0 just-diff-apply: 5.5.0 + parse-conflict-json@5.0.1: + dependencies: + json-parse-even-better-errors: 5.0.0 + just-diff: 6.0.2 + just-diff-apply: 5.5.0 + parse-json@2.2.0: dependencies: error-ex: 1.3.2 @@ -19966,6 +21630,14 @@ snapshots: lines-and-columns: 2.0.4 type-fest: 3.13.1 + parse-json@8.3.0: + dependencies: + '@babel/code-frame': 7.29.7 + index-to-position: 1.2.0 + type-fest: 4.41.0 + + parse-ms@4.0.0: {} + parse-semver@1.1.1: dependencies: semver: 5.7.1 @@ -20011,6 +21683,8 @@ snapshots: path-key@3.1.1: {} + path-key@4.0.0: {} + path-parse@1.0.7: {} path-scurry@1.11.1: @@ -20058,8 +21732,6 @@ snapshots: picomatch@2.3.2: {} - picomatch@4.0.2: {} - picomatch@4.0.4: {} pidtree@0.5.0: {} @@ -20099,6 +21771,11 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 + postcss-selector-parser@7.1.4: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + postcss@8.5.15: dependencies: nanoid: 3.3.12 @@ -20140,6 +21817,8 @@ snapshots: pretty-bytes@5.6.0: {} + pretty-bytes@7.1.0: {} + pretty-format@27.5.1: dependencies: ansi-regex: 5.0.1 @@ -20152,6 +21831,10 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 + pretty-ms@9.3.0: + dependencies: + parse-ms: 4.0.0 + pretty@2.0.0: dependencies: condense-newlines: 0.2.1 @@ -20164,6 +21847,8 @@ snapshots: proc-log@4.2.0: {} + proc-log@6.1.0: {} + process-nextick-args@2.0.1: {} process-on-spawn@1.0.0: @@ -20172,10 +21857,14 @@ snapshots: process@0.11.10: {} + proggy@4.0.0: {} + promise-all-reject-late@1.0.1: {} promise-call-limit@1.0.2: {} + promise-call-limit@3.0.2: {} + promise-inflight@1.0.1: {} promise-retry@2.0.1: @@ -20280,7 +21969,6 @@ snapshots: ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 - optional: true react-is@17.0.2: {} @@ -20293,11 +21981,19 @@ snapshots: read-cmd-shim@3.0.1: {} + read-cmd-shim@6.0.0: {} + read-package-json-fast@2.0.3: dependencies: json-parse-even-better-errors: 2.3.1 npm-normalize-package-bin: 1.0.1 + read-package-up@12.0.0: + dependencies: + find-up-simple: 1.0.1 + read-pkg: 10.1.0 + type-fest: 5.8.0 + read-pkg-up@1.0.1: dependencies: find-up: 1.1.2 @@ -20314,6 +22010,14 @@ snapshots: normalize-package-data: 2.5.0 path-type: 1.1.0 + read-pkg@10.1.0: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 8.0.0 + parse-json: 8.3.0 + type-fest: 5.8.0 + unicorn-magic: 0.4.0 + read-pkg@5.2.0: dependencies: '@types/normalize-package-data': 2.4.4 @@ -20429,6 +22133,19 @@ snapshots: unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.2.1 + registry-auth-token@5.1.1: + dependencies: + '@pnpm/npm-conf': 3.0.3 + + registry-url@6.0.1: + dependencies: + rc: 1.2.8 + + registry-url@7.2.0: + dependencies: + find-up-simple: 1.0.1 + ini: 5.0.0 + regjsgen@0.8.0: {} regjsparser@0.13.1: @@ -20537,6 +22254,11 @@ snapshots: onetime: 5.1.2 signal-exit: 3.0.7 + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + ret@0.1.15: {} retry@0.12.0: {} @@ -20574,6 +22296,8 @@ snapshots: run-async@2.4.1: {} + run-async@4.0.6: {} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -20643,7 +22367,7 @@ snapshots: schema-utils@3.1.1: dependencies: - '@types/json-schema': 7.0.9 + '@types/json-schema': 7.0.15 ajv: 6.15.0 ajv-keywords: 3.5.2(ajv@6.15.0) @@ -20902,6 +22626,17 @@ snapshots: signal-exit@4.1.0: {} + sigstore@4.1.1: + dependencies: + '@sigstore/bundle': 4.0.0 + '@sigstore/core': 3.2.1 + '@sigstore/protobuf-specs': 0.5.1 + '@sigstore/sign': 4.1.1 + '@sigstore/tuf': 4.0.2 + '@sigstore/verify': 3.1.1 + transitivePeerDependencies: + - supports-color + simple-concat@1.0.1: optional: true @@ -21044,6 +22779,10 @@ snapshots: dependencies: lodash: 4.18.1 + sort-keys@6.0.1: + dependencies: + is-plain-obj: 4.1.0 + source-map-js@1.2.1: {} source-map-resolve@0.5.3: @@ -21105,13 +22844,22 @@ snapshots: spdx-exceptions@2.3.0: {} + spdx-exceptions@2.5.0: {} + spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.11 + spdx-expression-parse@4.0.0: + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.11 + spdx-license-ids@3.0.11: {} + spdx-license-ids@3.0.23: {} + split-string@3.1.0: dependencies: extend-shallow: 3.0.2 @@ -21138,6 +22886,10 @@ snapshots: dependencies: minipass: 7.1.2 + ssri@13.0.1: + dependencies: + minipass: 7.1.3 + ssri@8.0.1: dependencies: minipass: 3.3.6 @@ -21182,6 +22934,8 @@ snapshots: statuses@2.0.2: {} + stdin-discarder@0.3.2: {} + stop-iteration-iterator@1.1.0: dependencies: es-errors: 1.3.0 @@ -21247,6 +23001,11 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.2.0 + string-width@8.2.1: + dependencies: + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 + string.prototype.trim@1.2.10: dependencies: call-bind: 1.0.9 @@ -21301,10 +23060,6 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.1.0 - strip-ansi@7.2.0: dependencies: ansi-regex: 6.2.2 @@ -21339,6 +23094,8 @@ snapshots: strip-final-newline@2.0.0: {} + strip-final-newline@4.0.0: {} + strip-indent@1.0.1: dependencies: get-stdin: 4.0.1 @@ -21388,6 +23145,8 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 + tagged-tag@1.0.0: {} + tapable@1.1.3: {} tapable@2.3.3: {} @@ -21418,6 +23177,14 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 + tar@7.5.19: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.3 + minizlib: 3.1.0 + yallist: 5.0.0 + teex@1.0.1: dependencies: streamx: 2.25.0 @@ -21590,6 +23357,8 @@ snapshots: treeverse@1.0.4: {} + treeverse@3.0.0: {} + trim-newlines@1.0.0: {} triple-beam@1.3.0: {} @@ -21645,14 +23414,15 @@ snapshots: typescript: 5.7.3 webpack: 5.106.2(webpack-cli@6.0.1(webpack@5.104.1)) - ts-loader@9.4.2(typescript@5.7.3)(webpack@5.106.2): + ts-loader@9.6.2(loader-utils@2.0.4)(typescript@5.7.3)(webpack@5.106.2): dependencies: chalk: 4.1.2 - enhanced-resolve: 5.21.1 - micromatch: 4.0.8 - semver: 7.6.3 + picomatch: 4.0.4 + source-map: 0.7.6 typescript: 5.7.3 webpack: 5.106.2(webpack-cli@5.1.4) + optionalDependencies: + loader-utils: 2.0.4 ts-node@10.9.2(@types/node@14.18.63)(typescript@5.7.3): dependencies: @@ -21730,6 +23500,14 @@ snapshots: tslib@2.8.1: {} + tuf-js@4.1.0: + dependencies: + '@tufjs/models': 4.1.0 + debug: 4.4.3 + make-fetch-happen: 15.0.6 + transitivePeerDependencies: + - supports-color + tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 @@ -21766,6 +23544,10 @@ snapshots: type-fest@4.41.0: {} + type-fest@5.8.0: + dependencies: + tagged-tag: 1.0.0 + type-is@1.6.18: dependencies: media-typer: 0.3.0 @@ -21844,6 +23626,8 @@ snapshots: undici-types@7.24.6: {} + undici@6.27.0: {} + undici@7.25.0: {} unicode-canonical-property-names-ecmascript@2.0.1: {} @@ -21861,6 +23645,8 @@ snapshots: unicorn-magic@0.3.0: {} + unicorn-magic@0.4.0: {} + union-value@1.0.1: dependencies: arr-union: 3.1.0 @@ -21914,6 +23700,8 @@ snapshots: untildify@4.0.0: {} + untildify@6.0.0: {} + unzip-response@2.0.1: {} unzipper@0.10.14: @@ -22002,6 +23790,8 @@ snapshots: validate-npm-package-name@5.0.1: {} + validate-npm-package-name@7.0.2: {} + vary@1.1.2: {} verror@1.10.0: @@ -22163,6 +23953,8 @@ snapshots: walk-up-path@1.0.0: {} + walk-up-path@4.0.0: {} + walker@1.0.8: dependencies: makeerror: 1.0.12 @@ -22428,6 +24220,11 @@ snapshots: which-module@2.0.0: {} + which-package-manager@1.0.1: + dependencies: + find-up: 7.0.0 + micromatch: 4.0.8 + which-pm@2.2.0: dependencies: load-yaml-file: 0.2.0 @@ -22451,6 +24248,10 @@ snapshots: dependencies: isexe: 2.0.0 + which@6.0.1: + dependencies: + isexe: 4.0.0 + wide-align@1.1.5: dependencies: string-width: 4.2.3 @@ -22567,6 +24368,10 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 3.0.7 + write-file-atomic@7.0.1: + dependencies: + signal-exit: 4.1.0 + ws@7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10): optionalDependencies: bufferutil: 4.1.0 @@ -22624,6 +24429,8 @@ snapshots: yallist@4.0.0: {} + yallist@5.0.0: {} + yaml@1.10.2: {} yargs-parser@18.1.3: @@ -22711,7 +24518,7 @@ snapshots: - supports-color optional: true - yeoman-environment@3.19.3(@types/node@14.18.63): + yeoman-environment@3.19.3(@types/node@16.11.10): dependencies: '@npmcli/arborist': 4.3.1 are-we-there-yet: 2.0.0 @@ -22729,7 +24536,7 @@ snapshots: find-up: 5.0.0 globby: 11.1.0 grouped-queue: 2.1.0 - inquirer: 8.2.7(@types/node@14.18.63) + inquirer: 8.2.7(@types/node@16.11.10) is-scoped: 2.1.0 isbinaryfile: 4.0.10 lodash: 4.18.1 @@ -22755,6 +24562,35 @@ snapshots: - bluebird - supports-color + yeoman-environment@6.1.0(@types/node@14.18.63)(@yeoman/adapter@4.0.2(@types/node@14.18.63))(@yeoman/types@1.11.1(@types/node@14.18.63)(@yeoman/adapter@4.0.2(@types/node@14.18.63))(mem-fs@4.1.4))(mem-fs@4.1.4): + dependencies: + '@yeoman/adapter': 4.0.2(@types/node@14.18.63) + '@yeoman/conflicter': 4.1.0(@types/node@14.18.63)(@yeoman/types@1.11.1(@types/node@14.18.63)(@yeoman/adapter@4.0.2(@types/node@14.18.63))(mem-fs@4.1.4))(mem-fs@4.1.4) + '@yeoman/namespace': 2.1.0 + '@yeoman/transform': 2.1.2(@types/node@14.18.63) + '@yeoman/types': 1.11.1(@types/node@14.18.63)(@yeoman/adapter@4.0.2(@types/node@14.18.63))(mem-fs@4.1.4) + arrify: 3.0.0 + chalk: 5.6.2 + commander: 14.0.3 + debug: 4.4.3 + execa: 9.6.1 + fly-import: 1.0.0 + globby: 16.2.1 + grouped-queue: 2.1.0 + locate-path: 8.0.0 + lodash-es: 4.18.1 + mem-fs: 4.1.4 + mem-fs-editor: 12.0.4(@types/node@14.18.63)(mem-fs@4.1.4) + semver: 7.8.1 + slash: 5.1.0 + untildify: 6.0.0 + which-package-manager: 1.0.1 + transitivePeerDependencies: + - '@types/node' + - bare-abort-controller + - react-native-b4a + - supports-color + yeoman-generator@4.13.0(encoding@0.1.13): dependencies: async: 2.6.4 @@ -22789,8 +24625,64 @@ snapshots: - encoding - supports-color + yeoman-generator@8.2.2(@types/node@14.18.63)(@yeoman/types@1.11.1(@types/node@14.18.63)(@yeoman/adapter@4.0.2(@types/node@14.18.63))(mem-fs@4.1.4))(mem-fs@4.1.4): + dependencies: + '@types/debug': 4.1.13 + '@types/lodash-es': 4.17.12 + '@yeoman/namespace': 2.1.0 + '@yeoman/types': 1.11.1(@types/node@14.18.63)(@yeoman/adapter@4.0.2(@types/node@14.18.63))(mem-fs@4.1.4) + chalk: 5.6.2 + debug: 4.4.3 + execa: 9.6.1 + latest-version: 9.0.0 + lodash-es: 4.18.1 + mem-fs: 4.1.4 + mem-fs-editor: 12.0.4(@types/node@14.18.63)(mem-fs@4.1.4) + minimist: 1.2.8 + read-package-up: 12.0.0 + semver: 7.8.1 + simple-git: 3.36.0 + sort-keys: 6.0.1 + text-table: 0.2.0 + type-fest: 5.8.0 + optionalDependencies: + '@types/node': 14.18.63 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + - supports-color + + yeoman-generator@8.2.2(@types/node@16.11.10)(@yeoman/types@1.11.1(@types/node@16.11.10)(@yeoman/adapter@4.0.2(@types/node@16.11.10))(mem-fs@4.1.4))(mem-fs@4.1.4): + dependencies: + '@types/debug': 4.1.13 + '@types/lodash-es': 4.17.12 + '@yeoman/namespace': 2.1.0 + '@yeoman/types': 1.11.1(@types/node@16.11.10)(@yeoman/adapter@4.0.2(@types/node@16.11.10))(mem-fs@4.1.4) + chalk: 5.6.2 + debug: 4.4.3 + execa: 9.6.1 + latest-version: 9.0.0 + lodash-es: 4.18.1 + mem-fs: 4.1.4 + mem-fs-editor: 12.0.4(@types/node@16.11.10)(mem-fs@4.1.4) + minimist: 1.2.8 + read-package-up: 12.0.0 + semver: 7.8.1 + simple-git: 3.36.0 + sort-keys: 6.0.1 + text-table: 0.2.0 + type-fest: 5.8.0 + optionalDependencies: + '@types/node': 16.11.10 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + - supports-color + yn@3.1.1: {} yocto-queue@0.1.0: {} yocto-queue@1.1.1: {} + + yoctocolors@2.1.2: {} diff --git a/projects/yeoman-ui/package.json b/projects/yeoman-ui/package.json new file mode 100644 index 00000000..226d52c9 --- /dev/null +++ b/projects/yeoman-ui/package.json @@ -0,0 +1,12 @@ +{ + "name": "@sap-devx/yeoman-ui-root", + "private": true, + "devDependencies": { + "null-loader": "4.0.1", + "string-replace-loader": "3.0.3", + "terser-webpack-plugin": "5.5.0", + "ts-loader": "9.6.2", + "webpack": "5.106.2", + "webpack-cli": "5.1.4" + } +} diff --git a/projects/yeoman-ui/packages/backend/.vscodeignore b/projects/yeoman-ui/packages/backend/.vscodeignore index 5daafaa8..2d410cdf 100644 --- a/projects/yeoman-ui/packages/backend/.vscodeignore +++ b/projects/yeoman-ui/packages/backend/.vscodeignore @@ -5,4 +5,5 @@ !Wizard_logo.png !dist/media !dist/*.js +!dist/*.cjs !resources diff --git a/projects/yeoman-ui/packages/backend/package.json b/projects/yeoman-ui/packages/backend/package.json index e575a881..88ec2501 100644 --- a/projects/yeoman-ui/packages/backend/package.json +++ b/projects/yeoman-ui/packages/backend/package.json @@ -195,8 +195,9 @@ "sudo-prompt": "9.2.1", "titleize": "2.1.0", "vscode-uri": "3.1.0", - "yeoman-environment": "3.19.3", - "yeoman-generator": "^4.13.0" + "yeoman-env-v3": "workspace:*", + "yeoman-environment": "6.1.0", + "yeoman-generator": "8.2.2" }, "devDependencies": { "@types/cheerio": "^0.22.31", @@ -209,21 +210,17 @@ "@types/vscode": "^1.50.0", "@types/webpack-env": "^1.16.2", "@types/ws": "^8.5.14", - "@types/yeoman-environment": "^2.10.3", - "@types/yeoman-generator": "5.2.14", "@vscode/vsce": "2.24.0", + "@yeoman/types": "1.11.1", "c8": "11.0.0", "copy-webpack-plugin": "^12.0.2", "cross-env": "^10.1.0", "lcov-result-merger": "5.0.0", "sinon": "^18.0.1", - "string-replace-loader": "3.0.3", + "spdx-exceptions": "^2.5.0", + "spdx-license-ids": "^3.0.20", "terser": "^5.48.0", - "terser-webpack-plugin": "^5.3.0", - "ts-loader": "^9.2.3", "ts-node": "^10.9.2", - "webpack": "^5.94.0", - "webpack-cli": "^5.1.4", "ws": "8.17.1" }, "extensionDependencies": [ diff --git a/projects/yeoman-ui/packages/backend/src/replayUtils.ts b/projects/yeoman-ui/packages/backend/src/replayUtils.ts index 197578af..b6fd3465 100644 --- a/projects/yeoman-ui/packages/backend/src/replayUtils.ts +++ b/projects/yeoman-ui/packages/backend/src/replayUtils.ts @@ -1,7 +1,7 @@ -import Environment from "yeoman-environment"; import type { IPrompt } from "@sap-devx/yeoman-ui-types"; import hash from "object-hash"; -import type TerminalAdapter from "yeoman-environment/lib/adapter"; +import type { Answers } from "inquirer"; +import type { YeomanUIQuestions } from "./utils/questionTypes.js"; export enum ReplayState { Replaying, @@ -11,9 +11,7 @@ export enum ReplayState { export class ReplayUtils { // assuming that order of questions is consistent - private static getQuestionsHash( - questions: TerminalAdapter.Questions - ): string { + private static getQuestionsHash(questions: YeomanUIQuestions): string { // we need exclude members that we manipulate in setDefault() below // we also need to exclude members set by custom event handlers // instead of blacklisting member, we whitelist them based on inquirer.js docs: @@ -35,16 +33,17 @@ export class ReplayUtils { return keyIndex < 0; }; - return hash(questions, { excludeKeys }); + return hash(questions as object, { excludeKeys }); } private static setDefaults( - questions: TerminalAdapter.Questions, - answers: Environment.Answers + questions: YeomanUIQuestions, + answers: Answers ): void { - for (const question of questions as any[]) { + const questionList = Array.isArray(questions) ? questions : [questions]; + for (const question of questionList) { const name = question["name"]; - const answer = answers[name]; + const answer = answers[name as string]; // __ForceDefault is required to let the frontend know to ignore all forms // of default values defined on the question, e.g. the checked property of @@ -57,9 +56,9 @@ export class ReplayUtils { } public isReplaying: boolean; - private readonly answersCache: Map; - private replayStack: Environment.Answers[]; - private replayQueue: Environment.Answers[]; + private readonly answersCache: Map; + private replayStack: Answers[]; + private replayQueue: Answers[]; private numOfSteps: number; private prompts: IPrompt[]; @@ -78,8 +77,8 @@ export class ReplayUtils { } public start( - questions: TerminalAdapter.Questions, - answers: Environment.Answers, + questions: YeomanUIQuestions, + answers: Answers, numOfSteps: number ): void { this._rememberAnswers(questions, answers); @@ -88,18 +87,18 @@ export class ReplayUtils { this.isReplaying = true; } - public stop(questions: TerminalAdapter.Questions): IPrompt[] { + public stop(questions: YeomanUIQuestions): IPrompt[] { const prompts = this.prompts; this.isReplaying = false; this.prompts = []; this.replayQueue = []; - const answers: Environment.Answers = this.replayStack.pop(); + const answers: Answers = this.replayStack.pop(); ReplayUtils.setDefaults(questions, answers); this.replayStack.splice(this.replayStack.length - this.numOfSteps + 1); return prompts; } - public next(promptCount: number, promptName: string): Environment.Answers { + public next(promptCount: number, promptName: string): Answers { if (promptCount > this.prompts.length) { const prompt: IPrompt = { name: promptName, @@ -115,17 +114,14 @@ export class ReplayUtils { this.prompts = prompts; } - public remember( - questions: TerminalAdapter.Questions, - answers: Environment.Answers - ): void { + public remember(questions: YeomanUIQuestions, answers: Answers): void { this._rememberAnswers(questions, answers); this.replayStack.push(answers); } - public recall(questions: TerminalAdapter.Questions): void { + public recall(questions: YeomanUIQuestions): void { const key: string = ReplayUtils.getQuestionsHash(questions); - const previousAnswers: Environment.Answers = this.answersCache.get(key); + const previousAnswers: Answers = this.answersCache.get(key); if (previousAnswers !== undefined) { ReplayUtils.setDefaults(questions, previousAnswers); } @@ -144,8 +140,8 @@ export class ReplayUtils { } private _rememberAnswers( - questions: TerminalAdapter.Questions, - answers: Environment.Answers + questions: YeomanUIQuestions, + answers: Answers ): void { const key: string = ReplayUtils.getQuestionsHash(questions); this.answersCache.set(key, answers); diff --git a/projects/yeoman-ui/packages/backend/src/utils/env.ts b/projects/yeoman-ui/packages/backend/src/utils/env.ts index f6341fde..4ec28ed2 100644 --- a/projects/yeoman-ui/packages/backend/src/utils/env.ts +++ b/projects/yeoman-ui/packages/backend/src/utils/env.ts @@ -1,14 +1,17 @@ import _ from "lodash"; -import { homedir } from "os"; -import * as path from "path"; -import { existsSync } from "fs"; -import { isWin32, NpmCommand } from "./npm.js"; +import { createRequire } from "module"; +import { NpmCommand } from "./npm.js"; import * as customLocation from "./customLocation.js"; -import Environment from "yeoman-environment"; -import type TerminalAdapter from "yeoman-environment/lib/adapter"; +import Environment, { createEnv } from "yeoman-environment"; +import type { + LookupGeneratorMeta, + BaseEnvironmentOptions, + InputOutputAdapter, +} from "@yeoman/types"; import type { IChildLogger } from "@vscode-logging/logger"; +import type * as YeomanEnvV3 from "yeoman-env-v3"; import { getClassLogger } from "../logger/logger-wrapper.js"; -import { createRequire } from "module"; +import { namespaceToName } from "./namespace.js"; const _require = createRequire(import.meta.url); @@ -16,12 +19,12 @@ const GENERATOR = "generator-"; const NAMESPACE = "namespace"; export type EnvGen = { - env: Environment; + env: Environment; gen: any; }; export type GeneratorData = { - generatorMeta: Environment.LookupGeneratorMeta; + generatorMeta: LookupGeneratorMeta; generatorPackageJson: any; }; @@ -41,8 +44,7 @@ export class GeneratorNotFoundError extends Error { class EnvUtil { private logger: IChildLogger; - private existingNpmPathsPromise: Promise; - private allInstalledGensMeta: Environment.LookupGeneratorMeta[]; + private allInstalledGensMeta: LookupGeneratorMeta[]; constructor() { try { @@ -50,57 +52,22 @@ class EnvUtil { } catch (e) { // nothing TODO : testing scope } - this.loadNpmPath(); } - public loadNpmPath(force = false) { - if (_.isNil(this.existingNpmPathsPromise) || force === true) { - this.existingNpmPathsPromise = this.getExistingNpmPath().then((paths) => { - this.logger?.debug("existing npm paths", { paths: paths.join(";") }); - return paths; - }); - } + public loadNpmPath(_force = false) { return this; } - private getEnvNpmPath(): Promise { - return new Promise((resolve) => { - setTimeout(() => { - // this operation takes up to 2 seconds - // it should be wrapped with setTimeout to provide promise like behaviour - resolve(this.createEnvInstance().getNpmPaths()); - }, 1); - }); - } - - private async getExistingNpmPath(): Promise { - const globalNpmPaths: string[] = await this.getEnvNpmPath(); - const userNpmPaths = homedir() - .split(path.sep) - .map((part, index, parts) => { - const resPath = path.join(...parts.slice(0, index + 1), "node_modules"); - return isWin32 ? resPath : path.join(path.sep, resPath); - }); - // uniq and existing only paths (global npm path is always added) - const paths: string[] = _.union(globalNpmPaths, userNpmPaths).filter( - (npmPath: string) => existsSync(npmPath) - ); - paths.push(await NpmCommand.getGlobalNodeModulesPath()); - - return _.uniq(paths); - } - private createEnvInstance( - args?: string | string[], - opts?: Environment.Options, - adapter?: TerminalAdapter - ): Environment { - return Environment.createEnv(args, opts, adapter); + opts?: BaseEnvironmentOptions, + adapter?: InputOutputAdapter + ): Environment { + return createEnv({ ...opts, ...(adapter ? { adapter } : {}) }); } private unloadGeneratorModules(genNamespace: string): void { let generatorName; - const genShortName = Environment.namespaceToName(genNamespace); + const genShortName = namespaceToName(genNamespace); if (genShortName.startsWith("@")) { const firstSlashIndex = genShortName.indexOf("/"); generatorName = `${GENERATOR}${genShortName.substring( @@ -119,24 +86,21 @@ class EnvUtil { } private lookupGensMeta( - options?: Environment.LookupOptions - ): Environment.LookupGeneratorMeta[] { + options?: Parameters[0] + ): Promise { return this.createEnvInstance().lookup(options); } - // returns installed generators meta from global and custom installation location - // custom installation generators have priority over global installed generators when names are identical - private async lookupAllGensMeta(): Promise< - Environment.LookupGeneratorMeta[] - > { - const globallyInstalledGensMeta = this.lookupGensMeta({ - npmPaths: await this.existingNpmPathsPromise, - }); + // Returns installed generators meta from global and custom installation location. + // Custom installation generators have priority over global installed generators + // when names are identical + private async lookupAllGensMeta(): Promise { + const globallyInstalledGensMeta = await this.lookupGensMeta(); const customNpmPath = customLocation.getNodeModulesPath(); const customInstalledGensMeta = _.isEmpty(customNpmPath) ? [] - : this.lookupGensMeta({ npmPaths: [customNpmPath] }); + : await this.lookupGensMeta({ npmPaths: [customNpmPath] }); const gensMeta = _.unionBy( customInstalledGensMeta, @@ -148,7 +112,7 @@ class EnvUtil { private async getGenMetadata( genNamespace: string - ): Promise { + ): Promise { this.allInstalledGensMeta = await this.lookupAllGensMeta(); const genMetadata = this.allInstalledGensMeta.find( @@ -164,13 +128,13 @@ class EnvUtil { } private genMainGensMeta( - gensMeta: Environment.LookupGeneratorMeta[] - ): Environment.LookupGeneratorMeta[] { + gensMeta: LookupGeneratorMeta[] + ): LookupGeneratorMeta[] { return gensMeta.filter((genMeta) => genMeta.namespace.endsWith(":app")); } private async getGensMetaByInstallationPath(): Promise< - Environment.LookupGeneratorMeta[] + LookupGeneratorMeta[] > { const npmInstallationPaths = [ customLocation.getNodeModulesPath() ?? @@ -181,7 +145,7 @@ class EnvUtil { private async getGeneratorsMeta( mainOnly = true - ): Promise { + ): Promise { this.allInstalledGensMeta = await this.lookupAllGensMeta(); return mainOnly ? this.genMainGensMeta(this.allInstalledGensMeta) @@ -189,8 +153,7 @@ class EnvUtil { } public async getAllGeneratorNamespaces(): Promise { - const gensMeta: Environment.LookupGeneratorMeta[] = - await this.getGeneratorsMeta(false); + const gensMeta: LookupGeneratorMeta[] = await this.getGeneratorsMeta(false); return _.map(gensMeta, (genMeta) => genMeta.namespace); } @@ -199,30 +162,87 @@ class EnvUtil { options: any, adapter: any ): Promise { - const meta: Environment.LookupGeneratorMeta = await this.getGenMetadata( - genNamespace - ); + const meta: LookupGeneratorMeta = await this.getGenMetadata(genNamespace); this.unloadGeneratorModules(genNamespace); - const env: Environment = this.createEnvInstance( + + // v6 is the default runtime; retry with v3 for legacy generator shapes + this.logger?.debug( + `routing generator ${genNamespace} to default yeoman-environment v6` + ); + + try { + const v6Env: Environment = this.createEnvInstance( + { sharedOptions: { forwardErrorToEnvironment: true } as any }, + adapter + ); + + v6Env.register(meta.resolved!, { + namespace: genNamespace, + packagePath: meta.packagePath, + }); + + const gen: any = await v6Env.create(genNamespace, { options } as any); + + return { env: v6Env, gen }; + } catch (v6Error) { + this.logger?.info( + `default yeoman-environment v6 could not create ${genNamespace}, falling back to yeoman-environment v3`, + { error: (v6Error as Error)?.message } + ); + try { + return this.createLegacyV3EnvAndGen( + genNamespace, + meta, + options, + adapter + ); + } catch (v3Error) { + this.logger?.error( + `yeoman-environment v3 fallback also failed for ${genNamespace}; surfacing the v3 error`, + { + v6Error: (v6Error as Error)?.message, + v3Error: (v3Error as Error)?.message, + } + ); + + v3Error.v6Error = v6Error; + throw v3Error; + } + } + } + + private createLegacyV3EnvAndGen( + genNamespace: string, + meta: LookupGeneratorMeta, + options: any, + adapter: any + ): EnvGen { + const legacyCompat = this.loadLegacyV3Compat(); + + const v3Env = legacyCompat.createV3Env( undefined, { sharedOptions: { forwardErrorToEnvironment: true } }, adapter ); - // @types/yeoman-environment bug: generatorPath is still not exposed on LookupGeneratorMeta - env.register(_.get(meta, "generatorPath"), genNamespace, meta.packagePath); - let gen: any = env.create(genNamespace, { options } as any); - - // Handle async generator creation (ESM modules) - if (gen && typeof gen.then === "function") { - gen = await gen; - } + v3Env.register(meta.resolved, { + namespace: genNamespace, + packagePath: meta.packagePath, + } as any); + const gen = v3Env.create(genNamespace, { + options, + } as unknown as string[]); + + return { env: v3Env as unknown as Environment, gen }; + } - return { env, gen }; + private loadLegacyV3Compat(): typeof YeomanEnvV3 { + return __non_webpack_require__("./yeoman-env-v3.cjs") as typeof YeomanEnvV3; } public async getGeneratorsData(mainOnly = true): Promise { - const gensMeta: Environment.LookupGeneratorMeta[] = - await this.getGeneratorsMeta(mainOnly); + const gensMeta: LookupGeneratorMeta[] = await this.getGeneratorsMeta( + mainOnly + ); const packageJsons = await NpmCommand.getPackageJsons(gensMeta); const gensData = packageJsons.map( @@ -238,7 +258,7 @@ class EnvUtil { let additional: AdditionalGenerator[] = []; gensData.forEach((genData) => { additional = additional.concat( - ...(genData.generatorPackageJson.additional_generators ?? []) + ...(genData?.generatorPackageJson.additional_generators ?? []) ); }); // remove duplicates @@ -272,7 +292,7 @@ class EnvUtil { } public async getGeneratorNamesWithOutdatedVersion(): Promise { - const gensMeta: Environment.LookupGeneratorMeta[] = + const gensMeta: LookupGeneratorMeta[] = await this.getGensMetaByInstallationPath(); return NpmCommand.getPackageNamesWithOutdatedVersion( this.genMainGensMeta(gensMeta) @@ -280,7 +300,7 @@ class EnvUtil { } public getGeneratorFullName(genNamespace: string): string { - const genName = Environment.namespaceToName(genNamespace); + const genName = namespaceToName(genNamespace); const parts = _.split(genName, "/"); return _.size(parts) === 1 ? `${GENERATOR}${genName}` diff --git a/projects/yeoman-ui/packages/backend/src/utils/namespace.ts b/projects/yeoman-ui/packages/backend/src/utils/namespace.ts new file mode 100644 index 00000000..0e89ab9f --- /dev/null +++ b/projects/yeoman-ui/packages/backend/src/utils/namespace.ts @@ -0,0 +1,10 @@ +// Yeoman namespaces may include a sub-generator suffix, e.g. "generator-foo:app" +export function namespaceToName(namespace: string): string { + const packageNamespace = namespace.replace(/:.*$/, ""); + + if (packageNamespace.startsWith("@")) { + return packageNamespace.replace("/generator-", "/"); + } + + return packageNamespace.replace(/^generator-/, ""); +} diff --git a/projects/yeoman-ui/packages/backend/src/utils/npm.ts b/projects/yeoman-ui/packages/backend/src/utils/npm.ts index fb4d4a4f..7257fc97 100644 --- a/projects/yeoman-ui/packages/backend/src/utils/npm.ts +++ b/projects/yeoman-ui/packages/backend/src/utils/npm.ts @@ -9,7 +9,7 @@ import messages from "../messages.js"; import { vscode } from "./vscodeProxy.js"; import * as path from "path"; import * as npmFetch from "npm-registry-fetch"; -import type { LookupGeneratorMeta } from "yeoman-environment"; +import type { LookupGeneratorMeta } from "@yeoman/types"; import { getConsoleWarnLogger } from "../logger/console-logger.js"; import { Constants } from "./constants.js"; import { spawn } from "child_process"; diff --git a/projects/yeoman-ui/packages/backend/src/utils/questionTypes.ts b/projects/yeoman-ui/packages/backend/src/utils/questionTypes.ts new file mode 100644 index 00000000..29285205 --- /dev/null +++ b/projects/yeoman-ui/packages/backend/src/utils/questionTypes.ts @@ -0,0 +1,22 @@ +import type { Question } from "inquirer"; + +// A loose shape over inquirer's base `Question` plus the wizard's own fields. +// @yeoman/adapter's strict `DistinctQuestion` union forced compile errors and +// `any` casts at every call site, since the wizard adds guiType/replay markers +export type YeomanUIQuestion = Pick< + Question, + "type" | "name" | "message" | "default" | "when" | "validate" | "filter" +> & { + // Choices live on inquirer's list-style questions, not the base Question + choices?: unknown; + // yeoman-ui GUI hint used to pick a custom question renderer + guiType?: string; + guiOptions?: { type?: string; [key: string]: unknown }; + // Replay markers set by ReplayUtils.setDefaults + __ForceDefault?: boolean; + __origAnswer?: unknown; + // Custom event-handler methods are attached by name at runtime + [key: string]: unknown; +}; + +export type YeomanUIQuestions = YeomanUIQuestion | YeomanUIQuestion[]; diff --git a/projects/yeoman-ui/packages/backend/src/yeomanui.ts b/projects/yeoman-ui/packages/backend/src/yeomanui.ts index c00fafe5..ec21c8fd 100644 --- a/projects/yeoman-ui/packages/backend/src/yeomanui.ts +++ b/projects/yeoman-ui/packages/backend/src/yeomanui.ts @@ -22,10 +22,11 @@ import { GeneratorData, GeneratorNotFoundError, } from "./utils/env.js"; +import { namespaceToName } from "./utils/namespace.js"; import { vscode, getVscode } from "./utils/vscodeProxy.js"; import Generator from "yeoman-generator"; import Environment from "yeoman-environment"; -import type { Questions } from "yeoman-environment/lib/adapter"; +import type { YeomanUIQuestions } from "./utils/questionTypes.js"; import { State } from "./utils/promise.js"; import { Constants } from "./utils/constants.js"; import { isUriFlow } from "./utils/workspaceFile.js"; @@ -53,7 +54,7 @@ export class YeomanUI { private readonly youiAdapter: YouiAdapter; private gen: Generator | undefined; private promptCount: number; - private currentQuestions: Questions; + private currentQuestions: YeomanUIQuestions | undefined; private generatorName: string; private readonly replayUtils: ReplayUtils; private readonly customQuestionEventHandlers: Map< @@ -107,7 +108,7 @@ export class YeomanUI { this.youiAdapter = new YouiAdapter(youiEvents, output); this.youiAdapter.setYeomanUI(this); this.promptCount = 0; - this.currentQuestions = {}; + this.currentQuestions = undefined; this.customQuestionEventHandlers = new Map(); this.typesMap = new Map(); this.generatorsToIgnoreArray = []; @@ -427,7 +428,7 @@ export class YeomanUI { } public async showPrompt( - questions: Questions + questions: YeomanUIQuestions ): Promise { this.promptCount++; const promptName = this.getPromptName(questions); @@ -442,7 +443,8 @@ export class YeomanUI { this.replayUtils.recall(questions); this.currentQuestions = questions; - const mappedQuestions: Questions = this.normalizeFunctions(questions); + const mappedQuestions: YeomanUIQuestions = + this.normalizeFunctions(questions); if (_.isEmpty(mappedQuestions)) { return {}; } @@ -456,7 +458,7 @@ export class YeomanUI { } private async back( - partialAnswers: Environment.Answers, + partialAnswers: inquirer.Answers, numOfSteps: number ): Promise { this.replayUtils.start(this.currentQuestions, partialAnswers, numOfSteps); @@ -478,7 +480,7 @@ export class YeomanUI { } } - private getPromptName(questions: Questions): string { + private getPromptName(questions: YeomanUIQuestions): string { const firstQuestionName = _.get(questions, "[0].name"); return firstQuestionName ? _.startCase(firstQuestionName) @@ -728,7 +730,7 @@ export class YeomanUI { this.logger.debug(error); } - const genName = Environment.namespaceToName(genNamespace); + const genName = namespaceToName(genNamespace); const genMessage = _.get( packageJson, "description", @@ -763,7 +765,7 @@ export class YeomanUI { * Functions are lost when being passed to client (using JSON.Stringify) * Also functions cannot be evaluated on client) */ - private normalizeFunctions(questions: Questions): Questions { + private normalizeFunctions(questions: YeomanUIQuestions): YeomanUIQuestions { this.addCustomQuestionEventHandlers(questions); return JSON.parse(JSON.stringify(questions, YeomanUI.funcReplacer)); } @@ -780,7 +782,7 @@ export class YeomanUI { } } - private addCustomQuestionEventHandlers(questions: Questions): void { + private addCustomQuestionEventHandlers(questions: YeomanUIQuestions): void { for (const question of questions as any[]) { const guiType = _.get(question, "guiOptions.type", question.guiType); const questionHandlers = this.customQuestionEventHandlers.get(guiType); diff --git a/projects/yeoman-ui/packages/backend/src/youi-adapter.ts b/projects/yeoman-ui/packages/backend/src/youi-adapter.ts index 5e86fa97..be1cf30f 100644 --- a/projects/yeoman-ui/packages/backend/src/youi-adapter.ts +++ b/projects/yeoman-ui/packages/backend/src/youi-adapter.ts @@ -3,7 +3,8 @@ import { YouiEvents } from "./youi-events.js"; import yoUiLog from "./utils/log.js"; import lodash from "lodash"; import chalk from "chalk"; -import type { Questions } from "yeoman-environment/lib/adapter"; +import type { Answers } from "inquirer"; +import type { YeomanUIQuestions } from "./utils/questionTypes.js"; import { Output } from "./output.js"; const { get, isFunction } = lodash; @@ -41,8 +42,8 @@ export class YouiAdapter { * @param {Array} questions * @param {Function} callback */ - public async prompt( - questions: Questions, + public async prompt( + questions: YeomanUIQuestions, cb?: (res: T1) => T2 ): Promise { if (this.yeomanui && questions) { diff --git a/projects/yeoman-ui/packages/backend/test/fixtures/generator-env-v3-fixture/generators/app/index.js b/projects/yeoman-ui/packages/backend/test/fixtures/generator-env-v3-fixture/generators/app/index.js new file mode 100644 index 00000000..e6270287 --- /dev/null +++ b/projects/yeoman-ui/packages/backend/test/fixtures/generator-env-v3-fixture/generators/app/index.js @@ -0,0 +1,14 @@ +"use strict"; + +module.exports = class EnvV3FixtureGenerator { + constructor(args, opts) { + this.args = args; + this.options = opts; + this.env = opts && opts.env; + this.envV3FixtureLoaded = true; + } + + initializing() { + return "env-v3-fixture-initialized"; + } +}; diff --git a/projects/yeoman-ui/packages/backend/test/fixtures/generator-env-v3-fixture/package.json b/projects/yeoman-ui/packages/backend/test/fixtures/generator-env-v3-fixture/package.json new file mode 100644 index 00000000..ca02e797 --- /dev/null +++ b/projects/yeoman-ui/packages/backend/test/fixtures/generator-env-v3-fixture/package.json @@ -0,0 +1,4 @@ +{ + "name": "generator-env-v3-fixture", + "type": "commonjs" +} diff --git a/projects/yeoman-ui/packages/backend/test/fixtures/generator-env-v6-fixture/generators/app/index.js b/projects/yeoman-ui/packages/backend/test/fixtures/generator-env-v6-fixture/generators/app/index.js new file mode 100644 index 00000000..82dd717a --- /dev/null +++ b/projects/yeoman-ui/packages/backend/test/fixtures/generator-env-v6-fixture/generators/app/index.js @@ -0,0 +1,10 @@ +"use strict"; + +const Generator = require("yeoman-generator").default; + +module.exports = class EnvV6FixtureGenerator extends Generator { + // A trivial lifecycle method so the class is a valid, instantiable generator. + initializing() { + this.envV6FixtureLoaded = true; + } +}; diff --git a/projects/yeoman-ui/packages/backend/test/fixtures/generator-env-v6-fixture/package.json b/projects/yeoman-ui/packages/backend/test/fixtures/generator-env-v6-fixture/package.json new file mode 100644 index 00000000..2722cb9b --- /dev/null +++ b/projects/yeoman-ui/packages/backend/test/fixtures/generator-env-v6-fixture/package.json @@ -0,0 +1,4 @@ +{ + "name": "generator-env-v6-fixture", + "type": "commonjs" +} diff --git a/projects/yeoman-ui/packages/backend/test/fixtures/generator-env-v6-init-error-fixture/generators/app/index.js b/projects/yeoman-ui/packages/backend/test/fixtures/generator-env-v6-init-error-fixture/generators/app/index.js new file mode 100644 index 00000000..9f8bd756 --- /dev/null +++ b/projects/yeoman-ui/packages/backend/test/fixtures/generator-env-v6-init-error-fixture/generators/app/index.js @@ -0,0 +1,14 @@ +"use strict"; + +const Generator = require("yeoman-generator").default; + +const V6_INIT_ERROR = "env-v6 fixture constructor failed on purpose"; + +module.exports = class EnvV6InitErrorFixtureGenerator extends Generator { + constructor(args, opts) { + super(args, opts); + throw new Error(V6_INIT_ERROR); + } +}; + +module.exports.V6_INIT_ERROR = V6_INIT_ERROR; diff --git a/projects/yeoman-ui/packages/backend/test/fixtures/generator-env-v6-init-error-fixture/package.json b/projects/yeoman-ui/packages/backend/test/fixtures/generator-env-v6-init-error-fixture/package.json new file mode 100644 index 00000000..0bbe860a --- /dev/null +++ b/projects/yeoman-ui/packages/backend/test/fixtures/generator-env-v6-init-error-fixture/package.json @@ -0,0 +1,4 @@ +{ + "name": "generator-env-v6-init-error-fixture", + "type": "commonjs" +} diff --git a/projects/yeoman-ui/packages/backend/test/utils/env.spec.ts b/projects/yeoman-ui/packages/backend/test/utils/env.spec.ts new file mode 100644 index 00000000..afec223f --- /dev/null +++ b/projects/yeoman-ui/packages/backend/test/utils/env.spec.ts @@ -0,0 +1,155 @@ +import { createSandbox, SinonSandbox } from "sinon"; +import { expect } from "chai"; +import { resolve } from "path"; +import { fileURLToPath } from "url"; +import { dirname } from "path"; +import { createRequire } from "module"; +import { Env } from "../../src/utils/env.js"; +import type { LookupGeneratorMeta } from "@yeoman/types"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); +const require = createRequire(import.meta.url); + +const FIXTURES = resolve(__dirname, "../fixtures"); + +const envV6Fixture = { + namespace: "env-v6-fixture:app", + packagePath: resolve(FIXTURES, "generator-env-v6-fixture"), + resolved: resolve( + FIXTURES, + "generator-env-v6-fixture/generators/app/index.js" + ), +}; + +const envV3Fixture = { + namespace: "env-v3-fixture:app", + packagePath: resolve(FIXTURES, "generator-env-v3-fixture"), + resolved: resolve( + FIXTURES, + "generator-env-v3-fixture/generators/app/index.js" + ), +}; + +const envV6InitErrorFixture = { + namespace: "env-v6-init-error-fixture:app", + packagePath: resolve(FIXTURES, "generator-env-v6-init-error-fixture"), + resolved: resolve( + FIXTURES, + "generator-env-v6-init-error-fixture/generators/app/index.js" + ), +}; + +/** Build a LookupGeneratorMeta the way env.ts consumes it. */ +function metaFor(fixture: { + namespace: string; + packagePath: string; + resolved: string; +}): LookupGeneratorMeta { + return { + namespace: fixture.namespace, + packagePath: fixture.packagePath, + resolved: fixture.resolved, + registered: true, + } as unknown as LookupGeneratorMeta; +} + +describe("Env.createEnvAndGen()", () => { + let sandbox: SinonSandbox; + + beforeEach(() => { + sandbox = createSandbox(); + }); + + afterEach(() => { + sandbox.restore(); + }); + + it("loads a generator through yeoman-environment v6", async () => { + // Point metadata resolution at the v6 fixture; let the real v6 env + // register + create it (no fallback). + sandbox.stub(Env as any, "getGenMetadata").resolves(metaFor(envV6Fixture)); + + const { env, gen } = await Env.createEnvAndGen( + envV6Fixture.namespace, + { silent: true }, + undefined + ); + + expect(env, "a v6 environment instance is returned").to.be.an("object"); + expect(gen, "a generator instance is returned").to.be.an("object"); + expect( + gen.constructor.name, + "the v6 fixture class was instantiated" + ).to.equal("EnvV6FixtureGenerator"); + }); + + it("falls back to yeoman-environment v3 when v6 cannot create the generator", async () => { + sandbox.stub(Env as any, "getGenMetadata").resolves(metaFor(envV3Fixture)); + + // Force the v6 path to fail so the v3 fallback runs — simulates a + // v3-shape generator that v6 rejects at create() time. + const failingV6Env: any = { + register(): void { + return undefined; + }, + create(): never { + throw new Error("v6 cannot instantiate a v3-shape generator"); + }, + }; + sandbox.stub(Env as any, "createEnvInstance").returns(failingV6Env); + + sandbox + .stub(Env as any, "loadLegacyV3Compat") + .returns(require("yeoman-env-v3")); + + const { env, gen } = await Env.createEnvAndGen( + envV3Fixture.namespace, + { silent: true }, + undefined + ); + + expect(env, "a v3 environment instance is returned").to.be.an("object"); + expect(gen, "a generator instance is returned").to.be.an("object"); + expect( + gen.constructor.name, + "the v3 fixture class was instantiated by the v3 runtime" + ).to.equal("EnvV3FixtureGenerator"); + expect( + gen.envV3FixtureLoaded, + "the v3 fixture's constructor actually ran" + ).to.equal(true); + }); + + it("surfaces the v3 fallback error (with the v6 error attached) when both runtimes fail", async () => { + sandbox + .stub(Env as any, "getGenMetadata") + .resolves(metaFor(envV6InitErrorFixture)); + sandbox + .stub(Env as any, "loadLegacyV3Compat") + .returns(require("yeoman-env-v3")); + + const { V6_INIT_ERROR } = require(envV6InitErrorFixture.resolved); + + let thrown: any; + try { + await Env.createEnvAndGen( + envV6InitErrorFixture.namespace, + { silent: true }, + undefined + ); + } catch (error) { + thrown = error; + } + + expect(thrown, "createEnvAndGen should reject").to.be.instanceOf(Error); + expect( + thrown?.message, + "the v3 fallback error is surfaced to the user, not the v6 error" + ).to.contain("requires yeoman-environment"); + // The v6 error is preserved as context for diagnostics. + expect( + thrown?.v6Error?.message, + "the original v6 error is attached for diagnostics" + ).to.contain(V6_INIT_ERROR); + }); +}); diff --git a/projects/yeoman-ui/packages/backend/test/utils/namespace.spec.ts b/projects/yeoman-ui/packages/backend/test/utils/namespace.spec.ts new file mode 100644 index 00000000..60f03d4d --- /dev/null +++ b/projects/yeoman-ui/packages/backend/test/utils/namespace.spec.ts @@ -0,0 +1,26 @@ +import { expect } from "chai"; +import { namespaceToName } from "../../src/utils/namespace.js"; + +describe("namespace utility", () => { + describe("namespaceToName()", () => { + it("strips the sub-generator segment from a scoped namespace", () => { + expect(namespaceToName("@sap/adaptation-project:app")).to.equal( + "@sap/adaptation-project" + ); + }); + + it("drops the generator- prefix on a scoped package", () => { + expect(namespaceToName("@bas-dev/generator-abap-project:app")).to.equal( + "@bas-dev/abap-project" + ); + }); + + it("drops the generator- prefix on a bare package", () => { + expect(namespaceToName("generator-foo:app")).to.equal("foo"); + }); + + it("returns the namespace unchanged when no colon or generator- prefix", () => { + expect(namespaceToName("plain-name")).to.equal("plain-name"); + }); + }); +}); diff --git a/projects/yeoman-ui/packages/backend/test/yeomanui.spec.ts b/projects/yeoman-ui/packages/backend/test/yeomanui.spec.ts index c3cd8da9..1f8c9252 100644 --- a/projects/yeoman-ui/packages/backend/test/yeomanui.spec.ts +++ b/projects/yeoman-ui/packages/backend/test/yeomanui.spec.ts @@ -18,9 +18,10 @@ import messages from "../src/messages.js"; import { AnalyticsWrapper } from "../src/usage-report/usage-analytics-wrapper.js"; import { AppWizard, MessageType } from "@sap-devx/yeoman-ui-types"; import { Env } from "../src/utils/env.js"; -import Environment from "yeoman-environment"; +import Environment, { createEnv } from "yeoman-environment"; import { createFlowPromise } from "../src/utils/promise.js"; import { Constants } from "../src/utils/constants.js"; +import type { YeomanUIQuestion } from "../src/utils/questionTypes.js"; describe("yeomanui unit test", () => { let sandbox: SinonSandbox; @@ -1215,7 +1216,7 @@ describe("yeomanui unit test", () => { describe("answersUtils", () => { it("setDefaults", () => { - const questions = [ + const questions: YeomanUIQuestion[] = [ { name: "q1", default: "a" }, { name: "q2", default: () => "b" }, { name: "q3" }, @@ -1227,15 +1228,15 @@ describe("yeomanui unit test", () => { }; ReplayUtils["setDefaults"](questions, answers); for (const question of questions) { - expect((question as any)["__origAnswer"]).to.equal( + expect(question["__origAnswer"]).to.equal( (answers)[question.name] ); - expect((question as any)["__ForceDefault"]).to.be.true; + expect(question["__ForceDefault"]).to.be.true; } }); it("setDefaults", () => { - const questions = [ + const questions: YeomanUIQuestion[] = [ { name: "q1", default: "a" }, { name: "q2", default: () => "b" }, { name: "q3" }, @@ -1246,8 +1247,8 @@ describe("yeomanui unit test", () => { }; ReplayUtils["setDefaults"](questions, answers); const question = _.find(questions, { name: "q2" }); - expect((question as any).__origAnswer).to.be.undefined; - expect((question as any).__ForceDefault).to.be.undefined; + expect(question.__origAnswer).to.be.undefined; + expect(question.__ForceDefault).to.be.undefined; }); }); @@ -1260,7 +1261,7 @@ describe("yeomanui unit test", () => { {}, flowPromise.state ); - const env: Environment = Environment.createEnv(); + const env: Environment = createEnv(); const envMock = sandbox.mock(env); const gen = { on: () => "" }; const genMock = sandbox.mock(gen); @@ -1286,7 +1287,7 @@ describe("yeomanui unit test", () => { ); yeomanUiInstance["onUncaughtException"] = () => ""; const onUncaughtExceptionBefore = yeomanUiInstance["onUncaughtException"]; - const env: Environment = Environment.createEnv(); + const env: Environment = createEnv(); const envMock = sandbox.mock(env); const gen = { on: () => "" }; const genMock = sandbox.mock(gen); @@ -1653,7 +1654,7 @@ describe("yeomanui unit test", () => { const testEventFunction = () => { return true; }; - const questions = [ + const questions: any[] = [ { name: "q1", guiType: "questionType", @@ -1678,7 +1679,7 @@ describe("yeomanui unit test", () => { ); yeomanUiInstance["addCustomQuestionEventHandlers"](questions); expect(questions[0]).to.have.property("testEvent"); - expect((questions[0] as any)["testEvent"]).to.equal(testEventFunction); + expect(questions[0]["testEvent"]).to.equal(testEventFunction); }); }); @@ -1764,7 +1765,7 @@ describe("yeomanui unit test", () => { flowPromise.state ); yeomanUiInstance["gen"] = Object.create({}); - yeomanUiInstance["gen"].options = {}; + (yeomanUiInstance["gen"] as any).options = {}; yeomanUiInstance["currentQuestions"] = [ { name: "question1", @@ -1790,7 +1791,7 @@ describe("yeomanui unit test", () => { flowPromise.state ); yeomanUiInstance["gen"] = Object.create({}); - yeomanUiInstance["gen"].options = {}; + (yeomanUiInstance["gen"] as any).options = {}; yeomanUiInstance["currentQuestions"] = undefined; try { await yeomanUiInstance["evaluateMethod"](null, "question1", "method1"); diff --git a/projects/yeoman-ui/packages/backend/tsconfig.json b/projects/yeoman-ui/packages/backend/tsconfig.json index a7dde15e..9bbd5234 100644 --- a/projects/yeoman-ui/packages/backend/tsconfig.json +++ b/projects/yeoman-ui/packages/backend/tsconfig.json @@ -18,12 +18,7 @@ "allowSyntheticDefaultImports": true, "traceResolution": false, "declaration": true, - "skipLibCheck": true, - "paths": { - "yeoman-environment/lib/adapter": [ - "./node_modules/@types/yeoman-environment/lib/adapter.d.ts" - ] - } + "skipLibCheck": true }, "include": ["src/**/*", "test/**/*"], "ts-node": { diff --git a/projects/yeoman-ui/packages/backend/webpack.config.cjs b/projects/yeoman-ui/packages/backend/webpack.config.cjs index 3d086b48..4617e329 100644 --- a/projects/yeoman-ui/packages/backend/webpack.config.cjs +++ b/projects/yeoman-ui/packages/backend/webpack.config.cjs @@ -4,13 +4,7 @@ const path = require("path"); const TerserPlugin = require("terser-webpack-plugin"); - -/** - * Investigate the usage of "import(/webpackIgnore: true / 'ignored-module.js');" - * https://webpack.js.org/api/module-methods/#magic-comments - * This will become relevant once we move to the newer versions of yeoman-evnironment - * that require the migration to ESM modules of the yeoman-ui. - */ +const CopyPlugin = require("copy-webpack-plugin"); /**@type {import('webpack').Configuration}*/ const config = { @@ -30,9 +24,16 @@ const config = { }, devtoolModuleFilenameTemplate: "../[resource-path]", }, + externalsType: "module", externals: { + // vscode is provided by the extension host, not bundled. vscode: "module vscode", - // the vscode-module is created on-the-fly and must be excluded. Add other modules that cannot be webpack'ed, 📖 -> https://webpack.js.org/configuration/externals/ + // Optional native metric packages that Application Insights tries to load + // via `require()` but that are absent in production installs — leave them + // as un-resolvable externals so webpack does not attempt to bundle them. + "@azure/functions-core": "commonjs2 @azure/functions-core", + "applicationinsights-native-metrics": + "commonjs2 applicationinsights-native-metrics", }, resolve: { modules: ["node_modules"], @@ -44,6 +45,28 @@ const config = { extensionAlias: { ".js": [".ts", ".js"], }, + // `spdx-expression-parse` (pulled transitively via @npmcli/arborist → + // fly-import → yeoman-environment@6) requires these siblings without + // declaring them in its own `dependencies`. Under pnpm's strict layout + // they aren't reachable from within `.pnpm/spdx-expression-parse@…/`. + // Declaring them as backend devDependencies places them under + // `backend/node_modules/`; the aliases here point webpack directly at + // those symlinks so the resolver finds them regardless of where in the + // pnpm store it started the walk. + alias: { + "spdx-license-ids/deprecated$": path.resolve( + __dirname, + "node_modules/spdx-license-ids/deprecated.json" + ), + "spdx-license-ids$": path.resolve( + __dirname, + "node_modules/spdx-license-ids/index.json" + ), + "spdx-exceptions$": path.resolve( + __dirname, + "node_modules/spdx-exceptions/index.json" + ), + }, }, module: { rules: [ @@ -56,96 +79,148 @@ const config = { }, ], }, + // yeoman-environment v6 store.js: `require(meta.resolved)` loads a + // generator module from disk at runtime. Webpack's static analyzer + // would try to resolve it through the bundle graph — force it native. { - test: /yeoman-environment[/|\\]lib[/|\\]environment.js/, + test: /yeoman-environment[/|\\]dist[/|\\]store\.js/, loader: "string-replace-loader", options: { - search: "require[.]resolve[(]", - replace: "__non_webpack_require__.resolve(", + search: "require\\(meta\\.resolved\\)", + replace: "__non_webpack_require__(meta.resolved)", flags: "g", }, }, - // We replace require() with __non_webpack_require__() to bypass webpack's module resolution and use - // Node's native require at runtime, allowing dynamic loading of generators installed globally or locally. + // ...and the parallel require.resolve() call. { - test: /yeoman-environment[/|\\]lib[/|\\]util[/|\\]esm.js/, + test: /yeoman-environment[/|\\]dist[/|\\]store\.js/, loader: "string-replace-loader", options: { - search: "require[(]", - replace: "__non_webpack_require__(", + search: "require\\.resolve\\(meta\\.resolved\\)", + replace: "__non_webpack_require__.resolve(meta.resolved)", flags: "g", }, }, - // ESM (ES Module) dynamic import workaround for bundled context: - // Webpack processes dynamic import() calls at build time, converting them to webpack's chunk loading system. - // However, yeoman-environment's esm.js needs to use native Node.js dynamic import() at runtime to load - // external .mjs generator files from the file system (not bundled). - // We wrap import() in a Function constructor to hide it from webpack's static analysis, forcing it to - // use the native import() at runtime. This is similar to __non_webpack_require__ but for ESM modules. + // store.js falls back to dynamic import() for ESM generators. Webpack + // would turn this into its own chunk loader, breaking runtime loading of + // generators from disk. Wrap in Function() to hide it from webpack. { - test: /yeoman-environment[/|\\]lib[/|\\]util[/|\\]esm.js/, + test: /yeoman-environment[/|\\]dist[/|\\]store\.js/, loader: "string-replace-loader", options: { - search: "return import[(]", + search: "return import\\(", replace: "return new Function('specifier', 'return import(specifier)')(", flags: "g", }, }, + // environment-full.js `requireGenerator(undefined)` does + // `await import('yeoman-generator')` to obtain a *default* base Generator + // class (only when no resolved generator path is given). We keep it a + // native runtime import rather than letting webpack bundle it, because: + // 1. Our normal flow never reaches it — generators are loaded by + // store.js via require(meta.resolved), which pulls each generator's + // OWN yeoman-generator from its own node_modules on disk. + // 2. If it ever is reached, this bare specifier has no node_modules to + // resolve against inside the *.vsix, so the import rejects and + // yeoman-environment falls through to its `flyImport(...)` fallback + // (which installs on demand). Bundling it wouldn't help that path. + { + test: /yeoman-environment[/|\\]dist[/|\\]environment-full\.js/, + loader: "string-replace-loader", + options: { + search: "await import\\('yeoman-generator'\\)", + replace: + "await new Function('s', 'return import(s)')('yeoman-generator')", + flags: "g", + }, + }, + // fly-import (yeoman-environment's fallback generator loader) does a + // native dynamic import that must not be bundled. { - test: /yeoman-environment[/|\\]lib[/|\\]store.js/, + test: /fly-import[/|\\]dist[/|\\]fly-import\.js/, loader: "string-replace-loader", options: { - search: "require[(]path", - replace: "__non_webpack_require__(path", + search: "async \\(\\) => import\\(", + replace: "async () => new Function('s', 'return import(s)')(", flags: "g", }, }, + // yeoman-generator v8 lifecycle.js also loads sub-generators from disk. { - test: /yeoman-environment[/|\\]lib[/|\\]util[/|\\]repository.js/, + test: /yeoman-generator[/|\\]dist[/|\\]actions[/|\\]lifecycle\.js/, loader: "string-replace-loader", options: { - search: "require[(]packageJson", - replace: "__non_webpack_require__(packageJson", + search: "await import\\(", + replace: "await new Function('s', 'return import(s)')(", flags: "g", }, }, + // yeoman-environment v6 module-lookup.js runs at module load time: + // const __filename = fileURLToPath(import.meta.url); + // const __dirname = dirname(__filename); + // const PROJECT_ROOT = join(__dirname, '..'); + // const PACKAGE_NAME_PATTERN = + // [JSON.parse(readFileSync(join(PROJECT_ROOT, 'package.json')).toString()).name]; + // + // When webpack inlines this module into a code-split chunk, `import.meta.url` + // in the inlined body is baked to the build-machine file:// URL, so at runtime + // on another machine (BAS, CI, …) readFileSync throws ENOENT for the frozen + // absolute path. Also, the un-referenced `fileURLToPath(import.meta.url)` call + // survives dead-code elimination and leaks the build-machine path as a string + // literal into the shipped bundle. Neutralize all four preamble constants so + // no filesystem I/O runs at load time and no build-machine path is retained. { - test: /yeoman-environment[/|\\]lib[/|\\]util[/|\\]repository.js/, + test: /yeoman-environment[/|\\]dist[/|\\]module-lookup\.js/, loader: "string-replace-loader", options: { - search: "require[(]absolutePath", - replace: "__non_webpack_require__(absolutePath", + search: + "const __filename = fileURLToPath\\(import\\.meta\\.url\\);", + replace: + "const __filename = ''; // neutralized by webpack.config.cjs — bake-machine import.meta.url is not portable", flags: "g", }, }, { - test: /yeoman-environment[/|\\]lib[/|\\]resolver.js/, + test: /yeoman-environment[/|\\]dist[/|\\]module-lookup\.js/, loader: "string-replace-loader", options: { - search: "require[(]path", - replace: "__non_webpack_require__(path", + search: "const __dirname = dirname\\(__filename\\);", + replace: + "const __dirname = ''; // neutralized by webpack.config.cjs", flags: "g", }, }, { - test: /yeoman-environment[/|\\]lib[/|\\]resolver.js/, + test: /yeoman-environment[/|\\]dist[/|\\]module-lookup\.js/, loader: "string-replace-loader", options: { - search: "PACKAGE_NAME_PATTERN = [[]require.*", - replace: "PACKAGE_NAME_PATTERN = ['yeoman-environment'];", + search: + "const PROJECT_ROOT = join\\(__dirname, '\\.\\.'\\);", + replace: + "const PROJECT_ROOT = ''; // neutralized by webpack.config.cjs", flags: "g", }, }, { - test: /yeoman-environment[/|\\]lib[/|\\]composability.js/, + test: /yeoman-environment[/|\\]dist[/|\\]module-lookup\.js/, loader: "string-replace-loader", options: { - search: "require[(]'yeoman", - replace: "__non_webpack_require__('yeoman", + // PACKAGE_NAME_PATTERN is only referenced further down in this same + // file as the DEFAULT for `options.packagePatterns`. Yeoman-ui always + // passes an explicit `packagePatterns` (or the caller in v6's own + // `generator-lookup.js` does — set to `['generator-*']`), so the + // inlined value is never actually consulted at lookup time. The + // literal `'yeoman-environment'` is just a non-empty placeholder that + // makes the static array shape well-formed. + search: + "const PACKAGE_NAME_PATTERN = \\[JSON\\.parse\\(readFileSync\\(join\\(PROJECT_ROOT, 'package\\.json'\\)\\)\\.toString\\(\\)\\)\\.name\\];", + replace: + "const PACKAGE_NAME_PATTERN = ['yeoman-environment']; // inlined by webpack.config.cjs — see this file's rule comment above", flags: "g", }, }, + // colors loads themes via a dynamic require(theme) call. { test: /node_modules[/|\\]colors[/|\\]lib[/|\\]colors.js/, loader: "string-replace-loader", @@ -155,6 +230,19 @@ const config = { flags: "g", }, }, + // node-gyp is pulled in transitively by @npmcli/arborist. The code path + // that reaches it (native-module rebuild during install) is never hit + // from the extension, but webpack still has to parse its source graph: + // - Find-VisualStudio.cs is a C# file webpack cannot parse — return + // an empty module for it. + // - bin/node-gyp.js starts with a `#!/usr/bin/env node` shebang that + // webpack's static analyzer trips on — comment it out. + // - lib/node-gyp.js does `require('./' + command)` dynamically — + // hide it from webpack via __non_webpack_require__. + { + test: /Find-VisualStudio\.cs$/, + use: "null-loader", + }, { test: /node-gyp[/|\\]lib[/|\\]node-gyp.js/, loader: "string-replace-loader", @@ -182,24 +270,6 @@ const config = { flags: "g", }, }, - { - test: /yeoman-environment[/|\\]lib[/|\\]util[/|\\]binary-diff.js/, - loader: "string-replace-loader", - options: { - search: "const istextorbinary.*", - replace: "import {isBinary} from 'istextorbinary';", - flags: "g", - }, - }, - { - test: /yeoman-environment[/|\\]lib[/|\\]util[/|\\]binary-diff.js/, - loader: "string-replace-loader", - options: { - search: "istextorbinary[.]isBinary", - replace: "isBinary", - flags: "g", - }, - }, { test: /node_modules[/|\\]download-stats[/|\\]lib[/|\\]utils.js/, loader: "string-replace-loader", @@ -218,6 +288,7 @@ const config = { flags: "g", }, }, + // ejs's `require.extensions` is legacy Node API webpack cannot polyfill. { test: /node_modules[/|\\]ejs[/|\\]lib[/|\\]ejs.js/, loader: "string-replace-loader", @@ -227,6 +298,21 @@ const config = { flags: "g", }, }, + // env.ts uses `_require.cache` (a runtime `createRequire` result) to + // unload generator modules between runs. Under ESM output that + // `createRequire` runs natively at runtime and its `.cache` is a live + // property — no webpack rewrite needed. Rule kept out intentionally. + // vscodeProxy.ts inspects require.main to detect the extension host. + { + test: /utils[/|\\]vscodeProxy.ts/, + loader: "string-replace-loader", + options: { + search: "require[.]main", + replace: "__non_webpack_require__.main", + flags: "g", + }, + }, + // ws's optional native accelerators — kept optional at runtime. { test: /node_modules[/|\\]ws[/|\\]lib[/|\\]buffer-util.js/, loader: "string-replace-loader", @@ -247,6 +333,16 @@ const config = { }, ], }, + plugins: [ + new CopyPlugin({ + patterns: [ + { + from: require.resolve("yeoman-env-v3"), + to: "yeoman-env-v3.cjs", + }, + ], + }), + ], optimization: { minimizer: [ new TerserPlugin({ diff --git a/projects/yeoman-ui/packages/yeoman-env-v3/package.json b/projects/yeoman-ui/packages/yeoman-env-v3/package.json new file mode 100644 index 00000000..e87392ba --- /dev/null +++ b/projects/yeoman-ui/packages/yeoman-env-v3/package.json @@ -0,0 +1,28 @@ +{ + "name": "yeoman-env-v3", + "version": "3.19.3", + "private": true, + "description": "TypeScript wrapper that bundles yeoman-environment v3 for the yeoman-ui extension's legacy-generator code path", + "license": "Apache 2.0", + "author": "SAP SE", + "repository": { + "type": "git", + "url": "https://github.com/SAP/app-studio-toolkit.git", + "directory": "projects/yeoman-ui/packages/yeoman-env-v3" + }, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "scripts": { + "clean": "shx rm -rf ./dist", + "compile": "pnpm run bundle", + "bundle": "webpack --config webpack.config.cjs --mode production", + "test": "node ./test/smoke.cjs", + "ci": "pnpm run clean && pnpm run bundle && pnpm run test" + }, + "dependencies": { + "yeoman-environment": "3.19.3" + }, + "devDependencies": { + "@types/yeoman-environment": "2.10.11" + } +} diff --git a/projects/yeoman-ui/packages/yeoman-env-v3/src/index.ts b/projects/yeoman-ui/packages/yeoman-env-v3/src/index.ts new file mode 100644 index 00000000..aa2ffb36 --- /dev/null +++ b/projects/yeoman-ui/packages/yeoman-env-v3/src/index.ts @@ -0,0 +1,5 @@ +import Environment = require("yeoman-environment"); + +export const createV3Env = Environment.createEnv; + +export type LegacyV3Env = Environment; diff --git a/projects/yeoman-ui/packages/yeoman-env-v3/test/smoke.cjs b/projects/yeoman-ui/packages/yeoman-env-v3/test/smoke.cjs new file mode 100644 index 00000000..45aa2b68 --- /dev/null +++ b/projects/yeoman-ui/packages/yeoman-env-v3/test/smoke.cjs @@ -0,0 +1,26 @@ +"use strict"; + +const assert = require("node:assert"); +const { createV3Env } = require("../dist/index.js"); + +assert.strictEqual( + typeof createV3Env, + "function", + "dist/index.js must export a createV3Env function" +); + +const env = createV3Env(undefined, { sharedOptions: {} }, undefined); + +for (const method of ["register", "create", "lookup", "runGenerator"]) { + assert.strictEqual( + typeof env[method], + "function", + `the bundled v3 environment must expose ${method}()` + ); +} + +// runLoop is the structural property yeoman-generator v4 checks for; its +// presence confirms the v3 environment bundled with its internals intact +assert.ok(env.runLoop, "the bundled v3 environment must have a runLoop"); + +console.log("yeoman-env-v3 bundle smoke test passed"); diff --git a/projects/yeoman-ui/packages/yeoman-env-v3/tsconfig.json b/projects/yeoman-ui/packages/yeoman-env-v3/tsconfig.json new file mode 100644 index 00000000..c6d67657 --- /dev/null +++ b/projects/yeoman-ui/packages/yeoman-env-v3/tsconfig.json @@ -0,0 +1,15 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "./dist", + "rootDir": "./src", + "target": "es2019", + "module": "commonjs", + "moduleResolution": "node", + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "declaration": true + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] +} diff --git a/projects/yeoman-ui/packages/yeoman-env-v3/webpack.config.cjs b/projects/yeoman-ui/packages/yeoman-env-v3/webpack.config.cjs new file mode 100644 index 00000000..f83ecb9f --- /dev/null +++ b/projects/yeoman-ui/packages/yeoman-env-v3/webpack.config.cjs @@ -0,0 +1,121 @@ +//@ts-check +"use strict"; + +const path = require("path"); +const TerserPlugin = require("terser-webpack-plugin"); + +/** @type {import('webpack').Configuration} */ +module.exports = { + target: "node", + mode: "production", + entry: "./src/index.ts", + output: { + path: path.resolve(__dirname, "dist"), + filename: "index.js", + libraryTarget: "commonjs2", + }, + optimization: { + // yeoman-environment v3's `isNamespace()` does `constructor.name === "YeomanNamespace"`. + // Terser's default mangler renames the class to a short symbol at production + // level, making that runtime string comparison always fail — every namespace + // instance is then treated as a plain object, re-parsed, and rejected because + // `typeof yeomanNamespaceInstance !== "string"`. Preserve class + function + // names to keep those reflection-style checks working. + minimizer: [ + new TerserPlugin({ + terserOptions: { + keep_classnames: true, + keep_fnames: true, + mangle: { + keep_classnames: true, + keep_fnames: true, + }, + }, + }), + ], + }, + resolve: { + extensions: [".ts", "..."], + }, + module: { + rules: [ + // TypeScript entry point — transpile with ts-loader against the local + // tsconfig.json (commonjs target, matching the bundle output shape). + { + test: /\.ts$/, + exclude: /node_modules/, + use: [{ loader: "ts-loader" }], + }, + // Webpack can't parse .cs files pulled in by node-gyp's dynamic requires — + // return an empty module for them. + { + test: /\.cs$/, + use: "null-loader", + }, + // resolver.js reads PROJECT_ROOT/package.json at module load time to get the + // package name pattern. When bundled, __dirname points at dist/ instead of + // the v3 source root, so keep that particular require native at runtime. + { + test: /yeoman-environment[/\\]lib[/\\]resolver\.js$/, + loader: "string-replace-loader", + options: { + search: "require\\(path\\.join\\(PROJECT_ROOT,", + replace: "__non_webpack_require__(path.join(PROJECT_ROOT,", + flags: "g", + }, + }, + // resolver.js uses require.resolve() to locate installed generator packages + // from the machine, not the bundle — must stay native. + { + test: /yeoman-environment[/\\]lib[/\\]resolver\.js$/, + loader: "string-replace-loader", + options: { + search: "require\\.resolve\\(", + replace: "__non_webpack_require__.resolve(", + flags: "g", + }, + }, + // esm.js loads generator files from disk by variable path — both require() + // calls in the file are dynamic and must be native. + { + test: /yeoman-environment[/\\]lib[/\\]util[/\\]esm\.js$/, + loader: "string-replace-loader", + options: { + search: "require\\(fileToImport\\)", + replace: "__non_webpack_require__(fileToImport)", + flags: "g", + }, + }, + // environment.js loads a package.json from an installed generator at runtime. + { + test: /yeoman-environment[/\\]lib[/\\]environment\.js$/, + loader: "string-replace-loader", + options: { + search: "require\\(`\\$\\{packageName\\}", + replace: "__non_webpack_require__(`${packageName}", + flags: "g", + }, + }, + // environment.js uses require.resolve() to locate modules at runtime. + { + test: /yeoman-environment[/\\]lib[/\\]environment\.js$/, + loader: "string-replace-loader", + options: { + search: "require\\.resolve\\(", + replace: "__non_webpack_require__.resolve(", + flags: "g", + }, + }, + // repository.js loads a package.json path that was resolved from disk. + { + test: /yeoman-environment[/\\]lib[/\\]util[/\\]repository\.js$/, + loader: "string-replace-loader", + options: { + search: "require\\(packageJson\\)", + replace: "__non_webpack_require__(packageJson)", + flags: "g", + }, + }, + ], + }, +}; diff --git a/scripts/legal-copy.js b/scripts/legal-copy.js index 8003b708..5721106f 100644 --- a/scripts/legal-copy.js +++ b/scripts/legal-copy.js @@ -1,62 +1,47 @@ /** - * Copies LICENSES/ and .reuse/ from the repo root into every intermediate - * "project" directory that sits between the root and its pnpm workspace - * packages (e.g. projects/yeoman-ui/). + * Distributes the repo-root LICENSES/ and .reuse/ directories into every + * workspace package so REUSE/legal metadata travels with each packaged + * artifact. These copies are git-ignored everywhere except the repo root, so + * they are build-time only and safe to (re)create or remove idempotently. * - * A directory qualifies as an intermediate project dir when it is an ancestor - * of one or more workspace packages but is not itself the repo root. + * Package discovery uses @manypkg/get-packages, which understands the pnpm + * workspace layout directly — no assumptions about how deeply packages are + * nested. * * Usage (called from root package.json scripts): * node scripts/legal-copy.js copy -- copy LICENSES and .reuse * node scripts/legal-copy.js delete -- remove LICENSES and .reuse */ -const { execSync } = require("child_process"); const fs = require("fs"); const path = require("path"); +const { getPackagesSync } = require("@manypkg/get-packages"); const ROOT = path.resolve(__dirname, ".."); +const LEGAL_DIRS = ["LICENSES", ".reuse"]; const [, , command] = process.argv; -function projectDirs() { - const raw = execSync("pnpm ls -r --depth -1 --json", { - cwd: ROOT, - encoding: "utf8", - }); - const packages = JSON.parse(raw); - const packagePaths = new Set(packages.map((p) => p.path)); - const dirs = new Set(); - - for (const { path: pkgPath } of packages) { - if (!pkgPath || pkgPath === ROOT) continue; - // `pnpm -r exec -- shx cp -r ../../X X` copies from two levels up. - // For packages nested more than 2 levels below root the "two levels up" - // target is an intermediate project dir, not the root itself. - // We need to pre-populate those intermediate dirs with the legal files. - const twoUp = path.resolve(pkgPath, "../.."); - if (twoUp !== ROOT && !packagePaths.has(twoUp)) { - dirs.add(twoUp); - } - } - return [...dirs]; +function packageDirs() { + const { packages } = getPackagesSync(ROOT); + return packages.map((pkg) => pkg.dir).filter((dir) => dir !== ROOT); } -const dirs = projectDirs(); +const dirs = packageDirs(); if (command === "copy") { for (const dir of dirs) { - fs.cpSync(path.join(ROOT, "LICENSES"), path.join(dir, "LICENSES"), { - recursive: true, - }); - fs.cpSync(path.join(ROOT, ".reuse"), path.join(dir, ".reuse"), { - recursive: true, - }); + for (const legalDir of LEGAL_DIRS) { + fs.cpSync(path.join(ROOT, legalDir), path.join(dir, legalDir), { + recursive: true, + }); + } console.log(`Copied legal files → ${path.relative(ROOT, dir)}/`); } } else if (command === "delete") { for (const dir of dirs) { - fs.rmSync(path.join(dir, "LICENSES"), { recursive: true, force: true }); - fs.rmSync(path.join(dir, ".reuse"), { recursive: true, force: true }); + for (const legalDir of LEGAL_DIRS) { + fs.rmSync(path.join(dir, legalDir), { recursive: true, force: true }); + } console.log(`Removed legal files from ${path.relative(ROOT, dir)}/`); } } else {