@aws/nx-plugin 1.0.0-rc.22 → 1.0.0-rc.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE-THIRD-PARTY +2088 -971
- package/package.json +25 -10
- package/src/agentcore-gateway/attach-upstream.d.ts +7 -7
- package/src/agentcore-gateway/attach-upstream.js +19 -22
- package/src/agentcore-gateway/attach-upstream.js.map +1 -1
- package/src/agentcore-gateway/gateway-connection/generator.d.ts +3 -3
- package/src/agentcore-gateway/gateway-connection/generator.js +42 -45
- package/src/agentcore-gateway/gateway-connection/generator.js.map +1 -1
- package/src/agentcore-gateway/gateway-connection/schema.d.js +6 -0
- package/src/agentcore-gateway/gateway-connection/schema.d.js.map +1 -0
- package/src/agentcore-gateway/generator.js +89 -72
- package/src/agentcore-gateway/generator.js.map +1 -1
- package/src/agentcore-gateway/mcp-connection/generator.d.ts +2 -2
- package/src/agentcore-gateway/mcp-connection/generator.js +24 -30
- package/src/agentcore-gateway/mcp-connection/generator.js.map +1 -1
- package/src/agentcore-gateway/mcp-connection/schema.d.js +6 -0
- package/src/agentcore-gateway/mcp-connection/schema.d.js.map +1 -0
- package/src/agentcore-gateway/schema.d.js +6 -0
- package/src/agentcore-gateway/schema.d.js.map +1 -0
- package/src/bin/aws-nx-mcp.js +14 -0
- package/src/bin/aws-nx-mcp.js.map +1 -0
- package/src/connection/{agent-serve-local.d.ts → agent-local-dev.d.ts} +5 -5
- package/src/connection/agent-local-dev.js +42 -0
- package/src/connection/agent-local-dev.js.map +1 -0
- package/src/connection/agent-runtime-config.js +9 -14
- package/src/connection/agent-runtime-config.js.map +1 -1
- package/src/connection/generator.js +262 -207
- package/src/connection/generator.js.map +1 -1
- package/src/connection/{serve-local.d.ts → local-dev.d.ts} +3 -3
- package/src/connection/local-dev.js +37 -0
- package/src/connection/local-dev.js.map +1 -0
- package/src/connection/schema.d.js +6 -0
- package/src/connection/schema.d.js.map +1 -0
- package/src/index.js +2 -5
- package/src/index.js.map +1 -1
- package/src/infra/app/__snapshots__/generator.spec.ts.snap +4 -26
- package/src/infra/app/generator.js +133 -123
- package/src/infra/app/generator.js.map +1 -1
- package/src/infra/app/schema.d.js +6 -0
- package/src/infra/app/schema.d.js.map +1 -0
- package/src/license/config-types.js +5 -3
- package/src/license/config-types.js.map +1 -1
- package/src/license/config.d.ts +1 -1
- package/src/license/config.js +267 -242
- package/src/license/config.js.map +1 -1
- package/src/license/dependency-check/check.js +51 -46
- package/src/license/dependency-check/check.js.map +1 -1
- package/src/license/dependency-check/collectors/collector.js +41 -71
- package/src/license/dependency-check/collectors/collector.js.map +1 -1
- package/src/license/dependency-check/collectors/npm-collector.js +34 -41
- package/src/license/dependency-check/collectors/npm-collector.js.map +1 -1
- package/src/license/dependency-check/collectors/python-collector.js +55 -62
- package/src/license/dependency-check/collectors/python-collector.js.map +1 -1
- package/src/license/dependency-check/evaluator.js +40 -68
- package/src/license/dependency-check/evaluator.js.map +1 -1
- package/src/license/dependency-check/executor.js +30 -22
- package/src/license/dependency-check/executor.js.map +1 -1
- package/src/license/dependency-check/pre-approved.js +949 -336
- package/src/license/dependency-check/pre-approved.js.map +1 -1
- package/src/license/dependency-check/types.js +2 -3
- package/src/license/dependency-check/types.js.map +1 -1
- package/src/license/generator.js +55 -60
- package/src/license/generator.js.map +1 -1
- package/src/license/index.js +3 -9
- package/src/license/index.js.map +1 -1
- package/src/license/known-exceptions.js +14 -13
- package/src/license/known-exceptions.js.map +1 -1
- package/src/license/schema.d.js +6 -0
- package/src/license/schema.d.js.map +1 -0
- package/src/license/sync/generator.js +94 -119
- package/src/license/sync/generator.js.map +1 -1
- package/src/license/sync/project-file-sync.js +28 -35
- package/src/license/sync/project-file-sync.js.map +1 -1
- package/src/mcp-server/generator-info.js +130 -160
- package/src/mcp-server/generator-info.js.map +1 -1
- package/src/mcp-server/guide-pipeline.js +184 -206
- package/src/mcp-server/guide-pipeline.js.map +1 -1
- package/src/mcp-server/guide-render.js +10 -25
- package/src/mcp-server/guide-render.js.map +1 -1
- package/src/mcp-server/index.js +6 -10
- package/src/mcp-server/index.js.map +1 -1
- package/src/mcp-server/mdx-ast.js +39 -57
- package/src/mcp-server/mdx-ast.js.map +1 -1
- package/src/mcp-server/option-filter.js +33 -47
- package/src/mcp-server/option-filter.js.map +1 -1
- package/src/mcp-server/schema-registry.js +27 -40
- package/src/mcp-server/schema-registry.js.map +1 -1
- package/src/mcp-server/schema.js +9 -7
- package/src/mcp-server/schema.js.map +1 -1
- package/src/mcp-server/server.js +20 -24
- package/src/mcp-server/server.js.map +1 -1
- package/src/mcp-server/tools/create-workspace-command.js +23 -24
- package/src/mcp-server/tools/create-workspace-command.js.map +1 -1
- package/src/mcp-server/tools/general-guidance.js +28 -25
- package/src/mcp-server/tools/general-guidance.js.map +1 -1
- package/src/mcp-server/tools/generator-guide.js +29 -37
- package/src/mcp-server/tools/generator-guide.js.map +1 -1
- package/src/mcp-server/tools/list-generators.js +19 -25
- package/src/mcp-server/tools/list-generators.js.map +1 -1
- package/src/open-api/ts-client/generator.js +16 -26
- package/src/open-api/ts-client/generator.js.map +1 -1
- package/src/open-api/ts-client/schema.d.js +6 -0
- package/src/open-api/ts-client/schema.d.js.map +1 -0
- package/src/open-api/ts-hooks/generator.js +13 -21
- package/src/open-api/ts-hooks/generator.js.map +1 -1
- package/src/open-api/ts-hooks/schema.d.js +6 -0
- package/src/open-api/ts-hooks/schema.d.js.map +1 -0
- package/src/open-api/ts-metadata/generator.js +12 -20
- package/src/open-api/ts-metadata/generator.js.map +1 -1
- package/src/open-api/ts-metadata/schema.d.js +6 -0
- package/src/open-api/ts-metadata/schema.d.js.map +1 -0
- package/src/open-api/utils/codegen-data/languages.js +42 -60
- package/src/open-api/utils/codegen-data/languages.js.map +1 -1
- package/src/open-api/utils/codegen-data/types.js +31 -30
- package/src/open-api/utils/codegen-data/types.js.map +1 -1
- package/src/open-api/utils/codegen-data.js +253 -269
- package/src/open-api/utils/codegen-data.js.map +1 -1
- package/src/open-api/utils/normalise.js +242 -241
- package/src/open-api/utils/normalise.js.map +1 -1
- package/src/open-api/utils/parse.js +8 -14
- package/src/open-api/utils/parse.js.map +1 -1
- package/src/open-api/utils/refs.js +12 -22
- package/src/open-api/utils/refs.js.map +1 -1
- package/src/open-api/utils/types.js +5 -2
- package/src/open-api/utils/types.js.map +1 -1
- package/src/preset/__snapshots__/generator.spec.ts.snap +31 -6
- package/src/preset/generator.d.ts +1 -1
- package/src/preset/generator.js +130 -112
- package/src/preset/generator.js.map +1 -1
- package/src/preset/schema.d.js +6 -0
- package/src/preset/schema.d.js.map +1 -0
- package/src/preset/schema.d.ts +0 -1
- package/src/preset/schema.json +0 -5
- package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +304 -0
- package/src/py/agent/__snapshots__/{generator.spec.ts.snap → generator.frameworks.spec.ts.snap} +18 -845
- package/src/py/agent/__snapshots__/generator.protocols.spec.ts.snap +535 -0
- package/src/py/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +1 -2
- package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client_strands.py.template +1 -1
- package/src/py/agent/a2a-connection/files/langchain/agent-connection/app/__targetAgentSnakeCase___client_langchain.py.template +1 -1
- package/src/py/agent/a2a-connection/generator.js +70 -75
- package/src/py/agent/a2a-connection/generator.js.map +1 -1
- package/src/py/agent/a2a-connection/schema.d.js +8 -0
- package/src/py/agent/a2a-connection/schema.d.js.map +1 -0
- package/src/py/agent/files/ag-ui-langchain/main.py.template +10 -0
- package/src/py/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +6 -8
- package/src/py/agent/gateway-connection/files/agent-connection/app/__gatewaySnakeCase___client_strands.py.template +3 -3
- package/src/py/agent/gateway-connection/files/langchain/agent-connection/app/__gatewaySnakeCase___client_langchain.py.template +3 -3
- package/src/py/agent/gateway-connection/generator.js +61 -58
- package/src/py/agent/gateway-connection/generator.js.map +1 -1
- package/src/py/agent/gateway-connection/schema.d.js +6 -0
- package/src/py/agent/gateway-connection/schema.d.js.map +1 -0
- package/src/py/agent/generator.js +227 -194
- package/src/py/agent/generator.js.map +1 -1
- package/src/py/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +5 -12
- package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client_strands.py.template +1 -1
- package/src/py/agent/mcp-connection/files/langchain/agent-connection/app/__mcpServerSnakeCase___client_langchain.py.template +1 -1
- package/src/py/agent/mcp-connection/generator.js +53 -52
- package/src/py/agent/mcp-connection/generator.js.map +1 -1
- package/src/py/agent/mcp-connection/schema.d.js +8 -0
- package/src/py/agent/mcp-connection/schema.d.js.map +1 -0
- package/src/py/agent/react-connection/__snapshots__/generator.spec.ts.snap +3 -2
- package/src/py/agent/react-connection/generator.js +51 -58
- package/src/py/agent/react-connection/generator.js.map +1 -1
- package/src/py/agent/react-connection/{serve-local.d.ts → local-dev.d.ts} +4 -4
- package/src/py/agent/react-connection/local-dev.js +36 -0
- package/src/py/agent/react-connection/local-dev.js.map +1 -0
- package/src/py/agent/react-connection/schema.d.js +8 -0
- package/src/py/agent/react-connection/schema.d.js.map +1 -0
- package/src/py/agent/schema.d.js +6 -0
- package/src/py/agent/schema.d.js.map +1 -0
- package/src/py/api/generator.js +12 -12
- package/src/py/api/generator.js.map +1 -1
- package/src/py/api/schema.d.js +6 -0
- package/src/py/api/schema.d.js.map +1 -0
- package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +68 -28
- package/src/py/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +5 -5
- package/src/py/dynamodb/agent-connection/generator.js +27 -29
- package/src/py/dynamodb/agent-connection/generator.js.map +1 -1
- package/src/py/dynamodb/agent-connection/schema.d.js +8 -0
- package/src/py/dynamodb/agent-connection/schema.d.js.map +1 -0
- package/src/py/dynamodb/fast-api-connection/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/py/dynamodb/fast-api-connection/generator.js +26 -28
- package/src/py/dynamodb/fast-api-connection/generator.js.map +1 -1
- package/src/py/dynamodb/fast-api-connection/schema.d.js +8 -0
- package/src/py/dynamodb/fast-api-connection/schema.d.js.map +1 -0
- package/src/py/dynamodb/files/__name__/client.py.template +5 -5
- package/src/py/dynamodb/files/__name__/entities/base.py.template +2 -2
- package/src/py/dynamodb/files/config.json.template +1 -1
- package/src/py/dynamodb/generator.js +63 -62
- package/src/py/dynamodb/generator.js.map +1 -1
- package/src/py/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +5 -5
- package/src/py/dynamodb/mcp-server-connection/generator.js +27 -29
- package/src/py/dynamodb/mcp-server-connection/generator.js.map +1 -1
- package/src/py/dynamodb/mcp-server-connection/schema.d.js +8 -0
- package/src/py/dynamodb/mcp-server-connection/schema.d.js.map +1 -0
- package/src/py/dynamodb/schema.d.js +6 -0
- package/src/py/dynamodb/schema.d.js.map +1 -0
- package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +45 -4632
- package/src/py/fast-api/__snapshots__/generator.terraform.spec.ts.snap +4833 -0
- package/src/py/fast-api/generator.js +79 -85
- package/src/py/fast-api/generator.js.map +1 -1
- package/src/py/fast-api/react/__snapshots__/generator.spec.ts.snap +3 -2
- package/src/py/fast-api/react/generator.js +22 -24
- package/src/py/fast-api/react/generator.js.map +1 -1
- package/src/py/fast-api/react/open-api.js +28 -29
- package/src/py/fast-api/react/open-api.js.map +1 -1
- package/src/py/fast-api/react/schema.d.js +6 -0
- package/src/py/fast-api/react/schema.d.js.map +1 -0
- package/src/py/fast-api/schema.d.js +6 -0
- package/src/py/fast-api/schema.d.js.map +1 -0
- package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +4 -4
- package/src/py/lambda-function/generator.js +57 -58
- package/src/py/lambda-function/generator.js.map +1 -1
- package/src/py/lambda-function/schema.d.js +6 -0
- package/src/py/lambda-function/schema.d.js.map +1 -0
- package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +5 -5
- package/src/py/mcp-server/generator.js +149 -131
- package/src/py/mcp-server/generator.js.map +1 -1
- package/src/py/mcp-server/schema.d.js +6 -0
- package/src/py/mcp-server/schema.d.js.map +1 -0
- package/src/py/project/generator.d.ts +14 -1
- package/src/py/project/generator.js +137 -88
- package/src/py/project/generator.js.map +1 -1
- package/src/py/project/schema.d.js +6 -0
- package/src/py/project/schema.d.js.map +1 -0
- package/src/sdk/agentcore-gateway.d.ts +6 -0
- package/src/sdk/agentcore-gateway.js +7 -0
- package/src/sdk/agentcore-gateway.js.map +1 -0
- package/src/sdk/connection.d.ts +6 -0
- package/src/sdk/connection.js +6 -0
- package/src/sdk/connection.js.map +1 -0
- package/{sdk → src/sdk}/license.d.ts +4 -4
- package/src/sdk/license.js +7 -0
- package/src/sdk/license.js.map +1 -0
- package/src/sdk/open-api.d.ts +10 -0
- package/src/sdk/open-api.js +8 -0
- package/src/sdk/open-api.js.map +1 -0
- package/src/sdk/py.d.ts +14 -0
- package/src/sdk/py.js +10 -0
- package/src/sdk/py.js.map +1 -0
- package/src/sdk/terraform.d.ts +6 -0
- package/src/sdk/terraform.js +7 -0
- package/src/sdk/terraform.js.map +1 -0
- package/src/sdk/ts.d.ts +33 -0
- package/src/sdk/ts.js +35 -0
- package/src/sdk/ts.js.map +1 -0
- package/{sdk → src/sdk}/utils/ast.d.ts +2 -2
- package/src/sdk/utils/ast.js +7 -0
- package/src/sdk/utils/ast.js.map +1 -0
- package/{sdk → src/sdk}/utils/format.d.ts +1 -1
- package/src/sdk/utils/format.js +6 -0
- package/src/sdk/utils/format.js.map +1 -0
- package/{sdk → src/sdk}/utils/test.d.ts +1 -1
- package/src/sdk/utils/test.js +6 -0
- package/src/sdk/utils/test.js.map +1 -0
- package/src/smithy/project/__snapshots__/generator.spec.ts.snap +2 -8
- package/src/smithy/project/files/build.Dockerfile.template +1 -4
- package/src/smithy/project/generator.js +44 -42
- package/src/smithy/project/generator.js.map +1 -1
- package/src/smithy/project/schema.d.js +6 -0
- package/src/smithy/project/schema.d.js.map +1 -0
- package/src/smithy/react-connection/generator.js +35 -46
- package/src/smithy/react-connection/generator.js.map +1 -1
- package/src/smithy/react-connection/schema.d.js +6 -0
- package/src/smithy/react-connection/schema.d.js.map +1 -0
- package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +395 -72
- package/src/smithy/ts/api/generator.js +121 -111
- package/src/smithy/ts/api/generator.js.map +1 -1
- package/src/smithy/ts/api/schema.d.js +6 -0
- package/src/smithy/ts/api/schema.d.js.map +1 -0
- package/src/terraform/project/files/application/src/providers.tf.template +1 -1
- package/src/terraform/project/generator.js +141 -103
- package/src/terraform/project/generator.js.map +1 -1
- package/src/terraform/project/schema.d.js +9 -0
- package/src/terraform/project/schema.d.js.map +1 -0
- package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +336 -92
- package/src/trpc/backend/generator.js +93 -86
- package/src/trpc/backend/generator.js.map +1 -1
- package/src/trpc/backend/schema.d.js +6 -0
- package/src/trpc/backend/schema.d.js.map +1 -0
- package/src/trpc/react/__snapshots__/generator.spec.ts.snap +1 -1
- package/src/trpc/react/generator.js +59 -58
- package/src/trpc/react/generator.js.map +1 -1
- package/src/trpc/react/schema.d.js +6 -0
- package/src/trpc/react/schema.d.js.map +1 -0
- package/src/ts/agent/__snapshots__/generator.spec.ts.snap +11 -11
- package/src/ts/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +1 -1
- package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client-strands.ts.template +1 -1
- package/src/ts/agent/a2a-connection/generator.js +58 -54
- package/src/ts/agent/a2a-connection/generator.js.map +1 -1
- package/src/ts/agent/a2a-connection/schema.d.js +8 -0
- package/src/ts/agent/a2a-connection/schema.d.js.map +1 -0
- package/src/ts/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +5 -5
- package/src/ts/agent/gateway-connection/files/agent-connection/app/__gatewayKebabCase__-client-strands.ts.template +3 -3
- package/src/ts/agent/gateway-connection/generator.js +57 -52
- package/src/ts/agent/gateway-connection/generator.js.map +1 -1
- package/src/ts/agent/gateway-connection/schema.d.js +6 -0
- package/src/ts/agent/gateway-connection/schema.d.js.map +1 -0
- package/src/ts/agent/generator.js +165 -136
- package/src/ts/agent/generator.js.map +1 -1
- package/src/ts/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +1 -1
- package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client-strands.ts.template +1 -1
- package/src/ts/agent/mcp-connection/generator.js +48 -46
- package/src/ts/agent/mcp-connection/generator.js.map +1 -1
- package/src/ts/agent/mcp-connection/schema.d.js +8 -0
- package/src/ts/agent/mcp-connection/schema.d.js.map +1 -0
- package/src/ts/agent/react-connection/generator.js +79 -79
- package/src/ts/agent/react-connection/generator.js.map +1 -1
- package/src/ts/agent/react-connection/{serve-local.d.ts → local-dev.d.ts} +2 -2
- package/src/ts/agent/react-connection/local-dev.js +17 -0
- package/src/ts/agent/react-connection/local-dev.js.map +1 -0
- package/src/ts/agent/react-connection/schema.d.js +8 -0
- package/src/ts/agent/react-connection/schema.d.js.map +1 -0
- package/src/ts/agent/schema.d.js +6 -0
- package/src/ts/agent/schema.d.js.map +1 -0
- package/src/ts/api/generator.js +16 -18
- package/src/ts/api/generator.js.map +1 -1
- package/src/ts/api/schema.d.js +6 -0
- package/src/ts/api/schema.d.js.map +1 -0
- package/src/ts/astro-docs/__snapshots__/generator.spec.ts.snap +8 -8
- package/src/ts/astro-docs/generator.js +59 -48
- package/src/ts/astro-docs/generator.js.map +1 -1
- package/src/ts/astro-docs/schema.d.js +6 -0
- package/src/ts/astro-docs/schema.d.js.map +1 -0
- package/src/ts/docs/generator.js +10 -10
- package/src/ts/docs/generator.js.map +1 -1
- package/src/ts/docs/schema.d.js +6 -0
- package/src/ts/docs/schema.d.js.map +1 -0
- package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +68 -30
- package/src/ts/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +5 -5
- package/src/ts/dynamodb/agent-connection/generator.js +21 -23
- package/src/ts/dynamodb/agent-connection/generator.js.map +1 -1
- package/src/ts/dynamodb/agent-connection/schema.d.js +8 -0
- package/src/ts/dynamodb/agent-connection/schema.d.js.map +1 -0
- package/src/ts/dynamodb/files/config.json.template +1 -1
- package/src/ts/dynamodb/files/src/client.ts.template +7 -7
- package/src/ts/dynamodb/generator.js +64 -63
- package/src/ts/dynamodb/generator.js.map +1 -1
- package/src/ts/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +5 -5
- package/src/ts/dynamodb/mcp-server-connection/generator.js +21 -23
- package/src/ts/dynamodb/mcp-server-connection/generator.js.map +1 -1
- package/src/ts/dynamodb/mcp-server-connection/schema.d.js +8 -0
- package/src/ts/dynamodb/mcp-server-connection/schema.d.js.map +1 -0
- package/src/ts/dynamodb/schema.d.js +6 -0
- package/src/ts/dynamodb/schema.d.js.map +1 -0
- package/src/ts/dynamodb/smithy-connection/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/ts/dynamodb/smithy-connection/generator.js +20 -22
- package/src/ts/dynamodb/smithy-connection/generator.js.map +1 -1
- package/src/ts/dynamodb/smithy-connection/schema.d.js +8 -0
- package/src/ts/dynamodb/smithy-connection/schema.d.js.map +1 -0
- package/src/ts/dynamodb/trpc-connection/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/ts/dynamodb/trpc-connection/generator.js +20 -22
- package/src/ts/dynamodb/trpc-connection/generator.js.map +1 -1
- package/src/ts/dynamodb/trpc-connection/schema.d.js +8 -0
- package/src/ts/dynamodb/trpc-connection/schema.d.js.map +1 -0
- package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +4 -4
- package/src/ts/lambda-function/generator.js +55 -55
- package/src/ts/lambda-function/generator.js.map +1 -1
- package/src/ts/lambda-function/io.js +83 -52
- package/src/ts/lambda-function/io.js.map +1 -1
- package/src/ts/lambda-function/schema.d.js +6 -0
- package/src/ts/lambda-function/schema.d.js.map +1 -0
- package/src/ts/lib/__snapshots__/generator.spec.ts.snap +23 -36
- package/src/ts/lib/biome.js +37 -37
- package/src/ts/lib/biome.js.map +1 -1
- package/src/ts/lib/generator.js +75 -77
- package/src/ts/lib/generator.js.map +1 -1
- package/src/ts/lib/schema.d.js +6 -0
- package/src/ts/lib/schema.d.js.map +1 -0
- package/src/ts/lib/ts-project-utils.js +65 -70
- package/src/ts/lib/ts-project-utils.js.map +1 -1
- package/src/ts/lib/types.js +5 -2
- package/src/ts/lib/types.js.map +1 -1
- package/src/ts/lib/vitest.js +29 -26
- package/src/ts/lib/vitest.js.map +1 -1
- package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +5 -5
- package/src/ts/mcp-server/generator.js +157 -138
- package/src/ts/mcp-server/generator.js.map +1 -1
- package/src/ts/mcp-server/schema.d.js +6 -0
- package/src/ts/mcp-server/schema.d.js.map +1 -0
- package/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap +14 -9
- package/src/ts/nx-generator/files/local/generator.ts.template +3 -3
- package/src/ts/nx-generator/files/nx-plugin-for-aws/generator/generator.ts.template +4 -4
- package/src/ts/nx-generator/generator.js +84 -83
- package/src/ts/nx-generator/generator.js.map +1 -1
- package/src/ts/nx-generator/schema.d.js +6 -0
- package/src/ts/nx-generator/schema.d.js.map +1 -0
- package/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap +30 -18
- package/src/ts/nx-plugin/files/mcp-server/server.ts.template +5 -5
- package/src/ts/nx-plugin/files/mcp-server/tools/create-workspace-command.ts.template +2 -2
- package/src/ts/nx-plugin/files/mcp-server/tools/general-guidance.ts.template +1 -1
- package/src/ts/nx-plugin/files/mcp-server/tools/generator-guide.ts.template +2 -2
- package/src/ts/nx-plugin/files/mcp-server/tools/list-generators.ts.template +2 -2
- package/src/ts/nx-plugin/files/mcp-server/utils.ts.template +3 -3
- package/src/ts/nx-plugin/generator.js +49 -48
- package/src/ts/nx-plugin/generator.js.map +1 -1
- package/src/ts/nx-plugin/schema.d.js +9 -0
- package/src/ts/nx-plugin/schema.d.js.map +1 -0
- package/src/ts/nx-plugin/utils.js +32 -44
- package/src/ts/nx-plugin/utils.js.map +1 -1
- package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +34 -30
- package/src/ts/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +6 -6
- package/src/ts/rdb/agent-connection/generator.js +38 -39
- package/src/ts/rdb/agent-connection/generator.js.map +1 -1
- package/src/ts/rdb/agent-connection/schema.d.js +8 -0
- package/src/ts/rdb/agent-connection/schema.d.js.map +1 -0
- package/src/ts/rdb/files/config.json.template +1 -1
- package/src/ts/rdb/files/prisma.config.ts.template +2 -2
- package/src/ts/rdb/files/src/prisma.ts.template +7 -7
- package/src/ts/rdb/files/src/utils.ts.template +3 -0
- package/src/ts/rdb/generator.js +130 -117
- package/src/ts/rdb/generator.js.map +1 -1
- package/src/ts/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +6 -6
- package/src/ts/rdb/mcp-server-connection/generator.js +36 -37
- package/src/ts/rdb/mcp-server-connection/generator.js.map +1 -1
- package/src/ts/rdb/mcp-server-connection/schema.d.js +8 -0
- package/src/ts/rdb/mcp-server-connection/schema.d.js.map +1 -0
- package/src/ts/rdb/schema.d.js +6 -0
- package/src/ts/rdb/schema.d.js.map +1 -0
- package/src/ts/rdb/smithy-connection/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/ts/rdb/smithy-connection/generator.js +46 -43
- package/src/ts/rdb/smithy-connection/generator.js.map +1 -1
- package/src/ts/rdb/smithy-connection/schema.d.js +8 -0
- package/src/ts/rdb/smithy-connection/schema.d.js.map +1 -0
- package/src/ts/rdb/trpc-connection/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/ts/rdb/trpc-connection/generator.js +36 -31
- package/src/ts/rdb/trpc-connection/generator.js.map +1 -1
- package/src/ts/rdb/trpc-connection/schema.d.js +8 -0
- package/src/ts/rdb/trpc-connection/schema.d.js.map +1 -0
- package/src/ts/rdb/utils.js +9 -11
- package/src/ts/rdb/utils.js.map +1 -1
- package/src/ts/react-website/agui/generator.js +69 -61
- package/src/ts/react-website/agui/generator.js.map +1 -1
- package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +179 -332
- package/src/ts/react-website/app/generator.js +197 -188
- package/src/ts/react-website/app/generator.js.map +1 -1
- package/src/ts/react-website/app/schema.d.js +6 -0
- package/src/ts/react-website/app/schema.d.js.map +1 -0
- package/src/ts/react-website/app/schema.json +6 -6
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.spec.ts.snap +118 -4
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +27 -7
- package/src/ts/react-website/cognito-auth/files/app/components/CognitoAuth/index.tsx.template +2 -2
- package/src/ts/react-website/cognito-auth/generator.js +60 -60
- package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
- package/src/ts/react-website/cognito-auth/schema.d.js +6 -0
- package/src/ts/react-website/cognito-auth/schema.d.js.map +1 -0
- package/src/ts/react-website/cognito-auth/utils.js +34 -32
- package/src/ts/react-website/cognito-auth/utils.js.map +1 -1
- package/src/ts/react-website/runtime-config/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/ts/react-website/runtime-config/files/app/components/RuntimeConfig/index.tsx.template +2 -2
- package/src/ts/react-website/runtime-config/generator.js +29 -31
- package/src/ts/react-website/runtime-config/generator.js.map +1 -1
- package/src/ts/react-website/runtime-config/schema.d.js +6 -0
- package/src/ts/react-website/runtime-config/schema.d.js.map +1 -0
- package/src/ts/sync/generator.js +60 -59
- package/src/ts/sync/generator.js.map +1 -1
- package/src/ts/website/app/generator.js +10 -10
- package/src/ts/website/app/generator.js.map +1 -1
- package/src/ts/website/app/schema.d.js +6 -0
- package/src/ts/website/app/schema.d.js.map +1 -0
- package/src/ts/website/app/schema.json +6 -6
- package/src/ts/website/auth/generator.js +11 -11
- package/src/ts/website/auth/generator.js.map +1 -1
- package/src/ts/website/auth/schema.d.js +6 -0
- package/src/ts/website/auth/schema.d.js.map +1 -0
- package/src/utils/agent-chat/agent-chat.d.ts +1 -1
- package/src/utils/agent-chat/agent-chat.js +11 -12
- package/src/utils/agent-chat/agent-chat.js.map +1 -1
- package/src/utils/agent-chat/files/a2a/chat.ts.template +1 -1
- package/src/utils/agent-chat/files/ag-ui/chat.ts.template +1 -1
- package/src/utils/agent-chat/files/http-py/chat.ts.template +1 -1
- package/src/utils/agent-chat/files/http-ts/chat.ts.template +1 -1
- package/src/utils/agent-connection/agent-connection.d.ts +9 -3
- package/src/utils/agent-connection/agent-connection.js +133 -147
- package/src/utils/agent-connection/agent-connection.js.map +1 -1
- package/src/utils/agent-connection/files/core-gateway/agentcore-gateway-mcp-transport.ts.template +1 -1
- package/src/utils/agent-connection/files/core-strands/gateway/agentcore-gateway-mcp-client-strands.ts.template +1 -1
- package/src/utils/agent-connection/files/py-core-gateway/agentcore_gateway_mcp_transport.py.template +1 -1
- package/src/utils/agent-connection/files/py-core-langchain/gateway/agentcore_gateway_mcp_client_langchain.py.template +1 -1
- package/src/utils/agent-connection/files/py-core-strands/gateway/agentcore_gateway_mcp_client_strands.py.template +1 -1
- package/src/utils/agent-core-constructs/agent-core-constructs.js +53 -50
- package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
- package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.tf.template +4 -4
- package/src/utils/agent-core-constructs/files/terraform/core/agent-core/runtime.tf.template +5 -5
- package/src/utils/agent-core-constructs/files/terraform/core/agentcore-gateway/gateway.tf.template +2 -2
- package/src/utils/api-constructs/api-constructs.js +30 -31
- package/src/utils/api-constructs/api-constructs.js.map +1 -1
- package/src/utils/api-constructs/files/cdk/core/api/http/http-api.ts.template +14 -6
- package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account/index.js.template +58 -0
- package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account.ts.template +82 -0
- package/src/utils/api-constructs/files/cdk/core/api/rest/rest-api.ts.template +28 -14
- package/src/utils/api-constructs/files/terraform/app/apis/http/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +1 -8
- package/src/utils/api-constructs/files/terraform/app/apis/rest/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +91 -4
- package/src/utils/api-constructs/files/terraform/core/api/http/http-api/http-api.tf.template +1 -1
- package/src/utils/api-constructs/files/terraform/core/api/rest/api-gateway-account/api-gateway-account.tf.template +83 -0
- package/src/utils/api-constructs/files/terraform/core/api/rest/rest-api/rest-api.tf.template +5 -11
- package/src/utils/api-constructs/open-api-metadata.js +22 -22
- package/src/utils/api-constructs/open-api-metadata.js.map +1 -1
- package/src/utils/ast/website.js +17 -19
- package/src/utils/ast/website.js.map +1 -1
- package/src/utils/ast.js +72 -97
- package/src/utils/ast.js.map +1 -1
- package/src/utils/bundle/bundle.js +50 -47
- package/src/utils/bundle/bundle.js.map +1 -1
- package/src/utils/commands.js +47 -26
- package/src/utils/commands.js.map +1 -1
- package/src/utils/config/index.d.ts +2 -2
- package/src/utils/config/index.js +5 -4
- package/src/utils/config/index.js.map +1 -1
- package/src/utils/config/utils.js +48 -58
- package/src/utils/config/utils.js.map +1 -1
- package/src/utils/connection/open-api/react.d.ts +5 -5
- package/src/utils/connection/open-api/react.js +81 -77
- package/src/utils/connection/open-api/react.js.map +1 -1
- package/src/utils/containers.js +22 -23
- package/src/utils/containers.js.map +1 -1
- package/src/utils/dynamodb-constructs/dynamodb-constructs.js +32 -33
- package/src/utils/dynamodb-constructs/dynamodb-constructs.js.map +1 -1
- package/src/utils/dynamodb-constructs/files/terraform/app/dynamodb/__nameKebabCase__/__nameKebabCase__.tf.template +12 -2
- package/src/utils/dynamodb-constructs/files/terraform/core/dynamodb/dynamodb.tf.template +1 -1
- package/src/utils/files/common/scripts/src/dynamodb/create-local-table.ts.template +2 -2
- package/src/utils/files/common/scripts/src/dynamodb/pull-image.ts.template +1 -1
- package/src/utils/files/common/scripts/src/dynamodb/start-container.ts.template +17 -2
- package/src/utils/files/common/scripts/src/rdb/mysql/wait-for-mysql-db.ts.template +32 -0
- package/src/utils/files/common/scripts/src/rdb/postgres/wait-for-postgres-db.ts.template +32 -0
- package/src/utils/files/common/scripts/src/rdb/{pull-image.ts.template → shared/pull-image.ts.template} +1 -1
- package/src/utils/files/common/scripts/src/rdb/{start-container.ts.template → shared/start-container.ts.template} +16 -1
- package/src/utils/files/terraform/src/core/asset-bucket/asset-bucket.tf.template +2 -2
- package/src/utils/files/terraform/src/core/runtime-config/appconfig/appconfig.tf.template +1 -1
- package/src/utils/files/terraform/src/core/runtime-config/appconfig-deployment/appconfig-deployment.tf.template +3 -3
- package/src/utils/files/terraform/src/core/runtime-config/entry/entry.tf.template +1 -1
- package/src/utils/files/terraform/src/core/runtime-config/read/read.tf.template +2 -2
- package/src/utils/files/website/hooks/sigv4/useSigV4.tsx.template +1 -1
- package/src/utils/format.js +153 -99
- package/src/utils/format.js.map +1 -1
- package/src/utils/fs.js +14 -13
- package/src/utils/fs.js.map +1 -1
- package/src/utils/function-constructs/files/terraform/app/lambda-functions/__nameKebabCase__/__nameKebabCase__.tf.template +2 -2
- package/src/utils/function-constructs/function-constructs.js +21 -26
- package/src/utils/function-constructs/function-constructs.js.map +1 -1
- package/src/utils/generators.js +18 -20
- package/src/utils/generators.js.map +1 -1
- package/src/utils/git.js +19 -34
- package/src/utils/git.js.map +1 -1
- package/src/utils/iac-providers.js +5 -5
- package/src/utils/iac-providers.js.map +1 -1
- package/src/utils/iac.js +12 -14
- package/src/utils/iac.js.map +1 -1
- package/src/utils/identity-constructs/files/cdk/core/user-identity.ts.template +112 -2
- package/src/utils/identity-constructs/files/terraform/core/user-identity/add-callback-url/add-callback-url.tf.template +19 -6
- package/src/utils/identity-constructs/files/terraform/core/user-identity/identity/identity.tf.template +104 -2
- package/src/utils/identity-constructs/files/terraform/core/user-identity/main.tf.template +7 -0
- package/src/utils/identity-constructs/identity-constructs.js +24 -28
- package/src/utils/identity-constructs/identity-constructs.js.map +1 -1
- package/src/utils/js.js +27 -20
- package/src/utils/js.js.map +1 -1
- package/src/utils/mcp.js +34 -41
- package/src/utils/mcp.js.map +1 -1
- package/src/utils/metrics.js +30 -45
- package/src/utils/metrics.js.map +1 -1
- package/src/utils/mock-project-graph.js +8 -12
- package/src/utils/mock-project-graph.js.map +1 -1
- package/src/utils/names.d.ts +16 -0
- package/src/utils/names.js +39 -48
- package/src/utils/names.js.map +1 -1
- package/src/utils/npm-scope.js +9 -17
- package/src/utils/npm-scope.js.map +1 -1
- package/src/utils/nx.d.ts +18 -2
- package/src/utils/nx.js +111 -74
- package/src/utils/nx.js.map +1 -1
- package/src/utils/nxlv-python.js +27 -15
- package/src/utils/nxlv-python.js.map +1 -1
- package/src/utils/object.js +5 -11
- package/src/utils/object.js.map +1 -1
- package/src/utils/paths.js +11 -15
- package/src/utils/paths.js.map +1 -1
- package/src/utils/pkg-manager.js +4 -9
- package/src/utils/pkg-manager.js.map +1 -1
- package/src/utils/pnpm-workspace.js +22 -22
- package/src/utils/pnpm-workspace.js.map +1 -1
- package/src/utils/port.js +26 -36
- package/src/utils/port.js.map +1 -1
- package/src/utils/py.d.ts +14 -1
- package/src/utils/py.js +63 -45
- package/src/utils/py.js.map +1 -1
- package/src/utils/rdb-constructs/files/terraform/app/dbs/__nameKebabCase__/__nameKebabCase__.tf.template +4 -4
- package/src/utils/rdb-constructs/files/terraform/core/rdb/aurora/aurora.tf.template +3 -3
- package/src/utils/rdb-constructs/rdb-constructs.js +31 -33
- package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
- package/src/utils/shared-constructs-constants.js +16 -16
- package/src/utils/shared-constructs-constants.js.map +1 -1
- package/src/utils/shared-constructs.js +57 -54
- package/src/utils/shared-constructs.js.map +1 -1
- package/src/utils/shared-dynamodb-scripts.js +16 -14
- package/src/utils/shared-dynamodb-scripts.js.map +1 -1
- package/src/utils/shared-infra-config.js +30 -31
- package/src/utils/shared-infra-config.js.map +1 -1
- package/src/utils/shared-infra-scripts.js +30 -25
- package/src/utils/shared-infra-scripts.js.map +1 -1
- package/src/utils/shared-rdb-scripts.d.ts +8 -3
- package/src/utils/shared-rdb-scripts.js +21 -13
- package/src/utils/shared-rdb-scripts.js.map +1 -1
- package/src/utils/shared-scripts.js +12 -17
- package/src/utils/shared-scripts.js.map +1 -1
- package/src/utils/shared-shadcn.js +64 -60
- package/src/utils/shared-shadcn.js.map +1 -1
- package/src/utils/test.d.ts +8 -0
- package/src/utils/test.js +33 -25
- package/src/utils/test.js.map +1 -1
- package/src/utils/toml.js +7 -15
- package/src/utils/toml.js.map +1 -1
- package/src/utils/versions.d.ts +31 -4
- package/src/utils/versions.js +40 -23
- package/src/utils/versions.js.map +1 -1
- package/src/utils/website-constructs/files/terraform/app/static-websites/__websiteNameKebabCase__/__websiteNameKebabCase__.tf.template +1 -1
- package/src/utils/website-constructs/files/terraform/core/static-website/static-website.tf.template +4 -4
- package/src/utils/website-constructs/website-constructs.js +31 -30
- package/src/utils/website-constructs/website-constructs.js.map +1 -1
- package/bin/aws-nx-mcp.js +0 -17
- package/bin/aws-nx-mcp.js.map +0 -1
- package/sdk/agentcore-gateway.d.ts +0 -6
- package/sdk/agentcore-gateway.js +0 -11
- package/sdk/agentcore-gateway.js.map +0 -1
- package/sdk/connection.d.ts +0 -6
- package/sdk/connection.js +0 -10
- package/sdk/connection.js.map +0 -1
- package/sdk/license.js +0 -14
- package/sdk/license.js.map +0 -1
- package/sdk/open-api.d.ts +0 -10
- package/sdk/open-api.js +0 -15
- package/sdk/open-api.js.map +0 -1
- package/sdk/py.d.ts +0 -14
- package/sdk/py.js +0 -18
- package/sdk/py.js.map +0 -1
- package/sdk/terraform.d.ts +0 -6
- package/sdk/terraform.js +0 -11
- package/sdk/terraform.js.map +0 -1
- package/sdk/ts.d.ts +0 -33
- package/sdk/ts.js +0 -53
- package/sdk/ts.js.map +0 -1
- package/sdk/utils/ast.js +0 -12
- package/sdk/utils/ast.js.map +0 -1
- package/sdk/utils/format.js +0 -10
- package/sdk/utils/format.js.map +0 -1
- package/sdk/utils/test.js +0 -10
- package/sdk/utils/test.js.map +0 -1
- package/src/connection/agent-serve-local.js +0 -48
- package/src/connection/agent-serve-local.js.map +0 -1
- package/src/connection/serve-local.js +0 -41
- package/src/connection/serve-local.js.map +0 -1
- package/src/py/agent/react-connection/serve-local.js +0 -38
- package/src/py/agent/react-connection/serve-local.js.map +0 -1
- package/src/ts/agent/react-connection/serve-local.js +0 -19
- package/src/ts/agent/react-connection/serve-local.js.map +0 -1
- package/src/utils/files/common/scripts/src/rdb/wait-for-db.ts.template +0 -59
- /package/src/agentcore-gateway/files/project/{serve-local.ts.template → local-dev.ts.template} +0 -0
- /package/{bin → src/bin}/aws-nx-mcp.d.ts +0 -0
package/src/utils/metrics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/metrics.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { joinPathFragments, type Tree } from '@nx/devkit';\nimport { applyGritQL, captureAllGritQL } from './ast';\nimport { formatFilesInSubtree } from './format';\nimport { getPackageVersion, type NxGeneratorInfo } from './nx';\nimport {\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n SHARED_TERRAFORM_DIR,\n} from './shared-constructs-constants';\n\n// Used to identify @aws/nx-plugin in AWS metrics\nexport const METRIC_ID = 'uksb-4wk0bqpg5s';\n\n// File in which the MetricsAspect may exist (CDK)\nexport const METRICS_ASPECT_FILE_PATH = joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'core',\n 'app.ts',\n);\n\n// File in which the Terraform metrics CloudFormation stack may exist\nexport const TERRAFORM_METRICS_FILE_PATH = joinPathFragments(\n PACKAGES_DIR,\n SHARED_TERRAFORM_DIR,\n 'src',\n 'metrics',\n 'metrics.tf',\n);\n\n// GritQL `within` clause to scope matches to the MetricsAspect class body\nconst WITHIN_METRICS_ASPECT =\n '$old <: within `class MetricsAspect implements $_ { $_ }`';\n\n// Strip the surrounding quotes from a captured string literal (eg 'g1' or \"g1\")\nconst unquote = (literal: string): string => literal.slice(1, -1);\n\n// Extracts the existing metric tags from the CDK MetricsAspect tags array\nconst readCdkMetricTags = async (tree: Tree): Promise<string[]> =>\n (\n await captureAllGritQL(\n tree,\n METRICS_ASPECT_FILE_PATH,\n `\\`$tag\\` where { $tag <: string(), $tag <: within \\`const tags: string[] = $_\\` }`,\n )\n ).map(unquote);\n\n// Extracts the existing metric tags from the Terraform metric_tags array\nconst readTerraformMetricTags = async (tree: Tree): Promise<string[]> =>\n (\n await captureAllGritQL(\n tree,\n TERRAFORM_METRICS_FILE_PATH,\n '`\"$tag\"` where { $tag <: within `metric_tags = $_` }',\n )\n ).map(unquote);\n\n/**\n * Instruments metrics by updating the MetricsAspect in common/constructs/src/core/app.ts if the file exists,\n * and/or updating the Terraform metrics CloudFormation stack if it exists.\n *\n * Both files are converged to the same tag set (the union of tags already\n * present in either file plus the incoming generators). This keeps the tag set\n * deterministic regardless of the order in which metrics files are created\n * across a multi-generator run, so re-running the same set of generators does\n * not grow the tags.\n */\nexport const addGeneratorMetricsIfApplicable = async (\n tree: Tree,\n generatorInfo: NxGeneratorInfo[],\n) => {\n const cdkExists = tree.exists(METRICS_ASPECT_FILE_PATH);\n const terraformExists = tree.exists(TERRAFORM_METRICS_FILE_PATH);\n\n if (!cdkExists && !terraformExists) {\n return;\n }\n\n // Converge both files to the union of all known tags so the set is stable\n // regardless of when each metrics file was created.\n const tags = [\n ...new Set([\n ...(await readCdkMetricTags(tree)),\n ...(await readTerraformMetricTags(tree)),\n ...generatorInfo.map((info) => info.metric),\n ]),\n ];\n\n if (cdkExists) {\n await updateCdkMetrics(tree, tags);\n }\n\n if (terraformExists) {\n await updateTerraformMetrics(tree, tags);\n }\n};\n\n/**\n * Updates the CDK MetricsAspect with the metric id, version and tags\n */\nconst updateCdkMetrics = async (tree: Tree, tags: string[]) => {\n // Update the id\n await applyGritQL(\n tree,\n METRICS_ASPECT_FILE_PATH,\n `\\`const id = $old\\` => \\`const id = '${METRIC_ID}'\\`` +\n ` where { ${WITHIN_METRICS_ASPECT} }`,\n );\n\n // Update the version\n await applyGritQL(\n tree,\n METRICS_ASPECT_FILE_PATH,\n `\\`const version = $old\\` => \\`const version = '${getPackageVersion()}'\\`` +\n ` where { ${WITHIN_METRICS_ASPECT} }`,\n );\n\n // Add each tag, leaving existing tags in place to keep re-runs stable\n for (const tag of tags) {\n await applyGritQL(\n tree,\n METRICS_ASPECT_FILE_PATH,\n `\\`const tags: string[] = $old\\`` +\n ` where { ${WITHIN_METRICS_ASPECT},` +\n ` if ($old <: \\`[]\\`) { $old => \\`['${tag}']\\` }` +\n ` else { $old <: \\`[$items]\\` where { $items += \\`, '${tag}'\\` } },` +\n ` $old <: not contains \\`'${tag}'\\` }`,\n );\n }\n\n await formatFilesInSubtree(tree, METRICS_ASPECT_FILE_PATH);\n};\n\n/**\n * Updates the Terraform metrics CloudFormation stack with the metric id, version and tags\n */\nconst updateTerraformMetrics = async (tree: Tree, tags: string[]) => {\n // Update metric_id\n await applyGritQL(\n tree,\n TERRAFORM_METRICS_FILE_PATH,\n `\\`metric_id = $old\\` => \\`metric_id = \"${METRIC_ID}\"\\``,\n );\n\n // Update metric_version\n await applyGritQL(\n tree,\n TERRAFORM_METRICS_FILE_PATH,\n `\\`metric_version = $old\\` => \\`metric_version = \"${getPackageVersion()}\"\\``,\n );\n\n // Add each tag, leaving existing tags in place to keep re-runs stable\n for (const tag of tags) {\n await applyGritQL(\n tree,\n TERRAFORM_METRICS_FILE_PATH,\n `or { \\`metric_tags = []\\` => \\`metric_tags = [\"${tag}\"]\\`,` +\n ` \\`metric_tags = [$items]\\` where { $items += \\`, \"${tag}\"\\` }` +\n ` where { $items <: not contains \\`\"${tag}\"\\` } }`,\n );\n }\n};\n"],"names":["joinPathFragments","applyGritQL","captureAllGritQL","formatFilesInSubtree","getPackageVersion","PACKAGES_DIR","SHARED_CONSTRUCTS_DIR","SHARED_TERRAFORM_DIR","METRIC_ID","METRICS_ASPECT_FILE_PATH","TERRAFORM_METRICS_FILE_PATH","WITHIN_METRICS_ASPECT","unquote","literal","slice","readCdkMetricTags","tree","map","readTerraformMetricTags","addGeneratorMetricsIfApplicable","generatorInfo","cdkExists","exists","terraformExists","tags","Set","info","metric","updateCdkMetrics","updateTerraformMetrics","tag"],"mappings":"AAAA;;;CAGC,GACD,SAASA,iBAAiB,QAAmB,aAAa;AAC1D,SAASC,WAAW,EAAEC,gBAAgB,QAAQ,WAAQ;AACtD,SAASC,oBAAoB,QAAQ,cAAW;AAChD,SAASC,iBAAiB,QAA8B,UAAO;AAC/D,SACEC,YAAY,EACZC,qBAAqB,EACrBC,oBAAoB,QACf,mCAAgC;AAEvC,iDAAiD;AACjD,OAAO,MAAMC,YAAY,kBAAkB;AAE3C,kDAAkD;AAClD,OAAO,MAAMC,2BAA2BT,kBACtCK,cACAC,uBACA,OACA,QACA,UACA;AAEF,qEAAqE;AACrE,OAAO,MAAMI,8BAA8BV,kBACzCK,cACAE,sBACA,OACA,WACA,cACA;AAEF,0EAA0E;AAC1E,MAAMI,wBACJ;AAEF,gFAAgF;AAChF,MAAMC,UAAU,CAACC,UAA4BA,QAAQC,KAAK,CAAC,GAAG,CAAC;AAE/D,0EAA0E;AAC1E,MAAMC,oBAAoB,OAAOC,OAC/B,AACE,CAAA,MAAMd,iBACJc,MACAP,0BACA,CAAC,iFAAiF,CAAC,CACrF,EACAQ,GAAG,CAACL;AAER,yEAAyE;AACzE,MAAMM,0BAA0B,OAAOF,OACrC,AACE,CAAA,MAAMd,iBACJc,MACAN,6BACA,uDACF,EACAO,GAAG,CAACL;AAER;;;;;;;;;CASC,GACD,OAAO,MAAMO,kCAAkC,OAC7CH,MACAI;IAEA,MAAMC,YAAYL,KAAKM,MAAM,CAACb;IAC9B,MAAMc,kBAAkBP,KAAKM,MAAM,CAACZ;IAEpC,IAAI,CAACW,aAAa,CAACE,iBAAiB;QAClC;IACF;IAEA,0EAA0E;IAC1E,oDAAoD;IACpD,MAAMC,OAAO;WACR,IAAIC,IAAI;eACL,MAAMV,kBAAkBC;eACxB,MAAME,wBAAwBF;eAC/BI,cAAcH,GAAG,CAAC,CAACS,OAASA,KAAKC,MAAM;SAC3C;KACF;IAED,IAAIN,WAAW;QACb,MAAMO,iBAAiBZ,MAAMQ;IAC/B;IAEA,IAAID,iBAAiB;QACnB,MAAMM,uBAAuBb,MAAMQ;IACrC;AACF,EAAE;AAEF;;CAEC,GACD,MAAMI,mBAAmB,OAAOZ,MAAYQ;IAC1C,gBAAgB;IAChB,MAAMvB,YACJe,MACAP,0BACA,CAAC,qCAAqC,EAAED,UAAU,GAAG,CAAC,GACpD,CAAC,SAAS,EAAEG,sBAAsB,EAAE,CAAC;IAGzC,qBAAqB;IACrB,MAAMV,YACJe,MACAP,0BACA,CAAC,+CAA+C,EAAEL,oBAAoB,GAAG,CAAC,GACxE,CAAC,SAAS,EAAEO,sBAAsB,EAAE,CAAC;IAGzC,sEAAsE;IACtE,KAAK,MAAMmB,OAAON,KAAM;QACtB,MAAMvB,YACJe,MACAP,0BACA,CAAC,+BAA+B,CAAC,GAC/B,CAAC,SAAS,EAAEE,sBAAsB,CAAC,CAAC,GACpC,CAAC,mCAAmC,EAAEmB,IAAI,MAAM,CAAC,GACjD,CAAC,oDAAoD,EAAEA,IAAI,QAAQ,CAAC,GACpE,CAAC,yBAAyB,EAAEA,IAAI,KAAK,CAAC;IAE5C;IAEA,MAAM3B,qBAAqBa,MAAMP;AACnC;AAEA;;CAEC,GACD,MAAMoB,yBAAyB,OAAOb,MAAYQ;IAChD,mBAAmB;IACnB,MAAMvB,YACJe,MACAN,6BACA,CAAC,uCAAuC,EAAEF,UAAU,GAAG,CAAC;IAG1D,wBAAwB;IACxB,MAAMP,YACJe,MACAN,6BACA,CAAC,iDAAiD,EAAEN,oBAAoB,GAAG,CAAC;IAG9E,sEAAsE;IACtE,KAAK,MAAM0B,OAAON,KAAM;QACtB,MAAMvB,YACJe,MACAN,6BACA,CAAC,+CAA+C,EAAEoB,IAAI,KAAK,CAAC,GAC1D,CAAC,mDAAmD,EAAEA,IAAI,KAAK,CAAC,GAChE,CAAC,mCAAmC,EAAEA,IAAI,OAAO,CAAC;IAExD;AACF"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
4
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
/**
|
|
4
|
+
*/ /**
|
|
8
5
|
* Mock createProjectGraphAsync to avoid expensive project graph building in tests.
|
|
9
6
|
*
|
|
10
7
|
* This is the vitest equivalent of Nx's own internal testing utility:
|
|
@@ -15,13 +12,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
12
|
* 2. @nx/devkit's exports are wrapped with read-only getters by vitest
|
|
16
13
|
* 3. The CJS module at nx/src/project-graph/project-graph.js is the actual
|
|
17
14
|
* implementation that @nx/devkit re-exports
|
|
18
|
-
*/
|
|
19
|
-
const
|
|
20
|
-
// @ts-expect-error test utility used by vite only
|
|
21
|
-
const _require = (0, module_1.createRequire)(import.meta.url);
|
|
15
|
+
*/ import { createRequire } from "module";
|
|
16
|
+
const _require = createRequire(import.meta.url);
|
|
22
17
|
const projectGraph = _require('nx/src/project-graph/project-graph');
|
|
23
|
-
projectGraph.createProjectGraphAsync = async ()
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
});
|
|
18
|
+
projectGraph.createProjectGraphAsync = async ()=>({
|
|
19
|
+
nodes: {},
|
|
20
|
+
dependencies: {}
|
|
21
|
+
});
|
|
22
|
+
|
|
27
23
|
//# sourceMappingURL=mock-project-graph.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/mock-project-graph.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * Mock createProjectGraphAsync to avoid expensive project graph building in tests.\n *\n * This is the vitest equivalent of Nx's own internal testing utility:\n * https://github.com/nrwl/nx/blob/master/packages/nx/src/internal-testing-utils/mock-project-graph.ts\n *\n * We patch the underlying nx module directly because:\n * 1. vitest's vi.mock only affects ESM imports within the test file\n * 2. @nx/devkit's exports are wrapped with read-only getters by vitest\n * 3. The CJS module at nx/src/project-graph/project-graph.js is the actual\n * implementation that @nx/devkit re-exports\n */\nimport { createRequire } from 'module';\n\nconst _require = createRequire(import.meta.url);\nconst projectGraph = _require('nx/src/project-graph/project-graph');\nprojectGraph.createProjectGraphAsync = async () => ({\n nodes: {},\n dependencies: {},\n});\n"],"names":["createRequire","_require","url","projectGraph","createProjectGraphAsync","nodes","dependencies"],"mappings":"AAAA;;;CAGC,GAED;;;;;;;;;;;CAWC,GACD,SAASA,aAAa,QAAQ,SAAS;AAEvC,MAAMC,WAAWD,cAAc,YAAYE,GAAG;AAC9C,MAAMC,eAAeF,SAAS;AAC9BE,aAAaC,uBAAuB,GAAG,UAAa,CAAA;QAClDC,OAAO,CAAC;QACRC,cAAc,CAAC;IACjB,CAAA"}
|
package/src/utils/names.d.ts
CHANGED
|
@@ -5,4 +5,20 @@ export declare const upperFirst: (str: string) => string;
|
|
|
5
5
|
export declare const pascalCase: (str: string) => string;
|
|
6
6
|
export declare const snakeCase: (str: string) => string;
|
|
7
7
|
export declare const kebabCase: (str: string) => string;
|
|
8
|
+
/**
|
|
9
|
+
* Normalise a string to a PEP 503 distribution name.
|
|
10
|
+
*
|
|
11
|
+
* PEP 503 (https://peps.python.org/pep-0503/#normalized-names) defines the
|
|
12
|
+
* canonical form of a Python project distribution name: lower-cased, with any
|
|
13
|
+
* run of `.`, `_` or `-` collapsed to a single `-`. This is the name uv writes
|
|
14
|
+
* into `uv.lock` and the form `@nxlv/python` expects when inferring workspace
|
|
15
|
+
* dependency edges from `[project].dependencies` / `[tool.uv.sources]`.
|
|
16
|
+
*
|
|
17
|
+
* Importantly this is NOT kebab-case: it does not split on camelCase humps,
|
|
18
|
+
* spaces or other punctuation, so a dotted nx id like `scope.my_lib` becomes
|
|
19
|
+
* `scope-my-lib` (and only those three separators are touched).
|
|
20
|
+
*
|
|
21
|
+
* eg. `sojourner.agent_connection` -> `sojourner-agent-connection`
|
|
22
|
+
*/
|
|
23
|
+
export declare const normalizeDistributionName: (str: string) => string;
|
|
8
24
|
export declare const toDotNotation: (str: string) => string;
|
package/src/utils/names.js
CHANGED
|
@@ -1,66 +1,57 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.toDotNotation = exports.kebabCase = exports.snakeCase = exports.pascalCase = exports.upperFirst = exports.toSnakeCase = exports.toKebabCase = exports.toClassName = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
1
|
/**
|
|
6
2
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
const toClassName = (str) => {
|
|
4
|
+
*/ import camelCase from "lodash.camelcase";
|
|
5
|
+
import deburr from "lodash.deburr";
|
|
6
|
+
export const toClassName = (str)=>{
|
|
12
7
|
if (!str) {
|
|
13
8
|
return str;
|
|
14
9
|
}
|
|
15
10
|
const words = str.replace(/[^a-zA-Z0-9]/g, ' ').split(/\s+/);
|
|
16
|
-
return words
|
|
17
|
-
.map((word, index) => {
|
|
11
|
+
return words.map((word, index)=>{
|
|
18
12
|
if (index === 0 && /^\d/.test(word)) {
|
|
19
13
|
return '_' + word;
|
|
20
14
|
}
|
|
21
15
|
return word.charAt(0).toUpperCase() + word.slice(1);
|
|
22
|
-
})
|
|
23
|
-
.join('');
|
|
16
|
+
}).join('');
|
|
24
17
|
};
|
|
25
|
-
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return ((0, lodash_deburr_1.default)(str)
|
|
36
|
-
// Replace series of special characters with underscores
|
|
37
|
-
.replace(/[^a-zA-Z0-9]+/g, '_')
|
|
38
|
-
// Replace capital letters preceded by lowercase or numbers with underscore + lowercase
|
|
39
|
-
.replace(/([a-z0-9])([A-Z])/g, '$1_$2')
|
|
40
|
-
// Convert to lowercase
|
|
41
|
-
.toLowerCase()
|
|
42
|
-
// Remove leading/trailing underscores
|
|
43
|
-
.replace(/^_+|_+$/g, ''));
|
|
18
|
+
export const toKebabCase = (str)=>str?.split('/').map(kebabCase).join('/');
|
|
19
|
+
export const toSnakeCase = (str)=>str?.split('/').map(snakeCase).join('/');
|
|
20
|
+
export const upperFirst = (str)=>str.charAt(0).toUpperCase() + str.slice(1);
|
|
21
|
+
export const pascalCase = (str)=>upperFirst(camelCase(str));
|
|
22
|
+
export const snakeCase = (str)=>{
|
|
23
|
+
return deburr(str)// Replace series of special characters with underscores
|
|
24
|
+
.replace(/[^a-zA-Z0-9]+/g, '_')// Replace capital letters preceded by lowercase or numbers with underscore + lowercase
|
|
25
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1_$2')// Convert to lowercase
|
|
26
|
+
.toLowerCase()// Remove leading/trailing underscores
|
|
27
|
+
.replace(/^_+|_+$/g, '');
|
|
44
28
|
};
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
.replace(/([a-z0-9])([A-Z])/g, '$1-$2')
|
|
52
|
-
// Convert to lowercase
|
|
53
|
-
.toLowerCase()
|
|
54
|
-
// Remove leading/trailing hyphens
|
|
55
|
-
.replace(/^-+|-+$/g, ''));
|
|
29
|
+
export const kebabCase = (str)=>{
|
|
30
|
+
return deburr(str)// Replace series of special characters with hyphens
|
|
31
|
+
.replace(/[^a-zA-Z0-9]+/g, '-')// Replace capital letters preceded by lowercase or numbers with hyphen + lowercase
|
|
32
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1-$2')// Convert to lowercase
|
|
33
|
+
.toLowerCase()// Remove leading/trailing hyphens
|
|
34
|
+
.replace(/^-+|-+$/g, '');
|
|
56
35
|
};
|
|
57
|
-
|
|
36
|
+
/**
|
|
37
|
+
* Normalise a string to a PEP 503 distribution name.
|
|
38
|
+
*
|
|
39
|
+
* PEP 503 (https://peps.python.org/pep-0503/#normalized-names) defines the
|
|
40
|
+
* canonical form of a Python project distribution name: lower-cased, with any
|
|
41
|
+
* run of `.`, `_` or `-` collapsed to a single `-`. This is the name uv writes
|
|
42
|
+
* into `uv.lock` and the form `@nxlv/python` expects when inferring workspace
|
|
43
|
+
* dependency edges from `[project].dependencies` / `[tool.uv.sources]`.
|
|
44
|
+
*
|
|
45
|
+
* Importantly this is NOT kebab-case: it does not split on camelCase humps,
|
|
46
|
+
* spaces or other punctuation, so a dotted nx id like `scope.my_lib` becomes
|
|
47
|
+
* `scope-my-lib` (and only those three separators are touched).
|
|
48
|
+
*
|
|
49
|
+
* eg. `sojourner.agent_connection` -> `sojourner-agent-connection`
|
|
50
|
+
*/ export const normalizeDistributionName = (str)=>str.toLowerCase().replace(/[._-]+/g, '-');
|
|
58
51
|
// Convert a string to a dot notation string (eg. lambda_handler/my_handler.py -> lambda_handler.my_handler)
|
|
59
|
-
const toDotNotation = (str)
|
|
60
|
-
?.replace(/^\/|\/$/g, '') // Remove leading/trailing slashes
|
|
52
|
+
export const toDotNotation = (str)=>str?.replace(/^\/|\/$/g, '') // Remove leading/trailing slashes
|
|
61
53
|
.replace(/\.[^/.]+$/g, '') // Remove any file extensions
|
|
62
|
-
.split('/')
|
|
63
|
-
.filter(Boolean) // Remove empty segments (in case of double slashes)
|
|
54
|
+
.split('/').filter(Boolean) // Remove empty segments (in case of double slashes)
|
|
64
55
|
.join('.');
|
|
65
|
-
|
|
56
|
+
|
|
66
57
|
//# sourceMappingURL=names.js.map
|
package/src/utils/names.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/names.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport camelCase from 'lodash.camelcase';\nimport deburr from 'lodash.deburr';\n\nexport const toClassName = (str?: string): string => {\n if (!str) {\n return str;\n }\n const words = str.replace(/[^a-zA-Z0-9]/g, ' ').split(/\\s+/);\n return words\n .map((word, index) => {\n if (index === 0 && /^\\d/.test(word)) {\n return '_' + word;\n }\n return word.charAt(0).toUpperCase() + word.slice(1);\n })\n .join('');\n};\n\nexport const toKebabCase = (str?: string): string =>\n str?.split('/').map(kebabCase).join('/');\n\nexport const toSnakeCase = (str?: string): string =>\n str?.split('/').map(snakeCase).join('/');\n\nexport const upperFirst = (str: string): string =>\n str.charAt(0).toUpperCase() + str.slice(1);\n\nexport const pascalCase = (str: string): string => upperFirst(camelCase(str));\n\nexport const snakeCase = (str: string): string => {\n return (\n deburr(str)\n // Replace series of special characters with underscores\n .replace(/[^a-zA-Z0-9]+/g, '_')\n // Replace capital letters preceded by lowercase or numbers with underscore + lowercase\n .replace(/([a-z0-9])([A-Z])/g, '$1_$2')\n // Convert to lowercase\n .toLowerCase()\n // Remove leading/trailing underscores\n .replace(/^_+|_+$/g, '')\n );\n};\n\nexport const kebabCase = (str: string): string => {\n return (\n deburr(str)\n // Replace series of special characters with hyphens\n .replace(/[^a-zA-Z0-9]+/g, '-')\n // Replace capital letters preceded by lowercase or numbers with hyphen + lowercase\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n // Convert to lowercase\n .toLowerCase()\n // Remove leading/trailing hyphens\n .replace(/^-+|-+$/g, '')\n );\n};\n\n/**\n * Normalise a string to a PEP 503 distribution name.\n *\n * PEP 503 (https://peps.python.org/pep-0503/#normalized-names) defines the\n * canonical form of a Python project distribution name: lower-cased, with any\n * run of `.`, `_` or `-` collapsed to a single `-`. This is the name uv writes\n * into `uv.lock` and the form `@nxlv/python` expects when inferring workspace\n * dependency edges from `[project].dependencies` / `[tool.uv.sources]`.\n *\n * Importantly this is NOT kebab-case: it does not split on camelCase humps,\n * spaces or other punctuation, so a dotted nx id like `scope.my_lib` becomes\n * `scope-my-lib` (and only those three separators are touched).\n *\n * eg. `sojourner.agent_connection` -> `sojourner-agent-connection`\n */\nexport const normalizeDistributionName = (str: string): string =>\n str.toLowerCase().replace(/[._-]+/g, '-');\n\n// Convert a string to a dot notation string (eg. lambda_handler/my_handler.py -> lambda_handler.my_handler)\nexport const toDotNotation = (str: string): string =>\n str\n ?.replace(/^\\/|\\/$/g, '') // Remove leading/trailing slashes\n .replace(/\\.[^/.]+$/g, '') // Remove any file extensions\n .split('/')\n .filter(Boolean) // Remove empty segments (in case of double slashes)\n .join('.');\n"],"names":["camelCase","deburr","toClassName","str","words","replace","split","map","word","index","test","charAt","toUpperCase","slice","join","toKebabCase","kebabCase","toSnakeCase","snakeCase","upperFirst","pascalCase","toLowerCase","normalizeDistributionName","toDotNotation","filter","Boolean"],"mappings":"AAAA;;;CAGC,GACD,OAAOA,eAAe,mBAAmB;AACzC,OAAOC,YAAY,gBAAgB;AAEnC,OAAO,MAAMC,cAAc,CAACC;IAC1B,IAAI,CAACA,KAAK;QACR,OAAOA;IACT;IACA,MAAMC,QAAQD,IAAIE,OAAO,CAAC,iBAAiB,KAAKC,KAAK,CAAC;IACtD,OAAOF,MACJG,GAAG,CAAC,CAACC,MAAMC;QACV,IAAIA,UAAU,KAAK,MAAMC,IAAI,CAACF,OAAO;YACnC,OAAO,MAAMA;QACf;QACA,OAAOA,KAAKG,MAAM,CAAC,GAAGC,WAAW,KAAKJ,KAAKK,KAAK,CAAC;IACnD,GACCC,IAAI,CAAC;AACV,EAAE;AAEF,OAAO,MAAMC,cAAc,CAACZ,MAC1BA,KAAKG,MAAM,KAAKC,IAAIS,WAAWF,KAAK,KAAK;AAE3C,OAAO,MAAMG,cAAc,CAACd,MAC1BA,KAAKG,MAAM,KAAKC,IAAIW,WAAWJ,KAAK,KAAK;AAE3C,OAAO,MAAMK,aAAa,CAAChB,MACzBA,IAAIQ,MAAM,CAAC,GAAGC,WAAW,KAAKT,IAAIU,KAAK,CAAC,GAAG;AAE7C,OAAO,MAAMO,aAAa,CAACjB,MAAwBgB,WAAWnB,UAAUG,MAAM;AAE9E,OAAO,MAAMe,YAAY,CAACf;IACxB,OACEF,OAAOE,IACL,wDAAwD;KACvDE,OAAO,CAAC,kBAAkB,IAC3B,uFAAuF;KACtFA,OAAO,CAAC,sBAAsB,QAC/B,uBAAuB;KACtBgB,WAAW,EACZ,sCAAsC;KACrChB,OAAO,CAAC,YAAY;AAE3B,EAAE;AAEF,OAAO,MAAMW,YAAY,CAACb;IACxB,OACEF,OAAOE,IACL,oDAAoD;KACnDE,OAAO,CAAC,kBAAkB,IAC3B,mFAAmF;KAClFA,OAAO,CAAC,sBAAsB,QAC/B,uBAAuB;KACtBgB,WAAW,EACZ,kCAAkC;KACjChB,OAAO,CAAC,YAAY;AAE3B,EAAE;AAEF;;;;;;;;;;;;;;CAcC,GACD,OAAO,MAAMiB,4BAA4B,CAACnB,MACxCA,IAAIkB,WAAW,GAAGhB,OAAO,CAAC,WAAW,KAAK;AAE5C,4GAA4G;AAC5G,OAAO,MAAMkB,gBAAgB,CAACpB,MAC5BA,KACIE,QAAQ,YAAY,IAAI,kCAAkC;KAC3DA,QAAQ,cAAc,IAAI,6BAA6B;KACvDC,MAAM,KACNkB,OAAOC,SAAS,oDAAoD;KACpEX,KAAK,KAAK"}
|
package/src/utils/npm-scope.js
CHANGED
|
@@ -1,29 +1,21 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getNpmScope = getNpmScope;
|
|
4
|
-
exports.getNpmScopePrefix = getNpmScopePrefix;
|
|
5
|
-
exports.toScopeAlias = toScopeAlias;
|
|
6
1
|
/**
|
|
7
2
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
8
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
: { name: null };
|
|
4
|
+
*/ import { readJson } from "@nx/devkit";
|
|
5
|
+
export function getNpmScope(tree) {
|
|
6
|
+
const { name } = tree.exists('package.json') ? readJson(tree, 'package.json') : {
|
|
7
|
+
name: null
|
|
8
|
+
};
|
|
15
9
|
return name?.startsWith('@') ? name.split('/')[0].substring(1) : 'monorepo';
|
|
16
10
|
}
|
|
17
|
-
function getNpmScopePrefix(tree) {
|
|
11
|
+
export function getNpmScopePrefix(tree) {
|
|
18
12
|
const npmScope = getNpmScope(tree);
|
|
19
13
|
return `@${npmScope}/`;
|
|
20
14
|
}
|
|
21
15
|
/**
|
|
22
16
|
* Returns a safe import alias for local packages to avoid the potential for sniping attacks
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
return npmScopeOrPackageName.startsWith('@')
|
|
26
|
-
? `:${npmScopeOrPackageName.slice(1)}`
|
|
27
|
-
: npmScopeOrPackageName;
|
|
17
|
+
*/ export function toScopeAlias(npmScopeOrPackageName) {
|
|
18
|
+
return npmScopeOrPackageName.startsWith('@') ? `:${npmScopeOrPackageName.slice(1)}` : npmScopeOrPackageName;
|
|
28
19
|
}
|
|
20
|
+
|
|
29
21
|
//# sourceMappingURL=npm-scope.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/npm-scope.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { readJson, type Tree } from '@nx/devkit';\nexport function getNpmScope(tree: Tree): string | undefined {\n const { name } = tree.exists('package.json')\n ? readJson<{\n name?: string;\n }>(tree, 'package.json')\n : { name: null };\n return name?.startsWith('@') ? name.split('/')[0].substring(1) : 'monorepo';\n}\nexport function getNpmScopePrefix(tree: Tree): string | undefined {\n const npmScope = getNpmScope(tree);\n return `@${npmScope}/`;\n}\n/**\n * Returns a safe import alias for local packages to avoid the potential for sniping attacks\n */\nexport function toScopeAlias(npmScopeOrPackageName: string): string {\n return npmScopeOrPackageName.startsWith('@')\n ? `:${npmScopeOrPackageName.slice(1)}`\n : npmScopeOrPackageName;\n}\n"],"names":["readJson","getNpmScope","tree","name","exists","startsWith","split","substring","getNpmScopePrefix","npmScope","toScopeAlias","npmScopeOrPackageName","slice"],"mappings":"AAAA;;;CAGC,GACD,SAASA,QAAQ,QAAmB,aAAa;AACjD,OAAO,SAASC,YAAYC,IAAU;IACpC,MAAM,EAAEC,IAAI,EAAE,GAAGD,KAAKE,MAAM,CAAC,kBACzBJ,SAEGE,MAAM,kBACT;QAAEC,MAAM;IAAK;IACjB,OAAOA,MAAME,WAAW,OAAOF,KAAKG,KAAK,CAAC,IAAI,CAAC,EAAE,CAACC,SAAS,CAAC,KAAK;AACnE;AACA,OAAO,SAASC,kBAAkBN,IAAU;IAC1C,MAAMO,WAAWR,YAAYC;IAC7B,OAAO,CAAC,CAAC,EAAEO,SAAS,CAAC,CAAC;AACxB;AACA;;CAEC,GACD,OAAO,SAASC,aAAaC,qBAA6B;IACxD,OAAOA,sBAAsBN,UAAU,CAAC,OACpC,CAAC,CAAC,EAAEM,sBAAsBC,KAAK,CAAC,IAAI,GACpCD;AACN"}
|
package/src/utils/nx.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ import { type GeneratorInfo } from './generators';
|
|
|
12
12
|
*/
|
|
13
13
|
export declare const listGenerators: (includeHidden?: boolean) => GeneratorInfo[];
|
|
14
14
|
/**
|
|
15
|
-
* Return generator information. Call this from a generator method with
|
|
15
|
+
* Return generator information. Call this from a generator method with import.meta.filename
|
|
16
16
|
*/
|
|
17
17
|
export declare const getGeneratorInfo: (generatorFileName: string) => GeneratorInfo;
|
|
18
18
|
export declare const getPackageVersion: () => string;
|
|
@@ -59,12 +59,28 @@ export type TargetDependency = string | {
|
|
|
59
59
|
target: string;
|
|
60
60
|
params?: 'ignore' | 'forward';
|
|
61
61
|
};
|
|
62
|
+
/**
|
|
63
|
+
* Reorder a target's keys to match Nx's own serialization order. Nx reorders
|
|
64
|
+
* target properties when it rewrites an existing project.json, so applying the
|
|
65
|
+
* same order when first authoring a target keeps generators idempotent.
|
|
66
|
+
*/
|
|
67
|
+
export declare const normalizeTargetKeyOrder: <T extends object>(target: T) => T;
|
|
62
68
|
/**
|
|
63
69
|
* Mutate the project to add the dependency to the target if not already present
|
|
64
70
|
* Adds the target if not present.
|
|
65
71
|
*
|
|
66
72
|
* Accepts either a string target name (e.g. `'build'`) or a dependency config
|
|
67
|
-
* object (e.g. `{ projects: ['foo'], target: '
|
|
73
|
+
* object (e.g. `{ projects: ['foo'], target: 'dev' }`). Deduplicates
|
|
68
74
|
* using deep equality so re-running a generator does not grow `dependsOn`.
|
|
69
75
|
*/
|
|
70
76
|
export declare const addDependencyToTargetIfNotPresent: (project: ProjectConfiguration, target: string, dependency: TargetDependency) => void;
|
|
77
|
+
/**
|
|
78
|
+
* Register a component's `<name>-dev` target under the project-level `dev`
|
|
79
|
+
* target, so `nx run <project>:dev` starts every component in the project.
|
|
80
|
+
*
|
|
81
|
+
* Component generators author their own continuous `<name>-dev` runner and call
|
|
82
|
+
* this to aggregate it. Every component added to the project accumulates its
|
|
83
|
+
* `<name>-dev` under `dev`. Nx keys tasks by `project:target`, so any
|
|
84
|
+
* dependencies shared between components run exactly once.
|
|
85
|
+
*/
|
|
86
|
+
export declare const addComponentDevTarget: (targets: Record<string, ProjectConfiguration["targets"][string]>, componentDevTargetName: string) => void;
|
package/src/utils/nx.js
CHANGED
|
@@ -1,81 +1,66 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.addDependencyToTargetIfNotPresent = exports.addComponentGeneratorMetadata = exports.addGeneratorMetadata = exports.projectExists = exports.readProjectConfigurationUnqualified = exports.getPackageVersion = exports.getGeneratorInfo = exports.listGenerators = exports.buildGeneratorInfoList = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
1
|
/**
|
|
6
2
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const GENERATORS =
|
|
4
|
+
*/ import { getProjects, readProjectConfiguration, updateProjectConfiguration } from "@nx/devkit";
|
|
5
|
+
import * as path from "path";
|
|
6
|
+
import PackageJson from "../../package.json" with {
|
|
7
|
+
type: 'json'
|
|
8
|
+
};
|
|
9
|
+
import { toSnakeCase } from "./names.js";
|
|
10
|
+
import { getNpmScope, getNpmScopePrefix } from "./npm-scope.js";
|
|
11
|
+
export { buildGeneratorInfoList } from "./generators.js";
|
|
12
|
+
import { buildGeneratorInfoList } from "./generators.js";
|
|
13
|
+
const GENERATORS = buildGeneratorInfoList(path.resolve(import.meta.dirname, '..', '..'));
|
|
18
14
|
/**
|
|
19
15
|
* List Nx Plugin for AWS generators
|
|
20
16
|
* @param includeHidden include hidden generators (default false)
|
|
21
|
-
*/
|
|
22
|
-
const listGenerators = (includeHidden = false) => GENERATORS.filter((g) => includeHidden || !g.hidden);
|
|
23
|
-
exports.listGenerators = listGenerators;
|
|
17
|
+
*/ export const listGenerators = (includeHidden = false)=>GENERATORS.filter((g)=>includeHidden || !g.hidden);
|
|
24
18
|
/**
|
|
25
|
-
* Return generator information. Call this from a generator method with
|
|
26
|
-
*/
|
|
27
|
-
const getGeneratorInfo = (generatorFileName) => {
|
|
19
|
+
* Return generator information. Call this from a generator method with import.meta.filename
|
|
20
|
+
*/ export const getGeneratorInfo = (generatorFileName)=>{
|
|
28
21
|
const { dir, name } = path.parse(path.resolve(generatorFileName));
|
|
29
22
|
const resolvedFactoryPath = path.join(dir, name);
|
|
30
|
-
return GENERATORS.find((generatorInfo)
|
|
23
|
+
return GENERATORS.find((generatorInfo)=>generatorInfo.resolvedFactoryPath === resolvedFactoryPath);
|
|
31
24
|
};
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
return package_json_1.default.version;
|
|
25
|
+
export const getPackageVersion = ()=>{
|
|
26
|
+
return PackageJson.version;
|
|
35
27
|
};
|
|
36
|
-
exports.getPackageVersion = getPackageVersion;
|
|
37
28
|
/**
|
|
38
29
|
* Read a project configuration where the project name may not be fully qualified (ie may omit the scope prefix)
|
|
39
|
-
*/
|
|
40
|
-
const readProjectConfigurationUnqualified = (tree, projectName) => {
|
|
30
|
+
*/ export const readProjectConfigurationUnqualified = (tree, projectName)=>{
|
|
41
31
|
try {
|
|
42
|
-
return
|
|
43
|
-
}
|
|
44
|
-
catch (e) {
|
|
32
|
+
return readProjectConfiguration(tree, projectName);
|
|
33
|
+
} catch (e) {
|
|
45
34
|
// Attempt to find the project without the scope
|
|
46
|
-
const project = [
|
|
47
|
-
(
|
|
48
|
-
|
|
35
|
+
const project = [
|
|
36
|
+
...getProjects(tree).values()
|
|
37
|
+
].find((p)=>p.name && (p.name === `${getNpmScopePrefix(tree)}${projectName}` || // TypeScript fully-qualified name
|
|
38
|
+
p.name === `${toSnakeCase(getNpmScope(tree))}.${projectName}`));
|
|
49
39
|
if (project) {
|
|
50
40
|
return project;
|
|
51
41
|
}
|
|
52
42
|
throw e;
|
|
53
43
|
}
|
|
54
44
|
};
|
|
55
|
-
exports.readProjectConfigurationUnqualified = readProjectConfigurationUnqualified;
|
|
56
45
|
/**
|
|
57
46
|
* Returns whether a project with the given name already exists in the workspace.
|
|
58
47
|
* The project name may be unqualified (ie may omit the scope prefix).
|
|
59
|
-
*/
|
|
60
|
-
const projectExists = (tree, projectName) => {
|
|
48
|
+
*/ export const projectExists = (tree, projectName)=>{
|
|
61
49
|
try {
|
|
62
|
-
|
|
50
|
+
readProjectConfigurationUnqualified(tree, projectName);
|
|
63
51
|
return true;
|
|
64
|
-
}
|
|
65
|
-
catch {
|
|
52
|
+
} catch {
|
|
66
53
|
return false;
|
|
67
54
|
}
|
|
68
55
|
};
|
|
69
|
-
exports.projectExists = projectExists;
|
|
70
56
|
/**
|
|
71
57
|
* Add metadata about the generator that generated the project to the project.json
|
|
72
|
-
*/
|
|
73
|
-
const
|
|
74
|
-
const config = (0, exports.readProjectConfigurationUnqualified)(tree, projectName);
|
|
58
|
+
*/ export const addGeneratorMetadata = (tree, projectName, info, additionalMetadata)=>{
|
|
59
|
+
const config = readProjectConfigurationUnqualified(tree, projectName);
|
|
75
60
|
const metadata = {
|
|
76
61
|
...config?.metadata,
|
|
77
62
|
generator: info.id,
|
|
78
|
-
...additionalMetadata
|
|
63
|
+
...additionalMetadata
|
|
79
64
|
};
|
|
80
65
|
// Skip the write when nothing changed so re-running doesn't reserialize
|
|
81
66
|
// project.json. metadata is plain JSON built in a fixed key order, so a
|
|
@@ -87,80 +72,132 @@ const addGeneratorMetadata = (tree, projectName, info, additionalMetadata) => {
|
|
|
87
72
|
// identical whether or not metadata already existed (matching the order Nx
|
|
88
73
|
// normalizes a read config to), keeping the change a pure metadata insert.
|
|
89
74
|
const { targets, ...rest } = config;
|
|
90
|
-
|
|
75
|
+
updateProjectConfiguration(tree, config.name, {
|
|
91
76
|
...rest,
|
|
92
77
|
metadata: metadata,
|
|
93
|
-
...
|
|
78
|
+
...targets ? {
|
|
79
|
+
targets
|
|
80
|
+
} : {}
|
|
94
81
|
});
|
|
95
82
|
};
|
|
96
|
-
exports.addGeneratorMetadata = addGeneratorMetadata;
|
|
97
83
|
/**
|
|
98
84
|
* Add metadata about the generator that generated the component to the project.json
|
|
99
|
-
*/
|
|
100
|
-
const
|
|
101
|
-
const config = (0, exports.readProjectConfigurationUnqualified)(tree, projectName);
|
|
85
|
+
*/ export const addComponentGeneratorMetadata = (tree, projectName, info, componentPath, componentName, additionalMetadata)=>{
|
|
86
|
+
const config = readProjectConfigurationUnqualified(tree, projectName);
|
|
102
87
|
const existingComponents = config?.metadata?.components ?? [];
|
|
103
|
-
const alreadyAdded = existingComponents.filter((c)
|
|
88
|
+
const alreadyAdded = existingComponents.filter((c)=>c.generator === info.id && c.name === componentName);
|
|
104
89
|
if (alreadyAdded.length === 0) {
|
|
105
90
|
const componentMetadata = {
|
|
106
91
|
generator: info.id,
|
|
107
92
|
path: componentPath,
|
|
108
|
-
...
|
|
109
|
-
|
|
93
|
+
...componentName ? {
|
|
94
|
+
name: componentName
|
|
95
|
+
} : {},
|
|
96
|
+
...additionalMetadata
|
|
110
97
|
};
|
|
111
98
|
// Place metadata before targets for a stable serialized key order.
|
|
112
99
|
const { targets, ...rest } = config;
|
|
113
|
-
|
|
100
|
+
updateProjectConfiguration(tree, config.name, {
|
|
114
101
|
...rest,
|
|
115
102
|
metadata: {
|
|
116
103
|
...config?.metadata,
|
|
117
|
-
components: [
|
|
104
|
+
components: [
|
|
105
|
+
...existingComponents,
|
|
106
|
+
componentMetadata
|
|
107
|
+
]
|
|
118
108
|
},
|
|
119
|
-
...
|
|
109
|
+
...targets ? {
|
|
110
|
+
targets
|
|
111
|
+
} : {}
|
|
120
112
|
});
|
|
121
113
|
}
|
|
122
114
|
};
|
|
123
|
-
|
|
124
|
-
const targetDependencyEquals = (a, b) => {
|
|
115
|
+
const targetDependencyEquals = (a, b)=>{
|
|
125
116
|
if (typeof a === 'string' || typeof b === 'string') {
|
|
126
117
|
return a === b;
|
|
127
118
|
}
|
|
128
119
|
if (a.target !== b.target || a.params !== b.params) {
|
|
129
120
|
return false;
|
|
130
121
|
}
|
|
131
|
-
const aProjects = Array.isArray(a.projects)
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
? b.projects
|
|
138
|
-
: b.projects !== undefined
|
|
139
|
-
? [b.projects]
|
|
140
|
-
: [];
|
|
122
|
+
const aProjects = Array.isArray(a.projects) ? a.projects : a.projects !== undefined ? [
|
|
123
|
+
a.projects
|
|
124
|
+
] : [];
|
|
125
|
+
const bProjects = Array.isArray(b.projects) ? b.projects : b.projects !== undefined ? [
|
|
126
|
+
b.projects
|
|
127
|
+
] : [];
|
|
141
128
|
if (aProjects.length !== bProjects.length) {
|
|
142
129
|
return false;
|
|
143
130
|
}
|
|
144
|
-
return aProjects.every((p, i)
|
|
131
|
+
return aProjects.every((p, i)=>p === bProjects[i]);
|
|
145
132
|
};
|
|
133
|
+
// The order target properties are authored in. Nx preserves a target's
|
|
134
|
+
// authored key order when it reads then rewrites an existing project.json,
|
|
135
|
+
// except `options` and `configurations`, which it always moves to the end (in
|
|
136
|
+
// that order). Keeping `options`/`configurations` last here therefore makes a
|
|
137
|
+
// generator's first-run output byte-identical to subsequent runs (idempotency);
|
|
138
|
+
// the remaining keys are ordered to read intuitively.
|
|
139
|
+
const NX_TARGET_KEY_ORDER = [
|
|
140
|
+
'executor',
|
|
141
|
+
'dependsOn',
|
|
142
|
+
'continuous',
|
|
143
|
+
'cache',
|
|
144
|
+
'inputs',
|
|
145
|
+
'outputs',
|
|
146
|
+
'metadata',
|
|
147
|
+
'defaultConfiguration',
|
|
148
|
+
'options',
|
|
149
|
+
'configurations'
|
|
150
|
+
];
|
|
151
|
+
/**
|
|
152
|
+
* Reorder a target's keys to match Nx's own serialization order. Nx reorders
|
|
153
|
+
* target properties when it rewrites an existing project.json, so applying the
|
|
154
|
+
* same order when first authoring a target keeps generators idempotent.
|
|
155
|
+
*/ export const normalizeTargetKeyOrder = (target)=>Object.fromEntries(Object.entries(target).sort(([a], [b])=>{
|
|
156
|
+
const ai = NX_TARGET_KEY_ORDER.indexOf(a);
|
|
157
|
+
const bi = NX_TARGET_KEY_ORDER.indexOf(b);
|
|
158
|
+
return (ai === -1 ? NX_TARGET_KEY_ORDER.length : ai) - (bi === -1 ? NX_TARGET_KEY_ORDER.length : bi);
|
|
159
|
+
}));
|
|
146
160
|
/**
|
|
147
161
|
* Mutate the project to add the dependency to the target if not already present
|
|
148
162
|
* Adds the target if not present.
|
|
149
163
|
*
|
|
150
164
|
* Accepts either a string target name (e.g. `'build'`) or a dependency config
|
|
151
|
-
* object (e.g. `{ projects: ['foo'], target: '
|
|
165
|
+
* object (e.g. `{ projects: ['foo'], target: 'dev' }`). Deduplicates
|
|
152
166
|
* using deep equality so re-running a generator does not grow `dependsOn`.
|
|
153
|
-
*/
|
|
154
|
-
const addDependencyToTargetIfNotPresent = (project, target, dependency) => {
|
|
167
|
+
*/ export const addDependencyToTargetIfNotPresent = (project, target, dependency)=>{
|
|
155
168
|
project.targets ??= {};
|
|
156
169
|
project.targets[target] ??= {};
|
|
157
170
|
project.targets[target].dependsOn ??= [];
|
|
158
171
|
const dependsOn = project.targets[target].dependsOn;
|
|
159
172
|
// Leave existing dependencies in place so re-running does not reorder them;
|
|
160
173
|
// only append when the dependency is genuinely absent.
|
|
161
|
-
if (!dependsOn.some((d)
|
|
174
|
+
if (!dependsOn.some((d)=>targetDependencyEquals(d, dependency))) {
|
|
162
175
|
dependsOn.push(dependency);
|
|
163
176
|
}
|
|
177
|
+
// Keep key order aligned with Nx's so first run matches subsequent runs.
|
|
178
|
+
project.targets[target] = normalizeTargetKeyOrder(project.targets[target]);
|
|
179
|
+
};
|
|
180
|
+
/**
|
|
181
|
+
* Register a component's `<name>-dev` target under the project-level `dev`
|
|
182
|
+
* target, so `nx run <project>:dev` starts every component in the project.
|
|
183
|
+
*
|
|
184
|
+
* Component generators author their own continuous `<name>-dev` runner and call
|
|
185
|
+
* this to aggregate it. Every component added to the project accumulates its
|
|
186
|
+
* `<name>-dev` under `dev`. Nx keys tasks by `project:target`, so any
|
|
187
|
+
* dependencies shared between components run exactly once.
|
|
188
|
+
*/ export const addComponentDevTarget = (targets, componentDevTargetName)=>{
|
|
189
|
+
targets['dev'] ??= {
|
|
190
|
+
continuous: true,
|
|
191
|
+
dependsOn: []
|
|
192
|
+
};
|
|
193
|
+
const projectDev = targets['dev'];
|
|
194
|
+
projectDev.continuous = true;
|
|
195
|
+
projectDev.dependsOn ??= [];
|
|
196
|
+
// Append in component-creation order; dedupe keeps re-runs idempotent.
|
|
197
|
+
if (!projectDev.dependsOn.includes(componentDevTargetName)) {
|
|
198
|
+
projectDev.dependsOn.push(componentDevTargetName);
|
|
199
|
+
}
|
|
200
|
+
targets['dev'] = normalizeTargetKeyOrder(projectDev);
|
|
164
201
|
};
|
|
165
|
-
|
|
202
|
+
|
|
166
203
|
//# sourceMappingURL=nx.js.map
|