From b6d83157ad921540847b26bf952d65732947e801 Mon Sep 17 00:00:00 2001 From: nx-plugin-for-aws Date: Mon, 29 Jun 2026 04:18:03 +0000 Subject: [PATCH 1/5] feat(nx-plugin): migrate to ESM with dual CJS build Nx 23 loads workspace `.ts` generators via Node's native type stripping, treating them as ESM/CJS per the nearest package.json `type`. Generated workspaces are `type: module`, but `@aws/nx-plugin` was published as CommonJS and forced vended plugins to `module: commonjs`, relying on the swc/ts-node fallback. This migrates the plugin to ESM end to end. @aws/nx-plugin: - Flip the package to `"type": "module"` and emit a dual ESM+CJS build via swc (ESM -> `src`, CJS -> `cjs`) plus tsc for declarations. A conditional `exports` map routes `import` -> ESM and `require` -> CJS so SDK consumers can use either format. A minimal `cjs/package.json` (`type: commonjs`) marks the CommonJS output. - Replace `__dirname`/`__filename` with `import.meta.dirname`/`filename` (swc rewrites these back to CJS globals for the CJS build; tsc cannot, which is why swc drives the JS emit). - Add `with { type: 'json' }` to JSON imports, convert module-scope `require(...)` to static imports / `createRequire`, and fix CJS interop (`fast-glob` default import) and type-only imports/exports (`verbatimModuleSyntax`). Vended generators (ts#nx-plugin / ts#nx-generator): - Stop forcing `module: commonjs` and drop the `@swc-node/register` workaround. Generated plugins are marked `"type": "module"`. - Vended generator templates use `import.meta.dirname`, `import type { X } from './schema.js'` (NodeNext `.js` specifier; Nx's resolver falls back `.js` -> `.ts`) and type-only `@nx/devkit` imports. Verified end to end via a local verdaccio registry: the vended `.ts` generator loads under native strip-types with no transpiler fallback, and both `import` and `require` of every SDK subpath work. Closes #814 --- .../tutorials/contribute-generator.mdx | 12 +- .../content/docs/en/guides/nx-generator.mdx | 4 +- package.json | 1 + packages/nx-plugin/.swcrc | 22 + packages/nx-plugin/.swcrc.cjs | 20 + packages/nx-plugin/LICENSE-THIRD-PARTY | 1836 +++++++++++++++-- packages/nx-plugin/package.json | 19 +- packages/nx-plugin/project.json | 40 +- .../nx-plugin/scripts/finalize-package.mjs | 80 + packages/nx-plugin/sdk/py.ts | 10 +- .../src/agentcore-gateway/attach-upstream.ts | 12 +- .../gateway-connection/generator.ts | 19 +- .../src/agentcore-gateway/generator.spec.ts | 6 +- .../src/agentcore-gateway/generator.ts | 6 +- .../mcp-connection/generator.ts | 19 +- .../src/connection/generator.spec.ts | 2 +- .../src/connection/local-dev.spec.ts | 30 +- packages/nx-plugin/src/infra/app/generator.ts | 7 +- packages/nx-plugin/src/license/config.ts | 15 +- .../dependency-check/collectors/collector.ts | 7 +- .../collectors/python-collector.ts | 2 +- packages/nx-plugin/src/license/generator.ts | 5 +- .../nx-plugin/src/license/sync/generator.ts | 6 +- .../src/license/sync/project-file-sync.ts | 2 +- .../src/mcp-server/generator-info.ts | 8 +- packages/nx-plugin/src/mcp-server/server.ts | 2 +- .../src/open-api/ts-client/generator.ts | 7 +- .../src/open-api/ts-hooks/generator.ts | 7 +- .../src/open-api/ts-metadata/generator.ts | 7 +- packages/nx-plugin/src/preset/generator.ts | 13 +- .../src/py/agent/a2a-connection/generator.ts | 4 +- .../py/agent/gateway-connection/generator.ts | 8 +- packages/nx-plugin/src/py/agent/generator.ts | 24 +- .../src/py/agent/mcp-connection/generator.ts | 8 +- .../py/agent/react-connection/generator.ts | 4 +- packages/nx-plugin/src/py/api/generator.ts | 5 +- .../agent-connection/generator.spec.ts | 6 +- .../py/dynamodb/agent-connection/generator.ts | 2 +- .../fast-api-connection/generator.spec.ts | 4 +- .../dynamodb/fast-api-connection/generator.ts | 2 +- .../nx-plugin/src/py/dynamodb/generator.ts | 7 +- .../mcp-server-connection/generator.spec.ts | 6 +- .../mcp-server-connection/generator.ts | 2 +- .../src/py/fast-api/generator.spec.ts | 5 +- .../nx-plugin/src/py/fast-api/generator.ts | 11 +- .../src/py/fast-api/react/generator.ts | 5 +- .../src/py/fast-api/react/open-api.ts | 2 +- .../src/py/lambda-function/generator.ts | 9 +- .../nx-plugin/src/py/mcp-server/generator.ts | 11 +- .../nx-plugin/src/py/project/generator.ts | 5 +- .../nx-plugin/src/smithy/project/generator.ts | 7 +- .../src/smithy/react-connection/generator.ts | 4 +- .../nx-plugin/src/smithy/ts/api/generator.ts | 15 +- .../src/terraform/project/generator.ts | 4 +- .../nx-plugin/src/trpc/backend/generator.ts | 9 +- .../nx-plugin/src/trpc/react/generator.ts | 14 +- .../src/ts/agent/a2a-connection/generator.ts | 4 +- .../ts/agent/gateway-connection/generator.ts | 4 +- .../nx-plugin/src/ts/agent/generator.spec.ts | 4 +- packages/nx-plugin/src/ts/agent/generator.ts | 13 +- .../src/ts/agent/mcp-connection/generator.ts | 4 +- .../ts/agent/react-connection/generator.ts | 11 +- packages/nx-plugin/src/ts/api/generator.ts | 5 +- .../nx-plugin/src/ts/astro-docs/generator.ts | 9 +- packages/nx-plugin/src/ts/docs/generator.ts | 5 +- .../agent-connection/generator.spec.ts | 6 +- .../ts/dynamodb/agent-connection/generator.ts | 2 +- .../nx-plugin/src/ts/dynamodb/generator.ts | 7 +- .../mcp-server-connection/generator.spec.ts | 6 +- .../mcp-server-connection/generator.ts | 2 +- .../smithy-connection/generator.spec.ts | 4 +- .../dynamodb/smithy-connection/generator.ts | 2 +- .../trpc-connection/generator.spec.ts | 4 +- .../ts/dynamodb/trpc-connection/generator.ts | 2 +- .../src/ts/lambda-function/generator.ts | 4 +- packages/nx-plugin/src/ts/lib/generator.ts | 7 +- packages/nx-plugin/src/ts/lib/vitest.spec.ts | 25 +- packages/nx-plugin/src/ts/lib/vitest.ts | 5 +- .../nx-plugin/src/ts/mcp-server/generator.ts | 9 +- .../__snapshots__/generator.spec.ts.snap | 23 +- .../files/local/generator.ts.template | 6 +- .../generator/generator.ts.template | 8 +- .../src/ts/nx-generator/generator.spec.ts | 17 +- .../src/ts/nx-generator/generator.ts | 24 +- .../__snapshots__/generator.spec.ts.snap | 26 +- .../tools/general-guidance.ts.template | 2 +- .../files/mcp-server/utils.ts.template | 6 +- .../src/ts/nx-plugin/generator.spec.ts | 21 +- .../nx-plugin/src/ts/nx-plugin/generator.ts | 7 +- packages/nx-plugin/src/ts/nx-plugin/utils.ts | 38 +- .../ts/rdb/agent-connection/generator.spec.ts | 6 +- .../src/ts/rdb/agent-connection/generator.ts | 2 +- packages/nx-plugin/src/ts/rdb/generator.ts | 7 +- .../mcp-server-connection/generator.spec.ts | 6 +- .../ts/rdb/mcp-server-connection/generator.ts | 2 +- .../rdb/smithy-connection/generator.spec.ts | 6 +- .../src/ts/rdb/smithy-connection/generator.ts | 2 +- .../ts/rdb/trpc-connection/generator.spec.ts | 4 +- .../src/ts/rdb/trpc-connection/generator.ts | 4 +- .../src/ts/react-website/agui/generator.ts | 9 +- .../src/ts/react-website/app/generator.ts | 12 +- .../react-website/cognito-auth/generator.ts | 12 +- .../generator.ux-provider.spec.ts | 4 +- .../ts/react-website/cognito-auth/utils.ts | 5 +- .../react-website/runtime-config/generator.ts | 7 +- packages/nx-plugin/src/ts/sync/generator.ts | 7 +- .../nx-plugin/src/ts/website/app/generator.ts | 5 +- .../src/ts/website/auth/generator.ts | 5 +- .../src/utils/agent-chat/agent-chat.ts | 4 +- .../agent-connection/agent-connection.ts | 6 +- .../agent-core-constructs.ts | 38 +- .../utils/api-constructs/api-constructs.ts | 15 +- .../integration-builder.spec.ts | 2 +- packages/nx-plugin/src/utils/bundle/bundle.ts | 2 +- packages/nx-plugin/src/utils/config/index.ts | 4 +- packages/nx-plugin/src/utils/config/utils.ts | 21 +- .../src/utils/connection/open-api/react.ts | 6 +- .../dynamodb-constructs.ts | 14 +- packages/nx-plugin/src/utils/format.ts | 9 +- .../function-constructs.ts | 10 +- packages/nx-plugin/src/utils/generators.ts | 2 +- .../identity-constructs.ts | 4 +- .../nx-plugin/src/utils/infra-scripts.spec.ts | 10 +- packages/nx-plugin/src/utils/metrics.spec.ts | 5 +- .../nx-plugin/src/utils/mock-project-graph.ts | 1 - packages/nx-plugin/src/utils/nx.spec.ts | 8 +- packages/nx-plugin/src/utils/nx.ts | 8 +- packages/nx-plugin/src/utils/nxlv-python.ts | 3 + packages/nx-plugin/src/utils/py.ts | 3 +- .../utils/rdb-constructs/rdb-constructs.ts | 8 +- .../nx-plugin/src/utils/shared-constructs.ts | 11 +- .../src/utils/shared-dynamodb-scripts.ts | 2 +- .../src/utils/shared-infra-config.ts | 9 +- .../src/utils/shared-infra-scripts.ts | 10 +- .../nx-plugin/src/utils/shared-rdb-scripts.ts | 2 +- packages/nx-plugin/src/utils/shared-shadcn.ts | 11 +- packages/nx-plugin/src/utils/test/ts.spec.ts | 2 +- .../website-constructs/website-constructs.ts | 8 +- packages/nx-plugin/tsconfig.json | 1 - packages/nx-plugin/tsconfig.lib.json | 1 + pnpm-lock.yaml | 777 ++++++- 141 files changed, 3136 insertions(+), 717 deletions(-) create mode 100644 packages/nx-plugin/.swcrc create mode 100644 packages/nx-plugin/.swcrc.cjs create mode 100644 packages/nx-plugin/scripts/finalize-package.mjs diff --git a/docs/src/content/docs/en/get_started/tutorials/contribute-generator.mdx b/docs/src/content/docs/en/get_started/tutorials/contribute-generator.mdx index b30b579b5..bf3b76c00 100644 --- a/docs/src/content/docs/en/get_started/tutorials/contribute-generator.mdx +++ b/docs/src/content/docs/en/get_started/tutorials/contribute-generator.mdx @@ -187,9 +187,9 @@ import { generateFiles, joinPathFragments, readProjectConfiguration, - Tree, + type Tree, } from '@nx/devkit'; -import { TrpcProcedureSchema } from './schema'; +import type { TrpcProcedureSchema } from './schema.js'; import { formatFilesInSubtree } from '../../utils/format'; import camelCase from 'lodash.camelcase'; import kebabCase from 'lodash.kebabcase'; @@ -205,7 +205,7 @@ export const trpcProcedureGenerator = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), projectConfig.sourceRoot, { procedureNameCamelCase, @@ -235,9 +235,9 @@ import { generateFiles, joinPathFragments, readProjectConfiguration, - Tree, + type Tree, } from '@nx/devkit'; -import { TrpcProcedureSchema } from './schema'; +import type { TrpcProcedureSchema } from './schema.js'; import { formatFilesInSubtree } from '../../utils/format'; import camelCase from 'lodash.camelcase'; import kebabCase from 'lodash.kebabcase'; @@ -254,7 +254,7 @@ export const trpcProcedureGenerator = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), projectConfig.sourceRoot, { procedureNameCamelCase, diff --git a/docs/src/content/docs/en/guides/nx-generator.mdx b/docs/src/content/docs/en/guides/nx-generator.mdx index 25a0b9deb..9aa9b16d8 100644 --- a/docs/src/content/docs/en/guides/nx-generator.mdx +++ b/docs/src/content/docs/en/guides/nx-generator.mdx @@ -286,7 +286,7 @@ import { generateFiles, joinPathFragments } from '@nx/devkit'; // Generate files from templates generateFiles( tree, - joinPathFragments(__dirname, 'files'), // Template directory + joinPathFragments(import.meta.dirname, 'files'), // Template directory 'path/to/output', // Output directory { // Variables to replace in templates @@ -459,7 +459,7 @@ export const myGenerator = async (tree: Tree, schema: MyGeneratorSchema) => { generateFiles( tree, - joinPathFragments(__dirname, 'files'), // Template directory + joinPathFragments(import.meta.dirname, 'files'), // Template directory 'path/to/output', // Output directory data, ); diff --git a/package.json b/package.json index 6619f3d61..867736297 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ "@smithy/node-http-handler": "4.7.8", "@strands-agents/sdk": "1.5.0", "@swc-node/register": "1.11.1", + "@swc/cli": "0.7.9", "@swc/core": "1.15.41", "@swc/helpers": "0.5.23", "@tailwindcss/vite": "4.2.2", diff --git a/packages/nx-plugin/.swcrc b/packages/nx-plugin/.swcrc new file mode 100644 index 000000000..5bf99ff09 --- /dev/null +++ b/packages/nx-plugin/.swcrc @@ -0,0 +1,22 @@ +{ + "$schema": "https://swc.rs/schema.json", + "sourceMaps": true, + "jsc": { + "target": "es2022", + "baseUrl": "src", + "parser": { "syntax": "typescript", "decorators": true }, + "transform": { "legacyDecorator": true, "decoratorMetadata": true }, + "keepClassNames": true, + "externalHelpers": false, + "experimental": { "keepImportAttributes": true } + }, + "module": { "type": "es6", "resolveFully": true, "strict": true }, + "exclude": [ + ".*\\.spec\\.ts$", + ".*\\.test\\.ts$", + ".*\\.spec\\.tsx$", + ".*\\.test\\.tsx$", + "[/\\\\]files[/\\\\]", + ".*\\.template$" + ] +} diff --git a/packages/nx-plugin/.swcrc.cjs b/packages/nx-plugin/.swcrc.cjs new file mode 100644 index 000000000..7ec066c70 --- /dev/null +++ b/packages/nx-plugin/.swcrc.cjs @@ -0,0 +1,20 @@ +{ + "$schema": "https://swc.rs/schema.json", + "sourceMaps": true, + "jsc": { + "target": "es2022", + "parser": { "syntax": "typescript", "decorators": true }, + "transform": { "legacyDecorator": true, "decoratorMetadata": true }, + "keepClassNames": true, + "externalHelpers": false + }, + "module": { "type": "commonjs", "strict": true }, + "exclude": [ + ".*\\.spec\\.ts$", + ".*\\.test\\.ts$", + ".*\\.spec\\.tsx$", + ".*\\.test\\.tsx$", + "[/\\\\]files[/\\\\]", + ".*\\.template$" + ] +} diff --git a/packages/nx-plugin/LICENSE-THIRD-PARTY b/packages/nx-plugin/LICENSE-THIRD-PARTY index 525ad5da3..150ee1b92 100644 --- a/packages/nx-plugin/LICENSE-THIRD-PARTY +++ b/packages/nx-plugin/LICENSE-THIRD-PARTY @@ -3126,6 +3126,21 @@ SOFTWARE. --- +The following software may be included in this product: @borewit/text-codec (0.2.2) +This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright © 2025 Borewit + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: @bramus/specificity (2.4.2) This software contains the following license and notice below: @@ -4847,6 +4862,57 @@ SOFTWARE. --- +The following software may be included in this product: @napi-rs/nice (1.1.1) +This software contains the following license and notice below: + +MIT License + +Copyright (c) 2020 N-API for Rust + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +--- + +The following software may be included in this product: @napi-rs/nice-linux-x64-gnu (1.1.1) +This software contains the following license and notice below: + +MIT License + +Copyright (c) The maintainers of @napi-rs/nice-linux-x64-gnu + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +associated documentation files (the "Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the +following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO +EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: @napi-rs/wasm-runtime (0.2.4) This software contains the following license and notice below: @@ -6048,206 +6114,12 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI --- -The following software may be included in this product: @standard-schema/spec (1.1.0) +The following software may be included in this product: @sindresorhus/is (5.6.0) This software contains the following license and notice below: MIT License -Copyright (c) 2024 Colin McDonnell - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - ---- - -The following software may be included in this product: @svgr/babel-plugin-add-jsx-attribute (8.0.0) -This software contains the following license and notice below: - -Copyright 2017 Smooth Code - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---- - -The following software may be included in this product: @svgr/babel-plugin-remove-jsx-attribute (8.0.0) -This software contains the following license and notice below: - -Copyright 2017 Smooth Code - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---- - -The following software may be included in this product: @svgr/babel-plugin-remove-jsx-empty-expression (8.0.0) -This software contains the following license and notice below: - -Copyright 2017 Smooth Code - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---- - -The following software may be included in this product: @svgr/babel-plugin-replace-jsx-attribute-value (8.0.0) -This software contains the following license and notice below: - -Copyright 2017 Smooth Code - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---- - -The following software may be included in this product: @svgr/babel-plugin-svg-dynamic-title (8.0.0) -This software contains the following license and notice below: - -Copyright 2017 Smooth Code - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---- - -The following software may be included in this product: @svgr/babel-plugin-svg-em-dimensions (8.0.0) -This software contains the following license and notice below: - -Copyright 2017 Smooth Code - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---- - -The following software may be included in this product: @svgr/babel-plugin-transform-react-native-svg (8.1.0) -This software contains the following license and notice below: - -Copyright 2017 Smooth Code - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---- - -The following software may be included in this product: @svgr/babel-plugin-transform-svg-component (8.0.0) -This software contains the following license and notice below: - -Copyright 2017 Smooth Code - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---- - -The following software may be included in this product: @svgr/babel-preset (8.1.0) -This software contains the following license and notice below: - -Copyright 2017 Smooth Code - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---- - -The following software may be included in this product: @svgr/core (8.1.0) -This software contains the following license and notice below: - -Copyright 2017 Smooth Code - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---- - -The following software may be included in this product: @svgr/hast-util-to-babel-ast (8.0.0) -This software contains the following license and notice below: - -Copyright 2017 Smooth Code - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---- - -The following software may be included in this product: @svgr/plugin-jsx (8.1.0) -This software contains the following license and notice below: - -Copyright 2017 Smooth Code - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---- - -The following software may be included in this product: @svgr/plugin-svgo (8.1.0) -This software contains the following license and notice below: - -Copyright 2017 Smooth Code - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---- - -The following software may be included in this product: @svgr/webpack (8.1.0) -This software contains the following license and notice below: - -Copyright 2017 Smooth Code +Copyright (c) Sindre Sorhus (https://sindresorhus.com) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: @@ -6257,12 +6129,221 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI --- -The following software may be included in this product: @swc-node/core (1.14.1) +The following software may be included in this product: @standard-schema/spec (1.1.0) This software contains the following license and notice below: MIT License -Copyright (c) 2020-present LongYinan +Copyright (c) 2024 Colin McDonnell + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +--- + +The following software may be included in this product: @svgr/babel-plugin-add-jsx-attribute (8.0.0) +This software contains the following license and notice below: + +Copyright 2017 Smooth Code + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: @svgr/babel-plugin-remove-jsx-attribute (8.0.0) +This software contains the following license and notice below: + +Copyright 2017 Smooth Code + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: @svgr/babel-plugin-remove-jsx-empty-expression (8.0.0) +This software contains the following license and notice below: + +Copyright 2017 Smooth Code + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: @svgr/babel-plugin-replace-jsx-attribute-value (8.0.0) +This software contains the following license and notice below: + +Copyright 2017 Smooth Code + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: @svgr/babel-plugin-svg-dynamic-title (8.0.0) +This software contains the following license and notice below: + +Copyright 2017 Smooth Code + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: @svgr/babel-plugin-svg-em-dimensions (8.0.0) +This software contains the following license and notice below: + +Copyright 2017 Smooth Code + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: @svgr/babel-plugin-transform-react-native-svg (8.1.0) +This software contains the following license and notice below: + +Copyright 2017 Smooth Code + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: @svgr/babel-plugin-transform-svg-component (8.0.0) +This software contains the following license and notice below: + +Copyright 2017 Smooth Code + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: @svgr/babel-preset (8.1.0) +This software contains the following license and notice below: + +Copyright 2017 Smooth Code + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: @svgr/core (8.1.0) +This software contains the following license and notice below: + +Copyright 2017 Smooth Code + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: @svgr/hast-util-to-babel-ast (8.0.0) +This software contains the following license and notice below: + +Copyright 2017 Smooth Code + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: @svgr/plugin-jsx (8.1.0) +This software contains the following license and notice below: + +Copyright 2017 Smooth Code + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: @svgr/plugin-svgo (8.1.0) +This software contains the following license and notice below: + +Copyright 2017 Smooth Code + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: @svgr/webpack (8.1.0) +This software contains the following license and notice below: + +Copyright 2017 Smooth Code + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: @swc-node/core (1.14.1) +This software contains the following license and notice below: + +MIT License + +Copyright (c) 2020-present LongYinan Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -6338,6 +6419,37 @@ SOFTWARE. --- +The following software may be included in this product: @swc/cli (0.7.9) +This software contains the following license and notice below: + +Copyright (c) 2024 The swc Project Developers + +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: @szmarczak/http-timer (4.0.6) This software contains the following license and notice below: @@ -6365,6 +6477,69 @@ SOFTWARE. --- +The following software may be included in this product: @szmarczak/http-timer (5.0.1) +This software contains the following license and notice below: + +MIT License + +Copyright (c) 2018 Szymon Marczak + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +--- + +The following software may be included in this product: @tokenizer/inflate (0.2.7) +This software contains the following license and notice below: + +Copyright (c) 2024, Borewit +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: @tokenizer/token (0.3.0) +This software contains the following license and notice below: + +(The MIT License) + +Copyright (c) 2020 Borewit + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: @tybys/wasm-util (0.9.0) This software contains the following license and notice below: @@ -6767,7 +6942,7 @@ SOFTWARE --- -The following software may be included in this product: @types/http-proxy (1.17.16) +The following software may be included in this product: @types/http-cache-semantics (4.2.0) This software contains the following license and notice below: MIT License @@ -6794,7 +6969,7 @@ SOFTWARE --- -The following software may be included in this product: @types/js-yaml (4.0.9) +The following software may be included in this product: @types/http-proxy (1.17.16) This software contains the following license and notice below: MIT License @@ -6821,7 +6996,34 @@ SOFTWARE --- -The following software may be included in this product: @types/json-schema (7.0.15) +The following software may be included in this product: @types/js-yaml (4.0.9) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Microsoft Corporation. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE + +--- + +The following software may be included in this product: @types/json-schema (7.0.15) This software contains the following license and notice below: MIT License @@ -8225,6 +8427,192 @@ SOFTWARE. --- +The following software may be included in this product: @xhmikosr/archive-type (7.1.0) +This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) Kevin Mårtensson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +--- + +The following software may be included in this product: @xhmikosr/bin-check (7.1.0) +This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) Kevin Mårtensson (github.com/kevva) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +--- + +The following software may be included in this product: @xhmikosr/bin-wrapper (13.2.0) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Kevin Mårtensson + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: @xhmikosr/decompress (10.2.1) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Kevin Mårtensson (github.com/kevva) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: @xhmikosr/decompress-tar (8.1.0) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Kevin Mårtensson (github.com/kevva) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: @xhmikosr/decompress-tarbz2 (8.1.0) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Kevin Mårtensson (github.com/kevva) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: @xhmikosr/decompress-targz (8.1.0) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Kevin Mårtensson (github.com/kevva) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: @xhmikosr/decompress-unzip (7.1.0) +This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) Kevin Mårtensson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +--- + +The following software may be included in this product: @xhmikosr/downloader (15.2.0) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Kevin Mårtensson (github.com/kevva) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: @xhmikosr/os-filter-obj (3.0.0) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Kevin Mårtensson (github.com/kevva) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: @zkochan/js-yaml (0.0.7) This software contains the following license and notice below: @@ -8797,6 +9185,32 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --- +The following software may be included in this product: arch (3.0.0) +This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) Feross Aboukhadijeh + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: archiver (7.0.1) This software contains the following license and notice below: @@ -9561,6 +9975,36 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --- +The following software may be included in this product: bin-version (6.0.0) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: bin-version-check (5.1.0) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: bl (4.1.0) This software contains the following license and notice below: @@ -10016,6 +10460,33 @@ SOFTWARE. --- +The following software may be included in this product: cacheable-lookup (7.0.0) +This software contains the following license and notice below: + +MIT License + +Copyright (c) 2019 Szymon Marczak + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +--- + The following software may be included in this product: cacheable-request (7.0.2) This software contains the following license and notice below: @@ -10043,6 +10514,30 @@ SOFTWARE. --- +The following software may be included in this product: cacheable-request (10.2.14) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Jared Wray + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +associated documentation files (the "Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the +following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO +EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: call-bind-apply-helpers (1.0.2) This software contains the following license and notice below: @@ -10715,6 +11210,34 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --- +The following software may be included in this product: commander (6.2.1) +This software contains the following license and notice below: + +(The MIT License) + +Copyright (c) 2011 TJ Holowaychuk + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: commander (7.2.0) This software contains the following license and notice below: @@ -10743,6 +11266,34 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --- +The following software may be included in this product: commander (8.3.0) +This software contains the following license and notice below: + +(The MIT License) + +Copyright (c) 2011 TJ Holowaychuk + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: commander (11.1.0) This software contains the following license and notice below: @@ -12081,6 +12632,22 @@ THE SOFTWARE. --- +The following software may be included in this product: defaults (2.0.2) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) +Copyright (c) Elijah Insua + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: defer-to-connect (2.0.1) This software contains the following license and notice below: @@ -13427,6 +13994,21 @@ SOFTWARE. --- +The following software may be included in this product: execa (5.1.1) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: expand-tilde (2.0.2) This software contains the following license and notice below: @@ -13553,6 +14135,60 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --- +The following software may be included in this product: ext-list (2.2.2) +This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) Kevin Mårtensson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +--- + +The following software may be included in this product: ext-name (5.0.0) +This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) Kevin Mårtensson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +--- + The following software may be included in this product: extend (3.0.2) This software contains the following license and notice below: @@ -13881,6 +14517,21 @@ SOFTWARE. --- +The following software may be included in this product: file-type (20.5.0) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: file-uri-to-path (2.0.0) This software contains the following license and notice below: @@ -13907,6 +14558,36 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --- +The following software may be included in this product: filename-reserved-regex (3.0.0) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: filenamify (6.0.0) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: fill-range (7.1.1) This software contains the following license and notice below: @@ -14059,6 +14740,21 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI --- +The following software may be included in this product: find-versions (5.1.0) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: flat-cache (4.0.1) This software contains the following license and notice below: @@ -14162,6 +14858,33 @@ SOFTWARE. --- +The following software may be included in this product: form-data-encoder (2.1.4) +This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) 2021-present Nick K. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +--- + The following software may be included in this product: format (0.2.2) This software contains the following license and notice below: @@ -14727,6 +15450,21 @@ SOFTWARE. --- +The following software may be included in this product: got (13.0.0) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: got-cjs (12.5.4) This software contains the following license and notice below: @@ -15930,6 +16668,33 @@ THE SOFTWARE. --- +The following software may be included in this product: is-plain-obj (1.1.0) +This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +--- + The following software may be included in this product: is-plain-obj (4.1.0) This software contains the following license and notice below: @@ -17026,6 +17791,33 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. --- +The following software may be included in this product: kind-of (6.0.3) +This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) 2014-2017, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +--- + The following software may be included in this product: koa (3.0.3) This software contains the following license and notice below: @@ -18217,6 +19009,21 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI --- +The following software may be included in this product: lowercase-keys (3.0.0) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: luxon (3.7.2) This software contains the following license and notice below: @@ -19804,6 +20611,21 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI --- +The following software may be included in this product: mimic-response (4.0.0) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: mini-svg-data-uri (1.4.4) This software contains the following license and notice below: @@ -20566,6 +21388,21 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI --- +The following software may be included in this product: normalize-url (8.1.1) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: npm-run-path (4.0.1) This software contains the following license and notice below: @@ -20996,6 +21833,21 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI --- +The following software may be included in this product: p-cancelable (3.0.0) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: p-limit (3.1.0) This software contains the following license and notice below: @@ -21471,6 +22323,35 @@ THE SOFTWARE. --- +The following software may be included in this product: pend (1.2.0) +This software contains the following license and notice below: + +The MIT License (Expat) + +Copyright (c) 2014 Andrew Kelley + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation files +(the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, +and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +--- + The following software may be included in this product: perfect-debounce (1.0.0) This software contains the following license and notice below: @@ -21701,6 +22582,36 @@ SOFTWARE. --- +The following software may be included in this product: piscina (4.9.3) +This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) 2026 James M Snell and the Piscina contributors + +Piscina contributors listed at https://github.com/jasnell/piscina#the-team and +in the README file. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +--- + The following software may be included in this product: pkce-challenge (5.0.0) This software contains the following license and notice below: @@ -23200,6 +24111,22 @@ THE SOFTWARE. --- +The following software may be included in this product: responselike (3.0.0) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) +Copyright (c) Luke Childs (https://lukechilds.co.uk) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: restore-cursor (3.1.0) This software contains the following license and notice below: @@ -24245,6 +25172,68 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. --- +The following software may be included in this product: seek-bzip (2.0.0) +This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright © 2013-2015 C. Scott Ananian + +Copyright © 2012-2015 Eli Skeggs + +Copyright © 2011 Kevin Kwok + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: semver-regex (4.0.5) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: semver-truncate (3.0.0) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: send (0.19.0) This software contains the following license and notice below: @@ -24623,6 +25612,58 @@ SOFTWARE. --- +The following software may be included in this product: sort-keys (1.1.2) +This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +--- + +The following software may be included in this product: sort-keys-length (1.0.1) +This software contains the following license and notice below: + +Copyright (c) Kevin Mårtensson + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +--- + The following software may be included in this product: sorted-array-functions (1.3.0) This software contains the following license and notice below: @@ -25288,6 +26329,21 @@ THE SOFTWARE. --- +The following software may be included in this product: strip-final-newline (2.0.0) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: strip-json-comments (3.1.1) This software contains the following license and notice below: @@ -25303,6 +26359,33 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI --- +The following software may be included in this product: strtok3 (10.3.5) +This software contains the following license and notice below: + +MIT License + +Copyright © 2026 Borewit + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +--- + The following software may be included in this product: supports-color (7.2.0) This software contains the following license and notice below: @@ -25954,6 +27037,21 @@ SOFTWARE. --- +The following software may be included in this product: token-types (6.1.2) +This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright © 2026 Borewit + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: totalist (3.0.1) This software contains the following license and notice below: @@ -26292,6 +27390,51 @@ SOFTWARE. --- +The following software may be included in this product: uint8array-extras (1.5.0) +This software contains the following license and notice below: + +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +The following software may be included in this product: unbzip2-stream (1.4.3) +This software contains the following license and notice below: + +Copyright (c) 2017 by Jan Boelsche (jan@lagomorph.de) + +based on bzip2.js - a small bzip2 decompression implementation +Copyright 2011 by antimatter15 (antimatter15@gmail.com) + +Based on micro-bunzip by Rob Landley (rob@landley.net). + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH +THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + The following software may be included in this product: undici (7.24.7) This software contains the following license and notice below: @@ -30650,6 +31793,33 @@ THE SOFTWARE. --- +The following software may be included in this product: yauzl (3.4.0) +This software contains the following license and notice below: + +The MIT License (MIT) + +Copyright (c) 2014 Josh Wolfe + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +--- + The following software may be included in this product: yocto-queue (0.1.0) This software contains the following license and notice below: @@ -36675,6 +37845,213 @@ limitations under the License. --- +The following software may be included in this product: human-signals (2.1.0) +This software contains the following license and notice below: + +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright 2019 ehmicky + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +--- + The following software may be included in this product: log4js (6.9.1) This software contains the following license and notice below: @@ -38468,6 +39845,18 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. --- +The following software may be included in this product: inspect-with-kind (1.0.5) +This software contains the following license and notice below: + +ISC License (ISC) +Copyright 2017 - 2018 Shinnosuke Watanabe + +Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +--- + The following software may be included in this product: isexe (2.0.0) This software contains the following license and notice below: @@ -39126,6 +40515,18 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. --- +The following software may be included in this product: strip-dirs (3.0.0) +This software contains the following license and notice below: + +ISC License (ISC) +Copyright 2017 - 2018 Shinnosuke Watanabe + +Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +--- + The following software may be included in this product: tar (6.2.1) This software contains the following license and notice below: @@ -40057,6 +41458,39 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --- +The following software may be included in this product: source-map (0.7.6) +This software contains the following license and notice below: + +Copyright (c) 2009-2011, Mozilla Foundation and contributors +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the names of the Mozilla Foundation nor the names of project + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--- + The following software may be included in this product: source-map-js (1.2.1) This software contains the following license and notice below: diff --git a/packages/nx-plugin/package.json b/packages/nx-plugin/package.json index 0d00ab908..437320f5c 100644 --- a/packages/nx-plugin/package.json +++ b/packages/nx-plugin/package.json @@ -7,10 +7,25 @@ "directory": "packages/nx-plugin" }, "private": false, - "type": "commonjs", + "type": "module", "license": "Apache-2.0", - "main": "./src/index.js", + "main": "./cjs/src/index.js", + "module": "./src/index.js", + "types": "./src/index.d.ts", "typings": "./src/index.d.ts", + "exports": { + ".": { + "types": "./src/index.d.ts", + "import": "./src/index.js", + "require": "./cjs/src/index.js" + }, + "./sdk/*": { + "types": "./sdk/*.d.ts", + "import": "./sdk/*.js", + "require": "./cjs/sdk/*.js" + }, + "./package.json": "./package.json" + }, "publishConfig": { "access": "public" }, diff --git a/packages/nx-plugin/project.json b/packages/nx-plugin/project.json index 5af8cd12d..21be15cd0 100644 --- a/packages/nx-plugin/project.json +++ b/packages/nx-plugin/project.json @@ -6,36 +6,18 @@ "tags": [], "targets": { "compile": { - "executor": "@nx/js:tsc", - "outputs": ["{options.outputPath}"], + "executor": "nx:run-commands", + "outputs": ["{workspaceRoot}/dist/packages/nx-plugin"], + "cache": true, + "dependsOn": ["^compile"], "options": { - "outputPath": "dist/packages/nx-plugin", - "main": "packages/nx-plugin/src/index.ts", - "tsConfig": "packages/nx-plugin/tsconfig.lib.json", - "assets": [ - "packages/nx-plugin/*.md", - "packages/nx-plugin/LICENSE*", - "packages/nx-plugin/NOTICE", - { - "input": "./packages/nx-plugin/src", - "glob": "**/!(*.ts)", - "output": "./src" - }, - { - "input": "./packages/nx-plugin/src", - "glob": "**/*.d.ts", - "output": "./src" - }, - { - "input": "./packages/nx-plugin", - "glob": "generators.json", - "output": "." - }, - { - "input": "./packages/nx-plugin", - "glob": "executors.json", - "output": "." - } + "cwd": "{projectRoot}", + "parallel": false, + "commands": [ + "node ../../node_modules/@swc/cli/bin/swc.js src sdk bin -d ../../dist/packages/nx-plugin --config-file=.swcrc --copy-files", + "node ../../node_modules/@swc/cli/bin/swc.js src sdk bin -d ../../dist/packages/nx-plugin/cjs --config-file=.swcrc.cjs", + "tsc -p tsconfig.lib.json --declaration --emitDeclarationOnly --rootDir . --outDir ../../dist/packages/nx-plugin", + "node scripts/finalize-package.mjs" ] } }, diff --git a/packages/nx-plugin/scripts/finalize-package.mjs b/packages/nx-plugin/scripts/finalize-package.mjs new file mode 100644 index 000000000..8c33900c0 --- /dev/null +++ b/packages/nx-plugin/scripts/finalize-package.mjs @@ -0,0 +1,80 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * Finalizes the dist output after the dual ESM/CJS swc builds: + * - copies root-level package assets (package.json, manifests, docs) + * - mirrors the JSON manifests into `cjs/` and drops a `cjs/package.json` + * marked `"type": "commonjs"` so Node treats the CommonJS output as CJS + * (and so relative `require('../../package.json')` from the CJS sources + * resolves to the real manifest) even though the package root is + * `"type": "module"` + */ +import { glob } from 'node:fs/promises'; +import { + copyFileSync, + existsSync, + mkdirSync, + readFileSync, + writeFileSync, +} from 'node:fs'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const projectRoot = join(dirname(fileURLToPath(import.meta.url)), '..'); +const distRoot = join(projectRoot, '..', '..', 'dist', 'packages', 'nx-plugin'); + +// Copy hand-authored declaration files (e.g. schema.d.ts) that swc's +// `--copy-files` skips and tsc does not re-emit. +for (const dir of ['src', 'sdk']) { + for await (const file of glob(`${dir}/**/*.d.ts`, { cwd: projectRoot })) { + const dest = join(distRoot, file); + mkdirSync(dirname(dest), { recursive: true }); + copyFileSync(join(projectRoot, file), dest); + } +} + +const rootAssets = [ + 'package.json', + 'generators.json', + 'executors.json', + 'README.md', + 'LICENSE', + 'LICENSE-THIRD-PARTY', + 'NOTICE', +]; + +for (const asset of rootAssets) { + const src = join(projectRoot, asset); + if (existsSync(src)) { + copyFileSync(src, join(distRoot, asset)); + } +} + +// The CJS sources live under `cjs/src` and `cjs/sdk`, so their relative +// `require('../../')` calls resolve against `cjs/`. Mirror the JSON +// manifests there, and write a minimal `cjs/package.json` marker that tells +// Node to load the CommonJS output as CJS even though the package root is +// `"type": "module"`. It carries only name/version (read at runtime via +// `require('../../package.json')`) — keeping it minimal avoids nesting a second +// full manifest (with its own `exports`) inside the published package. +mkdirSync(join(distRoot, 'cjs'), { recursive: true }); + +for (const manifest of ['generators.json', 'executors.json']) { + const src = join(projectRoot, manifest); + if (existsSync(src)) { + copyFileSync(src, join(distRoot, 'cjs', manifest)); + } +} + +const pkg = JSON.parse(readFileSync(join(projectRoot, 'package.json'), 'utf-8')); +writeFileSync( + join(distRoot, 'cjs', 'package.json'), + `${JSON.stringify( + { name: pkg.name, version: pkg.version, type: 'commonjs' }, + null, + 2, + )}\n`, +); diff --git a/packages/nx-plugin/sdk/py.ts b/packages/nx-plugin/sdk/py.ts index 2dd8e46db..e01d9e07d 100644 --- a/packages/nx-plugin/sdk/py.ts +++ b/packages/nx-plugin/sdk/py.ts @@ -4,15 +4,15 @@ */ export { pyAgentGenerator } from '../src/py/agent/generator'; -export { PyAgentGeneratorSchema } from '../src/py/agent/schema'; +export type { PyAgentGeneratorSchema } from '../src/py/agent/schema'; export { pyApiGenerator } from '../src/py/api/generator'; -export { PyApiGeneratorSchema } from '../src/py/api/schema'; +export type { PyApiGeneratorSchema } from '../src/py/api/schema'; export { pyLambdaFunctionGenerator } from '../src/py/lambda-function/generator'; -export { PyLambdaFunctionGeneratorSchema } from '../src/py/lambda-function/schema'; +export type { PyLambdaFunctionGeneratorSchema } from '../src/py/lambda-function/schema'; export { pyMcpServerGenerator } from '../src/py/mcp-server/generator'; -export { PyMcpServerGeneratorSchema } from '../src/py/mcp-server/schema'; +export type { PyMcpServerGeneratorSchema } from '../src/py/mcp-server/schema'; export { pyProjectGenerator } from '../src/py/project/generator'; -export { PyProjectGeneratorSchema } from '../src/py/project/schema'; +export type { PyProjectGeneratorSchema } from '../src/py/project/schema'; diff --git a/packages/nx-plugin/src/agentcore-gateway/attach-upstream.ts b/packages/nx-plugin/src/agentcore-gateway/attach-upstream.ts index 33554f7e9..51f13259f 100644 --- a/packages/nx-plugin/src/agentcore-gateway/attach-upstream.ts +++ b/packages/nx-plugin/src/agentcore-gateway/attach-upstream.ts @@ -47,14 +47,10 @@ export const attachUpstreamToLocalGateway = async ( ): Promise => { // 1. Wire dev chain if (gatewayProject.targets?.[gatewayDevTargetName]) { - addDependencyToTargetIfNotPresent( - gatewayProject, - gatewayDevTargetName, - { - projects: [upstream.upstreamProjectName], - target: upstream.upstreamDevTargetName, - }, - ); + addDependencyToTargetIfNotPresent(gatewayProject, gatewayDevTargetName, { + projects: [upstream.upstreamProjectName], + target: upstream.upstreamDevTargetName, + }); updateProjectConfiguration(tree, gatewayProject.name, gatewayProject); } diff --git a/packages/nx-plugin/src/agentcore-gateway/gateway-connection/generator.ts b/packages/nx-plugin/src/agentcore-gateway/gateway-connection/generator.ts index 2873849d0..85cf8a54f 100644 --- a/packages/nx-plugin/src/agentcore-gateway/gateway-connection/generator.ts +++ b/packages/nx-plugin/src/agentcore-gateway/gateway-connection/generator.ts @@ -23,7 +23,7 @@ import { import type { AgentcoreGatewayGatewayConnectionGeneratorSchema } from './schema'; export const AGENTCORE_GATEWAY_GATEWAY_CONNECTION_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); /** * Connect an AgentCore Gateway to another AgentCore Gateway. @@ -83,17 +83,12 @@ export const agentcoreGatewayGatewayConnectionGenerator = async ( // deployed. const targetGatewayKebabCase = kebabCase(targetGateway.rc); - await attachUpstreamToLocalGateway( - tree, - sourceProject, - 'dev', - { - targetName: targetGatewayKebabCase, - port: targetGateway.port, - upstreamProjectName: targetProject.name, - upstreamDevTargetName: 'dev', - }, - ); + await attachUpstreamToLocalGateway(tree, sourceProject, 'dev', { + targetName: targetGatewayKebabCase, + port: targetGateway.port, + upstreamProjectName: targetProject.name, + upstreamDevTargetName: 'dev', + }); await addGeneratorMetricsIfApplicable(tree, [ AGENTCORE_GATEWAY_GATEWAY_CONNECTION_GENERATOR_INFO, diff --git a/packages/nx-plugin/src/agentcore-gateway/generator.spec.ts b/packages/nx-plugin/src/agentcore-gateway/generator.spec.ts index 23401de91..9103fe902 100644 --- a/packages/nx-plugin/src/agentcore-gateway/generator.spec.ts +++ b/packages/nx-plugin/src/agentcore-gateway/generator.spec.ts @@ -121,9 +121,9 @@ describe('agentcore-gateway generator', () => { tree.read('packages/my-gateway/policies/permit-all.cedar')!.toString(), ).toContain('user-edited'); const rerunConfig = readProjectConfiguration(tree, '@proj/my-gateway'); - expect( - rerunConfig.targets?.['dev'].dependsOn, - ).toContainEqual(expect.objectContaining({ target: 'some-mcp-dev' })); + expect(rerunConfig.targets?.['dev'].dependsOn).toContainEqual( + expect.objectContaining({ target: 'some-mcp-dev' }), + ); // Project metadata is unchanged on re-run expect((rerunConfig.metadata as any).generator).toBe( AGENTCORE_GATEWAY_GENERATOR_INFO.id, diff --git a/packages/nx-plugin/src/agentcore-gateway/generator.ts b/packages/nx-plugin/src/agentcore-gateway/generator.ts index 193904fa5..22d4c39d4 100644 --- a/packages/nx-plugin/src/agentcore-gateway/generator.ts +++ b/packages/nx-plugin/src/agentcore-gateway/generator.ts @@ -33,7 +33,7 @@ import { withVersions } from '../utils/versions'; import type { AgentcoreGatewayGeneratorSchema } from './schema'; export const AGENTCORE_GATEWAY_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); export const agentcoreGatewayGenerator = async ( tree: Tree, @@ -102,7 +102,7 @@ export const agentcoreGatewayGenerator = async ( // Scaffold the gateway project: local-dev.ts (+ Cedar policies if requested) generateFiles( tree, - joinPathFragments(__dirname, 'files', 'project'), + joinPathFragments(import.meta.dirname, 'files', 'project'), projectRoot, { nameClassName, nameKebabCase: name, port, attachedMcpServers: [] }, { overwriteStrategy: OverwriteStrategy.KeepExisting }, @@ -110,7 +110,7 @@ export const agentcoreGatewayGenerator = async ( if (cedarPolicy) { generateFiles( tree, - joinPathFragments(__dirname, 'files', 'cedar'), + joinPathFragments(import.meta.dirname, 'files', 'cedar'), projectRoot, { nameClassName }, { overwriteStrategy: OverwriteStrategy.KeepExisting }, diff --git a/packages/nx-plugin/src/agentcore-gateway/mcp-connection/generator.ts b/packages/nx-plugin/src/agentcore-gateway/mcp-connection/generator.ts index 69abb1c30..90fe86495 100644 --- a/packages/nx-plugin/src/agentcore-gateway/mcp-connection/generator.ts +++ b/packages/nx-plugin/src/agentcore-gateway/mcp-connection/generator.ts @@ -20,7 +20,7 @@ import { readAgentCoreGatewayMetadata } from '../generator'; import type { AgentcoreGatewayMcpConnectionGeneratorSchema } from './schema'; export const AGENTCORE_GATEWAY_MCP_CONNECTION_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); /** * Connect an AgentCore Gateway to an MCP server. @@ -72,17 +72,12 @@ export const agentcoreGatewayMcpConnectionGenerator = async ( const mcpTargetName = kebabCase(mcpComponent.rc as string); const mcpComponentName = mcpComponent.name ?? 'mcp-server'; - await attachUpstreamToLocalGateway( - tree, - sourceProject, - 'dev', - { - targetName: mcpTargetName, - port: (mcpComponent.port as number | undefined) ?? 8000, - upstreamProjectName: targetProject.name, - upstreamDevTargetName: `${mcpComponentName}-dev`, - }, - ); + await attachUpstreamToLocalGateway(tree, sourceProject, 'dev', { + targetName: mcpTargetName, + port: (mcpComponent.port as number | undefined) ?? 8000, + upstreamProjectName: targetProject.name, + upstreamDevTargetName: `${mcpComponentName}-dev`, + }); await addGeneratorMetricsIfApplicable(tree, [ AGENTCORE_GATEWAY_MCP_CONNECTION_GENERATOR_INFO, diff --git a/packages/nx-plugin/src/connection/generator.spec.ts b/packages/nx-plugin/src/connection/generator.spec.ts index fb5cf71ab..96c4ec1f9 100644 --- a/packages/nx-plugin/src/connection/generator.spec.ts +++ b/packages/nx-plugin/src/connection/generator.spec.ts @@ -114,7 +114,7 @@ describe('connection generator', () => { root: `packages/${name}`, metadata: { generator: 'ts#rdb' }, targets: { - 'dev': { executor: 'nx:run-commands', continuous: true }, + dev: { executor: 'nx:run-commands', continuous: true }, }, }), ); diff --git a/packages/nx-plugin/src/connection/local-dev.spec.ts b/packages/nx-plugin/src/connection/local-dev.spec.ts index d39e74a82..34ddd7428 100644 --- a/packages/nx-plugin/src/connection/local-dev.spec.ts +++ b/packages/nx-plugin/src/connection/local-dev.spec.ts @@ -28,7 +28,7 @@ describe('dev', () => { root: 'apps/frontend', sourceRoot: 'apps/frontend/src', targets: { - 'dev': { + dev: { executor: '@nx/webpack:dev-server', options: {}, }, @@ -44,7 +44,7 @@ describe('dev', () => { root: 'apps/backend', sourceRoot: 'apps/backend/src', targets: { - 'dev': { + dev: { executor: '@nx/node:execute', continuous: true, options: {}, @@ -76,7 +76,7 @@ describe('dev', () => { root: 'apps/frontend', sourceRoot: 'apps/frontend/src', targets: { - 'dev': { + dev: { executor: '@nx/webpack:dev-server', options: {}, dependsOn: [ @@ -98,7 +98,7 @@ describe('dev', () => { root: 'apps/backend', sourceRoot: 'apps/backend/src', targets: { - 'dev': { + dev: { executor: '@nx/node:execute', continuous: true, options: {}, @@ -134,7 +134,7 @@ describe('dev', () => { root: 'apps/frontend', sourceRoot: 'apps/frontend/src', targets: { - 'dev': { + dev: { executor: '@nx/webpack:dev-server', options: {}, }, @@ -176,7 +176,7 @@ describe('dev', () => { root: 'apps/frontend', sourceRoot: 'apps/frontend/src', targets: { - 'dev': { + dev: { executor: '@nx/webpack:dev-server', options: {}, }, @@ -233,7 +233,7 @@ describe('dev', () => { root: 'apps/backend', sourceRoot: 'apps/backend/src', targets: { - 'dev': { + dev: { executor: '@nx/node:execute', continuous: true, options: {}, @@ -259,7 +259,7 @@ describe('dev', () => { root: 'apps/frontend', sourceRoot: 'apps/frontend/src', targets: { - 'dev': { + dev: { executor: '@nx/webpack:dev-server', options: {}, }, @@ -275,7 +275,7 @@ describe('dev', () => { root: 'apps/backend', sourceRoot: 'apps/backend/src', targets: { - 'dev': { + dev: { executor: '@nx/node:execute', continuous: true, options: {}, @@ -319,7 +319,7 @@ const applyOverrides = (runtimeConfig: IRuntimeConfig) => { root: 'apps/frontend', sourceRoot: 'apps/frontend/src', targets: { - 'dev': { + dev: { executor: '@nx/webpack:dev-server', options: {}, }, @@ -335,7 +335,7 @@ const applyOverrides = (runtimeConfig: IRuntimeConfig) => { root: 'apps/backend', sourceRoot: 'apps/backend/src', targets: { - 'dev': { + dev: { executor: '@nx/node:execute', continuous: true, options: {}, @@ -374,7 +374,7 @@ const applyOverrides = (runtimeConfig: IRuntimeConfig) => { root: 'apps/backend', sourceRoot: 'apps/backend/src', targets: { - 'dev': { + dev: { executor: '@nx/node:execute', continuous: true, options: {}, @@ -399,7 +399,7 @@ const applyOverrides = (runtimeConfig: IRuntimeConfig) => { root: 'apps/frontend', sourceRoot: 'apps/frontend/src', targets: { - 'dev': { + dev: { executor: '@nx/webpack:dev-server', options: {}, }, @@ -413,7 +413,7 @@ const applyOverrides = (runtimeConfig: IRuntimeConfig) => { root: 'apps/backend', sourceRoot: 'apps/backend/src', targets: { - 'dev': { + dev: { executor: '@nx/node:execute', continuous: true, options: {}, @@ -446,7 +446,7 @@ const applyOverrides = (runtimeConfig: IRuntimeConfig) => { root: 'apps/frontend', sourceRoot: 'apps/frontend/src', targets: { - 'dev': { + dev: { executor: '@nx/webpack:dev-server', options: {}, }, diff --git a/packages/nx-plugin/src/infra/app/generator.ts b/packages/nx-plugin/src/infra/app/generator.ts index db8116fe6..8b0529a69 100644 --- a/packages/nx-plugin/src/infra/app/generator.ts +++ b/packages/nx-plugin/src/infra/app/generator.ts @@ -43,8 +43,9 @@ import { sharedInfraScriptsGenerator } from '../../utils/shared-infra-scripts'; import { withVersions } from '../../utils/versions'; import type { TsInfraGeneratorSchema } from './schema'; -export const INFRA_APP_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const INFRA_APP_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export async function tsInfraGenerator( tree: Tree, @@ -102,7 +103,7 @@ export async function tsInfraGenerator( generateFiles( tree, // the virtual file system - joinPathFragments(__dirname, './files/app'), // path to the file templates + joinPathFragments(import.meta.dirname, './files/app'), // path to the file templates libraryRoot, // destination path of the files { synthDir: synthDirFromProject, diff --git a/packages/nx-plugin/src/license/config.ts b/packages/nx-plugin/src/license/config.ts index 2d37e3c13..1fb3fd9fb 100644 --- a/packages/nx-plugin/src/license/config.ts +++ b/packages/nx-plugin/src/license/config.ts @@ -2,7 +2,13 @@ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 */ -import type { ProjectConfiguration, Tree } from '@nx/devkit'; +import { + getProjects, + type ProjectConfiguration, + readProjectConfiguration, + type Tree, + updateProjectConfiguration, +} from '@nx/devkit'; import { AWS_NX_PLUGIN_CONFIG_FILE_NAME, readAwsNxPluginConfig, @@ -267,7 +273,6 @@ const hasPythonCollector = async (tree: Tree): Promise => { * undefined if no project defines it. */ const findLicenseCheckProjectName = (tree: Tree): string | undefined => { - const { getProjects } = require('@nx/devkit'); for (const [name, config] of getProjects(tree)) { if (config.targets?.['license-check']) return name; } @@ -286,11 +291,6 @@ export const addLicenseCheckToLintTarget = ( tree: Tree, projectName: string, ): void => { - const { - readProjectConfiguration, - updateProjectConfiguration, - } = require('@nx/devkit'); - const licenseCheckProject = findLicenseCheckProjectName(tree); if (!licenseCheckProject) return; @@ -318,7 +318,6 @@ export const addLicenseCheckToLintTarget = ( * regardless of the order generators ran in. */ export const addLicenseCheckToAllLintTargets = (tree: Tree): void => { - const { getProjects } = require('@nx/devkit'); for (const [name] of getProjects(tree)) { addLicenseCheckToLintTarget(tree, name); } diff --git a/packages/nx-plugin/src/license/dependency-check/collectors/collector.ts b/packages/nx-plugin/src/license/dependency-check/collectors/collector.ts index 815749bfd..fcf948d21 100644 --- a/packages/nx-plugin/src/license/dependency-check/collectors/collector.ts +++ b/packages/nx-plugin/src/license/dependency-check/collectors/collector.ts @@ -3,6 +3,10 @@ * SPDX-License-Identifier: Apache-2.0 */ +import { workspaceRoot } from '@nx/devkit'; +import { existsSync } from 'fs'; +import { join } from 'path'; + export interface CollectedDependency { name: string; version: string; @@ -20,9 +24,6 @@ export interface LicenseCollector { export const npmCollector = (): LicenseCollector => ({ name: 'npm', get traceCommand() { - const { existsSync } = require('fs'); - const { join } = require('path'); - const { workspaceRoot } = require('@nx/devkit'); if (existsSync(join(workspaceRoot, 'yarn.lock'))) return 'yarn why '; if (existsSync(join(workspaceRoot, 'bun.lockb'))) diff --git a/packages/nx-plugin/src/license/dependency-check/collectors/python-collector.ts b/packages/nx-plugin/src/license/dependency-check/collectors/python-collector.ts index 832e1496a..1d0af3039 100644 --- a/packages/nx-plugin/src/license/dependency-check/collectors/python-collector.ts +++ b/packages/nx-plugin/src/license/dependency-check/collectors/python-collector.ts @@ -5,7 +5,7 @@ import TOML from '@iarna/toml'; import { execSync } from 'child_process'; -import { glob as fastGlob } from 'fast-glob'; +import fastGlob from 'fast-glob'; import { existsSync, readFileSync } from 'fs'; import { join } from 'path'; import { uvxCommand } from '../../../utils/py'; diff --git a/packages/nx-plugin/src/license/generator.ts b/packages/nx-plugin/src/license/generator.ts index 7a0e69ccd..7e7391cfb 100644 --- a/packages/nx-plugin/src/license/generator.ts +++ b/packages/nx-plugin/src/license/generator.ts @@ -26,8 +26,9 @@ import { import type { LicenseGeneratorSchema } from './schema'; import { SYNC_GENERATOR_NAME } from './sync/generator'; -export const LICENSE_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const LICENSE_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export async function licenseGenerator( tree: Tree, diff --git a/packages/nx-plugin/src/license/sync/generator.ts b/packages/nx-plugin/src/license/sync/generator.ts index d83ba11de..dcf541243 100644 --- a/packages/nx-plugin/src/license/sync/generator.ts +++ b/packages/nx-plugin/src/license/sync/generator.ts @@ -8,11 +8,11 @@ import { joinPathFragments, type Tree, } from '@nx/devkit'; -import { glob as fastGlob } from 'fast-glob'; +import fastGlob from 'fast-glob'; import { minimatch } from 'minimatch'; import type { SyncGeneratorResult } from 'nx/src/utils/sync-generators'; import { basename } from 'path'; -import PackageJson from '../../../package.json'; +import PackageJson from '../../../package.json' with { type: 'json' }; import { AWS_NX_PLUGIN_CONFIG_FILE_NAME } from '../../utils/config/utils'; import { getGitIncludedFiles, isWithinGitRepo } from '../../utils/git'; import { getGeneratorInfo } from '../../utils/nx'; @@ -28,7 +28,7 @@ import { syncProjectFile, } from './project-file-sync'; -export const SYNC_GENERATOR_NAME = `${PackageJson.name}:${getGeneratorInfo(__filename).id}`; +export const SYNC_GENERATOR_NAME = `${PackageJson.name}:${getGeneratorInfo(import.meta.filename).id}`; interface ProjectFile { name: ProjectFileToSync; diff --git a/packages/nx-plugin/src/license/sync/project-file-sync.ts b/packages/nx-plugin/src/license/sync/project-file-sync.ts index 8302f3d59..20e06c9aa 100644 --- a/packages/nx-plugin/src/license/sync/project-file-sync.ts +++ b/packages/nx-plugin/src/license/sync/project-file-sync.ts @@ -32,7 +32,7 @@ const SYNC_STRATEGIES: Record< LICENSE: (tree, projectRoot, config) => { generateFiles( tree, - joinPathFragments(__dirname, 'files', 'licenses', config.spdx), + joinPathFragments(import.meta.dirname, 'files', 'licenses', config.spdx), projectRoot, { copyrightHolder: config.copyrightHolder, diff --git a/packages/nx-plugin/src/mcp-server/generator-info.ts b/packages/nx-plugin/src/mcp-server/generator-info.ts index eb8a5bc31..5e555498c 100644 --- a/packages/nx-plugin/src/mcp-server/generator-info.ts +++ b/packages/nx-plugin/src/mcp-server/generator-info.ts @@ -387,7 +387,7 @@ const GUIDES_RELATIVE_PROBES = [ const fetchLocalGuide = (guide: string): string | undefined => { for (const rel of GUIDES_RELATIVE_PROBES) { - const candidate = path.resolve(__dirname, rel, `${guide}.mdx`); + const candidate = path.resolve(import.meta.dirname, rel, `${guide}.mdx`); try { if (fs.existsSync(candidate)) { return fs.readFileSync(candidate, 'utf-8'); @@ -447,7 +447,11 @@ export const fetchSnippet: SnippetContentProvider = async ( snippetName: string, ): Promise => { for (const rel of SNIPPETS_RELATIVE_PROBES) { - const candidate = path.resolve(__dirname, rel, `${snippetName}.mdx`); + const candidate = path.resolve( + import.meta.dirname, + rel, + `${snippetName}.mdx`, + ); try { if (fs.existsSync(candidate)) { return fs.readFileSync(candidate, 'utf-8'); diff --git a/packages/nx-plugin/src/mcp-server/server.ts b/packages/nx-plugin/src/mcp-server/server.ts index c62a712b0..db51ce758 100644 --- a/packages/nx-plugin/src/mcp-server/server.ts +++ b/packages/nx-plugin/src/mcp-server/server.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; -import PackageJson from '../../package.json'; +import PackageJson from '../../package.json' with { type: 'json' }; import { listGenerators } from '../utils/nx'; import { addCreateWorkspaceCommandTool } from './tools/create-workspace-command'; import { diff --git a/packages/nx-plugin/src/open-api/ts-client/generator.ts b/packages/nx-plugin/src/open-api/ts-client/generator.ts index ea1b9b277..ddeccf381 100644 --- a/packages/nx-plugin/src/open-api/ts-client/generator.ts +++ b/packages/nx-plugin/src/open-api/ts-client/generator.ts @@ -46,7 +46,12 @@ export const generateOpenApiTsClient = ( data: CodeGenData, outputPath: string, ) => { - generateFiles(tree, path.join(__dirname, 'files'), outputPath, data); + generateFiles( + tree, + path.join(import.meta.dirname, 'files'), + outputPath, + data, + ); }; export default openApiTsClientGenerator; diff --git a/packages/nx-plugin/src/open-api/ts-hooks/generator.ts b/packages/nx-plugin/src/open-api/ts-hooks/generator.ts index fbdbc13a7..a29a6ca33 100644 --- a/packages/nx-plugin/src/open-api/ts-hooks/generator.ts +++ b/packages/nx-plugin/src/open-api/ts-hooks/generator.ts @@ -38,7 +38,12 @@ export const generateOpenApiTsHooks = ( data: CodeGenData, outputPath: string, ) => { - generateFiles(tree, path.join(__dirname, 'files'), outputPath, data); + generateFiles( + tree, + path.join(import.meta.dirname, 'files'), + outputPath, + data, + ); }; export default openApiTsHooksGenerator; diff --git a/packages/nx-plugin/src/open-api/ts-metadata/generator.ts b/packages/nx-plugin/src/open-api/ts-metadata/generator.ts index f512ad833..ff9ab2842 100644 --- a/packages/nx-plugin/src/open-api/ts-metadata/generator.ts +++ b/packages/nx-plugin/src/open-api/ts-metadata/generator.ts @@ -34,7 +34,12 @@ export const generateOpenApiTsMetadata = ( data: CodeGenData, outputPath: string, ) => { - generateFiles(tree, path.join(__dirname, 'files'), outputPath, data); + generateFiles( + tree, + path.join(import.meta.dirname, 'files'), + outputPath, + data, + ); }; export default openApiTsMetadataGenerator; diff --git a/packages/nx-plugin/src/preset/generator.ts b/packages/nx-plugin/src/preset/generator.ts index 7fb7da7a3..2f5847f4e 100644 --- a/packages/nx-plugin/src/preset/generator.ts +++ b/packages/nx-plugin/src/preset/generator.ts @@ -21,7 +21,7 @@ import * as enquirer from 'enquirer'; import { readFileSync } from 'fs'; import yaml from 'js-yaml'; import { readModulePackageJson } from 'nx/src/utils/package-json'; -import GeneratorsJson from '../../generators.json'; +import GeneratorsJson from '../../generators.json' with { type: 'json' }; import { SYNC_GENERATOR_NAME as TS_SYNC_GENERATOR_NAME } from '../ts/sync/generator'; import { ensureAwsNxPluginConfig, @@ -47,8 +47,9 @@ const NX_TYPESCRIPT_SYNC_GENERATOR = '@nx/js:typescript-sync'; // default behaviour. The user can opt-in later via `pnpm approve-builds`. const PNPM_BUILT_DEPENDENCIES = ['@swc/core', 'esbuild', 'nx', 'sharp']; -export const PRESET_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const PRESET_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); const setUpWorkspaces = (tree: Tree) => { if (detectPackageManager() === 'pnpm') { @@ -127,12 +128,12 @@ export function isAmazonian(): boolean { const setUpGitSecrets = (tree: Tree) => { const gitSecretsDir = joinPathFragments( - __dirname, + import.meta.dirname, 'git-secrets-files', 'git-secrets-dir', ); const huskyDir = joinPathFragments( - __dirname, + import.meta.dirname, 'git-secrets-files', 'husky-dir', ); @@ -257,7 +258,7 @@ export const presetGenerator = async ( generateFiles( tree, // the virtual file system - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), '.', { projectName: getNpmScope(tree), diff --git a/packages/nx-plugin/src/py/agent/a2a-connection/generator.ts b/packages/nx-plugin/src/py/agent/a2a-connection/generator.ts index c6cbcde87..4f57d2b21 100644 --- a/packages/nx-plugin/src/py/agent/a2a-connection/generator.ts +++ b/packages/nx-plugin/src/py/agent/a2a-connection/generator.ts @@ -69,7 +69,7 @@ const A2A_TRANSPORT_DEP: Record = { }; export const PY_AGENT_A2A_CONNECTION_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); export const pyAgentA2aConnectionGenerator = async ( tree: Tree, @@ -147,7 +147,7 @@ export const pyAgentA2aConnectionGenerator = async ( ); generateFiles( tree, - joinPathFragments(__dirname, 'files', naming.appTemplateSubdir), + joinPathFragments(import.meta.dirname, 'files', naming.appTemplateSubdir), appDir, { targetAgentSnakeCase, diff --git a/packages/nx-plugin/src/py/agent/gateway-connection/generator.ts b/packages/nx-plugin/src/py/agent/gateway-connection/generator.ts index a6deb8443..c5fd8aacd 100644 --- a/packages/nx-plugin/src/py/agent/gateway-connection/generator.ts +++ b/packages/nx-plugin/src/py/agent/gateway-connection/generator.ts @@ -39,7 +39,7 @@ import { import type { PyAgentGatewayConnectionGeneratorSchema } from './schema'; export const PY_AGENT_GATEWAY_CONNECTION_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); export const pyAgentGatewayConnectionGenerator = async ( tree: Tree, @@ -114,7 +114,11 @@ export const pyAgentGatewayConnectionGenerator = async ( // Local mode points at the gateway project's local gateway port. generateFiles( tree, - joinPathFragments(__dirname, 'files', connection.appTemplateSubdir), + joinPathFragments( + import.meta.dirname, + 'files', + connection.appTemplateSubdir, + ), appDir, { gatewaySnakeCase, diff --git a/packages/nx-plugin/src/py/agent/generator.ts b/packages/nx-plugin/src/py/agent/generator.ts index a9d01241a..0bfb9200a 100644 --- a/packages/nx-plugin/src/py/agent/generator.ts +++ b/packages/nx-plugin/src/py/agent/generator.ts @@ -32,9 +32,9 @@ import { addGeneratorMetricsIfApplicable } from '../../utils/metrics'; import { kebabCase, toClassName, toSnakeCase } from '../../utils/names'; import { getNpmScope } from '../../utils/npm-scope'; import { + addComponentDevTarget, addComponentGeneratorMetadata, addDependencyToTargetIfNotPresent, - addComponentDevTarget, getGeneratorInfo, type NxGeneratorInfo, normalizeTargetKeyOrder, @@ -53,8 +53,9 @@ import { sharedConstructsGenerator } from '../../utils/shared-constructs'; import { withVersions } from '../../utils/versions'; import type { PyAgentGeneratorSchema } from './schema'; -export const PY_AGENT_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const PY_AGENT_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export const pyAgentGenerator = async ( tree: Tree, @@ -139,7 +140,7 @@ export const pyAgentGenerator = async ( generateFiles( tree, joinPathFragments( - __dirname, + import.meta.dirname, 'files', framework === 'langchain' ? 'common-langchain' : 'common', ), @@ -152,7 +153,7 @@ export const pyAgentGenerator = async ( // framework-agnostic, so emit it from the shared `common` dir. generateFiles( tree, - joinPathFragments(__dirname, 'files', 'common'), + joinPathFragments(import.meta.dirname, 'files', 'common'), targetSourceDir, templateContext, { overwriteStrategy: OverwriteStrategy.KeepExisting }, @@ -168,7 +169,7 @@ export const pyAgentGenerator = async ( framework === 'langchain' ? `${protocolLower}-langchain` : protocolLower; generateFiles( tree, - joinPathFragments(__dirname, 'files', protocolTemplateDir), + joinPathFragments(import.meta.dirname, 'files', protocolTemplateDir), targetSourceDir, templateContext, { overwriteStrategy: OverwriteStrategy.KeepExisting }, @@ -181,7 +182,7 @@ export const pyAgentGenerator = async ( if (protocolLower === 'http' && framework === 'langchain') { generateFiles( tree, - joinPathFragments(__dirname, 'files', 'http'), + joinPathFragments(import.meta.dirname, 'files', 'http'), targetSourceDir, templateContext, { overwriteStrategy: OverwriteStrategy.KeepExisting }, @@ -241,7 +242,7 @@ export const pyAgentGenerator = async ( // Add the Dockerfile generateFiles( tree, - joinPathFragments(__dirname, 'files', 'deploy'), + joinPathFragments(import.meta.dirname, 'files', 'deploy'), targetSourceDir, { agentNameSnakeCase, @@ -335,7 +336,12 @@ export const pyAgentGenerator = async ( // Emit the OpenAPI spec generator script (shared with react-connection) generateFiles( tree, - joinPathFragments(__dirname, 'react-connection', 'files', 'agent'), + joinPathFragments( + import.meta.dirname, + 'react-connection', + 'files', + 'agent', + ), project.root, { moduleName, diff --git a/packages/nx-plugin/src/py/agent/mcp-connection/generator.ts b/packages/nx-plugin/src/py/agent/mcp-connection/generator.ts index 07fa49bdb..aea100b3f 100644 --- a/packages/nx-plugin/src/py/agent/mcp-connection/generator.ts +++ b/packages/nx-plugin/src/py/agent/mcp-connection/generator.ts @@ -38,7 +38,7 @@ import { import type { PyAgentMcpConnectionGeneratorSchema } from './schema'; export const PY_AGENT_MCP_CONNECTION_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); export const pyAgentMcpConnectionGenerator = async ( tree: Tree, @@ -104,7 +104,11 @@ export const pyAgentMcpConnectionGenerator = async ( ); generateFiles( tree, - joinPathFragments(__dirname, 'files', connection.appTemplateSubdir), + joinPathFragments( + import.meta.dirname, + 'files', + connection.appTemplateSubdir, + ), appDir, { mcpServerSnakeCase, diff --git a/packages/nx-plugin/src/py/agent/react-connection/generator.ts b/packages/nx-plugin/src/py/agent/react-connection/generator.ts index e10195ea0..4cb07ea0d 100644 --- a/packages/nx-plugin/src/py/agent/react-connection/generator.ts +++ b/packages/nx-plugin/src/py/agent/react-connection/generator.ts @@ -33,7 +33,7 @@ import { } from './local-dev'; export const PY_AGENT_REACT_CONNECTION_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); export const pyAgentReactConnectionGenerator = async ( tree: Tree, @@ -83,7 +83,7 @@ export const pyAgentReactConnectionGenerator = async ( // Add OpenAPI spec generation script scoped to this agent generateFiles( tree, - joinPathFragments(__dirname, 'files/agent'), + joinPathFragments(import.meta.dirname, 'files/agent'), agentProjectConfig.root, { moduleName, diff --git a/packages/nx-plugin/src/py/api/generator.ts b/packages/nx-plugin/src/py/api/generator.ts index e39a85210..d3b3d0732 100644 --- a/packages/nx-plugin/src/py/api/generator.ts +++ b/packages/nx-plugin/src/py/api/generator.ts @@ -7,8 +7,9 @@ import { getGeneratorInfo, type NxGeneratorInfo } from '../../utils/nx'; import { pyFastApiProjectGenerator } from '../fast-api/generator'; import type { PyApiGeneratorSchema } from './schema'; -export const PY_API_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const PY_API_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export async function pyApiGenerator( tree: Tree, diff --git a/packages/nx-plugin/src/py/dynamodb/agent-connection/generator.spec.ts b/packages/nx-plugin/src/py/dynamodb/agent-connection/generator.spec.ts index bd81dc7c9..9d6a9da25 100644 --- a/packages/nx-plugin/src/py/dynamodb/agent-connection/generator.spec.ts +++ b/packages/nx-plugin/src/py/dynamodb/agent-connection/generator.spec.ts @@ -17,7 +17,7 @@ describe('py#dynamodb agent-connection generator', () => { name, root: `packages/${name}`, targets: { - 'dev': { executor: 'nx:run-commands', continuous: true }, + dev: { executor: 'nx:run-commands', continuous: true }, }, }), ); @@ -132,9 +132,7 @@ describe('py#dynamodb agent-connection generator', () => { }); const config = readProjectConfiguration(tree, 'my-agent'); - const deps = ( - config.targets?.['agent-dev']?.dependsOn ?? [] - ).filter( + const deps = (config.targets?.['agent-dev']?.dependsOn ?? []).filter( (d: any) => typeof d === 'object' && d.projects?.includes('db') && diff --git a/packages/nx-plugin/src/py/dynamodb/agent-connection/generator.ts b/packages/nx-plugin/src/py/dynamodb/agent-connection/generator.ts index 33542ef8d..cba05ed81 100644 --- a/packages/nx-plugin/src/py/dynamodb/agent-connection/generator.ts +++ b/packages/nx-plugin/src/py/dynamodb/agent-connection/generator.ts @@ -21,7 +21,7 @@ import { addWorkspaceDependencyToPyProject } from '../../../utils/py'; import type { PyDynamoDBAgentConnectionGeneratorSchema } from './schema'; export const PY_DYNAMODB_AGENT_CONNECTION_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); export const pyDynamoDBAgentConnectionGenerator = async ( tree: Tree, diff --git a/packages/nx-plugin/src/py/dynamodb/fast-api-connection/generator.spec.ts b/packages/nx-plugin/src/py/dynamodb/fast-api-connection/generator.spec.ts index df1bf1fa0..408082dea 100644 --- a/packages/nx-plugin/src/py/dynamodb/fast-api-connection/generator.spec.ts +++ b/packages/nx-plugin/src/py/dynamodb/fast-api-connection/generator.spec.ts @@ -17,7 +17,7 @@ describe('py#dynamodb fast-api-connection generator', () => { name, root: `packages/${name}`, targets: { - 'dev': { executor: 'nx:run-commands', continuous: true }, + dev: { executor: 'nx:run-commands', continuous: true }, }, }), ); @@ -30,7 +30,7 @@ describe('py#dynamodb fast-api-connection generator', () => { name, root: `packages/${name}`, targets: { - 'dev': { executor: 'nx:run-commands', continuous: true }, + dev: { executor: 'nx:run-commands', continuous: true }, }, }), ); diff --git a/packages/nx-plugin/src/py/dynamodb/fast-api-connection/generator.ts b/packages/nx-plugin/src/py/dynamodb/fast-api-connection/generator.ts index 220cc20b7..e52d1e48e 100644 --- a/packages/nx-plugin/src/py/dynamodb/fast-api-connection/generator.ts +++ b/packages/nx-plugin/src/py/dynamodb/fast-api-connection/generator.ts @@ -21,7 +21,7 @@ import { addWorkspaceDependencyToPyProject } from '../../../utils/py'; import type { PyDynamoDBFastApiConnectionGeneratorSchema } from './schema'; export const PY_DYNAMODB_FAST_API_CONNECTION_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); export const pyDynamoDBFastApiConnectionGenerator = async ( tree: Tree, diff --git a/packages/nx-plugin/src/py/dynamodb/generator.ts b/packages/nx-plugin/src/py/dynamodb/generator.ts index 3309cefb2..1b623d7e4 100644 --- a/packages/nx-plugin/src/py/dynamodb/generator.ts +++ b/packages/nx-plugin/src/py/dynamodb/generator.ts @@ -39,8 +39,9 @@ import { sharedDynamoDBScriptsGenerator } from '../../utils/shared-dynamodb-scri import pyProjectGenerator, { getPyProjectDetails } from '../project/generator'; import type { PyDynamoDBGeneratorSchema } from './schema'; -export const PY_DYNAMODB_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const PY_DYNAMODB_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export const pyDynamoDBGenerator = async ( tree: Tree, @@ -89,7 +90,7 @@ export const pyDynamoDBGenerator = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), dir, templateOptions, ); diff --git a/packages/nx-plugin/src/py/dynamodb/mcp-server-connection/generator.spec.ts b/packages/nx-plugin/src/py/dynamodb/mcp-server-connection/generator.spec.ts index 5f2cfbb89..16da8b818 100644 --- a/packages/nx-plugin/src/py/dynamodb/mcp-server-connection/generator.spec.ts +++ b/packages/nx-plugin/src/py/dynamodb/mcp-server-connection/generator.spec.ts @@ -17,7 +17,7 @@ describe('py#dynamodb mcp-server-connection generator', () => { name, root: `packages/${name}`, targets: { - 'dev': { executor: 'nx:run-commands', continuous: true }, + dev: { executor: 'nx:run-commands', continuous: true }, }, }), ); @@ -138,9 +138,7 @@ describe('py#dynamodb mcp-server-connection generator', () => { }); const config = readProjectConfiguration(tree, 'my-mcp-server'); - const deps = ( - config.targets?.['mcp-server-dev']?.dependsOn ?? [] - ).filter( + const deps = (config.targets?.['mcp-server-dev']?.dependsOn ?? []).filter( (d: any) => typeof d === 'object' && d.projects?.includes('db') && diff --git a/packages/nx-plugin/src/py/dynamodb/mcp-server-connection/generator.ts b/packages/nx-plugin/src/py/dynamodb/mcp-server-connection/generator.ts index 359e8f4b0..958bb65e9 100644 --- a/packages/nx-plugin/src/py/dynamodb/mcp-server-connection/generator.ts +++ b/packages/nx-plugin/src/py/dynamodb/mcp-server-connection/generator.ts @@ -21,7 +21,7 @@ import { addWorkspaceDependencyToPyProject } from '../../../utils/py'; import type { PyDynamoDBMcpServerConnectionGeneratorSchema } from './schema'; export const PY_DYNAMODB_MCP_SERVER_CONNECTION_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); export const pyDynamoDBMcpServerConnectionGenerator = async ( tree: Tree, diff --git a/packages/nx-plugin/src/py/fast-api/generator.spec.ts b/packages/nx-plugin/src/py/fast-api/generator.spec.ts index 516cb1794..833892437 100644 --- a/packages/nx-plugin/src/py/fast-api/generator.spec.ts +++ b/packages/nx-plugin/src/py/fast-api/generator.spec.ts @@ -470,7 +470,10 @@ describe('fastapi project generator', () => { }; await pyFastApiProjectGenerator(tree, options); const firstProjectJson = tree.read('apps/test_api/project.json', 'utf-8'); - const firstInitPy = tree.read('apps/test_api/proj_test_api/init.py', 'utf-8'); + const firstInitPy = tree.read( + 'apps/test_api/proj_test_api/init.py', + 'utf-8', + ); const firstGenerateOpenApi = tree.read( 'apps/test_api/scripts/generate_open_api.py', 'utf-8', diff --git a/packages/nx-plugin/src/py/fast-api/generator.ts b/packages/nx-plugin/src/py/fast-api/generator.ts index 88e2a131b..680d3e405 100644 --- a/packages/nx-plugin/src/py/fast-api/generator.ts +++ b/packages/nx-plugin/src/py/fast-api/generator.ts @@ -8,7 +8,7 @@ import { installPackagesTask, joinPathFragments, OverwriteStrategy, - ProjectConfiguration, + type ProjectConfiguration, readProjectConfiguration, type Tree, updateProjectConfiguration, @@ -38,8 +38,9 @@ import pyProjectGenerator, { getPyProjectDetails } from '../project/generator'; import { addOpenApiGeneration } from './react/open-api'; import type { PyFastApiProjectGeneratorSchema } from './schema'; -export const FAST_API_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const FAST_API_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); /** * Generates a Python FastAPI project @@ -142,7 +143,7 @@ export const pyFastApiProjectGenerator = async ( // not clobber user edits (and does not reformat them nondeterministically). generateFiles( tree, // the virtual file system - joinPathFragments(__dirname, 'files', 'app'), // path to the file templates + joinPathFragments(import.meta.dirname, 'files', 'app'), // path to the file templates dir, // destination path of the files { name: normalizedModuleName, @@ -166,7 +167,7 @@ export const pyFastApiProjectGenerator = async ( generateFiles( tree, joinPathFragments( - __dirname, + import.meta.dirname, '..', '..', 'utils', diff --git a/packages/nx-plugin/src/py/fast-api/react/generator.ts b/packages/nx-plugin/src/py/fast-api/react/generator.ts index 05706f6a1..fbee31113 100644 --- a/packages/nx-plugin/src/py/fast-api/react/generator.ts +++ b/packages/nx-plugin/src/py/fast-api/react/generator.ts @@ -14,8 +14,9 @@ import { import { addOpenApiGeneration } from './open-api'; import type { FastApiReactGeneratorSchema } from './schema'; -export const FAST_API_REACT_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const FAST_API_REACT_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export const fastApiReactGenerator = async ( tree: Tree, diff --git a/packages/nx-plugin/src/py/fast-api/react/open-api.ts b/packages/nx-plugin/src/py/fast-api/react/open-api.ts index 8c6f377ad..4e47def09 100644 --- a/packages/nx-plugin/src/py/fast-api/react/open-api.ts +++ b/packages/nx-plugin/src/py/fast-api/react/open-api.ts @@ -30,7 +30,7 @@ export const addOpenApiGeneration = ( // copy so re-running does not reformat it nondeterministically generateFiles( tree, - joinPathFragments(__dirname, 'files/fast-api'), + joinPathFragments(import.meta.dirname, 'files/fast-api'), project.root, { moduleName, diff --git a/packages/nx-plugin/src/py/lambda-function/generator.ts b/packages/nx-plugin/src/py/lambda-function/generator.ts index d263b4f18..7127dadd2 100644 --- a/packages/nx-plugin/src/py/lambda-function/generator.ts +++ b/packages/nx-plugin/src/py/lambda-function/generator.ts @@ -36,8 +36,9 @@ import { addDependenciesToPyProjectToml } from '../../utils/py'; import { sharedConstructsGenerator } from '../../utils/shared-constructs'; import type { PyLambdaFunctionGeneratorSchema } from './schema'; -export const LAMBDA_FUNCTION_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const LAMBDA_FUNCTION_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export interface LambdaFunctionDetails { /** @@ -167,7 +168,7 @@ export const pyLambdaFunctionGenerator = async ( // Generate the lambda handler file generateFiles( tree, // the virtual file system - joinPathFragments(__dirname, 'files', 'handler'), // path to the file templates + joinPathFragments(import.meta.dirname, 'files', 'handler'), // path to the file templates joinPathFragments(projectConfig.sourceRoot, schema.functionPath ?? ''), enhancedOptions, { overwriteStrategy: OverwriteStrategy.KeepExisting }, @@ -176,7 +177,7 @@ export const pyLambdaFunctionGenerator = async ( // Generate the lambda handler test file generateFiles( tree, - joinPathFragments(__dirname, 'files', 'tests'), + joinPathFragments(import.meta.dirname, 'files', 'tests'), joinPathFragments(dir, 'tests'), enhancedOptions, { overwriteStrategy: OverwriteStrategy.KeepExisting }, diff --git a/packages/nx-plugin/src/py/mcp-server/generator.ts b/packages/nx-plugin/src/py/mcp-server/generator.ts index 6efd132c8..a8a3ebde8 100644 --- a/packages/nx-plugin/src/py/mcp-server/generator.ts +++ b/packages/nx-plugin/src/py/mcp-server/generator.ts @@ -24,9 +24,9 @@ import { addGeneratorMetricsIfApplicable } from '../../utils/metrics'; import { kebabCase, toClassName, toSnakeCase } from '../../utils/names'; import { getNpmScope } from '../../utils/npm-scope'; import { + addComponentDevTarget, addComponentGeneratorMetadata, addDependencyToTargetIfNotPresent, - addComponentDevTarget, getGeneratorInfo, type NxGeneratorInfo, readProjectConfigurationUnqualified, @@ -39,8 +39,9 @@ import { sharedConstructsGenerator } from '../../utils/shared-constructs'; import { withVersions } from '../../utils/versions'; import type { PyMcpServerGeneratorSchema } from './schema'; -export const PY_MCP_SERVER_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const PY_MCP_SERVER_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export const pyMcpServerGenerator = async ( tree: Tree, @@ -93,7 +94,7 @@ export const pyMcpServerGenerator = async ( // Generate example server generateFiles( tree, - joinPathFragments(__dirname, 'files', 'app'), + joinPathFragments(import.meta.dirname, 'files', 'app'), targetSourceDir, { name, @@ -126,7 +127,7 @@ export const pyMcpServerGenerator = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files', 'deploy'), + joinPathFragments(import.meta.dirname, 'files', 'deploy'), targetSourceDir, { mcpServerNameSnakeCase, diff --git a/packages/nx-plugin/src/py/project/generator.ts b/packages/nx-plugin/src/py/project/generator.ts index 2ab0b2af7..db5dfd158 100644 --- a/packages/nx-plugin/src/py/project/generator.ts +++ b/packages/nx-plugin/src/py/project/generator.ts @@ -42,8 +42,9 @@ import { updateToml } from '../../utils/toml'; import { withVersions } from '../../utils/versions'; import type { PyProjectGeneratorSchema } from './schema'; -export const PY_PROJECT_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const PY_PROJECT_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export interface PyProjectDetails { /** diff --git a/packages/nx-plugin/src/smithy/project/generator.ts b/packages/nx-plugin/src/smithy/project/generator.ts index bd38140c4..8a3d984f8 100644 --- a/packages/nx-plugin/src/smithy/project/generator.ts +++ b/packages/nx-plugin/src/smithy/project/generator.ts @@ -25,8 +25,9 @@ import { } from '../../utils/nx'; import type { SmithyProjectGeneratorSchema } from './schema'; -export const SMITHY_PROJECT_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const SMITHY_PROJECT_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export const smithyProjectGenerator = async ( tree: Tree, @@ -72,7 +73,7 @@ export const smithyProjectGenerator = async ( const scope = getNpmScope(tree); const namespace = options.namespace ?? toKebabCase(scope).replace(/-/g, '.'); - generateFiles(tree, joinPathFragments(__dirname, 'files'), dir, { + generateFiles(tree, joinPathFragments(import.meta.dirname, 'files'), dir, { namespace, serviceNameClassName, serviceNameKebabCase, diff --git a/packages/nx-plugin/src/smithy/react-connection/generator.ts b/packages/nx-plugin/src/smithy/react-connection/generator.ts index d35b1d3b3..61db10443 100644 --- a/packages/nx-plugin/src/smithy/react-connection/generator.ts +++ b/packages/nx-plugin/src/smithy/react-connection/generator.ts @@ -24,7 +24,7 @@ import { TS_SMITHY_API_GENERATOR_INFO } from '../ts/api/generator'; import type { SmithyReactConnectionGeneratorSchema } from './schema'; export const SMITHY_REACT_CONNECTION_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); export const smithyReactConnectionGenerator = async ( tree: Tree, @@ -55,7 +55,7 @@ export const smithyReactConnectionGenerator = async ( // Add extensions.smithy for customising the client generateFiles( tree, - joinPathFragments(__dirname, 'files', 'model'), + joinPathFragments(import.meta.dirname, 'files', 'model'), modelProjectConfig.sourceRoot, { namespace, diff --git a/packages/nx-plugin/src/smithy/ts/api/generator.ts b/packages/nx-plugin/src/smithy/ts/api/generator.ts index 46cd673cc..4ba9f40fe 100644 --- a/packages/nx-plugin/src/smithy/ts/api/generator.ts +++ b/packages/nx-plugin/src/smithy/ts/api/generator.ts @@ -36,8 +36,9 @@ import { withVersions } from '../../../utils/versions'; import smithyProjectGenerator from '../../project/generator'; import type { TsSmithyApiGeneratorSchema } from './schema'; -export const TS_SMITHY_API_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const TS_SMITHY_API_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export const tsSmithyApiGenerator = async ( tree: Tree, @@ -121,7 +122,7 @@ export const tsSmithyApiGenerator = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), backendProjectConfig.sourceRoot, { apiNameClassName, @@ -134,7 +135,7 @@ export const tsSmithyApiGenerator = async ( generateFiles( tree, joinPathFragments( - __dirname, + import.meta.dirname, '..', '..', '..', @@ -282,11 +283,7 @@ export const tsSmithyApiGenerator = async ( // Preserve any dependencies added to dev by connection generators for (const dependency of existingDevDependsOn) { - addDependencyToTargetIfNotPresent( - backendProjectConfig, - 'dev', - dependency, - ); + addDependencyToTargetIfNotPresent(backendProjectConfig, 'dev', dependency); } // Ignore generated code diff --git a/packages/nx-plugin/src/terraform/project/generator.ts b/packages/nx-plugin/src/terraform/project/generator.ts index 7a4ae933e..1ed85473a 100644 --- a/packages/nx-plugin/src/terraform/project/generator.ts +++ b/packages/nx-plugin/src/terraform/project/generator.ts @@ -40,7 +40,7 @@ import type { TerraformProjectGeneratorSchema } from './schema'; const NX_EXTEND_PLUGIN = '@nx-extend/terraform'; export const TERRAFORM_PROJECT_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); export async function terraformProjectGenerator( tree: Tree, @@ -253,7 +253,7 @@ export async function terraformProjectGenerator( generateFiles( tree, // the virtual file system - joinPathFragments(__dirname, `./files/${schema.type}`), // path to the file templates + joinPathFragments(import.meta.dirname, `./files/${schema.type}`), // path to the file templates lib.dir, // destination path of the files { metricsModulePath, diff --git a/packages/nx-plugin/src/trpc/backend/generator.ts b/packages/nx-plugin/src/trpc/backend/generator.ts index e5d3f64fc..ff9f0e4be 100644 --- a/packages/nx-plugin/src/trpc/backend/generator.ts +++ b/packages/nx-plugin/src/trpc/backend/generator.ts @@ -33,8 +33,9 @@ import { sharedConstructsGenerator } from '../../utils/shared-constructs'; import { withVersions } from '../../utils/versions'; import type { TsTrpcApiGeneratorSchema } from './schema'; -export const TRPC_BACKEND_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const TRPC_BACKEND_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); const VALID_TRPC_INTEGRATION_PERMUTATIONS = new Set([ 'rest-lambda::isolated', @@ -179,7 +180,7 @@ export async function tsTrpcApiGenerator( generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), backendRoot, enhancedOptions, { @@ -194,7 +195,7 @@ export async function tsTrpcApiGenerator( generateFiles( tree, joinPathFragments( - __dirname, + import.meta.dirname, '..', '..', 'utils', diff --git a/packages/nx-plugin/src/trpc/react/generator.ts b/packages/nx-plugin/src/trpc/react/generator.ts index ad1685107..e742fc61a 100644 --- a/packages/nx-plugin/src/trpc/react/generator.ts +++ b/packages/nx-plugin/src/trpc/react/generator.ts @@ -25,8 +25,9 @@ import { import { withVersions } from '../../utils/versions'; import type { ReactGeneratorSchema } from './schema'; -export const TRPC_REACT_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const TRPC_REACT_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export async function reactGenerator( tree: Tree, @@ -53,7 +54,7 @@ export async function reactGenerator( generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), frontendProjectConfig.root, { apiName, @@ -72,7 +73,7 @@ export async function reactGenerator( generateFiles( tree, joinPathFragments( - __dirname, + import.meta.dirname, '../../utils/files/website/components/tanstack-query', ), joinPathFragments(frontendProjectConfig.sourceRoot, 'components'), @@ -85,7 +86,10 @@ export async function reactGenerator( if (auth === 'iam') { generateFiles( tree, - joinPathFragments(__dirname, '../../utils/files/website/hooks/sigv4'), + joinPathFragments( + import.meta.dirname, + '../../utils/files/website/hooks/sigv4', + ), joinPathFragments(frontendProjectConfig.sourceRoot, 'hooks'), {}, { diff --git a/packages/nx-plugin/src/ts/agent/a2a-connection/generator.ts b/packages/nx-plugin/src/ts/agent/a2a-connection/generator.ts index badd2cb77..67d9846e6 100644 --- a/packages/nx-plugin/src/ts/agent/a2a-connection/generator.ts +++ b/packages/nx-plugin/src/ts/agent/a2a-connection/generator.ts @@ -36,7 +36,7 @@ import { withVersions } from '../../../utils/versions'; import type { TsAgentA2aConnectionGeneratorSchema } from './schema'; export const TS_AGENT_A2A_CONNECTION_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); export const tsAgentA2aConnectionGenerator = async ( tree: Tree, @@ -89,7 +89,7 @@ export const tsAgentA2aConnectionGenerator = async ( // 2. Generate the per-connection Client into app/ generateFiles( tree, - joinPathFragments(__dirname, 'files', 'agent-connection', 'app'), + joinPathFragments(import.meta.dirname, 'files', 'agent-connection', 'app'), joinPathFragments(AGENT_CONNECTION_PROJECT_DIR, 'src', 'app'), { targetAgentKebabCase, diff --git a/packages/nx-plugin/src/ts/agent/gateway-connection/generator.ts b/packages/nx-plugin/src/ts/agent/gateway-connection/generator.ts index a560da104..09dec3316 100644 --- a/packages/nx-plugin/src/ts/agent/gateway-connection/generator.ts +++ b/packages/nx-plugin/src/ts/agent/gateway-connection/generator.ts @@ -34,7 +34,7 @@ import { withVersions } from '../../../utils/versions'; import type { TsAgentGatewayConnectionGeneratorSchema } from './schema'; export const TS_AGENT_GATEWAY_CONNECTION_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); export const tsAgentGatewayConnectionGenerator = async ( tree: Tree, @@ -90,7 +90,7 @@ export const tsAgentGatewayConnectionGenerator = async ( // points at the gateway project's local gateway port. generateFiles( tree, - joinPathFragments(__dirname, 'files', 'agent-connection', 'app'), + joinPathFragments(import.meta.dirname, 'files', 'agent-connection', 'app'), joinPathFragments(AGENT_CONNECTION_PROJECT_DIR, 'src', 'app'), { gatewayKebabCase, diff --git a/packages/nx-plugin/src/ts/agent/generator.spec.ts b/packages/nx-plugin/src/ts/agent/generator.spec.ts index 7b0d3aada..527e54300 100644 --- a/packages/nx-plugin/src/ts/agent/generator.spec.ts +++ b/packages/nx-plugin/src/ts/agent/generator.spec.ts @@ -89,9 +89,7 @@ describe('ts#agent generator', () => { // -dev is the runner; the first component also adds a project-level // dev aggregating it. - expect(projectConfig.targets['agent-dev'].executor).toBe( - 'nx:run-commands', - ); + expect(projectConfig.targets['agent-dev'].executor).toBe('nx:run-commands'); expect(projectConfig.targets['agent-dev'].continuous).toBe(true); expect(projectConfig.targets['agent-dev'].options.env).toEqual({ PORT: expect.any(String), diff --git a/packages/nx-plugin/src/ts/agent/generator.ts b/packages/nx-plugin/src/ts/agent/generator.ts index 1dc0c6077..f0c69818a 100644 --- a/packages/nx-plugin/src/ts/agent/generator.ts +++ b/packages/nx-plugin/src/ts/agent/generator.ts @@ -27,9 +27,9 @@ import { addGeneratorMetricsIfApplicable } from '../../utils/metrics'; import { kebabCase, toClassName } from '../../utils/names'; import { getNpmScope } from '../../utils/npm-scope'; import { + addComponentDevTarget, addComponentGeneratorMetadata, addDependencyToTargetIfNotPresent, - addComponentDevTarget, getGeneratorInfo, type NxGeneratorInfo, readProjectConfigurationUnqualified, @@ -40,8 +40,9 @@ import { sharedConstructsGenerator } from '../../utils/shared-constructs'; import { TS_VERSIONS, withVersions } from '../../utils/versions'; import type { TsAgentGeneratorSchema } from './schema'; -export const TS_AGENT_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const TS_AGENT_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export const tsAgentGenerator = async ( tree: Tree, @@ -100,7 +101,7 @@ export const tsAgentGenerator = async ( // Generate common files shared by both protocols generateFiles( tree, - joinPathFragments(__dirname, 'files', 'common'), + joinPathFragments(import.meta.dirname, 'files', 'common'), targetSourceDir, templateContext, { overwriteStrategy: OverwriteStrategy.KeepExisting }, @@ -109,7 +110,7 @@ export const tsAgentGenerator = async ( // Generate protocol-specific files generateFiles( tree, - joinPathFragments(__dirname, 'files', protocol.toLowerCase()), + joinPathFragments(import.meta.dirname, 'files', protocol.toLowerCase()), targetSourceDir, templateContext, { overwriteStrategy: OverwriteStrategy.KeepExisting }, @@ -128,7 +129,7 @@ export const tsAgentGenerator = async ( // Add the Dockerfile generateFiles( tree, - joinPathFragments(__dirname, 'files', 'deploy'), + joinPathFragments(import.meta.dirname, 'files', 'deploy'), targetSourceDir, { distDir, diff --git a/packages/nx-plugin/src/ts/agent/mcp-connection/generator.ts b/packages/nx-plugin/src/ts/agent/mcp-connection/generator.ts index 1fa34da07..197c14587 100644 --- a/packages/nx-plugin/src/ts/agent/mcp-connection/generator.ts +++ b/packages/nx-plugin/src/ts/agent/mcp-connection/generator.ts @@ -33,7 +33,7 @@ import { withVersions } from '../../../utils/versions'; import type { TsAgentMcpConnectionGeneratorSchema } from './schema'; export const TS_AGENT_MCP_CONNECTION_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); export const tsAgentMcpConnectionGenerator = async ( tree: Tree, @@ -77,7 +77,7 @@ export const tsAgentMcpConnectionGenerator = async ( // 2. Generate the per-connection Client into app/ generateFiles( tree, - joinPathFragments(__dirname, 'files', 'agent-connection', 'app'), + joinPathFragments(import.meta.dirname, 'files', 'agent-connection', 'app'), joinPathFragments(AGENT_CONNECTION_PROJECT_DIR, 'src', 'app'), { mcpServerKebabCase, diff --git a/packages/nx-plugin/src/ts/agent/react-connection/generator.ts b/packages/nx-plugin/src/ts/agent/react-connection/generator.ts index 8ba27f4c0..0bcdb8652 100644 --- a/packages/nx-plugin/src/ts/agent/react-connection/generator.ts +++ b/packages/nx-plugin/src/ts/agent/react-connection/generator.ts @@ -33,7 +33,7 @@ import { runtimeConfigGenerator } from '../../react-website/runtime-config/gener import { addTsAgentTargetToLocalDev } from './local-dev'; export const TS_AGENT_REACT_CONNECTION_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); export async function tsAgentReactConnectionGenerator( tree: Tree, @@ -107,7 +107,7 @@ export async function tsAgentReactConnectionGenerator( generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), frontendProjectConfig.root, { agentName, @@ -125,7 +125,7 @@ export async function tsAgentReactConnectionGenerator( generateFiles( tree, joinPathFragments( - __dirname, + import.meta.dirname, '../../../utils/files/website/components/tanstack-query', ), joinPathFragments(frontendProjectConfig.sourceRoot, 'components'), @@ -138,7 +138,10 @@ export async function tsAgentReactConnectionGenerator( if (auth === 'iam') { generateFiles( tree, - joinPathFragments(__dirname, '../../../utils/files/website/hooks/sigv4'), + joinPathFragments( + import.meta.dirname, + '../../../utils/files/website/hooks/sigv4', + ), joinPathFragments(frontendProjectConfig.sourceRoot, 'hooks'), {}, { diff --git a/packages/nx-plugin/src/ts/api/generator.ts b/packages/nx-plugin/src/ts/api/generator.ts index 61b6ff974..1754289ae 100644 --- a/packages/nx-plugin/src/ts/api/generator.ts +++ b/packages/nx-plugin/src/ts/api/generator.ts @@ -8,8 +8,9 @@ import { tsTrpcApiGenerator } from '../../trpc/backend/generator'; import { getGeneratorInfo, type NxGeneratorInfo } from '../../utils/nx'; import type { TsApiGeneratorSchema } from './schema'; -export const TS_API_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const TS_API_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export async function tsApiGenerator( tree: Tree, diff --git a/packages/nx-plugin/src/ts/astro-docs/generator.ts b/packages/nx-plugin/src/ts/astro-docs/generator.ts index bc53e0e59..78729478e 100644 --- a/packages/nx-plugin/src/ts/astro-docs/generator.ts +++ b/packages/nx-plugin/src/ts/astro-docs/generator.ts @@ -27,8 +27,9 @@ import { getPackageManagerDisplayCommands } from '../../utils/pkg-manager'; import { type ITsDepVersion, withVersions } from '../../utils/versions'; import type { TsAstroDocsGeneratorSchema } from './schema'; -export const TS_ASTRO_DOCS_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const TS_ASTRO_DOCS_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export const tsAstroDocsGenerator = async ( tree: Tree, @@ -111,7 +112,7 @@ export const tsAstroDocsGenerator = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files', 'base'), + joinPathFragments(import.meta.dirname, 'files', 'base'), dir, templateOptions, { overwriteStrategy: OverwriteStrategy.KeepExisting }, @@ -135,7 +136,7 @@ export const tsAstroDocsGenerator = async ( if (includeTranslation) { generateFiles( tree, - joinPathFragments(__dirname, 'files', 'translation'), + joinPathFragments(import.meta.dirname, 'files', 'translation'), dir, templateOptions, { overwriteStrategy: OverwriteStrategy.KeepExisting }, diff --git a/packages/nx-plugin/src/ts/docs/generator.ts b/packages/nx-plugin/src/ts/docs/generator.ts index b4967a269..60b86bba6 100644 --- a/packages/nx-plugin/src/ts/docs/generator.ts +++ b/packages/nx-plugin/src/ts/docs/generator.ts @@ -7,8 +7,9 @@ import { getGeneratorInfo, type NxGeneratorInfo } from '../../utils/nx'; import { tsAstroDocsGenerator } from '../astro-docs/generator'; import type { TsDocsGeneratorSchema } from './schema'; -export const TS_DOCS_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const TS_DOCS_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export const tsDocsGenerator = async ( tree: Tree, diff --git a/packages/nx-plugin/src/ts/dynamodb/agent-connection/generator.spec.ts b/packages/nx-plugin/src/ts/dynamodb/agent-connection/generator.spec.ts index 18833231c..247209543 100644 --- a/packages/nx-plugin/src/ts/dynamodb/agent-connection/generator.spec.ts +++ b/packages/nx-plugin/src/ts/dynamodb/agent-connection/generator.spec.ts @@ -17,7 +17,7 @@ describe('ts#dynamodb agent-connection generator', () => { name, root: `packages/${name}`, targets: { - 'dev': { executor: 'nx:run-commands', continuous: true }, + dev: { executor: 'nx:run-commands', continuous: true }, }, }), ); @@ -102,9 +102,7 @@ describe('ts#dynamodb agent-connection generator', () => { }); const config = readProjectConfiguration(tree, 'my-agent'); - const deps = ( - config.targets?.['agent-dev']?.dependsOn ?? [] - ).filter( + const deps = (config.targets?.['agent-dev']?.dependsOn ?? []).filter( (d: any) => typeof d === 'object' && d.projects?.includes('db') && diff --git a/packages/nx-plugin/src/ts/dynamodb/agent-connection/generator.ts b/packages/nx-plugin/src/ts/dynamodb/agent-connection/generator.ts index 6e85f7dd9..49df37f62 100644 --- a/packages/nx-plugin/src/ts/dynamodb/agent-connection/generator.ts +++ b/packages/nx-plugin/src/ts/dynamodb/agent-connection/generator.ts @@ -14,7 +14,7 @@ import { import type { TsDynamoDBAgentConnectionGeneratorSchema } from './schema'; export const TS_DYNAMODB_AGENT_CONNECTION_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); export const tsDynamoDBAgentConnectionGenerator = async ( tree: Tree, diff --git a/packages/nx-plugin/src/ts/dynamodb/generator.ts b/packages/nx-plugin/src/ts/dynamodb/generator.ts index 4d921a27e..b582690ef 100644 --- a/packages/nx-plugin/src/ts/dynamodb/generator.ts +++ b/packages/nx-plugin/src/ts/dynamodb/generator.ts @@ -38,8 +38,9 @@ import { withVersions } from '../../utils/versions'; import tsProjectGenerator, { getTsLibDetails } from '../lib/generator'; import type { TsDynamoDBGeneratorSchema } from './schema'; -export const TS_DYNAMODB_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const TS_DYNAMODB_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export const tsDynamoDBGenerator = async ( tree: Tree, @@ -91,7 +92,7 @@ export const tsDynamoDBGenerator = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), dir, templateOptions, ); diff --git a/packages/nx-plugin/src/ts/dynamodb/mcp-server-connection/generator.spec.ts b/packages/nx-plugin/src/ts/dynamodb/mcp-server-connection/generator.spec.ts index 1f4e0d9cb..bb5363cf6 100644 --- a/packages/nx-plugin/src/ts/dynamodb/mcp-server-connection/generator.spec.ts +++ b/packages/nx-plugin/src/ts/dynamodb/mcp-server-connection/generator.spec.ts @@ -17,7 +17,7 @@ describe('ts#dynamodb mcp-server-connection generator', () => { name, root: `packages/${name}`, targets: { - 'dev': { executor: 'nx:run-commands', continuous: true }, + dev: { executor: 'nx:run-commands', continuous: true }, }, }), ); @@ -102,9 +102,7 @@ describe('ts#dynamodb mcp-server-connection generator', () => { }); const config = readProjectConfiguration(tree, 'my-mcp'); - const deps = ( - config.targets?.['mcp-server-dev']?.dependsOn ?? [] - ).filter( + const deps = (config.targets?.['mcp-server-dev']?.dependsOn ?? []).filter( (d: any) => typeof d === 'object' && d.projects?.includes('db') && diff --git a/packages/nx-plugin/src/ts/dynamodb/mcp-server-connection/generator.ts b/packages/nx-plugin/src/ts/dynamodb/mcp-server-connection/generator.ts index 3140be469..8a73df8ae 100644 --- a/packages/nx-plugin/src/ts/dynamodb/mcp-server-connection/generator.ts +++ b/packages/nx-plugin/src/ts/dynamodb/mcp-server-connection/generator.ts @@ -14,7 +14,7 @@ import { import type { TsDynamoDBMcpServerConnectionGeneratorSchema } from './schema'; export const TS_DYNAMODB_MCP_SERVER_CONNECTION_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); export const tsDynamoDBMcpServerConnectionGenerator = async ( tree: Tree, diff --git a/packages/nx-plugin/src/ts/dynamodb/smithy-connection/generator.spec.ts b/packages/nx-plugin/src/ts/dynamodb/smithy-connection/generator.spec.ts index a781a2352..040ee055a 100644 --- a/packages/nx-plugin/src/ts/dynamodb/smithy-connection/generator.spec.ts +++ b/packages/nx-plugin/src/ts/dynamodb/smithy-connection/generator.spec.ts @@ -17,7 +17,7 @@ describe('ts#dynamodb smithy-connection generator', () => { name, root: `packages/${name}`, targets: { - 'dev': { executor: 'nx:run-commands', continuous: true }, + dev: { executor: 'nx:run-commands', continuous: true }, }, }), ); @@ -30,7 +30,7 @@ describe('ts#dynamodb smithy-connection generator', () => { name, root: `packages/${name}`, targets: { - 'dev': { executor: 'nx:run-commands', continuous: true }, + dev: { executor: 'nx:run-commands', continuous: true }, }, }), ); diff --git a/packages/nx-plugin/src/ts/dynamodb/smithy-connection/generator.ts b/packages/nx-plugin/src/ts/dynamodb/smithy-connection/generator.ts index 3b4ca361a..0c34bebd0 100644 --- a/packages/nx-plugin/src/ts/dynamodb/smithy-connection/generator.ts +++ b/packages/nx-plugin/src/ts/dynamodb/smithy-connection/generator.ts @@ -14,7 +14,7 @@ import { import type { TsDynamoDBSmithyConnectionGeneratorSchema } from './schema'; export const TS_DYNAMODB_SMITHY_CONNECTION_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); export const tsDynamoDBSmithyConnectionGenerator = async ( tree: Tree, diff --git a/packages/nx-plugin/src/ts/dynamodb/trpc-connection/generator.spec.ts b/packages/nx-plugin/src/ts/dynamodb/trpc-connection/generator.spec.ts index 2d5d97b9f..b0872bb6d 100644 --- a/packages/nx-plugin/src/ts/dynamodb/trpc-connection/generator.spec.ts +++ b/packages/nx-plugin/src/ts/dynamodb/trpc-connection/generator.spec.ts @@ -17,7 +17,7 @@ describe('ts#dynamodb trpc-connection generator', () => { name, root: `packages/${name}`, targets: { - 'dev': { executor: 'nx:run-commands', continuous: true }, + dev: { executor: 'nx:run-commands', continuous: true }, }, }), ); @@ -30,7 +30,7 @@ describe('ts#dynamodb trpc-connection generator', () => { name, root: `packages/${name}`, targets: { - 'dev': { executor: 'nx:run-commands', continuous: true }, + dev: { executor: 'nx:run-commands', continuous: true }, }, }), ); diff --git a/packages/nx-plugin/src/ts/dynamodb/trpc-connection/generator.ts b/packages/nx-plugin/src/ts/dynamodb/trpc-connection/generator.ts index d208b9ee3..9f7caa475 100644 --- a/packages/nx-plugin/src/ts/dynamodb/trpc-connection/generator.ts +++ b/packages/nx-plugin/src/ts/dynamodb/trpc-connection/generator.ts @@ -14,7 +14,7 @@ import { import type { TsDynamoDBTrpcConnectionGeneratorSchema } from './schema'; export const TS_DYNAMODB_TRPC_CONNECTION_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); export const tsDynamoDBTrpcConnectionGenerator = async ( tree: Tree, diff --git a/packages/nx-plugin/src/ts/lambda-function/generator.ts b/packages/nx-plugin/src/ts/lambda-function/generator.ts index 33a458cd8..d53ab8190 100644 --- a/packages/nx-plugin/src/ts/lambda-function/generator.ts +++ b/packages/nx-plugin/src/ts/lambda-function/generator.ts @@ -32,7 +32,7 @@ import { TS_HANDLER_RETURN_TYPES } from './io'; import type { TsLambdaFunctionGeneratorSchema } from './schema'; export const TS_LAMBDA_FUNCTION_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); /** * Generates a TypeScript Lambda Function to add to a TypeScript project @@ -141,7 +141,7 @@ export const tsLambdaFunctionGenerator = async ( // Generate the lambda handler file generateFiles( tree, - joinPathFragments(__dirname, 'files', 'handler'), + joinPathFragments(import.meta.dirname, 'files', 'handler'), joinPathFragments(projectConfig.sourceRoot, schema.functionPath ?? ''), enhancedOptions, { overwriteStrategy: OverwriteStrategy.KeepExisting }, diff --git a/packages/nx-plugin/src/ts/lib/generator.ts b/packages/nx-plugin/src/ts/lib/generator.ts index 6bdd0a579..94ebda4e2 100644 --- a/packages/nx-plugin/src/ts/lib/generator.ts +++ b/packages/nx-plugin/src/ts/lib/generator.ts @@ -30,8 +30,9 @@ import { getPackageManagerDisplayCommands } from '../../utils/pkg-manager'; import type { TsProjectGeneratorSchema } from './schema'; import { configureTsProject } from './ts-project-utils'; -export const TS_LIB_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const TS_LIB_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export interface TsLibDetails { /** @@ -91,7 +92,7 @@ export const tsProjectGenerator = async ( tree.delete(joinPathFragments(dir, 'src')); generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), joinPathFragments(dir), { fullyQualifiedName, diff --git a/packages/nx-plugin/src/ts/lib/vitest.spec.ts b/packages/nx-plugin/src/ts/lib/vitest.spec.ts index de866097c..9a1df3fb9 100644 --- a/packages/nx-plugin/src/ts/lib/vitest.spec.ts +++ b/packages/nx-plugin/src/ts/lib/vitest.spec.ts @@ -74,21 +74,20 @@ describe('vitest utils', () => { name: 'empty test block', testBlock: `test: {},`, }, - ])( - 'should add passWithNoTests producing compilable config: $name', - async ({ testBlock }) => { - tree.write('test/vitest.config.mts', wrapConfig(testBlock)); + ])('should add passWithNoTests producing compilable config: $name', async ({ + testBlock, + }) => { + tree.write('test/vitest.config.mts', wrapConfig(testBlock)); - await configureVitest(tree, { - dir: 'test', - fullyQualifiedName: 'test', - }); + await configureVitest(tree, { + dir: 'test', + fullyQualifiedName: 'test', + }); - const content = tree.read('test/vitest.config.mts', 'utf8')!; - expect(content).toContain('passWithNoTests: true'); - expectTypeScriptToCompile(tree, ['test/vitest.config.mts']); - }, - ); + const content = tree.read('test/vitest.config.mts', 'utf8')!; + expect(content).toContain('passWithNoTests: true'); + expectTypeScriptToCompile(tree, ['test/vitest.config.mts']); + }); it('should not add passWithNoTests when it is already present', async () => { tree.write( diff --git a/packages/nx-plugin/src/ts/lib/vitest.ts b/packages/nx-plugin/src/ts/lib/vitest.ts index bf443062a..fbd32a927 100644 --- a/packages/nx-plugin/src/ts/lib/vitest.ts +++ b/packages/nx-plugin/src/ts/lib/vitest.ts @@ -15,7 +15,10 @@ import { withVersions } from '../../utils/versions'; import type { ConfigureProjectOptions } from './types'; const readGritPattern = (name: string): string => - readFileSync(join(__dirname, 'grit', `${name}.grit`), 'utf-8').trim(); + readFileSync( + join(import.meta.dirname, 'grit', `${name}.grit`), + 'utf-8', + ).trim(); export const configureVitest = async ( tree: Tree, diff --git a/packages/nx-plugin/src/ts/mcp-server/generator.ts b/packages/nx-plugin/src/ts/mcp-server/generator.ts index 75abd418a..dc305f986 100644 --- a/packages/nx-plugin/src/ts/mcp-server/generator.ts +++ b/packages/nx-plugin/src/ts/mcp-server/generator.ts @@ -28,9 +28,9 @@ import { addGeneratorMetricsIfApplicable } from '../../utils/metrics'; import { kebabCase, toClassName } from '../../utils/names'; import { getNpmScope } from '../../utils/npm-scope'; import { + addComponentDevTarget, addComponentGeneratorMetadata, addDependencyToTargetIfNotPresent, - addComponentDevTarget, getGeneratorInfo, type NxGeneratorInfo, readProjectConfigurationUnqualified, @@ -41,8 +41,9 @@ import { sharedConstructsGenerator } from '../../utils/shared-constructs'; import { TS_VERSIONS, withVersions } from '../../utils/versions'; import type { TsMcpServerGeneratorSchema } from './schema'; -export const TS_MCP_SERVER_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const TS_MCP_SERVER_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export const tsMcpServerGenerator = async ( tree: Tree, @@ -111,7 +112,7 @@ export const tsMcpServerGenerator = async ( // Generate example server generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), targetSourceDir, { name, diff --git a/packages/nx-plugin/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap b/packages/nx-plugin/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap index 88cf1b45a..e11d8daaa 100644 --- a/packages/nx-plugin/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap +++ b/packages/nx-plugin/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap @@ -109,14 +109,19 @@ describe('foo#bar generator', () => { `; exports[`nx-generator generator > within @aws/nx-plugin > should generate an example schema, generator and test > generator.ts 1`] = ` -"import { GeneratorCallback, Tree, installPackagesTask } from '@nx/devkit'; -import { FooBarGeneratorSchema } from './schema'; -import { NxGeneratorInfo, getGeneratorInfo } from '../utils/nx'; +"import { + type GeneratorCallback, + type Tree, + installPackagesTask, +} from '@nx/devkit'; +import type { FooBarGeneratorSchema } from './schema.js'; +import { type NxGeneratorInfo, getGeneratorInfo } from '../utils/nx'; import { addGeneratorMetricsIfApplicable } from '../utils/metrics'; import { formatFilesInSubtree } from '../utils/format'; -export const FOO_BAR_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const FOO_BAR_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export const fooBarGenerator = async ( tree: Tree, @@ -217,12 +222,12 @@ describe('foo#bar generator', () => { exports[`nx-generator generator > within another workspace > should generate an example schema, generator and test > local-generator.ts 1`] = ` "import { - GeneratorCallback, - Tree, + type GeneratorCallback, + type Tree, generateFiles, joinPathFragments, } from '@nx/devkit'; -import { FooBarGeneratorSchema } from './schema'; +import type { FooBarGeneratorSchema } from './schema.js'; export const fooBarGenerator = async ( tree: Tree, @@ -231,7 +236,7 @@ export const fooBarGenerator = async ( // TODO: implement your generator here, for example: generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), 'target/dir', options, ); diff --git a/packages/nx-plugin/src/ts/nx-generator/files/local/generator.ts.template b/packages/nx-plugin/src/ts/nx-generator/files/local/generator.ts.template index 1847efedc..f136c9656 100644 --- a/packages/nx-plugin/src/ts/nx-generator/files/local/generator.ts.template +++ b/packages/nx-plugin/src/ts/nx-generator/files/local/generator.ts.template @@ -1,9 +1,9 @@ -import { GeneratorCallback, Tree, generateFiles, joinPathFragments } from "@nx/devkit"; -import { <%- namePascalCase %>GeneratorSchema } from './schema'; +import { type GeneratorCallback, type Tree, generateFiles, joinPathFragments } from "@nx/devkit"; +import type { <%- namePascalCase %>GeneratorSchema } from './schema.js'; export const <%- nameCamelCase %>Generator = async (tree: Tree, options: <%- namePascalCase %>GeneratorSchema): Promise => { // TODO: implement your generator here, for example: - generateFiles(tree, joinPathFragments(__dirname, 'files'), 'target/dir', options); + generateFiles(tree, joinPathFragments(import.meta.dirname, 'files'), 'target/dir', options); }; export default <%- nameCamelCase %>Generator; diff --git a/packages/nx-plugin/src/ts/nx-generator/files/nx-plugin-for-aws/generator/generator.ts.template b/packages/nx-plugin/src/ts/nx-generator/files/nx-plugin-for-aws/generator/generator.ts.template index 066cf8575..c0178b2b6 100644 --- a/packages/nx-plugin/src/ts/nx-generator/files/nx-plugin-for-aws/generator/generator.ts.template +++ b/packages/nx-plugin/src/ts/nx-generator/files/nx-plugin-for-aws/generator/generator.ts.template @@ -1,11 +1,11 @@ -import { GeneratorCallback, Tree, installPackagesTask } from "@nx/devkit"; -import { <%- namePascalCase %>GeneratorSchema } from './schema'; -import { NxGeneratorInfo, getGeneratorInfo } from '<%- pathToProjectSourceRoot %>utils/nx'; +import { type GeneratorCallback, type Tree, installPackagesTask } from "@nx/devkit"; +import type { <%- namePascalCase %>GeneratorSchema } from './schema.js'; +import { type NxGeneratorInfo, getGeneratorInfo } from '<%- pathToProjectSourceRoot %>utils/nx'; import { addGeneratorMetricsIfApplicable } from '<%- pathToProjectSourceRoot %>utils/metrics'; import { formatFilesInSubtree } from '<%- pathToProjectSourceRoot %>utils/format'; export const <%- nameUpperSnakeCase %>_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); export const <%- nameCamelCase %>Generator = async (tree: Tree, options: <%- namePascalCase %>GeneratorSchema): Promise => { diff --git a/packages/nx-plugin/src/ts/nx-generator/generator.spec.ts b/packages/nx-plugin/src/ts/nx-generator/generator.spec.ts index f6e145e8c..7b5b0a440 100644 --- a/packages/nx-plugin/src/ts/nx-generator/generator.spec.ts +++ b/packages/nx-plugin/src/ts/nx-generator/generator.spec.ts @@ -5,8 +5,12 @@ import { addProjectConfiguration, type Tree, writeJson } from '@nx/devkit'; import * as fs from 'fs'; import * as path from 'path'; -import NxPluginForAwsPackageJson from '../../../package.json'; -import NxPluginForAwsProjectJson from '../../../project.json'; +import NxPluginForAwsPackageJson from '../../../package.json' with { + type: 'json', +}; +import NxPluginForAwsProjectJson from '../../../project.json' with { + type: 'json', +}; import { expectHasMetricTags } from '../../utils/metrics.spec'; import { sharedConstructsGenerator } from '../../utils/shared-constructs'; import { createTreeUsingTsSolutionSetup } from '../../utils/test'; @@ -22,7 +26,7 @@ describe('nx-generator generator', () => { beforeEach(() => { tree = createTreeUsingTsSolutionSetup(); - const pathToRoot = path.resolve(__dirname, '../../../../..'); + const pathToRoot = path.resolve(import.meta.dirname, '../../../../..'); // Copy relevant files from this repo into the tree [ @@ -679,7 +683,7 @@ describe('nx-generator generator', () => { ); }); - it('should set module to commonjs in tsconfig.json', async () => { + it('should not force module to commonjs in tsconfig.json', async () => { // Set up a tsconfig.json without module set writeJson(tree, 'tools/plugin/tsconfig.json', {}); @@ -689,11 +693,12 @@ describe('nx-generator generator', () => { description: 'Test module setting', }); - // Check that module is set to commonjs in tsconfig.json + // Nx 23 loads `.ts` generators as ESM via native type stripping, so the + // plugin must not be forced to commonjs. const tsConfig = JSON.parse( tree.read('tools/plugin/tsconfig.json', 'utf-8'), ); - expect(tsConfig.compilerOptions.module).toBe('commonjs'); + expect(tsConfig.compilerOptions?.module).not.toBe('commonjs'); }); it('should work when there is no sourceRoot', async () => { diff --git a/packages/nx-plugin/src/ts/nx-generator/generator.ts b/packages/nx-plugin/src/ts/nx-generator/generator.ts index 314e1284c..23292ad0c 100644 --- a/packages/nx-plugin/src/ts/nx-generator/generator.ts +++ b/packages/nx-plugin/src/ts/nx-generator/generator.ts @@ -13,7 +13,7 @@ import { writeJson, } from '@nx/devkit'; import camelCase from 'lodash.camelcase'; -import PackageJson from '../../../package.json'; +import PackageJson from '../../../package.json' with { type: 'json' }; import { addStarExport, applyGritQL } from '../../utils/ast'; import { formatFilesInSubtree } from '../../utils/format'; import { addGeneratorMetricsIfApplicable } from '../../utils/metrics'; @@ -28,7 +28,9 @@ import { getRelativePathToRootByDirectory } from '../../utils/paths'; import { configureTsProjectAsNxPlugin } from '../nx-plugin/utils'; import type { TsNxGeneratorGeneratorSchema } from './schema'; -export const NX_GENERATOR_GENERATOR_INFO = getGeneratorInfo(__filename); +export const NX_GENERATOR_GENERATOR_INFO = getGeneratorInfo( + import.meta.filename, +); export const tsNxGeneratorGenerator = async ( tree: Tree, @@ -67,7 +69,7 @@ export const tsNxGeneratorGenerator = async ( // Add the common files, preserving any the user has already implemented generateFiles( tree, - joinPathFragments(__dirname, 'files', 'common'), + joinPathFragments(import.meta.dirname, 'files', 'common'), generatorDir, { ...enhancedOptions, @@ -87,7 +89,12 @@ export const tsNxGeneratorGenerator = async ( // Add the generator generateFiles( tree, - joinPathFragments(__dirname, 'files', 'nx-plugin-for-aws', 'generator'), + joinPathFragments( + import.meta.dirname, + 'files', + 'nx-plugin-for-aws', + 'generator', + ), generatorDir, { ...enhancedOptions, @@ -98,7 +105,12 @@ export const tsNxGeneratorGenerator = async ( // Generate guide page in docs generateFiles( tree, - joinPathFragments(__dirname, 'files', 'nx-plugin-for-aws', 'docs'), + joinPathFragments( + import.meta.dirname, + 'files', + 'nx-plugin-for-aws', + 'docs', + ), joinPathFragments('docs', 'src', 'content', 'docs', 'en', 'guides'), { ...enhancedOptions, @@ -119,7 +131,7 @@ export const tsNxGeneratorGenerator = async ( // Local generator in a project other than nx-plugin-for-aws generateFiles( tree, - joinPathFragments(__dirname, 'files', 'local'), + joinPathFragments(import.meta.dirname, 'files', 'local'), generatorDir, { ...enhancedOptions, diff --git a/packages/nx-plugin/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap b/packages/nx-plugin/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap index 820b721ba..6aabaf978 100644 --- a/packages/nx-plugin/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap +++ b/packages/nx-plugin/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap @@ -2,7 +2,7 @@ exports[`ts#nx-plugin generator > should generate MCP server files > test-plugin/src/mcp-server/http.ts 1`] = ` "#!/usr/bin/env node -import { createServer } from './server'; +import { createServer } from './server.js'; import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js'; import express, { Request, Response } from 'express'; @@ -90,7 +90,7 @@ void (async () => { `; exports[`ts#nx-plugin generator > should generate MCP server files > test-plugin/src/mcp-server/index.ts 1`] = ` -"export * from './server'; +"export * from './server.js'; " `; @@ -203,7 +203,7 @@ This server provides resources and tools for quickly scaffolding projects using exports[`ts#nx-plugin generator > should generate MCP server files > test-plugin/src/mcp-server/stdio.ts 1`] = ` "#!/usr/bin/env node import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; -import { createServer } from './server'; +import { createServer } from './server.js'; export const startMcpServer = async () => { const transport = new StdioServerTransport(); @@ -316,7 +316,10 @@ export const registerGeneralGuidanceTool = (server: McpServer) => { { type: 'text' as const, text: fs.readFileSync( - path.resolve(__dirname, '../resources/GENERAL_GUIDANCE.md'), + path.resolve( + import.meta.dirname, + '../resources/GENERAL_GUIDANCE.md', + ), 'utf-8', ), }, @@ -423,20 +426,29 @@ export interface NxGeneratorInfo { export const getPackageName = (): string => JSON.parse( - fs.readFileSync(path.resolve(__dirname, '../../package.json'), 'utf-8'), + fs.readFileSync( + path.resolve(import.meta.dirname, '../../package.json'), + 'utf-8', + ), ).name; export const listGenerators = (): NxGeneratorInfo[] => Object.entries( JSON.parse( fs.readFileSync( - path.resolve(__dirname, '../../generators.json'), + path.resolve(import.meta.dirname, '../../generators.json'), 'utf-8', ), ).generators, ).map(([id, info]: any) => ({ id, - resolvedPath: path.resolve(__dirname, '..', '..', info.factory, '..'), + resolvedPath: path.resolve( + import.meta.dirname, + '..', + '..', + info.factory, + '..', + ), description: info.description, })); diff --git a/packages/nx-plugin/src/ts/nx-plugin/files/mcp-server/tools/general-guidance.ts.template b/packages/nx-plugin/src/ts/nx-plugin/files/mcp-server/tools/general-guidance.ts.template index 2ead4b374..1efd48102 100644 --- a/packages/nx-plugin/src/ts/nx-plugin/files/mcp-server/tools/general-guidance.ts.template +++ b/packages/nx-plugin/src/ts/nx-plugin/files/mcp-server/tools/general-guidance.ts.template @@ -16,7 +16,7 @@ export const registerGeneralGuidanceTool = (server: McpServer) => { { type: 'text' as const, text: fs.readFileSync( - path.resolve(__dirname, '../resources/GENERAL_GUIDANCE.md'), + path.resolve(import.meta.dirname, '../resources/GENERAL_GUIDANCE.md'), 'utf-8', ), }, diff --git a/packages/nx-plugin/src/ts/nx-plugin/files/mcp-server/utils.ts.template b/packages/nx-plugin/src/ts/nx-plugin/files/mcp-server/utils.ts.template index c7ca1500e..a4feb395a 100644 --- a/packages/nx-plugin/src/ts/nx-plugin/files/mcp-server/utils.ts.template +++ b/packages/nx-plugin/src/ts/nx-plugin/files/mcp-server/utils.ts.template @@ -9,20 +9,20 @@ export interface NxGeneratorInfo { export const getPackageName = (): string => JSON.parse( - fs.readFileSync(path.resolve(__dirname, '../../package.json'), 'utf-8'), + fs.readFileSync(path.resolve(import.meta.dirname, '../../package.json'), 'utf-8'), ).name; export const listGenerators = (): NxGeneratorInfo[] => Object.entries( JSON.parse( fs.readFileSync( - path.resolve(__dirname, '../../generators.json'), + path.resolve(import.meta.dirname, '../../generators.json'), 'utf-8', ), ).generators, ).map(([id, info]: any) => ({ id, - resolvedPath: path.resolve(__dirname, '..', '..', info.factory, '..'), + resolvedPath: path.resolve(import.meta.dirname, '..', '..', info.factory, '..'), description: info.description, })); diff --git a/packages/nx-plugin/src/ts/nx-plugin/generator.spec.ts b/packages/nx-plugin/src/ts/nx-plugin/generator.spec.ts index 8bdb19ea3..57f8bf12a 100644 --- a/packages/nx-plugin/src/ts/nx-plugin/generator.spec.ts +++ b/packages/nx-plugin/src/ts/nx-plugin/generator.spec.ts @@ -83,9 +83,10 @@ describe('ts#nx-plugin generator', () => { it('should configure TypeScript project as Nx Plugin', async () => { await tsNxPluginGenerator(tree, { name: 'test-plugin' }); - // Check tsconfig.json has commonjs module + // Nx 23 loads `.ts` generators as ESM via native type stripping, so the + // plugin must not be forced to commonjs. const tsConfig = readJson(tree, 'test-plugin/tsconfig.json'); - expect(tsConfig.compilerOptions?.module).toBe('commonjs'); + expect(tsConfig.compilerOptions?.module).not.toBe('commonjs'); // Check generators.json exists expect(tree.exists('test-plugin/generators.json')).toBe(true); @@ -148,10 +149,10 @@ describe('ts#nx-plugin generator', () => { expect(projectPackageJson.dependencies?.['@aws/nx-plugin']).toBeDefined(); }); - it('should add swc dev dependencies so nx transpiles generators without falling back to ts-node', async () => { - // Without @swc-node/register, nx transpiles unbuilt generators with ts-node, - // which forces `moduleResolution: node10` — a hard error under TypeScript 6. - // Simulate an external workspace (the in-repo workspace already has swc). + it('should not add swc transpiler dev dependencies', async () => { + // Generated workspaces are `"type": "module"`, so Nx loads the plugin's + // `.ts` generators as ESM via Node's native type stripping — no swc/ts-node + // transpiler is required. tree.write( 'package.json', JSON.stringify({ name: 'external-workspace', version: '1.0.0' }), @@ -160,14 +161,14 @@ describe('ts#nx-plugin generator', () => { await tsNxPluginGenerator(tree, { name: 'test-plugin' }); const rootPackageJson = readJson(tree, 'package.json'); - expect(rootPackageJson.devDependencies?.['@swc-node/register']).toBeDefined(); - expect(rootPackageJson.devDependencies?.['@swc/core']).toBeDefined(); + expect( + rootPackageJson.devDependencies?.['@swc-node/register'], + ).toBeUndefined(); const projectPackageJson = readJson(tree, 'test-plugin/package.json'); expect( projectPackageJson.devDependencies?.['@swc-node/register'], - ).toBeDefined(); - expect(projectPackageJson.devDependencies?.['@swc/core']).toBeDefined(); + ).toBeUndefined(); }); it('should add generator metric to app.ts', async () => { diff --git a/packages/nx-plugin/src/ts/nx-plugin/generator.ts b/packages/nx-plugin/src/ts/nx-plugin/generator.ts index 6f6052fb4..757cb4290 100644 --- a/packages/nx-plugin/src/ts/nx-plugin/generator.ts +++ b/packages/nx-plugin/src/ts/nx-plugin/generator.ts @@ -27,8 +27,9 @@ import tsMcpServerGenerator from '../mcp-server/generator'; import type { TsNxPluginGeneratorSchema } from './schema'; import { configureTsProjectAsNxPlugin } from './utils'; -export const TS_NX_PLUGIN_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const TS_NX_PLUGIN_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export const tsNxPluginGenerator = async ( tree: Tree, @@ -108,7 +109,7 @@ export const tsNxPluginGenerator = async ( // Add generator MCP server generateFiles( tree, - joinPathFragments(__dirname, 'files', 'mcp-server'), + joinPathFragments(import.meta.dirname, 'files', 'mcp-server'), mcpPath, { name: fullyQualifiedName, diff --git a/packages/nx-plugin/src/ts/nx-plugin/utils.ts b/packages/nx-plugin/src/ts/nx-plugin/utils.ts index e8d11c37a..75ef94eaa 100644 --- a/packages/nx-plugin/src/ts/nx-plugin/utils.ts +++ b/packages/nx-plugin/src/ts/nx-plugin/utils.ts @@ -10,7 +10,7 @@ import { updateJson, writeJson, } from '@nx/devkit'; -import PackageJson from '../../../package.json'; +import PackageJson from '../../../package.json' with { type: 'json' }; import { readProjectConfigurationUnqualified } from '../../utils/nx'; import { withVersions } from '../../utils/versions'; @@ -30,23 +30,6 @@ export const configureTsProjectAsNxPlugin = ( ); } - // Nx Plugins must use commonjs as a limitation of nx - // https://github.com/nrwl/nx/issues/15682 - updateJson(tree, tsConfigPath, (tsConfig) => { - const { module, moduleResolution, ...rest } = - tsConfig.compilerOptions ?? {}; - // Reassign module/moduleResolution last in a fixed order so re-running - // produces a stable key order regardless of whether a prior step removed - // `module` (eg configureTsProject drops a conflicting commonjs module). - // TypeScript 6 allows bundler + commonjs together, avoiding deprecated node/node10 - tsConfig.compilerOptions = { - ...rest, - module: module ?? 'commonjs', - moduleResolution: moduleResolution ?? 'bundler', - }; - return tsConfig; - }); - // Create an empty generators.json if one dosn't exist const generatorsJsonPath = joinPathFragments(project.root, 'generators.json'); if (!tree.exists(generatorsJsonPath)) { @@ -55,7 +38,8 @@ export const configureTsProjectAsNxPlugin = ( }); } - // Create a package.json if one doesn't exist, and configure "main" and "generators" + // Create a package.json if one doesn't exist, and configure "type", "main" + // and "generators" const pluginPackageJsonPath = joinPathFragments(project.root, 'package.json'); if (!tree.exists(pluginPackageJsonPath)) { writeJson(tree, pluginPackageJsonPath, { @@ -63,6 +47,9 @@ export const configureTsProjectAsNxPlugin = ( }); } updateJson(tree, pluginPackageJsonPath, (pkg) => { + // Mark the plugin as ESM so Nx loads its `.ts` generators as ES modules via + // Node's native type stripping (the workspace root is also `type: module`). + pkg.type ??= 'module'; pkg.main ??= './src/index.js'; pkg.generators ??= './generators.json'; return pkg; @@ -80,13 +67,10 @@ export const configureTsProjectAsNxPlugin = ( // Include dependency on @aws/nx-plugin [PackageJson.name]: `^${PackageJson.version}`, }; - // Nx transpiles unbuilt plugin generators on the fly. With @swc-node/register - // present it uses swc; otherwise it falls back to ts-node, which forces the - // deprecated `moduleResolution: node10` — a hard error under TypeScript 6. - // Ensure swc is available so generators run regardless of the installed - // TypeScript version. ESM migration tracked in awslabs/nx-plugin-for-aws#814. - const devDeps = withVersions(['@swc-node/register', '@swc/core']); - addDependenciesToPackageJson(tree, {}, { ...deps, ...devDeps }); - addDependenciesToPackageJson(tree, deps, devDeps, pluginPackageJsonPath); + // Generated workspaces are `"type": "module"`, so Nx loads the plugin's + // `.ts` generators as ESM via Node's native type stripping — no swc/ts-node + // transpiler is required. + addDependenciesToPackageJson(tree, {}, deps); + addDependenciesToPackageJson(tree, deps, {}, pluginPackageJsonPath); } }; diff --git a/packages/nx-plugin/src/ts/rdb/agent-connection/generator.spec.ts b/packages/nx-plugin/src/ts/rdb/agent-connection/generator.spec.ts index bfb19e002..26ff64009 100644 --- a/packages/nx-plugin/src/ts/rdb/agent-connection/generator.spec.ts +++ b/packages/nx-plugin/src/ts/rdb/agent-connection/generator.spec.ts @@ -17,7 +17,7 @@ describe('ts#rdb agent-connection generator', () => { name, root: `packages/${name}`, targets: { - 'dev': { executor: 'nx:run-commands', continuous: true }, + dev: { executor: 'nx:run-commands', continuous: true }, }, }), ); @@ -298,9 +298,7 @@ export const getAgent = async () => { }); const config = readProjectConfiguration(tree, 'my-service'); - const deps = ( - config.targets?.['my-agent-dev']?.dependsOn ?? [] - ).filter( + const deps = (config.targets?.['my-agent-dev']?.dependsOn ?? []).filter( (d: any) => typeof d === 'object' && d.projects?.includes('db') && diff --git a/packages/nx-plugin/src/ts/rdb/agent-connection/generator.ts b/packages/nx-plugin/src/ts/rdb/agent-connection/generator.ts index 4ef1a81f8..6ba52a347 100644 --- a/packages/nx-plugin/src/ts/rdb/agent-connection/generator.ts +++ b/packages/nx-plugin/src/ts/rdb/agent-connection/generator.ts @@ -23,7 +23,7 @@ import { injectRdsCaBundleIntoDockerfile } from '../utils'; import type { TsRdbAgentConnectionGeneratorSchema } from './schema'; export const TS_RDB_AGENT_CONNECTION_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); export const tsRdbAgentConnectionGenerator = async ( tree: Tree, diff --git a/packages/nx-plugin/src/ts/rdb/generator.ts b/packages/nx-plugin/src/ts/rdb/generator.ts index 47df7fca7..5d4b63c17 100644 --- a/packages/nx-plugin/src/ts/rdb/generator.ts +++ b/packages/nx-plugin/src/ts/rdb/generator.ts @@ -43,8 +43,9 @@ import { TS_VERSIONS, withVersions } from '../../utils/versions'; import tsProjectGenerator, { getTsLibDetails } from '../lib/generator'; import type { TsRdbGeneratorSchema } from './schema'; -export const TS_RDB_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const TS_RDB_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export const tsRdbGenerator = async ( tree: Tree, @@ -120,7 +121,7 @@ export const tsRdbGenerator = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), dir, templateOptions, ); diff --git a/packages/nx-plugin/src/ts/rdb/mcp-server-connection/generator.spec.ts b/packages/nx-plugin/src/ts/rdb/mcp-server-connection/generator.spec.ts index 1d180b1bd..c9a8dabed 100644 --- a/packages/nx-plugin/src/ts/rdb/mcp-server-connection/generator.spec.ts +++ b/packages/nx-plugin/src/ts/rdb/mcp-server-connection/generator.spec.ts @@ -17,7 +17,7 @@ describe('ts#rdb mcp-server-connection generator', () => { name, root: `packages/${name}`, targets: { - 'dev': { executor: 'nx:run-commands', continuous: true }, + dev: { executor: 'nx:run-commands', continuous: true }, }, }), ); @@ -238,9 +238,7 @@ CMD [ "node", "--require", "@aws/aws-distro-opentelemetry-node-autoinstrumentati }); const config = readProjectConfiguration(tree, 'my-service'); - const deps = ( - config.targets?.['my-mcp-dev']?.dependsOn ?? [] - ).filter( + const deps = (config.targets?.['my-mcp-dev']?.dependsOn ?? []).filter( (d: any) => typeof d === 'object' && d.projects?.includes('db') && diff --git a/packages/nx-plugin/src/ts/rdb/mcp-server-connection/generator.ts b/packages/nx-plugin/src/ts/rdb/mcp-server-connection/generator.ts index 62f6ef42c..383c7ff70 100644 --- a/packages/nx-plugin/src/ts/rdb/mcp-server-connection/generator.ts +++ b/packages/nx-plugin/src/ts/rdb/mcp-server-connection/generator.ts @@ -23,7 +23,7 @@ import { injectRdsCaBundleIntoDockerfile } from '../utils'; import type { TsRdbMcpServerConnectionGeneratorSchema } from './schema'; export const TS_RDB_MCP_SERVER_CONNECTION_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); export const tsRdbMcpServerConnectionGenerator = async ( tree: Tree, diff --git a/packages/nx-plugin/src/ts/rdb/smithy-connection/generator.spec.ts b/packages/nx-plugin/src/ts/rdb/smithy-connection/generator.spec.ts index 90cb8ab08..1e74283e7 100644 --- a/packages/nx-plugin/src/ts/rdb/smithy-connection/generator.spec.ts +++ b/packages/nx-plugin/src/ts/rdb/smithy-connection/generator.spec.ts @@ -17,7 +17,7 @@ describe('ts#rdb smithy-connection generator', () => { name, root: `packages/${name}`, targets: { - 'dev': { executor: 'nx:run-commands', continuous: true }, + dev: { executor: 'nx:run-commands', continuous: true }, }, }), ); @@ -30,7 +30,7 @@ describe('ts#rdb smithy-connection generator', () => { name, root: `packages/${name}`, targets: { - 'dev': { executor: 'nx:run-commands', continuous: true }, + dev: { executor: 'nx:run-commands', continuous: true }, }, }), ); @@ -207,7 +207,7 @@ export const lambdaHandler = async ( name: 'api', root: 'packages/api', targets: { - 'dev': { executor: 'nx:run-commands', continuous: true }, + dev: { executor: 'nx:run-commands', continuous: true }, }, }), ); diff --git a/packages/nx-plugin/src/ts/rdb/smithy-connection/generator.ts b/packages/nx-plugin/src/ts/rdb/smithy-connection/generator.ts index 889141cd7..89c8f685a 100644 --- a/packages/nx-plugin/src/ts/rdb/smithy-connection/generator.ts +++ b/packages/nx-plugin/src/ts/rdb/smithy-connection/generator.ts @@ -26,7 +26,7 @@ import { import type { TsRdbSmithyConnectionGeneratorSchema } from './schema'; export const TS_RDB_SMITHY_CONNECTION_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); export const tsRdbSmithyConnectionGenerator = async ( tree: Tree, diff --git a/packages/nx-plugin/src/ts/rdb/trpc-connection/generator.spec.ts b/packages/nx-plugin/src/ts/rdb/trpc-connection/generator.spec.ts index 6cb0b08ae..3415d054e 100644 --- a/packages/nx-plugin/src/ts/rdb/trpc-connection/generator.spec.ts +++ b/packages/nx-plugin/src/ts/rdb/trpc-connection/generator.spec.ts @@ -17,7 +17,7 @@ describe('ts#rdb trpc-connection generator', () => { name, root: `packages/${name}`, targets: { - 'dev': { executor: 'nx:run-commands', continuous: true }, + dev: { executor: 'nx:run-commands', continuous: true }, }, ...(metadata ? { metadata } : {}), }), @@ -31,7 +31,7 @@ describe('ts#rdb trpc-connection generator', () => { name, root: `packages/${name}`, targets: { - 'dev': { executor: 'nx:run-commands', continuous: true }, + dev: { executor: 'nx:run-commands', continuous: true }, }, }), ); diff --git a/packages/nx-plugin/src/ts/rdb/trpc-connection/generator.ts b/packages/nx-plugin/src/ts/rdb/trpc-connection/generator.ts index 410a995b7..2088f14f4 100644 --- a/packages/nx-plugin/src/ts/rdb/trpc-connection/generator.ts +++ b/packages/nx-plugin/src/ts/rdb/trpc-connection/generator.ts @@ -23,7 +23,7 @@ import { import type { TsRdbTrpcConnectionGeneratorSchema } from './schema'; export const TS_RDB_TRPC_CONNECTION_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); export const tsRdbTrpcConnectionGenerator = async ( tree: Tree, @@ -55,7 +55,7 @@ export const tsRdbTrpcConnectionGenerator = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), sourceProject.root, { rdbNameKebab, rdbNameCamel, rdbNamePascal, rdbPackageAlias, engine }, { overwriteStrategy: OverwriteStrategy.KeepExisting }, diff --git a/packages/nx-plugin/src/ts/react-website/agui/generator.ts b/packages/nx-plugin/src/ts/react-website/agui/generator.ts index 829fca537..81b525943 100644 --- a/packages/nx-plugin/src/ts/react-website/agui/generator.ts +++ b/packages/nx-plugin/src/ts/react-website/agui/generator.ts @@ -65,7 +65,7 @@ export const addAgUiReactConnection = async ( // the generator is idempotent. generateFiles( tree, - joinPathFragments(__dirname, 'files', 'common'), + joinPathFragments(import.meta.dirname, 'files', 'common'), frontendProjectConfig.root, { agentName, agentNameClassName, auth }, { overwriteStrategy: OverwriteStrategy.KeepExisting }, @@ -77,7 +77,7 @@ export const addAgUiReactConnection = async ( } generateFiles( tree, - joinPathFragments(__dirname, 'files', theme), + joinPathFragments(import.meta.dirname, 'files', theme), frontendProjectConfig.root, { scopeAlias }, { overwriteStrategy: OverwriteStrategy.KeepExisting }, @@ -86,7 +86,10 @@ export const addAgUiReactConnection = async ( if (auth === 'iam') { generateFiles( tree, - joinPathFragments(__dirname, '../../../utils/files/website/hooks/sigv4'), + joinPathFragments( + import.meta.dirname, + '../../../utils/files/website/hooks/sigv4', + ), joinPathFragments(frontendProjectConfig.sourceRoot, 'hooks'), {}, { overwriteStrategy: OverwriteStrategy.KeepExisting }, diff --git a/packages/nx-plugin/src/ts/react-website/app/generator.ts b/packages/nx-plugin/src/ts/react-website/app/generator.ts index 161de404a..060f8ae1a 100644 --- a/packages/nx-plugin/src/ts/react-website/app/generator.ts +++ b/packages/nx-plugin/src/ts/react-website/app/generator.ts @@ -53,7 +53,7 @@ export type UxOption = (typeof SUPPORTED_UX_PROVIDERS)[number]; export type Ux = UxOption; export const REACT_WEBSITE_APP_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); + getGeneratorInfo(import.meta.filename); export async function tsReactWebsiteGenerator( tree: Tree, @@ -278,11 +278,11 @@ export async function tsReactWebsiteGenerator( }; tree.delete(joinPathFragments(libraryRoot, 'src', 'app')); const appCommonTemplatePath = joinPathFragments( - __dirname, + import.meta.dirname, './files/app/common', ); const appTemplatePath = joinPathFragments( - __dirname, + import.meta.dirname, `./files/app/${ux.toLowerCase()}`, ); @@ -310,11 +310,11 @@ export async function tsReactWebsiteGenerator( if (tanstackRouter) { const routerCommonTemplatePath = joinPathFragments( - __dirname, + import.meta.dirname, './files/tanstack-router/common', ); const routerTemplatePath = joinPathFragments( - __dirname, + import.meta.dirname, `./files/tanstack-router/${ux.toLowerCase()}`, ); @@ -347,7 +347,7 @@ export async function tsReactWebsiteGenerator( const e2eRoot = readProjectConfiguration(tree, e2eFullyQualifiedName).root; generateFiles( tree, // the virtual file system - joinPathFragments(__dirname, `./files/e2e/${e2eTestRunner}`), // path to the file templates + joinPathFragments(import.meta.dirname, `./files/e2e/${e2eTestRunner}`), // path to the file templates e2eRoot, // destination path of the files { ...schema, ...names(fullyQualifiedName) }, { diff --git a/packages/nx-plugin/src/ts/react-website/cognito-auth/generator.ts b/packages/nx-plugin/src/ts/react-website/cognito-auth/generator.ts index 39694d862..237b4225d 100644 --- a/packages/nx-plugin/src/ts/react-website/cognito-auth/generator.ts +++ b/packages/nx-plugin/src/ts/react-website/cognito-auth/generator.ts @@ -42,10 +42,14 @@ import { } from './utils'; const readGritPattern = (name: string): string => - readFileSync(join(__dirname, 'grit', `${name}.grit`), 'utf-8').trim(); + readFileSync( + join(import.meta.dirname, 'grit', `${name}.grit`), + 'utf-8', + ).trim(); -export const COGNITO_AUTH_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const COGNITO_AUTH_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export async function tsReactWebsiteAuthGenerator( tree: Tree, @@ -80,7 +84,7 @@ export async function tsReactWebsiteAuthGenerator( generateFiles( tree, - joinPathFragments(__dirname, 'files', 'app'), + joinPathFragments(import.meta.dirname, 'files', 'app'), srcRoot, options, { diff --git a/packages/nx-plugin/src/ts/react-website/cognito-auth/generator.ux-provider.spec.ts b/packages/nx-plugin/src/ts/react-website/cognito-auth/generator.ux-provider.spec.ts index 3f40bf9b1..564e0472f 100644 --- a/packages/nx-plugin/src/ts/react-website/cognito-auth/generator.ux-provider.spec.ts +++ b/packages/nx-plugin/src/ts/react-website/cognito-auth/generator.ux-provider.spec.ts @@ -284,7 +284,9 @@ export default AppLayout; expect(afterSecondRun).toEqual(afterFirstRun); // The user greeting and sign out wiring must appear exactly once - expect(afterSecondRun.match(/className="user-greeting"/g)).toHaveLength(1); + expect(afterSecondRun.match(/className="user-greeting"/g)).toHaveLength( + 1, + ); expect(afterSecondRun.match(/className="signout-link"/g)).toHaveLength(1); expect(afterSecondRun.match(/= useAuth\(\)/g)).toHaveLength(1); }); diff --git a/packages/nx-plugin/src/ts/react-website/cognito-auth/utils.ts b/packages/nx-plugin/src/ts/react-website/cognito-auth/utils.ts index 20057989f..a50731969 100644 --- a/packages/nx-plugin/src/ts/react-website/cognito-auth/utils.ts +++ b/packages/nx-plugin/src/ts/react-website/cognito-auth/utils.ts @@ -9,7 +9,10 @@ import { addDestructuredImport, applyGritQL } from '../../../utils/ast'; import { kebabCase } from '../../../utils/names'; const readGritPattern = (name: string): string => - readFileSync(join(__dirname, 'grit', `${name}.grit`), 'utf-8').trim(); + readFileSync( + join(import.meta.dirname, 'grit', `${name}.grit`), + 'utf-8', + ).trim(); // Leaves room for the IaC suffix (Terraform: `-<12-digit account>-<8-char hex>` = 22 chars) inside Cognito's 63-char limit. const MAX_DERIVED_DOMAIN_PREFIX_LENGTH = 41; diff --git a/packages/nx-plugin/src/ts/react-website/runtime-config/generator.ts b/packages/nx-plugin/src/ts/react-website/runtime-config/generator.ts index bf87d9d56..a580760ba 100644 --- a/packages/nx-plugin/src/ts/react-website/runtime-config/generator.ts +++ b/packages/nx-plugin/src/ts/react-website/runtime-config/generator.ts @@ -22,8 +22,9 @@ import { import { toProjectRelativePath } from '../../../utils/paths'; import type { RuntimeConfigGeneratorSchema } from './schema'; -export const RUNTIME_CONFIG_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const RUNTIME_CONFIG_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export async function runtimeConfigGenerator( tree: Tree, @@ -55,7 +56,7 @@ export async function runtimeConfigGenerator( const npmScopePrefix = getNpmScopePrefix(tree); generateFiles( tree, - joinPathFragments(__dirname, 'files', 'app'), + joinPathFragments(import.meta.dirname, 'files', 'app'), srcRoot, { ...options, diff --git a/packages/nx-plugin/src/ts/sync/generator.ts b/packages/nx-plugin/src/ts/sync/generator.ts index e5c2e8a5a..2ea834d37 100644 --- a/packages/nx-plugin/src/ts/sync/generator.ts +++ b/packages/nx-plugin/src/ts/sync/generator.ts @@ -12,12 +12,13 @@ import { } from '@nx/devkit'; import type { SyncGeneratorResult } from 'nx/src/utils/sync-generators'; import { relative } from 'path'; -import PackageJson from '../../../package.json'; +import PackageJson from '../../../package.json' with { type: 'json' }; import { formatFilesInSubtree } from '../../utils/format'; import { getGeneratorInfo, type NxGeneratorInfo } from '../../utils/nx'; -export const TS_SYNC_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const TS_SYNC_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export const SYNC_GENERATOR_NAME = `${PackageJson.name}:${TS_SYNC_GENERATOR_INFO.id}`; diff --git a/packages/nx-plugin/src/ts/website/app/generator.ts b/packages/nx-plugin/src/ts/website/app/generator.ts index 6f6806e8c..0e1278404 100644 --- a/packages/nx-plugin/src/ts/website/app/generator.ts +++ b/packages/nx-plugin/src/ts/website/app/generator.ts @@ -7,8 +7,9 @@ import { getGeneratorInfo, type NxGeneratorInfo } from '../../../utils/nx'; import { tsReactWebsiteGenerator } from '../../react-website/app/generator'; import type { TsWebsiteGeneratorSchema } from './schema'; -export const TS_WEBSITE_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const TS_WEBSITE_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export const tsWebsiteGenerator = async ( tree: Tree, diff --git a/packages/nx-plugin/src/ts/website/auth/generator.ts b/packages/nx-plugin/src/ts/website/auth/generator.ts index db7f49c12..c9819d262 100644 --- a/packages/nx-plugin/src/ts/website/auth/generator.ts +++ b/packages/nx-plugin/src/ts/website/auth/generator.ts @@ -7,8 +7,9 @@ import { getGeneratorInfo, type NxGeneratorInfo } from '../../../utils/nx'; import { tsReactWebsiteAuthGenerator } from '../../react-website/cognito-auth/generator'; import type { TsWebsiteAuthGeneratorSchema } from './schema'; -export const TS_WEBSITE_AUTH_GENERATOR_INFO: NxGeneratorInfo = - getGeneratorInfo(__filename); +export const TS_WEBSITE_AUTH_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo( + import.meta.filename, +); export async function tsWebsiteAuthGenerator( tree: Tree, diff --git a/packages/nx-plugin/src/utils/agent-chat/agent-chat.ts b/packages/nx-plugin/src/utils/agent-chat/agent-chat.ts index 6a9d25b09..9b1bc2090 100644 --- a/packages/nx-plugin/src/utils/agent-chat/agent-chat.ts +++ b/packages/nx-plugin/src/utils/agent-chat/agent-chat.ts @@ -50,7 +50,7 @@ export const addAgentChatScripts = ( // Shared remote-resolution + auth helper, used by every protocol. generateFiles( tree, - joinPathFragments(__dirname, 'files', 'common'), + joinPathFragments(import.meta.dirname, 'files', 'common'), options.scriptsDir, templateContext, { overwriteStrategy: OverwriteStrategy.KeepExisting }, @@ -62,7 +62,7 @@ export const addAgentChatScripts = ( options.protocol === 'http' ? `http-${options.language}` : options.protocol; generateFiles( tree, - joinPathFragments(__dirname, 'files', protocolDir), + joinPathFragments(import.meta.dirname, 'files', protocolDir), options.scriptsDir, templateContext, { overwriteStrategy: OverwriteStrategy.KeepExisting }, diff --git a/packages/nx-plugin/src/utils/agent-connection/agent-connection.ts b/packages/nx-plugin/src/utils/agent-connection/agent-connection.ts index 275b26fb7..6f69b1720 100644 --- a/packages/nx-plugin/src/utils/agent-connection/agent-connection.ts +++ b/packages/nx-plugin/src/utils/agent-connection/agent-connection.ts @@ -251,7 +251,7 @@ const tsCoreDir = () => const emitTs = (tree: Tree, templateDir: string) => generateFiles( tree, - joinPathFragments(__dirname, 'files', templateDir), + joinPathFragments(import.meta.dirname, 'files', templateDir), tsCoreDir(), {}, { overwriteStrategy: OverwriteStrategy.KeepExisting }, @@ -388,7 +388,7 @@ export async function ensurePythonAgentConnectionProject( // Framework-agnostic runtime-config + session-context helpers. generateFiles( tree, - joinPathFragments(__dirname, 'files', 'py-core-runtime-config'), + joinPathFragments(import.meta.dirname, 'files', 'py-core-runtime-config'), coreDir, {}, { overwriteStrategy: OverwriteStrategy.KeepExisting }, @@ -424,7 +424,7 @@ const pyCoreDir = (tree: Tree) => const emitPy = (tree: Tree, templateDir: string) => generateFiles( tree, - joinPathFragments(__dirname, 'files', templateDir), + joinPathFragments(import.meta.dirname, 'files', templateDir), pyCoreDir(tree), {}, { overwriteStrategy: OverwriteStrategy.KeepExisting }, diff --git a/packages/nx-plugin/src/utils/agent-core-constructs/agent-core-constructs.ts b/packages/nx-plugin/src/utils/agent-core-constructs/agent-core-constructs.ts index 9c46b30a9..2422c9636 100644 --- a/packages/nx-plugin/src/utils/agent-core-constructs/agent-core-constructs.ts +++ b/packages/nx-plugin/src/utils/agent-core-constructs/agent-core-constructs.ts @@ -75,7 +75,7 @@ const addAgentCoreCDKInfra = async ( // Generate app specific CDK construct generateFiles( tree, - joinPathFragments(__dirname, 'files', 'cdk', 'app', 'agent-core'), + joinPathFragments(import.meta.dirname, 'files', 'cdk', 'app', 'agent-core'), joinPathFragments( PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, @@ -122,7 +122,13 @@ const addAgentCoreTerraformInfra = ( // Add the AgentCore shared module generateFiles( tree, - joinPathFragments(__dirname, 'files', 'terraform', 'core', 'agent-core'), + joinPathFragments( + import.meta.dirname, + 'files', + 'terraform', + 'core', + 'agent-core', + ), joinPathFragments( PACKAGES_DIR, SHARED_TERRAFORM_DIR, @@ -139,7 +145,13 @@ const addAgentCoreTerraformInfra = ( // Generate app specific agent core configuration generateFiles( tree, - joinPathFragments(__dirname, 'files', 'terraform', 'app', 'agent-core'), + joinPathFragments( + import.meta.dirname, + 'files', + 'terraform', + 'app', + 'agent-core', + ), joinPathFragments( PACKAGES_DIR, SHARED_TERRAFORM_DIR, @@ -264,7 +276,13 @@ const addAgentCoreGatewayCDKInfra = async ( // loading) shared by all gateways generateFiles( tree, - joinPathFragments(__dirname, 'files', 'cdk', 'core', 'agentcore-gateway'), + joinPathFragments( + import.meta.dirname, + 'files', + 'cdk', + 'core', + 'agentcore-gateway', + ), joinPathFragments( PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, @@ -280,7 +298,13 @@ const addAgentCoreGatewayCDKInfra = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files', 'cdk', 'app', 'agentcore-gateway'), + joinPathFragments( + import.meta.dirname, + 'files', + 'cdk', + 'app', + 'agentcore-gateway', + ), joinPathFragments( PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, @@ -342,7 +366,7 @@ const addAgentCoreGatewayTerraformInfra = ( generateFiles( tree, joinPathFragments( - __dirname, + import.meta.dirname, 'files', 'terraform', 'core', @@ -364,7 +388,7 @@ const addAgentCoreGatewayTerraformInfra = ( generateFiles( tree, joinPathFragments( - __dirname, + import.meta.dirname, 'files', 'terraform', 'app', diff --git a/packages/nx-plugin/src/utils/api-constructs/api-constructs.ts b/packages/nx-plugin/src/utils/api-constructs/api-constructs.ts index 12b20f4f6..901141b73 100644 --- a/packages/nx-plugin/src/utils/api-constructs/api-constructs.ts +++ b/packages/nx-plugin/src/utils/api-constructs/api-constructs.ts @@ -92,7 +92,14 @@ const addApiGatewayCdkConstructs = async ( const generateCoreApiFile = (name: string) => { generateFiles( tree, - joinPathFragments(__dirname, 'files', 'cdk', 'core', 'api', name), + joinPathFragments( + import.meta.dirname, + 'files', + 'cdk', + 'core', + 'api', + name, + ), joinPathFragments( PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, @@ -118,7 +125,7 @@ const addApiGatewayCdkConstructs = async ( generateFiles( tree, joinPathFragments( - __dirname, + import.meta.dirname, 'files', 'cdk', 'app', @@ -175,7 +182,7 @@ const addApiGatewayTerraformModules = ( generateFiles( tree, joinPathFragments( - __dirname, + import.meta.dirname, 'files', 'terraform', 'core', @@ -193,7 +200,7 @@ const addApiGatewayTerraformModules = ( generateFiles( tree, joinPathFragments( - __dirname, + import.meta.dirname, 'files', 'terraform', 'app', diff --git a/packages/nx-plugin/src/utils/api-constructs/integration-builder.spec.ts b/packages/nx-plugin/src/utils/api-constructs/integration-builder.spec.ts index 6f3d77637..dc3cf9beb 100644 --- a/packages/nx-plugin/src/utils/api-constructs/integration-builder.spec.ts +++ b/packages/nx-plugin/src/utils/api-constructs/integration-builder.spec.ts @@ -20,7 +20,7 @@ describe('IntegrationBuilder type-safety', () => { // The real builder template, with aws-cdk-lib type imports redirected to a local stub const builderTemplate = readFileSync( - join(__dirname, 'files/cdk/core/api/utils/utils.ts.template'), + join(import.meta.dirname, 'files/cdk/core/api/utils/utils.ts.template'), 'utf-8', ).replace(/'aws-cdk-lib[^']*'/g, `'./cdk-stub'`); diff --git a/packages/nx-plugin/src/utils/bundle/bundle.ts b/packages/nx-plugin/src/utils/bundle/bundle.ts index 02a29a158..034c87e33 100644 --- a/packages/nx-plugin/src/utils/bundle/bundle.ts +++ b/packages/nx-plugin/src/utils/bundle/bundle.ts @@ -137,7 +137,7 @@ export const addTypeScriptBundleTarget = async ( // Generate empty rolldown config if it doesn't exist generateFiles( tree, - joinPathFragments(__dirname, 'files', 'ts'), + joinPathFragments(import.meta.dirname, 'files', 'ts'), project.root, {}, { overwriteStrategy: OverwriteStrategy.KeepExisting }, diff --git a/packages/nx-plugin/src/utils/config/index.ts b/packages/nx-plugin/src/utils/config/index.ts index 653f739d7..238870f55 100644 --- a/packages/nx-plugin/src/utils/config/index.ts +++ b/packages/nx-plugin/src/utils/config/index.ts @@ -7,8 +7,8 @@ import type { ContainersConfig } from '../containers'; import type { IacConfig } from '../iac'; export * from '../../license/config-types'; -export { Containers, ContainersConfig } from '../containers'; -export { Iac, IacConfig } from '../iac'; +export type { Containers, ContainersConfig } from '../containers'; +export type { Iac, IacConfig } from '../iac'; /** * Configuration for the nx plugin diff --git a/packages/nx-plugin/src/utils/config/utils.ts b/packages/nx-plugin/src/utils/config/utils.ts index 80e6f4ef4..f2f87f0b7 100644 --- a/packages/nx-plugin/src/utils/config/utils.ts +++ b/packages/nx-plugin/src/utils/config/utils.ts @@ -3,6 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ import { generateFiles, joinPathFragments, type Tree } from '@nx/devkit'; +import { existsSync, readFileSync } from 'fs'; import { createJiti } from 'jiti'; import { join } from 'path'; import { applyGritQL, matchGritQL } from '../ast'; @@ -17,14 +18,14 @@ export const AWS_NX_PLUGIN_CONFIG_FILE_NAME = 'aws-nx-plugin.config.mts'; */ const AWS_NX_PLUGIN_JITI_ALIASES = { '@aws/nx-plugin/sdk/license': join( - __dirname, + import.meta.dirname, '..', '..', '..', 'sdk', 'license', ), - '@aws/nx-plugin': join(__dirname, '..', '..'), + '@aws/nx-plugin': join(import.meta.dirname, '..', '..'), }; /** @@ -35,7 +36,12 @@ export const ensureAwsNxPluginConfig = async ( ): Promise => { if (!tree.exists(AWS_NX_PLUGIN_CONFIG_FILE_NAME)) { // Create an empty config file if it doesn't already exist - generateFiles(tree, joinPathFragments(__dirname, 'files'), '.', {}); + generateFiles( + tree, + joinPathFragments(import.meta.dirname, 'files'), + '.', + {}, + ); } // eslint-disable-next-line @typescript-eslint/no-non-null-assertion return await readAwsNxPluginConfig(tree)!; @@ -57,7 +63,9 @@ export const readAwsNxPluginConfig = async ( const source = tree.read(AWS_NX_PLUGIN_CONFIG_FILE_NAME, 'utf-8')!; const configFilePath = join(tree.root, AWS_NX_PLUGIN_CONFIG_FILE_NAME); - const jiti = createJiti(__filename, { alias: AWS_NX_PLUGIN_JITI_ALIASES }); + const jiti = createJiti(import.meta.filename, { + alias: AWS_NX_PLUGIN_JITI_ALIASES, + }); const mod = jiti.evalModule(source, { filename: configFilePath }); return (mod as any).default ?? mod; @@ -71,13 +79,14 @@ export const readAwsNxPluginConfig = async ( export const readAwsNxPluginConfigFromDisk = ( workspaceRoot: string, ): AwsNxPluginConfig | undefined => { - const { existsSync, readFileSync } = require('fs'); const configPath = join(workspaceRoot, AWS_NX_PLUGIN_CONFIG_FILE_NAME); if (!existsSync(configPath)) return undefined; const source = readFileSync(configPath, 'utf-8'); - const jiti = createJiti(__filename, { alias: AWS_NX_PLUGIN_JITI_ALIASES }); + const jiti = createJiti(import.meta.filename, { + alias: AWS_NX_PLUGIN_JITI_ALIASES, + }); const mod = jiti.evalModule(source, { filename: configPath }); return (mod as any).default ?? mod; }; diff --git a/packages/nx-plugin/src/utils/connection/open-api/react.ts b/packages/nx-plugin/src/utils/connection/open-api/react.ts index 4d609bc9c..a0427bed4 100644 --- a/packages/nx-plugin/src/utils/connection/open-api/react.ts +++ b/packages/nx-plugin/src/utils/connection/open-api/react.ts @@ -164,7 +164,7 @@ export const addOpenApiReactClient = async ( if (auth === 'iam') { generateFiles( tree, - joinPathFragments(__dirname, '../../files/website/hooks/sigv4'), + joinPathFragments(import.meta.dirname, '../../files/website/hooks/sigv4'), joinPathFragments(frontendProjectConfig.sourceRoot, 'hooks'), {}, { @@ -177,7 +177,7 @@ export const addOpenApiReactClient = async ( generateFiles( tree, joinPathFragments( - __dirname, + import.meta.dirname, '../../files/website/components/tanstack-query', ), joinPathFragments(frontendProjectConfig.sourceRoot, 'components'), @@ -192,7 +192,7 @@ export const addOpenApiReactClient = async ( // Add a hook to instantiate the client generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), frontendProjectConfig.sourceRoot, { auth, diff --git a/packages/nx-plugin/src/utils/dynamodb-constructs/dynamodb-constructs.ts b/packages/nx-plugin/src/utils/dynamodb-constructs/dynamodb-constructs.ts index e1c75ae3c..18d7bfbb3 100644 --- a/packages/nx-plugin/src/utils/dynamodb-constructs/dynamodb-constructs.ts +++ b/packages/nx-plugin/src/utils/dynamodb-constructs/dynamodb-constructs.ts @@ -63,7 +63,7 @@ export const addDynamoDBCdkConstructs = async ( ) => { generateFiles( tree, - joinPathFragments(__dirname, 'files', 'cdk', 'core'), + joinPathFragments(import.meta.dirname, 'files', 'cdk', 'core'), joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src', 'core'), options, { @@ -73,7 +73,7 @@ export const addDynamoDBCdkConstructs = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files', 'cdk', 'app', 'dynamodb'), + joinPathFragments(import.meta.dirname, 'files', 'cdk', 'app', 'dynamodb'), joinPathFragments( PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, @@ -129,7 +129,7 @@ export const addDynamoDBTerraformModules = ( ) => { generateFiles( tree, - joinPathFragments(__dirname, 'files', 'terraform', 'core'), + joinPathFragments(import.meta.dirname, 'files', 'terraform', 'core'), joinPathFragments(PACKAGES_DIR, SHARED_TERRAFORM_DIR, 'src', 'core'), options, { @@ -139,7 +139,13 @@ export const addDynamoDBTerraformModules = ( generateFiles( tree, - joinPathFragments(__dirname, 'files', 'terraform', 'app', 'dynamodb'), + joinPathFragments( + import.meta.dirname, + 'files', + 'terraform', + 'app', + 'dynamodb', + ), joinPathFragments( PACKAGES_DIR, SHARED_TERRAFORM_DIR, diff --git a/packages/nx-plugin/src/utils/format.ts b/packages/nx-plugin/src/utils/format.ts index f769ec018..1555f908f 100644 --- a/packages/nx-plugin/src/utils/format.ts +++ b/packages/nx-plugin/src/utils/format.ts @@ -6,9 +6,12 @@ import { Biome } from '@biomejs/js-api/nodejs'; import type { Tree } from '@nx/devkit'; import { execFileSync, execSync } from 'child_process'; -import { existsSync } from 'fs'; +import { existsSync, readFileSync } from 'fs'; +import { createRequire } from 'module'; import path from 'path'; +const require = createRequire(import.meta.url); + export const DEFAULT_BIOME_CONFIG = { $schema: 'https://biomejs.dev/schemas/2.4.16/schema.json', root: true, @@ -206,9 +209,9 @@ function getBiomeCommand(root: string): BiomeCommand | undefined { // Run via node for cross-platform execution of the bin shim. try { const pkgJsonPath = require.resolve('@biomejs/biome/package.json', { - paths: [root, __dirname], + paths: [root, import.meta.dirname], }); - const pkgJson = require(pkgJsonPath); + const pkgJson = JSON.parse(readFileSync(pkgJsonPath, 'utf-8')); const binRelative = typeof pkgJson.bin === 'string' ? pkgJson.bin : pkgJson.bin?.biome; if (binRelative) { diff --git a/packages/nx-plugin/src/utils/function-constructs/function-constructs.ts b/packages/nx-plugin/src/utils/function-constructs/function-constructs.ts index fd21c9bcd..311f1fd6e 100644 --- a/packages/nx-plugin/src/utils/function-constructs/function-constructs.ts +++ b/packages/nx-plugin/src/utils/function-constructs/function-constructs.ts @@ -70,7 +70,13 @@ const addLambdaFunctionCdkConstructs = async ( // Generate app specific CDK construct generateFiles( tree, - joinPathFragments(__dirname, 'files', 'cdk', 'app', 'lambda-functions'), + joinPathFragments( + import.meta.dirname, + 'files', + 'cdk', + 'app', + 'lambda-functions', + ), joinPathFragments( PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, @@ -121,7 +127,7 @@ const addLambdaFunctionTerraformModules = ( generateFiles( tree, joinPathFragments( - __dirname, + import.meta.dirname, 'files', 'terraform', 'app', diff --git a/packages/nx-plugin/src/utils/generators.ts b/packages/nx-plugin/src/utils/generators.ts index 5a3fd704a..88c78dd11 100644 --- a/packages/nx-plugin/src/utils/generators.ts +++ b/packages/nx-plugin/src/utils/generators.ts @@ -4,7 +4,7 @@ */ import * as path from 'path'; -import GeneratorsJson from '../../generators.json'; +import GeneratorsJson from '../../generators.json' with { type: 'json' }; export interface GeneratorInfo { readonly id: string; diff --git a/packages/nx-plugin/src/utils/identity-constructs/identity-constructs.ts b/packages/nx-plugin/src/utils/identity-constructs/identity-constructs.ts index f4d1751bf..566329c29 100644 --- a/packages/nx-plugin/src/utils/identity-constructs/identity-constructs.ts +++ b/packages/nx-plugin/src/utils/identity-constructs/identity-constructs.ts @@ -43,7 +43,7 @@ const addIdentityCdkConstructs = async ( ) => { generateFiles( tree, - joinPathFragments(__dirname, 'files', 'cdk', 'core'), + joinPathFragments(import.meta.dirname, 'files', 'cdk', 'core'), joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src', 'core'), options, { @@ -70,7 +70,7 @@ const addIdentityTerraformModules = ( ) => { generateFiles( tree, - joinPathFragments(__dirname, 'files', 'terraform', 'core'), + joinPathFragments(import.meta.dirname, 'files', 'terraform', 'core'), joinPathFragments(PACKAGES_DIR, SHARED_TERRAFORM_DIR, 'src', 'core'), options, { diff --git a/packages/nx-plugin/src/utils/infra-scripts.spec.ts b/packages/nx-plugin/src/utils/infra-scripts.spec.ts index ca5608e9d..93e82b1a2 100644 --- a/packages/nx-plugin/src/utils/infra-scripts.spec.ts +++ b/packages/nx-plugin/src/utils/infra-scripts.spec.ts @@ -11,7 +11,15 @@ import { importTypeScriptModule } from './js'; // Load the actual template files and strip EJS tags for import const loadTemplate = (relativePath: string): string => { const content = readFileSync( - join(__dirname, 'files', 'common', 'scripts', 'src', 'infra', relativePath), + join( + import.meta.dirname, + 'files', + 'common', + 'scripts', + 'src', + 'infra', + relativePath, + ), 'utf-8', ); // Remove EJS template expressions (e.g., <%= scopeAlias %>) and replace diff --git a/packages/nx-plugin/src/utils/metrics.spec.ts b/packages/nx-plugin/src/utils/metrics.spec.ts index 94e2afd0b..69a7cd2ce 100644 --- a/packages/nx-plugin/src/utils/metrics.spec.ts +++ b/packages/nx-plugin/src/utils/metrics.spec.ts @@ -447,7 +447,10 @@ describe('metrics', () => { } await addGeneratorMetricsIfApplicable(tree, [terraformGenerator]); - const secondRunTerraform = tree.read(TERRAFORM_METRICS_FILE_PATH, 'utf-8'); + const secondRunTerraform = tree.read( + TERRAFORM_METRICS_FILE_PATH, + 'utf-8', + ); const secondRunCdk = tree.read(METRICS_ASPECT_FILE_PATH, 'utf-8'); // The terraform metrics file must not grow or reorder on re-run diff --git a/packages/nx-plugin/src/utils/mock-project-graph.ts b/packages/nx-plugin/src/utils/mock-project-graph.ts index 2ea6c0ff5..9c70b97d8 100644 --- a/packages/nx-plugin/src/utils/mock-project-graph.ts +++ b/packages/nx-plugin/src/utils/mock-project-graph.ts @@ -17,7 +17,6 @@ */ import { createRequire } from 'module'; -// @ts-expect-error test utility used by vite only const _require = createRequire(import.meta.url); const projectGraph = _require('nx/src/project-graph/project-graph'); projectGraph.createProjectGraphAsync = async () => ({ diff --git a/packages/nx-plugin/src/utils/nx.spec.ts b/packages/nx-plugin/src/utils/nx.spec.ts index c2f098970..aa4ff5fa5 100644 --- a/packages/nx-plugin/src/utils/nx.spec.ts +++ b/packages/nx-plugin/src/utils/nx.spec.ts @@ -5,9 +5,9 @@ import type { ProjectConfiguration, Tree } from '@nx/devkit'; import { beforeEach, describe, expect, it } from 'vitest'; import { + addComponentDevTarget, addComponentGeneratorMetadata, addDependencyToTargetIfNotPresent, - addComponentDevTarget, addGeneratorMetadata, type NxGeneratorInfo, normalizeTargetKeyOrder, @@ -471,7 +471,7 @@ describe('addDependencyToTargetIfNotPresent', () => { it('should not duplicate an object dependency with identical projects/target', () => { const project = makeProject(); project.targets = { - 'dev': { + dev: { dependsOn: [{ projects: ['other-project'], target: 'dev' }], }, }; @@ -487,7 +487,7 @@ describe('addDependencyToTargetIfNotPresent', () => { it('should treat string-projects and single-element-array-projects as equivalent', () => { const project = makeProject(); project.targets = { - 'dev': { + dev: { dependsOn: [{ projects: 'other-project', target: 'dev' }], }, }; @@ -501,7 +501,7 @@ describe('addDependencyToTargetIfNotPresent', () => { it('should consider object dependencies with different targets as distinct', () => { const project = makeProject(); project.targets = { - 'dev': { + dev: { dependsOn: [{ projects: ['api'], target: 'dev' }], }, }; diff --git a/packages/nx-plugin/src/utils/nx.ts b/packages/nx-plugin/src/utils/nx.ts index 594c76307..757b0a829 100644 --- a/packages/nx-plugin/src/utils/nx.ts +++ b/packages/nx-plugin/src/utils/nx.ts @@ -10,7 +10,7 @@ import { updateProjectConfiguration, } from '@nx/devkit'; import * as path from 'path'; -import PackageJson from '../../package.json'; +import PackageJson from '../../package.json' with { type: 'json' }; import { toSnakeCase } from './names'; import { getNpmScope, getNpmScopePrefix } from './npm-scope'; @@ -19,7 +19,9 @@ export { buildGeneratorInfoList } from './generators'; import { buildGeneratorInfoList, type GeneratorInfo } from './generators'; -const GENERATORS = buildGeneratorInfoList(path.resolve(__dirname, '..', '..')); +const GENERATORS = buildGeneratorInfoList( + path.resolve(import.meta.dirname, '..', '..'), +); /** * List Nx Plugin for AWS generators @@ -29,7 +31,7 @@ export const listGenerators = (includeHidden = false) => GENERATORS.filter((g) => includeHidden || !g.hidden); /** - * Return generator information. Call this from a generator method with __filename + * Return generator information. Call this from a generator method with import.meta.filename */ export const getGeneratorInfo = (generatorFileName: string): GeneratorInfo => { const { dir, name } = path.parse(path.resolve(generatorFileName)); diff --git a/packages/nx-plugin/src/utils/nxlv-python.ts b/packages/nx-plugin/src/utils/nxlv-python.ts index 926eb2387..835e1b285 100644 --- a/packages/nx-plugin/src/utils/nxlv-python.ts +++ b/packages/nx-plugin/src/utils/nxlv-python.ts @@ -19,8 +19,11 @@ * packages without proper exports. */ import type { Tree } from '@nx/devkit'; +import { createRequire } from 'module'; import path from 'path'; +const require = createRequire(import.meta.url); + // --------------------------------------------------------------------------- // Inlined types from @nxlv/python (sourced from dist/**\/*.d.ts) // --------------------------------------------------------------------------- diff --git a/packages/nx-plugin/src/utils/py.ts b/packages/nx-plugin/src/utils/py.ts index 85e4940e4..582db0c00 100644 --- a/packages/nx-plugin/src/utils/py.ts +++ b/packages/nx-plugin/src/utils/py.ts @@ -127,7 +127,8 @@ const getPyDistributionName = ( ): string => { const pyprojectPath = joinPathFragments(project.root, 'pyproject.toml'); const projectName = tree.exists(pyprojectPath) - ? (readToml(tree, pyprojectPath) as unknown as UVPyprojectToml).project?.name + ? (readToml(tree, pyprojectPath) as unknown as UVPyprojectToml).project + ?.name : undefined; return normalizeDistributionName(projectName ?? project.name ?? ''); }; diff --git a/packages/nx-plugin/src/utils/rdb-constructs/rdb-constructs.ts b/packages/nx-plugin/src/utils/rdb-constructs/rdb-constructs.ts index 2b632ef15..95b3948fd 100644 --- a/packages/nx-plugin/src/utils/rdb-constructs/rdb-constructs.ts +++ b/packages/nx-plugin/src/utils/rdb-constructs/rdb-constructs.ts @@ -71,7 +71,7 @@ export const addRdbCdkConstructs = async ( ) => { generateFiles( tree, - joinPathFragments(__dirname, 'files', 'cdk', 'core', 'rdb'), + joinPathFragments(import.meta.dirname, 'files', 'cdk', 'core', 'rdb'), joinPathFragments( PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, @@ -87,7 +87,7 @@ export const addRdbCdkConstructs = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files', 'cdk', 'app', 'dbs'), + joinPathFragments(import.meta.dirname, 'files', 'cdk', 'app', 'dbs'), joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src', 'app', 'dbs'), options, { @@ -137,7 +137,7 @@ export const addRdbTerraformModules = ( ) => { generateFiles( tree, - joinPathFragments(__dirname, 'files', 'terraform', 'core', 'rdb'), + joinPathFragments(import.meta.dirname, 'files', 'terraform', 'core', 'rdb'), joinPathFragments(PACKAGES_DIR, SHARED_TERRAFORM_DIR, 'src', 'core', 'rdb'), {}, { @@ -147,7 +147,7 @@ export const addRdbTerraformModules = ( generateFiles( tree, - joinPathFragments(__dirname, 'files', 'terraform', 'app', 'dbs'), + joinPathFragments(import.meta.dirname, 'files', 'terraform', 'app', 'dbs'), joinPathFragments(PACKAGES_DIR, SHARED_TERRAFORM_DIR, 'src', 'app', 'dbs'), options, { diff --git a/packages/nx-plugin/src/utils/shared-constructs.ts b/packages/nx-plugin/src/utils/shared-constructs.ts index eaa0a6f8d..f2574302f 100644 --- a/packages/nx-plugin/src/utils/shared-constructs.ts +++ b/packages/nx-plugin/src/utils/shared-constructs.ts @@ -55,7 +55,12 @@ export async function sharedConstructsGenerator( ); generateFiles( tree, - joinPathFragments(__dirname, 'files', SHARED_CONSTRUCTS_DIR, 'src'), + joinPathFragments( + import.meta.dirname, + 'files', + SHARED_CONSTRUCTS_DIR, + 'src', + ), joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src'), { npmScopePrefix, @@ -68,7 +73,7 @@ export async function sharedConstructsGenerator( ); generateFiles( tree, - joinPathFragments(__dirname, 'files', 'common', 'readme'), + joinPathFragments(import.meta.dirname, 'files', 'common', 'readme'), joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR), { fullyQualifiedName: `${npmScopePrefix}${SHARED_CONSTRUCTS_NAME}`, @@ -136,7 +141,7 @@ export async function sharedConstructsGenerator( // Create the metrics.tf file with empty initial values generateFiles( tree, - joinPathFragments(__dirname, 'files', 'terraform'), + joinPathFragments(import.meta.dirname, 'files', 'terraform'), terraformLibPath, {}, { diff --git a/packages/nx-plugin/src/utils/shared-dynamodb-scripts.ts b/packages/nx-plugin/src/utils/shared-dynamodb-scripts.ts index e357e253b..0b16a3f5a 100644 --- a/packages/nx-plugin/src/utils/shared-dynamodb-scripts.ts +++ b/packages/nx-plugin/src/utils/shared-dynamodb-scripts.ts @@ -31,7 +31,7 @@ export async function sharedDynamoDBScriptsGenerator( generateFiles( tree, joinPathFragments( - __dirname, + import.meta.dirname, 'files', SHARED_SCRIPTS_DIR, 'src', diff --git a/packages/nx-plugin/src/utils/shared-infra-config.ts b/packages/nx-plugin/src/utils/shared-infra-config.ts index 1c3d34039..52a9096d7 100644 --- a/packages/nx-plugin/src/utils/shared-infra-config.ts +++ b/packages/nx-plugin/src/utils/shared-infra-config.ts @@ -44,7 +44,12 @@ export async function sharedInfraConfigGenerator(tree: Tree): Promise { tree.delete(joinPathFragments(configDir, 'src')); generateFiles( tree, - joinPathFragments(__dirname, 'files', SHARED_INFRA_CONFIG_DIR, 'src'), + joinPathFragments( + import.meta.dirname, + 'files', + SHARED_INFRA_CONFIG_DIR, + 'src', + ), joinPathFragments(configDir, 'src'), { pkgMgrRunNx: `${displayCmds.exec} nx`, @@ -55,7 +60,7 @@ export async function sharedInfraConfigGenerator(tree: Tree): Promise { // Generate README generateFiles( tree, - joinPathFragments(__dirname, 'files', 'common', 'readme'), + joinPathFragments(import.meta.dirname, 'files', 'common', 'readme'), configDir, { fullyQualifiedName: `${npmScopePrefix}${SHARED_INFRA_CONFIG_NAME}`, diff --git a/packages/nx-plugin/src/utils/shared-infra-scripts.ts b/packages/nx-plugin/src/utils/shared-infra-scripts.ts index 163967f8c..d3bc870f8 100644 --- a/packages/nx-plugin/src/utils/shared-infra-scripts.ts +++ b/packages/nx-plugin/src/utils/shared-infra-scripts.ts @@ -35,7 +35,13 @@ export async function sharedInfraScriptsGenerator(tree: Tree): Promise { generateFiles( tree, - joinPathFragments(__dirname, 'files', SHARED_SCRIPTS_DIR, 'src', 'infra'), + joinPathFragments( + import.meta.dirname, + 'files', + SHARED_SCRIPTS_DIR, + 'src', + 'infra', + ), joinPathFragments(scriptsDir, 'src', 'infra'), { scopeAlias }, { overwriteStrategy: OverwriteStrategy.KeepExisting }, @@ -50,7 +56,7 @@ export async function sharedInfraScriptsGenerator(tree: Tree): Promise { generateFiles( tree, - joinPathFragments(__dirname, 'files', 'common', 'readme'), + joinPathFragments(import.meta.dirname, 'files', 'common', 'readme'), scriptsDir, { fullyQualifiedName: `${npmScopePrefix}${SHARED_SCRIPTS_NAME}`, diff --git a/packages/nx-plugin/src/utils/shared-rdb-scripts.ts b/packages/nx-plugin/src/utils/shared-rdb-scripts.ts index f2f3e81bc..3485d7028 100644 --- a/packages/nx-plugin/src/utils/shared-rdb-scripts.ts +++ b/packages/nx-plugin/src/utils/shared-rdb-scripts.ts @@ -31,7 +31,7 @@ export async function sharedRdbScriptsGenerator( await ensureSharedScriptsProject(tree); const rdbScriptsDir = joinPathFragments( - __dirname, + import.meta.dirname, 'files', SHARED_SCRIPTS_DIR, 'src', diff --git a/packages/nx-plugin/src/utils/shared-shadcn.ts b/packages/nx-plugin/src/utils/shared-shadcn.ts index eb2026383..e78b618dd 100644 --- a/packages/nx-plugin/src/utils/shared-shadcn.ts +++ b/packages/nx-plugin/src/utils/shared-shadcn.ts @@ -51,7 +51,7 @@ export async function sharedShadcnGenerator(tree: Tree) { generateFiles( tree, - joinPathFragments(__dirname, 'files', SHARED_SHADCN_DIR, 'src'), + joinPathFragments(import.meta.dirname, 'files', SHARED_SHADCN_DIR, 'src'), shadcnSrcRoot, { scopeAlias, @@ -63,7 +63,12 @@ export async function sharedShadcnGenerator(tree: Tree) { generateFiles( tree, - joinPathFragments(__dirname, 'files', SHARED_SHADCN_DIR, 'readme'), + joinPathFragments( + import.meta.dirname, + 'files', + SHARED_SHADCN_DIR, + 'readme', + ), libraryRoot, { fullyQualifiedName, @@ -116,7 +121,7 @@ export async function sharedShadcnGenerator(tree: Tree) { if (!tree.exists('components.json')) { generateFiles( tree, - joinPathFragments(__dirname, 'files', 'shadcn'), + joinPathFragments(import.meta.dirname, 'files', 'shadcn'), '.', { sharedShadcnAlias, diff --git a/packages/nx-plugin/src/utils/test/ts.spec.ts b/packages/nx-plugin/src/utils/test/ts.spec.ts index ecaec0612..b032bf905 100644 --- a/packages/nx-plugin/src/utils/test/ts.spec.ts +++ b/packages/nx-plugin/src/utils/test/ts.spec.ts @@ -77,7 +77,7 @@ export class TypeScriptVerifier { execSync(`pnpm list --depth 1000 --json ${dependency}`, { encoding: 'utf-8', stdio: 'pipe', - cwd: path.resolve(__dirname, '../../../../../'), + cwd: path.resolve(import.meta.dirname, '../../../../../'), maxBuffer: 1024 * 1024 * 1024, // 1 GB }), ); diff --git a/packages/nx-plugin/src/utils/website-constructs/website-constructs.ts b/packages/nx-plugin/src/utils/website-constructs/website-constructs.ts index 700e6a131..4ac822530 100644 --- a/packages/nx-plugin/src/utils/website-constructs/website-constructs.ts +++ b/packages/nx-plugin/src/utils/website-constructs/website-constructs.ts @@ -66,7 +66,7 @@ const addWebsiteCdkConstructs = async ( ) => { generateFiles( tree, - joinPathFragments(__dirname, 'files', 'cdk', 'core'), + joinPathFragments(import.meta.dirname, 'files', 'cdk', 'core'), joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src', 'core'), options, { @@ -76,7 +76,7 @@ const addWebsiteCdkConstructs = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files', 'cdk', 'app'), + joinPathFragments(import.meta.dirname, 'files', 'cdk', 'app'), joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src', 'app'), options, { @@ -126,7 +126,7 @@ const addWebsiteTerraformModules = ( ) => { generateFiles( tree, - joinPathFragments(__dirname, 'files', 'terraform', 'core'), + joinPathFragments(import.meta.dirname, 'files', 'terraform', 'core'), joinPathFragments(PACKAGES_DIR, SHARED_TERRAFORM_DIR, 'src', 'core'), options, { @@ -136,7 +136,7 @@ const addWebsiteTerraformModules = ( generateFiles( tree, - joinPathFragments(__dirname, 'files', 'terraform', 'app'), + joinPathFragments(import.meta.dirname, 'files', 'terraform', 'app'), joinPathFragments(PACKAGES_DIR, SHARED_TERRAFORM_DIR, 'src', 'app'), options, { diff --git a/packages/nx-plugin/tsconfig.json b/packages/nx-plugin/tsconfig.json index bc1767bca..71fb58b8c 100644 --- a/packages/nx-plugin/tsconfig.json +++ b/packages/nx-plugin/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "module": "commonjs", "resolveJsonModule": true }, "files": [], diff --git a/packages/nx-plugin/tsconfig.lib.json b/packages/nx-plugin/tsconfig.lib.json index bbbfb8f61..a9803692d 100644 --- a/packages/nx-plugin/tsconfig.lib.json +++ b/packages/nx-plugin/tsconfig.lib.json @@ -3,6 +3,7 @@ "compilerOptions": { "outDir": "../../dist/out-tsc", "declaration": true, + "verbatimModuleSyntax": true, "types": ["node"] }, "include": ["src/**/*.ts", "bin/**/*.ts", "sdk/**/*.ts"], diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5b188c1b0..5861b4e38 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -91,19 +91,19 @@ importers: version: 23.0.1(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))) '@nx/js': specifier: 23.0.1 - version: 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) + version: 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/cli@0.7.9(@swc/core@1.15.41(@swc/helpers@0.5.23))(chokidar@4.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) '@nx/playwright': specifier: 23.0.1 - version: 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.7.0))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) + version: 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/cli@0.7.9(@swc/core@1.15.41(@swc/helpers@0.5.23))(chokidar@4.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.7.0))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) '@nx/react': specifier: 23.0.1 - version: 23.0.1(c367a22b31b76374cc07619661f56e16) + version: 23.0.1(9afc1520a80ffbb3b15518dfbcee2809) '@nx/vite': specifier: 23.0.1 - version: 23.0.1(59a8acec15dd92054ab41adddb30c18f) + version: 23.0.1(89912302afe113ce96fd9f1c3d79e7f7) '@nx/vitest': specifier: 23.0.1 - version: 23.0.1(59a8acec15dd92054ab41adddb30c18f) + version: 23.0.1(89912302afe113ce96fd9f1c3d79e7f7) '@nxlv/python': specifier: 22.2.0 version: 22.2.0(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))) @@ -122,6 +122,9 @@ importers: '@swc-node/register': specifier: 1.11.1 version: 1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3) + '@swc/cli': + specifier: 0.7.9 + version: 0.7.9(@swc/core@1.15.41(@swc/helpers@0.5.23))(chokidar@4.0.3) '@swc/core': specifier: 1.15.41 version: 1.15.41(@swc/helpers@0.5.23) @@ -414,13 +417,13 @@ importers: version: 23.0.1(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))) '@nx/js': specifier: 23.0.1 - version: 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) + version: 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/cli@0.7.9(@swc/core@1.15.41(@swc/helpers@0.5.23))(chokidar@4.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) '@nx/react': specifier: 23.0.1 - version: 23.0.1(c367a22b31b76374cc07619661f56e16) + version: 23.0.1(9afc1520a80ffbb3b15518dfbcee2809) '@nx/vite': specifier: 23.0.1 - version: 23.0.1(59a8acec15dd92054ab41adddb30c18f) + version: 23.0.1(89912302afe113ce96fd9f1c3d79e7f7) '@nxlv/python': specifier: 22.2.0 version: 22.2.0(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))) @@ -1549,6 +1552,9 @@ packages: '@biomejs/wasm-nodejs@2.5.0': resolution: {integrity: sha512-8yng33quWVLdyfNiYmr9Hq3fd9GTRqXAbhrsvpaw+iME1gd7oJBVcczucDFl/tsz69TnfrR42O/PDBoA8MSWYw==} + '@borewit/text-codec@0.2.2': + resolution: {integrity: sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==} + '@bramus/specificity@2.4.2': resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} hasBin: true @@ -2848,6 +2854,119 @@ packages: '@module-federation/webpack-bundler-runtime@2.3.3': resolution: {integrity: sha512-W+P6ZF9J3gwnQuoF07YV0OiR1D6sI/uErUu4+c3QXxka3orANUHujkddNSsDxL1obAGoJa7Da99crZKf7u2j/w==} + '@napi-rs/nice-android-arm-eabi@1.1.1': + resolution: {integrity: sha512-kjirL3N6TnRPv5iuHw36wnucNqXAO46dzK9oPb0wj076R5Xm8PfUVA9nAFB5ZNMmfJQJVKACAPd/Z2KYMppthw==} + engines: {node: '>= 10'} + cpu: [arm] + os: [android] + + '@napi-rs/nice-android-arm64@1.1.1': + resolution: {integrity: sha512-blG0i7dXgbInN5urONoUCNf+DUEAavRffrO7fZSeoRMJc5qD+BJeNcpr54msPF6qfDD6kzs9AQJogZvT2KD5nw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@napi-rs/nice-darwin-arm64@1.1.1': + resolution: {integrity: sha512-s/E7w45NaLqTGuOjC2p96pct4jRfo61xb9bU1unM/MJ/RFkKlJyJDx7OJI/O0ll/hrfpqKopuAFDV8yo0hfT7A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@napi-rs/nice-darwin-x64@1.1.1': + resolution: {integrity: sha512-dGoEBnVpsdcC+oHHmW1LRK5eiyzLwdgNQq3BmZIav+9/5WTZwBYX7r5ZkQC07Nxd3KHOCkgbHSh4wPkH1N1LiQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@napi-rs/nice-freebsd-x64@1.1.1': + resolution: {integrity: sha512-kHv4kEHAylMYmlNwcQcDtXjklYp4FCf0b05E+0h6nDHsZ+F0bDe04U/tXNOqrx5CmIAth4vwfkjjUmp4c4JktQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@napi-rs/nice-linux-arm-gnueabihf@1.1.1': + resolution: {integrity: sha512-E1t7K0efyKXZDoZg1LzCOLxgolxV58HCkaEkEvIYQx12ht2pa8hoBo+4OB3qh7e+QiBlp1SRf+voWUZFxyhyqg==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@napi-rs/nice-linux-arm64-gnu@1.1.1': + resolution: {integrity: sha512-CIKLA12DTIZlmTaaKhQP88R3Xao+gyJxNWEn04wZwC2wmRapNnxCUZkVwggInMJvtVElA+D4ZzOU5sX4jV+SmQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@napi-rs/nice-linux-arm64-musl@1.1.1': + resolution: {integrity: sha512-+2Rzdb3nTIYZ0YJF43qf2twhqOCkiSrHx2Pg6DJaCPYhhaxbLcdlV8hCRMHghQ+EtZQWGNcS2xF4KxBhSGeutg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@napi-rs/nice-linux-ppc64-gnu@1.1.1': + resolution: {integrity: sha512-4FS8oc0GeHpwvv4tKciKkw3Y4jKsL7FRhaOeiPei0X9T4Jd619wHNe4xCLmN2EMgZoeGg+Q7GY7BsvwKpL22Tg==} + engines: {node: '>= 10'} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@napi-rs/nice-linux-riscv64-gnu@1.1.1': + resolution: {integrity: sha512-HU0nw9uD4FO/oGCCk409tCi5IzIZpH2agE6nN4fqpwVlCn5BOq0MS1dXGjXaG17JaAvrlpV5ZeyZwSon10XOXw==} + engines: {node: '>= 10'} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@napi-rs/nice-linux-s390x-gnu@1.1.1': + resolution: {integrity: sha512-2YqKJWWl24EwrX0DzCQgPLKQBxYDdBxOHot1KWEq7aY2uYeX+Uvtv4I8xFVVygJDgf6/92h9N3Y43WPx8+PAgQ==} + engines: {node: '>= 10'} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@napi-rs/nice-linux-x64-gnu@1.1.1': + resolution: {integrity: sha512-/gaNz3R92t+dcrfCw/96pDopcmec7oCcAQ3l/M+Zxr82KT4DljD37CpgrnXV+pJC263JkW572pdbP3hP+KjcIg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@napi-rs/nice-linux-x64-musl@1.1.1': + resolution: {integrity: sha512-xScCGnyj/oppsNPMnevsBe3pvNaoK7FGvMjT35riz9YdhB2WtTG47ZlbxtOLpjeO9SqqQ2J2igCmz6IJOD5JYw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@napi-rs/nice-openharmony-arm64@1.1.1': + resolution: {integrity: sha512-6uJPRVwVCLDeoOaNyeiW0gp2kFIM4r7PL2MczdZQHkFi9gVlgm+Vn+V6nTWRcu856mJ2WjYJiumEajfSm7arPQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [openharmony] + + '@napi-rs/nice-win32-arm64-msvc@1.1.1': + resolution: {integrity: sha512-uoTb4eAvM5B2aj/z8j+Nv8OttPf2m+HVx3UjA5jcFxASvNhQriyCQF1OB1lHL43ZhW+VwZlgvjmP5qF3+59atA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@napi-rs/nice-win32-ia32-msvc@1.1.1': + resolution: {integrity: sha512-CNQqlQT9MwuCsg1Vd/oKXiuH+TcsSPJmlAFc5frFyX/KkOh0UpBLEj7aoY656d5UKZQMQFP7vJNa1DNUNORvug==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@napi-rs/nice-win32-x64-msvc@1.1.1': + resolution: {integrity: sha512-vB+4G/jBQCAh0jelMTY3+kgFy00Hlx2f2/1zjMoH821IbplbWZOkLiTYXQkygNTzQJTq5cvwBDgn2ppHD+bglQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@napi-rs/nice@1.1.1': + resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} + engines: {node: '>= 10'} + '@napi-rs/wasm-runtime@0.2.4': resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} @@ -4143,6 +4262,10 @@ packages: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} + '@sindresorhus/is@5.6.0': + resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} + engines: {node: '>=14.16'} + '@smithy/core@3.24.6': resolution: {integrity: sha512-wBXDRup6UU97VKyaiRo8AssnfStPtG0oAAfpq/bC0a1YYau8pM86YB4kM6ccoVi1mS8l/UHbn9oDM+7uozr/ug==} engines: {node: '>=18.0.0'} @@ -4356,6 +4479,17 @@ packages: '@swc-node/sourcemap-support@0.6.1': resolution: {integrity: sha512-ovltDVH5QpdHXZkW138vG4+dgcNsxfwxHVoV6BtmTbz2KKl1A8ZSlbdtxzzfNjCjbpayda8Us9eMtcHobm38dA==} + '@swc/cli@0.7.9': + resolution: {integrity: sha512-AFQu3ZZ9IcdClTknxbug08S9ed/q8F3aYkO5NoZ+6IjQ5UEo1s2HN1GRKNvUslYx2EoVYxd+6xGcp6C7wwtxyQ==} + engines: {node: '>= 16.14.0'} + hasBin: true + peerDependencies: + '@swc/core': ^1.2.66 + chokidar: ^4.0.1 + peerDependenciesMeta: + chokidar: + optional: true + '@swc/core-darwin-arm64@1.15.41': resolution: {integrity: sha512-kREh6J5paQFvP3i7f/4FbqRNOJREutVFVOkder4GVyCBQ39YmER55cW/y1NNjwrchzFqgYswFn0mMDCqbqKzrw==} engines: {node: '>=10'} @@ -4456,6 +4590,10 @@ packages: resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} + '@szmarczak/http-timer@5.0.1': + resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} + engines: {node: '>=14.16'} + '@tailwindcss/node@4.2.2': resolution: {integrity: sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA==} @@ -4589,6 +4727,13 @@ packages: '@types/react-dom': optional: true + '@tokenizer/inflate@0.2.7': + resolution: {integrity: sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg==} + engines: {node: '>=18'} + + '@tokenizer/token@0.3.0': + resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + '@trpc/client@11.17.0': resolution: {integrity: sha512-KpJBFrbKTDeVCFv/3ckL1XBBH5Yssn8hethI/rUy7GIpTj+VzjtPjykDqJpzobuVOz+d26cXCSu1t4I6MYI5Zg==} hasBin: true @@ -4691,6 +4836,9 @@ packages: '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/http-cache-semantics@4.2.0': + resolution: {integrity: sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==} + '@types/http-proxy@1.17.16': resolution: {integrity: sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==} @@ -4972,6 +5120,46 @@ packages: '@webassemblyjs/wast-printer@1.14.1': resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + '@xhmikosr/archive-type@7.1.0': + resolution: {integrity: sha512-xZEpnGplg1sNPyEgFh0zbHxqlw5dtYg6viplmWSxUj12+QjU9SKu3U/2G73a15pEjLaOqTefNSZ1fOPUOT4Xgg==} + engines: {node: '>=18'} + + '@xhmikosr/bin-check@7.1.0': + resolution: {integrity: sha512-y1O95J4mnl+6MpVmKfMYXec17hMEwE/yeCglFNdx+QvLLtP0yN4rSYcbkXnth+lElBuKKek2NbvOfOGPpUXCvw==} + engines: {node: '>=18'} + + '@xhmikosr/bin-wrapper@13.2.0': + resolution: {integrity: sha512-t9U9X0sDPRGDk5TGx4dv5xiOvniVJpXnfTuynVKwHgtib95NYEw4MkZdJqhoSiz820D9m0o6PCqOPMXz0N9fIw==} + engines: {node: '>=18'} + + '@xhmikosr/decompress-tar@8.1.0': + resolution: {integrity: sha512-m0q8x6lwxenh1CrsTby0Jrjq4vzW/QU1OLhTHMQLEdHpmjR1lgahGz++seZI0bXF3XcZw3U3xHfqZSz+JPP2Gg==} + engines: {node: '>=18'} + + '@xhmikosr/decompress-tarbz2@8.1.0': + resolution: {integrity: sha512-aCLfr3A/FWZnOu5eqnJfme1Z1aumai/WRw55pCvBP+hCGnTFrcpsuiaVN5zmWTR53a8umxncY2JuYsD42QQEbw==} + engines: {node: '>=18'} + + '@xhmikosr/decompress-targz@8.1.0': + resolution: {integrity: sha512-fhClQ2wTmzxzdz2OhSQNo9ExefrAagw93qaG1YggoIz/QpI7atSRa7eOHv4JZkpHWs91XNn8Hry3CwUlBQhfPA==} + engines: {node: '>=18'} + + '@xhmikosr/decompress-unzip@7.1.0': + resolution: {integrity: sha512-oqTYAcObqTlg8owulxFTqiaJkfv2SHsxxxz9Wg4krJAHVzGWlZsU8tAB30R6ow+aHrfv4Kub6WQ8u04NWVPUpA==} + engines: {node: '>=18'} + + '@xhmikosr/decompress@10.2.1': + resolution: {integrity: sha512-ceGT3K2JR73Usj5o+HM2RRZw0XPUes4rhb7uVTY9PefUQQMpuj8x+V29XVG09JnS7EOj9SIBhHn3K4bFNNb7hA==} + engines: {node: '>=18'} + + '@xhmikosr/downloader@15.2.0': + resolution: {integrity: sha512-lAqbig3uRGTt0sHNIM4vUG9HoM+mRl8K28WuYxyXLCUT6pyzl4Y4i0LZ3jMEsCYZ6zjPZbO9XkG91OSTd4si7g==} + engines: {node: '>=18'} + + '@xhmikosr/os-filter-obj@3.0.0': + resolution: {integrity: sha512-siPY6BD5dQ2SZPl3I0OZBHL27ZqZvLEosObsZRQ1NUB8qcxegwt0T9eKtV96JMFQpIz1elhkzqOg4c/Ri6Dp9A==} + engines: {node: ^14.14.0 || >=16.0.0} + '@xtuc/ieee754@1.2.0': resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} @@ -5123,6 +5311,9 @@ packages: resolution: {integrity: sha512-FCAJojipPn0bXjuEpjOOOMN8FZDkxfWWp4JGN9mifU2IhxvKyXZYqpzPHdnTSUpmPDy+tsslB6Z1g+Vg6nVbYA==} engines: {node: '>=8'} + arch@3.0.0: + resolution: {integrity: sha512-AmIAC+Wtm2AU8lGfTtHsw0Y9Qtftx2YXEEtiBP10xFUtMOA+sHHx6OAddyL52mUKh1vsXQ6/w1mVDptZCyUt4Q==} + archiver-utils@5.0.2: resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} engines: {node: '>= 14'} @@ -5346,6 +5537,14 @@ packages: bidi-js@1.0.3: resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + bin-version-check@5.1.0: + resolution: {integrity: sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==} + engines: {node: '>=12'} + + bin-version@6.0.0: + resolution: {integrity: sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==} + engines: {node: '>=12'} + bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -5434,6 +5633,14 @@ packages: resolution: {integrity: sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww==} engines: {node: '>=10.6.0'} + cacheable-lookup@7.0.0: + resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} + engines: {node: '>=14.16'} + + cacheable-request@10.2.14: + resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} + engines: {node: '>=14.16'} + cacheable-request@7.0.2: resolution: {integrity: sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==} engines: {node: '>=8'} @@ -5648,10 +5855,18 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + commander@6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} + commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + commitizen@4.3.1: resolution: {integrity: sha512-gwAPAVTy/j5YcOOebcCRIijn+mSjWJC+IYKivTu6aG8Ei/scoXgfsMRnuAk6b0GRste2J4NGxVdMN3ZpfNaVaw==} engines: {node: '>= 12'} @@ -5946,6 +6161,10 @@ packages: defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + defaults@2.0.2: + resolution: {integrity: sha512-cuIw0PImdp76AOfgkjbW4VhQODRmNNcKR73vdCH5cLd/ifj7aamfoXvYgfGkEAjNJZ3ozMIy9Gu2LutUkGEPbA==} + engines: {node: '>=16'} + defer-to-connect@2.0.1: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} @@ -6326,6 +6545,10 @@ packages: resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} engines: {node: '>=18.0.0'} + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + expand-tilde@2.0.2: resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} engines: {node: '>=0.10.0'} @@ -6357,6 +6580,14 @@ packages: expressive-code@0.43.1: resolution: {integrity: sha512-JdOzanoU825iNvslmk6Kg8Ro61eSHmDK2Zz7BynOxObVrpIXZNzrIZOwQO2uDQcGsjSYShL/8vTrXgeWYnq3NA==} + ext-list@2.2.2: + resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==} + engines: {node: '>=0.10.0'} + + ext-name@5.0.0: + resolution: {integrity: sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==} + engines: {node: '>=4'} + extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -6443,10 +6674,22 @@ packages: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} + file-type@20.5.0: + resolution: {integrity: sha512-BfHZtG/l9iMm4Ecianu7P8HRD2tBHLtjXinm4X62XBOYzi7CYA7jyqfJzOvXHqzVrVPYqBo2/GvbARMaaJkKVg==} + engines: {node: '>=18'} + file-uri-to-path@2.0.0: resolution: {integrity: sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==} engines: {node: '>= 6'} + filename-reserved-regex@3.0.0: + resolution: {integrity: sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + filenamify@6.0.0: + resolution: {integrity: sha512-vqIlNogKeyD3yzrm0yhRMQg8hOVwYcYRfjEoODd49iCprMn4HL85gK3HcykQE53EPIpX3HcAbGA5ELQv216dAQ==} + engines: {node: '>=16'} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -6481,6 +6724,10 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} + find-versions@5.1.0: + resolution: {integrity: sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==} + engines: {node: '>=12'} + findup-sync@4.0.0: resolution: {integrity: sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==} engines: {node: '>= 8'} @@ -6526,6 +6773,10 @@ packages: form-data-encoder@1.7.2: resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} + form-data-encoder@2.1.4: + resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} + engines: {node: '>= 14.17'} + form-data@4.0.6: resolution: {integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==} engines: {node: '>= 6'} @@ -6708,6 +6959,10 @@ packages: resolution: {integrity: sha512-Uas6lAsP8bRCt5WXGMhjFf/qEHTrm4v4qxGR02rLG2kdG9qedctvlkdwXVcDJ7Cs84X+r4dPU7vdwGjCaspXug==} engines: {node: '>=12'} + got@13.0.0: + resolution: {integrity: sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==} + engines: {node: '>=16'} + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -6895,6 +7150,10 @@ packages: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + husky@9.1.7: resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} engines: {node: '>=18'} @@ -6977,6 +7236,9 @@ packages: resolution: {integrity: sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==} engines: {node: '>=12.0.0'} + inspect-with-kind@1.0.5: + resolution: {integrity: sha512-MAQUJuIo7Xqk8EVNP+6d3CKq9c80hi4tjIbIAT6lmGW9W6WzlHiu9PS8uSuUYU+Do+j1baiFp3H25XEVxDIG2g==} + ip-address@10.0.1: resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} engines: {node: '>= 12'} @@ -7073,6 +7335,10 @@ packages: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} + is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} @@ -7272,6 +7538,10 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + klona@2.0.6: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} engines: {node: '>= 8'} @@ -7516,6 +7786,10 @@ packages: resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} engines: {node: '>=8'} + lowercase-keys@3.0.0: + resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -7861,6 +8135,10 @@ packages: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} + mimic-response@4.0.0: + resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + mini-svg-data-uri@1.4.4: resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} hasBin: true @@ -8035,6 +8313,10 @@ packages: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} + normalize-url@8.1.1: + resolution: {integrity: sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==} + engines: {node: '>=14.16'} + npm-normalize-package-bin@3.0.1: resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -8150,6 +8432,10 @@ packages: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} engines: {node: '>=8'} + p-cancelable@3.0.0: + resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} + engines: {node: '>=12.20'} + p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -8266,6 +8552,9 @@ packages: peek-stream@1.1.3: resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} @@ -8314,6 +8603,9 @@ packages: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} + piscina@4.9.3: + resolution: {integrity: sha512-3e3ka9QCE8RJ5I9uszdAADZnkcYi21cqmF3gxox3u884N72qpFHCsIVhHt8cEQ9t3Auq/NqoiCEuhxlxxQuDWA==} + pkce-challenge@4.1.0: resolution: {integrity: sha512-ZBmhE1C9LcPoH9XZSdwiPtbPHZROwAnMy+kIFQVrnMCxY4Cudlz3gBOpzilgc0jOgRaiT3sIWfpMomW2ar2orQ==} engines: {node: '>=16.20.0'} @@ -8718,6 +9010,10 @@ packages: responselike@2.0.1: resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + responselike@3.0.0: + resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} + engines: {node: '>=14.16'} + restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} @@ -8830,6 +9126,18 @@ packages: secure-json-parse@4.1.0: resolution: {integrity: sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==} + seek-bzip@2.0.0: + resolution: {integrity: sha512-SMguiTnYrhpLdk3PwfzHeotrcwi8bNV4iemL9tx9poR/yeaMYwB9VzR1w7b57DuWpuqR8n6oZboi0hj3AxZxQg==} + hasBin: true + + semver-regex@4.0.5: + resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==} + engines: {node: '>=12'} + + semver-truncate@3.0.0: + resolution: {integrity: sha512-LJWA9kSvMolR51oDE6PN3kALBNaUdkxzAGcexw8gjMA8xr5zUqK0JiR3CgARSqanYF3Z1YHvsErb1KDgh+v7Rg==} + engines: {node: '>=12'} + semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -8974,6 +9282,14 @@ packages: sonic-boom@4.2.0: resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} + sort-keys-length@1.0.1: + resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} + engines: {node: '>=0.10.0'} + + sort-keys@1.1.2: + resolution: {integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==} + engines: {node: '>=0.10.0'} + sorted-array-functions@1.3.0: resolution: {integrity: sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==} @@ -9153,6 +9469,13 @@ packages: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} + strip-dirs@3.0.0: + resolution: {integrity: sha512-I0sdgcFTfKQlUPZyAqPJmSG3HLO9rWDFnxonnIbskYNM3DwFOeTNB5KzVq3dA1GdRAc/25b5Y7UO2TQfKWw4aQ==} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -9163,6 +9486,10 @@ packages: strnum@2.2.3: resolution: {integrity: sha512-oKx6RUCuHfT3oyVjtnrmn19H1SiCqgJSg+54XqURKp5aCMbrXrhLjRN9TjuwMjiYstZ0MzDrHqkGZ5dFTKd+zg==} + strtok3@10.3.5: + resolution: {integrity: sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==} + engines: {node: '>=18'} + style-to-js@1.1.17: resolution: {integrity: sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==} @@ -9365,6 +9692,10 @@ packages: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} + token-types@6.1.2: + resolution: {integrity: sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==} + engines: {node: '>=14.16'} + totalist@3.0.1: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} @@ -9480,9 +9811,16 @@ packages: engines: {node: '>=0.8.0'} hasBin: true + uint8array-extras@1.5.0: + resolution: {integrity: sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==} + engines: {node: '>=18'} + ultrahtml@1.6.0: resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==} + unbzip2-stream@1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} @@ -10061,6 +10399,10 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} + yauzl@3.4.0: + resolution: {integrity: sha512-jIH9yLR9wqr0wOS0TpBvo/g/2UgZH5qePVbjgRliiF0BYvOZyaBknKsF+x9Iht0O6sqgnB93rCICdOZFecJuDw==} + engines: {node: '>=12'} + yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} @@ -11663,6 +12005,8 @@ snapshots: '@biomejs/wasm-nodejs@2.5.0': {} + '@borewit/text-codec@0.2.2': {} + '@bramus/specificity@2.4.2': dependencies: css-tree: 3.2.1 @@ -13046,6 +13390,78 @@ snapshots: - node-fetch optional: true + '@napi-rs/nice-android-arm-eabi@1.1.1': + optional: true + + '@napi-rs/nice-android-arm64@1.1.1': + optional: true + + '@napi-rs/nice-darwin-arm64@1.1.1': + optional: true + + '@napi-rs/nice-darwin-x64@1.1.1': + optional: true + + '@napi-rs/nice-freebsd-x64@1.1.1': + optional: true + + '@napi-rs/nice-linux-arm-gnueabihf@1.1.1': + optional: true + + '@napi-rs/nice-linux-arm64-gnu@1.1.1': + optional: true + + '@napi-rs/nice-linux-arm64-musl@1.1.1': + optional: true + + '@napi-rs/nice-linux-ppc64-gnu@1.1.1': + optional: true + + '@napi-rs/nice-linux-riscv64-gnu@1.1.1': + optional: true + + '@napi-rs/nice-linux-s390x-gnu@1.1.1': + optional: true + + '@napi-rs/nice-linux-x64-gnu@1.1.1': + optional: true + + '@napi-rs/nice-linux-x64-musl@1.1.1': + optional: true + + '@napi-rs/nice-openharmony-arm64@1.1.1': + optional: true + + '@napi-rs/nice-win32-arm64-msvc@1.1.1': + optional: true + + '@napi-rs/nice-win32-ia32-msvc@1.1.1': + optional: true + + '@napi-rs/nice-win32-x64-msvc@1.1.1': + optional: true + + '@napi-rs/nice@1.1.1': + optionalDependencies: + '@napi-rs/nice-android-arm-eabi': 1.1.1 + '@napi-rs/nice-android-arm64': 1.1.1 + '@napi-rs/nice-darwin-arm64': 1.1.1 + '@napi-rs/nice-darwin-x64': 1.1.1 + '@napi-rs/nice-freebsd-x64': 1.1.1 + '@napi-rs/nice-linux-arm-gnueabihf': 1.1.1 + '@napi-rs/nice-linux-arm64-gnu': 1.1.1 + '@napi-rs/nice-linux-arm64-musl': 1.1.1 + '@napi-rs/nice-linux-ppc64-gnu': 1.1.1 + '@napi-rs/nice-linux-riscv64-gnu': 1.1.1 + '@napi-rs/nice-linux-s390x-gnu': 1.1.1 + '@napi-rs/nice-linux-x64-gnu': 1.1.1 + '@napi-rs/nice-linux-x64-musl': 1.1.1 + '@napi-rs/nice-openharmony-arm64': 1.1.1 + '@napi-rs/nice-win32-arm64-msvc': 1.1.1 + '@napi-rs/nice-win32-ia32-msvc': 1.1.1 + '@napi-rs/nice-win32-x64-msvc': 1.1.1 + optional: true + '@napi-rs/wasm-runtime@0.2.4': dependencies: '@emnapi/core': 1.11.0 @@ -13113,10 +13529,10 @@ snapshots: tslib: 2.8.1 yargs-parser: 21.1.1 - '@nx/eslint@23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.7.0))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0))': + '@nx/eslint@23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/cli@0.7.9(@swc/core@1.15.41(@swc/helpers@0.5.23))(chokidar@4.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.7.0))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0))': dependencies: '@nx/devkit': 23.0.1(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))) - '@nx/js': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) + '@nx/js': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/cli@0.7.9(@swc/core@1.15.41(@swc/helpers@0.5.23))(chokidar@4.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) eslint: 9.39.4(jiti@2.7.0) semver: 7.8.0 tslib: 2.8.1 @@ -13133,7 +13549,7 @@ snapshots: - supports-color - verdaccio - '@nx/js@23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0))': + '@nx/js@23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/cli@0.7.9(@swc/core@1.15.41(@swc/helpers@0.5.23))(chokidar@4.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.29.0) @@ -13162,6 +13578,7 @@ snapshots: tinyglobby: 0.2.17 tslib: 2.8.1 optionalDependencies: + '@swc/cli': 0.7.9(@swc/core@1.15.41(@swc/helpers@0.5.23))(chokidar@4.0.3) verdaccio: 6.7.2(encoding@0.1.13)(typanion@3.14.0) transitivePeerDependencies: - '@babel/traverse' @@ -13171,11 +13588,11 @@ snapshots: - nx - supports-color - '@nx/module-federation@23.0.1(ac50385ad9c8971b047c07b12ffb5db0)': + '@nx/module-federation@23.0.1(624c286b8a77427541c446dbf48f53e2)': dependencies: '@nx/devkit': 23.0.1(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))) - '@nx/js': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) - '@nx/web': 23.0.1(a4936bcb39ee3779310829b91463b661) + '@nx/js': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/cli@0.7.9(@swc/core@1.15.41(@swc/helpers@0.5.23))(chokidar@4.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) + '@nx/web': 23.0.1(38660efd926ed6ddc65143f95f1cec97) '@rspack/core': 1.6.8(@swc/helpers@0.5.23) express: 4.22.1 http-proxy-middleware: 3.0.5 @@ -13244,11 +13661,11 @@ snapshots: '@nx/nx-win32-x64-msvc@23.0.1': optional: true - '@nx/playwright@23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.7.0))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0))': + '@nx/playwright@23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/cli@0.7.9(@swc/core@1.15.41(@swc/helpers@0.5.23))(chokidar@4.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.7.0))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0))': dependencies: '@nx/devkit': 23.0.1(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))) - '@nx/eslint': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.7.0))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) - '@nx/js': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) + '@nx/eslint': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/cli@0.7.9(@swc/core@1.15.41(@swc/helpers@0.5.23))(chokidar@4.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.7.0))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) + '@nx/js': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/cli@0.7.9(@swc/core@1.15.41(@swc/helpers@0.5.23))(chokidar@4.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) minimatch: 10.2.5 semver: 7.8.0 tslib: 2.8.1 @@ -13265,14 +13682,14 @@ snapshots: - supports-color - verdaccio - '@nx/react@23.0.1(c367a22b31b76374cc07619661f56e16)': + '@nx/react@23.0.1(9afc1520a80ffbb3b15518dfbcee2809)': dependencies: '@nx/devkit': 23.0.1(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))) - '@nx/eslint': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.7.0))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) - '@nx/js': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) - '@nx/module-federation': 23.0.1(ac50385ad9c8971b047c07b12ffb5db0) - '@nx/rollup': 23.0.1(@babel/core@7.29.0)(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(@types/babel__core@7.20.5)(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(rollup@4.50.1)(typescript@6.0.3)(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) - '@nx/web': 23.0.1(a4936bcb39ee3779310829b91463b661) + '@nx/eslint': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/cli@0.7.9(@swc/core@1.15.41(@swc/helpers@0.5.23))(chokidar@4.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.7.0))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) + '@nx/js': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/cli@0.7.9(@swc/core@1.15.41(@swc/helpers@0.5.23))(chokidar@4.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) + '@nx/module-federation': 23.0.1(624c286b8a77427541c446dbf48f53e2) + '@nx/rollup': 23.0.1(@babel/core@7.29.0)(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/cli@0.7.9(@swc/core@1.15.41(@swc/helpers@0.5.23))(chokidar@4.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(@types/babel__core@7.20.5)(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(rollup@4.50.1)(typescript@6.0.3)(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) + '@nx/web': 23.0.1(38660efd926ed6ddc65143f95f1cec97) '@phenomnomnominal/tsquery': 6.2.0(typescript@6.0.3) '@svgr/webpack': 8.1.0(typescript@6.0.3) express: 4.22.1 @@ -13283,7 +13700,7 @@ snapshots: semver: 7.8.0 tslib: 2.8.1 optionalDependencies: - '@nx/vite': 23.0.1(59a8acec15dd92054ab41adddb30c18f) + '@nx/vite': 23.0.1(89912302afe113ce96fd9f1c3d79e7f7) transitivePeerDependencies: - '@babel/core' - '@babel/traverse' @@ -13321,10 +13738,10 @@ snapshots: - vitest - webpack-cli - '@nx/rollup@23.0.1(@babel/core@7.29.0)(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(@types/babel__core@7.20.5)(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(rollup@4.50.1)(typescript@6.0.3)(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0))': + '@nx/rollup@23.0.1(@babel/core@7.29.0)(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/cli@0.7.9(@swc/core@1.15.41(@swc/helpers@0.5.23))(chokidar@4.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(@types/babel__core@7.20.5)(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(rollup@4.50.1)(typescript@6.0.3)(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0))': dependencies: '@nx/devkit': 23.0.1(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))) - '@nx/js': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) + '@nx/js': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/cli@0.7.9(@swc/core@1.15.41(@swc/helpers@0.5.23))(chokidar@4.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) '@phenomnomnominal/tsquery': 6.2.0(typescript@6.0.3) '@rollup/plugin-babel': 6.0.4(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.50.1) '@rollup/plugin-commonjs': 25.0.8(rollup@4.50.1) @@ -13354,11 +13771,11 @@ snapshots: - typescript - verdaccio - '@nx/vite@23.0.1(59a8acec15dd92054ab41adddb30c18f)': + '@nx/vite@23.0.1(89912302afe113ce96fd9f1c3d79e7f7)': dependencies: '@nx/devkit': 23.0.1(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))) - '@nx/js': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) - '@nx/vitest': 23.0.1(59a8acec15dd92054ab41adddb30c18f) + '@nx/js': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/cli@0.7.9(@swc/core@1.15.41(@swc/helpers@0.5.23))(chokidar@4.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) + '@nx/vitest': 23.0.1(89912302afe113ce96fd9f1c3d79e7f7) '@phenomnomnominal/tsquery': 6.2.0(typescript@6.0.3) ajv: 8.18.0 enquirer: 2.3.6 @@ -13380,15 +13797,15 @@ snapshots: - verdaccio - vitest - '@nx/vitest@23.0.1(59a8acec15dd92054ab41adddb30c18f)': + '@nx/vitest@23.0.1(89912302afe113ce96fd9f1c3d79e7f7)': dependencies: '@nx/devkit': 23.0.1(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))) - '@nx/js': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) + '@nx/js': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/cli@0.7.9(@swc/core@1.15.41(@swc/helpers@0.5.23))(chokidar@4.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) '@phenomnomnominal/tsquery': 6.2.0(typescript@6.0.3) semver: 7.8.0 tslib: 2.8.1 optionalDependencies: - '@nx/eslint': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.7.0))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) + '@nx/eslint': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/cli@0.7.9(@swc/core@1.15.41(@swc/helpers@0.5.23))(chokidar@4.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.7.0))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) vite: 8.0.16(@types/node@25.9.3)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.44.0)(tsx@4.22.4)(yaml@2.9.0) vitest: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@25.9.3)(@vitest/coverage-v8@4.1.8)(@vitest/ui@4.1.8)(jsdom@29.1.1)(vite@8.0.16(@types/node@25.9.3)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.44.0)(tsx@4.22.4)(yaml@2.9.0)) transitivePeerDependencies: @@ -13402,18 +13819,18 @@ snapshots: - typescript - verdaccio - '@nx/web@23.0.1(a4936bcb39ee3779310829b91463b661)': + '@nx/web@23.0.1(38660efd926ed6ddc65143f95f1cec97)': dependencies: '@nx/devkit': 23.0.1(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))) - '@nx/js': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) + '@nx/js': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/cli@0.7.9(@swc/core@1.15.41(@swc/helpers@0.5.23))(chokidar@4.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) detect-port: 2.1.0 http-server: 14.1.1 picocolors: 1.1.1 tslib: 2.8.1 optionalDependencies: - '@nx/eslint': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.7.0))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) - '@nx/playwright': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.7.0))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) - '@nx/vite': 23.0.1(59a8acec15dd92054ab41adddb30c18f) + '@nx/eslint': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/cli@0.7.9(@swc/core@1.15.41(@swc/helpers@0.5.23))(chokidar@4.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.7.0))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) + '@nx/playwright': 23.0.1(@babel/traverse@7.29.0)(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/cli@0.7.9(@swc/core@1.15.41(@swc/helpers@0.5.23))(chokidar@4.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23))(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.7.0))(nx@23.0.1(@swc-node/register@1.11.1(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@swc/core@1.15.41(@swc/helpers@0.5.23))(@swc/types@0.1.26)(typescript@6.0.3))(@swc/core@1.15.41(@swc/helpers@0.5.23)))(verdaccio@6.7.2(encoding@0.1.13)(typanion@3.14.0)) + '@nx/vite': 23.0.1(89912302afe113ce96fd9f1c3d79e7f7) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -14324,6 +14741,8 @@ snapshots: '@sindresorhus/is@4.6.0': {} + '@sindresorhus/is@5.6.0': {} + '@smithy/core@3.24.6': dependencies: '@aws-crypto/crc32': 5.2.0 @@ -14532,6 +14951,24 @@ snapshots: source-map-support: 0.5.21 tslib: 2.8.1 + '@swc/cli@0.7.9(@swc/core@1.15.41(@swc/helpers@0.5.23))(chokidar@4.0.3)': + dependencies: + '@swc/core': 1.15.41(@swc/helpers@0.5.23) + '@swc/counter': 0.1.3 + '@xhmikosr/bin-wrapper': 13.2.0 + commander: 8.3.0 + minimatch: 9.0.7 + piscina: 4.9.3 + semver: 7.8.0 + slash: 3.0.0 + source-map: 0.7.6 + tinyglobby: 0.2.17 + optionalDependencies: + chokidar: 4.0.3 + transitivePeerDependencies: + - react-native-b4a + - supports-color + '@swc/core-darwin-arm64@1.15.41': optional: true @@ -14601,6 +15038,10 @@ snapshots: dependencies: defer-to-connect: 2.0.1 + '@szmarczak/http-timer@5.0.1': + dependencies: + defer-to-connect: 2.0.1 + '@tailwindcss/node@4.2.2': dependencies: '@jridgewell/remapping': 2.3.5 @@ -14707,6 +15148,16 @@ snapshots: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) + '@tokenizer/inflate@0.2.7': + dependencies: + debug: 4.4.3 + fflate: 0.8.2 + token-types: 6.1.2 + transitivePeerDependencies: + - supports-color + + '@tokenizer/token@0.3.0': {} + '@trpc/client@11.17.0(@trpc/server@11.17.0(typescript@6.0.3))(typescript@6.0.3)': dependencies: '@trpc/server': 11.17.0(typescript@6.0.3) @@ -14824,6 +15275,8 @@ snapshots: dependencies: '@types/unist': 3.0.3 + '@types/http-cache-semantics@4.2.0': {} + '@types/http-proxy@1.17.16': dependencies: '@types/node': 25.9.3 @@ -15247,6 +15700,95 @@ snapshots: '@webassemblyjs/ast': 1.14.1 '@xtuc/long': 4.2.2 + '@xhmikosr/archive-type@7.1.0': + dependencies: + file-type: 20.5.0 + transitivePeerDependencies: + - supports-color + + '@xhmikosr/bin-check@7.1.0': + dependencies: + execa: 5.1.1 + isexe: 2.0.0 + + '@xhmikosr/bin-wrapper@13.2.0': + dependencies: + '@xhmikosr/bin-check': 7.1.0 + '@xhmikosr/downloader': 15.2.0 + '@xhmikosr/os-filter-obj': 3.0.0 + bin-version-check: 5.1.0 + transitivePeerDependencies: + - react-native-b4a + - supports-color + + '@xhmikosr/decompress-tar@8.1.0': + dependencies: + file-type: 20.5.0 + is-stream: 2.0.1 + tar-stream: 3.1.7 + transitivePeerDependencies: + - react-native-b4a + - supports-color + + '@xhmikosr/decompress-tarbz2@8.1.0': + dependencies: + '@xhmikosr/decompress-tar': 8.1.0 + file-type: 20.5.0 + is-stream: 2.0.1 + seek-bzip: 2.0.0 + unbzip2-stream: 1.4.3 + transitivePeerDependencies: + - react-native-b4a + - supports-color + + '@xhmikosr/decompress-targz@8.1.0': + dependencies: + '@xhmikosr/decompress-tar': 8.1.0 + file-type: 20.5.0 + is-stream: 2.0.1 + transitivePeerDependencies: + - react-native-b4a + - supports-color + + '@xhmikosr/decompress-unzip@7.1.0': + dependencies: + file-type: 20.5.0 + get-stream: 6.0.1 + yauzl: 3.4.0 + transitivePeerDependencies: + - supports-color + + '@xhmikosr/decompress@10.2.1': + dependencies: + '@xhmikosr/decompress-tar': 8.1.0 + '@xhmikosr/decompress-tarbz2': 8.1.0 + '@xhmikosr/decompress-targz': 8.1.0 + '@xhmikosr/decompress-unzip': 7.1.0 + graceful-fs: 4.2.11 + strip-dirs: 3.0.0 + transitivePeerDependencies: + - react-native-b4a + - supports-color + + '@xhmikosr/downloader@15.2.0': + dependencies: + '@xhmikosr/archive-type': 7.1.0 + '@xhmikosr/decompress': 10.2.1 + content-disposition: 0.5.4 + defaults: 2.0.2 + ext-name: 5.0.0 + file-type: 20.5.0 + filenamify: 6.0.0 + get-stream: 6.0.1 + got: 13.0.0 + transitivePeerDependencies: + - react-native-b4a + - supports-color + + '@xhmikosr/os-filter-obj@3.0.0': + dependencies: + arch: 3.0.0 + '@xtuc/ieee754@1.2.0': {} '@xtuc/long@4.2.2': {} @@ -15372,6 +15914,8 @@ snapshots: apache-md5@1.1.8: {} + arch@3.0.0: {} + archiver-utils@5.0.2: dependencies: glob: 10.5.0 @@ -15691,6 +16235,17 @@ snapshots: dependencies: require-from-string: 2.0.2 + bin-version-check@5.1.0: + dependencies: + bin-version: 6.0.0 + semver: 7.8.0 + semver-truncate: 3.0.0 + + bin-version@6.0.0: + dependencies: + execa: 5.1.1 + find-versions: 5.1.0 + bl@4.1.0: dependencies: buffer: 5.7.1 @@ -15809,6 +16364,18 @@ snapshots: cacheable-lookup@6.1.0: {} + cacheable-lookup@7.0.0: {} + + cacheable-request@10.2.14: + dependencies: + '@types/http-cache-semantics': 4.2.0 + get-stream: 6.0.1 + http-cache-semantics: 4.2.0 + keyv: 4.5.4 + mimic-response: 4.0.0 + normalize-url: 8.1.1 + responselike: 3.0.0 + cacheable-request@7.0.2: dependencies: clone-response: 1.0.3 @@ -15996,8 +16563,12 @@ snapshots: commander@2.20.3: {} + commander@6.2.1: {} + commander@7.2.0: {} + commander@8.3.0: {} + commitizen@4.3.1(@types/node@25.9.3)(typescript@6.0.3): dependencies: cachedir: 2.3.0 @@ -16330,6 +16901,8 @@ snapshots: dependencies: clone: 1.0.4 + defaults@2.0.2: {} + defer-to-connect@2.0.1: {} define-lazy-prop@2.0.0: {} @@ -16762,6 +17335,18 @@ snapshots: dependencies: eventsource-parser: 3.0.6 + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + expand-tilde@2.0.2: dependencies: homedir-polyfill: 1.0.3 @@ -16853,6 +17438,15 @@ snapshots: '@expressive-code/plugin-shiki': 0.43.1 '@expressive-code/plugin-text-markers': 0.43.1 + ext-list@2.2.2: + dependencies: + mime-db: 1.54.0 + + ext-name@5.0.0: + dependencies: + ext-list: 2.2.2 + sort-keys-length: 1.0.1 + extend@3.0.2: {} external-editor@3.1.0: @@ -16962,8 +17556,23 @@ snapshots: dependencies: flat-cache: 4.0.1 + file-type@20.5.0: + dependencies: + '@tokenizer/inflate': 0.2.7 + strtok3: 10.3.5 + token-types: 6.1.2 + uint8array-extras: 1.5.0 + transitivePeerDependencies: + - supports-color + file-uri-to-path@2.0.0: {} + filename-reserved-regex@3.0.0: {} + + filenamify@6.0.0: + dependencies: + filename-reserved-regex: 3.0.0 + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -17019,6 +17628,10 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 + find-versions@5.1.0: + dependencies: + semver-regex: 4.0.5 + findup-sync@4.0.0: dependencies: detect-file: 1.0.0 @@ -17058,6 +17671,8 @@ snapshots: form-data-encoder@1.7.2: {} + form-data-encoder@2.1.4: {} + form-data@4.0.6: dependencies: asynckit: 0.4.0 @@ -17271,6 +17886,20 @@ snapshots: p-cancelable: 2.1.1 responselike: 2.0.1 + got@13.0.0: + dependencies: + '@sindresorhus/is': 5.6.0 + '@szmarczak/http-timer': 5.0.1 + cacheable-lookup: 7.0.0 + cacheable-request: 10.2.14 + decompress-response: 6.0.0 + form-data-encoder: 2.1.4 + get-stream: 6.0.1 + http2-wrapper: 2.2.1 + lowercase-keys: 3.0.0 + p-cancelable: 3.0.0 + responselike: 3.0.0 + graceful-fs@4.2.11: {} gunzip-maybe@1.4.2: @@ -17638,6 +18267,8 @@ snapshots: transitivePeerDependencies: - supports-color + human-signals@2.1.0: {} + husky@9.1.7: {} i18next@26.2.0(typescript@6.0.3): @@ -17729,6 +18360,10 @@ snapshots: transitivePeerDependencies: - '@types/node' + inspect-with-kind@1.0.5: + dependencies: + kind-of: 6.0.3 + ip-address@10.0.1: {} ipaddr.js@1.9.1: {} @@ -17790,6 +18425,8 @@ snapshots: is-obj@2.0.0: {} + is-plain-obj@1.1.0: {} + is-plain-obj@4.1.0: {} is-plain-object@5.0.0: {} @@ -17990,6 +18627,8 @@ snapshots: dependencies: json-buffer: 3.0.1 + kind-of@6.0.3: {} + klona@2.0.6: {} koa-compose@4.1.0: @@ -18239,6 +18878,8 @@ snapshots: lowercase-keys@2.0.0: {} + lowercase-keys@3.0.0: {} + lru-cache@10.4.3: {} lru-cache@11.3.5: {} @@ -18835,6 +19476,8 @@ snapshots: mimic-response@3.1.0: {} + mimic-response@4.0.0: {} + mini-svg-data-uri@1.4.4: {} minimatch@10.2.5: @@ -18981,6 +19624,8 @@ snapshots: normalize-url@6.1.0: {} + normalize-url@8.1.1: {} + npm-normalize-package-bin@3.0.1: {} npm-run-path@4.0.1: @@ -19243,6 +19888,8 @@ snapshots: p-cancelable@2.1.1: {} + p-cancelable@3.0.0: {} + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 @@ -19359,6 +20006,8 @@ snapshots: duplexify: 3.7.1 through2: 2.0.5 + pend@1.2.0: {} + perfect-debounce@1.0.0: {} performance-now@2.1.0: {} @@ -19406,6 +20055,10 @@ snapshots: pirates@4.0.7: {} + piscina@4.9.3: + optionalDependencies: + '@napi-rs/nice': 1.1.1 + pkce-challenge@4.1.0: {} pkce-challenge@5.0.0: {} @@ -19892,6 +20545,10 @@ snapshots: dependencies: lowercase-keys: 2.0.0 + responselike@3.0.0: + dependencies: + lowercase-keys: 3.0.0 + restore-cursor@3.1.0: dependencies: onetime: 5.1.2 @@ -20071,6 +20728,16 @@ snapshots: secure-json-parse@4.1.0: {} + seek-bzip@2.0.0: + dependencies: + commander: 6.2.1 + + semver-regex@4.0.5: {} + + semver-truncate@3.0.0: + dependencies: + semver: 7.8.0 + semver@5.7.2: {} semver@6.3.1: {} @@ -20291,6 +20958,14 @@ snapshots: dependencies: atomic-sleep: 1.0.0 + sort-keys-length@1.0.1: + dependencies: + sort-keys: 1.1.2 + + sort-keys@1.1.2: + dependencies: + is-plain-obj: 1.1.0 + sorted-array-functions@1.3.0: optional: true @@ -20513,12 +21188,23 @@ snapshots: strip-bom@4.0.0: {} + strip-dirs@3.0.0: + dependencies: + inspect-with-kind: 1.0.5 + is-plain-obj: 1.1.0 + + strip-final-newline@2.0.0: {} + strip-json-comments@3.1.1: {} strnum@2.2.2: {} strnum@2.2.3: {} + strtok3@10.3.5: + dependencies: + '@tokenizer/token': 0.3.0 + style-to-js@1.1.17: dependencies: style-to-object: 1.0.9 @@ -20698,6 +21384,12 @@ snapshots: toidentifier@1.0.1: {} + token-types@6.1.2: + dependencies: + '@borewit/text-codec': 0.2.2 + '@tokenizer/token': 0.3.0 + ieee754: 1.2.1 + totalist@3.0.1: {} tough-cookie@5.1.2: @@ -20801,8 +21493,15 @@ snapshots: uglify-js@3.19.3: optional: true + uint8array-extras@1.5.0: {} + ultrahtml@1.6.0: {} + unbzip2-stream@1.4.3: + dependencies: + buffer: 5.7.1 + through: 2.3.8 + uncrypto@0.1.3: {} undici-types@7.16.0: {} @@ -21303,6 +22002,10 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + yauzl@3.4.0: + dependencies: + pend: 1.2.0 + yn@3.1.1: {} yocto-queue@0.1.0: {} From f7d6affe54553931babbb949dda6348f786094b3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 29 Jun 2026 04:21:16 +0000 Subject: [PATCH 2/5] docs: update translations --- .../get_started/tutorials/contribute-generator.mdx | 12 ++++++------ docs/src/content/docs/es/guides/nx-generator.mdx | 7 ++++++- .../get_started/tutorials/contribute-generator.mdx | 12 ++++++------ docs/src/content/docs/fr/guides/nx-generator.mdx | 2 +- .../get_started/tutorials/contribute-generator.mdx | 6 +++--- docs/src/content/docs/it/guides/nx-generator.mdx | 2 +- .../get_started/tutorials/contribute-generator.mdx | 12 ++++++------ docs/src/content/docs/jp/guides/nx-generator.mdx | 9 +++++++-- .../get_started/tutorials/contribute-generator.mdx | 6 +++--- docs/src/content/docs/ko/guides/nx-generator.mdx | 2 +- .../get_started/tutorials/contribute-generator.mdx | 12 ++++++------ docs/src/content/docs/pt/guides/nx-generator.mdx | 2 +- .../get_started/tutorials/contribute-generator.mdx | 12 ++++++------ docs/src/content/docs/vi/guides/nx-generator.mdx | 2 +- .../get_started/tutorials/contribute-generator.mdx | 6 +++--- docs/src/content/docs/zh/guides/nx-generator.mdx | 2 +- 16 files changed, 58 insertions(+), 48 deletions(-) diff --git a/docs/src/content/docs/es/get_started/tutorials/contribute-generator.mdx b/docs/src/content/docs/es/get_started/tutorials/contribute-generator.mdx index f5b05939c..022ba14c7 100644 --- a/docs/src/content/docs/es/get_started/tutorials/contribute-generator.mdx +++ b/docs/src/content/docs/es/get_started/tutorials/contribute-generator.mdx @@ -187,9 +187,9 @@ import { generateFiles, joinPathFragments, readProjectConfiguration, - Tree, + type Tree, } from '@nx/devkit'; -import { TrpcProcedureSchema } from './schema'; +import type { TrpcProcedureSchema } from './schema.js'; import { formatFilesInSubtree } from '../../utils/format'; import camelCase from 'lodash.camelcase'; import kebabCase from 'lodash.kebabcase'; @@ -205,7 +205,7 @@ export const trpcProcedureGenerator = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), projectConfig.sourceRoot, { procedureNameCamelCase, @@ -235,9 +235,9 @@ import { generateFiles, joinPathFragments, readProjectConfiguration, - Tree, + type Tree, } from '@nx/devkit'; -import { TrpcProcedureSchema } from './schema'; +import type { TrpcProcedureSchema } from './schema.js'; import { formatFilesInSubtree } from '../../utils/format'; import camelCase from 'lodash.camelcase'; import kebabCase from 'lodash.kebabcase'; @@ -254,7 +254,7 @@ export const trpcProcedureGenerator = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), projectConfig.sourceRoot, { procedureNameCamelCase, diff --git a/docs/src/content/docs/es/guides/nx-generator.mdx b/docs/src/content/docs/es/guides/nx-generator.mdx index 38fb6a5a6..acea747ff 100644 --- a/docs/src/content/docs/es/guides/nx-generator.mdx +++ b/docs/src/content/docs/es/guides/nx-generator.mdx @@ -437,7 +437,12 @@ import { buildOpenApiCodeGenerationData } from '@aws/nx-plugin/sdk/open-api.js'; export const myGenerator = async (tree: Tree, schema: MyGeneratorSchema) => { const data = await buildOpenApiCodeGenerationData(tree, 'ruta/espec.json'); - generateFiles(tree, __dirname + '/files', 'ruta/salida', data); + generateFiles( + tree, + joinPathFragments(import.meta.dirname, 'files'), // Directorio de plantillas + 'ruta/de/salida', // Directorio de salida + data, + ); }; ``` diff --git a/docs/src/content/docs/fr/get_started/tutorials/contribute-generator.mdx b/docs/src/content/docs/fr/get_started/tutorials/contribute-generator.mdx index 740e05cb4..26473d365 100644 --- a/docs/src/content/docs/fr/get_started/tutorials/contribute-generator.mdx +++ b/docs/src/content/docs/fr/get_started/tutorials/contribute-generator.mdx @@ -187,9 +187,9 @@ import { generateFiles, joinPathFragments, readProjectConfiguration, - Tree, + type Tree, } from '@nx/devkit'; -import { TrpcProcedureSchema } from './schema'; +import type { TrpcProcedureSchema } from './schema.js'; import { formatFilesInSubtree } from '../../utils/format'; import camelCase from 'lodash.camelcase'; import kebabCase from 'lodash.kebabcase'; @@ -205,7 +205,7 @@ export const trpcProcedureGenerator = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), projectConfig.sourceRoot, { procedureNameCamelCase, @@ -235,9 +235,9 @@ import { generateFiles, joinPathFragments, readProjectConfiguration, - Tree, + type Tree, } from '@nx/devkit'; -import { TrpcProcedureSchema } from './schema'; +import type { TrpcProcedureSchema } from './schema.js'; import { formatFilesInSubtree } from '../../utils/format'; import camelCase from 'lodash.camelcase'; import kebabCase from 'lodash.kebabcase'; @@ -254,7 +254,7 @@ export const trpcProcedureGenerator = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), projectConfig.sourceRoot, { procedureNameCamelCase, diff --git a/docs/src/content/docs/fr/guides/nx-generator.mdx b/docs/src/content/docs/fr/guides/nx-generator.mdx index 6c9181b8d..4144efe43 100644 --- a/docs/src/content/docs/fr/guides/nx-generator.mdx +++ b/docs/src/content/docs/fr/guides/nx-generator.mdx @@ -286,7 +286,7 @@ import { generateFiles, joinPathFragments } from '@nx/devkit'; // Générer des fichiers depuis des templates generateFiles( tree, - joinPathFragments(__dirname, 'files'), // Répertoire de templates + joinPathFragments(import.meta.dirname, 'files'), // Répertoire de templates 'path/to/output', // Répertoire de sortie { // Variables à remplacer dans les templates diff --git a/docs/src/content/docs/it/get_started/tutorials/contribute-generator.mdx b/docs/src/content/docs/it/get_started/tutorials/contribute-generator.mdx index 7800b78b6..5730c3b33 100644 --- a/docs/src/content/docs/it/get_started/tutorials/contribute-generator.mdx +++ b/docs/src/content/docs/it/get_started/tutorials/contribute-generator.mdx @@ -235,9 +235,9 @@ import { generateFiles, joinPathFragments, readProjectConfiguration, - Tree, + type Tree, } from '@nx/devkit'; -import { TrpcProcedureSchema } from './schema'; +import type { TrpcProcedureSchema } from './schema.js'; import { formatFilesInSubtree } from '../../utils/format'; import camelCase from 'lodash.camelcase'; import kebabCase from 'lodash.kebabcase'; @@ -254,7 +254,7 @@ export const trpcProcedureGenerator = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), projectConfig.sourceRoot, { procedureNameCamelCase, diff --git a/docs/src/content/docs/it/guides/nx-generator.mdx b/docs/src/content/docs/it/guides/nx-generator.mdx index c5e66f443..0ac5adb1f 100644 --- a/docs/src/content/docs/it/guides/nx-generator.mdx +++ b/docs/src/content/docs/it/guides/nx-generator.mdx @@ -458,7 +458,7 @@ export const myGenerator = async (tree: Tree, schema: MyGeneratorSchema) => { generateFiles( tree, - joinPathFragments(__dirname, 'files'), // Directory template + joinPathFragments(import.meta.dirname, 'files'), // Directory template 'path/to/output', // Directory di output data, ); diff --git a/docs/src/content/docs/jp/get_started/tutorials/contribute-generator.mdx b/docs/src/content/docs/jp/get_started/tutorials/contribute-generator.mdx index c60b9d9d5..abc707612 100644 --- a/docs/src/content/docs/jp/get_started/tutorials/contribute-generator.mdx +++ b/docs/src/content/docs/jp/get_started/tutorials/contribute-generator.mdx @@ -183,9 +183,9 @@ import { generateFiles, joinPathFragments, readProjectConfiguration, - Tree, + type Tree, } from '@nx/devkit'; -import { TrpcProcedureSchema } from './schema'; +import type { TrpcProcedureSchema } from './schema.js'; import { formatFilesInSubtree } from '../../utils/format'; import camelCase from 'lodash.camelcase'; import kebabCase from 'lodash.kebabcase'; @@ -201,7 +201,7 @@ export const trpcProcedureGenerator = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), projectConfig.sourceRoot, { procedureNameCamelCase, @@ -231,9 +231,9 @@ import { generateFiles, joinPathFragments, readProjectConfiguration, - Tree, + type Tree, } from '@nx/devkit'; -import { TrpcProcedureSchema } from './schema'; +import type { TrpcProcedureSchema } from './schema.js'; import { formatFilesInSubtree } from '../../utils/format'; import camelCase from 'lodash.camelcase'; import kebabCase from 'lodash.kebabcase'; @@ -250,7 +250,7 @@ export const trpcProcedureGenerator = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), projectConfig.sourceRoot, { procedureNameCamelCase, diff --git a/docs/src/content/docs/jp/guides/nx-generator.mdx b/docs/src/content/docs/jp/guides/nx-generator.mdx index f9d201d1c..d920ad356 100644 --- a/docs/src/content/docs/jp/guides/nx-generator.mdx +++ b/docs/src/content/docs/jp/guides/nx-generator.mdx @@ -283,7 +283,7 @@ import { generateFiles, joinPathFragments } from '@nx/devkit'; generateFiles( tree, - joinPathFragments(__dirname, 'files'), // テンプレートディレクトリ + joinPathFragments(import.meta.dirname, 'files'), // テンプレートディレクトリ 'path/to/output', // 出力ディレクトリ { name: options.name, @@ -438,7 +438,12 @@ import { buildOpenApiCodeGenerationData } from '@aws/nx-plugin/sdk/open-api.js'; export const myGenerator = async (tree: Tree, schema: MyGeneratorSchema) => { const data = await buildOpenApiCodeGenerationData(tree, 'path/to/spec.json'); - generateFiles(tree, 'templates', 'output', data); + generateFiles( + tree, + joinPathFragments(import.meta.dirname, 'files'), // テンプレートディレクトリ + 'path/to/output', // 出力ディレクトリ + data, + ); }; ``` diff --git a/docs/src/content/docs/ko/get_started/tutorials/contribute-generator.mdx b/docs/src/content/docs/ko/get_started/tutorials/contribute-generator.mdx index a9f8e5078..40a5433ec 100644 --- a/docs/src/content/docs/ko/get_started/tutorials/contribute-generator.mdx +++ b/docs/src/content/docs/ko/get_started/tutorials/contribute-generator.mdx @@ -235,9 +235,9 @@ import { generateFiles, joinPathFragments, readProjectConfiguration, - Tree, + type Tree, } from '@nx/devkit'; -import { TrpcProcedureSchema } from './schema'; +import type { TrpcProcedureSchema } from './schema.js'; import { formatFilesInSubtree } from '../../utils/format'; import camelCase from 'lodash.camelcase'; import kebabCase from 'lodash.kebabcase'; @@ -254,7 +254,7 @@ export const trpcProcedureGenerator = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), projectConfig.sourceRoot, { procedureNameCamelCase, diff --git a/docs/src/content/docs/ko/guides/nx-generator.mdx b/docs/src/content/docs/ko/guides/nx-generator.mdx index a7685000c..9c4e02264 100644 --- a/docs/src/content/docs/ko/guides/nx-generator.mdx +++ b/docs/src/content/docs/ko/guides/nx-generator.mdx @@ -459,7 +459,7 @@ export const myGenerator = async (tree: Tree, schema: MyGeneratorSchema) => { generateFiles( tree, - joinPathFragments(__dirname, 'files'), // 템플릿 디렉토리 + joinPathFragments(import.meta.dirname, 'files'), // 템플릿 디렉토리 'path/to/output', // 출력 디렉토리 data, ); diff --git a/docs/src/content/docs/pt/get_started/tutorials/contribute-generator.mdx b/docs/src/content/docs/pt/get_started/tutorials/contribute-generator.mdx index a66b562e1..4ed899cd0 100644 --- a/docs/src/content/docs/pt/get_started/tutorials/contribute-generator.mdx +++ b/docs/src/content/docs/pt/get_started/tutorials/contribute-generator.mdx @@ -175,9 +175,9 @@ import { generateFiles, joinPathFragments, readProjectConfiguration, - Tree, + type Tree, } from '@nx/devkit'; -import { TrpcProcedureSchema } from './schema'; +import type { TrpcProcedureSchema } from './schema.js'; import { formatFilesInSubtree } from '../../utils/format'; import camelCase from 'lodash.camelcase'; import kebabCase from 'lodash.kebabcase'; @@ -193,7 +193,7 @@ export const trpcProcedureGenerator = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), projectConfig.sourceRoot, { procedureNameCamelCase, @@ -223,9 +223,9 @@ import { generateFiles, joinPathFragments, readProjectConfiguration, - Tree, + type Tree, } from '@nx/devkit'; -import { TrpcProcedureSchema } from './schema'; +import type { TrpcProcedureSchema } from './schema.js'; import { formatFilesInSubtree } from '../../utils/format'; import camelCase from 'lodash.camelcase'; import kebabCase from 'lodash.kebabcase'; @@ -242,7 +242,7 @@ export const trpcProcedureGenerator = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), projectConfig.sourceRoot, { procedureNameCamelCase, diff --git a/docs/src/content/docs/pt/guides/nx-generator.mdx b/docs/src/content/docs/pt/guides/nx-generator.mdx index bfb014fb4..2573b4795 100644 --- a/docs/src/content/docs/pt/guides/nx-generator.mdx +++ b/docs/src/content/docs/pt/guides/nx-generator.mdx @@ -456,7 +456,7 @@ export const myGenerator = async (tree: Tree, schema: MyGeneratorSchema) => { generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), 'path/to/output', data, ); diff --git a/docs/src/content/docs/vi/get_started/tutorials/contribute-generator.mdx b/docs/src/content/docs/vi/get_started/tutorials/contribute-generator.mdx index 353493bca..81aa6c7a0 100644 --- a/docs/src/content/docs/vi/get_started/tutorials/contribute-generator.mdx +++ b/docs/src/content/docs/vi/get_started/tutorials/contribute-generator.mdx @@ -187,9 +187,9 @@ import { generateFiles, joinPathFragments, readProjectConfiguration, - Tree, + type Tree, } from '@nx/devkit'; -import { TrpcProcedureSchema } from './schema'; +import type { TrpcProcedureSchema } from './schema.js'; import { formatFilesInSubtree } from '../../utils/format'; import camelCase from 'lodash.camelcase'; import kebabCase from 'lodash.kebabcase'; @@ -205,7 +205,7 @@ export const trpcProcedureGenerator = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), projectConfig.sourceRoot, { procedureNameCamelCase, @@ -235,9 +235,9 @@ import { generateFiles, joinPathFragments, readProjectConfiguration, - Tree, + type Tree, } from '@nx/devkit'; -import { TrpcProcedureSchema } from './schema'; +import type { TrpcProcedureSchema } from './schema.js'; import { formatFilesInSubtree } from '../../utils/format'; import camelCase from 'lodash.camelcase'; import kebabCase from 'lodash.kebabcase'; @@ -254,7 +254,7 @@ export const trpcProcedureGenerator = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), projectConfig.sourceRoot, { procedureNameCamelCase, diff --git a/docs/src/content/docs/vi/guides/nx-generator.mdx b/docs/src/content/docs/vi/guides/nx-generator.mdx index dd8b238d0..d7217a18a 100644 --- a/docs/src/content/docs/vi/guides/nx-generator.mdx +++ b/docs/src/content/docs/vi/guides/nx-generator.mdx @@ -459,7 +459,7 @@ export const myGenerator = async (tree: Tree, schema: MyGeneratorSchema) => { generateFiles( tree, - joinPathFragments(__dirname, 'files'), // Thư mục template + joinPathFragments(import.meta.dirname, 'files'), // Thư mục template 'path/to/output', // Thư mục đầu ra data, ); diff --git a/docs/src/content/docs/zh/get_started/tutorials/contribute-generator.mdx b/docs/src/content/docs/zh/get_started/tutorials/contribute-generator.mdx index 9c94548eb..e4467f33d 100644 --- a/docs/src/content/docs/zh/get_started/tutorials/contribute-generator.mdx +++ b/docs/src/content/docs/zh/get_started/tutorials/contribute-generator.mdx @@ -231,9 +231,9 @@ import { generateFiles, joinPathFragments, readProjectConfiguration, - Tree, + type Tree, } from '@nx/devkit'; -import { TrpcProcedureSchema } from './schema'; +import type { TrpcProcedureSchema } from './schema.js'; import { formatFilesInSubtree } from '../../utils/format'; import camelCase from 'lodash.camelcase'; import kebabCase from 'lodash.kebabcase'; @@ -250,7 +250,7 @@ export const trpcProcedureGenerator = async ( generateFiles( tree, - joinPathFragments(__dirname, 'files'), + joinPathFragments(import.meta.dirname, 'files'), projectConfig.sourceRoot, { procedureNameCamelCase, diff --git a/docs/src/content/docs/zh/guides/nx-generator.mdx b/docs/src/content/docs/zh/guides/nx-generator.mdx index a23894efd..3815d7a63 100644 --- a/docs/src/content/docs/zh/guides/nx-generator.mdx +++ b/docs/src/content/docs/zh/guides/nx-generator.mdx @@ -459,7 +459,7 @@ export const myGenerator = async (tree: Tree, schema: MyGeneratorSchema) => { generateFiles( tree, - joinPathFragments(__dirname, 'files'), // 模板目录 + joinPathFragments(import.meta.dirname, 'files'), // 模板目录 'path/to/output', // 输出目录 data, ); From d85b3a0ba9ea098f4ee2c7303d12fe820f38f88e Mon Sep 17 00:00:00 2001 From: nx-plugin-for-aws Date: Mon, 29 Jun 2026 04:53:03 +0000 Subject: [PATCH 3/5] fix(nx-plugin): add .js extensions to vended mcp-server/index ESM imports The generated `ts#nx-plugin` project is `"type": "module"`, so its `package` target compiles with `tsc` under `moduleResolution: nodenext`, which requires explicit `.js` extensions on relative imports (TS2835). Add `.js` to the vended mcp-server template imports and to the `export *` that `ts#nx-generator` adds to the plugin's `index.ts`. Fixing the broken `../utils` import also resolves the cascading TS7006 (implicit `any`) errors. The targeted nx-plugin smoke test only *runs* the generator (native strip), so it passed; the full package-manager smoke matrix runs `build --all`, which builds the plugin's `package` target and surfaced these errors. --- e2e/src/smoke-tests/nx-plugin.spec.ts | 16 ++++++-------- .../src/ts/nx-generator/generator.spec.ts | 4 ++-- .../src/ts/nx-generator/generator.ts | 3 ++- .../__snapshots__/generator.spec.ts.snap | 22 +++++++++---------- .../files/mcp-server/server.ts.template | 10 ++++----- .../create-workspace-command.ts.template | 4 ++-- .../tools/generator-guide.ts.template | 4 ++-- .../tools/list-generators.ts.template | 4 ++-- 8 files changed, 33 insertions(+), 34 deletions(-) diff --git a/e2e/src/smoke-tests/nx-plugin.spec.ts b/e2e/src/smoke-tests/nx-plugin.spec.ts index 9f23465d6..88d6d99eb 100644 --- a/e2e/src/smoke-tests/nx-plugin.spec.ts +++ b/e2e/src/smoke-tests/nx-plugin.spec.ts @@ -13,12 +13,11 @@ import { createTestWorkspace, runCLI, tmpProjPath } from '../utils'; * Exercises the `ts#nx-plugin` and `ts#nx-generator` generators end-to-end and, * crucially, *runs* the generated generator. * - * Nx transpiles an unbuilt plugin generator on the fly. Without - * `@swc-node/register` it falls back to ts-node, which forces the deprecated - * `moduleResolution: node10` — a hard error under TypeScript 6. The `ts#nx-plugin` - * generator therefore adds `@swc-node/register` so nx uses swc instead. This - * test regresses if that dependency is dropped, since running the generator - * below would then fail with `TS5107`. + * The generated plugin is `"type": "module"`, so Nx 23 loads its unbuilt `.ts` + * generators as ESM via Node's native type stripping — no swc/ts-node + * transpiler. This test regresses if the vended generator stops being valid + * ESM (e.g. `__dirname` instead of `import.meta.dirname`, or a relative import + * missing its `.js` extension), since loading the generator below would fail. */ describe('smoke test - nx-plugin', () => { const pkgMgr = 'pnpm'; @@ -59,9 +58,8 @@ describe('smoke test - nx-plugin', () => { opts, ); - // Run the generated generator. Nx transpiles it on the fly; this fails - // under TypeScript 6 unless @swc-node/register is present (otherwise nx - // falls back to ts-node, which forces deprecated moduleResolution=node10). + // Run the generated generator. Nx loads the unbuilt `.ts` source as ESM + // via Node's native type stripping (the plugin is `type: module`). await runCLI( `generate @nx-plugin-test/plugin:my#generator --exampleOption=test --no-interactive`, opts, diff --git a/packages/nx-plugin/src/ts/nx-generator/generator.spec.ts b/packages/nx-plugin/src/ts/nx-generator/generator.spec.ts index 7b5b0a440..194712765 100644 --- a/packages/nx-plugin/src/ts/nx-generator/generator.spec.ts +++ b/packages/nx-plugin/src/ts/nx-generator/generator.spec.ts @@ -734,10 +734,10 @@ describe('nx-generator generator', () => { description: 'Generator with export test', }); - // Check that the export was added to index.ts + // Check that the export was added to index.ts (NodeNext `.js` specifier) const indexContent = tree.read('tools/plugin/src/index.ts', 'utf-8'); expect(indexContent).toContain( - "export * from './export-test/generator';", + "export * from './export-test/generator.js';", ); }); diff --git a/packages/nx-plugin/src/ts/nx-generator/generator.ts b/packages/nx-plugin/src/ts/nx-generator/generator.ts index 23292ad0c..5ea8bfe88 100644 --- a/packages/nx-plugin/src/ts/nx-generator/generator.ts +++ b/packages/nx-plugin/src/ts/nx-generator/generator.ts @@ -141,7 +141,8 @@ export const tsNxGeneratorGenerator = async ( const indexPath = joinPathFragments(sourceRoot, 'index.ts'); if (tree.exists(indexPath)) { - await addStarExport(tree, indexPath, `./${generatorSubDir}/generator`); + // NodeNext requires explicit extensions; the local plugin is ESM. + await addStarExport(tree, indexPath, `./${generatorSubDir}/generator.js`); } addComponentGeneratorMetadata( diff --git a/packages/nx-plugin/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap b/packages/nx-plugin/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap index 6aabaf978..1953ab0c0 100644 --- a/packages/nx-plugin/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap +++ b/packages/nx-plugin/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap @@ -157,11 +157,11 @@ export const PackageManagerSchema = z.enum(PACKAGE_MANAGERS); exports[`ts#nx-plugin generator > should generate MCP server files > test-plugin/src/mcp-server/server.ts 1`] = ` "import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; -import { registerCreateWorkspaceCommandTool } from './tools/create-workspace-command'; -import { registerGeneralGuidanceTool } from './tools/general-guidance'; -import { registerListGeneratorsTool } from './tools/list-generators'; -import { registerGeneratorGuideTool } from './tools/generator-guide'; -import { getPackageName } from './utils'; +import { registerCreateWorkspaceCommandTool } from './tools/create-workspace-command.js'; +import { registerGeneralGuidanceTool } from './tools/general-guidance.js'; +import { registerListGeneratorsTool } from './tools/list-generators.js'; +import { registerGeneratorGuideTool } from './tools/generator-guide.js'; +import { getPackageName } from './utils.js'; /** * Create the MCP Server @@ -225,12 +225,12 @@ void (async () => { exports[`ts#nx-plugin generator > should generate MCP server files > test-plugin/src/mcp-server/tools/create-workspace-command.ts 1`] = ` "import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { z } from 'zod'; -import { PackageManagerSchema } from '../schema'; +import { PackageManagerSchema } from '../schema.js'; import { buildCreateCommand, buildInstallCommand, getPackageName, -} from '../utils'; +} from '../utils.js'; /** * Registers a tool which tells a model how to create an Nx workspace @@ -333,8 +333,8 @@ export const registerGeneralGuidanceTool = (server: McpServer) => { exports[`ts#nx-plugin generator > should generate MCP server files > test-plugin/src/mcp-server/tools/generator-guide.ts 1`] = ` "import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { z } from 'zod'; -import { renderGeneratorInfo, listGenerators } from '../utils'; -import { PackageManagerSchema } from '../schema'; +import { renderGeneratorInfo, listGenerators } from '../utils.js'; +import { PackageManagerSchema } from '../schema.js'; import * as fs from 'fs'; import * as path from 'path'; @@ -382,8 +382,8 @@ export const registerGeneratorGuideTool = (server: McpServer) => { exports[`ts#nx-plugin generator > should generate MCP server files > test-plugin/src/mcp-server/tools/list-generators.ts 1`] = ` "import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; -import { PackageManagerSchema } from '../schema'; -import { renderGeneratorInfo, listGenerators } from '../utils'; +import { PackageManagerSchema } from '../schema.js'; +import { renderGeneratorInfo, listGenerators } from '../utils.js'; /** * Registers a tool which lists details about the available generators diff --git a/packages/nx-plugin/src/ts/nx-plugin/files/mcp-server/server.ts.template b/packages/nx-plugin/src/ts/nx-plugin/files/mcp-server/server.ts.template index 91b9712e6..c09d499b1 100644 --- a/packages/nx-plugin/src/ts/nx-plugin/files/mcp-server/server.ts.template +++ b/packages/nx-plugin/src/ts/nx-plugin/files/mcp-server/server.ts.template @@ -1,9 +1,9 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; -import { registerCreateWorkspaceCommandTool } from './tools/create-workspace-command'; -import { registerGeneralGuidanceTool } from './tools/general-guidance'; -import { registerListGeneratorsTool } from './tools/list-generators'; -import { registerGeneratorGuideTool } from './tools/generator-guide'; -import { getPackageName } from './utils'; +import { registerCreateWorkspaceCommandTool } from './tools/create-workspace-command.js'; +import { registerGeneralGuidanceTool } from './tools/general-guidance.js'; +import { registerListGeneratorsTool } from './tools/list-generators.js'; +import { registerGeneratorGuideTool } from './tools/generator-guide.js'; +import { getPackageName } from './utils.js'; /** * Create the MCP Server diff --git a/packages/nx-plugin/src/ts/nx-plugin/files/mcp-server/tools/create-workspace-command.ts.template b/packages/nx-plugin/src/ts/nx-plugin/files/mcp-server/tools/create-workspace-command.ts.template index e85758309..22791973a 100644 --- a/packages/nx-plugin/src/ts/nx-plugin/files/mcp-server/tools/create-workspace-command.ts.template +++ b/packages/nx-plugin/src/ts/nx-plugin/files/mcp-server/tools/create-workspace-command.ts.template @@ -1,7 +1,7 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { z } from 'zod'; -import { PackageManagerSchema } from '../schema'; -import { buildCreateCommand, buildInstallCommand, getPackageName } from '../utils'; +import { PackageManagerSchema } from '../schema.js'; +import { buildCreateCommand, buildInstallCommand, getPackageName } from '../utils.js'; /** * Registers a tool which tells a model how to create an Nx workspace diff --git a/packages/nx-plugin/src/ts/nx-plugin/files/mcp-server/tools/generator-guide.ts.template b/packages/nx-plugin/src/ts/nx-plugin/files/mcp-server/tools/generator-guide.ts.template index 7459e49b0..cc13f7890 100644 --- a/packages/nx-plugin/src/ts/nx-plugin/files/mcp-server/tools/generator-guide.ts.template +++ b/packages/nx-plugin/src/ts/nx-plugin/files/mcp-server/tools/generator-guide.ts.template @@ -1,7 +1,7 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { z } from 'zod'; -import { renderGeneratorInfo, listGenerators } from '../utils'; -import { PackageManagerSchema } from '../schema'; +import { renderGeneratorInfo, listGenerators } from '../utils.js'; +import { PackageManagerSchema } from '../schema.js'; import * as fs from 'fs'; import * as path from 'path'; diff --git a/packages/nx-plugin/src/ts/nx-plugin/files/mcp-server/tools/list-generators.ts.template b/packages/nx-plugin/src/ts/nx-plugin/files/mcp-server/tools/list-generators.ts.template index 92289453f..9cad207f6 100644 --- a/packages/nx-plugin/src/ts/nx-plugin/files/mcp-server/tools/list-generators.ts.template +++ b/packages/nx-plugin/src/ts/nx-plugin/files/mcp-server/tools/list-generators.ts.template @@ -1,6 +1,6 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; -import { PackageManagerSchema } from '../schema'; -import { renderGeneratorInfo, listGenerators } from '../utils'; +import { PackageManagerSchema } from '../schema.js'; +import { renderGeneratorInfo, listGenerators } from '../utils.js'; /** * Registers a tool which lists details about the available generators From 11479f2d3a2c05ef90452a0712e04e780d34c38d Mon Sep 17 00:00:00 2001 From: nx-plugin-for-aws Date: Mon, 29 Jun 2026 06:33:17 +0000 Subject: [PATCH 4/5] refactor(nx-plugin): ship ESM-only via stock @nx/js:swc executor Drop the CommonJS build entirely and produce a single ESM build using the standard `@nx/js:swc` executor instead of hand-rolled swc CLI commands and a custom finalize-package.mjs. Rationale: - Node unflagged `require(esm)` for synchronous ESM in 20.19.0 / 22.12.0, so CommonJS consumers can `require('@aws/nx-plugin/...')` against the ESM build directly (the SDK has no top-level await). Nx 23 loads generators as ESM via native type stripping. Neither path needs a CJS build. - The only reason the dual build used custom swc commands was converting `import.meta.dirname` -> `__dirname` for CJS output. With CJS gone, the stock executor (swc + tsc declarations + asset/package.json copy) does everything. Changes: - Move `sdk/` and `bin/` under `src/` so the project has a single source root the `@nx/js:swc` executor compiles in one pass (it can't take multiple roots, and `additionalEntryPoints` is unsupported under the TS-solution setup). `exports`/`bin` now point at `./src/sdk/*` / `./src/bin/*`; internal `../src/...` imports become `../...`. - `package.json`: ESM-only `exports` (`types`+`default`, no `require`/`cjs`), add `engines.node >= 20.19.0`. - Delete `.swcrc.cjs` and `scripts/finalize-package.mjs`; no more `cjs/` dir or `type: commonjs` marker. - `ts#nx-generator` `addSdkExport` writes to `src/sdk/*` with `../` module specifiers. Verified via verdaccio: ESM `import` and CJS `require()` of every SDK subpath work; the vended `.ts` generator loads under native strip and its plugin `package` target builds. --- packages/nx-plugin/.swcrc | 22 +++-- packages/nx-plugin/.swcrc.cjs | 20 ----- packages/nx-plugin/package.json | 15 ++-- packages/nx-plugin/project.json | 69 ++++++++++++---- .../nx-plugin/scripts/finalize-package.mjs | 80 ------------------- packages/nx-plugin/sdk/agentcore-gateway.ts | 8 -- packages/nx-plugin/sdk/connection.ts | 7 -- packages/nx-plugin/sdk/open-api.ts | 16 ---- packages/nx-plugin/sdk/py.ts | 18 ----- packages/nx-plugin/sdk/terraform.ts | 8 -- packages/nx-plugin/sdk/ts.ts | 50 ------------ .../nx-plugin/{ => src}/bin/aws-nx-mcp.ts | 2 +- .../nx-plugin/src/sdk/agentcore-gateway.ts | 8 ++ packages/nx-plugin/src/sdk/connection.ts | 7 ++ packages/nx-plugin/{ => src}/sdk/license.ts | 8 +- packages/nx-plugin/src/sdk/open-api.ts | 16 ++++ packages/nx-plugin/src/sdk/py.ts | 18 +++++ packages/nx-plugin/src/sdk/terraform.ts | 8 ++ packages/nx-plugin/src/sdk/ts.ts | 50 ++++++++++++ packages/nx-plugin/{ => src}/sdk/utils/ast.ts | 4 +- .../nx-plugin/{ => src}/sdk/utils/format.ts | 2 +- .../nx-plugin/{ => src}/sdk/utils/test.ts | 2 +- .../src/ts/nx-generator/generator.spec.ts | 42 +++++----- .../src/ts/nx-generator/generator.ts | 3 +- packages/nx-plugin/src/utils/config/utils.ts | 1 - packages/nx-plugin/tsconfig.lib.json | 2 +- 26 files changed, 217 insertions(+), 269 deletions(-) delete mode 100644 packages/nx-plugin/.swcrc.cjs delete mode 100644 packages/nx-plugin/scripts/finalize-package.mjs delete mode 100644 packages/nx-plugin/sdk/agentcore-gateway.ts delete mode 100644 packages/nx-plugin/sdk/connection.ts delete mode 100644 packages/nx-plugin/sdk/open-api.ts delete mode 100644 packages/nx-plugin/sdk/py.ts delete mode 100644 packages/nx-plugin/sdk/terraform.ts delete mode 100644 packages/nx-plugin/sdk/ts.ts rename packages/nx-plugin/{ => src}/bin/aws-nx-mcp.ts (82%) create mode 100644 packages/nx-plugin/src/sdk/agentcore-gateway.ts create mode 100644 packages/nx-plugin/src/sdk/connection.ts rename packages/nx-plugin/{ => src}/sdk/license.ts (62%) create mode 100644 packages/nx-plugin/src/sdk/open-api.ts create mode 100644 packages/nx-plugin/src/sdk/py.ts create mode 100644 packages/nx-plugin/src/sdk/terraform.ts create mode 100644 packages/nx-plugin/src/sdk/ts.ts rename packages/nx-plugin/{ => src}/sdk/utils/ast.ts (53%) rename packages/nx-plugin/{ => src}/sdk/utils/format.ts (65%) rename packages/nx-plugin/{ => src}/sdk/utils/test.ts (62%) diff --git a/packages/nx-plugin/.swcrc b/packages/nx-plugin/.swcrc index 5bf99ff09..12dc193a7 100644 --- a/packages/nx-plugin/.swcrc +++ b/packages/nx-plugin/.swcrc @@ -4,13 +4,25 @@ "jsc": { "target": "es2022", "baseUrl": "src", - "parser": { "syntax": "typescript", "decorators": true }, - "transform": { "legacyDecorator": true, "decoratorMetadata": true }, + "parser": { + "syntax": "typescript", + "decorators": true + }, + "transform": { + "legacyDecorator": true, + "decoratorMetadata": true + }, "keepClassNames": true, "externalHelpers": false, - "experimental": { "keepImportAttributes": true } + "experimental": { + "keepImportAttributes": true + } + }, + "module": { + "type": "es6", + "resolveFully": true, + "strict": true }, - "module": { "type": "es6", "resolveFully": true, "strict": true }, "exclude": [ ".*\\.spec\\.ts$", ".*\\.test\\.ts$", @@ -19,4 +31,4 @@ "[/\\\\]files[/\\\\]", ".*\\.template$" ] -} +} \ No newline at end of file diff --git a/packages/nx-plugin/.swcrc.cjs b/packages/nx-plugin/.swcrc.cjs deleted file mode 100644 index 7ec066c70..000000000 --- a/packages/nx-plugin/.swcrc.cjs +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "https://swc.rs/schema.json", - "sourceMaps": true, - "jsc": { - "target": "es2022", - "parser": { "syntax": "typescript", "decorators": true }, - "transform": { "legacyDecorator": true, "decoratorMetadata": true }, - "keepClassNames": true, - "externalHelpers": false - }, - "module": { "type": "commonjs", "strict": true }, - "exclude": [ - ".*\\.spec\\.ts$", - ".*\\.test\\.ts$", - ".*\\.spec\\.tsx$", - ".*\\.test\\.tsx$", - "[/\\\\]files[/\\\\]", - ".*\\.template$" - ] -} diff --git a/packages/nx-plugin/package.json b/packages/nx-plugin/package.json index 437320f5c..f251674b1 100644 --- a/packages/nx-plugin/package.json +++ b/packages/nx-plugin/package.json @@ -9,20 +9,18 @@ "private": false, "type": "module", "license": "Apache-2.0", - "main": "./cjs/src/index.js", + "main": "./src/index.js", "module": "./src/index.js", "types": "./src/index.d.ts", "typings": "./src/index.d.ts", "exports": { ".": { "types": "./src/index.d.ts", - "import": "./src/index.js", - "require": "./cjs/src/index.js" + "default": "./src/index.js" }, "./sdk/*": { - "types": "./sdk/*.d.ts", - "import": "./sdk/*.js", - "require": "./cjs/sdk/*.js" + "types": "./src/sdk/*.d.ts", + "default": "./src/sdk/*.js" }, "./package.json": "./package.json" }, @@ -30,10 +28,13 @@ "access": "public" }, "bin": { - "aws-nx-mcp": "./bin/aws-nx-mcp.js" + "aws-nx-mcp": "./src/bin/aws-nx-mcp.js" }, "generators": "./generators.json", "executors": "./executors.json", + "engines": { + "node": ">=20.19.0" + }, "peerDependencies": { "nx": "23.0.1" }, diff --git a/packages/nx-plugin/project.json b/packages/nx-plugin/project.json index 21be15cd0..0c4ff4849 100644 --- a/packages/nx-plugin/project.json +++ b/packages/nx-plugin/project.json @@ -6,25 +6,50 @@ "tags": [], "targets": { "compile": { - "executor": "nx:run-commands", - "outputs": ["{workspaceRoot}/dist/packages/nx-plugin"], - "cache": true, - "dependsOn": ["^compile"], + "executor": "@nx/js:swc", + "outputs": [ + "{options.outputPath}" + ], "options": { - "cwd": "{projectRoot}", - "parallel": false, - "commands": [ - "node ../../node_modules/@swc/cli/bin/swc.js src sdk bin -d ../../dist/packages/nx-plugin --config-file=.swcrc --copy-files", - "node ../../node_modules/@swc/cli/bin/swc.js src sdk bin -d ../../dist/packages/nx-plugin/cjs --config-file=.swcrc.cjs", - "tsc -p tsconfig.lib.json --declaration --emitDeclarationOnly --rootDir . --outDir ../../dist/packages/nx-plugin", - "node scripts/finalize-package.mjs" + "outputPath": "dist/packages/nx-plugin", + "main": "packages/nx-plugin/src/index.ts", + "tsConfig": "packages/nx-plugin/tsconfig.lib.json", + "swcrc": "packages/nx-plugin/.swcrc", + "stripLeadingPaths": false, + "assets": [ + "packages/nx-plugin/*.md", + "packages/nx-plugin/LICENSE*", + "packages/nx-plugin/NOTICE", + { + "input": "./packages/nx-plugin/src", + "glob": "**/!(*.ts)", + "output": "./src" + }, + { + "input": "./packages/nx-plugin/src", + "glob": "**/*.d.ts", + "output": "./src" + }, + { + "input": "./packages/nx-plugin", + "glob": "generators.json", + "output": "." + }, + { + "input": "./packages/nx-plugin", + "glob": "executors.json", + "output": "." + } ] } }, "lint": { "executor": "nx:run-commands", "cache": true, - "inputs": ["default", "{workspaceRoot}/biome.json"], + "inputs": [ + "default", + "{workspaceRoot}/biome.json" + ], "options": { "command": "biome lint {projectRoot}/src" }, @@ -47,12 +72,20 @@ "post-compile": { "executor": "nx:run-commands", "options": { - "commands": ["chmod +x dist/packages/nx-plugin/bin/aws-nx-mcp.js"] + "commands": [ + "chmod +x dist/packages/nx-plugin/src/bin/aws-nx-mcp.js" + ] }, - "dependsOn": ["compile"] + "dependsOn": [ + "compile" + ] }, "package": { - "dependsOn": ["compile", "post-compile", "generate-3p-license"] + "dependsOn": [ + "compile", + "post-compile", + "generate-3p-license" + ] }, "build": { "dependsOn": [ @@ -66,9 +99,11 @@ "mcp-inspect": { "executor": "nx:run-commands", "options": { - "commands": ["mcp-inspector -- tsx --watch bin/aws-nx-mcp.ts"], + "commands": [ + "mcp-inspector -- tsx --watch src/bin/aws-nx-mcp.ts" + ], "cwd": "{projectRoot}" } } } -} +} \ No newline at end of file diff --git a/packages/nx-plugin/scripts/finalize-package.mjs b/packages/nx-plugin/scripts/finalize-package.mjs deleted file mode 100644 index 8c33900c0..000000000 --- a/packages/nx-plugin/scripts/finalize-package.mjs +++ /dev/null @@ -1,80 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * Finalizes the dist output after the dual ESM/CJS swc builds: - * - copies root-level package assets (package.json, manifests, docs) - * - mirrors the JSON manifests into `cjs/` and drops a `cjs/package.json` - * marked `"type": "commonjs"` so Node treats the CommonJS output as CJS - * (and so relative `require('../../package.json')` from the CJS sources - * resolves to the real manifest) even though the package root is - * `"type": "module"` - */ -import { glob } from 'node:fs/promises'; -import { - copyFileSync, - existsSync, - mkdirSync, - readFileSync, - writeFileSync, -} from 'node:fs'; -import { dirname, join } from 'node:path'; -import { fileURLToPath } from 'node:url'; - -const projectRoot = join(dirname(fileURLToPath(import.meta.url)), '..'); -const distRoot = join(projectRoot, '..', '..', 'dist', 'packages', 'nx-plugin'); - -// Copy hand-authored declaration files (e.g. schema.d.ts) that swc's -// `--copy-files` skips and tsc does not re-emit. -for (const dir of ['src', 'sdk']) { - for await (const file of glob(`${dir}/**/*.d.ts`, { cwd: projectRoot })) { - const dest = join(distRoot, file); - mkdirSync(dirname(dest), { recursive: true }); - copyFileSync(join(projectRoot, file), dest); - } -} - -const rootAssets = [ - 'package.json', - 'generators.json', - 'executors.json', - 'README.md', - 'LICENSE', - 'LICENSE-THIRD-PARTY', - 'NOTICE', -]; - -for (const asset of rootAssets) { - const src = join(projectRoot, asset); - if (existsSync(src)) { - copyFileSync(src, join(distRoot, asset)); - } -} - -// The CJS sources live under `cjs/src` and `cjs/sdk`, so their relative -// `require('../../')` calls resolve against `cjs/`. Mirror the JSON -// manifests there, and write a minimal `cjs/package.json` marker that tells -// Node to load the CommonJS output as CJS even though the package root is -// `"type": "module"`. It carries only name/version (read at runtime via -// `require('../../package.json')`) — keeping it minimal avoids nesting a second -// full manifest (with its own `exports`) inside the published package. -mkdirSync(join(distRoot, 'cjs'), { recursive: true }); - -for (const manifest of ['generators.json', 'executors.json']) { - const src = join(projectRoot, manifest); - if (existsSync(src)) { - copyFileSync(src, join(distRoot, 'cjs', manifest)); - } -} - -const pkg = JSON.parse(readFileSync(join(projectRoot, 'package.json'), 'utf-8')); -writeFileSync( - join(distRoot, 'cjs', 'package.json'), - `${JSON.stringify( - { name: pkg.name, version: pkg.version, type: 'commonjs' }, - null, - 2, - )}\n`, -); diff --git a/packages/nx-plugin/sdk/agentcore-gateway.ts b/packages/nx-plugin/sdk/agentcore-gateway.ts deleted file mode 100644 index 9f4b74cfa..000000000 --- a/packages/nx-plugin/sdk/agentcore-gateway.ts +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * SPDX-License-Identifier: Apache-2.0 - */ - -// AgentCore Gateway Generator -export { agentcoreGatewayGenerator } from '../src/agentcore-gateway/generator'; -export type { AgentcoreGatewayGeneratorSchema } from '../src/agentcore-gateway/schema'; diff --git a/packages/nx-plugin/sdk/connection.ts b/packages/nx-plugin/sdk/connection.ts deleted file mode 100644 index 74e65b4bd..000000000 --- a/packages/nx-plugin/sdk/connection.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * SPDX-License-Identifier: Apache-2.0 - */ - -export { connectionGenerator } from '../src/connection/generator'; -export type { ConnectionGeneratorSchema } from '../src/connection/schema'; diff --git a/packages/nx-plugin/sdk/open-api.ts b/packages/nx-plugin/sdk/open-api.ts deleted file mode 100644 index d2bbf4387..000000000 --- a/packages/nx-plugin/sdk/open-api.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * SPDX-License-Identifier: Apache-2.0 - */ - -export { - openApiTsClientGenerator, - buildOpenApiCodeGenerationData, -} from '../src/open-api/ts-client/generator'; -export type { OpenApiTsClientGeneratorSchema } from '../src/open-api/ts-client/schema'; - -export { openApiTsHooksGenerator } from '../src/open-api/ts-hooks/generator'; -export type { OpenApiTsHooksGeneratorSchema } from '../src/open-api/ts-hooks/schema'; - -export { openApiTsMetadataGenerator } from '../src/open-api/ts-metadata/generator'; -export type { OpenApiTsMetadataGeneratorSchema } from '../src/open-api/ts-metadata/schema'; diff --git a/packages/nx-plugin/sdk/py.ts b/packages/nx-plugin/sdk/py.ts deleted file mode 100644 index e01d9e07d..000000000 --- a/packages/nx-plugin/sdk/py.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * SPDX-License-Identifier: Apache-2.0 - */ - -export { pyAgentGenerator } from '../src/py/agent/generator'; -export type { PyAgentGeneratorSchema } from '../src/py/agent/schema'; - -export { pyApiGenerator } from '../src/py/api/generator'; -export type { PyApiGeneratorSchema } from '../src/py/api/schema'; - -export { pyLambdaFunctionGenerator } from '../src/py/lambda-function/generator'; -export type { PyLambdaFunctionGeneratorSchema } from '../src/py/lambda-function/schema'; - -export { pyMcpServerGenerator } from '../src/py/mcp-server/generator'; -export type { PyMcpServerGeneratorSchema } from '../src/py/mcp-server/schema'; -export { pyProjectGenerator } from '../src/py/project/generator'; -export type { PyProjectGeneratorSchema } from '../src/py/project/schema'; diff --git a/packages/nx-plugin/sdk/terraform.ts b/packages/nx-plugin/sdk/terraform.ts deleted file mode 100644 index 881225cf1..000000000 --- a/packages/nx-plugin/sdk/terraform.ts +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * SPDX-License-Identifier: Apache-2.0 - */ - -// Terraform Project Generator -export { terraformProjectGenerator } from '../src/terraform/project/generator'; -export type { TerraformProjectGeneratorSchema } from '../src/terraform/project/schema'; diff --git a/packages/nx-plugin/sdk/ts.ts b/packages/nx-plugin/sdk/ts.ts deleted file mode 100644 index 3a396fca2..000000000 --- a/packages/nx-plugin/sdk/ts.ts +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * SPDX-License-Identifier: Apache-2.0 - */ - -// TypeScript Infrastructure -export { tsInfraGenerator } from '../src/infra/app/generator'; -export type { TsInfraGeneratorSchema } from '../src/infra/app/schema'; -// TypeScript Agent Generator -export { tsAgentGenerator } from '../src/ts/agent/generator'; -export type { TsAgentGeneratorSchema } from '../src/ts/agent/schema'; -// TypeScript API -export { tsApiGenerator } from '../src/ts/api/generator'; -export type { TsApiGeneratorSchema } from '../src/ts/api/schema'; -// Documentation Site Generator -export { tsDocsGenerator } from '../src/ts/docs/generator'; -export type { TsDocsGeneratorSchema } from '../src/ts/docs/schema'; -// DynamoDB Generator -export { tsDynamoDBGenerator } from '../src/ts/dynamodb/generator'; -export type { TsDynamoDBGeneratorSchema } from '../src/ts/dynamodb/schema'; -// TypeScript Lambda Function -export { tsLambdaFunctionGenerator } from '../src/ts/lambda-function/generator'; -export type { TsLambdaFunctionGeneratorSchema } from '../src/ts/lambda-function/schema'; -// TypeScript Project Generator -export { tsProjectGenerator } from '../src/ts/lib/generator'; -export type { TsProjectGeneratorSchema } from '../src/ts/lib/schema'; -// TypeScript MCP Server Generator -export { tsMcpServerGenerator } from '../src/ts/mcp-server/generator'; -export type { TsMcpServerGeneratorSchema } from '../src/ts/mcp-server/schema'; -// TypeScript Nx Generator Generator -export { tsNxGeneratorGenerator } from '../src/ts/nx-generator/generator'; -export type { TsNxGeneratorGeneratorSchema } from '../src/ts/nx-generator/schema'; -// TypeScript Nx Plugin Generator -export { tsNxPluginGenerator } from '../src/ts/nx-plugin/generator'; -export type { TsNxPluginGeneratorSchema } from '../src/ts/nx-plugin/schema'; -// Relational Database Generator -export { tsRdbGenerator } from '../src/ts/rdb/generator'; -export type { TsRdbGeneratorSchema } from '../src/ts/rdb/schema'; -// Runtime Config -export { runtimeConfigGenerator } from '../src/ts/react-website/runtime-config/generator'; -export type { RuntimeConfigGeneratorSchema } from '../src/ts/react-website/runtime-config/schema'; -// TypeScript Website Generator -export { tsWebsiteGenerator } from '../src/ts/website/app/generator'; -export type { TsWebsiteGeneratorSchema } from '../src/ts/website/app/schema'; -// TypeScript Website Auth Generator -export { tsWebsiteAuthGenerator } from '../src/ts/website/auth/generator'; -export type { TsWebsiteAuthGeneratorSchema } from '../src/ts/website/auth/schema'; - -// Shared Constructs -export { sharedConstructsGenerator } from '../src/utils/shared-constructs'; diff --git a/packages/nx-plugin/bin/aws-nx-mcp.ts b/packages/nx-plugin/src/bin/aws-nx-mcp.ts similarity index 82% rename from packages/nx-plugin/bin/aws-nx-mcp.ts rename to packages/nx-plugin/src/bin/aws-nx-mcp.ts index d15a25893..0423afe60 100644 --- a/packages/nx-plugin/bin/aws-nx-mcp.ts +++ b/packages/nx-plugin/src/bin/aws-nx-mcp.ts @@ -3,7 +3,7 @@ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 */ -import { startMcpServer } from '../src/mcp-server'; +import { startMcpServer } from '../mcp-server'; void (async () => { try { diff --git a/packages/nx-plugin/src/sdk/agentcore-gateway.ts b/packages/nx-plugin/src/sdk/agentcore-gateway.ts new file mode 100644 index 000000000..743e9425f --- /dev/null +++ b/packages/nx-plugin/src/sdk/agentcore-gateway.ts @@ -0,0 +1,8 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +// AgentCore Gateway Generator +export { agentcoreGatewayGenerator } from '../agentcore-gateway/generator'; +export type { AgentcoreGatewayGeneratorSchema } from '../agentcore-gateway/schema'; diff --git a/packages/nx-plugin/src/sdk/connection.ts b/packages/nx-plugin/src/sdk/connection.ts new file mode 100644 index 000000000..0f9aaf862 --- /dev/null +++ b/packages/nx-plugin/src/sdk/connection.ts @@ -0,0 +1,7 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +export { connectionGenerator } from '../connection/generator'; +export type { ConnectionGeneratorSchema } from '../connection/schema'; diff --git a/packages/nx-plugin/sdk/license.ts b/packages/nx-plugin/src/sdk/license.ts similarity index 62% rename from packages/nx-plugin/sdk/license.ts rename to packages/nx-plugin/src/sdk/license.ts index 78261ae1e..4b0724585 100644 --- a/packages/nx-plugin/sdk/license.ts +++ b/packages/nx-plugin/src/sdk/license.ts @@ -2,17 +2,17 @@ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 */ -export { licenseGenerator } from '../src/license/generator'; +export { licenseGenerator } from '../license/generator'; export type { AllowlistEntry, CollectedDependency, DependencyCheckConfig, DependencyCheckException, LicenseCollector, -} from '../src/license/index'; +} from '../license/index'; export { DEFAULT_LICENSE_ALLOWLIST, npmCollector, pythonCollector, -} from '../src/license/index'; -export type { LicenseGeneratorSchema } from '../src/license/schema'; +} from '../license/index'; +export type { LicenseGeneratorSchema } from '../license/schema'; diff --git a/packages/nx-plugin/src/sdk/open-api.ts b/packages/nx-plugin/src/sdk/open-api.ts new file mode 100644 index 000000000..cc12b20b5 --- /dev/null +++ b/packages/nx-plugin/src/sdk/open-api.ts @@ -0,0 +1,16 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +export { + openApiTsClientGenerator, + buildOpenApiCodeGenerationData, +} from '../open-api/ts-client/generator'; +export type { OpenApiTsClientGeneratorSchema } from '../open-api/ts-client/schema'; + +export { openApiTsHooksGenerator } from '../open-api/ts-hooks/generator'; +export type { OpenApiTsHooksGeneratorSchema } from '../open-api/ts-hooks/schema'; + +export { openApiTsMetadataGenerator } from '../open-api/ts-metadata/generator'; +export type { OpenApiTsMetadataGeneratorSchema } from '../open-api/ts-metadata/schema'; diff --git a/packages/nx-plugin/src/sdk/py.ts b/packages/nx-plugin/src/sdk/py.ts new file mode 100644 index 000000000..cbce1afdd --- /dev/null +++ b/packages/nx-plugin/src/sdk/py.ts @@ -0,0 +1,18 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +export { pyAgentGenerator } from '../py/agent/generator'; +export type { PyAgentGeneratorSchema } from '../py/agent/schema'; + +export { pyApiGenerator } from '../py/api/generator'; +export type { PyApiGeneratorSchema } from '../py/api/schema'; + +export { pyLambdaFunctionGenerator } from '../py/lambda-function/generator'; +export type { PyLambdaFunctionGeneratorSchema } from '../py/lambda-function/schema'; + +export { pyMcpServerGenerator } from '../py/mcp-server/generator'; +export type { PyMcpServerGeneratorSchema } from '../py/mcp-server/schema'; +export { pyProjectGenerator } from '../py/project/generator'; +export type { PyProjectGeneratorSchema } from '../py/project/schema'; diff --git a/packages/nx-plugin/src/sdk/terraform.ts b/packages/nx-plugin/src/sdk/terraform.ts new file mode 100644 index 000000000..2f4a13f8d --- /dev/null +++ b/packages/nx-plugin/src/sdk/terraform.ts @@ -0,0 +1,8 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +// Terraform Project Generator +export { terraformProjectGenerator } from '../terraform/project/generator'; +export type { TerraformProjectGeneratorSchema } from '../terraform/project/schema'; diff --git a/packages/nx-plugin/src/sdk/ts.ts b/packages/nx-plugin/src/sdk/ts.ts new file mode 100644 index 000000000..a3415f0fd --- /dev/null +++ b/packages/nx-plugin/src/sdk/ts.ts @@ -0,0 +1,50 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +// TypeScript Infrastructure +export { tsInfraGenerator } from '../infra/app/generator'; +export type { TsInfraGeneratorSchema } from '../infra/app/schema'; +// TypeScript Agent Generator +export { tsAgentGenerator } from '../ts/agent/generator'; +export type { TsAgentGeneratorSchema } from '../ts/agent/schema'; +// TypeScript API +export { tsApiGenerator } from '../ts/api/generator'; +export type { TsApiGeneratorSchema } from '../ts/api/schema'; +// Documentation Site Generator +export { tsDocsGenerator } from '../ts/docs/generator'; +export type { TsDocsGeneratorSchema } from '../ts/docs/schema'; +// DynamoDB Generator +export { tsDynamoDBGenerator } from '../ts/dynamodb/generator'; +export type { TsDynamoDBGeneratorSchema } from '../ts/dynamodb/schema'; +// TypeScript Lambda Function +export { tsLambdaFunctionGenerator } from '../ts/lambda-function/generator'; +export type { TsLambdaFunctionGeneratorSchema } from '../ts/lambda-function/schema'; +// TypeScript Project Generator +export { tsProjectGenerator } from '../ts/lib/generator'; +export type { TsProjectGeneratorSchema } from '../ts/lib/schema'; +// TypeScript MCP Server Generator +export { tsMcpServerGenerator } from '../ts/mcp-server/generator'; +export type { TsMcpServerGeneratorSchema } from '../ts/mcp-server/schema'; +// TypeScript Nx Generator Generator +export { tsNxGeneratorGenerator } from '../ts/nx-generator/generator'; +export type { TsNxGeneratorGeneratorSchema } from '../ts/nx-generator/schema'; +// TypeScript Nx Plugin Generator +export { tsNxPluginGenerator } from '../ts/nx-plugin/generator'; +export type { TsNxPluginGeneratorSchema } from '../ts/nx-plugin/schema'; +// Relational Database Generator +export { tsRdbGenerator } from '../ts/rdb/generator'; +export type { TsRdbGeneratorSchema } from '../ts/rdb/schema'; +// Runtime Config +export { runtimeConfigGenerator } from '../ts/react-website/runtime-config/generator'; +export type { RuntimeConfigGeneratorSchema } from '../ts/react-website/runtime-config/schema'; +// TypeScript Website Generator +export { tsWebsiteGenerator } from '../ts/website/app/generator'; +export type { TsWebsiteGeneratorSchema } from '../ts/website/app/schema'; +// TypeScript Website Auth Generator +export { tsWebsiteAuthGenerator } from '../ts/website/auth/generator'; +export type { TsWebsiteAuthGeneratorSchema } from '../ts/website/auth/schema'; + +// Shared Constructs +export { sharedConstructsGenerator } from '../utils/shared-constructs'; diff --git a/packages/nx-plugin/sdk/utils/ast.ts b/packages/nx-plugin/src/sdk/utils/ast.ts similarity index 53% rename from packages/nx-plugin/sdk/utils/ast.ts rename to packages/nx-plugin/src/sdk/utils/ast.ts index 1834b4837..28a644c9e 100644 --- a/packages/nx-plugin/sdk/utils/ast.ts +++ b/packages/nx-plugin/src/sdk/utils/ast.ts @@ -2,5 +2,5 @@ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 */ -export { applyGritQL } from '../../src/utils/ast'; -export { matchGritQL } from '../../src/utils/ast'; +export { applyGritQL } from '../../utils/ast'; +export { matchGritQL } from '../../utils/ast'; diff --git a/packages/nx-plugin/sdk/utils/format.ts b/packages/nx-plugin/src/sdk/utils/format.ts similarity index 65% rename from packages/nx-plugin/sdk/utils/format.ts rename to packages/nx-plugin/src/sdk/utils/format.ts index b9cf5adeb..4d6023dde 100644 --- a/packages/nx-plugin/sdk/utils/format.ts +++ b/packages/nx-plugin/src/sdk/utils/format.ts @@ -3,4 +3,4 @@ * SPDX-License-Identifier: Apache-2.0 */ -export { formatFilesInSubtree } from '../../src/utils/format'; +export { formatFilesInSubtree } from '../../utils/format'; diff --git a/packages/nx-plugin/sdk/utils/test.ts b/packages/nx-plugin/src/sdk/utils/test.ts similarity index 62% rename from packages/nx-plugin/sdk/utils/test.ts rename to packages/nx-plugin/src/sdk/utils/test.ts index a120d4d37..8f3c11c50 100644 --- a/packages/nx-plugin/sdk/utils/test.ts +++ b/packages/nx-plugin/src/sdk/utils/test.ts @@ -3,4 +3,4 @@ * SPDX-License-Identifier: Apache-2.0 */ -export { createTreeUsingTsSolutionSetup } from '../../src/utils/test'; +export { createTreeUsingTsSolutionSetup } from '../../utils/test'; diff --git a/packages/nx-plugin/src/ts/nx-generator/generator.spec.ts b/packages/nx-plugin/src/ts/nx-generator/generator.spec.ts index 194712765..90f25e1a6 100644 --- a/packages/nx-plugin/src/ts/nx-generator/generator.spec.ts +++ b/packages/nx-plugin/src/ts/nx-generator/generator.spec.ts @@ -303,8 +303,8 @@ describe('nx-generator generator', () => { it('should add a ts# generator to the ts sdk', async () => { tree.write( - 'packages/nx-plugin/sdk/ts.ts', - `export { tsProjectGenerator } from '../src/ts/lib/generator';\n`, + 'packages/nx-plugin/src/sdk/ts.ts', + `export { tsProjectGenerator } from '../ts/lib/generator';\n`, ); await tsNxGeneratorGenerator(tree, { @@ -313,21 +313,21 @@ describe('nx-generator generator', () => { description: 'Some description', }); - const sdk = tree.read('packages/nx-plugin/sdk/ts.ts', 'utf-8'); + const sdk = tree.read('packages/nx-plugin/src/sdk/ts.ts', 'utf-8'); expect(sdk).toContain( - `export { tsCoolThingGenerator } from '../src/ts-cool-thing/generator';`, + `export { tsCoolThingGenerator } from '../ts-cool-thing/generator';`, ); expect(sdk).toContain( - `export type { TsCoolThingGeneratorSchema } from '../src/ts-cool-thing/schema';`, + `export type { TsCoolThingGeneratorSchema } from '../ts-cool-thing/schema';`, ); // Existing exports preserved expect(sdk).toContain( - `export { tsProjectGenerator } from '../src/ts/lib/generator';`, + `export { tsProjectGenerator } from '../ts/lib/generator';`, ); }); it('should add a py# generator to the py sdk', async () => { - tree.write('packages/nx-plugin/sdk/py.ts', ''); + tree.write('packages/nx-plugin/src/sdk/py.ts', ''); await tsNxGeneratorGenerator(tree, { project: NxPluginForAwsProjectJson.name, @@ -335,17 +335,17 @@ describe('nx-generator generator', () => { description: 'Some description', }); - const sdk = tree.read('packages/nx-plugin/sdk/py.ts', 'utf-8'); + const sdk = tree.read('packages/nx-plugin/src/sdk/py.ts', 'utf-8'); expect(sdk).toContain( - `export { pyCoolThingGenerator } from '../src/py-cool-thing/generator';`, + `export { pyCoolThingGenerator } from '../py-cool-thing/generator';`, ); expect(sdk).toContain( - `export type { PyCoolThingGeneratorSchema } from '../src/py-cool-thing/schema';`, + `export type { PyCoolThingGeneratorSchema } from '../py-cool-thing/schema';`, ); }); it('should add a ts# generator to the ts sdk in a nested directory', async () => { - tree.write('packages/nx-plugin/sdk/ts.ts', ''); + tree.write('packages/nx-plugin/src/sdk/ts.ts', ''); await tsNxGeneratorGenerator(tree, { project: NxPluginForAwsProjectJson.name, @@ -354,17 +354,17 @@ describe('nx-generator generator', () => { description: 'Some description', }); - const sdk = tree.read('packages/nx-plugin/sdk/ts.ts', 'utf-8'); + const sdk = tree.read('packages/nx-plugin/src/sdk/ts.ts', 'utf-8'); expect(sdk).toContain( - `export { tsCoolThingGenerator } from '../src/nested/dir/generator';`, + `export { tsCoolThingGenerator } from '../nested/dir/generator';`, ); expect(sdk).toContain( - `export type { TsCoolThingGeneratorSchema } from '../src/nested/dir/schema';`, + `export type { TsCoolThingGeneratorSchema } from '../nested/dir/schema';`, ); }); it('should not duplicate the sdk export on a same-name re-run', async () => { - tree.write('packages/nx-plugin/sdk/ts.ts', ''); + tree.write('packages/nx-plugin/src/sdk/ts.ts', ''); const options = { project: NxPluginForAwsProjectJson.name, @@ -374,15 +374,15 @@ describe('nx-generator generator', () => { await tsNxGeneratorGenerator(tree, options); await tsNxGeneratorGenerator(tree, options); - const sdk = tree.read('packages/nx-plugin/sdk/ts.ts', 'utf-8'); + const sdk = tree.read('packages/nx-plugin/src/sdk/ts.ts', 'utf-8'); const occurrences = - sdk.split(`from '../src/ts-cool-thing/generator';`).length - 1; + sdk.split(`from '../ts-cool-thing/generator';`).length - 1; expect(occurrences).toBe(1); }); it('should not add an sdk export for generators without a known prefix', async () => { - tree.write('packages/nx-plugin/sdk/ts.ts', ''); - tree.write('packages/nx-plugin/sdk/py.ts', ''); + tree.write('packages/nx-plugin/src/sdk/ts.ts', ''); + tree.write('packages/nx-plugin/src/sdk/py.ts', ''); await tsNxGeneratorGenerator(tree, { project: NxPluginForAwsProjectJson.name, @@ -390,8 +390,8 @@ describe('nx-generator generator', () => { description: 'Some description', }); - expect(tree.read('packages/nx-plugin/sdk/ts.ts', 'utf-8')).toBe(''); - expect(tree.read('packages/nx-plugin/sdk/py.ts', 'utf-8')).toBe(''); + expect(tree.read('packages/nx-plugin/src/sdk/ts.ts', 'utf-8')).toBe(''); + expect(tree.read('packages/nx-plugin/src/sdk/py.ts', 'utf-8')).toBe(''); }); it('should throw if given a project that is not @aws/nx-plugin', async () => { diff --git a/packages/nx-plugin/src/ts/nx-generator/generator.ts b/packages/nx-plugin/src/ts/nx-generator/generator.ts index 5ea8bfe88..3f9dd5665 100644 --- a/packages/nx-plugin/src/ts/nx-generator/generator.ts +++ b/packages/nx-plugin/src/ts/nx-generator/generator.ts @@ -224,12 +224,13 @@ const addSdkExport = ( const sdkPath = joinPathFragments( pluginRoot, + 'src', 'sdk', `${SDK_EXPORT_PREFIXES[prefix]}.ts`, ); const generatorExport = `${options.nameCamelCase}Generator`; const schemaExport = `${options.namePascalCase}GeneratorSchema`; - const moduleBase = `../src/${generatorSubDir}`; + const moduleBase = `../${generatorSubDir}`; const contents = tree.exists(sdkPath) ? tree.read(sdkPath).toString() : ''; // Idempotent: skip if this generator is already exported diff --git a/packages/nx-plugin/src/utils/config/utils.ts b/packages/nx-plugin/src/utils/config/utils.ts index f2f87f0b7..f1c06dc1a 100644 --- a/packages/nx-plugin/src/utils/config/utils.ts +++ b/packages/nx-plugin/src/utils/config/utils.ts @@ -21,7 +21,6 @@ const AWS_NX_PLUGIN_JITI_ALIASES = { import.meta.dirname, '..', '..', - '..', 'sdk', 'license', ), diff --git a/packages/nx-plugin/tsconfig.lib.json b/packages/nx-plugin/tsconfig.lib.json index a9803692d..2a65294f6 100644 --- a/packages/nx-plugin/tsconfig.lib.json +++ b/packages/nx-plugin/tsconfig.lib.json @@ -6,7 +6,7 @@ "verbatimModuleSyntax": true, "types": ["node"] }, - "include": ["src/**/*.ts", "bin/**/*.ts", "sdk/**/*.ts"], + "include": ["src/**/*.ts"], "exclude": [ "src/**/*.spec.ts", "src/**/*.test.ts", From 334edeaee541df80504fb1e01022c7191d4ee0ab Mon Sep 17 00:00:00 2001 From: nx-plugin-for-aws Date: Mon, 29 Jun 2026 06:58:34 +0000 Subject: [PATCH 5/5] test(nx-plugin): cover a vended generator importing from the @aws/nx-plugin SDK Add an e2e case that overwrites a generated generator to import `tsProjectGenerator` from `@aws/nx-plugin/sdk/ts` and delegate to it, then compiles the plugin (tsc/nodenext against the installed SDK types) and runs the generator (Nx native strip-types loads it as ESM, it imports the published SDK's ESM generator and scaffolds a project). Regresses if SDK ESM interop or the vended generator's ESM shape breaks. --- e2e/src/smoke-tests/nx-plugin.spec.ts | 59 ++++++++++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/e2e/src/smoke-tests/nx-plugin.spec.ts b/e2e/src/smoke-tests/nx-plugin.spec.ts index 88d6d99eb..cc60d122e 100644 --- a/e2e/src/smoke-tests/nx-plugin.spec.ts +++ b/e2e/src/smoke-tests/nx-plugin.spec.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { existsSync, rmSync } from 'node:fs'; +import { existsSync, rmSync, writeFileSync } from 'node:fs'; import { join } from 'node:path'; import { ensureDirSync } from 'fs-extra'; import { beforeAll, afterAll, describe, expect, it } from 'vitest'; @@ -70,4 +70,61 @@ describe('smoke test - nx-plugin', () => { }, 15 * 60 * 1000, ); + + it( + 'should compile and run a generator that imports from the @aws/nx-plugin SDK', + async () => { + const opts = { cwd: projectRoot, env: { NX_DAEMON: 'false' } }; + + // Add a second generator to the plugin (the plugin already depends on + // @aws/nx-plugin, added by ts#nx-plugin). + await runCLI( + `generate @aws/nx-plugin:ts#nx-generator --project=@nx-plugin-test/plugin --name=sdk-consumer --no-interactive`, + opts, + ); + + // Replace its implementation so it imports a generator from the SDK and + // delegates to it. Exercises a vended ESM generator depending on the + // published @aws/nx-plugin SDK (ESM interop + native strip-types). + const generatorPath = join( + projectRoot, + 'tools/plugin/src/sdk-consumer/generator.ts', + ); + writeFileSync( + generatorPath, + [ + `import { type Tree } from '@nx/devkit';`, + `import { tsProjectGenerator } from '@aws/nx-plugin/sdk/ts';`, + `import type { SdkConsumerGeneratorSchema } from './schema.js';`, + ``, + `export const sdkConsumerGenerator = async (`, + ` tree: Tree,`, + ` options: SdkConsumerGeneratorSchema,`, + `) => {`, + ` await tsProjectGenerator(tree, { name: 'sdk-consumed-lib' });`, + `};`, + ``, + `export default sdkConsumerGenerator;`, + ``, + ].join('\n'), + 'utf-8', + ); + + // It must type-check / compile (plugin `package` target uses tsc under + // moduleResolution: nodenext against the installed @aws/nx-plugin types). + await runCLI(`run @nx-plugin-test/plugin:compile`, opts); + + // And it must run: Nx loads it via native strip-types, it imports the + // SDK generator and delegates to it, which scaffolds a TS project. + await runCLI( + `generate @nx-plugin-test/plugin:sdk-consumer --exampleOption=test --no-interactive`, + opts, + ); + + expect( + existsSync(join(projectRoot, 'sdk-consumed-lib/src/index.ts')), + ).toBe(true); + }, + 15 * 60 * 1000, + ); });