@aws/nx-plugin 1.0.0-rc.7 → 1.0.0-rc.71
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 +7044 -6135
- package/README.md +9 -7
- package/generators.json +152 -10
- package/migrations.json +161 -0
- package/package.json +41 -22
- package/src/agentcore-gateway/__snapshots__/generator.spec.ts.snap +295 -0
- package/src/agentcore-gateway/agent-connection/generator.d.ts +19 -0
- package/src/agentcore-gateway/agent-connection/generator.js +95 -0
- package/src/agentcore-gateway/agent-connection/generator.js.map +1 -0
- package/src/agentcore-gateway/agent-connection/schema.d.js +6 -0
- package/src/agentcore-gateway/agent-connection/schema.d.js.map +1 -0
- package/src/agentcore-gateway/agent-connection/schema.d.ts +13 -0
- package/src/agentcore-gateway/agent-connection/schema.json +31 -0
- package/src/agentcore-gateway/attach-upstream.d.ts +49 -0
- package/src/agentcore-gateway/attach-upstream.js +59 -0
- package/src/agentcore-gateway/attach-upstream.js.map +1 -0
- package/src/agentcore-gateway/files/cedar/policies/README.md +61 -0
- package/src/agentcore-gateway/files/cedar/policies/permit-all.cedar +26 -0
- package/src/agentcore-gateway/files/project/http/local-dev.ts.template +77 -0
- package/src/agentcore-gateway/files/project/mcp/local-dev.ts.template +134 -0
- package/src/agentcore-gateway/gateway-connection/generator.d.ts +21 -0
- package/src/agentcore-gateway/gateway-connection/generator.js +103 -0
- package/src/agentcore-gateway/gateway-connection/generator.js.map +1 -0
- 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/gateway-connection/schema.d.ts +13 -0
- package/src/agentcore-gateway/gateway-connection/schema.json +31 -0
- package/src/agentcore-gateway/generator.d.ts +89 -0
- package/src/agentcore-gateway/generator.js +212 -0
- package/src/agentcore-gateway/generator.js.map +1 -0
- package/src/agentcore-gateway/mcp-connection/generator.d.ts +19 -0
- package/src/agentcore-gateway/mcp-connection/generator.js +61 -0
- package/src/agentcore-gateway/mcp-connection/generator.js.map +1 -0
- 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/mcp-connection/schema.d.ts +13 -0
- package/src/agentcore-gateway/mcp-connection/schema.json +31 -0
- package/src/agentcore-gateway/react-connection/__snapshots__/generator.spec.ts.snap +68 -0
- package/src/agentcore-gateway/react-connection/generator.d.ts +19 -0
- package/src/agentcore-gateway/react-connection/generator.js +119 -0
- package/src/agentcore-gateway/react-connection/generator.js.map +1 -0
- package/src/agentcore-gateway/react-connection/schema.d.js +6 -0
- package/src/agentcore-gateway/react-connection/schema.d.js.map +1 -0
- package/src/agentcore-gateway/react-connection/schema.d.ts +13 -0
- package/src/agentcore-gateway/react-connection/schema.json +31 -0
- package/src/agentcore-gateway/schema.d.js +6 -0
- package/src/agentcore-gateway/schema.d.js.map +1 -0
- package/src/agentcore-gateway/schema.d.ts +17 -0
- package/src/agentcore-gateway/schema.json +72 -0
- package/src/agentcore-harness/__snapshots__/generator.spec.ts.snap +238 -0
- package/src/agentcore-harness/files/project/README.md.template +83 -0
- package/src/agentcore-harness/files/project/scripts/chat.ts.template +99 -0
- package/src/agentcore-harness/files/project/src/PROMPT.md.template +16 -0
- package/src/agentcore-harness/generator.d.ts +62 -0
- package/src/agentcore-harness/generator.js +158 -0
- package/src/agentcore-harness/generator.js.map +1 -0
- package/src/agentcore-harness/schema.d.js +8 -0
- package/src/agentcore-harness/schema.d.js.map +1 -0
- package/src/agentcore-harness/schema.d.ts +17 -0
- package/src/agentcore-harness/schema.json +53 -0
- package/src/connection/agent-local-dev.d.ts +49 -0
- package/src/connection/agent-local-dev.js +84 -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/gateway-runtime-config.d.ts +19 -0
- package/src/connection/gateway-runtime-config.js +47 -0
- package/src/connection/gateway-runtime-config.js.map +1 -0
- package/src/connection/generator.d.ts +3 -10
- package/src/connection/generator.js +172 -194
- 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/scaffold-catalog.d.ts +267 -0
- package/src/connection/scaffold-catalog.js +347 -0
- package/src/connection/scaffold-catalog.js.map +1 -0
- package/src/connection/schema-resolver.d.ts +5 -0
- package/src/connection/schema-resolver.js +27 -0
- package/src/connection/schema-resolver.js.map +1 -0
- package/src/connection/schema.d.js +6 -0
- package/src/connection/schema.d.js.map +1 -0
- package/src/connection/schema.d.ts +1 -0
- package/src/connection/schema.json +5 -0
- package/src/connection/supported-connections.d.ts +116 -0
- package/src/connection/supported-connections.js +163 -0
- package/src/connection/supported-connections.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 +119 -72
- package/src/infra/app/files/app/README.md.template +8 -4
- package/src/infra/app/files/app/src/main.ts.template +5 -1
- package/src/infra/app/files/app/src/stages/application-stage.ts.template +1 -1
- package/src/infra/app/generator.d.ts +43 -0
- package/src/infra/app/generator.js +195 -127
- 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/infra/app/schema.d.ts +1 -1
- package/src/infra/app/schema.json +5 -0
- package/src/init/generator.d.ts +31 -0
- package/src/init/generator.js +46 -0
- package/src/init/generator.js.map +1 -0
- package/src/init/schema.d.js +6 -0
- package/src/init/schema.d.js.map +1 -0
- package/src/init/schema.d.ts +16 -0
- package/src/init/schema.json +35 -0
- package/src/internal/test-matrix/generator.d.ts +29 -0
- package/src/internal/test-matrix/generator.js +698 -0
- package/src/internal/test-matrix/generator.js.map +1 -0
- package/src/internal/test-matrix/schema.d.js +6 -0
- package/src/internal/test-matrix/schema.d.js.map +1 -0
- package/src/internal/test-matrix/schema.d.ts +12 -0
- package/src/internal/test-matrix/schema.json +21 -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 +65 -68
- 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.d.ts +1 -1
- package/src/license/known-exceptions.js +19 -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/schema.d.ts +2 -0
- package/src/license/schema.json +5 -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/dev-server.d.ts +1 -0
- package/src/mcp-server/dev-server.js +18 -0
- package/src/mcp-server/dev-server.js.map +1 -0
- package/src/mcp-server/generator-info.js +149 -165
- package/src/mcp-server/generator-info.js.map +1 -1
- package/src/mcp-server/guide-pipeline.js +199 -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.d.ts +9 -3
- package/src/mcp-server/schema-registry.js +41 -38
- package/src/mcp-server/schema-registry.js.map +1 -1
- package/src/mcp-server/schema.d.ts +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 +24 -24
- package/src/mcp-server/server.js.map +1 -1
- package/src/mcp-server/tools/add-to-existing-project.d.ts +12 -0
- package/src/mcp-server/tools/add-to-existing-project.js +36 -0
- package/src/mcp-server/tools/add-to-existing-project.js.map +1 -0
- 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.d.ts +1 -1
- package/src/mcp-server/tools/general-guidance.js +55 -32
- 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/mcp-server/tools/upgrade-workspace.d.ts +11 -0
- package/src/mcp-server/tools/upgrade-workspace.js +32 -0
- package/src/mcp-server/tools/upgrade-workspace.js.map +1 -0
- package/src/migrations/latest/py-agent-a2a-httpx-client-per-call/metadata.json +3 -0
- package/src/migrations/latest/py-agent-a2a-httpx-client-per-call/migration.d.ts +6 -0
- package/src/migrations/latest/py-agent-a2a-httpx-client-per-call/migration.js +329 -0
- package/src/migrations/latest/py-agent-a2a-httpx-client-per-call/migration.js.map +1 -0
- package/src/migrations/latest/py-agent-a2a-lifespan-construction/metadata.json +3 -0
- package/src/migrations/latest/py-agent-a2a-lifespan-construction/migration.d.ts +6 -0
- package/src/migrations/latest/py-agent-a2a-lifespan-construction/migration.js +234 -0
- package/src/migrations/latest/py-agent-a2a-lifespan-construction/migration.js.map +1 -0
- package/src/migrations/latest/smithy-server-package-rename/metadata.json +3 -0
- package/src/migrations/latest/smithy-server-package-rename/migration.d.ts +6 -0
- package/src/migrations/latest/smithy-server-package-rename/migration.js +123 -0
- package/src/migrations/latest/smithy-server-package-rename/migration.js.map +1 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/build-system-prompt.ts.fixture +23 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/build-user-prompt.ts.fixture +96 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/config-path.ts.fixture +1 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/file-to-translate.ts.fixture +10 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/get-files-to-translate.ts.fixture +96 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/header.ts.fixture +15 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/log.ts.fixture +18 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/main-call.ts.fixture +6 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/main.ts.fixture +79 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/project-root.ts.fixture +1 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/run-with-concurrency.ts.fixture +57 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/scripts-dir.ts.fixture +1 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/translate-file-for-language.ts.fixture +61 -0
- package/src/migrations/latest/translate-script-whole-file-writes/grit/already-migrated.grit +1 -0
- package/src/migrations/latest/translate-script-whole-file-writes/grit/build-system-prompt.grit +6 -0
- package/src/migrations/latest/translate-script-whole-file-writes/grit/build-user-prompt.grit +6 -0
- package/src/migrations/latest/translate-script-whole-file-writes/grit/config-path.grit +1 -0
- package/src/migrations/latest/translate-script-whole-file-writes/grit/file-to-translate.grit +11 -0
- package/src/migrations/latest/translate-script-whole-file-writes/grit/get-files-to-translate.grit +7 -0
- package/src/migrations/latest/translate-script-whole-file-writes/grit/log.grit +3 -0
- package/src/migrations/latest/translate-script-whole-file-writes/grit/main-call.grit +1 -0
- package/src/migrations/latest/translate-script-whole-file-writes/grit/main.grit +8 -0
- package/src/migrations/latest/translate-script-whole-file-writes/grit/project-root.grit +1 -0
- package/src/migrations/latest/translate-script-whole-file-writes/grit/run-with-concurrency.grit +6 -0
- package/src/migrations/latest/translate-script-whole-file-writes/grit/translate-file-for-language.grit +6 -0
- package/src/migrations/latest/translate-script-whole-file-writes/metadata.json +3 -0
- package/src/migrations/latest/translate-script-whole-file-writes/migration.d.ts +2 -0
- package/src/migrations/latest/translate-script-whole-file-writes/migration.js +103 -0
- package/src/migrations/latest/translate-script-whole-file-writes/migration.js.map +1 -0
- package/src/migrations/latest/translate-script-whole-file-writes/test-fixtures/released-script-first.ts.fixture +430 -0
- package/src/migrations/latest/translate-script-whole-file-writes/test-fixtures/released-script.ts.fixture +431 -0
- package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/migration.js +65 -0
- package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/migration.js +108 -0
- package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/migration.js +128 -0
- package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/migration.js +215 -0
- package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/migration.js +93 -0
- package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/migration.d.ts +96 -0
- package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/migration.js +670 -0
- package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/migration.js +89 -0
- package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/migration.js +449 -0
- package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/migration.js +78 -0
- package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/migration.js.map +1 -0
- package/src/{smithy/project/files/build.Dockerfile.template → migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/rc57-service.Dockerfile.fixture} +1 -4
- package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/__snapshots__/migration.spec.ts.snap +223 -0
- package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/migration.js +217 -0
- package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/__snapshots__/migration.spec.ts.snap +149 -0
- package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/migration.js +195 -0
- package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/__snapshots__/migration.spec.ts.snap +57 -0
- package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/migration.js +77 -0
- package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/__snapshots__/migration.spec.ts.snap +48 -0
- package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/migration.js +91 -0
- package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/migration.js +412 -0
- package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/migration.js +33 -0
- package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/migration.js +83 -0
- package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/legacy-service.Dockerfile.fixture +95 -0
- package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/migration.js +154 -0
- package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/migration.js +71 -0
- package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/migration.js +57 -0
- package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/migration.js.map +1 -0
- package/src/open-api/ts-client/__snapshots__/generator.additional-properties.spec.ts.snap +147 -33
- package/src/open-api/ts-client/__snapshots__/generator.arrays.spec.ts.snap +308 -75
- package/src/open-api/ts-client/__snapshots__/generator.complex-types.spec.ts.snap +298 -74
- package/src/open-api/ts-client/__snapshots__/generator.composite-types.spec.ts.snap +748 -103
- package/src/open-api/ts-client/__snapshots__/generator.content-type.spec.ts.snap +230 -37
- package/src/open-api/ts-client/__snapshots__/generator.duplicate-types.spec.ts.snap +249 -52
- package/src/open-api/ts-client/__snapshots__/generator.edge-cases.spec.ts.snap +5535 -0
- package/src/open-api/ts-client/__snapshots__/generator.fast-api-gaps.spec.ts.snap +736 -0
- package/src/open-api/ts-client/__snapshots__/generator.fast-api.spec.ts.snap +305 -71
- package/src/open-api/ts-client/__snapshots__/generator.multipart.spec.ts.snap +298 -0
- package/src/open-api/ts-client/__snapshots__/generator.primitive-types.spec.ts.snap +353 -82
- package/src/open-api/ts-client/__snapshots__/generator.request.spec.ts.snap +176 -55
- package/src/open-api/ts-client/__snapshots__/generator.reserved-keywords.spec.ts.snap +100 -24
- package/src/open-api/ts-client/__snapshots__/generator.response.spec.ts.snap +147 -33
- package/src/open-api/ts-client/__snapshots__/generator.spec-compliance.spec.ts.snap +1883 -0
- package/src/open-api/ts-client/__snapshots__/generator.streaming.spec.ts.snap +392 -88
- package/src/open-api/ts-client/__snapshots__/generator.tags.spec.ts.snap +200 -48
- package/src/open-api/ts-client/files/client.gen.ts.template +358 -24
- package/src/open-api/ts-client/files/types.gen.ts.template +6 -4
- package/src/open-api/ts-client/generator.js +41 -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/files/options-proxy.gen.ts.template +7 -2
- package/src/open-api/ts-hooks/generator.js +17 -21
- package/src/open-api/ts-hooks/generator.js.map +1 -1
- package/src/open-api/ts-hooks/generator.spec.tsx +70 -0
- 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.d.ts +0 -6
- package/src/open-api/utils/codegen-data/languages.js +59 -66
- package/src/open-api/utils/codegen-data/languages.js.map +1 -1
- package/src/open-api/utils/codegen-data/types.d.ts +255 -10
- package/src/open-api/utils/codegen-data/types.js +54 -30
- package/src/open-api/utils/codegen-data/types.js.map +1 -1
- package/src/open-api/utils/codegen-data.d.ts +2 -2
- package/src/open-api/utils/codegen-data.js +494 -674
- package/src/open-api/utils/codegen-data.js.map +1 -1
- package/src/open-api/utils/normalise.js +437 -246
- 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/parser.d.ts +55 -0
- package/src/open-api/utils/parser.js +787 -0
- package/src/open-api/utils/parser.js.map +1 -0
- 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.d.ts +18 -0
- 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 +101 -20
- package/src/preset/generator.d.ts +14 -1
- package/src/preset/generator.js +76 -151
- 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 +4 -1
- package/src/preset/schema.json +16 -5
- package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +326 -0
- package/src/py/agent/__snapshots__/generator.frameworks.spec.ts.snap +738 -0
- package/src/py/agent/__snapshots__/{generator.spec.ts.snap → generator.protocols.spec.ts.snap} +191 -315
- package/src/py/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +231 -0
- package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client_strands.py.template +29 -0
- package/src/py/agent/a2a-connection/files/langchain/agent-connection/app/__targetAgentSnakeCase___client_langchain.py.template +29 -0
- package/src/py/agent/a2a-connection/generator.d.ts +24 -0
- package/src/py/agent/a2a-connection/generator.js +145 -88
- 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/a2a-connection/schema.d.ts +1 -0
- package/src/py/agent/a2a-connection/schema.json +5 -0
- package/src/py/agent/files/deploy/Dockerfile.template +8 -1
- package/src/py/agent/files/langchain/a2a/main.py.template +94 -0
- package/src/py/agent/files/langchain/ag-ui/main.py.template +87 -0
- package/src/py/agent/files/langchain/common/agent.py.template +30 -0
- package/src/py/agent/files/{http → langchain/http}/init.py.template +17 -25
- package/src/py/agent/files/langchain/http/main.py.template +81 -0
- package/src/py/agent/files/{a2a → strands/a2a}/main.py.template +33 -15
- package/src/py/agent/files/strands/ag-ui/main.py.template +89 -0
- package/src/py/agent/files/{common → strands/common}/agent.py.template +2 -0
- package/src/py/agent/files/strands/http/init.py.template +97 -0
- package/src/py/agent/files/{http → strands/http}/main.py.template +4 -13
- package/src/py/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +184 -0
- package/src/py/agent/gateway-connection/files/agent-connection/app/__gatewaySnakeCase___client_strands.py.template +35 -0
- package/src/py/agent/gateway-connection/files/langchain/agent-connection/app/__gatewaySnakeCase___client_langchain.py.template +34 -0
- package/src/py/agent/gateway-connection/generator.d.ts +33 -0
- package/src/py/agent/gateway-connection/generator.js +153 -0
- package/src/py/agent/gateway-connection/generator.js.map +1 -0
- 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/gateway-connection/schema.d.ts +13 -0
- package/src/py/agent/gateway-connection/schema.json +31 -0
- package/src/py/agent/generator.d.ts +154 -1
- package/src/py/agent/generator.js +396 -197
- package/src/py/agent/generator.js.map +1 -1
- package/src/py/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +154 -89
- package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client_strands.py.template +31 -0
- package/src/py/agent/mcp-connection/files/langchain/agent-connection/app/__mcpServerSnakeCase___client_langchain.py.template +31 -0
- package/src/py/agent/mcp-connection/generator.d.ts +23 -0
- package/src/py/agent/mcp-connection/generator.js +103 -130
- 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/mcp-connection/schema.d.ts +1 -0
- package/src/py/agent/mcp-connection/schema.json +5 -0
- package/src/py/agent/react-connection/__snapshots__/generator.spec.ts.snap +17 -19
- package/src/py/agent/react-connection/generator.d.ts +150 -1
- package/src/py/agent/react-connection/generator.js +105 -65
- 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/react-connection/schema.d.ts +1 -0
- package/src/py/agent/react-connection/schema.json +5 -0
- package/src/py/agent/schema.d.js +6 -0
- package/src/py/agent/schema.d.js.map +1 -0
- package/src/py/agent/schema.d.ts +5 -1
- package/src/py/agent/schema.json +15 -1
- package/src/py/api/generator.js +12 -11
- 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/api/schema.d.ts +1 -0
- package/src/py/api/schema.json +5 -0
- package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +1520 -0
- package/src/py/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +63 -0
- package/src/py/dynamodb/agent-connection/generator.d.ts +10 -0
- package/src/py/dynamodb/agent-connection/generator.js +45 -0
- package/src/py/dynamodb/agent-connection/generator.js.map +1 -0
- 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/agent-connection/schema.d.ts +15 -0
- package/src/py/dynamodb/agent-connection/schema.json +27 -0
- package/src/py/dynamodb/fast-api-connection/__snapshots__/generator.spec.ts.snap +32 -0
- package/src/py/dynamodb/fast-api-connection/generator.d.ts +10 -0
- package/src/py/dynamodb/fast-api-connection/generator.js +39 -0
- package/src/py/dynamodb/fast-api-connection/generator.js.map +1 -0
- 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/fast-api-connection/schema.d.ts +13 -0
- package/src/py/dynamodb/fast-api-connection/schema.json +23 -0
- package/src/py/dynamodb/files/__name__/__init__.py.template +6 -0
- package/src/py/dynamodb/files/__name__/client.py.template +39 -0
- package/src/py/dynamodb/files/__name__/entities/__init__.py.template +4 -0
- package/src/py/dynamodb/files/__name__/entities/base.py.template +63 -0
- package/src/py/dynamodb/files/__name__/entities/example.py.template +64 -0
- package/src/py/dynamodb/files/config.json.template +24 -0
- package/src/py/dynamodb/generator.d.ts +39 -0
- package/src/py/dynamodb/generator.js +130 -0
- package/src/py/dynamodb/generator.js.map +1 -0
- package/src/py/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +63 -0
- package/src/py/dynamodb/mcp-server-connection/generator.d.ts +10 -0
- package/src/py/dynamodb/mcp-server-connection/generator.js +45 -0
- package/src/py/dynamodb/mcp-server-connection/generator.js.map +1 -0
- 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/mcp-server-connection/schema.d.ts +15 -0
- package/src/py/dynamodb/mcp-server-connection/schema.json +27 -0
- package/src/py/dynamodb/schema.d.js +6 -0
- package/src/py/dynamodb/schema.d.js.map +1 -0
- package/src/py/dynamodb/schema.d.ts +16 -0
- package/src/py/dynamodb/schema.json +76 -0
- package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +240 -4693
- package/src/py/fast-api/__snapshots__/generator.terraform.spec.ts.snap +5409 -0
- package/src/py/fast-api/files/app/__name__/init.py.template +5 -22
- package/src/py/fast-api/files/app/__name__/main.py.template +4 -1
- package/src/py/fast-api/generator.d.ts +72 -0
- package/src/py/fast-api/generator.js +134 -95
- package/src/py/fast-api/generator.js.map +1 -1
- package/src/py/fast-api/react/__snapshots__/generator.spec.ts.snap +4 -3
- package/src/py/fast-api/react/generator.d.ts +16 -1
- package/src/py/fast-api/react/generator.js +38 -26
- package/src/py/fast-api/react/generator.js.map +1 -1
- package/src/py/fast-api/react/open-api.js +31 -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/react/schema.d.ts +1 -0
- package/src/py/fast-api/react/schema.json +5 -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/fast-api/schema.d.ts +1 -0
- package/src/py/fast-api/schema.json +6 -0
- package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +4 -4
- package/src/py/lambda-function/generator.d.ts +21 -0
- package/src/py/lambda-function/generator.js +82 -62
- 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/lambda-function/schema.d.ts +1 -0
- package/src/py/lambda-function/schema.json +5 -0
- package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +221 -21
- package/src/py/mcp-server/files/deploy/Dockerfile.template +8 -1
- package/src/py/mcp-server/generator.d.ts +68 -0
- package/src/py/mcp-server/generator.js +204 -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/mcp-server/schema.d.ts +1 -0
- package/src/py/mcp-server/schema.json +6 -0
- package/src/py/project/generator.d.ts +27 -1
- package/src/py/project/generator.js +248 -130
- 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/py/project/schema.d.ts +1 -0
- package/src/py/project/schema.json +5 -0
- package/src/py/rdb/__snapshots__/generator.spec.ts.snap +2070 -0
- package/src/py/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +123 -0
- package/src/py/rdb/agent-connection/generator.d.ts +10 -0
- package/src/py/rdb/agent-connection/generator.js +52 -0
- package/src/py/rdb/agent-connection/generator.js.map +1 -0
- package/src/py/rdb/agent-connection/schema.d.js +8 -0
- package/src/py/rdb/agent-connection/schema.d.js.map +1 -0
- package/src/py/rdb/agent-connection/schema.d.ts +15 -0
- package/src/py/rdb/agent-connection/schema.json +27 -0
- package/src/py/rdb/fast-api-connection/__snapshots__/generator.spec.ts.snap +51 -0
- package/src/py/rdb/fast-api-connection/files/__apiModuleName__/dependencies/__rdbNameSnake__.py.template +14 -0
- package/src/py/rdb/fast-api-connection/generator.d.ts +10 -0
- package/src/py/rdb/fast-api-connection/generator.js +56 -0
- package/src/py/rdb/fast-api-connection/generator.js.map +1 -0
- package/src/py/rdb/fast-api-connection/schema.d.js +8 -0
- package/src/py/rdb/fast-api-connection/schema.d.js.map +1 -0
- package/src/py/rdb/fast-api-connection/schema.d.ts +13 -0
- package/src/py/rdb/fast-api-connection/schema.json +23 -0
- package/src/py/rdb/files/Dockerfile.create-db-user.template +14 -0
- package/src/py/rdb/files/Dockerfile.migration.template +14 -0
- package/src/py/rdb/files/__name__/__init__.py.template +3 -0
- package/src/py/rdb/files/__name__/connection.py.template +55 -0
- package/src/py/rdb/files/__name__/create_db_user_handler.py.template +97 -0
- package/src/py/rdb/files/__name__/migration_handler.py.template +36 -0
- package/src/py/rdb/files/__name__/models/__init__.py.template +3 -0
- package/src/py/rdb/files/__name__/models/example.py.template +8 -0
- package/src/py/rdb/files/__name__/utils.py.template +104 -0
- package/src/py/rdb/files/alembic.ini.template +38 -0
- package/src/py/rdb/files/config.json.template +14 -0
- package/src/py/rdb/files/migrations/env.py.template +80 -0
- package/src/py/rdb/files/migrations/script.py.mako.template +28 -0
- package/src/py/rdb/generator.d.ts +103 -0
- package/src/py/rdb/generator.js +328 -0
- package/src/py/rdb/generator.js.map +1 -0
- package/src/py/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +119 -0
- package/src/py/rdb/mcp-server-connection/generator.d.ts +10 -0
- package/src/py/rdb/mcp-server-connection/generator.js +52 -0
- package/src/py/rdb/mcp-server-connection/generator.js.map +1 -0
- package/src/py/rdb/mcp-server-connection/schema.d.js +8 -0
- package/src/py/rdb/mcp-server-connection/schema.d.js.map +1 -0
- package/src/py/rdb/mcp-server-connection/schema.d.ts +15 -0
- package/src/py/rdb/mcp-server-connection/schema.json +27 -0
- package/src/py/rdb/schema.d.js +6 -0
- package/src/py/rdb/schema.d.js.map +1 -0
- package/src/py/rdb/schema.d.ts +16 -0
- package/src/py/rdb/schema.json +78 -0
- package/src/py/rdb/utils.d.ts +6 -0
- package/src/py/rdb/utils.js +16 -0
- package/src/py/rdb/utils.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/src/sdk/license.d.ts +8 -0
- 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 +18 -0
- package/src/sdk/py.js +12 -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 +39 -0
- package/src/sdk/ts.js +41 -0
- package/src/sdk/ts.js.map +1 -0
- package/{sdk/utils/format.d.ts → src/sdk/utils/ast.d.ts} +1 -1
- package/src/sdk/utils/ast.js +6 -0
- package/src/sdk/utils/ast.js.map +1 -0
- package/{sdk/utils/ast.d.ts → src/sdk/utils/format.d.ts} +1 -2
- 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 +245 -242
- package/src/smithy/project/files/{smithy-build.json.template → service/smithy-build.json.template} +5 -5
- package/src/smithy/project/files/{src → service/src}/operations/echo.smithy.template +1 -0
- package/src/smithy/project/files/shapes/smithy-build.json.template +7 -0
- package/src/smithy/project/files/shapes/src/main.smithy.template +11 -0
- package/src/smithy/project/files/ssdk-bundle/ssdk.rolldown.config.mjs.template +52 -0
- package/src/smithy/project/generator.d.ts +90 -0
- package/src/smithy/project/generator.js +223 -56
- 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/project/schema.d.ts +2 -0
- package/src/smithy/project/schema.json +28 -1
- package/src/smithy/react-connection/__snapshots__/generator.spec.ts.snap +1 -1
- package/src/smithy/react-connection/generator.d.ts +15 -0
- package/src/smithy/react-connection/generator.js +54 -48
- 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/react-connection/schema.d.ts +1 -0
- package/src/smithy/react-connection/schema.json +5 -0
- package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +871 -109
- package/src/smithy/ts/api/files/handler.ts.template +3 -3
- package/src/smithy/ts/api/files/local-server.ts.template +3 -3
- package/src/smithy/ts/api/files/operations/echo.ts.template +2 -2
- package/src/smithy/ts/api/files/service.ts.template +3 -3
- package/src/smithy/ts/api/generator.d.ts +88 -0
- package/src/smithy/ts/api/generator.js +187 -114
- 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/smithy/ts/api/schema.d.ts +1 -0
- package/src/smithy/ts/api/schema.json +6 -0
- package/src/terraform/project/files/application/scripts/bootstrap.ts.template +40 -1
- package/src/terraform/project/files/application/src/main.tf.template +6 -1
- package/src/terraform/project/files/application/src/providers.tf.template +1 -1
- package/src/terraform/project/generator.d.ts +50 -0
- package/src/terraform/project/generator.js +212 -111
- 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/terraform/project/schema.d.ts +1 -0
- package/src/terraform/project/schema.json +5 -0
- package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +1182 -184
- package/src/trpc/backend/files/src/client/index.ts.template +1 -1
- package/src/trpc/backend/files/src/handler.ts.template +1 -1
- package/src/trpc/backend/files/src/index.ts.template +5 -5
- package/src/trpc/backend/files/src/init.ts.template +1 -1
- package/src/trpc/backend/files/src/local-server.ts.template +1 -1
- package/src/trpc/backend/files/src/middleware/index.ts.template +7 -7
- package/src/trpc/backend/files/src/procedures/echo.ts.template +3 -3
- package/src/trpc/backend/files/src/router.ts.template +2 -2
- package/src/trpc/backend/files/src/schema/echo.ts.template +2 -2
- package/src/trpc/backend/files/src/schema/index.ts.template +1 -1
- package/src/trpc/backend/generator.d.ts +90 -1
- package/src/trpc/backend/generator.js +177 -100
- 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/backend/schema.d.ts +1 -0
- package/src/trpc/backend/schema.json +6 -0
- package/src/trpc/react/__snapshots__/generator.spec.ts.snap +4 -4
- package/src/trpc/react/files/src/components/__apiNameClassName__ClientProvider.tsx.template +3 -3
- package/src/trpc/react/generator.d.ts +38 -1
- package/src/trpc/react/generator.js +105 -63
- 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/trpc/react/schema.d.ts +1 -0
- package/src/trpc/react/schema.json +5 -0
- package/src/ts/agent/__snapshots__/generator.spec.ts.snap +1452 -25
- package/src/ts/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +258 -0
- package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client-strands.ts.template +23 -0
- package/src/ts/agent/a2a-connection/generator.d.ts +46 -0
- package/src/ts/agent/a2a-connection/generator.js +110 -63
- 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/a2a-connection/schema.d.ts +1 -0
- package/src/ts/agent/a2a-connection/schema.json +5 -0
- package/src/ts/agent/files/a2a/index.ts.template +1 -1
- package/src/ts/agent/files/ag-ui/index.ts.template +36 -11
- package/src/ts/agent/files/common/agent.ts.template +15 -2
- package/src/ts/agent/files/common/session.ts.template +43 -0
- package/src/ts/agent/files/deploy/Dockerfile.template +13 -2
- package/src/ts/agent/files/http/client.ts.template +2 -2
- package/src/ts/agent/files/http/index.ts.template +2 -2
- package/src/ts/agent/files/http/router.ts.template +5 -5
- package/src/ts/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +222 -0
- package/src/ts/agent/gateway-connection/files/agent-connection/app/__gatewayKebabCase__-client-strands.ts.template +30 -0
- package/src/ts/agent/gateway-connection/generator.d.ts +47 -0
- package/src/ts/agent/gateway-connection/generator.js +144 -0
- package/src/ts/agent/gateway-connection/generator.js.map +1 -0
- 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/gateway-connection/schema.d.ts +13 -0
- package/src/ts/agent/gateway-connection/schema.json +31 -0
- package/src/ts/agent/generator.d.ts +205 -0
- package/src/ts/agent/generator.js +339 -156
- package/src/ts/agent/generator.js.map +1 -1
- package/src/ts/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +194 -113
- package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client-strands.ts.template +23 -0
- package/src/ts/agent/mcp-connection/generator.d.ts +37 -0
- package/src/ts/agent/mcp-connection/generator.js +88 -65
- 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/mcp-connection/schema.d.ts +1 -0
- package/src/ts/agent/mcp-connection/schema.json +5 -0
- package/src/ts/agent/react-connection/__snapshots__/generator.spec.ts.snap +8 -4
- package/src/ts/agent/react-connection/files/src/components/__agentNameClassName__AgentClientProvider.tsx.template +2 -1
- package/src/ts/agent/react-connection/generator.d.ts +202 -1
- package/src/ts/agent/react-connection/generator.js +158 -99
- 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/react-connection/schema.d.ts +1 -0
- package/src/ts/agent/react-connection/schema.json +5 -0
- package/src/ts/agent/schema.d.js +6 -0
- package/src/ts/agent/schema.d.js.map +1 -0
- package/src/ts/agent/schema.d.ts +4 -0
- package/src/ts/agent/schema.json +14 -0
- package/src/ts/api/generator.js +16 -16
- 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/api/schema.d.ts +1 -0
- package/src/ts/api/schema.json +5 -0
- package/src/ts/astro-docs/__snapshots__/generator.spec.ts.snap +28 -14
- package/src/ts/astro-docs/files/base/src/content/docs/en/index.mdx.template +2 -2
- package/src/ts/astro-docs/files/base/src/content.config.ts.template +4 -4
- package/src/ts/astro-docs/files/translation/scripts/translate.ts.template +272 -150
- package/src/ts/astro-docs/generator.d.ts +38 -0
- package/src/ts/astro-docs/generator.js +126 -61
- 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/astro-docs/schema.d.ts +2 -2
- package/src/ts/astro-docs/schema.json +3 -3
- package/src/ts/dcr-proxy/__snapshots__/generator.spec.ts.snap +982 -0
- package/src/ts/dcr-proxy/generator.d.ts +34 -0
- package/src/ts/dcr-proxy/generator.js +115 -0
- package/src/ts/dcr-proxy/generator.js.map +1 -0
- package/src/ts/dcr-proxy/schema.d.js +6 -0
- package/src/ts/dcr-proxy/schema.d.js.map +1 -0
- package/src/ts/dcr-proxy/schema.d.ts +13 -0
- package/src/ts/dcr-proxy/schema.json +44 -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/docs/schema.d.ts +1 -4
- package/src/ts/docs/schema.json +3 -3
- package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +400 -518
- package/src/ts/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +23 -5
- package/src/ts/dynamodb/agent-connection/generator.js +27 -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/agent-connection/schema.d.ts +1 -0
- package/src/ts/dynamodb/agent-connection/schema.json +5 -0
- package/src/ts/dynamodb/files/config.json.template +24 -0
- package/src/ts/dynamodb/files/src/client.ts.template +30 -11
- package/src/ts/dynamodb/files/src/entities/example.ts.template +1 -1
- package/src/ts/dynamodb/files/src/entities/index.ts.template +1 -1
- package/src/ts/dynamodb/files/src/index.ts.template +2 -11
- package/src/ts/dynamodb/generator.d.ts +41 -0
- package/src/ts/dynamodb/generator.js +106 -64
- package/src/ts/dynamodb/generator.js.map +1 -1
- package/src/ts/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +23 -5
- package/src/ts/dynamodb/mcp-server-connection/generator.js +27 -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/mcp-server-connection/schema.d.ts +1 -0
- package/src/ts/dynamodb/mcp-server-connection/schema.json +5 -0
- package/src/ts/dynamodb/schema.d.js +6 -0
- package/src/ts/dynamodb/schema.d.js.map +1 -0
- package/src/ts/dynamodb/schema.d.ts +2 -0
- package/src/ts/dynamodb/schema.json +26 -2
- package/src/ts/dynamodb/smithy-connection/__snapshots__/generator.spec.ts.snap +12 -3
- package/src/ts/dynamodb/smithy-connection/generator.js +22 -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/smithy-connection/schema.d.ts +1 -0
- package/src/ts/dynamodb/smithy-connection/schema.json +5 -0
- package/src/ts/dynamodb/trpc-connection/__snapshots__/generator.spec.ts.snap +12 -3
- package/src/ts/dynamodb/trpc-connection/generator.js +22 -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/dynamodb/trpc-connection/schema.d.ts +1 -0
- package/src/ts/dynamodb/trpc-connection/schema.json +5 -0
- package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +8 -6
- package/src/ts/lambda-function/files/handler/__lambdaFunctionKebabCase__.ts.template +2 -1
- package/src/ts/lambda-function/generator.d.ts +38 -0
- package/src/ts/lambda-function/generator.js +98 -65
- 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/lambda-function/schema.d.ts +1 -0
- package/src/ts/lambda-function/schema.json +5 -0
- package/src/ts/lib/__snapshots__/generator.spec.ts.snap +83 -45
- package/src/ts/lib/__snapshots__/vitest.spec.ts.snap +1 -1
- package/src/ts/lib/biome.js +71 -35
- package/src/ts/lib/biome.js.map +1 -1
- package/src/ts/lib/generator.d.ts +7 -0
- package/src/ts/lib/generator.js +115 -103
- package/src/ts/lib/generator.js.map +1 -1
- package/src/ts/lib/grit/vitest-pass-with-no-tests.grit +1 -4
- package/src/ts/lib/schema.d.js +6 -0
- package/src/ts/lib/schema.d.js.map +1 -0
- package/src/ts/lib/schema.d.ts +1 -1
- package/src/ts/lib/schema.json +5 -0
- package/src/ts/lib/ts-project-utils.d.ts +13 -1
- package/src/ts/lib/ts-project-utils.js +96 -71
- package/src/ts/lib/ts-project-utils.js.map +1 -1
- package/src/ts/lib/types.d.ts +6 -0
- package/src/ts/lib/types.js +5 -2
- package/src/ts/lib/types.js.map +1 -1
- package/src/ts/lib/vitest.d.ts +10 -1
- package/src/ts/lib/vitest.js +54 -26
- package/src/ts/lib/vitest.js.map +1 -1
- package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +221 -44
- package/src/ts/mcp-server/files/Dockerfile.template +13 -2
- package/src/ts/mcp-server/generator.d.ts +110 -0
- package/src/ts/mcp-server/generator.js +231 -148
- 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/mcp-server/schema.d.ts +1 -0
- package/src/ts/mcp-server/schema.json +6 -0
- package/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap +28 -13
- package/src/ts/nx-generator/files/common/schema.d.ts.template +1 -0
- package/src/ts/nx-generator/files/common/schema.json.template +5 -0
- package/src/ts/nx-generator/files/local/generator.spec.ts.template +1 -1
- 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 +6 -7
- package/src/ts/nx-generator/generator.d.ts +3 -0
- package/src/ts/nx-generator/generator.js +124 -73
- 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-generator/schema.d.ts +1 -0
- package/src/ts/nx-generator/schema.json +5 -0
- package/src/ts/nx-migration/files/migration.spec.ts.template +26 -0
- package/src/ts/nx-migration/files/migration.ts.template +65 -0
- package/src/ts/nx-migration/files/prompt.md.template +46 -0
- package/src/ts/nx-migration/generator.d.ts +27 -0
- package/src/ts/nx-migration/generator.js +147 -0
- package/src/ts/nx-migration/generator.js.map +1 -0
- package/src/ts/nx-migration/schema.d.js +6 -0
- package/src/ts/nx-migration/schema.d.js.map +1 -0
- package/src/ts/nx-migration/schema.d.ts +13 -0
- package/src/ts/nx-migration/schema.json +63 -0
- package/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap +36 -25
- package/src/ts/nx-plugin/files/mcp-server/resources/GENERAL_GUIDANCE.md.template +5 -6
- 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 +4 -4
- package/src/ts/nx-plugin/generator.d.ts +3 -0
- package/src/ts/nx-plugin/generator.js +67 -50
- 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/schema.json +5 -0
- package/src/ts/nx-plugin/utils.d.ts +27 -2
- package/src/ts/nx-plugin/utils.js +66 -51
- package/src/ts/nx-plugin/utils.js.map +1 -1
- package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +553 -644
- package/src/ts/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +16 -6
- package/src/ts/rdb/agent-connection/generator.js +44 -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/agent-connection/schema.d.ts +1 -0
- package/src/ts/rdb/agent-connection/schema.json +5 -0
- package/src/ts/rdb/files/Dockerfile.template +19 -1
- package/src/ts/rdb/files/config.json.template +14 -0
- package/src/ts/rdb/files/prisma.config.ts.template +6 -5
- package/src/ts/rdb/files/src/create-db-user-handler.ts.template +9 -11
- package/src/ts/rdb/files/src/index.ts.template +1 -2
- package/src/ts/rdb/files/src/migration-handler.ts.template +5 -30
- package/src/ts/rdb/files/src/prisma.ts.template +33 -25
- package/src/ts/rdb/files/src/utils.ts.template +3 -0
- package/src/ts/rdb/generator.d.ts +117 -4
- package/src/ts/rdb/generator.js +257 -138
- package/src/ts/rdb/generator.js.map +1 -1
- package/src/ts/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +16 -6
- package/src/ts/rdb/mcp-server-connection/generator.js +42 -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/mcp-server-connection/schema.d.ts +1 -0
- package/src/ts/rdb/mcp-server-connection/schema.json +5 -0
- package/src/ts/rdb/schema.d.js +6 -0
- package/src/ts/rdb/schema.d.js.map +1 -0
- package/src/ts/rdb/schema.d.ts +1 -0
- package/src/ts/rdb/schema.json +7 -1
- package/src/ts/rdb/smithy-connection/__snapshots__/generator.spec.ts.snap +18 -9
- package/src/ts/rdb/smithy-connection/generator.js +48 -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/smithy-connection/schema.d.ts +1 -0
- package/src/ts/rdb/smithy-connection/schema.json +5 -0
- package/src/ts/rdb/trpc-connection/__snapshots__/generator.spec.ts.snap +12 -3
- package/src/ts/rdb/trpc-connection/generator.js +37 -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/trpc-connection/schema.d.ts +1 -0
- package/src/ts/rdb/trpc-connection/schema.json +5 -0
- package/src/ts/rdb/utils.js +9 -11
- package/src/ts/rdb/utils.js.map +1 -1
- package/src/ts/react-website/agui/files/common/src/hooks/useAgui__agentNameClassName__.tsx.template +17 -16
- package/src/ts/react-website/agui/generator.d.ts +97 -0
- package/src/ts/react-website/agui/generator.js +114 -67
- package/src/ts/react-website/agui/generator.js.map +1 -1
- package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +1391 -644
- package/src/ts/react-website/app/files/app/common/README.md.template +1 -1
- package/src/ts/react-website/app/generator.d.ts +142 -2
- package/src/ts/react-website/app/generator.js +333 -209
- 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.d.ts +1 -1
- package/src/ts/react-website/app/schema.json +12 -6
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.spec.ts.snap +161 -26
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +48 -12
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.ux-provider.spec.ts.snap +0 -20
- package/src/ts/react-website/cognito-auth/files/app/components/CognitoAuth/index.tsx.template +2 -2
- package/src/ts/react-website/cognito-auth/generator.d.ts +25 -1
- package/src/ts/react-website/cognito-auth/generator.js +79 -64
- package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
- package/src/ts/react-website/cognito-auth/grit/cloudscape-auth-menu.grit +3 -1
- package/src/ts/react-website/cognito-auth/grit/none-auth-menu.grit +1 -0
- package/src/ts/react-website/cognito-auth/grit/shadcn-auth-menu.grit +3 -1
- package/src/ts/react-website/cognito-auth/grit/shadcn-state-declarations.grit +3 -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/schema.d.ts +1 -0
- package/src/ts/react-website/cognito-auth/schema.json +5 -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/react-website/runtime-config/schema.d.ts +1 -0
- package/src/ts/react-website/runtime-config/schema.json +5 -0
- package/src/ts/sync/generator.js +137 -60
- 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.d.ts +1 -1
- package/src/ts/website/app/schema.json +11 -6
- package/src/ts/website/auth/generator.d.ts +1 -1
- package/src/ts/website/auth/generator.js +11 -10
- 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/ts/website/auth/schema.d.ts +1 -0
- package/src/ts/website/auth/schema.json +5 -0
- package/src/utils/__snapshots__/shared-constructs.spec.ts.snap +21 -0
- package/src/utils/add-dependencies.d.ts +38 -0
- package/src/utils/add-dependencies.js +83 -0
- package/src/utils/add-dependencies.js.map +1 -0
- package/src/utils/agent-chat/agent-chat.d.ts +31 -0
- package/src/utils/agent-chat/agent-chat.js +31 -0
- package/src/utils/agent-chat/agent-chat.js.map +1 -0
- package/src/utils/agent-chat/files/a2a/chat.ts.template +33 -0
- package/src/utils/agent-chat/files/ag-ui/chat.ts.template +17 -0
- package/src/utils/agent-chat/files/common/agentcore.ts.template +81 -0
- package/src/utils/agent-chat/files/http-py/chat.ts.template +43 -0
- package/src/utils/agent-chat/files/http-ts/chat.ts.template +54 -0
- package/src/utils/agent-connection/agent-connection.d.ts +139 -26
- package/src/utils/agent-connection/agent-connection.js +500 -103
- package/src/utils/agent-connection/agent-connection.js.map +1 -1
- package/src/utils/agent-connection/files/core-a2a/agentcore-a2a-client-config.ts.template +93 -0
- package/src/utils/agent-connection/files/core-auth/agentcore-endpoints.ts.template +37 -0
- package/src/utils/agent-connection/files/core-auth/agentcore-fetch.ts.template +54 -0
- package/src/utils/agent-connection/files/core-gateway/agentcore-gateway-mcp-transport.ts.template +41 -0
- package/src/utils/agent-connection/files/core-mcp/agentcore-mcp-transport.ts.template +70 -0
- package/src/utils/agent-connection/files/core-runtime-config/runtime-config.ts.template +33 -33
- package/src/utils/agent-connection/files/core-shared/agentcore-transport.ts.template +39 -0
- package/src/utils/agent-connection/files/core-strands/a2a/agentcore-a2a-client-strands.ts.template +61 -0
- package/src/utils/agent-connection/files/core-strands/base/model-errors-strands.ts.template +47 -0
- package/src/utils/agent-connection/files/core-strands/base/tool-errors-strands.ts.template +29 -0
- package/src/utils/agent-connection/files/{core-runtime-config/with-session-id.ts.template → core-strands/base/with-session-id-strands.ts.template} +1 -1
- package/src/utils/agent-connection/files/core-strands/gateway/agentcore-gateway-mcp-client-strands.ts.template +26 -0
- package/src/utils/agent-connection/files/core-strands/mcp/agentcore-mcp-client-strands.ts.template +27 -0
- package/src/utils/agent-connection/files/py-core-a2a/agentcore_a2a_client_config.py.template +43 -0
- package/src/utils/agent-connection/files/py-core-auth/agentcore_endpoints.py.template +47 -0
- package/src/utils/agent-connection/files/py-core-auth/auth/session.py.template +51 -0
- package/src/utils/agent-connection/files/py-core-gateway/agentcore_gateway_mcp_transport.py.template +28 -0
- package/src/utils/agent-connection/files/py-core-langchain/a2a/agentcore_a2a_client_langchain.py.template +105 -0
- package/src/utils/agent-connection/files/py-core-langchain/gateway/agentcore_gateway_mcp_client_langchain.py.template +57 -0
- package/src/utils/agent-connection/files/py-core-langchain/mcp/agentcore_mcp_client_langchain.py.template +64 -0
- package/src/utils/agent-connection/files/py-core-mcp/agentcore_mcp_transport.py.template +34 -0
- package/src/utils/agent-connection/files/py-core-runtime-config/runtime_config.py.template +6 -18
- package/src/utils/agent-connection/files/py-core-runtime-config/session_context.py.template +2 -2
- package/src/utils/agent-connection/files/py-core-shared/agentcore_transport.py.template +40 -0
- package/src/utils/agent-connection/files/py-core-strands/a2a/agentcore_a2a_client_strands.py.template +111 -0
- package/src/utils/agent-connection/files/py-core-strands/base/model_errors_strands.py.template +40 -0
- package/src/utils/agent-connection/files/{py-core-runtime-config/with_session_id.py.template → py-core-strands/base/with_session_id_strands.py.template} +2 -2
- package/src/utils/agent-connection/files/py-core-strands/gateway/agentcore_gateway_mcp_client_strands.py.template +22 -0
- package/src/utils/agent-connection/files/py-core-strands/mcp/agentcore_mcp_client_strands.py.template +30 -0
- package/src/utils/agent-core-constructs/agent-core-constructs.d.ts +79 -0
- package/src/utils/agent-core-constructs/agent-core-constructs.js +212 -38
- package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
- package/src/utils/agent-core-constructs/files/cdk/app/agent-core/__nameKebabCase__/__nameKebabCase__.ts.template +170 -6
- package/src/utils/agent-core-constructs/files/cdk/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.ts.template +87 -0
- package/src/utils/agent-core-constructs/files/cdk/app/agentcore-harness/__nameKebabCase__/__nameKebabCase__.ts.template +366 -0
- package/src/utils/agent-core-constructs/files/cdk/core/agentcore-gateway/agentcore-gateway.ts.template +624 -0
- package/src/utils/agent-core-constructs/files/cdk/core/agentcore-gateway/readiness-probe/index.js.template +55 -0
- package/src/utils/agent-core-constructs/files/terraform/app/agent-core/__nameKebabCase__/__nameKebabCase__.tf.template +212 -1
- package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.tf.template +521 -0
- package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/render-cedar.cjs.template +13 -0
- package/src/utils/agent-core-constructs/files/terraform/app/agentcore-harness/__nameKebabCase__/__nameKebabCase__.tf.template +282 -0
- package/src/utils/agent-core-constructs/files/terraform/core/agent-core/runtime.tf.template +159 -13
- package/src/utils/agent-core-constructs/files/terraform/core/agentcore-gateway/gateway.tf.template +14 -0
- package/src/utils/api-constructs/api-constructs.d.ts +30 -2
- package/src/utils/api-constructs/api-constructs.js +82 -32
- package/src/utils/api-constructs/api-constructs.js.map +1 -1
- package/src/utils/api-constructs/files/cdk/app/apis/http/__apiNameKebabCase__.ts.template +20 -15
- package/src/utils/api-constructs/files/cdk/app/apis/rest/__apiNameKebabCase__.ts.template +24 -16
- package/src/utils/api-constructs/files/cdk/core/api/http/http-api.ts.template +26 -9
- package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account/index.js.template +70 -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 +56 -17
- package/src/utils/api-constructs/files/cdk/core/api/trpc/trpc-utils.ts.template +1 -1
- package/src/utils/api-constructs/files/cdk/core/api/utils/utils.ts.template +61 -7
- package/src/utils/api-constructs/files/terraform/app/apis/http/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +101 -12
- package/src/utils/api-constructs/files/terraform/app/apis/rest/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +194 -8
- 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 +18 -20
- package/src/utils/ast/website.js.map +1 -1
- package/src/utils/ast.d.ts +9 -0
- package/src/utils/ast.js +125 -86
- package/src/utils/ast.js.map +1 -1
- package/src/utils/base-tsconfig.d.ts +30 -0
- package/src/utils/base-tsconfig.js +32 -0
- package/src/utils/base-tsconfig.js.map +1 -0
- package/src/utils/bundle/bundle.d.ts +6 -1
- package/src/utils/bundle/bundle.js +58 -48
- package/src/utils/bundle/bundle.js.map +1 -1
- package/src/utils/commands.d.ts +14 -3
- package/src/utils/commands.js +83 -28
- package/src/utils/commands.js.map +1 -1
- package/src/utils/config/index.d.ts +18 -2
- package/src/utils/config/index.js +5 -4
- package/src/utils/config/index.js.map +1 -1
- package/src/utils/config/utils.d.ts +8 -2
- package/src/utils/config/utils.js +56 -59
- package/src/utils/config/utils.js.map +1 -1
- package/src/utils/connection/open-api/files/components/__apiNameClassName__Provider.tsx.template +16 -3
- package/src/utils/connection/open-api/react.d.ts +31 -5
- package/src/utils/connection/open-api/react.js +106 -76
- 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/dcr-proxy-constructs/dcr-proxy-constructs.d.ts +38 -0
- package/src/utils/dcr-proxy-constructs/dcr-proxy-constructs.js +93 -0
- package/src/utils/dcr-proxy-constructs/dcr-proxy-constructs.js.map +1 -0
- package/src/utils/dcr-proxy-constructs/files/cdk/app/dcr-proxies/__nameKebabCase__/__nameKebabCase__.ts.template +227 -0
- package/src/utils/dcr-proxy-constructs/files/project/src/handlers/authorization-server-metadata.ts.template +39 -0
- package/src/utils/dcr-proxy-constructs/files/project/src/handlers/authorize.ts.template +26 -0
- package/src/utils/dcr-proxy-constructs/files/project/src/handlers/mcp-proxy.ts.template +89 -0
- package/src/utils/dcr-proxy-constructs/files/project/src/handlers/protected-resource-metadata.ts.template +13 -0
- package/src/utils/dcr-proxy-constructs/files/project/src/handlers/register.ts.template +70 -0
- package/src/utils/dcr-proxy-constructs/files/project/src/handlers/token.ts.template +75 -0
- package/src/utils/dcr-proxy-constructs/files/terraform/app/dcr-proxies/__nameKebabCase__/__nameKebabCase__.tf.template +410 -0
- package/src/utils/declared-dependencies.d.ts +140 -0
- package/src/utils/declared-dependencies.js +64 -0
- package/src/utils/declared-dependencies.js.map +1 -0
- package/src/utils/dependencies.d.ts +18 -0
- package/src/utils/dependencies.js +206 -0
- package/src/utils/dependencies.js.map +1 -0
- package/src/utils/docker.d.ts +89 -0
- package/src/utils/docker.js +125 -0
- package/src/utils/docker.js.map +1 -0
- package/src/utils/dynamodb-constructs/dynamodb-constructs.d.ts +1 -1
- package/src/utils/dynamodb-constructs/dynamodb-constructs.js +39 -41
- package/src/utils/dynamodb-constructs/dynamodb-constructs.js.map +1 -1
- package/src/utils/dynamodb-constructs/files/cdk/app/dynamodb/__nameKebabCase__.ts.template +18 -5
- package/src/utils/dynamodb-constructs/files/cdk/core/dynamodb.ts.template +1 -1
- package/src/utils/dynamodb-constructs/files/terraform/app/dynamodb/__nameKebabCase__/__nameKebabCase__.tf.template +24 -17
- package/src/utils/dynamodb-constructs/files/terraform/core/dynamodb/dynamodb.tf.template +1 -1
- package/src/utils/files/common/constructs/src/core/cloudfront.ts.template +14 -0
- package/src/utils/files/common/constructs/src/core/index.ts.template +5 -4
- package/src/utils/files/common/constructs/src/index.ts.template +2 -2
- package/src/utils/files/common/infra-config/src/index.ts.template +3 -3
- package/src/utils/files/common/infra-config/src/resolve-stage.ts.template +2 -2
- package/src/utils/files/common/infra-config/src/stages.config.ts.template +1 -1
- package/src/{ts/dynamodb/files/scripts → utils/files/common/scripts/src/dynamodb}/create-local-table.ts.template +65 -31
- package/src/utils/files/common/scripts/src/dynamodb/pull-image.ts.template +13 -0
- package/src/utils/files/common/scripts/src/dynamodb/start-container.ts.template +103 -0
- package/src/utils/files/common/scripts/src/infra/infra-deploy.ts.template +2 -0
- package/src/utils/files/common/scripts/src/infra/infra-destroy.ts.template +2 -0
- package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/cdk-command.ts.template +6 -3
- package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/run.ts.template +3 -3
- 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/shared/pull-image.ts.template +16 -0
- package/src/utils/files/common/scripts/src/rdb/shared/start-container.ts.template +115 -0
- package/src/utils/files/common/shadcn/readme/README.md.template +3 -3
- package/src/utils/files/common/shadcn/src/index.ts.template +2 -2
- package/src/utils/files/shadcn/components.json.template +1 -1
- package/src/utils/files/terraform/src/core/asset-bucket/asset-bucket.tf.template +63 -72
- 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 +12 -6
- 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 +9 -4
- package/src/utils/files/website/hooks/sigv4/useSigV4.tsx.template +1 -1
- package/src/utils/format.d.ts +39 -4
- package/src/utils/format.js +318 -198
- package/src/utils/format.js.map +1 -1
- package/src/utils/fs.d.ts +24 -5
- package/src/utils/fs.js +40 -15
- package/src/utils/fs.js.map +1 -1
- package/src/utils/function-constructs/files/cdk/app/lambda-functions/__nameKebabCase__.ts.template +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 +22 -25
- 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 +153 -24
- package/src/utils/identity-constructs/files/terraform/core/user-identity/add-callback-url/add-callback-url.tf.template +28 -9
- package/src/utils/identity-constructs/files/terraform/core/user-identity/identity/identity.tf.template +129 -12
- package/src/utils/identity-constructs/files/terraform/core/user-identity/main.tf.template +7 -0
- package/src/utils/identity-constructs/identity-constructs.d.ts +10 -0
- package/src/utils/identity-constructs/identity-constructs.js +52 -31
- package/src/utils/identity-constructs/identity-constructs.js.map +1 -1
- package/src/utils/init.d.ts +72 -0
- package/src/utils/init.js +300 -0
- package/src/utils/init.js.map +1 -0
- package/src/utils/install.d.ts +32 -0
- package/src/utils/install.js +58 -0
- package/src/utils/install.js.map +1 -0
- package/src/utils/js.js +27 -20
- package/src/utils/js.js.map +1 -1
- package/src/utils/mcp.d.ts +9 -0
- package/src/utils/mcp.js +42 -41
- package/src/utils/mcp.js.map +1 -1
- package/src/utils/metrics.d.ts +7 -1
- package/src/utils/metrics.js +61 -46
- package/src/utils/metrics.js.map +1 -1
- package/src/utils/migration-manifest.d.ts +58 -0
- package/src/utils/migration-manifest.js +76 -0
- package/src/utils/migration-manifest.js.map +1 -0
- package/src/utils/migration-versions.d.ts +145 -0
- package/src/utils/migration-versions.js +250 -0
- package/src/utils/migration-versions.js.map +1 -0
- package/src/utils/mock-project-graph.js +8 -12
- package/src/utils/mock-project-graph.js.map +1 -1
- package/src/utils/module-format.d.ts +25 -0
- package/src/utils/module-format.js +45 -0
- package/src/utils/module-format.js.map +1 -0
- package/src/utils/names.d.ts +22 -0
- package/src/utils/names.js +44 -48
- package/src/utils/names.js.map +1 -1
- package/src/utils/npm-scope.d.ts +0 -4
- package/src/utils/npm-scope.js +7 -20
- package/src/utils/npm-scope.js.map +1 -1
- package/src/utils/nx.d.ts +74 -3
- package/src/utils/nx.js +196 -75
- 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.d.ts +1 -12
- package/src/utils/pnpm-workspace.js +16 -43
- package/src/utils/pnpm-workspace.js.map +1 -1
- package/src/utils/port.d.ts +28 -6
- package/src/utils/port.js +67 -28
- package/src/utils/port.js.map +1 -1
- package/src/utils/project-package-json.d.ts +39 -0
- package/src/utils/project-package-json.js +119 -0
- package/src/utils/project-package-json.js.map +1 -0
- package/src/utils/py.d.ts +17 -3
- package/src/utils/py.js +73 -48
- package/src/utils/py.js.map +1 -1
- package/src/utils/rdb-constructs/files/cdk/app/dbs/__nameKebabCase__.ts.template +72 -18
- package/src/utils/rdb-constructs/files/cdk/core/rdb/aurora.ts.template +112 -88
- package/src/utils/rdb-constructs/files/terraform/app/dbs/__nameKebabCase__/__nameKebabCase__.tf.template +127 -53
- package/src/utils/rdb-constructs/files/terraform/core/rdb/aurora/aurora.tf.template +60 -53
- package/src/utils/rdb-constructs/rdb-constructs.d.ts +12 -1
- package/src/utils/rdb-constructs/rdb-constructs.js +38 -41
- package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
- package/src/utils/ruff.d.ts +59 -0
- package/src/utils/ruff.js +140 -0
- package/src/utils/ruff.js.map +1 -0
- package/src/utils/shared-constructs-constants.d.ts +46 -4
- package/src/utils/shared-constructs-constants.js +50 -15
- package/src/utils/shared-constructs-constants.js.map +1 -1
- package/src/utils/shared-constructs.d.ts +4 -1
- package/src/utils/shared-constructs.js +62 -67
- package/src/utils/shared-constructs.js.map +1 -1
- package/src/utils/shared-dynamodb-scripts.d.ts +18 -0
- package/src/utils/shared-dynamodb-scripts.js +35 -0
- package/src/utils/shared-dynamodb-scripts.js.map +1 -0
- package/src/utils/shared-infra-config.js +31 -30
- package/src/utils/shared-infra-config.js.map +1 -1
- package/src/utils/shared-infra-scripts.d.ts +26 -0
- package/src/utils/shared-infra-scripts.js +58 -0
- package/src/utils/shared-infra-scripts.js.map +1 -0
- package/src/utils/shared-rdb-scripts.d.ts +27 -0
- package/src/utils/shared-rdb-scripts.js +59 -0
- package/src/utils/shared-rdb-scripts.js.map +1 -0
- package/src/utils/shared-scripts.d.ts +1 -4
- package/src/utils/shared-scripts.js +12 -38
- package/src/utils/shared-scripts.js.map +1 -1
- package/src/utils/shared-shadcn.d.ts +26 -1
- package/src/utils/shared-shadcn.js +93 -67
- package/src/utils/shared-shadcn.js.map +1 -1
- package/src/utils/smithy.d.ts +59 -0
- package/src/utils/smithy.js +73 -0
- package/src/utils/smithy.js.map +1 -0
- package/src/utils/test-git.d.ts +39 -0
- package/src/utils/test-git.js +117 -0
- package/src/utils/test-git.js.map +1 -0
- package/src/utils/test.d.ts +10 -0
- package/src/utils/test.js +44 -25
- package/src/utils/test.js.map +1 -1
- package/src/utils/toml.d.ts +5 -0
- package/src/utils/toml.js +17 -15
- package/src/utils/toml.js.map +1 -1
- package/src/utils/version-upgrade-migration/migration.d.ts +14 -0
- package/src/utils/version-upgrade-migration/migration.js +16 -0
- package/src/utils/version-upgrade-migration/migration.js.map +1 -0
- package/src/utils/version-upgrade-migration/nx-package-updates.d.ts +45 -0
- package/src/utils/version-upgrade-migration/nx-package-updates.js +50 -0
- package/src/utils/version-upgrade-migration/nx-package-updates.js.map +1 -0
- package/src/utils/version-upgrade-migration/owned-dependencies.d.ts +76 -0
- package/src/utils/version-upgrade-migration/owned-dependencies.js +146 -0
- package/src/utils/version-upgrade-migration/owned-dependencies.js.map +1 -0
- package/src/utils/version-upgrade-migration/register.d.ts +29 -0
- package/src/utils/version-upgrade-migration/register.js +42 -0
- package/src/utils/version-upgrade-migration/register.js.map +1 -0
- package/src/utils/version-upgrade-migration/sync-embedded-versions.d.ts +26 -0
- package/src/utils/version-upgrade-migration/sync-embedded-versions.js +352 -0
- package/src/utils/version-upgrade-migration/sync-embedded-versions.js.map +1 -0
- package/src/utils/version-upgrade-migration/sync-metrics-version.d.ts +13 -0
- package/src/utils/version-upgrade-migration/sync-metrics-version.js +33 -0
- package/src/utils/version-upgrade-migration/sync-metrics-version.js.map +1 -0
- package/src/utils/version-upgrade-migration/sync-vended-versions.d.ts +10 -0
- package/src/utils/version-upgrade-migration/sync-vended-versions.js +518 -0
- package/src/utils/version-upgrade-migration/sync-vended-versions.js.map +1 -0
- package/src/utils/version-upgrade-migration/vended-upgrade.d.ts +14 -0
- package/src/utils/version-upgrade-migration/vended-upgrade.js +40 -0
- package/src/utils/version-upgrade-migration/vended-upgrade.js.map +1 -0
- package/src/utils/versions.d.ts +240 -108
- package/src/utils/versions.js +265 -121
- package/src/utils/versions.js.map +1 -1
- package/src/utils/website-constructs/files/cdk/app/static-websites/__websiteNameKebabCase__.ts.template +2 -2
- package/src/utils/website-constructs/files/cdk/core/static-website.ts.template +207 -41
- 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 +145 -93
- package/src/utils/website-constructs/website-constructs.d.ts +11 -0
- package/src/utils/website-constructs/website-constructs.js +49 -30
- package/src/utils/website-constructs/website-constructs.js.map +1 -1
- package/bin/aws-nx-mcp.d.ts +0 -2
- package/bin/aws-nx-mcp.js +0 -17
- package/bin/aws-nx-mcp.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.d.ts +0 -8
- package/sdk/license.js +0 -13
- 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 -29
- package/sdk/ts.js +0 -47
- 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.d.ts +0 -33
- 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/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client.py.template +0 -22
- package/src/py/agent/files/ag-ui/main.py.template +0 -37
- package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client.py.template +0 -22
- package/src/py/agent/react-connection/serve-local.js +0 -30
- package/src/py/agent/react-connection/serve-local.js.map +0 -1
- package/src/py/agent/scripts/http/chat.ts.template +0 -38
- package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client.ts.template +0 -19
- package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client.ts.template +0 -19
- 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/ts/agent/scripts/http/chat.ts.template +0 -35
- package/src/ts/dynamodb/files/scripts/pull-image.ts.template +0 -15
- package/src/ts/dynamodb/files/scripts/start-container.ts.template +0 -81
- package/src/ts/dynamodb/files/src/constants.ts.template +0 -9
- package/src/ts/dynamodb/files/src/gsi.ts.template +0 -14
- package/src/ts/rdb/files/scripts/pull-image.ts.template +0 -15
- package/src/ts/rdb/files/scripts/start-container.ts.template +0 -84
- package/src/ts/rdb/files/scripts/wait-for-db.ts.template +0 -55
- package/src/ts/rdb/files/src/constants.ts.template +0 -8
- package/src/utils/agent-connection/files/core-a2a/agentcore-a2a-client.ts.template +0 -123
- package/src/utils/agent-connection/files/core-mcp/agentcore-mcp-client.ts.template +0 -128
- package/src/utils/agent-connection/files/py-core-a2a/agentcore_a2a_client.py.template +0 -120
- package/src/utils/agent-connection/files/py-core-mcp/agentcore_mcp_client.py.template +0 -89
- package/src/utils/files/common/scripts/src/infra-deploy.ts.template +0 -2
- package/src/utils/files/common/scripts/src/infra-destroy.ts.template +0 -2
- package/src/utils/files/terraform/scripts/reset-runtime-config.ts.template +0 -25
- /package/src/py/agent/files/{common → strands/common}/__init__.py.template +0 -0
- /package/src/smithy/project/files/{src → service/src}/main.smithy.template +0 -0
- /package/src/utils/files/common/scripts/src/{index.ts.template → infra/index.ts.template} +0 -0
- /package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/credentials.ts.template +0 -0
- /package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/stage-parser.ts.template +0 -0
|
@@ -1,770 +1,590 @@
|
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const names_1 = require("../../utils/names");
|
|
15
|
-
const languages_1 = require("./codegen-data/languages");
|
|
16
|
-
const types_1 = require("./codegen-data/types");
|
|
17
|
-
const normalise_1 = require("./normalise");
|
|
18
|
-
const refs_1 = require("./refs");
|
|
4
|
+
*/ import orderBy from "lodash.orderby";
|
|
5
|
+
import trim from "lodash.trim";
|
|
6
|
+
import uniqBy from "lodash.uniqby";
|
|
7
|
+
import { camelCase, pascalCase, snakeCase, toClassName, upperFirst } from "../../utils/names.js";
|
|
8
|
+
import { toPythonName, toPythonType, toTypeScriptModelName, toTypeScriptName, toTypeScriptType } from "./codegen-data/languages.js";
|
|
9
|
+
import { COLLECTION_TYPES, COMPOSED_SCHEMA_TYPES, createModel, DEFAULT_SERVICE_NAME, indexModelsByName, PRIMITIVE_TYPES, STREAMING_CONTENT_TYPES, VENDOR_EXTENSIONS } from "./codegen-data/types.js";
|
|
10
|
+
import { normaliseOpenApiSpecForCodeGen } from "./normalise.js";
|
|
11
|
+
import { buildClientData, buildInlineModel, compositeMemberSchemas, getSpecOperation, getSpecParametersByKey, getSpecPathParameters, linkModel, specParameterKey } from "./parser.js";
|
|
12
|
+
import { isRef, resolveIfRef, splitRef } from "./refs.js";
|
|
19
13
|
/**
|
|
20
|
-
*
|
|
21
|
-
*/
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
//
|
|
30
|
-
ensureCompositeModels(data);
|
|
31
|
-
const modelsByName = Object.fromEntries(data.models.map((m) => [m.name, m]));
|
|
32
|
-
// Augment operations with additional data
|
|
33
|
-
for (const service of data.services) {
|
|
34
|
-
// Keep track of the request and response models we need the service (ie api client) to import
|
|
35
|
-
const requestModelImports = [];
|
|
36
|
-
const responseModelImports = [];
|
|
37
|
-
for (const op of service.operations) {
|
|
38
|
-
// Extract the operation back from the openapi spec
|
|
39
|
-
const specOp = spec?.paths?.[op.path]?.[op.method.toLowerCase()];
|
|
40
|
-
op.name = op.id ?? op.name;
|
|
41
|
-
op.uniqueName = op.name;
|
|
42
|
-
if (specOp['x-aws-nx-deduplicated-op-id']) {
|
|
43
|
-
op.uniqueName = specOp['x-aws-nx-deduplicated-op-id'];
|
|
44
|
-
}
|
|
45
|
-
if (specOp['x-aws-nx-deduplicated-dot-op-id']) {
|
|
46
|
-
op.dotNotationName = specOp['x-aws-nx-deduplicated-dot-op-id'];
|
|
47
|
-
}
|
|
48
|
-
// Add vendor extensions
|
|
49
|
-
op.vendorExtensions = op.vendorExtensions ?? {};
|
|
50
|
-
copyVendorExtensions(specOp ?? {}, op.vendorExtensions);
|
|
51
|
-
if (specOp) {
|
|
52
|
-
// Add all response models to the response model imports
|
|
53
|
-
responseModelImports.push(...op.responses
|
|
54
|
-
.filter((r) => r.export === 'reference')
|
|
55
|
-
.map((r) => r.type));
|
|
56
|
-
for (const response of op.responses) {
|
|
57
|
-
// Validate that the response is not a composite schema of primitives since we cannot determine what
|
|
58
|
-
// the type of the response is (it all comes back as text!)
|
|
59
|
-
if (response.export === 'reference' &&
|
|
60
|
-
types_1.COMPOSED_SCHEMA_TYPES.has(modelsByName[response.type]?.export)) {
|
|
61
|
-
const composedPrimitives = modelsByName[response.type].composedPrimitives.filter((p) => !['array', 'dictionary'].includes(p.export));
|
|
62
|
-
if (composedPrimitives.length > 0) {
|
|
63
|
-
throw new Error(`Operation "${op.method} ${op.path}" returns a composite schema of primitives with ${(0, lodash_camelcase_1.default)(modelsByName[response.type].export)}, which cannot be distinguished at runtime`);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
const matchingSpecResponse = specOp.responses[`${response.code}`];
|
|
67
|
-
// @hey-api/openapi-ts does not distinguish between returning an "any" or returning "void"
|
|
68
|
-
// We distinguish this by looking back at each response in the spec, and checking whether it
|
|
69
|
-
// has content
|
|
70
|
-
if (matchingSpecResponse) {
|
|
71
|
-
// Resolve the ref if necessary
|
|
72
|
-
const specResponse = (0, refs_1.resolveIfRef)(spec, matchingSpecResponse);
|
|
73
|
-
// When there's no content, we set the type to 'void'
|
|
74
|
-
if (!specResponse.content) {
|
|
75
|
-
response.type = 'void';
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
// Add the response media types
|
|
79
|
-
const mediaTypes = Object.keys(specResponse.content);
|
|
80
|
-
response.mediaTypes = mediaTypes;
|
|
81
|
-
for (const mediaType of mediaTypes) {
|
|
82
|
-
const responseContent = specResponse.content?.[mediaType] ??
|
|
83
|
-
Object.values(specResponse.content)[0];
|
|
84
|
-
const responseSchema = (0, refs_1.resolveIfRef)(spec, responseContent.schema);
|
|
85
|
-
if (responseSchema) {
|
|
86
|
-
await mutateWithOpenapiSchemaProperties(spec, response, responseSchema, modelsByName);
|
|
87
|
-
}
|
|
88
|
-
if (types_1.STREAMING_CONTENT_TYPES.has(mediaType) &&
|
|
89
|
-
'itemSchema' in responseContent) {
|
|
90
|
-
response.isJsonlStreaming = true;
|
|
91
|
-
response.itemSchemaModel =
|
|
92
|
-
await buildOrReferenceModel(spec, modelsByName, responseContent.itemSchema);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
const specParametersByName = Object.fromEntries((specOp?.parameters ?? []).map((p) => {
|
|
100
|
-
const param = (0, refs_1.resolveIfRef)(spec, p);
|
|
101
|
-
return [param.name, param];
|
|
102
|
-
}));
|
|
103
|
-
// Loop through the parameters
|
|
104
|
-
for (const parameter of op.parameters) {
|
|
105
|
-
// Add the request model import
|
|
106
|
-
if (parameter.export === 'reference') {
|
|
107
|
-
requestModelImports.push(parameter.type);
|
|
108
|
-
}
|
|
109
|
-
const specParameter = specParametersByName[parameter.prop];
|
|
110
|
-
const specParameterSchema = (0, refs_1.resolveIfRef)(spec, specParameter?.schema);
|
|
111
|
-
if (specParameterSchema) {
|
|
112
|
-
await mutateWithOpenapiSchemaProperties(spec, parameter, specParameterSchema, modelsByName);
|
|
113
|
-
}
|
|
114
|
-
if (parameter.in === 'body' || parameter.in === 'formData') {
|
|
115
|
-
// Parameter name for the body is 'body'. `formData` bodies arrive
|
|
116
|
-
// under a synthetic `formData` param (hey-api convention) that's
|
|
117
|
-
// logically the body — normalise both shapes to `in === 'body'`
|
|
118
|
-
// so every downstream consumer (including ts-client's request-
|
|
119
|
-
// type composition) sees a single body kind.
|
|
120
|
-
parameter.name = 'body';
|
|
121
|
-
parameter.prop = 'body';
|
|
122
|
-
parameter.in = 'body';
|
|
123
|
-
// The request body is not in the "parameters" section of the openapi spec so we won't have added the schema
|
|
124
|
-
// properties above. Find it here.
|
|
125
|
-
const specBody = (0, refs_1.resolveIfRef)(spec, specOp?.requestBody);
|
|
126
|
-
if (specBody) {
|
|
127
|
-
if (parameter.mediaType) {
|
|
128
|
-
const bodySchema = (0, refs_1.resolveIfRef)(spec, specBody.content?.[parameter.mediaType]?.schema);
|
|
129
|
-
if (bodySchema) {
|
|
130
|
-
await mutateWithOpenapiSchemaProperties(spec, parameter, bodySchema, modelsByName);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
// Track all the media types that can be accepted in the request body
|
|
134
|
-
parameter.mediaTypes = Object.keys(specBody.content);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
else if (['query', 'header'].includes(parameter.in) &&
|
|
138
|
-
specParameter) {
|
|
139
|
-
// Translate style/explode to OpenAPI v2 style collectionFormat
|
|
140
|
-
// https://spec.openapis.org/oas/v3.0.3.html#style-values
|
|
141
|
-
const style = specParameter.style ??
|
|
142
|
-
(parameter.in === 'query' ? 'form' : 'simple');
|
|
143
|
-
const explode = specParameter.explode ?? style === 'form';
|
|
144
|
-
if (parameter.in === 'query') {
|
|
145
|
-
parameter.collectionFormat = explode
|
|
146
|
-
? 'multi'
|
|
147
|
-
: ({
|
|
148
|
-
spaceDelimited: 'ssv',
|
|
149
|
-
pipeDelimited: 'tsv',
|
|
150
|
-
simple: 'csv',
|
|
151
|
-
form: 'csv',
|
|
152
|
-
}[style] ?? 'multi');
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
// parameter.in === "header"
|
|
156
|
-
parameter.collectionFormat = explode ? 'multi' : 'csv';
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
mutateModelWithAdditionalTypes(parameter);
|
|
160
|
-
}
|
|
161
|
-
// Add language types to response models
|
|
162
|
-
(op.responses ?? []).forEach(mutateModelWithAdditionalTypes);
|
|
163
|
-
// Sort responses by code
|
|
164
|
-
op.responses = (0, lodash_orderby_1.default)(op.responses, (r) => r.code);
|
|
165
|
-
// Result is the lowest successful response, otherwise is the 2XX or default response
|
|
166
|
-
const result = op.responses.find((r) => typeof r.code === 'number' && r.code >= 200 && r.code < 300);
|
|
167
|
-
op.result =
|
|
168
|
-
result ??
|
|
169
|
-
op.responses.find((r) => r.code === '2XX' || r.code === 'default');
|
|
170
|
-
// Add variants of operation name
|
|
171
|
-
op.operationIdPascalCase = (0, names_1.pascalCase)(op.uniqueName);
|
|
172
|
-
op.operationIdKebabCase = (0, names_1.kebabCase)(op.uniqueName);
|
|
173
|
-
op.operationIdSnakeCase = (0, languages_1.toPythonName)('operation', op.uniqueName);
|
|
174
|
-
// Add request type name (after operationIdPascalCase is set)
|
|
175
|
-
if (op.parameters && op.parameters.length > 0) {
|
|
176
|
-
const baseRequestTypeName = `${op.operationIdPascalCase}Request`;
|
|
177
|
-
const hasConflict = !!spec.components?.schemas?.[baseRequestTypeName];
|
|
178
|
-
if (hasConflict) {
|
|
179
|
-
// Use OperationRequest suffix when there's a conflict
|
|
180
|
-
op.requestTypeName =
|
|
181
|
-
`${op.operationIdPascalCase}OperationRequest`;
|
|
182
|
-
}
|
|
183
|
-
else {
|
|
184
|
-
// Use standard Request suffix when no conflict
|
|
185
|
-
op.requestTypeName = baseRequestTypeName;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
mutateOperationWithAdditionalData(op);
|
|
189
|
-
}
|
|
190
|
-
// Lexicographical ordering of operations
|
|
191
|
-
service.operations = (0, lodash_orderby_1.default)(service.operations, (op) => op.uniqueName);
|
|
192
|
-
// Add the models to import
|
|
193
|
-
service.modelImports = (0, lodash_orderby_1.default)((0, lodash_uniqby_1.default)([...service.imports, ...requestModelImports, ...responseModelImports], (x) => x));
|
|
194
|
-
// Add the service class name
|
|
195
|
-
service.className = `${service.name}Api`;
|
|
196
|
-
service.classNameSnakeCase = (0, names_1.snakeCase)(service.className);
|
|
197
|
-
service.nameSnakeCase = (0, names_1.snakeCase)(service.name);
|
|
198
|
-
}
|
|
199
|
-
// All operations across all services
|
|
200
|
-
const allOperations = (0, lodash_uniqby_1.default)(data.services.flatMap((s) => s.operations), (o) => o.uniqueName);
|
|
201
|
-
// Add additional models for operation parameters
|
|
14
|
+
* Build the data structure used to generate code from an OpenAPI spec.
|
|
15
|
+
*/ export const buildOpenApiCodeGenData = (inSpec)=>{
|
|
16
|
+
const spec = normaliseOpenApiSpecForCodeGen(inSpec);
|
|
17
|
+
const data = buildClientData(spec);
|
|
18
|
+
const modelsByName = indexModelsByName(data.models);
|
|
19
|
+
for (const service of data.services){
|
|
20
|
+
augmentService(spec, service, modelsByName);
|
|
21
|
+
}
|
|
22
|
+
const allOperations = uniqBy(data.services.flatMap((s)=>s.operations), (o)=>o.uniqueName);
|
|
23
|
+
// A model per operation request parameter position (query/path/body/...).
|
|
202
24
|
data.models = [
|
|
203
25
|
...data.models,
|
|
204
|
-
...allOperations.flatMap((op)
|
|
205
|
-
if (op.parameters && op.parameters.length > 0) {
|
|
206
|
-
// Build a collection of request parameter models to create based on their position (ie 'in' in the openapi spec, eg body, query, path, header, etc)
|
|
207
|
-
const parametersByPosition = {};
|
|
208
|
-
op.parameters
|
|
209
|
-
.filter(
|
|
210
|
-
// We filter out (return false for) request bodies which we "inline" - ie we don't create a property which points to the body, the request will only be the body itself
|
|
211
|
-
(p) => {
|
|
212
|
-
// Always create models for non-body parameters
|
|
213
|
-
if (p.in !== 'body') {
|
|
214
|
-
return true;
|
|
215
|
-
}
|
|
216
|
-
// If the body is the only parameter, we can inline it no matter the type
|
|
217
|
-
if (op.parameters.length === 1) {
|
|
218
|
-
return false;
|
|
219
|
-
}
|
|
220
|
-
// We inline object bodies, so long as they aren't dictionaries (as dictionary keys could clash with other parameters),
|
|
221
|
-
// and so long as they don't have a property name that clashes with another parameter
|
|
222
|
-
const hasClashingPropertyName = (modelsByName?.[p.type]?.properties ?? []).some((prop) => op.parameters.some((param) => param.name === prop.name));
|
|
223
|
-
if (p.export === 'reference' &&
|
|
224
|
-
modelsByName?.[p.type]?.export !== 'dictionary' &&
|
|
225
|
-
!hasClashingPropertyName) {
|
|
226
|
-
return false;
|
|
227
|
-
}
|
|
228
|
-
// Don't inline anything else
|
|
229
|
-
return true;
|
|
230
|
-
})
|
|
231
|
-
.forEach((parameter) => {
|
|
232
|
-
parametersByPosition[parameter.in] = [
|
|
233
|
-
...(parametersByPosition[parameter.in] ?? []),
|
|
234
|
-
parameter,
|
|
235
|
-
];
|
|
236
|
-
});
|
|
237
|
-
// Ensure that if we have an explicit body parameter, it's called "body"
|
|
238
|
-
const requestBodyParameter = parametersByPosition['body']?.[0];
|
|
239
|
-
if (requestBodyParameter) {
|
|
240
|
-
requestBodyParameter.name = 'body';
|
|
241
|
-
requestBodyParameter.prop = 'body';
|
|
242
|
-
}
|
|
243
|
-
op.explicitRequestBodyParameter = requestBodyParameter;
|
|
244
|
-
return Object.entries(parametersByPosition).map(([position, parameters]) => {
|
|
245
|
-
const name = `${op.operationIdPascalCase}Request${(0, names_1.upperFirst)(position)}Parameters`;
|
|
246
|
-
return {
|
|
247
|
-
$refs: [],
|
|
248
|
-
base: name,
|
|
249
|
-
description: op.description,
|
|
250
|
-
enum: null,
|
|
251
|
-
enums: null,
|
|
252
|
-
export: 'interface',
|
|
253
|
-
imports: [],
|
|
254
|
-
in: '',
|
|
255
|
-
link: undefined,
|
|
256
|
-
name,
|
|
257
|
-
properties: parameters,
|
|
258
|
-
template: '',
|
|
259
|
-
type: name,
|
|
260
|
-
isDefinition: false,
|
|
261
|
-
isNullable: false,
|
|
262
|
-
isReadOnly: false,
|
|
263
|
-
isRequired: true,
|
|
264
|
-
};
|
|
265
|
-
});
|
|
266
|
-
}
|
|
267
|
-
return [];
|
|
268
|
-
}),
|
|
26
|
+
...allOperations.flatMap((op)=>buildRequestParameterModels(op, modelsByName))
|
|
269
27
|
];
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
// Add a snake_case name
|
|
273
|
-
model.nameSnakeCase = (0, languages_1.toPythonName)('model', model.name);
|
|
274
|
-
const matchingSpecModel = spec?.components?.schemas?.[model.name];
|
|
275
|
-
if (matchingSpecModel) {
|
|
276
|
-
const specModel = (0, refs_1.resolveIfRef)(spec, matchingSpecModel);
|
|
277
|
-
await mutateWithOpenapiSchemaProperties(spec, model, specModel, modelsByName);
|
|
278
|
-
// Add unique imports
|
|
279
|
-
model.uniqueImports = (0, lodash_orderby_1.default)((0, lodash_uniqby_1.default)([
|
|
280
|
-
...model.imports,
|
|
281
|
-
// Include property imports, if any
|
|
282
|
-
...model.properties
|
|
283
|
-
.filter((p) => p.export === 'reference')
|
|
284
|
-
.map((p) => p.type),
|
|
285
|
-
], (x) => x)).filter((modelImport) => modelImport !== model.name); // Filter out self for recursive model references
|
|
286
|
-
// Add deprecated flag if present
|
|
287
|
-
model.deprecated = specModel.deprecated || false;
|
|
288
|
-
// Augment properties with additional data
|
|
289
|
-
for (const property of model.properties) {
|
|
290
|
-
const matchingSpecProperty = specModel.properties?.[property.name];
|
|
291
|
-
if (matchingSpecProperty) {
|
|
292
|
-
const specProperty = (0, refs_1.resolveIfRef)(spec, matchingSpecProperty);
|
|
293
|
-
await mutateWithOpenapiSchemaProperties(spec, property, specProperty, modelsByName);
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
// Augment properties with additional data
|
|
298
|
-
model.properties.forEach((property) => {
|
|
299
|
-
// Add language-specific names/types
|
|
300
|
-
mutateModelWithAdditionalTypes(property);
|
|
301
|
-
});
|
|
28
|
+
for (const model of data.models){
|
|
29
|
+
augmentModel(spec, model, modelsByName);
|
|
302
30
|
}
|
|
303
|
-
for (const model of data.models)
|
|
304
|
-
|
|
305
|
-
model.typescriptName = (0, languages_1.toTypeScriptModelName)(model.name);
|
|
31
|
+
for (const model of data.models){
|
|
32
|
+
model.typescriptName = toTypeScriptModelName(model.name);
|
|
306
33
|
model.typescriptType = model.typescriptName;
|
|
307
34
|
}
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
operationsByTag[tag] = [...(operationsByTag[tag] ?? []), op];
|
|
320
|
-
});
|
|
321
|
-
}
|
|
322
|
-
else {
|
|
323
|
-
untaggedOperations.push(op);
|
|
324
|
-
}
|
|
325
|
-
});
|
|
326
|
-
// Add top level vendor extensions
|
|
327
|
-
const vendorExtensions = {};
|
|
328
|
-
copyVendorExtensions(spec ?? {}, vendorExtensions);
|
|
35
|
+
for (const model of data.models){
|
|
36
|
+
assertNoClashingPropertyNames(model);
|
|
37
|
+
assertNoConflictingUnionMemberMarshalling(model);
|
|
38
|
+
}
|
|
39
|
+
for (const op of allOperations){
|
|
40
|
+
assertEncodableUrlEncodedBody(op);
|
|
41
|
+
}
|
|
42
|
+
data.models = orderBy(data.models, (d)=>d.name);
|
|
43
|
+
// Default service first, then by name.
|
|
44
|
+
data.services = orderBy(data.services, (s)=>s.name === DEFAULT_SERVICE_NAME ? '' : s.name);
|
|
45
|
+
const { operationsByTag, untaggedOperations } = groupOperationsByTag(allOperations);
|
|
329
46
|
return {
|
|
330
47
|
...data,
|
|
331
48
|
operationsByTag,
|
|
332
49
|
untaggedOperations,
|
|
333
50
|
info: spec.info,
|
|
334
51
|
allOperations,
|
|
335
|
-
vendorExtensions,
|
|
336
|
-
className:
|
|
52
|
+
vendorExtensions: vendorExtensionsOf(spec),
|
|
53
|
+
className: toClassName(spec.info.title)
|
|
337
54
|
};
|
|
338
55
|
};
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
56
|
+
/**
|
|
57
|
+
* Augment a service and each of its operations with the data needed for code
|
|
58
|
+
* generation (names, imports, result/request types, behavioural flags), and
|
|
59
|
+
* compute the set of models the service (ie API client) needs to import.
|
|
60
|
+
*/ const augmentService = (spec, service, modelsByName)=>{
|
|
61
|
+
const modelImports = service.operations.flatMap((op)=>augmentOperation(spec, op, modelsByName));
|
|
62
|
+
service.operations = orderBy(service.operations, (op)=>op.uniqueName);
|
|
63
|
+
service.modelImports = orderBy(uniqBy([
|
|
64
|
+
...service.imports,
|
|
65
|
+
...modelImports
|
|
66
|
+
], (x)=>x));
|
|
67
|
+
service.className = `${service.name}Api`;
|
|
68
|
+
service.nameSnakeCase = snakeCase(service.name);
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Augment a single operation with all the data the templates need, returning
|
|
72
|
+
* the names of the models it references (for the service's import list).
|
|
73
|
+
*/ const augmentOperation = (spec, op, modelsByName)=>{
|
|
74
|
+
const specOp = getSpecOperation(spec, op);
|
|
75
|
+
assignOperationNames(op, specOp);
|
|
76
|
+
op.vendorExtensions = vendorExtensionsOf(specOp);
|
|
77
|
+
const modelImports = [
|
|
78
|
+
...specOp ? augmentResponses(spec, op, specOp, modelsByName) : [],
|
|
79
|
+
...augmentParameters(spec, op, specOp, modelsByName)
|
|
80
|
+
];
|
|
81
|
+
op.responses.forEach(addLanguageTypes);
|
|
82
|
+
op.responses = orderBy(op.responses, (r)=>r.code);
|
|
83
|
+
// Result is the lowest successful response, otherwise the 2XX or default.
|
|
84
|
+
op.result = op.responses.find((r)=>typeof r.code === 'number' && r.code >= 200 && r.code < 300) ?? op.responses.find((r)=>r.code === '2XX' || r.code === 'default');
|
|
85
|
+
op.operationIdPascalCase = pascalCase(op.uniqueName);
|
|
86
|
+
op.operationIdSnakeCase = toPythonName('operation', op.uniqueName);
|
|
87
|
+
if (op.parameters.length > 0) {
|
|
88
|
+
const baseRequestTypeName = `${op.operationIdPascalCase}Request`;
|
|
89
|
+
// Use the OperationRequest suffix when the standard Request name clashes
|
|
90
|
+
// with an existing schema.
|
|
91
|
+
op.requestTypeName = spec.components?.schemas?.[baseRequestTypeName] ? `${op.operationIdPascalCase}OperationRequest` : baseRequestTypeName;
|
|
365
92
|
}
|
|
366
|
-
|
|
93
|
+
augmentOperationBehaviour(op);
|
|
94
|
+
return modelImports;
|
|
367
95
|
};
|
|
368
96
|
/**
|
|
369
|
-
*
|
|
370
|
-
*
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
const
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
paths: {},
|
|
379
|
-
components: {
|
|
380
|
-
schemas: {
|
|
381
|
-
...originalSpec.components?.schemas,
|
|
382
|
-
[targetSchemaName]: schema,
|
|
383
|
-
},
|
|
384
|
-
},
|
|
385
|
-
};
|
|
386
|
-
const data = await buildInitialCodeGenData(spec);
|
|
387
|
-
const model = data.models.find((m) => m.name === targetSchemaName);
|
|
388
|
-
if (!model) {
|
|
389
|
-
throw new Error(`Failed to construct model for schema ${JSON.stringify(schema)}`);
|
|
97
|
+
* Set an operation's name and its deduplicated variants from the vendor
|
|
98
|
+
* extensions the normaliser added.
|
|
99
|
+
*/ const assignOperationNames = (op, specOp)=>{
|
|
100
|
+
const deduplicatedOpId = specOp?.['x-aws-nx-deduplicated-op-id'];
|
|
101
|
+
const dotNotationOpId = specOp?.['x-aws-nx-deduplicated-dot-op-id'];
|
|
102
|
+
op.name = op.id ?? op.name;
|
|
103
|
+
op.uniqueName = deduplicatedOpId ?? op.name;
|
|
104
|
+
if (dotNotationOpId) {
|
|
105
|
+
op.dotNotationName = dotNotationOpId;
|
|
390
106
|
}
|
|
391
|
-
ensureModelLinks(spec, data);
|
|
392
|
-
await mutateWithOpenapiSchemaProperties(spec, model, schema, Object.fromEntries(data.models.map((m) => [m.name, m])));
|
|
393
|
-
return model;
|
|
394
107
|
};
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
108
|
+
/**
|
|
109
|
+
* Augment an operation's response models with schema-derived data, resolving
|
|
110
|
+
* void responses and streaming item schemas. Returns the response model names
|
|
111
|
+
* to import.
|
|
112
|
+
*/ const augmentResponses = (spec, op, specOp, modelsByName)=>{
|
|
113
|
+
const modelImports = op.responses.filter((r)=>r.export === 'reference').map((r)=>r.type);
|
|
114
|
+
for (const response of op.responses){
|
|
115
|
+
// We cannot distinguish a composite of primitives at runtime (it all comes
|
|
116
|
+
// back as text), so validate this away.
|
|
117
|
+
if (response.export === 'reference' && COMPOSED_SCHEMA_TYPES.has(modelsByName[response.type]?.export)) {
|
|
118
|
+
const composedPrimitives = (modelsByName[response.type].composedPrimitives ?? []).filter((p)=>!COLLECTION_TYPES.has(p.export));
|
|
119
|
+
if (composedPrimitives.length > 0) {
|
|
120
|
+
throw new Error(`Operation "${op.method} ${op.path}" returns a composite schema of primitives with ${camelCase(modelsByName[response.type].export)}, which cannot be distinguished at runtime`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
const matchingSpecResponse = specOp.responses[`${response.code}`];
|
|
124
|
+
if (!matchingSpecResponse) continue;
|
|
125
|
+
const specResponse = resolveIfRef(spec, matchingSpecResponse);
|
|
126
|
+
// When there's no content, the response type is 'void'
|
|
127
|
+
if (!specResponse.content) {
|
|
128
|
+
response.type = 'void';
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
const mediaTypes = Object.keys(specResponse.content);
|
|
132
|
+
response.mediaTypes = mediaTypes;
|
|
133
|
+
for (const mediaType of mediaTypes){
|
|
134
|
+
const responseContent = specResponse.content[mediaType];
|
|
135
|
+
const responseSchema = resolveIfRef(spec, responseContent.schema);
|
|
136
|
+
if (responseSchema) {
|
|
137
|
+
augmentModelFromSchema(spec, response, responseSchema, modelsByName);
|
|
138
|
+
}
|
|
139
|
+
if (STREAMING_CONTENT_TYPES.has(mediaType) && 'itemSchema' in responseContent) {
|
|
140
|
+
response.isJsonlStreaming = true;
|
|
141
|
+
response.itemSchemaModel = buildOrReferenceModel(spec, modelsByName, responseContent.itemSchema);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
399
144
|
}
|
|
400
|
-
|
|
401
|
-
// So we build the model here
|
|
402
|
-
return await buildModelForPrimitive(spec, schema);
|
|
145
|
+
return modelImports;
|
|
403
146
|
};
|
|
404
147
|
/**
|
|
405
|
-
*
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
148
|
+
* Augment an operation's parameter models with schema-derived data, resolving
|
|
149
|
+
* request bodies and query/header collection formats. Returns the parameter
|
|
150
|
+
* model names to import.
|
|
151
|
+
*/ const augmentParameters = (spec, op, specOp, modelsByName)=>{
|
|
152
|
+
const specParametersByKey = getSpecParametersByKey(spec, specOp, getSpecPathParameters(spec, op));
|
|
153
|
+
const modelImports = [];
|
|
154
|
+
for (const parameter of op.parameters){
|
|
155
|
+
if (parameter.export === 'reference') {
|
|
156
|
+
modelImports.push(parameter.type);
|
|
411
157
|
}
|
|
158
|
+
const specParameter = specParametersByKey[specParameterKey({
|
|
159
|
+
in: parameter.in,
|
|
160
|
+
name: parameter.prop
|
|
161
|
+
})];
|
|
162
|
+
const specParameterSchema = resolveIfRef(spec, specParameter?.schema);
|
|
163
|
+
if (specParameterSchema) {
|
|
164
|
+
augmentModelFromSchema(spec, parameter, specParameterSchema, modelsByName);
|
|
165
|
+
}
|
|
166
|
+
if (parameter.in === 'body') {
|
|
167
|
+
augmentBodyParameter(spec, parameter, specOp, modelsByName);
|
|
168
|
+
} else if ((parameter.in === 'query' || parameter.in === 'header') && specParameter) {
|
|
169
|
+
parameter.collectionFormat = getCollectionFormat(parameter.in, specParameter);
|
|
170
|
+
if (parameter.in === 'query' && specParameter.allowReserved) {
|
|
171
|
+
parameter.allowReserved = true;
|
|
172
|
+
}
|
|
173
|
+
} else if (parameter.in === 'path' && specParameter) {
|
|
174
|
+
const style = specParameter.style;
|
|
175
|
+
if (style === 'matrix' || style === 'label') {
|
|
176
|
+
parameter.pathStyle = style;
|
|
177
|
+
parameter.pathExplode = !!specParameter.explode;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
addLanguageTypes(parameter);
|
|
181
|
+
}
|
|
182
|
+
return modelImports;
|
|
183
|
+
};
|
|
184
|
+
/**
|
|
185
|
+
* Augment a request body parameter with its schema (the body is not in the
|
|
186
|
+
* spec's `parameters`, so it is resolved from `requestBody` here) and record
|
|
187
|
+
* its acceptable media types.
|
|
188
|
+
*/ const augmentBodyParameter = (spec, parameter, specOp, modelsByName)=>{
|
|
189
|
+
// The request body parameter is named 'body' downstream.
|
|
190
|
+
parameter.name = 'body';
|
|
191
|
+
parameter.prop = 'body';
|
|
192
|
+
const specBody = resolveIfRef(spec, specOp?.requestBody);
|
|
193
|
+
if (!specBody) return;
|
|
194
|
+
if (parameter.mediaType) {
|
|
195
|
+
const bodySchema = resolveIfRef(spec, specBody.content?.[parameter.mediaType]?.schema);
|
|
196
|
+
if (bodySchema) {
|
|
197
|
+
augmentModelFromSchema(spec, parameter, bodySchema, modelsByName);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
// Track all the media types that can be accepted in the request body
|
|
201
|
+
parameter.mediaTypes = Object.keys(specBody.content);
|
|
202
|
+
};
|
|
203
|
+
/**
|
|
204
|
+
* Translate an OpenAPI v3 parameter's style/explode into a v2-style
|
|
205
|
+
* collectionFormat used when serialising array parameters.
|
|
206
|
+
* @see https://spec.openapis.org/oas/v3.0.3.html#style-values
|
|
207
|
+
*/ const getCollectionFormat = (position, specParameter)=>{
|
|
208
|
+
const style = specParameter.style ?? (position === 'query' ? 'form' : 'simple');
|
|
209
|
+
const explode = specParameter.explode ?? style === 'form';
|
|
210
|
+
if (position === 'header') {
|
|
211
|
+
return explode ? 'multi' : 'csv';
|
|
212
|
+
}
|
|
213
|
+
// `deepObject` serialises an object as `key[prop]=value` pairs regardless of
|
|
214
|
+
// explode; the object shape (not array collection) drives its serialisation.
|
|
215
|
+
if (style === 'deepObject') {
|
|
216
|
+
return 'deepObject';
|
|
217
|
+
}
|
|
218
|
+
return explode ? 'multi' : ({
|
|
219
|
+
spaceDelimited: 'ssv',
|
|
220
|
+
pipeDelimited: 'pipes',
|
|
221
|
+
simple: 'csv',
|
|
222
|
+
form: 'csv'
|
|
223
|
+
})[style] ?? 'multi';
|
|
224
|
+
};
|
|
225
|
+
/**
|
|
226
|
+
* Build the request parameter models for an operation — one model per parameter
|
|
227
|
+
* position (query/path/header/cookie/body), named e.g.
|
|
228
|
+
* `FooRequestQueryParameters`. Request bodies that can be represented directly
|
|
229
|
+
* (the sole parameter, or a non-clashing object reference) are inlined rather
|
|
230
|
+
* than given a wrapper model, and recorded on `op.explicitRequestBodyParameter`.
|
|
231
|
+
*/ const buildRequestParameterModels = (op, modelsByName)=>{
|
|
232
|
+
if (!op.parameters || op.parameters.length === 0) {
|
|
233
|
+
return [];
|
|
234
|
+
}
|
|
235
|
+
// Whether the request body can be represented directly, without a wrapper
|
|
236
|
+
// model (ie the request will be the body itself).
|
|
237
|
+
const canInlineBody = (body)=>{
|
|
238
|
+
// If the body is the only parameter, we can inline it no matter the type
|
|
239
|
+
if (op.parameters.length === 1) {
|
|
240
|
+
return true;
|
|
241
|
+
}
|
|
242
|
+
// We inline object bodies, so long as they aren't dictionaries (as
|
|
243
|
+
// dictionary keys could clash with other parameters), and so long as they
|
|
244
|
+
// don't have a property name that clashes with another parameter
|
|
245
|
+
const hasClashingPropertyName = (modelsByName?.[body.type]?.properties ?? []).some((prop)=>op.parameters.some((param)=>param.name === prop.name));
|
|
246
|
+
return body.export === 'reference' && modelsByName?.[body.type]?.export !== 'dictionary' && !hasClashingPropertyName;
|
|
247
|
+
};
|
|
248
|
+
// Group parameters by their position (`in`: query/path/header/cookie/body),
|
|
249
|
+
// dropping any body that can be inlined.
|
|
250
|
+
const parametersByPosition = op.parameters.filter((p)=>!(p.in === 'body' && canInlineBody(p))).reduce((acc, p)=>({
|
|
251
|
+
...acc,
|
|
252
|
+
[p.in]: [
|
|
253
|
+
...acc[p.in] ?? [],
|
|
254
|
+
p
|
|
255
|
+
]
|
|
256
|
+
}), {});
|
|
257
|
+
// The body parameter was already renamed to "body" by augmentBodyParameter.
|
|
258
|
+
op.explicitRequestBodyParameter = parametersByPosition['body']?.[0];
|
|
259
|
+
return Object.entries(parametersByPosition).map(([position, parameters])=>{
|
|
260
|
+
const name = `${op.operationIdPascalCase}Request${upperFirst(position)}Parameters`;
|
|
261
|
+
return createModel({
|
|
262
|
+
description: op.description,
|
|
263
|
+
export: 'interface',
|
|
264
|
+
name,
|
|
265
|
+
properties: parameters,
|
|
266
|
+
type: name,
|
|
267
|
+
isRequired: true
|
|
268
|
+
});
|
|
412
269
|
});
|
|
413
270
|
};
|
|
414
|
-
|
|
271
|
+
/**
|
|
272
|
+
* Augment a single model with schema-derived data (from its matching spec
|
|
273
|
+
* schema, if any) and language-specific names and types.
|
|
274
|
+
*/ const augmentModel = (spec, model, modelsByName)=>{
|
|
275
|
+
model.nameSnakeCase = toPythonName('model', model.name);
|
|
276
|
+
const matchingSpecModel = spec?.components?.schemas?.[model.name];
|
|
277
|
+
if (matchingSpecModel) {
|
|
278
|
+
const specModel = resolveIfRef(spec, matchingSpecModel);
|
|
279
|
+
augmentModelFromSchema(spec, model, specModel, modelsByName);
|
|
280
|
+
for (const property of model.properties){
|
|
281
|
+
const matchingSpecProperty = specModel.properties?.[property.name];
|
|
282
|
+
if (matchingSpecProperty) {
|
|
283
|
+
const specProperty = resolveIfRef(spec, matchingSpecProperty);
|
|
284
|
+
augmentModelFromSchema(spec, property, specProperty, modelsByName);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
model.properties.forEach(addLanguageTypes);
|
|
289
|
+
// Resolve the discriminator's TypeScript property name for marshalling.
|
|
290
|
+
if (model.discriminator) {
|
|
291
|
+
model.discriminator.typescriptPropertyName = toTypeScriptName(model.discriminator.propertyName);
|
|
292
|
+
}
|
|
293
|
+
};
|
|
294
|
+
/**
|
|
295
|
+
* Ensure no two properties/parameters of an object model collapse onto the same
|
|
296
|
+
* TypeScript identifier (e.g. `foo-bar` and `foo_bar` both camelCase to
|
|
297
|
+
* `fooBar`, or a query and header parameter sharing a name within one request
|
|
298
|
+
* position). Such a clash would emit a type with duplicate members that does
|
|
299
|
+
* not compile, so fail fast with an actionable error instead.
|
|
300
|
+
*/ const assertNoClashingPropertyNames = (model)=>{
|
|
301
|
+
const seen = new Map();
|
|
302
|
+
for (const property of model.properties){
|
|
303
|
+
// Composite members are unnamed (their names are empty); skip them.
|
|
304
|
+
if (!property.name) continue;
|
|
305
|
+
const existing = seen.get(property.typescriptName);
|
|
306
|
+
if (existing !== undefined && existing !== property.name) {
|
|
307
|
+
throw new Error(`Property name conflict in "${model.name}": "${existing}" and "${property.name}" both map to the TypeScript name "${property.typescriptName}". Please rename one of these in your OpenAPI specification.`);
|
|
308
|
+
}
|
|
309
|
+
seen.set(property.typescriptName, property.name);
|
|
310
|
+
}
|
|
311
|
+
};
|
|
312
|
+
/**
|
|
313
|
+
* The marshalling semantics of a property — two properties with the same key
|
|
314
|
+
* convert identically on the wire (so either branch's conversion is safe).
|
|
315
|
+
*/ const marshallingKey = (m)=>{
|
|
316
|
+
if ([
|
|
317
|
+
'date',
|
|
318
|
+
'date-time'
|
|
319
|
+
].includes(m.format ?? '')) return 'date';
|
|
320
|
+
if (m.type === 'binary') return 'binary';
|
|
321
|
+
// Enums serialise as their bare primitive (no conversion).
|
|
322
|
+
if (m.isEnum || m.export === 'enum') return 'plain';
|
|
323
|
+
if (COLLECTION_TYPES.has(m.export)) {
|
|
324
|
+
return `${m.export}<${m.link ? marshallingKey(m.link) : 'plain'}>`;
|
|
325
|
+
}
|
|
326
|
+
if (m.export === 'tuple') {
|
|
327
|
+
return `tuple<${m.properties.map(marshallingKey).join(',')}>`;
|
|
328
|
+
}
|
|
329
|
+
if (m.export === 'reference' && !PRIMITIVE_TYPES.has(m.type)) {
|
|
330
|
+
return `ref:${m.type}`;
|
|
331
|
+
}
|
|
332
|
+
return 'plain';
|
|
333
|
+
};
|
|
334
|
+
/**
|
|
335
|
+
* A non-discriminated `oneOf`/`anyOf` of object members marshals by composing
|
|
336
|
+
* every member, taking only the properties present on the value. That is sound
|
|
337
|
+
* exactly when no wire property is claimed by two members with different
|
|
338
|
+
* marshalling (e.g. a `date-time` in one and a plain string in another) —
|
|
339
|
+
* otherwise the branch cannot be determined without guessing, so fail fast and
|
|
340
|
+
* ask for a discriminator rather than corrupt data at runtime.
|
|
341
|
+
*/ const assertNoConflictingUnionMemberMarshalling = (model)=>{
|
|
342
|
+
if (model.export !== 'one-of' && model.export !== 'any-of' || model.discriminator) {
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
const seen = new Map();
|
|
346
|
+
for (const member of model.composedModels ?? []){
|
|
347
|
+
for (const property of member.properties){
|
|
348
|
+
if (!property.name) continue;
|
|
349
|
+
const key = marshallingKey(property);
|
|
350
|
+
const existing = seen.get(property.name);
|
|
351
|
+
if (existing && existing.key !== key) {
|
|
352
|
+
throw new Error(`Schema "${model.name}" is a non-discriminated ${camelCase(model.export)} of "${existing.memberName}" and "${member.name}", which both declare a property "${property.name}" with different types, so the correct conversion cannot be determined. Add a discriminator to the union in your OpenAPI specification (e.g. with Pydantic, Field(discriminator=...)).`);
|
|
353
|
+
}
|
|
354
|
+
if (!existing) {
|
|
355
|
+
seen.set(property.name, {
|
|
356
|
+
memberName: member.name,
|
|
357
|
+
key
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
};
|
|
363
|
+
/**
|
|
364
|
+
* An `application/x-www-form-urlencoded` body is form-encoded as `key=value`
|
|
365
|
+
* pairs, so the wire form is only defined for a schema with named properties
|
|
366
|
+
* (an object) or a primitive sent verbatim. A top-level array or tuple has no
|
|
367
|
+
* property names to key on — encoding it would emit index keys (`0=a&1=b`) that
|
|
368
|
+
* no form parser can decode — so fail fast rather than generate a client that
|
|
369
|
+
* is silently wrong on the wire.
|
|
370
|
+
*/ const assertEncodableUrlEncodedBody = (op)=>{
|
|
371
|
+
const body = op.parametersBody;
|
|
372
|
+
if (!body?.mediaTypes) return;
|
|
373
|
+
const mediaTypes = Array.isArray(body.mediaTypes) ? body.mediaTypes : [
|
|
374
|
+
body.mediaTypes
|
|
375
|
+
];
|
|
376
|
+
// Match the wire media type the client actually sends: JSON is preferred, so
|
|
377
|
+
// an array body offering both JSON and urlencoded is sent as JSON and is fine.
|
|
378
|
+
const chosenMediaType = mediaTypes.find((mt)=>mt === 'application/json' || mt.endsWith('+json')) ?? mediaTypes[0];
|
|
379
|
+
if (chosenMediaType !== 'application/x-www-form-urlencoded') return;
|
|
380
|
+
if (body.isPrimitive) return;
|
|
381
|
+
if (body.export === 'array' || body.export === 'tuple') {
|
|
382
|
+
throw new Error(`Operation ${op.method} ${op.path} has an application/x-www-form-urlencoded request body whose schema is a ${body.export}, which has no defined form encoding. Use an object schema (its properties become the form fields) or a primitive schema (sent verbatim) in your OpenAPI specification.`);
|
|
383
|
+
}
|
|
384
|
+
};
|
|
385
|
+
/**
|
|
386
|
+
* Group operations by their (camelCased) tags, collecting any untagged
|
|
387
|
+
* operations separately.
|
|
388
|
+
*/ const groupOperationsByTag = (allOperations)=>{
|
|
389
|
+
const isTagged = (op)=>!!op.tags && op.tags.length > 0;
|
|
390
|
+
const operationsByTag = allOperations.filter(isTagged).flatMap((op)=>op.tags.map((tag)=>[
|
|
391
|
+
camelCase(tag),
|
|
392
|
+
op
|
|
393
|
+
])).reduce((acc, [tag, op])=>({
|
|
394
|
+
...acc,
|
|
395
|
+
[tag]: [
|
|
396
|
+
...acc[tag] ?? [],
|
|
397
|
+
op
|
|
398
|
+
]
|
|
399
|
+
}), {});
|
|
400
|
+
return {
|
|
401
|
+
operationsByTag,
|
|
402
|
+
untaggedOperations: allOperations.filter((op)=>!isTagged(op))
|
|
403
|
+
};
|
|
404
|
+
};
|
|
405
|
+
/**
|
|
406
|
+
* Resolve a schema to its model: an existing named model for a `$ref`, or a
|
|
407
|
+
* freshly built-and-augmented model for an inline (nested value) schema.
|
|
408
|
+
*/ const buildOrReferenceModel = (spec, modelsByName, schema)=>{
|
|
409
|
+
if (isRef(schema)) {
|
|
410
|
+
const name = splitRef(schema.$ref)[2];
|
|
411
|
+
return modelsByName[name];
|
|
412
|
+
}
|
|
413
|
+
const model = buildInlineModel(spec, schema);
|
|
414
|
+
linkModel(spec, modelsByName, model, schema);
|
|
415
|
+
augmentModelFromSchema(spec, model, schema, modelsByName);
|
|
416
|
+
return model;
|
|
417
|
+
};
|
|
418
|
+
/**
|
|
419
|
+
* The `x-*` vendor extensions declared on an object.
|
|
420
|
+
*/ const vendorExtensionsOf = (object)=>Object.fromEntries(Object.entries(object ?? {}).filter(([key])=>key.startsWith('x-')));
|
|
421
|
+
const augmentModelFromSchema = (spec, model, schema, modelsByName, visited = new Set())=>{
|
|
415
422
|
model.format = schema.format;
|
|
416
|
-
model.isInteger = schema.type === 'integer';
|
|
417
|
-
model.isShort = schema.format === 'int32';
|
|
418
|
-
model.isLong = schema.format === 'int64';
|
|
419
423
|
model.deprecated = !!schema.deprecated;
|
|
420
424
|
model.openapiType = schema.type;
|
|
421
|
-
model.isNotSchema = !!schema.not;
|
|
422
425
|
model.isEnum = !!schema.enum && schema.enum.length > 0;
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
// Use our added vendor extension
|
|
427
|
-
model.isHoisted = !!model.vendorExtensions?.['x-aws-nx-hoisted'];
|
|
428
|
-
// Ensure models with additional properties are handled correctly
|
|
426
|
+
model.vendorExtensions = vendorExtensionsOf(schema);
|
|
427
|
+
// A "dictionary" has only additional properties; an "interface" may mix
|
|
428
|
+
// explicit and additional properties.
|
|
429
429
|
if (schema.additionalProperties) {
|
|
430
|
-
const additionalPropertiesModel =
|
|
431
|
-
// The original models treat _some_ objects with additional properties as a "dictionary", and others as an "interface"
|
|
432
|
-
// For the purposes of our code generation, we define a "dictionary" to be a model with no explicit properties, only
|
|
433
|
-
// additional properties. Interfaces can have a mixture of explicit properties and additional properties.
|
|
430
|
+
const additionalPropertiesModel = buildOrReferenceModel(spec, modelsByName, schema.additionalProperties === true ? {} : schema.additionalProperties);
|
|
434
431
|
if (model.export === 'dictionary') {
|
|
435
|
-
//
|
|
436
|
-
const explicitProperties = model.properties.filter((p)
|
|
432
|
+
// A dictionary carries a self-referential property; the rest are explicit
|
|
433
|
+
const explicitProperties = model.properties.filter((p)=>!(p.export === 'dictionary' && p.name === model.name));
|
|
434
|
+
// Explicit properties make this an interface rather than a dictionary
|
|
437
435
|
if (explicitProperties.length > 0 || schema.patternProperties) {
|
|
438
|
-
// Treat this model as an interface instead of a dictionary, since this has
|
|
439
|
-
// explicit properties
|
|
440
436
|
model.export = 'interface';
|
|
441
437
|
model.hasAdditionalProperties = true;
|
|
442
438
|
model.additionalPropertiesModel = additionalPropertiesModel;
|
|
443
439
|
model.properties = explicitProperties;
|
|
444
440
|
}
|
|
445
|
-
}
|
|
446
|
-
else {
|
|
441
|
+
} else {
|
|
447
442
|
model.hasAdditionalProperties = true;
|
|
448
443
|
model.additionalPropertiesModel = additionalPropertiesModel;
|
|
449
|
-
// There's a special property named [key: string] which is the definition of the additional properties
|
|
450
|
-
// We remove this so we don't render it as a regular property.
|
|
451
|
-
model.properties = (model.properties ?? []).filter((p) => p.name !== '[key: string]');
|
|
452
444
|
}
|
|
453
445
|
}
|
|
454
|
-
//
|
|
446
|
+
// Pattern properties can have different value types per pattern, so the model
|
|
447
|
+
// is an interface rather than a dictionary.
|
|
455
448
|
if (schema.patternProperties) {
|
|
456
|
-
const patternProperties =
|
|
457
|
-
const patternPropertiesModels = [];
|
|
458
|
-
// When there are pattern properties, we don't want to treat models as dictionaries since there can be more than one type of "value"
|
|
459
|
-
// depending on what pattern the key matches
|
|
449
|
+
const patternProperties = resolveIfRef(spec, schema.patternProperties);
|
|
460
450
|
if (model.export === 'dictionary') {
|
|
461
451
|
model.export = 'interface';
|
|
462
452
|
}
|
|
463
|
-
for (const [pattern, patternProperty] of Object.entries(patternProperties)) {
|
|
464
|
-
const patternPropertyModel = await buildOrReferenceModel(spec, modelsByName, patternProperty);
|
|
465
|
-
if (patternPropertyModel) {
|
|
466
|
-
patternPropertiesModels.push({
|
|
467
|
-
pattern,
|
|
468
|
-
model: patternPropertyModel,
|
|
469
|
-
});
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
453
|
model.hasPatternProperties = true;
|
|
473
|
-
model.patternPropertiesModels =
|
|
454
|
+
model.patternPropertiesModels = Object.entries(patternProperties).map(([pattern, patternProperty])=>({
|
|
455
|
+
pattern,
|
|
456
|
+
model: buildOrReferenceModel(spec, modelsByName, patternProperty)
|
|
457
|
+
})).filter((entry)=>!!entry.model);
|
|
474
458
|
}
|
|
475
|
-
|
|
459
|
+
addLanguageTypes(model);
|
|
476
460
|
visited.add(model);
|
|
477
|
-
const
|
|
478
|
-
//
|
|
479
|
-
if (model.export === 'array' &&
|
|
480
|
-
|
|
481
|
-
'items' in schema &&
|
|
482
|
-
schema.items &&
|
|
483
|
-
!visited.has(modelLink)) {
|
|
484
|
-
const subSchema = (0, refs_1.resolveIfRef)(spec, schema.items);
|
|
485
|
-
await mutateWithOpenapiSchemaProperties(spec, modelLink, subSchema, modelsByName, visited);
|
|
486
|
-
}
|
|
487
|
-
// Also apply to object properties recursively
|
|
488
|
-
if (model.export === 'dictionary' &&
|
|
489
|
-
model.link &&
|
|
490
|
-
'additionalProperties' in schema &&
|
|
491
|
-
schema.additionalProperties &&
|
|
492
|
-
!visited.has(modelLink)) {
|
|
493
|
-
const subSchema = (0, refs_1.resolveIfRef)(spec, schema.additionalProperties);
|
|
494
|
-
// Additional properties can be "true" rather than a type
|
|
495
|
-
if (subSchema !== true) {
|
|
496
|
-
await mutateWithOpenapiSchemaProperties(spec, modelLink, subSchema, modelsByName, visited);
|
|
497
|
-
}
|
|
498
|
-
}
|
|
499
|
-
for (const property of model.properties.filter((p) => !visited.has(p) && schema.properties?.[(0, lodash_trim_1.default)(p.name, `"'`)])) {
|
|
500
|
-
const subSchema = (0, refs_1.resolveIfRef)(spec, schema.properties[(0, lodash_trim_1.default)(property.name, `"'`)]);
|
|
501
|
-
await mutateWithOpenapiSchemaProperties(spec, property, subSchema, modelsByName, visited);
|
|
461
|
+
const recurse = (target, subSchema)=>augmentModelFromSchema(spec, target, subSchema, modelsByName, visited);
|
|
462
|
+
// Array element type.
|
|
463
|
+
if (model.export === 'array' && model.link && 'items' in schema && schema.items && !visited.has(model.link)) {
|
|
464
|
+
recurse(model.link, resolveIfRef(spec, schema.items));
|
|
502
465
|
}
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
466
|
+
// Dictionary value type (additionalProperties may be `true` rather than a
|
|
467
|
+
// schema).
|
|
468
|
+
if (model.export === 'dictionary' && model.link && 'additionalProperties' in schema && schema.additionalProperties && !visited.has(model.link)) {
|
|
469
|
+
const subSchema = resolveIfRef(spec, schema.additionalProperties);
|
|
470
|
+
if (subSchema !== true) {
|
|
471
|
+
recurse(model.link, subSchema);
|
|
509
472
|
}
|
|
510
473
|
}
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
const
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
// Ensure set for all models
|
|
519
|
-
data.models.forEach((model) => {
|
|
520
|
-
const schema = (0, refs_1.resolveIfRef)(spec, spec?.components?.schemas?.[model.name]);
|
|
521
|
-
if (schema) {
|
|
522
|
-
// Object schemas should be typed as the model we will create
|
|
523
|
-
if (schema.type === 'object' &&
|
|
524
|
-
(schema.properties || schema.patternProperties)) {
|
|
525
|
-
model.type = model.name;
|
|
474
|
+
// Tuple element types (3.1 `prefixItems`), positionally.
|
|
475
|
+
if (model.export === 'tuple' && 'prefixItems' in schema) {
|
|
476
|
+
const memberSchemas = schema.prefixItems ?? [];
|
|
477
|
+
model.properties.forEach((member, i)=>{
|
|
478
|
+
const subSchema = resolveIfRef(spec, memberSchemas[i]);
|
|
479
|
+
if (subSchema && !visited.has(member)) {
|
|
480
|
+
recurse(member, subSchema);
|
|
526
481
|
}
|
|
527
|
-
_ensureModelLinks(spec, modelsByName, model, schema, visited);
|
|
528
|
-
}
|
|
529
|
-
});
|
|
530
|
-
// Ensure set for all parameters and responses
|
|
531
|
-
data.services.forEach((service) => {
|
|
532
|
-
service.operations.forEach((op) => {
|
|
533
|
-
const specOp = spec?.paths?.[op.path]?.[op.method.toLowerCase()];
|
|
534
|
-
const specParametersByName = Object.fromEntries((specOp?.parameters ?? []).map((p) => {
|
|
535
|
-
const param = (0, refs_1.resolveIfRef)(spec, p);
|
|
536
|
-
return [param.name, param];
|
|
537
|
-
}));
|
|
538
|
-
op.parameters.forEach((parameter) => {
|
|
539
|
-
const specParameter = specParametersByName[parameter.prop];
|
|
540
|
-
const specParameterSchema = (0, refs_1.resolveIfRef)(spec, specParameter?.schema);
|
|
541
|
-
if (specParameterSchema) {
|
|
542
|
-
_ensureModelLinks(spec, modelsByName, parameter, specParameterSchema, visited);
|
|
543
|
-
}
|
|
544
|
-
else if (parameter.in === 'body') {
|
|
545
|
-
// Body is not in the "parameters" section of the OpenAPI spec so we handle it in an explicit case here
|
|
546
|
-
const specBody = (0, refs_1.resolveIfRef)(spec, specOp?.requestBody);
|
|
547
|
-
const specBodySchema = (0, refs_1.resolveIfRef)(spec, specBody?.content?.[parameter.mediaType]?.schema);
|
|
548
|
-
if (specBodySchema) {
|
|
549
|
-
_ensureModelLinks(spec, modelsByName, parameter, specBodySchema, visited);
|
|
550
|
-
}
|
|
551
|
-
}
|
|
552
|
-
});
|
|
553
|
-
op.responses.forEach((response) => {
|
|
554
|
-
const specResponse = (0, refs_1.resolveIfRef)(spec, specOp?.responses?.[response.code]);
|
|
555
|
-
const mediaTypes = Object.keys(specResponse?.content ?? {});
|
|
556
|
-
mediaTypes.forEach((mediaType) => {
|
|
557
|
-
const responseSchema = (0, refs_1.resolveIfRef)(spec, specResponse?.content?.[mediaType]?.schema);
|
|
558
|
-
if (responseSchema) {
|
|
559
|
-
_ensureModelLinks(spec, modelsByName, response, responseSchema, visited);
|
|
560
|
-
}
|
|
561
|
-
});
|
|
562
|
-
});
|
|
563
482
|
});
|
|
564
|
-
});
|
|
565
|
-
};
|
|
566
|
-
const _ensureModelLinks = (spec, modelsByName, model, schema, visited) => {
|
|
567
|
-
if (visited.has(model)) {
|
|
568
|
-
return;
|
|
569
|
-
}
|
|
570
|
-
visited.add(model);
|
|
571
|
-
if (model.export === 'dictionary' &&
|
|
572
|
-
'additionalProperties' in schema &&
|
|
573
|
-
schema.additionalProperties) {
|
|
574
|
-
if ((0, refs_1.isRef)(schema.additionalProperties)) {
|
|
575
|
-
const name = (0, refs_1.splitRef)(schema.additionalProperties.$ref)[2];
|
|
576
|
-
if (modelsByName[name] && !model.link) {
|
|
577
|
-
model.link = modelsByName[name];
|
|
578
|
-
}
|
|
579
|
-
}
|
|
580
|
-
else if (model.link && typeof schema.additionalProperties !== 'boolean') {
|
|
581
|
-
_ensureModelLinks(spec, modelsByName, (0, types_1.flattenModelLink)(model.link), schema.additionalProperties, visited);
|
|
582
|
-
}
|
|
583
|
-
}
|
|
584
|
-
else if (model.export === 'array' && 'items' in schema && schema.items) {
|
|
585
|
-
if ((0, refs_1.isRef)(schema.items)) {
|
|
586
|
-
const name = (0, refs_1.splitRef)(schema.items.$ref)[2];
|
|
587
|
-
if (modelsByName[name] && !model.link) {
|
|
588
|
-
model.link = modelsByName[name];
|
|
589
|
-
}
|
|
590
|
-
}
|
|
591
|
-
else if (model.link) {
|
|
592
|
-
_ensureModelLinks(spec, modelsByName, (0, types_1.flattenModelLink)(model.link), schema.items, visited);
|
|
593
|
-
}
|
|
594
483
|
}
|
|
595
|
-
model.properties
|
|
596
|
-
|
|
597
|
-
.
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
});
|
|
601
|
-
if (types_1.COMPOSED_SCHEMA_TYPES.has(model.export)) {
|
|
602
|
-
model.properties.forEach((property, i) => {
|
|
603
|
-
const subSchema = (0, refs_1.resolveIfRef)(spec, schema[(0, lodash_camelcase_1.default)(model.export)]?.[i]);
|
|
484
|
+
model.properties.filter((p)=>!visited.has(p) && schema.properties?.[trim(p.name, `"'`)]).forEach((property)=>recurse(property, resolveIfRef(spec, schema.properties[trim(property.name, `"'`)])));
|
|
485
|
+
if (COMPOSED_SCHEMA_TYPES.has(model.export)) {
|
|
486
|
+
const memberSchemas = compositeMemberSchemas(schema, model.export);
|
|
487
|
+
model.properties.forEach((property, i)=>{
|
|
488
|
+
const subSchema = resolveIfRef(spec, memberSchemas[i]);
|
|
604
489
|
if (subSchema) {
|
|
605
|
-
|
|
490
|
+
recurse(property, subSchema);
|
|
606
491
|
}
|
|
607
492
|
});
|
|
608
493
|
}
|
|
609
494
|
};
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
data.models.forEach((model) => mutateModelWithCompositeProperties(data, model, visited));
|
|
618
|
-
};
|
|
619
|
-
const mutateModelWithCompositeProperties = (data, model, visited) => {
|
|
620
|
-
if (types_1.COMPOSED_SCHEMA_TYPES.has(model.export) && !visited.has(model)) {
|
|
621
|
-
visited.add(model);
|
|
622
|
-
// Find the models/primitives which this is composed from
|
|
623
|
-
const composedModelReferences = model.properties.filter((p) => !p.name && p.export === 'reference');
|
|
624
|
-
const composedPrimitives = model.properties.filter((p) => !p.name && p.export !== 'reference');
|
|
625
|
-
const modelsByName = Object.fromEntries(data.models.map((m) => [m.name, m]));
|
|
626
|
-
let composedModels = composedModelReferences.flatMap((r) => modelsByName[r.type] ? [modelsByName[r.type]] : []);
|
|
627
|
-
// Recursively resolve composed properties of properties, to ensure mixins for all-of include all recursive all-of properties
|
|
628
|
-
composedModels.forEach((m) => mutateModelWithCompositeProperties(data, m, visited));
|
|
629
|
-
// Enums are models, however they are serialised as primitives and so should be moved to the primitives list
|
|
630
|
-
composedPrimitives.push(...composedModels.filter((m) => m.export === 'enum'));
|
|
631
|
-
composedModels = composedModels.filter((m) => m.export !== 'enum');
|
|
632
|
-
// When multiple arrays of non-primitives are composed using allOf/oneOf/anyOf, it's not possible to distinguish at runtime which
|
|
633
|
-
// type it is, and so we validate this away.
|
|
634
|
-
// TODO: consider honouring more advanced OpenAPI spec features like "discriminators" which can help for this case, but in practice
|
|
635
|
-
// users are unlikely to model their API this way
|
|
636
|
-
const isPrimitiveArray = (m) => {
|
|
637
|
-
if (m.link && ['array', 'dictionary'].includes(m.export)) {
|
|
638
|
-
return isPrimitiveArray((0, types_1.flattenModelLink)(m.link));
|
|
639
|
-
}
|
|
640
|
-
return (types_1.PRIMITIVE_TYPES.has(m.type) && !['date', 'date-time'].includes(m.format));
|
|
641
|
-
};
|
|
642
|
-
const arrayComposedModels = composedPrimitives.filter((m) => m.export === 'array' && !isPrimitiveArray(m));
|
|
643
|
-
if (arrayComposedModels.length > 1) {
|
|
644
|
-
throw new Error(`Schema "${model.name}" defines ${(0, lodash_camelcase_1.default)(model.export)} with multiple array types which cannot be distinguished at runtime.`);
|
|
645
|
-
}
|
|
646
|
-
// For all-of models, we include all composed model properties.
|
|
647
|
-
if (model.export === 'all-of') {
|
|
648
|
-
if (composedPrimitives.length > 0) {
|
|
649
|
-
throw new Error(`Schema "${model.name}" defines allOf with non-object types. allOf may only compose object types in the OpenAPI specification.`);
|
|
650
|
-
}
|
|
651
|
-
}
|
|
652
|
-
model.composedModels = composedModels;
|
|
653
|
-
model.composedPrimitives = composedPrimitives;
|
|
654
|
-
}
|
|
655
|
-
};
|
|
656
|
-
/**
|
|
657
|
-
* Mutates the given model to add language specific types and names
|
|
658
|
-
*/
|
|
659
|
-
const mutateModelWithAdditionalTypes = (model) => {
|
|
660
|
-
// Trim any surrounding quotes from name
|
|
661
|
-
model.name = (0, lodash_trim_1.default)(model.name, `"'`);
|
|
662
|
-
model.typescriptName = (0, languages_1.toTypeScriptName)(model.name);
|
|
663
|
-
model.typescriptType = (0, languages_1.toTypeScriptType)(model);
|
|
664
|
-
model.pythonName = (0, languages_1.toPythonName)('property', model.name);
|
|
665
|
-
model.pythonType = (0, languages_1.toPythonType)(model);
|
|
666
|
-
model.isPrimitive =
|
|
667
|
-
types_1.PRIMITIVE_TYPES.has(model.type) &&
|
|
668
|
-
!types_1.COMPOSED_SCHEMA_TYPES.has(model.export) &&
|
|
669
|
-
!types_1.COLLECTION_TYPES.has(model.export);
|
|
495
|
+
const addLanguageTypes = (model)=>{
|
|
496
|
+
model.name = trim(model.name, `"'`);
|
|
497
|
+
model.typescriptName = toTypeScriptName(model.name);
|
|
498
|
+
model.typescriptType = toTypeScriptType(model);
|
|
499
|
+
model.pythonName = toPythonName('property', model.name);
|
|
500
|
+
model.pythonType = toPythonType(model);
|
|
501
|
+
model.isPrimitive = PRIMITIVE_TYPES.has(model.type) && !COMPOSED_SCHEMA_TYPES.has(model.export) && !COLLECTION_TYPES.has(model.export);
|
|
670
502
|
};
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
*/
|
|
674
|
-
const isOperationMutation = (op) => {
|
|
675
|
-
// Let the user override whether an operation is a query or mutation using x-mutation/x-query
|
|
503
|
+
const isOperationMutation = (op)=>{
|
|
504
|
+
// x-mutation/x-query override the HTTP-method default.
|
|
676
505
|
const { vendorExtensions } = op;
|
|
677
|
-
if (vendorExtensions?.[
|
|
506
|
+
if (vendorExtensions?.[VENDOR_EXTENSIONS.MUTATION]) {
|
|
678
507
|
return true;
|
|
679
|
-
}
|
|
680
|
-
else if (vendorExtensions?.[types_1.VENDOR_EXTENSIONS.QUERY]) {
|
|
508
|
+
} else if (vendorExtensions?.[VENDOR_EXTENSIONS.QUERY]) {
|
|
681
509
|
return false;
|
|
682
510
|
}
|
|
683
|
-
|
|
684
|
-
|
|
511
|
+
return [
|
|
512
|
+
'PATCH',
|
|
513
|
+
'POST',
|
|
514
|
+
'PUT',
|
|
515
|
+
'DELETE'
|
|
516
|
+
].includes(op.method);
|
|
685
517
|
};
|
|
686
|
-
|
|
687
|
-
* Add infinite query details to the operation
|
|
688
|
-
*/
|
|
689
|
-
const mutateOperationWithInfiniteQueryDetails = (op) => {
|
|
518
|
+
const augmentInfiniteQuery = (op)=>{
|
|
690
519
|
const { paginationDisabled, cursorPropertyName } = getCursorOptions(op);
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
// The operation is an infinite query if:
|
|
694
|
-
// - x-cursor is not set to 'false' (this allows users to disable infinite queries for operations that accept a 'cursor')
|
|
695
|
-
// - the operation accepts a parameter named 'cursor', or a parameter named as the user specified with x-cursor
|
|
520
|
+
const cursorProperty = op.parameters.find((p)=>p.name === cursorPropertyName);
|
|
521
|
+
// An infinite query is a paginated operation that accepts the cursor parameter
|
|
696
522
|
op.isInfiniteQuery = !paginationDisabled && !!cursorProperty;
|
|
697
523
|
if (op.isInfiniteQuery) {
|
|
698
524
|
op.infiniteQueryCursorProperty = cursorProperty;
|
|
699
525
|
}
|
|
700
526
|
};
|
|
701
527
|
/**
|
|
702
|
-
*
|
|
703
|
-
*
|
|
704
|
-
*
|
|
528
|
+
* Resolve the pagination cursor options from an operation's `x-cursor` vendor
|
|
529
|
+
* extension. Accepted forms (object variants exist because Smithy vendor
|
|
530
|
+
* extensions must be objects):
|
|
705
531
|
*
|
|
706
|
-
*
|
|
707
|
-
*
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
}
|
|
723
|
-
else if (typeof cursorExtension === 'string') {
|
|
724
|
-
cursorPropertyName = cursorExtension;
|
|
725
|
-
}
|
|
726
|
-
else if (typeof cursorExtension === 'object') {
|
|
727
|
-
if (cursorExtension?.enabled === false) {
|
|
728
|
-
paginationDisabled = true;
|
|
729
|
-
}
|
|
730
|
-
if (cursorExtension?.inputToken &&
|
|
731
|
-
typeof cursorExtension.inputToken === 'string') {
|
|
732
|
-
cursorPropertyName = cursorExtension.inputToken;
|
|
733
|
-
}
|
|
532
|
+
* - `'property'` / `{ inputToken: 'property' }` — the input property to page on
|
|
533
|
+
* - `false` / `{ enabled: false }` — disable pagination
|
|
534
|
+
*/ const getCursorOptions = (op)=>{
|
|
535
|
+
const cursor = op.vendorExtensions?.[VENDOR_EXTENSIONS.CURSOR];
|
|
536
|
+
// Defaults: pagination enabled, paging on a property named 'cursor'.
|
|
537
|
+
if (cursor === false) {
|
|
538
|
+
return {
|
|
539
|
+
paginationDisabled: true,
|
|
540
|
+
cursorPropertyName: 'cursor'
|
|
541
|
+
};
|
|
542
|
+
}
|
|
543
|
+
if (typeof cursor === 'string') {
|
|
544
|
+
return {
|
|
545
|
+
paginationDisabled: false,
|
|
546
|
+
cursorPropertyName: cursor
|
|
547
|
+
};
|
|
734
548
|
}
|
|
735
|
-
|
|
549
|
+
const options = cursor ?? {};
|
|
736
550
|
return {
|
|
737
|
-
paginationDisabled,
|
|
738
|
-
cursorPropertyName
|
|
551
|
+
paginationDisabled: options.enabled === false,
|
|
552
|
+
cursorPropertyName: typeof options.inputToken === 'string' ? options.inputToken : 'cursor'
|
|
739
553
|
};
|
|
740
554
|
};
|
|
741
555
|
/**
|
|
742
|
-
* Add
|
|
743
|
-
*/
|
|
744
|
-
const mutateOperationWithAdditionalData = (op) => {
|
|
745
|
-
// Add mutation/query details
|
|
556
|
+
* Add query/mutation, streaming and infinite-query flags to an operation.
|
|
557
|
+
*/ const augmentOperationBehaviour = (op)=>{
|
|
746
558
|
const isMutation = isOperationMutation(op);
|
|
747
559
|
op.isMutation = isMutation;
|
|
748
560
|
op.isQuery = !isMutation;
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
// it will resolve to AsyncIterableIterator<{itemSchemaModel.name}>
|
|
755
|
-
const jsonlResponse = op.responses.find((res) => res.isJsonlStreaming);
|
|
561
|
+
op.isStreaming = !!op.vendorExtensions?.[VENDOR_EXTENSIONS.STREAMING] || op.responses.some((res)=>res.isJsonlStreaming);
|
|
562
|
+
// For JSON-lines streaming, the result is each streamed item, so the client
|
|
563
|
+
// method returns AsyncIterableIterator<itemSchemaModel>. Named (hoisted)
|
|
564
|
+
// item schemas become references; inline primitives keep their own type.
|
|
565
|
+
const jsonlResponse = op.responses.find((res)=>res.isJsonlStreaming);
|
|
756
566
|
if (jsonlResponse) {
|
|
757
567
|
const itemSchemaModel = jsonlResponse.itemSchemaModel;
|
|
758
568
|
const result = op.result;
|
|
759
569
|
if (result && itemSchemaModel) {
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
570
|
+
if (itemSchemaModel.name) {
|
|
571
|
+
result.type = itemSchemaModel.name;
|
|
572
|
+
result.typescriptType = itemSchemaModel.name;
|
|
573
|
+
result.export = 'reference';
|
|
574
|
+
} else {
|
|
575
|
+
result.type = itemSchemaModel.type;
|
|
576
|
+
result.typescriptType = itemSchemaModel.typescriptType;
|
|
577
|
+
result.export = itemSchemaModel.export;
|
|
578
|
+
result.format = itemSchemaModel.format;
|
|
579
|
+
result.link = itemSchemaModel.link;
|
|
580
|
+
result.isPrimitive = itemSchemaModel.isPrimitive;
|
|
581
|
+
}
|
|
763
582
|
}
|
|
764
583
|
}
|
|
765
584
|
// Add infinite query details if applicable
|
|
766
585
|
if (!isMutation) {
|
|
767
|
-
|
|
586
|
+
augmentInfiniteQuery(op);
|
|
768
587
|
}
|
|
769
588
|
};
|
|
589
|
+
|
|
770
590
|
//# sourceMappingURL=codegen-data.js.map
|