@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
|
@@ -21,8 +21,8 @@ export default defineConfig(() => ({
|
|
|
21
21
|
},
|
|
22
22
|
plugins: [
|
|
23
23
|
tanstackRouter({
|
|
24
|
-
routesDirectory: resolve(
|
|
25
|
-
generatedRouteTree: resolve(
|
|
24
|
+
routesDirectory: resolve(import.meta.dirname, 'src/routes'),
|
|
25
|
+
generatedRouteTree: resolve(import.meta.dirname, 'src/routeTree.gen.ts'),
|
|
26
26
|
}),
|
|
27
27
|
react(),
|
|
28
28
|
tailwindcss(),
|
|
@@ -32,7 +32,7 @@ export default defineConfig(() => ({
|
|
|
32
32
|
// plugins: [],
|
|
33
33
|
// },
|
|
34
34
|
build: {
|
|
35
|
-
outDir: '../dist/test-app',
|
|
35
|
+
outDir: '../dist/test-app/bundle',
|
|
36
36
|
emptyOutDir: true,
|
|
37
37
|
reportCompressedSize: true,
|
|
38
38
|
commonjsOptions: {
|
|
@@ -52,7 +52,7 @@ export default defineConfig(() => ({
|
|
|
52
52
|
provider: 'v8' as const,
|
|
53
53
|
},
|
|
54
54
|
},
|
|
55
|
-
resolve: { tsconfigPaths: true },
|
|
55
|
+
resolve: { tsconfigPaths: true, dedupe: ['react', 'react-dom'] },
|
|
56
56
|
define: { global: {} },
|
|
57
57
|
}));
|
|
58
58
|
"
|
|
@@ -78,8 +78,8 @@ export default defineConfig(() => ({
|
|
|
78
78
|
},
|
|
79
79
|
plugins: [
|
|
80
80
|
tanstackRouter({
|
|
81
|
-
routesDirectory: resolve(
|
|
82
|
-
generatedRouteTree: resolve(
|
|
81
|
+
routesDirectory: resolve(import.meta.dirname, 'src/routes'),
|
|
82
|
+
generatedRouteTree: resolve(import.meta.dirname, 'src/routeTree.gen.ts'),
|
|
83
83
|
}),
|
|
84
84
|
react(),
|
|
85
85
|
],
|
|
@@ -88,7 +88,7 @@ export default defineConfig(() => ({
|
|
|
88
88
|
// plugins: [],
|
|
89
89
|
// },
|
|
90
90
|
build: {
|
|
91
|
-
outDir: '../dist/test-app',
|
|
91
|
+
outDir: '../dist/test-app/bundle',
|
|
92
92
|
emptyOutDir: true,
|
|
93
93
|
reportCompressedSize: true,
|
|
94
94
|
commonjsOptions: {
|
|
@@ -108,7 +108,7 @@ export default defineConfig(() => ({
|
|
|
108
108
|
provider: 'v8' as const,
|
|
109
109
|
},
|
|
110
110
|
},
|
|
111
|
-
resolve: { tsconfigPaths: true },
|
|
111
|
+
resolve: { tsconfigPaths: true, dedupe: ['react', 'react-dom'] },
|
|
112
112
|
define: { global: {} },
|
|
113
113
|
}));
|
|
114
114
|
"
|
|
@@ -131,12 +131,12 @@ exports[`react-website generator > TailwindCSS integration > terraform iac > sho
|
|
|
131
131
|
required_providers {
|
|
132
132
|
aws = {
|
|
133
133
|
source = "hashicorp/aws"
|
|
134
|
-
version = "
|
|
134
|
+
version = "6.60.0"
|
|
135
135
|
configuration_aliases = [aws.us_east_1]
|
|
136
136
|
}
|
|
137
137
|
random = {
|
|
138
138
|
source = "hashicorp/random"
|
|
139
|
-
version = "
|
|
139
|
+
version = "3.9.0"
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
142
|
}
|
|
@@ -152,6 +152,31 @@ variable "website_file_path" {
|
|
|
152
152
|
type = string
|
|
153
153
|
}
|
|
154
154
|
|
|
155
|
+
variable "custom_domain_names" {
|
|
156
|
+
description = "Custom domain names (aliases) for the CloudFront distribution. Requires acm_certificate_arn."
|
|
157
|
+
type = list(string)
|
|
158
|
+
default = []
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
variable "acm_certificate_arn" {
|
|
162
|
+
description = "ARN of an ACM certificate (in us-east-1) for the custom domain names. When set, viewers are required to use TLS 1.2 or later."
|
|
163
|
+
type = string
|
|
164
|
+
default = null
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
# Content-Security-Policy enforced on all responses. Restricts scripts and
|
|
168
|
+
# framing to mitigate XSS and clickjacking, while permitting HTTPS/WSS calls
|
|
169
|
+
# (connect-src) to AWS service endpoints such as API Gateway, Cognito and
|
|
170
|
+
# Bedrock AgentCore which are only known at deploy time. Edit this to tighten
|
|
171
|
+
# connect-src to your specific origins once they are known.
|
|
172
|
+
locals {
|
|
173
|
+
content_security_policy = "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; connect-src 'self' https: wss:; object-src 'none'; base-uri 'self'; frame-ancestors 'none'"
|
|
174
|
+
|
|
175
|
+
# Delivery source/destination names have a 60 character maximum. Truncate the
|
|
176
|
+
# website name so the longest delivery name stays within the limit.
|
|
177
|
+
access_logs_name_prefix = substr(lower(var.website_name), 0, 16)
|
|
178
|
+
}
|
|
179
|
+
|
|
155
180
|
|
|
156
181
|
# Data sources
|
|
157
182
|
data "aws_caller_identity" "current" {}
|
|
@@ -188,6 +213,26 @@ resource "aws_kms_key" "website_key" {
|
|
|
188
213
|
]
|
|
189
214
|
Resource = "*"
|
|
190
215
|
},
|
|
216
|
+
{
|
|
217
|
+
Sid = "AllowCloudWatchLogs"
|
|
218
|
+
Effect = "Allow"
|
|
219
|
+
Principal = {
|
|
220
|
+
Service = "logs.\${data.aws_region.current.region}.amazonaws.com"
|
|
221
|
+
}
|
|
222
|
+
Action = [
|
|
223
|
+
"kms:Encrypt",
|
|
224
|
+
"kms:Decrypt",
|
|
225
|
+
"kms:ReEncrypt*",
|
|
226
|
+
"kms:GenerateDataKey*",
|
|
227
|
+
"kms:DescribeKey"
|
|
228
|
+
]
|
|
229
|
+
Resource = "*"
|
|
230
|
+
Condition = {
|
|
231
|
+
ArnLike = {
|
|
232
|
+
"kms:EncryptionContext:aws:logs:arn" = "arn:aws:logs:\${data.aws_region.current.region}:\${data.aws_caller_identity.current.account_id}:log-group:*"
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
},
|
|
191
236
|
{
|
|
192
237
|
Sid = "AllowCloudFrontServicePrincipalSSE-KMS"
|
|
193
238
|
Effect = "Allow"
|
|
@@ -219,18 +264,12 @@ resource "aws_kms_alias" "website_key_alias" {
|
|
|
219
264
|
target_key_id = aws_kms_key.website_key.key_id
|
|
220
265
|
}
|
|
221
266
|
|
|
222
|
-
#
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
bucket = "\${lower(var.website_name)}-access-logs-\${random_id.bucket_suffix.hex}"
|
|
229
|
-
force_destroy = true
|
|
230
|
-
|
|
231
|
-
tags = {
|
|
232
|
-
Name = "\${lower(var.website_name)}-access-logs"
|
|
233
|
-
}
|
|
267
|
+
# CloudWatch log group receiving S3 server access logs for the website and
|
|
268
|
+
# distribution log buckets.
|
|
269
|
+
resource "aws_cloudwatch_log_group" "access_logs" {
|
|
270
|
+
name = "/aws/s3/\${lower(var.website_name)}-access-logs-\${random_id.bucket_suffix.hex}"
|
|
271
|
+
retention_in_days = 365
|
|
272
|
+
kms_key_id = aws_kms_key.website_key.arn
|
|
234
273
|
}
|
|
235
274
|
|
|
236
275
|
resource "random_id" "unique_suffix" {
|
|
@@ -241,63 +280,12 @@ resource "random_id" "bucket_suffix" {
|
|
|
241
280
|
byte_length = 8
|
|
242
281
|
}
|
|
243
282
|
|
|
244
|
-
resource "aws_s3_bucket_versioning" "access_logs_versioning" {
|
|
245
|
-
bucket = aws_s3_bucket.access_logs.id
|
|
246
|
-
versioning_configuration {
|
|
247
|
-
status = "Disabled"
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
resource "aws_s3_bucket_server_side_encryption_configuration" "access_logs_encryption" {
|
|
252
|
-
bucket = aws_s3_bucket.access_logs.id
|
|
253
|
-
|
|
254
|
-
rule {
|
|
255
|
-
apply_server_side_encryption_by_default {
|
|
256
|
-
kms_master_key_id = aws_kms_key.website_key.arn
|
|
257
|
-
sse_algorithm = "aws:kms"
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
resource "aws_s3_bucket_public_access_block" "access_logs_pab" {
|
|
263
|
-
bucket = aws_s3_bucket.access_logs.id
|
|
264
|
-
|
|
265
|
-
block_public_acls = true
|
|
266
|
-
block_public_policy = true
|
|
267
|
-
ignore_public_acls = true
|
|
268
|
-
restrict_public_buckets = true
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
resource "aws_s3_bucket_policy" "access_logs_ssl_policy" {
|
|
272
|
-
bucket = aws_s3_bucket.access_logs.id
|
|
273
|
-
|
|
274
|
-
policy = jsonencode({
|
|
275
|
-
Version = "2012-10-17"
|
|
276
|
-
Statement = [
|
|
277
|
-
{
|
|
278
|
-
Sid = "DenyInsecureConnections"
|
|
279
|
-
Effect = "Deny"
|
|
280
|
-
Principal = "*"
|
|
281
|
-
Action = "s3:*"
|
|
282
|
-
Resource = [
|
|
283
|
-
aws_s3_bucket.access_logs.arn,
|
|
284
|
-
"\${aws_s3_bucket.access_logs.arn}/*"
|
|
285
|
-
]
|
|
286
|
-
Condition = {
|
|
287
|
-
Bool = {
|
|
288
|
-
"aws:SecureTransport" = "false"
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
]
|
|
293
|
-
})
|
|
294
|
-
}
|
|
295
|
-
|
|
296
283
|
# Website Bucket
|
|
297
284
|
resource "aws_s3_bucket" "website" {
|
|
298
285
|
#checkov:skip=CKV2_AWS_61:Lifecycle configuration not required for static website content
|
|
299
286
|
#checkov:skip=CKV_AWS_144:Cross-region replication not required for static website
|
|
300
287
|
#checkov:skip=CKV2_AWS_62:Event notifications not required for static website bucket
|
|
288
|
+
#checkov:skip=CKV_AWS_18:Server access logs are delivered to CloudWatch Logs (see aws_cloudwatch_log_delivery.website)
|
|
301
289
|
bucket = "\${lower(var.website_name)}-website-\${random_id.bucket_suffix.hex}"
|
|
302
290
|
force_destroy = true
|
|
303
291
|
|
|
@@ -341,20 +329,35 @@ resource "aws_s3_bucket_ownership_controls" "website_ownership" {
|
|
|
341
329
|
}
|
|
342
330
|
}
|
|
343
331
|
|
|
344
|
-
|
|
345
|
-
|
|
332
|
+
# Deliver the website bucket's server access logs to CloudWatch Logs.
|
|
333
|
+
resource "aws_cloudwatch_log_delivery_source" "website" {
|
|
334
|
+
name = "\${local.access_logs_name_prefix}-website-logs-\${random_id.bucket_suffix.hex}"
|
|
335
|
+
log_type = "S3_SERVER_ACCESS_LOGS"
|
|
336
|
+
resource_arn = aws_s3_bucket.website.arn
|
|
337
|
+
}
|
|
346
338
|
|
|
347
|
-
|
|
348
|
-
|
|
339
|
+
resource "aws_cloudwatch_log_delivery_destination" "access_logs" {
|
|
340
|
+
name = "\${local.access_logs_name_prefix}-access-logs-\${random_id.bucket_suffix.hex}"
|
|
341
|
+
|
|
342
|
+
delivery_destination_configuration {
|
|
343
|
+
destination_resource_arn = aws_cloudwatch_log_group.access_logs.arn
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
resource "aws_cloudwatch_log_delivery" "website" {
|
|
348
|
+
delivery_source_name = aws_cloudwatch_log_delivery_source.website.name
|
|
349
|
+
delivery_destination_arn = aws_cloudwatch_log_delivery_destination.access_logs.arn
|
|
349
350
|
}
|
|
350
351
|
|
|
351
352
|
|
|
352
|
-
# Distribution Log Bucket
|
|
353
|
+
# Distribution Log Bucket — holds CloudFront standard access logs (CloudFront
|
|
354
|
+
# delivers only to S3). Its own S3 server access logs go to CloudWatch Logs.
|
|
353
355
|
resource "aws_s3_bucket" "distribution_logs" {
|
|
354
356
|
#checkov:skip=CKV2_AWS_61:Lifecycle configuration not required for CloudFront logs
|
|
355
357
|
#checkov:skip=CKV_AWS_144:Cross-region replication not required for CloudFront logs
|
|
356
358
|
#checkov:skip=CKV2_AWS_62:Event notifications not required for CloudFront logs bucket
|
|
357
359
|
#checkov:skip=CKV_AWS_21:Versioning not required for CloudFront access logs
|
|
360
|
+
#checkov:skip=CKV_AWS_18:Server access logs are delivered to CloudWatch Logs (see aws_cloudwatch_log_delivery.distribution_logs)
|
|
358
361
|
bucket = "\${lower(var.website_name)}-distribution-logs-\${random_id.bucket_suffix.hex}"
|
|
359
362
|
force_destroy = true
|
|
360
363
|
|
|
@@ -400,11 +403,16 @@ resource "aws_s3_bucket_acl" "distribution_logs_acl" {
|
|
|
400
403
|
depends_on = [aws_s3_bucket_ownership_controls.distribution_logs_ownership]
|
|
401
404
|
}
|
|
402
405
|
|
|
403
|
-
|
|
404
|
-
|
|
406
|
+
# Deliver the distribution log bucket's server access logs to CloudWatch Logs.
|
|
407
|
+
resource "aws_cloudwatch_log_delivery_source" "distribution_logs" {
|
|
408
|
+
name = "\${local.access_logs_name_prefix}-distribution-logs-\${random_id.bucket_suffix.hex}"
|
|
409
|
+
log_type = "S3_SERVER_ACCESS_LOGS"
|
|
410
|
+
resource_arn = aws_s3_bucket.distribution_logs.arn
|
|
411
|
+
}
|
|
405
412
|
|
|
406
|
-
|
|
407
|
-
|
|
413
|
+
resource "aws_cloudwatch_log_delivery" "distribution_logs" {
|
|
414
|
+
delivery_source_name = aws_cloudwatch_log_delivery_source.distribution_logs.name
|
|
415
|
+
delivery_destination_arn = aws_cloudwatch_log_delivery_destination.access_logs.arn
|
|
408
416
|
}
|
|
409
417
|
|
|
410
418
|
resource "aws_s3_bucket_policy" "distribution_logs_ssl_policy" {
|
|
@@ -512,13 +520,42 @@ resource "aws_cloudfront_origin_access_control" "website_oac" {
|
|
|
512
520
|
signing_protocol = "sigv4"
|
|
513
521
|
}
|
|
514
522
|
|
|
523
|
+
# Security headers applied to all responses.
|
|
524
|
+
resource "aws_cloudfront_response_headers_policy" "website" {
|
|
525
|
+
name = "\${aws_s3_bucket.website.bucket}-security-headers"
|
|
526
|
+
|
|
527
|
+
security_headers_config {
|
|
528
|
+
strict_transport_security {
|
|
529
|
+
access_control_max_age_sec = 63072000
|
|
530
|
+
include_subdomains = true
|
|
531
|
+
preload = true
|
|
532
|
+
override = true
|
|
533
|
+
}
|
|
534
|
+
content_type_options {
|
|
535
|
+
override = true
|
|
536
|
+
}
|
|
537
|
+
frame_options {
|
|
538
|
+
frame_option = "DENY"
|
|
539
|
+
override = true
|
|
540
|
+
}
|
|
541
|
+
referrer_policy {
|
|
542
|
+
referrer_policy = "strict-origin-when-cross-origin"
|
|
543
|
+
override = true
|
|
544
|
+
}
|
|
545
|
+
content_security_policy {
|
|
546
|
+
content_security_policy = local.content_security_policy
|
|
547
|
+
override = true
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
|
|
515
552
|
# CloudFront Distribution
|
|
516
553
|
resource "aws_cloudfront_distribution" "website" {
|
|
554
|
+
# See https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DownloadDistValuesGeneral.html
|
|
517
555
|
#checkov:skip=CKV_AWS_174:Using CloudFront default certificate which does not support TLS v1.2
|
|
518
556
|
#checkov:skip=CKV_AWS_310:Origin failover not required for single S3 origin static website
|
|
519
557
|
#checkov:skip=CKV_AWS_374:Geo restrictions not required for global web application
|
|
520
558
|
#checkov:skip=CKV2_AWS_42:Custom SSL certificate not required for development - using CloudFront default
|
|
521
|
-
#checkov:skip=CKV2_AWS_32:Response headers policy not required for basic static website
|
|
522
559
|
#checkov:skip=CKV2_AWS_47:WAF includes AWSManagedRulesKnownBadInputsRuleSet which provides Log4j protection
|
|
523
560
|
origin {
|
|
524
561
|
domain_name = aws_s3_bucket.website.bucket_regional_domain_name
|
|
@@ -530,6 +567,7 @@ resource "aws_cloudfront_distribution" "website" {
|
|
|
530
567
|
is_ipv6_enabled = true
|
|
531
568
|
default_root_object = "index.html"
|
|
532
569
|
web_acl_id = aws_wafv2_web_acl.cloudfront_waf.arn
|
|
570
|
+
aliases = var.custom_domain_names
|
|
533
571
|
|
|
534
572
|
logging_config {
|
|
535
573
|
include_cookies = false
|
|
@@ -548,11 +586,12 @@ resource "aws_cloudfront_distribution" "website" {
|
|
|
548
586
|
}
|
|
549
587
|
}
|
|
550
588
|
|
|
551
|
-
viewer_protocol_policy
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
589
|
+
viewer_protocol_policy = "redirect-to-https"
|
|
590
|
+
response_headers_policy_id = aws_cloudfront_response_headers_policy.website.id
|
|
591
|
+
min_ttl = 0
|
|
592
|
+
default_ttl = 3600
|
|
593
|
+
max_ttl = 86400
|
|
594
|
+
compress = true
|
|
556
595
|
}
|
|
557
596
|
|
|
558
597
|
# Custom error responses for SPA routing
|
|
@@ -575,7 +614,10 @@ resource "aws_cloudfront_distribution" "website" {
|
|
|
575
614
|
}
|
|
576
615
|
|
|
577
616
|
viewer_certificate {
|
|
578
|
-
cloudfront_default_certificate =
|
|
617
|
+
cloudfront_default_certificate = var.acm_certificate_arn == null
|
|
618
|
+
acm_certificate_arn = var.acm_certificate_arn
|
|
619
|
+
ssl_support_method = var.acm_certificate_arn == null ? null : "sni-only"
|
|
620
|
+
minimum_protocol_version = var.acm_certificate_arn == null ? "TLSv1" : "TLSv1.2_2021"
|
|
579
621
|
}
|
|
580
622
|
|
|
581
623
|
tags = {
|
|
@@ -656,8 +698,8 @@ resource "null_resource" "upload_website_files" {
|
|
|
656
698
|
|
|
657
699
|
provisioner "local-exec" {
|
|
658
700
|
command = <<-EOT
|
|
659
|
-
cd "
|
|
660
|
-
uv run --with boto3 python3 -c "
|
|
701
|
+
cd "$ROOT_PATH"
|
|
702
|
+
uv run --with boto3==1.43.67 python3 -c "
|
|
661
703
|
import os
|
|
662
704
|
import sys
|
|
663
705
|
import boto3
|
|
@@ -745,9 +787,14 @@ def sync_to_s3(local_path, bucket_name):
|
|
|
745
787
|
sys.exit(1)
|
|
746
788
|
|
|
747
789
|
# Execute sync
|
|
748
|
-
sync_to_s3(
|
|
790
|
+
sync_to_s3(os.environ['WEBSITE_FILE_PATH'], os.environ['BUCKET_NAME'])
|
|
749
791
|
"
|
|
750
792
|
EOT
|
|
793
|
+
environment = {
|
|
794
|
+
ROOT_PATH = path.root
|
|
795
|
+
WEBSITE_FILE_PATH = var.website_file_path
|
|
796
|
+
BUCKET_NAME = aws_s3_bucket.website.bucket
|
|
797
|
+
}
|
|
751
798
|
}
|
|
752
799
|
|
|
753
800
|
depends_on = [aws_s3_bucket_policy.website_cloudfront_policy]
|
|
@@ -755,11 +802,12 @@ sync_to_s3('\${var.website_file_path}', '\${aws_s3_bucket.website.bucket}')
|
|
|
755
802
|
|
|
756
803
|
# Upload runtime config file
|
|
757
804
|
resource "aws_s3_object" "runtime_config" {
|
|
758
|
-
bucket
|
|
759
|
-
key
|
|
760
|
-
content
|
|
761
|
-
content_type
|
|
762
|
-
|
|
805
|
+
bucket = aws_s3_bucket.website.id
|
|
806
|
+
key = "runtime-config.json"
|
|
807
|
+
content = module.runtime_config_reader.config_json
|
|
808
|
+
content_type = "application/json"
|
|
809
|
+
cache_control = "no-cache"
|
|
810
|
+
etag = md5(module.runtime_config_reader.config_json)
|
|
763
811
|
|
|
764
812
|
depends_on = [null_resource.upload_website_files]
|
|
765
813
|
}
|
|
@@ -774,8 +822,9 @@ resource "null_resource" "cloudfront_invalidation" {
|
|
|
774
822
|
|
|
775
823
|
provisioner "local-exec" {
|
|
776
824
|
command = <<-EOT
|
|
777
|
-
uv run --with boto3 python3 -c "
|
|
825
|
+
uv run --with boto3==1.43.67 python3 -c "
|
|
778
826
|
import boto3
|
|
827
|
+
import os
|
|
779
828
|
import sys
|
|
780
829
|
from botocore.exceptions import ClientError, NoCredentialsError
|
|
781
830
|
|
|
@@ -797,7 +846,7 @@ def create_invalidation(distribution_id):
|
|
|
797
846
|
|
|
798
847
|
invalidation_id = response['Invalidation']['Id']
|
|
799
848
|
print(f'CloudFront cache invalidation created: {invalidation_id}')
|
|
800
|
-
print(f'Distribution:
|
|
849
|
+
print(f'Distribution: {distribution_id}')
|
|
801
850
|
print(f'Status: {response[\\"Invalidation\\"][\\"Status\\"]}')
|
|
802
851
|
|
|
803
852
|
except NoCredentialsError:
|
|
@@ -811,9 +860,12 @@ def create_invalidation(distribution_id):
|
|
|
811
860
|
sys.exit(1)
|
|
812
861
|
|
|
813
862
|
# Execute invalidation
|
|
814
|
-
create_invalidation(
|
|
863
|
+
create_invalidation(os.environ['DISTRIBUTION_ID'])
|
|
815
864
|
"
|
|
816
865
|
EOT
|
|
866
|
+
environment = {
|
|
867
|
+
DISTRIBUTION_ID = aws_cloudfront_distribution.website.id
|
|
868
|
+
}
|
|
817
869
|
}
|
|
818
870
|
|
|
819
871
|
depends_on = [
|
|
@@ -856,7 +908,7 @@ output "waf_web_acl_arn" {
|
|
|
856
908
|
required_providers {
|
|
857
909
|
aws = {
|
|
858
910
|
source = "hashicorp/aws"
|
|
859
|
-
version = "
|
|
911
|
+
version = "6.60.0"
|
|
860
912
|
configuration_aliases = [aws.us_east_1]
|
|
861
913
|
}
|
|
862
914
|
}
|
|
@@ -909,7 +961,7 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
909
961
|
|
|
910
962
|
exports[`react-website generator > Tanstack router integration > should generate website with no router correctly > biome.json 1`] = `
|
|
911
963
|
"{
|
|
912
|
-
"$schema": "https://biomejs.dev/schemas/2.
|
|
964
|
+
"$schema": "https://biomejs.dev/schemas/2.5.7/schema.json",
|
|
913
965
|
"root": true,
|
|
914
966
|
"formatter": {
|
|
915
967
|
"enabled": true,
|
|
@@ -921,6 +973,9 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
921
973
|
"formatter": {
|
|
922
974
|
"quoteStyle": "single",
|
|
923
975
|
"trailingCommas": "all"
|
|
976
|
+
},
|
|
977
|
+
"resolver": {
|
|
978
|
+
"experimentalPnpmCatalogs": true
|
|
924
979
|
}
|
|
925
980
|
},
|
|
926
981
|
"css": {
|
|
@@ -934,9 +989,9 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
934
989
|
"linter": {
|
|
935
990
|
"enabled": true,
|
|
936
991
|
"rules": {
|
|
937
|
-
"
|
|
992
|
+
"preset": "none",
|
|
938
993
|
"correctness": {
|
|
939
|
-
"noUndeclaredDependencies": "
|
|
994
|
+
"noUndeclaredDependencies": "error"
|
|
940
995
|
}
|
|
941
996
|
}
|
|
942
997
|
},
|
|
@@ -955,9 +1010,29 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
955
1010
|
"!**/node_modules",
|
|
956
1011
|
"!**/.nx",
|
|
957
1012
|
"!**/.venv",
|
|
958
|
-
"
|
|
1013
|
+
"!**/.grit",
|
|
1014
|
+
"!**/*.css",
|
|
1015
|
+
"!**/*.gen.*",
|
|
1016
|
+
"!**/generated/**",
|
|
1017
|
+
"!**/tsconfig*.json"
|
|
959
1018
|
]
|
|
960
|
-
}
|
|
1019
|
+
},
|
|
1020
|
+
"overrides": [
|
|
1021
|
+
{
|
|
1022
|
+
"includes": [
|
|
1023
|
+
"**/*.config.{ts,mts,cts,js,mjs,cjs}",
|
|
1024
|
+
"**/*.{spec,test}.{ts,tsx,mts,cts,js,jsx,mjs,cjs}",
|
|
1025
|
+
"**/*.stories.{ts,tsx}"
|
|
1026
|
+
],
|
|
1027
|
+
"linter": {
|
|
1028
|
+
"rules": {
|
|
1029
|
+
"correctness": {
|
|
1030
|
+
"noUndeclaredDependencies": "off"
|
|
1031
|
+
}
|
|
1032
|
+
}
|
|
1033
|
+
}
|
|
1034
|
+
}
|
|
1035
|
+
]
|
|
961
1036
|
}
|
|
962
1037
|
"
|
|
963
1038
|
`;
|
|
@@ -970,35 +1045,66 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
970
1045
|
"targetDefaults": {
|
|
971
1046
|
"build": {
|
|
972
1047
|
"cache": true,
|
|
973
|
-
"dependsOn": ["^build"],
|
|
974
1048
|
"inputs": ["default"]
|
|
975
1049
|
},
|
|
976
1050
|
"lint": {
|
|
977
1051
|
"cache": true
|
|
978
1052
|
},
|
|
979
|
-
"
|
|
980
|
-
"cache": true,
|
|
1053
|
+
"test": {
|
|
981
1054
|
"dependsOn": ["^build"],
|
|
982
|
-
"inputs": ["default"
|
|
1055
|
+
"inputs": ["default"]
|
|
983
1056
|
},
|
|
984
1057
|
"@nx/vitest:test": {
|
|
985
1058
|
"cache": true,
|
|
986
|
-
"inputs": ["default", "^
|
|
1059
|
+
"inputs": ["default", "^production"],
|
|
987
1060
|
"configurations": {
|
|
988
1061
|
"update-snapshot": {
|
|
989
1062
|
"args": "--update"
|
|
990
1063
|
}
|
|
991
1064
|
}
|
|
992
1065
|
},
|
|
993
|
-
"test": {
|
|
994
|
-
"dependsOn": ["^build"],
|
|
995
|
-
"inputs": ["default"]
|
|
996
|
-
},
|
|
997
1066
|
"compile": {
|
|
998
1067
|
"cache": true,
|
|
999
1068
|
"inputs": ["default"]
|
|
1000
1069
|
}
|
|
1001
1070
|
},
|
|
1071
|
+
"plugins": [
|
|
1072
|
+
{
|
|
1073
|
+
"plugin": "@nx/js/typescript",
|
|
1074
|
+
"options": {
|
|
1075
|
+
"typecheck": {
|
|
1076
|
+
"targetName": "typecheck"
|
|
1077
|
+
},
|
|
1078
|
+
"build": {
|
|
1079
|
+
"targetName": "compile",
|
|
1080
|
+
"configName": "tsconfig.lib.json",
|
|
1081
|
+
"buildDepsName": "build-deps",
|
|
1082
|
+
"watchDepsName": "watch-deps"
|
|
1083
|
+
}
|
|
1084
|
+
}
|
|
1085
|
+
},
|
|
1086
|
+
{
|
|
1087
|
+
"plugin": "@nx/vite/plugin",
|
|
1088
|
+
"options": {
|
|
1089
|
+
"buildTargetName": "bundle",
|
|
1090
|
+
"serveTargetName": "serve",
|
|
1091
|
+
"devTargetName": "serve",
|
|
1092
|
+
"previewTargetName": "preview",
|
|
1093
|
+
"serveStaticTargetName": "serve-static",
|
|
1094
|
+
"typecheckTargetName": "vite:typecheck",
|
|
1095
|
+
"buildDepsTargetName": "build-deps",
|
|
1096
|
+
"watchDepsTargetName": "watch-deps"
|
|
1097
|
+
}
|
|
1098
|
+
},
|
|
1099
|
+
{
|
|
1100
|
+
"plugin": "@nx/vitest",
|
|
1101
|
+
"options": {
|
|
1102
|
+
"testTargetName": "test",
|
|
1103
|
+
"ciTargetName": "test-ci",
|
|
1104
|
+
"testMode": "watch"
|
|
1105
|
+
}
|
|
1106
|
+
}
|
|
1107
|
+
],
|
|
1002
1108
|
"generators": {
|
|
1003
1109
|
"@nx/react": {
|
|
1004
1110
|
"application": {
|
|
@@ -1024,23 +1130,7 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
1024
1130
|
"transitive": true
|
|
1025
1131
|
}
|
|
1026
1132
|
]
|
|
1027
|
-
}
|
|
1028
|
-
"plugins": [
|
|
1029
|
-
{
|
|
1030
|
-
"plugin": "@nx/js/typescript",
|
|
1031
|
-
"options": {
|
|
1032
|
-
"typecheck": {
|
|
1033
|
-
"targetName": "typecheck"
|
|
1034
|
-
},
|
|
1035
|
-
"build": {
|
|
1036
|
-
"targetName": "compile",
|
|
1037
|
-
"configName": "tsconfig.lib.json",
|
|
1038
|
-
"buildDepsName": "build-deps",
|
|
1039
|
-
"watchDepsName": "watch-deps"
|
|
1040
|
-
}
|
|
1041
|
-
}
|
|
1042
|
-
}
|
|
1043
|
-
]
|
|
1133
|
+
}
|
|
1044
1134
|
}
|
|
1045
1135
|
"
|
|
1046
1136
|
`;
|
|
@@ -1048,44 +1138,35 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
1048
1138
|
exports[`react-website generator > Tanstack router integration > should generate website with no router correctly > package.json 1`] = `
|
|
1049
1139
|
"{
|
|
1050
1140
|
"name": "@proj/source",
|
|
1051
|
-
"dependencies": {
|
|
1052
|
-
"@cloudscape-design/board-components": "3.0.187",
|
|
1053
|
-
"@cloudscape-design/components": "3.0.1304",
|
|
1054
|
-
"@cloudscape-design/global-styles": "1.0.59",
|
|
1055
|
-
"aws-cdk-lib": "2.257.0",
|
|
1056
|
-
"constructs": "10.6.0",
|
|
1057
|
-
"react": "19.2.7",
|
|
1058
|
-
"react-dom": "19.2.7",
|
|
1059
|
-
"tailwindcss": "4.3.0"
|
|
1060
|
-
},
|
|
1141
|
+
"dependencies": {},
|
|
1061
1142
|
"devDependencies": {
|
|
1062
|
-
"@nx/js": "
|
|
1063
|
-
"@nx/react": "
|
|
1064
|
-
"@nx/vite": "
|
|
1065
|
-
"@nx/vitest": "
|
|
1066
|
-
"@nx/web": "
|
|
1067
|
-
"@swc-node/register": "~1.11.1",
|
|
1068
|
-
"@swc/core": "~1.15.5",
|
|
1143
|
+
"@nx/js": "23.1.1",
|
|
1144
|
+
"@nx/react": "catalog:",
|
|
1145
|
+
"@nx/vite": "23.1.1",
|
|
1146
|
+
"@nx/vitest": "23.1.1",
|
|
1147
|
+
"@nx/web": "23.1.1",
|
|
1069
1148
|
"@swc/helpers": "~0.5.18",
|
|
1070
|
-
"@tailwindcss/vite": "
|
|
1149
|
+
"@tailwindcss/vite": "catalog:",
|
|
1071
1150
|
"@testing-library/dom": "10.4.0",
|
|
1072
1151
|
"@testing-library/react": "16.3.0",
|
|
1073
|
-
"@types/node": "
|
|
1152
|
+
"@types/node": "catalog:",
|
|
1074
1153
|
"@types/react": "^19.0.0",
|
|
1075
1154
|
"@types/react-dom": "^19.0.0",
|
|
1076
1155
|
"@vitejs/plugin-react": "^6.0.0",
|
|
1077
|
-
"@vitest/coverage-v8": "
|
|
1078
|
-
"@vitest/ui": "
|
|
1156
|
+
"@vitest/coverage-v8": "catalog:",
|
|
1157
|
+
"@vitest/ui": "catalog:",
|
|
1079
1158
|
"jiti": "2.4.2",
|
|
1080
|
-
"jsdom": "
|
|
1081
|
-
"typescript": "~
|
|
1082
|
-
"vite": "
|
|
1083
|
-
"vitest": "
|
|
1159
|
+
"jsdom": "^27.1.0",
|
|
1160
|
+
"typescript": "~6.0.3",
|
|
1161
|
+
"vite": "catalog:",
|
|
1162
|
+
"vitest": "catalog:"
|
|
1084
1163
|
},
|
|
1085
1164
|
"type": "module",
|
|
1086
|
-
"
|
|
1087
|
-
"
|
|
1088
|
-
|
|
1165
|
+
"workspaces": [
|
|
1166
|
+
"packages/*",
|
|
1167
|
+
"test-app",
|
|
1168
|
+
"packages/common/constructs"
|
|
1169
|
+
]
|
|
1089
1170
|
}
|
|
1090
1171
|
"
|
|
1091
1172
|
`;
|
|
@@ -1127,6 +1208,24 @@ You can also automatiaclly fix some lint errors by running the following command
|
|
|
1127
1208
|
"
|
|
1128
1209
|
`;
|
|
1129
1210
|
|
|
1211
|
+
exports[`react-website generator > Tanstack router integration > should generate website with no router correctly > packages/common/constructs/package.json 1`] = `
|
|
1212
|
+
"{
|
|
1213
|
+
"name": "@proj/common-constructs",
|
|
1214
|
+
"version": "0.0.1",
|
|
1215
|
+
"private": true,
|
|
1216
|
+
"type": "module",
|
|
1217
|
+
"dependencies": {
|
|
1218
|
+
"aws-cdk-lib": "catalog:",
|
|
1219
|
+
"constructs": "catalog:",
|
|
1220
|
+
"tslib": "^2.3.0"
|
|
1221
|
+
},
|
|
1222
|
+
"devDependencies": {
|
|
1223
|
+
"@types/node": "catalog:"
|
|
1224
|
+
}
|
|
1225
|
+
}
|
|
1226
|
+
"
|
|
1227
|
+
`;
|
|
1228
|
+
|
|
1130
1229
|
exports[`react-website generator > Tanstack router integration > should generate website with no router correctly > packages/common/constructs/project.json 1`] = `
|
|
1131
1230
|
"{
|
|
1132
1231
|
"name": "@proj/common-constructs",
|
|
@@ -1134,6 +1233,9 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
1134
1233
|
"sourceRoot": "packages/common/constructs/src",
|
|
1135
1234
|
"projectType": "library",
|
|
1136
1235
|
"tags": [],
|
|
1236
|
+
"metadata": {
|
|
1237
|
+
"generator": "ts#project"
|
|
1238
|
+
},
|
|
1137
1239
|
"targets": {
|
|
1138
1240
|
"build": {
|
|
1139
1241
|
"dependsOn": ["lint", "compile", "test", "@proj/test-app:build"]
|
|
@@ -1146,32 +1248,39 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
1146
1248
|
"cwd": "{projectRoot}"
|
|
1147
1249
|
}
|
|
1148
1250
|
},
|
|
1149
|
-
"
|
|
1251
|
+
"format": {
|
|
1150
1252
|
"executor": "nx:run-commands",
|
|
1151
1253
|
"cache": true,
|
|
1152
1254
|
"inputs": ["biome"],
|
|
1153
1255
|
"options": {
|
|
1154
|
-
"command": "biome
|
|
1256
|
+
"command": "biome format {projectRoot}"
|
|
1155
1257
|
},
|
|
1156
1258
|
"configurations": {
|
|
1157
1259
|
"fix": {
|
|
1158
|
-
"command": "biome
|
|
1260
|
+
"command": "biome format --write {projectRoot}"
|
|
1159
1261
|
},
|
|
1160
1262
|
"skip-lint": {
|
|
1161
1263
|
"command": "node -e \\"\\""
|
|
1162
1264
|
}
|
|
1163
1265
|
}
|
|
1164
1266
|
},
|
|
1165
|
-
"
|
|
1166
|
-
"executor": "
|
|
1167
|
-
"
|
|
1267
|
+
"lint": {
|
|
1268
|
+
"executor": "nx:run-commands",
|
|
1269
|
+
"cache": true,
|
|
1270
|
+
"inputs": ["biome"],
|
|
1271
|
+
"dependsOn": ["format"],
|
|
1168
1272
|
"options": {
|
|
1169
|
-
"
|
|
1273
|
+
"command": "biome lint {projectRoot}"
|
|
1274
|
+
},
|
|
1275
|
+
"configurations": {
|
|
1276
|
+
"fix": {
|
|
1277
|
+
"command": "biome check --write {projectRoot}"
|
|
1278
|
+
},
|
|
1279
|
+
"skip-lint": {
|
|
1280
|
+
"command": "node -e \\"\\""
|
|
1281
|
+
}
|
|
1170
1282
|
}
|
|
1171
1283
|
}
|
|
1172
|
-
},
|
|
1173
|
-
"metadata": {
|
|
1174
|
-
"generator": "ts#project"
|
|
1175
1284
|
}
|
|
1176
1285
|
}
|
|
1177
1286
|
"
|
|
@@ -1282,10 +1391,31 @@ export const suppressRules = (
|
|
|
1282
1391
|
"
|
|
1283
1392
|
`;
|
|
1284
1393
|
|
|
1394
|
+
exports[`react-website generator > Tanstack router integration > should generate website with no router correctly > packages/common/constructs/src/core/cloudfront.ts 1`] = `
|
|
1395
|
+
"import { CfnDistribution, Distribution } from 'aws-cdk-lib/aws-cloudfront';
|
|
1396
|
+
|
|
1397
|
+
/**
|
|
1398
|
+
* Finds the domain names associated with a CloudFront distribution.
|
|
1399
|
+
*
|
|
1400
|
+
* Includes the distribution's default \`*.cloudfront.net\` domain name plus any custom
|
|
1401
|
+
* domain names (aliases) configured on it.
|
|
1402
|
+
*/
|
|
1403
|
+
export const findCloudFrontDomainNames = (
|
|
1404
|
+
distribution: Distribution,
|
|
1405
|
+
): string[] => {
|
|
1406
|
+
const cfnDistribution = distribution.node.defaultChild as CfnDistribution;
|
|
1407
|
+
const distributionConfig =
|
|
1408
|
+
cfnDistribution.distributionConfig as CfnDistribution.DistributionConfigProperty;
|
|
1409
|
+
return [distribution.domainName, ...(distributionConfig.aliases ?? [])];
|
|
1410
|
+
};
|
|
1411
|
+
"
|
|
1412
|
+
`;
|
|
1413
|
+
|
|
1285
1414
|
exports[`react-website generator > Tanstack router integration > should generate website with no router correctly > packages/common/constructs/src/core/index.ts 1`] = `
|
|
1286
1415
|
"export * from './static-website.js';
|
|
1287
1416
|
export * from './app.js';
|
|
1288
1417
|
export * from './checkov.js';
|
|
1418
|
+
export * from './cloudfront.js';
|
|
1289
1419
|
export * from './runtime-config.js';
|
|
1290
1420
|
export * from './workspace.js';
|
|
1291
1421
|
"
|
|
@@ -1481,11 +1611,21 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
1481
1611
|
"import {
|
|
1482
1612
|
CfnOutput,
|
|
1483
1613
|
CfnResource,
|
|
1614
|
+
Duration,
|
|
1484
1615
|
Lazy,
|
|
1616
|
+
Names,
|
|
1485
1617
|
RemovalPolicy,
|
|
1486
1618
|
Stack,
|
|
1487
1619
|
} from 'aws-cdk-lib';
|
|
1488
|
-
import {
|
|
1620
|
+
import {
|
|
1621
|
+
Distribution,
|
|
1622
|
+
HeadersFrameOption,
|
|
1623
|
+
HeadersReferrerPolicy,
|
|
1624
|
+
ResponseHeadersPolicy,
|
|
1625
|
+
SecurityPolicyProtocol,
|
|
1626
|
+
ViewerProtocolPolicy,
|
|
1627
|
+
} from 'aws-cdk-lib/aws-cloudfront';
|
|
1628
|
+
import { ICertificate } from 'aws-cdk-lib/aws-certificatemanager';
|
|
1489
1629
|
import { S3BucketOrigin } from 'aws-cdk-lib/aws-cloudfront-origins';
|
|
1490
1630
|
import {
|
|
1491
1631
|
BlockPublicAccess,
|
|
@@ -1494,18 +1634,56 @@ import {
|
|
|
1494
1634
|
IBucket,
|
|
1495
1635
|
ObjectOwnership,
|
|
1496
1636
|
} from 'aws-cdk-lib/aws-s3';
|
|
1497
|
-
import {
|
|
1637
|
+
import {
|
|
1638
|
+
BucketDeployment,
|
|
1639
|
+
CacheControl,
|
|
1640
|
+
Source,
|
|
1641
|
+
} from 'aws-cdk-lib/aws-s3-deployment';
|
|
1498
1642
|
import { Construct } from 'constructs';
|
|
1499
1643
|
import { RuntimeConfig } from './runtime-config.js';
|
|
1500
1644
|
import { Key } from 'aws-cdk-lib/aws-kms';
|
|
1645
|
+
import {
|
|
1646
|
+
CfnDelivery,
|
|
1647
|
+
CfnDeliveryDestination,
|
|
1648
|
+
CfnDeliverySource,
|
|
1649
|
+
LogGroup,
|
|
1650
|
+
RetentionDays,
|
|
1651
|
+
} from 'aws-cdk-lib/aws-logs';
|
|
1652
|
+
import { Effect, PolicyStatement, ServicePrincipal } from 'aws-cdk-lib/aws-iam';
|
|
1501
1653
|
import { CfnWebACL } from 'aws-cdk-lib/aws-wafv2';
|
|
1502
1654
|
import { suppressRules } from './checkov.js';
|
|
1503
1655
|
|
|
1504
1656
|
const DEFAULT_RUNTIME_CONFIG_FILENAME = 'runtime-config.json';
|
|
1505
1657
|
|
|
1658
|
+
// Content-Security-Policy enforced on all responses. Restricts scripts and
|
|
1659
|
+
// framing to mitigate XSS and clickjacking, while permitting HTTPS/WSS calls
|
|
1660
|
+
// (connect-src) to AWS service endpoints such as API Gateway, Cognito and
|
|
1661
|
+
// Bedrock AgentCore which are only known at deploy time. Edit this to tighten
|
|
1662
|
+
// connect-src to your specific origins once they are known.
|
|
1663
|
+
const CONTENT_SECURITY_POLICY = [
|
|
1664
|
+
"default-src 'self'",
|
|
1665
|
+
"script-src 'self'",
|
|
1666
|
+
"style-src 'self' 'unsafe-inline'",
|
|
1667
|
+
"img-src 'self' data:",
|
|
1668
|
+
"font-src 'self' data:",
|
|
1669
|
+
"connect-src 'self' https: wss:",
|
|
1670
|
+
"object-src 'none'",
|
|
1671
|
+
"base-uri 'self'",
|
|
1672
|
+
"frame-ancestors 'none'",
|
|
1673
|
+
].join('; ');
|
|
1674
|
+
|
|
1506
1675
|
export interface StaticWebsiteProps {
|
|
1507
1676
|
readonly websiteName: string;
|
|
1508
1677
|
readonly websiteFilePath: string;
|
|
1678
|
+
/**
|
|
1679
|
+
* Custom domain names for the CloudFront distribution. Requires \`certificate\`.
|
|
1680
|
+
*/
|
|
1681
|
+
readonly domainNames?: string[];
|
|
1682
|
+
/**
|
|
1683
|
+
* ACM certificate for the custom domain names. Must be in us-east-1.
|
|
1684
|
+
* When provided, viewers are required to use TLS 1.2 or later.
|
|
1685
|
+
*/
|
|
1686
|
+
readonly certificate?: ICertificate;
|
|
1509
1687
|
}
|
|
1510
1688
|
|
|
1511
1689
|
/**
|
|
@@ -1524,39 +1702,48 @@ export class StaticWebsite extends Construct {
|
|
|
1524
1702
|
constructor(
|
|
1525
1703
|
scope: Construct,
|
|
1526
1704
|
id: string,
|
|
1527
|
-
{
|
|
1705
|
+
{
|
|
1706
|
+
websiteFilePath,
|
|
1707
|
+
websiteName,
|
|
1708
|
+
domainNames,
|
|
1709
|
+
certificate,
|
|
1710
|
+
}: StaticWebsiteProps,
|
|
1528
1711
|
) {
|
|
1529
1712
|
super(scope, id);
|
|
1530
|
-
this.node.setContext(
|
|
1531
|
-
'@aws-cdk/aws-s3:serverAccessLogsUseBucketPolicy',
|
|
1532
|
-
true,
|
|
1533
|
-
);
|
|
1534
1713
|
|
|
1535
1714
|
const websiteKey = new Key(this, 'WebsiteKey', {
|
|
1536
1715
|
enableKeyRotation: true,
|
|
1537
1716
|
});
|
|
1538
1717
|
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1718
|
+
// Allow CloudWatch Logs to use the website key for server access log delivery.
|
|
1719
|
+
const stack = Stack.of(this);
|
|
1720
|
+
websiteKey.addToResourcePolicy(
|
|
1721
|
+
new PolicyStatement({
|
|
1722
|
+
effect: Effect.ALLOW,
|
|
1723
|
+
principals: [
|
|
1724
|
+
new ServicePrincipal(\`logs.\${stack.region}.amazonaws.com\`),
|
|
1725
|
+
],
|
|
1726
|
+
actions: [
|
|
1727
|
+
'kms:Encrypt',
|
|
1728
|
+
'kms:Decrypt',
|
|
1729
|
+
'kms:ReEncrypt*',
|
|
1730
|
+
'kms:GenerateDataKey*',
|
|
1731
|
+
'kms:DescribeKey',
|
|
1732
|
+
],
|
|
1733
|
+
resources: ['*'],
|
|
1734
|
+
conditions: {
|
|
1735
|
+
ArnLike: {
|
|
1736
|
+
'kms:EncryptionContext:aws:logs:arn': \`arn:aws:logs:\${stack.region}:\${stack.account}:log-group:*\`,
|
|
1737
|
+
},
|
|
1738
|
+
},
|
|
1739
|
+
}),
|
|
1740
|
+
);
|
|
1741
|
+
|
|
1742
|
+
const accessLogs = new LogGroup(this, 'AccessLogs', {
|
|
1743
|
+
retention: RetentionDays.ONE_YEAR,
|
|
1545
1744
|
encryptionKey: websiteKey,
|
|
1546
|
-
|
|
1547
|
-
publicReadAccess: false,
|
|
1548
|
-
blockPublicAccess: BlockPublicAccess.BLOCK_ALL,
|
|
1745
|
+
removalPolicy: RemovalPolicy.DESTROY,
|
|
1549
1746
|
});
|
|
1550
|
-
suppressRules(
|
|
1551
|
-
accessLogsBucket,
|
|
1552
|
-
['CKV_AWS_21'],
|
|
1553
|
-
'Access log bucket does not need versioning enabled',
|
|
1554
|
-
);
|
|
1555
|
-
suppressRules(
|
|
1556
|
-
accessLogsBucket,
|
|
1557
|
-
['CKV_AWS_18'],
|
|
1558
|
-
'Access log bucket does not need an access log bucket',
|
|
1559
|
-
);
|
|
1560
1747
|
|
|
1561
1748
|
// S3 Bucket to hold website files
|
|
1562
1749
|
this.websiteBucket = new Bucket(this, 'WebsiteBucket', {
|
|
@@ -1569,13 +1756,23 @@ export class StaticWebsite extends Construct {
|
|
|
1569
1756
|
objectOwnership: ObjectOwnership.BUCKET_OWNER_ENFORCED,
|
|
1570
1757
|
publicReadAccess: false,
|
|
1571
1758
|
blockPublicAccess: BlockPublicAccess.BLOCK_ALL,
|
|
1572
|
-
serverAccessLogsPrefix: 'website-access-logs',
|
|
1573
|
-
serverAccessLogsBucket: accessLogsBucket,
|
|
1574
1759
|
});
|
|
1760
|
+
suppressRules(
|
|
1761
|
+
this.websiteBucket,
|
|
1762
|
+
['CKV_AWS_18'],
|
|
1763
|
+
'Server access logs are delivered to CloudWatch Logs',
|
|
1764
|
+
);
|
|
1765
|
+
this.deliverAccessLogsToCloudWatch(
|
|
1766
|
+
'Website',
|
|
1767
|
+
this.websiteBucket,
|
|
1768
|
+
accessLogs,
|
|
1769
|
+
);
|
|
1575
1770
|
// Web ACL
|
|
1576
1771
|
const wafStack = new CloudfrontWebAcl(this, 'waf');
|
|
1577
1772
|
|
|
1578
|
-
//
|
|
1773
|
+
// Bucket holding CloudFront standard access logs. CloudFront delivers its
|
|
1774
|
+
// own logs to S3 only, so this bucket is retained; its S3 server access
|
|
1775
|
+
// logs are delivered to CloudWatch Logs.
|
|
1579
1776
|
const logBucket = new Bucket(this, 'DistributionLogBucket', {
|
|
1580
1777
|
enforceSSL: true,
|
|
1581
1778
|
autoDeleteObjects: true,
|
|
@@ -1585,14 +1782,48 @@ export class StaticWebsite extends Construct {
|
|
|
1585
1782
|
objectOwnership: ObjectOwnership.BUCKET_OWNER_PREFERRED,
|
|
1586
1783
|
publicReadAccess: false,
|
|
1587
1784
|
blockPublicAccess: BlockPublicAccess.BLOCK_ALL,
|
|
1588
|
-
serverAccessLogsPrefix: 'distribution-access-logs',
|
|
1589
|
-
serverAccessLogsBucket: accessLogsBucket,
|
|
1590
1785
|
});
|
|
1591
1786
|
suppressRules(
|
|
1592
1787
|
logBucket,
|
|
1593
1788
|
['CKV_AWS_21'],
|
|
1594
1789
|
'Distribution log bucket does not need versioning enabled',
|
|
1595
1790
|
);
|
|
1791
|
+
suppressRules(
|
|
1792
|
+
logBucket,
|
|
1793
|
+
['CKV_AWS_18'],
|
|
1794
|
+
'Server access logs are delivered to CloudWatch Logs',
|
|
1795
|
+
);
|
|
1796
|
+
this.deliverAccessLogsToCloudWatch('Distribution', logBucket, accessLogs);
|
|
1797
|
+
|
|
1798
|
+
// Security headers applied to all responses.
|
|
1799
|
+
const responseHeadersPolicy = new ResponseHeadersPolicy(
|
|
1800
|
+
this,
|
|
1801
|
+
'ResponseHeadersPolicy',
|
|
1802
|
+
{
|
|
1803
|
+
securityHeadersBehavior: {
|
|
1804
|
+
strictTransportSecurity: {
|
|
1805
|
+
accessControlMaxAge: Duration.days(730),
|
|
1806
|
+
includeSubdomains: true,
|
|
1807
|
+
preload: true,
|
|
1808
|
+
override: true,
|
|
1809
|
+
},
|
|
1810
|
+
contentTypeOptions: { override: true },
|
|
1811
|
+
frameOptions: {
|
|
1812
|
+
frameOption: HeadersFrameOption.DENY,
|
|
1813
|
+
override: true,
|
|
1814
|
+
},
|
|
1815
|
+
referrerPolicy: {
|
|
1816
|
+
referrerPolicy:
|
|
1817
|
+
HeadersReferrerPolicy.STRICT_ORIGIN_WHEN_CROSS_ORIGIN,
|
|
1818
|
+
override: true,
|
|
1819
|
+
},
|
|
1820
|
+
contentSecurityPolicy: {
|
|
1821
|
+
contentSecurityPolicy: CONTENT_SECURITY_POLICY,
|
|
1822
|
+
override: true,
|
|
1823
|
+
},
|
|
1824
|
+
},
|
|
1825
|
+
},
|
|
1826
|
+
);
|
|
1596
1827
|
|
|
1597
1828
|
const defaultRootObject = 'index.html';
|
|
1598
1829
|
this.cloudFrontDistribution = new Distribution(
|
|
@@ -1602,9 +1833,17 @@ export class StaticWebsite extends Construct {
|
|
|
1602
1833
|
webAclId: wafStack.wafArn,
|
|
1603
1834
|
enableLogging: true,
|
|
1604
1835
|
logBucket: logBucket,
|
|
1836
|
+
...(certificate
|
|
1837
|
+
? {
|
|
1838
|
+
certificate,
|
|
1839
|
+
domainNames,
|
|
1840
|
+
minimumProtocolVersion: SecurityPolicyProtocol.TLS_V1_2_2021,
|
|
1841
|
+
}
|
|
1842
|
+
: {}),
|
|
1605
1843
|
defaultBehavior: {
|
|
1606
1844
|
origin: S3BucketOrigin.withOriginAccessControl(this.websiteBucket),
|
|
1607
1845
|
viewerProtocolPolicy: ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
|
|
1846
|
+
responseHeadersPolicy,
|
|
1608
1847
|
},
|
|
1609
1848
|
defaultRootObject,
|
|
1610
1849
|
errorResponses: [
|
|
@@ -1621,16 +1860,31 @@ export class StaticWebsite extends Construct {
|
|
|
1621
1860
|
],
|
|
1622
1861
|
},
|
|
1623
1862
|
);
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1863
|
+
if (!certificate) {
|
|
1864
|
+
// See https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DownloadDistValuesGeneral.html
|
|
1865
|
+
suppressRules(
|
|
1866
|
+
this.cloudFrontDistribution,
|
|
1867
|
+
['CKV_AWS_174'],
|
|
1868
|
+
'Cloudfront default certificate does not use TLS 1.2',
|
|
1869
|
+
);
|
|
1870
|
+
}
|
|
1629
1871
|
|
|
1630
1872
|
// Deploy Website
|
|
1631
1873
|
this.bucketDeployment = new BucketDeployment(this, 'WebsiteDeployment', {
|
|
1874
|
+
sources: [Source.asset(websiteFilePath)],
|
|
1875
|
+
destinationBucket: this.websiteBucket,
|
|
1876
|
+
// Files in the distribution's edge caches will be invalidated after files are uploaded to the destination bucket.
|
|
1877
|
+
distribution: this.cloudFrontDistribution,
|
|
1878
|
+
// Exclude the runtime config from this deployment's sync so its default pruning
|
|
1879
|
+
// never deletes the file managed separately by RuntimeConfigDeployment below.
|
|
1880
|
+
exclude: [DEFAULT_RUNTIME_CONFIG_FILENAME],
|
|
1881
|
+
memoryLimit: 1024,
|
|
1882
|
+
});
|
|
1883
|
+
|
|
1884
|
+
// Deploy runtime-config.json separately so it is never cached - clients
|
|
1885
|
+
// must always fetch the latest configuration.
|
|
1886
|
+
new BucketDeployment(this, 'RuntimeConfigDeployment', {
|
|
1632
1887
|
sources: [
|
|
1633
|
-
Source.asset(websiteFilePath),
|
|
1634
1888
|
Source.data(
|
|
1635
1889
|
DEFAULT_RUNTIME_CONFIG_FILENAME,
|
|
1636
1890
|
Lazy.string({
|
|
@@ -1642,8 +1896,9 @@ export class StaticWebsite extends Construct {
|
|
|
1642
1896
|
),
|
|
1643
1897
|
],
|
|
1644
1898
|
destinationBucket: this.websiteBucket,
|
|
1645
|
-
// Files in the distribution's edge caches will be invalidated after files are uploaded to the destination bucket.
|
|
1646
1899
|
distribution: this.cloudFrontDistribution,
|
|
1900
|
+
cacheControl: [CacheControl.noCache()],
|
|
1901
|
+
prune: false,
|
|
1647
1902
|
memoryLimit: 1024,
|
|
1648
1903
|
});
|
|
1649
1904
|
|
|
@@ -1664,6 +1919,48 @@ export class StaticWebsite extends Construct {
|
|
|
1664
1919
|
value: this.websiteBucket.bucketName,
|
|
1665
1920
|
});
|
|
1666
1921
|
}
|
|
1922
|
+
|
|
1923
|
+
/**
|
|
1924
|
+
* Delivers a bucket's S3 server access logs to a CloudWatch log group using
|
|
1925
|
+
* CloudWatch Logs vended log delivery.
|
|
1926
|
+
*/
|
|
1927
|
+
private deliverAccessLogsToCloudWatch(
|
|
1928
|
+
id: string,
|
|
1929
|
+
bucket: IBucket,
|
|
1930
|
+
logGroup: LogGroup,
|
|
1931
|
+
) {
|
|
1932
|
+
const source: CfnDeliverySource = new CfnDeliverySource(
|
|
1933
|
+
this,
|
|
1934
|
+
\`\${id}AccessLogsSource\`,
|
|
1935
|
+
{
|
|
1936
|
+
name: Lazy.string({
|
|
1937
|
+
produce: () => Names.uniqueResourceName(source, { maxLength: 60 }),
|
|
1938
|
+
}),
|
|
1939
|
+
logType: 'S3_SERVER_ACCESS_LOGS',
|
|
1940
|
+
resourceArn: bucket.bucketArn,
|
|
1941
|
+
},
|
|
1942
|
+
);
|
|
1943
|
+
const bucketPolicy = (bucket as Bucket).policy;
|
|
1944
|
+
if (bucketPolicy) {
|
|
1945
|
+
source.node.addDependency(bucketPolicy);
|
|
1946
|
+
}
|
|
1947
|
+
const destination: CfnDeliveryDestination = new CfnDeliveryDestination(
|
|
1948
|
+
this,
|
|
1949
|
+
\`\${id}AccessLogsDestination\`,
|
|
1950
|
+
{
|
|
1951
|
+
name: Lazy.string({
|
|
1952
|
+
produce: () =>
|
|
1953
|
+
Names.uniqueResourceName(destination, { maxLength: 60 }),
|
|
1954
|
+
}),
|
|
1955
|
+
destinationResourceArn: logGroup.logGroupArn,
|
|
1956
|
+
},
|
|
1957
|
+
);
|
|
1958
|
+
const delivery = new CfnDelivery(this, \`\${id}AccessLogsDelivery\`, {
|
|
1959
|
+
deliverySourceName: source.name,
|
|
1960
|
+
deliveryDestinationArn: destination.attrArn,
|
|
1961
|
+
});
|
|
1962
|
+
delivery.addDependency(source);
|
|
1963
|
+
}
|
|
1667
1964
|
}
|
|
1668
1965
|
|
|
1669
1966
|
export class CloudfrontWebAcl extends Stack {
|
|
@@ -1786,9 +2083,13 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
1786
2083
|
"emitDeclarationOnly": false,
|
|
1787
2084
|
"module": "nodenext",
|
|
1788
2085
|
"moduleResolution": "nodenext",
|
|
1789
|
-
"types": [
|
|
2086
|
+
"types": [
|
|
2087
|
+
"node"
|
|
2088
|
+
]
|
|
1790
2089
|
},
|
|
1791
|
-
"include": [
|
|
2090
|
+
"include": [
|
|
2091
|
+
"src/**/*.ts"
|
|
2092
|
+
],
|
|
1792
2093
|
"references": [],
|
|
1793
2094
|
"exclude": [
|
|
1794
2095
|
"vite.config.ts",
|
|
@@ -1851,7 +2152,7 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
1851
2152
|
"import { defineConfig } from 'vitest/config';
|
|
1852
2153
|
|
|
1853
2154
|
export default defineConfig(() => ({
|
|
1854
|
-
root:
|
|
2155
|
+
root: import.meta.dirname,
|
|
1855
2156
|
cacheDir: '../../../node_modules/.vite/packages/common/constructs',
|
|
1856
2157
|
test: {
|
|
1857
2158
|
passWithNoTests: true,
|
|
@@ -1872,9 +2173,25 @@ export default defineConfig(() => ({
|
|
|
1872
2173
|
|
|
1873
2174
|
exports[`react-website generator > Tanstack router integration > should generate website with no router correctly > pnpm-workspace.yaml 1`] = `
|
|
1874
2175
|
"packages:
|
|
1875
|
-
-
|
|
1876
|
-
-
|
|
1877
|
-
-
|
|
2176
|
+
- packages/*
|
|
2177
|
+
- test-app
|
|
2178
|
+
- packages/common/*
|
|
2179
|
+
catalog:
|
|
2180
|
+
vite: 8.2.1
|
|
2181
|
+
vitest: 4.1.10
|
|
2182
|
+
'@vitest/coverage-v8': 4.1.10
|
|
2183
|
+
constructs: 10.8.1
|
|
2184
|
+
aws-cdk-lib: 2.263.0
|
|
2185
|
+
'@types/node': 26.2.0
|
|
2186
|
+
react: 19.2.8
|
|
2187
|
+
react-dom: 19.2.8
|
|
2188
|
+
'@cloudscape-design/components': 3.0.1342
|
|
2189
|
+
'@cloudscape-design/board-components': 3.0.213
|
|
2190
|
+
'@cloudscape-design/global-styles': 1.0.65
|
|
2191
|
+
tailwindcss: 4.3.3
|
|
2192
|
+
'@nx/react': 23.1.1
|
|
2193
|
+
'@vitest/ui': 4.1.10
|
|
2194
|
+
'@tailwindcss/vite': 4.3.3
|
|
1878
2195
|
"
|
|
1879
2196
|
`;
|
|
1880
2197
|
|
|
@@ -1914,7 +2231,7 @@ You can also automatically fix some lint errors by running the following command
|
|
|
1914
2231
|
|
|
1915
2232
|
In order to integrate with cognito or trpc backends, you need to have a \`runtime-config.json\` file in your \`/public\` website directory. You can fetch this is follows:
|
|
1916
2233
|
|
|
1917
|
-
\`pnpm nx
|
|
2234
|
+
\`pnpm nx load-runtime-config @proj/test-app\`
|
|
1918
2235
|
|
|
1919
2236
|
> [!IMPORTANT]
|
|
1920
2237
|
> Ensure you have AWS CLI and curl installed
|
|
@@ -1948,6 +2265,25 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
1948
2265
|
"
|
|
1949
2266
|
`;
|
|
1950
2267
|
|
|
2268
|
+
exports[`react-website generator > Tanstack router integration > should generate website with no router correctly > test-app/package.json 1`] = `
|
|
2269
|
+
"{
|
|
2270
|
+
"name": "@proj/test-app",
|
|
2271
|
+
"version": "0.0.1",
|
|
2272
|
+
"private": true,
|
|
2273
|
+
"type": "module",
|
|
2274
|
+
"dependencies": {
|
|
2275
|
+
"@cloudscape-design/board-components": "catalog:",
|
|
2276
|
+
"@cloudscape-design/components": "catalog:",
|
|
2277
|
+
"@cloudscape-design/global-styles": "catalog:",
|
|
2278
|
+
"react": "catalog:",
|
|
2279
|
+
"react-dom": "catalog:",
|
|
2280
|
+
"tailwindcss": "catalog:"
|
|
2281
|
+
},
|
|
2282
|
+
"devDependencies": {}
|
|
2283
|
+
}
|
|
2284
|
+
"
|
|
2285
|
+
`;
|
|
2286
|
+
|
|
1951
2287
|
exports[`react-website generator > Tanstack router integration > should generate website with no router correctly > test-app/project.json 1`] = `
|
|
1952
2288
|
"{
|
|
1953
2289
|
"name": "@proj/test-app",
|
|
@@ -1959,33 +2295,17 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
1959
2295
|
"generator": "ts#react-website",
|
|
1960
2296
|
"ux": "cloudscape",
|
|
1961
2297
|
"framework": "react",
|
|
1962
|
-
"infra": "cloudfront-s3"
|
|
2298
|
+
"infra": "cloudfront-s3",
|
|
2299
|
+
"tailwind": true,
|
|
2300
|
+
"tanstackRouter": false,
|
|
2301
|
+
"iac": "cdk"
|
|
1963
2302
|
},
|
|
1964
2303
|
"targets": {
|
|
1965
2304
|
"build": {
|
|
1966
|
-
"dependsOn": ["lint", "compile", "
|
|
1967
|
-
"options": {
|
|
1968
|
-
"outputPath": "dist/{projectRoot}/bundle"
|
|
1969
|
-
}
|
|
1970
|
-
},
|
|
1971
|
-
"bundle": {
|
|
1972
|
-
"executor": "@nx/vite:build",
|
|
1973
|
-
"outputs": ["{options.outputPath}"],
|
|
1974
|
-
"defaultConfiguration": "production",
|
|
1975
|
-
"options": {
|
|
1976
|
-
"outputPath": "dist/{projectRoot}/bundle"
|
|
1977
|
-
},
|
|
1978
|
-
"configurations": {
|
|
1979
|
-
"development": {
|
|
1980
|
-
"mode": "development"
|
|
1981
|
-
},
|
|
1982
|
-
"production": {
|
|
1983
|
-
"mode": "production"
|
|
1984
|
-
}
|
|
1985
|
-
}
|
|
2305
|
+
"dependsOn": ["lint", "compile", "test", "bundle"]
|
|
1986
2306
|
},
|
|
1987
2307
|
"compile": {
|
|
1988
|
-
"dependsOn": ["
|
|
2308
|
+
"dependsOn": ["^build"],
|
|
1989
2309
|
"executor": "nx:run-commands",
|
|
1990
2310
|
"outputs": ["{workspaceRoot}/dist/{projectRoot}/tsc"],
|
|
1991
2311
|
"options": {
|
|
@@ -1993,72 +2313,30 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
1993
2313
|
"cwd": "{projectRoot}"
|
|
1994
2314
|
}
|
|
1995
2315
|
},
|
|
1996
|
-
"
|
|
2316
|
+
"dev": {
|
|
1997
2317
|
"executor": "nx:run-commands",
|
|
1998
|
-
"
|
|
1999
|
-
"description": "Load runtime config from your deployed stack for dev purposes. You must set your AWS CLI credentials whilst calling 'pnpm nx run @proj/test-app:load:runtime-config'"
|
|
2000
|
-
},
|
|
2318
|
+
"continuous": true,
|
|
2001
2319
|
"options": {
|
|
2002
|
-
"command": "
|
|
2003
|
-
|
|
2004
|
-
},
|
|
2005
|
-
"preview": {
|
|
2006
|
-
"dependsOn": ["build"],
|
|
2007
|
-
"executor": "@nx/vite:preview-server",
|
|
2008
|
-
"defaultConfiguration": "development",
|
|
2009
|
-
"options": {
|
|
2010
|
-
"buildTarget": "@proj/test-app:build"
|
|
2011
|
-
},
|
|
2012
|
-
"configurations": {
|
|
2013
|
-
"development": {
|
|
2014
|
-
"buildTarget": "@proj/test-app:build:development"
|
|
2015
|
-
},
|
|
2016
|
-
"production": {
|
|
2017
|
-
"buildTarget": "@proj/test-app:build:production"
|
|
2018
|
-
}
|
|
2320
|
+
"command": "vite --mode local-dev",
|
|
2321
|
+
"cwd": "{projectRoot}"
|
|
2019
2322
|
}
|
|
2020
2323
|
},
|
|
2021
|
-
"
|
|
2022
|
-
"executor": "
|
|
2023
|
-
"
|
|
2324
|
+
"format": {
|
|
2325
|
+
"executor": "nx:run-commands",
|
|
2326
|
+
"cache": true,
|
|
2327
|
+
"inputs": ["biome"],
|
|
2024
2328
|
"options": {
|
|
2025
|
-
"
|
|
2329
|
+
"command": "biome format {projectRoot}"
|
|
2026
2330
|
},
|
|
2027
2331
|
"configurations": {
|
|
2028
|
-
"
|
|
2029
|
-
"
|
|
2030
|
-
"hmr": true
|
|
2332
|
+
"fix": {
|
|
2333
|
+
"command": "biome format --write {projectRoot}"
|
|
2031
2334
|
},
|
|
2032
|
-
"
|
|
2033
|
-
"
|
|
2034
|
-
"hmr": false
|
|
2335
|
+
"skip-lint": {
|
|
2336
|
+
"command": "node -e \\"\\""
|
|
2035
2337
|
}
|
|
2036
2338
|
}
|
|
2037
2339
|
},
|
|
2038
|
-
"serve-local": {
|
|
2039
|
-
"executor": "@nx/vite:dev-server",
|
|
2040
|
-
"options": {
|
|
2041
|
-
"buildTarget": "@proj/test-app:build:development",
|
|
2042
|
-
"hmr": true,
|
|
2043
|
-
"mode": "serve-local"
|
|
2044
|
-
},
|
|
2045
|
-
"continuous": true
|
|
2046
|
-
},
|
|
2047
|
-
"serve-static": {
|
|
2048
|
-
"executor": "@nx/web:file-server",
|
|
2049
|
-
"dependsOn": ["build"],
|
|
2050
|
-
"options": {
|
|
2051
|
-
"buildTarget": "@proj/test-app:build",
|
|
2052
|
-
"spa": true
|
|
2053
|
-
}
|
|
2054
|
-
},
|
|
2055
|
-
"test": {
|
|
2056
|
-
"executor": "@nx/vitest:test",
|
|
2057
|
-
"outputs": ["{options.reportsDirectory}"],
|
|
2058
|
-
"options": {
|
|
2059
|
-
"reportsDirectory": "{workspaceRoot}/coverage/{projectRoot}"
|
|
2060
|
-
}
|
|
2061
|
-
},
|
|
2062
2340
|
"lint": {
|
|
2063
2341
|
"executor": "nx:run-commands",
|
|
2064
2342
|
"cache": true,
|
|
@@ -2073,6 +2351,16 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
2073
2351
|
"skip-lint": {
|
|
2074
2352
|
"command": "node -e \\"\\""
|
|
2075
2353
|
}
|
|
2354
|
+
},
|
|
2355
|
+
"dependsOn": ["format"]
|
|
2356
|
+
},
|
|
2357
|
+
"load-runtime-config": {
|
|
2358
|
+
"executor": "nx:run-commands",
|
|
2359
|
+
"metadata": {
|
|
2360
|
+
"description": "Load runtime config from your deployed stack for dev purposes. You must set your AWS CLI credentials whilst calling 'pnpm nx load-runtime-config @proj/test-app'"
|
|
2361
|
+
},
|
|
2362
|
+
"options": {
|
|
2363
|
+
"command": "aws s3 cp s3://\`aws cloudformation describe-stacks --query \\"Stacks[?starts_with(StackName, 'proj-')][].Outputs[] | [?contains(OutputKey, 'TestAppWebsiteBucketName')].OutputValue\\" --output text\`/runtime-config.json \\"{projectRoot}/public/runtime-config.json\\""
|
|
2076
2364
|
}
|
|
2077
2365
|
}
|
|
2078
2366
|
}
|
|
@@ -2280,15 +2568,22 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
2280
2568
|
"outDir": "../dist/test-app/tsc",
|
|
2281
2569
|
"tsBuildInfoFile": "../dist/test-app/tsc/tsconfig.lib.tsbuildinfo",
|
|
2282
2570
|
"jsx": "react-jsx",
|
|
2283
|
-
"lib": [
|
|
2571
|
+
"lib": [
|
|
2572
|
+
"DOM"
|
|
2573
|
+
],
|
|
2284
2574
|
"types": [
|
|
2285
2575
|
"node",
|
|
2286
2576
|
"@nx/react/typings/cssmodule.d.ts",
|
|
2287
2577
|
"@nx/react/typings/image.d.ts",
|
|
2288
2578
|
"vite/client"
|
|
2289
|
-
]
|
|
2579
|
+
],
|
|
2580
|
+
"rootDir": "src",
|
|
2581
|
+
"module": "esnext",
|
|
2582
|
+
"moduleResolution": "bundler"
|
|
2290
2583
|
},
|
|
2291
2584
|
"exclude": [
|
|
2585
|
+
"out-tsc",
|
|
2586
|
+
"dist",
|
|
2292
2587
|
"src/**/*.spec.ts",
|
|
2293
2588
|
"src/**/*.test.ts",
|
|
2294
2589
|
"src/**/*.spec.tsx",
|
|
@@ -2302,7 +2597,12 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
2302
2597
|
"vitest.config.ts",
|
|
2303
2598
|
"vitest.config.mts"
|
|
2304
2599
|
],
|
|
2305
|
-
"include": [
|
|
2600
|
+
"include": [
|
|
2601
|
+
"src/**/*.js",
|
|
2602
|
+
"src/**/*.jsx",
|
|
2603
|
+
"src/**/*.ts",
|
|
2604
|
+
"src/**/*.tsx"
|
|
2605
|
+
]
|
|
2306
2606
|
}
|
|
2307
2607
|
"
|
|
2308
2608
|
`;
|
|
@@ -2341,7 +2641,10 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
2341
2641
|
"vitest",
|
|
2342
2642
|
"@nx/react/typings/cssmodule.d.ts",
|
|
2343
2643
|
"@nx/react/typings/image.d.ts"
|
|
2344
|
-
]
|
|
2644
|
+
],
|
|
2645
|
+
"jsx": "react-jsx",
|
|
2646
|
+
"module": "esnext",
|
|
2647
|
+
"moduleResolution": "bundler"
|
|
2345
2648
|
},
|
|
2346
2649
|
"include": [
|
|
2347
2650
|
"vite.config.ts",
|
|
@@ -2390,7 +2693,7 @@ export default defineConfig(() => ({
|
|
|
2390
2693
|
// plugins: [],
|
|
2391
2694
|
// },
|
|
2392
2695
|
build: {
|
|
2393
|
-
outDir: '../dist/test-app',
|
|
2696
|
+
outDir: '../dist/test-app/bundle',
|
|
2394
2697
|
emptyOutDir: true,
|
|
2395
2698
|
reportCompressedSize: true,
|
|
2396
2699
|
commonjsOptions: {
|
|
@@ -2410,7 +2713,7 @@ export default defineConfig(() => ({
|
|
|
2410
2713
|
provider: 'v8' as const,
|
|
2411
2714
|
},
|
|
2412
2715
|
},
|
|
2413
|
-
resolve: { tsconfigPaths: true },
|
|
2716
|
+
resolve: { tsconfigPaths: true, dedupe: ['react', 'react-dom'] },
|
|
2414
2717
|
define: { global: {} },
|
|
2415
2718
|
}));
|
|
2416
2719
|
"
|
|
@@ -2420,9 +2723,14 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
2420
2723
|
"{
|
|
2421
2724
|
"compilerOptions": {
|
|
2422
2725
|
"paths": {
|
|
2423
|
-
"
|
|
2424
|
-
|
|
2726
|
+
"@proj/test-app": [
|
|
2727
|
+
"./test-app/src/index.ts"
|
|
2728
|
+
],
|
|
2729
|
+
"@proj/common-constructs": [
|
|
2730
|
+
"./packages/common/constructs/src/index.ts"
|
|
2731
|
+
]
|
|
2425
2732
|
},
|
|
2733
|
+
"composite": true,
|
|
2426
2734
|
"rootDir": "."
|
|
2427
2735
|
}
|
|
2428
2736
|
}
|
|
@@ -2431,6 +2739,9 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
2431
2739
|
|
|
2432
2740
|
exports[`react-website generator > Tanstack router integration > should generate website with no router correctly > tsconfig.json 1`] = `
|
|
2433
2741
|
"{
|
|
2742
|
+
"extends": "./tsconfig.base.json",
|
|
2743
|
+
"files": [],
|
|
2744
|
+
"include": [],
|
|
2434
2745
|
"references": [
|
|
2435
2746
|
{
|
|
2436
2747
|
"path": "./test-app"
|
|
@@ -2443,11 +2754,19 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
2443
2754
|
"
|
|
2444
2755
|
`;
|
|
2445
2756
|
|
|
2446
|
-
exports[`react-website generator > Tanstack router integration > should generate website with no router correctly > vitest.
|
|
2447
|
-
"
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
|
|
2757
|
+
exports[`react-website generator > Tanstack router integration > should generate website with no router correctly > vitest.config.ts 1`] = `
|
|
2758
|
+
"import { defineConfig } from 'vitest/config';
|
|
2759
|
+
|
|
2760
|
+
export default defineConfig({
|
|
2761
|
+
test: {
|
|
2762
|
+
projects: [
|
|
2763
|
+
'**/vite.config.{mjs,js,ts,mts}',
|
|
2764
|
+
'**/vitest.config.{mjs,js,ts,mts}',
|
|
2765
|
+
'!vitest.config.{mjs,js,ts,mts}',
|
|
2766
|
+
'!vite.config.{mjs,js,ts,mts}',
|
|
2767
|
+
],
|
|
2768
|
+
},
|
|
2769
|
+
});
|
|
2451
2770
|
"
|
|
2452
2771
|
`;
|
|
2453
2772
|
|
|
@@ -2463,7 +2782,7 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
2463
2782
|
|
|
2464
2783
|
exports[`react-website generator > Tanstack router integration > should generate website with router correctly > biome.json 1`] = `
|
|
2465
2784
|
"{
|
|
2466
|
-
"$schema": "https://biomejs.dev/schemas/2.
|
|
2785
|
+
"$schema": "https://biomejs.dev/schemas/2.5.7/schema.json",
|
|
2467
2786
|
"root": true,
|
|
2468
2787
|
"formatter": {
|
|
2469
2788
|
"enabled": true,
|
|
@@ -2475,6 +2794,9 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
2475
2794
|
"formatter": {
|
|
2476
2795
|
"quoteStyle": "single",
|
|
2477
2796
|
"trailingCommas": "all"
|
|
2797
|
+
},
|
|
2798
|
+
"resolver": {
|
|
2799
|
+
"experimentalPnpmCatalogs": true
|
|
2478
2800
|
}
|
|
2479
2801
|
},
|
|
2480
2802
|
"css": {
|
|
@@ -2488,9 +2810,9 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
2488
2810
|
"linter": {
|
|
2489
2811
|
"enabled": true,
|
|
2490
2812
|
"rules": {
|
|
2491
|
-
"
|
|
2813
|
+
"preset": "none",
|
|
2492
2814
|
"correctness": {
|
|
2493
|
-
"noUndeclaredDependencies": "
|
|
2815
|
+
"noUndeclaredDependencies": "error"
|
|
2494
2816
|
}
|
|
2495
2817
|
}
|
|
2496
2818
|
},
|
|
@@ -2509,9 +2831,29 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
2509
2831
|
"!**/node_modules",
|
|
2510
2832
|
"!**/.nx",
|
|
2511
2833
|
"!**/.venv",
|
|
2512
|
-
"
|
|
2834
|
+
"!**/.grit",
|
|
2835
|
+
"!**/*.css",
|
|
2836
|
+
"!**/*.gen.*",
|
|
2837
|
+
"!**/generated/**",
|
|
2838
|
+
"!**/tsconfig*.json"
|
|
2513
2839
|
]
|
|
2514
|
-
}
|
|
2840
|
+
},
|
|
2841
|
+
"overrides": [
|
|
2842
|
+
{
|
|
2843
|
+
"includes": [
|
|
2844
|
+
"**/*.config.{ts,mts,cts,js,mjs,cjs}",
|
|
2845
|
+
"**/*.{spec,test}.{ts,tsx,mts,cts,js,jsx,mjs,cjs}",
|
|
2846
|
+
"**/*.stories.{ts,tsx}"
|
|
2847
|
+
],
|
|
2848
|
+
"linter": {
|
|
2849
|
+
"rules": {
|
|
2850
|
+
"correctness": {
|
|
2851
|
+
"noUndeclaredDependencies": "off"
|
|
2852
|
+
}
|
|
2853
|
+
}
|
|
2854
|
+
}
|
|
2855
|
+
}
|
|
2856
|
+
]
|
|
2515
2857
|
}
|
|
2516
2858
|
"
|
|
2517
2859
|
`;
|
|
@@ -2524,35 +2866,66 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
2524
2866
|
"targetDefaults": {
|
|
2525
2867
|
"build": {
|
|
2526
2868
|
"cache": true,
|
|
2527
|
-
"dependsOn": ["^build"],
|
|
2528
2869
|
"inputs": ["default"]
|
|
2529
2870
|
},
|
|
2530
2871
|
"lint": {
|
|
2531
2872
|
"cache": true
|
|
2532
2873
|
},
|
|
2533
|
-
"
|
|
2534
|
-
"cache": true,
|
|
2874
|
+
"test": {
|
|
2535
2875
|
"dependsOn": ["^build"],
|
|
2536
|
-
"inputs": ["default"
|
|
2876
|
+
"inputs": ["default"]
|
|
2537
2877
|
},
|
|
2538
2878
|
"@nx/vitest:test": {
|
|
2539
2879
|
"cache": true,
|
|
2540
|
-
"inputs": ["default", "^
|
|
2880
|
+
"inputs": ["default", "^production"],
|
|
2541
2881
|
"configurations": {
|
|
2542
2882
|
"update-snapshot": {
|
|
2543
2883
|
"args": "--update"
|
|
2544
2884
|
}
|
|
2545
2885
|
}
|
|
2546
2886
|
},
|
|
2547
|
-
"test": {
|
|
2548
|
-
"dependsOn": ["^build"],
|
|
2549
|
-
"inputs": ["default"]
|
|
2550
|
-
},
|
|
2551
2887
|
"compile": {
|
|
2552
2888
|
"cache": true,
|
|
2553
2889
|
"inputs": ["default"]
|
|
2554
2890
|
}
|
|
2555
2891
|
},
|
|
2892
|
+
"plugins": [
|
|
2893
|
+
{
|
|
2894
|
+
"plugin": "@nx/js/typescript",
|
|
2895
|
+
"options": {
|
|
2896
|
+
"typecheck": {
|
|
2897
|
+
"targetName": "typecheck"
|
|
2898
|
+
},
|
|
2899
|
+
"build": {
|
|
2900
|
+
"targetName": "compile",
|
|
2901
|
+
"configName": "tsconfig.lib.json",
|
|
2902
|
+
"buildDepsName": "build-deps",
|
|
2903
|
+
"watchDepsName": "watch-deps"
|
|
2904
|
+
}
|
|
2905
|
+
}
|
|
2906
|
+
},
|
|
2907
|
+
{
|
|
2908
|
+
"plugin": "@nx/vite/plugin",
|
|
2909
|
+
"options": {
|
|
2910
|
+
"buildTargetName": "bundle",
|
|
2911
|
+
"serveTargetName": "serve",
|
|
2912
|
+
"devTargetName": "serve",
|
|
2913
|
+
"previewTargetName": "preview",
|
|
2914
|
+
"serveStaticTargetName": "serve-static",
|
|
2915
|
+
"typecheckTargetName": "vite:typecheck",
|
|
2916
|
+
"buildDepsTargetName": "build-deps",
|
|
2917
|
+
"watchDepsTargetName": "watch-deps"
|
|
2918
|
+
}
|
|
2919
|
+
},
|
|
2920
|
+
{
|
|
2921
|
+
"plugin": "@nx/vitest",
|
|
2922
|
+
"options": {
|
|
2923
|
+
"testTargetName": "test",
|
|
2924
|
+
"ciTargetName": "test-ci",
|
|
2925
|
+
"testMode": "watch"
|
|
2926
|
+
}
|
|
2927
|
+
}
|
|
2928
|
+
],
|
|
2556
2929
|
"generators": {
|
|
2557
2930
|
"@nx/react": {
|
|
2558
2931
|
"application": {
|
|
@@ -2578,23 +2951,7 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
2578
2951
|
"transitive": true
|
|
2579
2952
|
}
|
|
2580
2953
|
]
|
|
2581
|
-
}
|
|
2582
|
-
"plugins": [
|
|
2583
|
-
{
|
|
2584
|
-
"plugin": "@nx/js/typescript",
|
|
2585
|
-
"options": {
|
|
2586
|
-
"typecheck": {
|
|
2587
|
-
"targetName": "typecheck"
|
|
2588
|
-
},
|
|
2589
|
-
"build": {
|
|
2590
|
-
"targetName": "compile",
|
|
2591
|
-
"configName": "tsconfig.lib.json",
|
|
2592
|
-
"buildDepsName": "build-deps",
|
|
2593
|
-
"watchDepsName": "watch-deps"
|
|
2594
|
-
}
|
|
2595
|
-
}
|
|
2596
|
-
}
|
|
2597
|
-
]
|
|
2954
|
+
}
|
|
2598
2955
|
}
|
|
2599
2956
|
"
|
|
2600
2957
|
`;
|
|
@@ -2602,49 +2959,39 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
2602
2959
|
exports[`react-website generator > Tanstack router integration > should generate website with router correctly > package.json 1`] = `
|
|
2603
2960
|
"{
|
|
2604
2961
|
"name": "@proj/source",
|
|
2605
|
-
"dependencies": {
|
|
2606
|
-
"@cloudscape-design/board-components": "3.0.187",
|
|
2607
|
-
"@cloudscape-design/components": "3.0.1304",
|
|
2608
|
-
"@cloudscape-design/global-styles": "1.0.59",
|
|
2609
|
-
"@tanstack/react-router": "1.170.10",
|
|
2610
|
-
"aws-cdk-lib": "2.257.0",
|
|
2611
|
-
"constructs": "10.6.0",
|
|
2612
|
-
"react": "19.2.7",
|
|
2613
|
-
"react-dom": "19.2.7",
|
|
2614
|
-
"tailwindcss": "4.3.0"
|
|
2615
|
-
},
|
|
2962
|
+
"dependencies": {},
|
|
2616
2963
|
"devDependencies": {
|
|
2617
|
-
"@nx/js": "
|
|
2618
|
-
"@nx/react": "
|
|
2619
|
-
"@nx/vite": "
|
|
2620
|
-
"@nx/vitest": "
|
|
2621
|
-
"@nx/web": "
|
|
2622
|
-
"@swc-node/register": "~1.11.1",
|
|
2623
|
-
"@swc/core": "~1.15.5",
|
|
2964
|
+
"@nx/js": "23.1.1",
|
|
2965
|
+
"@nx/react": "catalog:",
|
|
2966
|
+
"@nx/vite": "23.1.1",
|
|
2967
|
+
"@nx/vitest": "23.1.1",
|
|
2968
|
+
"@nx/web": "23.1.1",
|
|
2624
2969
|
"@swc/helpers": "~0.5.18",
|
|
2625
|
-
"@tailwindcss/vite": "
|
|
2626
|
-
"@tanstack/router-generator": "
|
|
2627
|
-
"@tanstack/router-plugin": "
|
|
2628
|
-
"@tanstack/router-utils": "
|
|
2629
|
-
"@tanstack/virtual-file-routes": "
|
|
2970
|
+
"@tailwindcss/vite": "catalog:",
|
|
2971
|
+
"@tanstack/router-generator": "catalog:",
|
|
2972
|
+
"@tanstack/router-plugin": "catalog:",
|
|
2973
|
+
"@tanstack/router-utils": "catalog:",
|
|
2974
|
+
"@tanstack/virtual-file-routes": "catalog:",
|
|
2630
2975
|
"@testing-library/dom": "10.4.0",
|
|
2631
2976
|
"@testing-library/react": "16.3.0",
|
|
2632
|
-
"@types/node": "
|
|
2977
|
+
"@types/node": "catalog:",
|
|
2633
2978
|
"@types/react": "^19.0.0",
|
|
2634
2979
|
"@types/react-dom": "^19.0.0",
|
|
2635
2980
|
"@vitejs/plugin-react": "^6.0.0",
|
|
2636
|
-
"@vitest/coverage-v8": "
|
|
2637
|
-
"@vitest/ui": "
|
|
2981
|
+
"@vitest/coverage-v8": "catalog:",
|
|
2982
|
+
"@vitest/ui": "catalog:",
|
|
2638
2983
|
"jiti": "2.4.2",
|
|
2639
|
-
"jsdom": "
|
|
2640
|
-
"typescript": "~
|
|
2641
|
-
"vite": "
|
|
2642
|
-
"vitest": "
|
|
2984
|
+
"jsdom": "^27.1.0",
|
|
2985
|
+
"typescript": "~6.0.3",
|
|
2986
|
+
"vite": "catalog:",
|
|
2987
|
+
"vitest": "catalog:"
|
|
2643
2988
|
},
|
|
2644
2989
|
"type": "module",
|
|
2645
|
-
"
|
|
2646
|
-
"
|
|
2647
|
-
|
|
2990
|
+
"workspaces": [
|
|
2991
|
+
"packages/*",
|
|
2992
|
+
"test-app",
|
|
2993
|
+
"packages/common/constructs"
|
|
2994
|
+
]
|
|
2648
2995
|
}
|
|
2649
2996
|
"
|
|
2650
2997
|
`;
|
|
@@ -2686,6 +3033,24 @@ You can also automatiaclly fix some lint errors by running the following command
|
|
|
2686
3033
|
"
|
|
2687
3034
|
`;
|
|
2688
3035
|
|
|
3036
|
+
exports[`react-website generator > Tanstack router integration > should generate website with router correctly > packages/common/constructs/package.json 1`] = `
|
|
3037
|
+
"{
|
|
3038
|
+
"name": "@proj/common-constructs",
|
|
3039
|
+
"version": "0.0.1",
|
|
3040
|
+
"private": true,
|
|
3041
|
+
"type": "module",
|
|
3042
|
+
"dependencies": {
|
|
3043
|
+
"aws-cdk-lib": "catalog:",
|
|
3044
|
+
"constructs": "catalog:",
|
|
3045
|
+
"tslib": "^2.3.0"
|
|
3046
|
+
},
|
|
3047
|
+
"devDependencies": {
|
|
3048
|
+
"@types/node": "catalog:"
|
|
3049
|
+
}
|
|
3050
|
+
}
|
|
3051
|
+
"
|
|
3052
|
+
`;
|
|
3053
|
+
|
|
2689
3054
|
exports[`react-website generator > Tanstack router integration > should generate website with router correctly > packages/common/constructs/project.json 1`] = `
|
|
2690
3055
|
"{
|
|
2691
3056
|
"name": "@proj/common-constructs",
|
|
@@ -2693,6 +3058,9 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
2693
3058
|
"sourceRoot": "packages/common/constructs/src",
|
|
2694
3059
|
"projectType": "library",
|
|
2695
3060
|
"tags": [],
|
|
3061
|
+
"metadata": {
|
|
3062
|
+
"generator": "ts#project"
|
|
3063
|
+
},
|
|
2696
3064
|
"targets": {
|
|
2697
3065
|
"build": {
|
|
2698
3066
|
"dependsOn": ["lint", "compile", "test", "@proj/test-app:build"]
|
|
@@ -2705,32 +3073,39 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
2705
3073
|
"cwd": "{projectRoot}"
|
|
2706
3074
|
}
|
|
2707
3075
|
},
|
|
2708
|
-
"
|
|
3076
|
+
"format": {
|
|
2709
3077
|
"executor": "nx:run-commands",
|
|
2710
3078
|
"cache": true,
|
|
2711
3079
|
"inputs": ["biome"],
|
|
2712
3080
|
"options": {
|
|
2713
|
-
"command": "biome
|
|
3081
|
+
"command": "biome format {projectRoot}"
|
|
2714
3082
|
},
|
|
2715
3083
|
"configurations": {
|
|
2716
3084
|
"fix": {
|
|
2717
|
-
"command": "biome
|
|
3085
|
+
"command": "biome format --write {projectRoot}"
|
|
2718
3086
|
},
|
|
2719
3087
|
"skip-lint": {
|
|
2720
3088
|
"command": "node -e \\"\\""
|
|
2721
3089
|
}
|
|
2722
3090
|
}
|
|
2723
3091
|
},
|
|
2724
|
-
"
|
|
2725
|
-
"executor": "
|
|
2726
|
-
"
|
|
3092
|
+
"lint": {
|
|
3093
|
+
"executor": "nx:run-commands",
|
|
3094
|
+
"cache": true,
|
|
3095
|
+
"inputs": ["biome"],
|
|
3096
|
+
"dependsOn": ["format"],
|
|
2727
3097
|
"options": {
|
|
2728
|
-
"
|
|
3098
|
+
"command": "biome lint {projectRoot}"
|
|
3099
|
+
},
|
|
3100
|
+
"configurations": {
|
|
3101
|
+
"fix": {
|
|
3102
|
+
"command": "biome check --write {projectRoot}"
|
|
3103
|
+
},
|
|
3104
|
+
"skip-lint": {
|
|
3105
|
+
"command": "node -e \\"\\""
|
|
3106
|
+
}
|
|
2729
3107
|
}
|
|
2730
3108
|
}
|
|
2731
|
-
},
|
|
2732
|
-
"metadata": {
|
|
2733
|
-
"generator": "ts#project"
|
|
2734
3109
|
}
|
|
2735
3110
|
}
|
|
2736
3111
|
"
|
|
@@ -2841,10 +3216,31 @@ export const suppressRules = (
|
|
|
2841
3216
|
"
|
|
2842
3217
|
`;
|
|
2843
3218
|
|
|
3219
|
+
exports[`react-website generator > Tanstack router integration > should generate website with router correctly > packages/common/constructs/src/core/cloudfront.ts 1`] = `
|
|
3220
|
+
"import { CfnDistribution, Distribution } from 'aws-cdk-lib/aws-cloudfront';
|
|
3221
|
+
|
|
3222
|
+
/**
|
|
3223
|
+
* Finds the domain names associated with a CloudFront distribution.
|
|
3224
|
+
*
|
|
3225
|
+
* Includes the distribution's default \`*.cloudfront.net\` domain name plus any custom
|
|
3226
|
+
* domain names (aliases) configured on it.
|
|
3227
|
+
*/
|
|
3228
|
+
export const findCloudFrontDomainNames = (
|
|
3229
|
+
distribution: Distribution,
|
|
3230
|
+
): string[] => {
|
|
3231
|
+
const cfnDistribution = distribution.node.defaultChild as CfnDistribution;
|
|
3232
|
+
const distributionConfig =
|
|
3233
|
+
cfnDistribution.distributionConfig as CfnDistribution.DistributionConfigProperty;
|
|
3234
|
+
return [distribution.domainName, ...(distributionConfig.aliases ?? [])];
|
|
3235
|
+
};
|
|
3236
|
+
"
|
|
3237
|
+
`;
|
|
3238
|
+
|
|
2844
3239
|
exports[`react-website generator > Tanstack router integration > should generate website with router correctly > packages/common/constructs/src/core/index.ts 1`] = `
|
|
2845
3240
|
"export * from './static-website.js';
|
|
2846
3241
|
export * from './app.js';
|
|
2847
3242
|
export * from './checkov.js';
|
|
3243
|
+
export * from './cloudfront.js';
|
|
2848
3244
|
export * from './runtime-config.js';
|
|
2849
3245
|
export * from './workspace.js';
|
|
2850
3246
|
"
|
|
@@ -3040,11 +3436,21 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
3040
3436
|
"import {
|
|
3041
3437
|
CfnOutput,
|
|
3042
3438
|
CfnResource,
|
|
3439
|
+
Duration,
|
|
3043
3440
|
Lazy,
|
|
3441
|
+
Names,
|
|
3044
3442
|
RemovalPolicy,
|
|
3045
3443
|
Stack,
|
|
3046
3444
|
} from 'aws-cdk-lib';
|
|
3047
|
-
import {
|
|
3445
|
+
import {
|
|
3446
|
+
Distribution,
|
|
3447
|
+
HeadersFrameOption,
|
|
3448
|
+
HeadersReferrerPolicy,
|
|
3449
|
+
ResponseHeadersPolicy,
|
|
3450
|
+
SecurityPolicyProtocol,
|
|
3451
|
+
ViewerProtocolPolicy,
|
|
3452
|
+
} from 'aws-cdk-lib/aws-cloudfront';
|
|
3453
|
+
import { ICertificate } from 'aws-cdk-lib/aws-certificatemanager';
|
|
3048
3454
|
import { S3BucketOrigin } from 'aws-cdk-lib/aws-cloudfront-origins';
|
|
3049
3455
|
import {
|
|
3050
3456
|
BlockPublicAccess,
|
|
@@ -3053,18 +3459,56 @@ import {
|
|
|
3053
3459
|
IBucket,
|
|
3054
3460
|
ObjectOwnership,
|
|
3055
3461
|
} from 'aws-cdk-lib/aws-s3';
|
|
3056
|
-
import {
|
|
3462
|
+
import {
|
|
3463
|
+
BucketDeployment,
|
|
3464
|
+
CacheControl,
|
|
3465
|
+
Source,
|
|
3466
|
+
} from 'aws-cdk-lib/aws-s3-deployment';
|
|
3057
3467
|
import { Construct } from 'constructs';
|
|
3058
3468
|
import { RuntimeConfig } from './runtime-config.js';
|
|
3059
3469
|
import { Key } from 'aws-cdk-lib/aws-kms';
|
|
3470
|
+
import {
|
|
3471
|
+
CfnDelivery,
|
|
3472
|
+
CfnDeliveryDestination,
|
|
3473
|
+
CfnDeliverySource,
|
|
3474
|
+
LogGroup,
|
|
3475
|
+
RetentionDays,
|
|
3476
|
+
} from 'aws-cdk-lib/aws-logs';
|
|
3477
|
+
import { Effect, PolicyStatement, ServicePrincipal } from 'aws-cdk-lib/aws-iam';
|
|
3060
3478
|
import { CfnWebACL } from 'aws-cdk-lib/aws-wafv2';
|
|
3061
3479
|
import { suppressRules } from './checkov.js';
|
|
3062
3480
|
|
|
3063
3481
|
const DEFAULT_RUNTIME_CONFIG_FILENAME = 'runtime-config.json';
|
|
3064
3482
|
|
|
3483
|
+
// Content-Security-Policy enforced on all responses. Restricts scripts and
|
|
3484
|
+
// framing to mitigate XSS and clickjacking, while permitting HTTPS/WSS calls
|
|
3485
|
+
// (connect-src) to AWS service endpoints such as API Gateway, Cognito and
|
|
3486
|
+
// Bedrock AgentCore which are only known at deploy time. Edit this to tighten
|
|
3487
|
+
// connect-src to your specific origins once they are known.
|
|
3488
|
+
const CONTENT_SECURITY_POLICY = [
|
|
3489
|
+
"default-src 'self'",
|
|
3490
|
+
"script-src 'self'",
|
|
3491
|
+
"style-src 'self' 'unsafe-inline'",
|
|
3492
|
+
"img-src 'self' data:",
|
|
3493
|
+
"font-src 'self' data:",
|
|
3494
|
+
"connect-src 'self' https: wss:",
|
|
3495
|
+
"object-src 'none'",
|
|
3496
|
+
"base-uri 'self'",
|
|
3497
|
+
"frame-ancestors 'none'",
|
|
3498
|
+
].join('; ');
|
|
3499
|
+
|
|
3065
3500
|
export interface StaticWebsiteProps {
|
|
3066
3501
|
readonly websiteName: string;
|
|
3067
3502
|
readonly websiteFilePath: string;
|
|
3503
|
+
/**
|
|
3504
|
+
* Custom domain names for the CloudFront distribution. Requires \`certificate\`.
|
|
3505
|
+
*/
|
|
3506
|
+
readonly domainNames?: string[];
|
|
3507
|
+
/**
|
|
3508
|
+
* ACM certificate for the custom domain names. Must be in us-east-1.
|
|
3509
|
+
* When provided, viewers are required to use TLS 1.2 or later.
|
|
3510
|
+
*/
|
|
3511
|
+
readonly certificate?: ICertificate;
|
|
3068
3512
|
}
|
|
3069
3513
|
|
|
3070
3514
|
/**
|
|
@@ -3083,39 +3527,48 @@ export class StaticWebsite extends Construct {
|
|
|
3083
3527
|
constructor(
|
|
3084
3528
|
scope: Construct,
|
|
3085
3529
|
id: string,
|
|
3086
|
-
{
|
|
3530
|
+
{
|
|
3531
|
+
websiteFilePath,
|
|
3532
|
+
websiteName,
|
|
3533
|
+
domainNames,
|
|
3534
|
+
certificate,
|
|
3535
|
+
}: StaticWebsiteProps,
|
|
3087
3536
|
) {
|
|
3088
3537
|
super(scope, id);
|
|
3089
|
-
this.node.setContext(
|
|
3090
|
-
'@aws-cdk/aws-s3:serverAccessLogsUseBucketPolicy',
|
|
3091
|
-
true,
|
|
3092
|
-
);
|
|
3093
3538
|
|
|
3094
3539
|
const websiteKey = new Key(this, 'WebsiteKey', {
|
|
3095
3540
|
enableKeyRotation: true,
|
|
3096
3541
|
});
|
|
3097
3542
|
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
|
|
3543
|
+
// Allow CloudWatch Logs to use the website key for server access log delivery.
|
|
3544
|
+
const stack = Stack.of(this);
|
|
3545
|
+
websiteKey.addToResourcePolicy(
|
|
3546
|
+
new PolicyStatement({
|
|
3547
|
+
effect: Effect.ALLOW,
|
|
3548
|
+
principals: [
|
|
3549
|
+
new ServicePrincipal(\`logs.\${stack.region}.amazonaws.com\`),
|
|
3550
|
+
],
|
|
3551
|
+
actions: [
|
|
3552
|
+
'kms:Encrypt',
|
|
3553
|
+
'kms:Decrypt',
|
|
3554
|
+
'kms:ReEncrypt*',
|
|
3555
|
+
'kms:GenerateDataKey*',
|
|
3556
|
+
'kms:DescribeKey',
|
|
3557
|
+
],
|
|
3558
|
+
resources: ['*'],
|
|
3559
|
+
conditions: {
|
|
3560
|
+
ArnLike: {
|
|
3561
|
+
'kms:EncryptionContext:aws:logs:arn': \`arn:aws:logs:\${stack.region}:\${stack.account}:log-group:*\`,
|
|
3562
|
+
},
|
|
3563
|
+
},
|
|
3564
|
+
}),
|
|
3565
|
+
);
|
|
3566
|
+
|
|
3567
|
+
const accessLogs = new LogGroup(this, 'AccessLogs', {
|
|
3568
|
+
retention: RetentionDays.ONE_YEAR,
|
|
3104
3569
|
encryptionKey: websiteKey,
|
|
3105
|
-
|
|
3106
|
-
publicReadAccess: false,
|
|
3107
|
-
blockPublicAccess: BlockPublicAccess.BLOCK_ALL,
|
|
3570
|
+
removalPolicy: RemovalPolicy.DESTROY,
|
|
3108
3571
|
});
|
|
3109
|
-
suppressRules(
|
|
3110
|
-
accessLogsBucket,
|
|
3111
|
-
['CKV_AWS_21'],
|
|
3112
|
-
'Access log bucket does not need versioning enabled',
|
|
3113
|
-
);
|
|
3114
|
-
suppressRules(
|
|
3115
|
-
accessLogsBucket,
|
|
3116
|
-
['CKV_AWS_18'],
|
|
3117
|
-
'Access log bucket does not need an access log bucket',
|
|
3118
|
-
);
|
|
3119
3572
|
|
|
3120
3573
|
// S3 Bucket to hold website files
|
|
3121
3574
|
this.websiteBucket = new Bucket(this, 'WebsiteBucket', {
|
|
@@ -3128,13 +3581,23 @@ export class StaticWebsite extends Construct {
|
|
|
3128
3581
|
objectOwnership: ObjectOwnership.BUCKET_OWNER_ENFORCED,
|
|
3129
3582
|
publicReadAccess: false,
|
|
3130
3583
|
blockPublicAccess: BlockPublicAccess.BLOCK_ALL,
|
|
3131
|
-
serverAccessLogsPrefix: 'website-access-logs',
|
|
3132
|
-
serverAccessLogsBucket: accessLogsBucket,
|
|
3133
3584
|
});
|
|
3585
|
+
suppressRules(
|
|
3586
|
+
this.websiteBucket,
|
|
3587
|
+
['CKV_AWS_18'],
|
|
3588
|
+
'Server access logs are delivered to CloudWatch Logs',
|
|
3589
|
+
);
|
|
3590
|
+
this.deliverAccessLogsToCloudWatch(
|
|
3591
|
+
'Website',
|
|
3592
|
+
this.websiteBucket,
|
|
3593
|
+
accessLogs,
|
|
3594
|
+
);
|
|
3134
3595
|
// Web ACL
|
|
3135
3596
|
const wafStack = new CloudfrontWebAcl(this, 'waf');
|
|
3136
3597
|
|
|
3137
|
-
//
|
|
3598
|
+
// Bucket holding CloudFront standard access logs. CloudFront delivers its
|
|
3599
|
+
// own logs to S3 only, so this bucket is retained; its S3 server access
|
|
3600
|
+
// logs are delivered to CloudWatch Logs.
|
|
3138
3601
|
const logBucket = new Bucket(this, 'DistributionLogBucket', {
|
|
3139
3602
|
enforceSSL: true,
|
|
3140
3603
|
autoDeleteObjects: true,
|
|
@@ -3144,14 +3607,48 @@ export class StaticWebsite extends Construct {
|
|
|
3144
3607
|
objectOwnership: ObjectOwnership.BUCKET_OWNER_PREFERRED,
|
|
3145
3608
|
publicReadAccess: false,
|
|
3146
3609
|
blockPublicAccess: BlockPublicAccess.BLOCK_ALL,
|
|
3147
|
-
serverAccessLogsPrefix: 'distribution-access-logs',
|
|
3148
|
-
serverAccessLogsBucket: accessLogsBucket,
|
|
3149
3610
|
});
|
|
3150
3611
|
suppressRules(
|
|
3151
3612
|
logBucket,
|
|
3152
3613
|
['CKV_AWS_21'],
|
|
3153
3614
|
'Distribution log bucket does not need versioning enabled',
|
|
3154
3615
|
);
|
|
3616
|
+
suppressRules(
|
|
3617
|
+
logBucket,
|
|
3618
|
+
['CKV_AWS_18'],
|
|
3619
|
+
'Server access logs are delivered to CloudWatch Logs',
|
|
3620
|
+
);
|
|
3621
|
+
this.deliverAccessLogsToCloudWatch('Distribution', logBucket, accessLogs);
|
|
3622
|
+
|
|
3623
|
+
// Security headers applied to all responses.
|
|
3624
|
+
const responseHeadersPolicy = new ResponseHeadersPolicy(
|
|
3625
|
+
this,
|
|
3626
|
+
'ResponseHeadersPolicy',
|
|
3627
|
+
{
|
|
3628
|
+
securityHeadersBehavior: {
|
|
3629
|
+
strictTransportSecurity: {
|
|
3630
|
+
accessControlMaxAge: Duration.days(730),
|
|
3631
|
+
includeSubdomains: true,
|
|
3632
|
+
preload: true,
|
|
3633
|
+
override: true,
|
|
3634
|
+
},
|
|
3635
|
+
contentTypeOptions: { override: true },
|
|
3636
|
+
frameOptions: {
|
|
3637
|
+
frameOption: HeadersFrameOption.DENY,
|
|
3638
|
+
override: true,
|
|
3639
|
+
},
|
|
3640
|
+
referrerPolicy: {
|
|
3641
|
+
referrerPolicy:
|
|
3642
|
+
HeadersReferrerPolicy.STRICT_ORIGIN_WHEN_CROSS_ORIGIN,
|
|
3643
|
+
override: true,
|
|
3644
|
+
},
|
|
3645
|
+
contentSecurityPolicy: {
|
|
3646
|
+
contentSecurityPolicy: CONTENT_SECURITY_POLICY,
|
|
3647
|
+
override: true,
|
|
3648
|
+
},
|
|
3649
|
+
},
|
|
3650
|
+
},
|
|
3651
|
+
);
|
|
3155
3652
|
|
|
3156
3653
|
const defaultRootObject = 'index.html';
|
|
3157
3654
|
this.cloudFrontDistribution = new Distribution(
|
|
@@ -3161,9 +3658,17 @@ export class StaticWebsite extends Construct {
|
|
|
3161
3658
|
webAclId: wafStack.wafArn,
|
|
3162
3659
|
enableLogging: true,
|
|
3163
3660
|
logBucket: logBucket,
|
|
3661
|
+
...(certificate
|
|
3662
|
+
? {
|
|
3663
|
+
certificate,
|
|
3664
|
+
domainNames,
|
|
3665
|
+
minimumProtocolVersion: SecurityPolicyProtocol.TLS_V1_2_2021,
|
|
3666
|
+
}
|
|
3667
|
+
: {}),
|
|
3164
3668
|
defaultBehavior: {
|
|
3165
3669
|
origin: S3BucketOrigin.withOriginAccessControl(this.websiteBucket),
|
|
3166
3670
|
viewerProtocolPolicy: ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
|
|
3671
|
+
responseHeadersPolicy,
|
|
3167
3672
|
},
|
|
3168
3673
|
defaultRootObject,
|
|
3169
3674
|
errorResponses: [
|
|
@@ -3180,16 +3685,31 @@ export class StaticWebsite extends Construct {
|
|
|
3180
3685
|
],
|
|
3181
3686
|
},
|
|
3182
3687
|
);
|
|
3183
|
-
|
|
3184
|
-
|
|
3185
|
-
|
|
3186
|
-
|
|
3187
|
-
|
|
3688
|
+
if (!certificate) {
|
|
3689
|
+
// See https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DownloadDistValuesGeneral.html
|
|
3690
|
+
suppressRules(
|
|
3691
|
+
this.cloudFrontDistribution,
|
|
3692
|
+
['CKV_AWS_174'],
|
|
3693
|
+
'Cloudfront default certificate does not use TLS 1.2',
|
|
3694
|
+
);
|
|
3695
|
+
}
|
|
3188
3696
|
|
|
3189
3697
|
// Deploy Website
|
|
3190
3698
|
this.bucketDeployment = new BucketDeployment(this, 'WebsiteDeployment', {
|
|
3699
|
+
sources: [Source.asset(websiteFilePath)],
|
|
3700
|
+
destinationBucket: this.websiteBucket,
|
|
3701
|
+
// Files in the distribution's edge caches will be invalidated after files are uploaded to the destination bucket.
|
|
3702
|
+
distribution: this.cloudFrontDistribution,
|
|
3703
|
+
// Exclude the runtime config from this deployment's sync so its default pruning
|
|
3704
|
+
// never deletes the file managed separately by RuntimeConfigDeployment below.
|
|
3705
|
+
exclude: [DEFAULT_RUNTIME_CONFIG_FILENAME],
|
|
3706
|
+
memoryLimit: 1024,
|
|
3707
|
+
});
|
|
3708
|
+
|
|
3709
|
+
// Deploy runtime-config.json separately so it is never cached - clients
|
|
3710
|
+
// must always fetch the latest configuration.
|
|
3711
|
+
new BucketDeployment(this, 'RuntimeConfigDeployment', {
|
|
3191
3712
|
sources: [
|
|
3192
|
-
Source.asset(websiteFilePath),
|
|
3193
3713
|
Source.data(
|
|
3194
3714
|
DEFAULT_RUNTIME_CONFIG_FILENAME,
|
|
3195
3715
|
Lazy.string({
|
|
@@ -3201,8 +3721,9 @@ export class StaticWebsite extends Construct {
|
|
|
3201
3721
|
),
|
|
3202
3722
|
],
|
|
3203
3723
|
destinationBucket: this.websiteBucket,
|
|
3204
|
-
// Files in the distribution's edge caches will be invalidated after files are uploaded to the destination bucket.
|
|
3205
3724
|
distribution: this.cloudFrontDistribution,
|
|
3725
|
+
cacheControl: [CacheControl.noCache()],
|
|
3726
|
+
prune: false,
|
|
3206
3727
|
memoryLimit: 1024,
|
|
3207
3728
|
});
|
|
3208
3729
|
|
|
@@ -3223,6 +3744,48 @@ export class StaticWebsite extends Construct {
|
|
|
3223
3744
|
value: this.websiteBucket.bucketName,
|
|
3224
3745
|
});
|
|
3225
3746
|
}
|
|
3747
|
+
|
|
3748
|
+
/**
|
|
3749
|
+
* Delivers a bucket's S3 server access logs to a CloudWatch log group using
|
|
3750
|
+
* CloudWatch Logs vended log delivery.
|
|
3751
|
+
*/
|
|
3752
|
+
private deliverAccessLogsToCloudWatch(
|
|
3753
|
+
id: string,
|
|
3754
|
+
bucket: IBucket,
|
|
3755
|
+
logGroup: LogGroup,
|
|
3756
|
+
) {
|
|
3757
|
+
const source: CfnDeliverySource = new CfnDeliverySource(
|
|
3758
|
+
this,
|
|
3759
|
+
\`\${id}AccessLogsSource\`,
|
|
3760
|
+
{
|
|
3761
|
+
name: Lazy.string({
|
|
3762
|
+
produce: () => Names.uniqueResourceName(source, { maxLength: 60 }),
|
|
3763
|
+
}),
|
|
3764
|
+
logType: 'S3_SERVER_ACCESS_LOGS',
|
|
3765
|
+
resourceArn: bucket.bucketArn,
|
|
3766
|
+
},
|
|
3767
|
+
);
|
|
3768
|
+
const bucketPolicy = (bucket as Bucket).policy;
|
|
3769
|
+
if (bucketPolicy) {
|
|
3770
|
+
source.node.addDependency(bucketPolicy);
|
|
3771
|
+
}
|
|
3772
|
+
const destination: CfnDeliveryDestination = new CfnDeliveryDestination(
|
|
3773
|
+
this,
|
|
3774
|
+
\`\${id}AccessLogsDestination\`,
|
|
3775
|
+
{
|
|
3776
|
+
name: Lazy.string({
|
|
3777
|
+
produce: () =>
|
|
3778
|
+
Names.uniqueResourceName(destination, { maxLength: 60 }),
|
|
3779
|
+
}),
|
|
3780
|
+
destinationResourceArn: logGroup.logGroupArn,
|
|
3781
|
+
},
|
|
3782
|
+
);
|
|
3783
|
+
const delivery = new CfnDelivery(this, \`\${id}AccessLogsDelivery\`, {
|
|
3784
|
+
deliverySourceName: source.name,
|
|
3785
|
+
deliveryDestinationArn: destination.attrArn,
|
|
3786
|
+
});
|
|
3787
|
+
delivery.addDependency(source);
|
|
3788
|
+
}
|
|
3226
3789
|
}
|
|
3227
3790
|
|
|
3228
3791
|
export class CloudfrontWebAcl extends Stack {
|
|
@@ -3345,9 +3908,13 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
3345
3908
|
"emitDeclarationOnly": false,
|
|
3346
3909
|
"module": "nodenext",
|
|
3347
3910
|
"moduleResolution": "nodenext",
|
|
3348
|
-
"types": [
|
|
3911
|
+
"types": [
|
|
3912
|
+
"node"
|
|
3913
|
+
]
|
|
3349
3914
|
},
|
|
3350
|
-
"include": [
|
|
3915
|
+
"include": [
|
|
3916
|
+
"src/**/*.ts"
|
|
3917
|
+
],
|
|
3351
3918
|
"references": [],
|
|
3352
3919
|
"exclude": [
|
|
3353
3920
|
"vite.config.ts",
|
|
@@ -3410,7 +3977,7 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
3410
3977
|
"import { defineConfig } from 'vitest/config';
|
|
3411
3978
|
|
|
3412
3979
|
export default defineConfig(() => ({
|
|
3413
|
-
root:
|
|
3980
|
+
root: import.meta.dirname,
|
|
3414
3981
|
cacheDir: '../../../node_modules/.vite/packages/common/constructs',
|
|
3415
3982
|
test: {
|
|
3416
3983
|
passWithNoTests: true,
|
|
@@ -3431,9 +3998,30 @@ export default defineConfig(() => ({
|
|
|
3431
3998
|
|
|
3432
3999
|
exports[`react-website generator > Tanstack router integration > should generate website with router correctly > pnpm-workspace.yaml 1`] = `
|
|
3433
4000
|
"packages:
|
|
3434
|
-
-
|
|
3435
|
-
-
|
|
3436
|
-
-
|
|
4001
|
+
- packages/*
|
|
4002
|
+
- test-app
|
|
4003
|
+
- packages/common/*
|
|
4004
|
+
catalog:
|
|
4005
|
+
vite: 8.2.1
|
|
4006
|
+
vitest: 4.1.10
|
|
4007
|
+
'@vitest/coverage-v8': 4.1.10
|
|
4008
|
+
constructs: 10.8.1
|
|
4009
|
+
aws-cdk-lib: 2.263.0
|
|
4010
|
+
'@types/node': 26.2.0
|
|
4011
|
+
react: 19.2.8
|
|
4012
|
+
react-dom: 19.2.8
|
|
4013
|
+
'@cloudscape-design/components': 3.0.1342
|
|
4014
|
+
'@cloudscape-design/board-components': 3.0.213
|
|
4015
|
+
'@cloudscape-design/global-styles': 1.0.65
|
|
4016
|
+
tailwindcss: 4.3.3
|
|
4017
|
+
'@tanstack/react-router': 1.170.23
|
|
4018
|
+
'@nx/react': 23.1.1
|
|
4019
|
+
'@vitest/ui': 4.1.10
|
|
4020
|
+
'@tailwindcss/vite': 4.3.3
|
|
4021
|
+
'@tanstack/router-plugin': 1.168.27
|
|
4022
|
+
'@tanstack/router-generator': 1.167.25
|
|
4023
|
+
'@tanstack/virtual-file-routes': 1.162.0
|
|
4024
|
+
'@tanstack/router-utils': 1.162.2
|
|
3437
4025
|
"
|
|
3438
4026
|
`;
|
|
3439
4027
|
|
|
@@ -3473,7 +4061,7 @@ You can also automatically fix some lint errors by running the following command
|
|
|
3473
4061
|
|
|
3474
4062
|
In order to integrate with cognito or trpc backends, you need to have a \`runtime-config.json\` file in your \`/public\` website directory. You can fetch this is follows:
|
|
3475
4063
|
|
|
3476
|
-
\`pnpm nx
|
|
4064
|
+
\`pnpm nx load-runtime-config @proj/test-app\`
|
|
3477
4065
|
|
|
3478
4066
|
> [!IMPORTANT]
|
|
3479
4067
|
> Ensure you have AWS CLI and curl installed
|
|
@@ -3507,6 +4095,26 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
3507
4095
|
"
|
|
3508
4096
|
`;
|
|
3509
4097
|
|
|
4098
|
+
exports[`react-website generator > Tanstack router integration > should generate website with router correctly > test-app/package.json 1`] = `
|
|
4099
|
+
"{
|
|
4100
|
+
"name": "@proj/test-app",
|
|
4101
|
+
"version": "0.0.1",
|
|
4102
|
+
"private": true,
|
|
4103
|
+
"type": "module",
|
|
4104
|
+
"dependencies": {
|
|
4105
|
+
"@cloudscape-design/board-components": "catalog:",
|
|
4106
|
+
"@cloudscape-design/components": "catalog:",
|
|
4107
|
+
"@cloudscape-design/global-styles": "catalog:",
|
|
4108
|
+
"@tanstack/react-router": "catalog:",
|
|
4109
|
+
"react": "catalog:",
|
|
4110
|
+
"react-dom": "catalog:",
|
|
4111
|
+
"tailwindcss": "catalog:"
|
|
4112
|
+
},
|
|
4113
|
+
"devDependencies": {}
|
|
4114
|
+
}
|
|
4115
|
+
"
|
|
4116
|
+
`;
|
|
4117
|
+
|
|
3510
4118
|
exports[`react-website generator > Tanstack router integration > should generate website with router correctly > test-app/project.json 1`] = `
|
|
3511
4119
|
"{
|
|
3512
4120
|
"name": "@proj/test-app",
|
|
@@ -3518,33 +4126,17 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
3518
4126
|
"generator": "ts#react-website",
|
|
3519
4127
|
"ux": "cloudscape",
|
|
3520
4128
|
"framework": "react",
|
|
3521
|
-
"infra": "cloudfront-s3"
|
|
4129
|
+
"infra": "cloudfront-s3",
|
|
4130
|
+
"tailwind": true,
|
|
4131
|
+
"tanstackRouter": true,
|
|
4132
|
+
"iac": "cdk"
|
|
3522
4133
|
},
|
|
3523
4134
|
"targets": {
|
|
3524
4135
|
"build": {
|
|
3525
|
-
"dependsOn": ["lint", "compile", "
|
|
3526
|
-
"options": {
|
|
3527
|
-
"outputPath": "dist/{projectRoot}/bundle"
|
|
3528
|
-
}
|
|
3529
|
-
},
|
|
3530
|
-
"bundle": {
|
|
3531
|
-
"executor": "@nx/vite:build",
|
|
3532
|
-
"outputs": ["{options.outputPath}"],
|
|
3533
|
-
"defaultConfiguration": "production",
|
|
3534
|
-
"options": {
|
|
3535
|
-
"outputPath": "dist/{projectRoot}/bundle"
|
|
3536
|
-
},
|
|
3537
|
-
"configurations": {
|
|
3538
|
-
"development": {
|
|
3539
|
-
"mode": "development"
|
|
3540
|
-
},
|
|
3541
|
-
"production": {
|
|
3542
|
-
"mode": "production"
|
|
3543
|
-
}
|
|
3544
|
-
}
|
|
4136
|
+
"dependsOn": ["lint", "compile", "test", "bundle"]
|
|
3545
4137
|
},
|
|
3546
4138
|
"compile": {
|
|
3547
|
-
"dependsOn": ["
|
|
4139
|
+
"dependsOn": ["^build"],
|
|
3548
4140
|
"executor": "nx:run-commands",
|
|
3549
4141
|
"outputs": ["{workspaceRoot}/dist/{projectRoot}/tsc"],
|
|
3550
4142
|
"options": {
|
|
@@ -3552,72 +4144,30 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
3552
4144
|
"cwd": "{projectRoot}"
|
|
3553
4145
|
}
|
|
3554
4146
|
},
|
|
3555
|
-
"
|
|
4147
|
+
"dev": {
|
|
3556
4148
|
"executor": "nx:run-commands",
|
|
3557
|
-
"
|
|
3558
|
-
"description": "Load runtime config from your deployed stack for dev purposes. You must set your AWS CLI credentials whilst calling 'pnpm nx run @proj/test-app:load:runtime-config'"
|
|
3559
|
-
},
|
|
3560
|
-
"options": {
|
|
3561
|
-
"command": "aws s3 cp s3://\`aws cloudformation describe-stacks --query \\"Stacks[?starts_with(StackName, 'proj-')][].Outputs[] | [?contains(OutputKey, 'TestAppWebsiteBucketName')].OutputValue\\" --output text\`/runtime-config.json \\"{projectRoot}/public/runtime-config.json\\""
|
|
3562
|
-
}
|
|
3563
|
-
},
|
|
3564
|
-
"preview": {
|
|
3565
|
-
"dependsOn": ["build"],
|
|
3566
|
-
"executor": "@nx/vite:preview-server",
|
|
3567
|
-
"defaultConfiguration": "development",
|
|
4149
|
+
"continuous": true,
|
|
3568
4150
|
"options": {
|
|
3569
|
-
"
|
|
3570
|
-
|
|
3571
|
-
"configurations": {
|
|
3572
|
-
"development": {
|
|
3573
|
-
"buildTarget": "@proj/test-app:build:development"
|
|
3574
|
-
},
|
|
3575
|
-
"production": {
|
|
3576
|
-
"buildTarget": "@proj/test-app:build:production"
|
|
3577
|
-
}
|
|
4151
|
+
"command": "vite --mode local-dev",
|
|
4152
|
+
"cwd": "{projectRoot}"
|
|
3578
4153
|
}
|
|
3579
4154
|
},
|
|
3580
|
-
"
|
|
3581
|
-
"executor": "
|
|
3582
|
-
"
|
|
4155
|
+
"format": {
|
|
4156
|
+
"executor": "nx:run-commands",
|
|
4157
|
+
"cache": true,
|
|
4158
|
+
"inputs": ["biome"],
|
|
3583
4159
|
"options": {
|
|
3584
|
-
"
|
|
4160
|
+
"command": "biome format {projectRoot}"
|
|
3585
4161
|
},
|
|
3586
4162
|
"configurations": {
|
|
3587
|
-
"
|
|
3588
|
-
"
|
|
3589
|
-
"hmr": true
|
|
4163
|
+
"fix": {
|
|
4164
|
+
"command": "biome format --write {projectRoot}"
|
|
3590
4165
|
},
|
|
3591
|
-
"
|
|
3592
|
-
"
|
|
3593
|
-
"hmr": false
|
|
4166
|
+
"skip-lint": {
|
|
4167
|
+
"command": "node -e \\"\\""
|
|
3594
4168
|
}
|
|
3595
4169
|
}
|
|
3596
4170
|
},
|
|
3597
|
-
"serve-local": {
|
|
3598
|
-
"executor": "@nx/vite:dev-server",
|
|
3599
|
-
"options": {
|
|
3600
|
-
"buildTarget": "@proj/test-app:build:development",
|
|
3601
|
-
"hmr": true,
|
|
3602
|
-
"mode": "serve-local"
|
|
3603
|
-
},
|
|
3604
|
-
"continuous": true
|
|
3605
|
-
},
|
|
3606
|
-
"serve-static": {
|
|
3607
|
-
"executor": "@nx/web:file-server",
|
|
3608
|
-
"dependsOn": ["build"],
|
|
3609
|
-
"options": {
|
|
3610
|
-
"buildTarget": "@proj/test-app:build",
|
|
3611
|
-
"spa": true
|
|
3612
|
-
}
|
|
3613
|
-
},
|
|
3614
|
-
"test": {
|
|
3615
|
-
"executor": "@nx/vitest:test",
|
|
3616
|
-
"outputs": ["{options.reportsDirectory}"],
|
|
3617
|
-
"options": {
|
|
3618
|
-
"reportsDirectory": "{workspaceRoot}/coverage/{projectRoot}"
|
|
3619
|
-
}
|
|
3620
|
-
},
|
|
3621
4171
|
"lint": {
|
|
3622
4172
|
"executor": "nx:run-commands",
|
|
3623
4173
|
"cache": true,
|
|
@@ -3632,6 +4182,16 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
3632
4182
|
"skip-lint": {
|
|
3633
4183
|
"command": "node -e \\"\\""
|
|
3634
4184
|
}
|
|
4185
|
+
},
|
|
4186
|
+
"dependsOn": ["format"]
|
|
4187
|
+
},
|
|
4188
|
+
"load-runtime-config": {
|
|
4189
|
+
"executor": "nx:run-commands",
|
|
4190
|
+
"metadata": {
|
|
4191
|
+
"description": "Load runtime config from your deployed stack for dev purposes. You must set your AWS CLI credentials whilst calling 'pnpm nx load-runtime-config @proj/test-app'"
|
|
4192
|
+
},
|
|
4193
|
+
"options": {
|
|
4194
|
+
"command": "aws s3 cp s3://\`aws cloudformation describe-stacks --query \\"Stacks[?starts_with(StackName, 'proj-')][].Outputs[] | [?contains(OutputKey, 'TestAppWebsiteBucketName')].OutputValue\\" --output text\`/runtime-config.json \\"{projectRoot}/public/runtime-config.json\\""
|
|
3635
4195
|
}
|
|
3636
4196
|
}
|
|
3637
4197
|
}
|
|
@@ -3917,55 +4477,55 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
3917
4477
|
// You should NOT make any changes in this file as it will be overwritten.
|
|
3918
4478
|
// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.
|
|
3919
4479
|
|
|
3920
|
-
import { Route as rootRouteImport } from './routes/__root'
|
|
3921
|
-
import { Route as IndexRouteImport } from './routes/index'
|
|
4480
|
+
import { Route as rootRouteImport } from './routes/__root'
|
|
4481
|
+
import { Route as IndexRouteImport } from './routes/index'
|
|
3922
4482
|
|
|
3923
4483
|
const IndexRoute = IndexRouteImport.update({
|
|
3924
4484
|
id: '/',
|
|
3925
4485
|
path: '/',
|
|
3926
4486
|
getParentRoute: () => rootRouteImport,
|
|
3927
|
-
} as any)
|
|
4487
|
+
} as any)
|
|
3928
4488
|
|
|
3929
4489
|
export interface FileRoutesByFullPath {
|
|
3930
|
-
'/': typeof IndexRoute
|
|
4490
|
+
'/': typeof IndexRoute
|
|
3931
4491
|
}
|
|
3932
4492
|
export interface FileRoutesByTo {
|
|
3933
|
-
'/': typeof IndexRoute
|
|
4493
|
+
'/': typeof IndexRoute
|
|
3934
4494
|
}
|
|
3935
4495
|
export interface FileRoutesById {
|
|
3936
|
-
__root__: typeof rootRouteImport
|
|
3937
|
-
'/': typeof IndexRoute
|
|
4496
|
+
__root__: typeof rootRouteImport
|
|
4497
|
+
'/': typeof IndexRoute
|
|
3938
4498
|
}
|
|
3939
4499
|
export interface FileRouteTypes {
|
|
3940
|
-
fileRoutesByFullPath: FileRoutesByFullPath
|
|
3941
|
-
fullPaths: '/'
|
|
3942
|
-
fileRoutesByTo: FileRoutesByTo
|
|
3943
|
-
to: '/'
|
|
3944
|
-
id: '__root__' | '/'
|
|
3945
|
-
fileRoutesById: FileRoutesById
|
|
4500
|
+
fileRoutesByFullPath: FileRoutesByFullPath
|
|
4501
|
+
fullPaths: '/'
|
|
4502
|
+
fileRoutesByTo: FileRoutesByTo
|
|
4503
|
+
to: '/'
|
|
4504
|
+
id: '__root__' | '/'
|
|
4505
|
+
fileRoutesById: FileRoutesById
|
|
3946
4506
|
}
|
|
3947
4507
|
export interface RootRouteChildren {
|
|
3948
|
-
IndexRoute: typeof IndexRoute
|
|
4508
|
+
IndexRoute: typeof IndexRoute
|
|
3949
4509
|
}
|
|
3950
4510
|
|
|
3951
4511
|
declare module '@tanstack/react-router' {
|
|
3952
4512
|
interface FileRoutesByPath {
|
|
3953
4513
|
'/': {
|
|
3954
|
-
id: '/'
|
|
3955
|
-
path: '/'
|
|
3956
|
-
fullPath: '/'
|
|
3957
|
-
preLoaderRoute: typeof IndexRouteImport
|
|
3958
|
-
parentRoute: typeof rootRouteImport
|
|
3959
|
-
}
|
|
4514
|
+
id: '/'
|
|
4515
|
+
path: '/'
|
|
4516
|
+
fullPath: '/'
|
|
4517
|
+
preLoaderRoute: typeof IndexRouteImport
|
|
4518
|
+
parentRoute: typeof rootRouteImport
|
|
4519
|
+
}
|
|
3960
4520
|
}
|
|
3961
4521
|
}
|
|
3962
4522
|
|
|
3963
4523
|
const rootRouteChildren: RootRouteChildren = {
|
|
3964
4524
|
IndexRoute: IndexRoute,
|
|
3965
|
-
}
|
|
4525
|
+
}
|
|
3966
4526
|
export const routeTree = rootRouteImport
|
|
3967
4527
|
._addFileChildren(rootRouteChildren)
|
|
3968
|
-
._addFileTypes<FileRouteTypes>()
|
|
4528
|
+
._addFileTypes<FileRouteTypes>()
|
|
3969
4529
|
"
|
|
3970
4530
|
`;
|
|
3971
4531
|
|
|
@@ -4023,15 +4583,22 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
4023
4583
|
"outDir": "../dist/test-app/tsc",
|
|
4024
4584
|
"tsBuildInfoFile": "../dist/test-app/tsc/tsconfig.lib.tsbuildinfo",
|
|
4025
4585
|
"jsx": "react-jsx",
|
|
4026
|
-
"lib": [
|
|
4586
|
+
"lib": [
|
|
4587
|
+
"DOM"
|
|
4588
|
+
],
|
|
4027
4589
|
"types": [
|
|
4028
4590
|
"node",
|
|
4029
4591
|
"@nx/react/typings/cssmodule.d.ts",
|
|
4030
4592
|
"@nx/react/typings/image.d.ts",
|
|
4031
4593
|
"vite/client"
|
|
4032
|
-
]
|
|
4594
|
+
],
|
|
4595
|
+
"rootDir": "src",
|
|
4596
|
+
"module": "esnext",
|
|
4597
|
+
"moduleResolution": "bundler"
|
|
4033
4598
|
},
|
|
4034
4599
|
"exclude": [
|
|
4600
|
+
"out-tsc",
|
|
4601
|
+
"dist",
|
|
4035
4602
|
"src/**/*.spec.ts",
|
|
4036
4603
|
"src/**/*.test.ts",
|
|
4037
4604
|
"src/**/*.spec.tsx",
|
|
@@ -4045,7 +4612,12 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
4045
4612
|
"vitest.config.ts",
|
|
4046
4613
|
"vitest.config.mts"
|
|
4047
4614
|
],
|
|
4048
|
-
"include": [
|
|
4615
|
+
"include": [
|
|
4616
|
+
"src/**/*.js",
|
|
4617
|
+
"src/**/*.jsx",
|
|
4618
|
+
"src/**/*.ts",
|
|
4619
|
+
"src/**/*.tsx"
|
|
4620
|
+
]
|
|
4049
4621
|
}
|
|
4050
4622
|
"
|
|
4051
4623
|
`;
|
|
@@ -4084,7 +4656,10 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
4084
4656
|
"vitest",
|
|
4085
4657
|
"@nx/react/typings/cssmodule.d.ts",
|
|
4086
4658
|
"@nx/react/typings/image.d.ts"
|
|
4087
|
-
]
|
|
4659
|
+
],
|
|
4660
|
+
"jsx": "react-jsx",
|
|
4661
|
+
"module": "esnext",
|
|
4662
|
+
"moduleResolution": "bundler"
|
|
4088
4663
|
},
|
|
4089
4664
|
"include": [
|
|
4090
4665
|
"vite.config.ts",
|
|
@@ -4131,8 +4706,8 @@ export default defineConfig(() => ({
|
|
|
4131
4706
|
},
|
|
4132
4707
|
plugins: [
|
|
4133
4708
|
tanstackRouter({
|
|
4134
|
-
routesDirectory: resolve(
|
|
4135
|
-
generatedRouteTree: resolve(
|
|
4709
|
+
routesDirectory: resolve(import.meta.dirname, 'src/routes'),
|
|
4710
|
+
generatedRouteTree: resolve(import.meta.dirname, 'src/routeTree.gen.ts'),
|
|
4136
4711
|
}),
|
|
4137
4712
|
react(),
|
|
4138
4713
|
tailwindcss(),
|
|
@@ -4142,7 +4717,7 @@ export default defineConfig(() => ({
|
|
|
4142
4717
|
// plugins: [],
|
|
4143
4718
|
// },
|
|
4144
4719
|
build: {
|
|
4145
|
-
outDir: '../dist/test-app',
|
|
4720
|
+
outDir: '../dist/test-app/bundle',
|
|
4146
4721
|
emptyOutDir: true,
|
|
4147
4722
|
reportCompressedSize: true,
|
|
4148
4723
|
commonjsOptions: {
|
|
@@ -4162,7 +4737,7 @@ export default defineConfig(() => ({
|
|
|
4162
4737
|
provider: 'v8' as const,
|
|
4163
4738
|
},
|
|
4164
4739
|
},
|
|
4165
|
-
resolve: { tsconfigPaths: true },
|
|
4740
|
+
resolve: { tsconfigPaths: true, dedupe: ['react', 'react-dom'] },
|
|
4166
4741
|
define: { global: {} },
|
|
4167
4742
|
}));
|
|
4168
4743
|
"
|
|
@@ -4172,9 +4747,14 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
4172
4747
|
"{
|
|
4173
4748
|
"compilerOptions": {
|
|
4174
4749
|
"paths": {
|
|
4175
|
-
"
|
|
4176
|
-
|
|
4750
|
+
"@proj/test-app": [
|
|
4751
|
+
"./test-app/src/index.ts"
|
|
4752
|
+
],
|
|
4753
|
+
"@proj/common-constructs": [
|
|
4754
|
+
"./packages/common/constructs/src/index.ts"
|
|
4755
|
+
]
|
|
4177
4756
|
},
|
|
4757
|
+
"composite": true,
|
|
4178
4758
|
"rootDir": "."
|
|
4179
4759
|
}
|
|
4180
4760
|
}
|
|
@@ -4183,6 +4763,9 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
4183
4763
|
|
|
4184
4764
|
exports[`react-website generator > Tanstack router integration > should generate website with router correctly > tsconfig.json 1`] = `
|
|
4185
4765
|
"{
|
|
4766
|
+
"extends": "./tsconfig.base.json",
|
|
4767
|
+
"files": [],
|
|
4768
|
+
"include": [],
|
|
4186
4769
|
"references": [
|
|
4187
4770
|
{
|
|
4188
4771
|
"path": "./test-app"
|
|
@@ -4195,11 +4778,19 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
4195
4778
|
"
|
|
4196
4779
|
`;
|
|
4197
4780
|
|
|
4198
|
-
exports[`react-website generator > Tanstack router integration > should generate website with router correctly > vitest.
|
|
4199
|
-
"
|
|
4200
|
-
|
|
4201
|
-
|
|
4202
|
-
|
|
4781
|
+
exports[`react-website generator > Tanstack router integration > should generate website with router correctly > vitest.config.ts 1`] = `
|
|
4782
|
+
"import { defineConfig } from 'vitest/config';
|
|
4783
|
+
|
|
4784
|
+
export default defineConfig({
|
|
4785
|
+
test: {
|
|
4786
|
+
projects: [
|
|
4787
|
+
'**/vite.config.{mjs,js,ts,mts}',
|
|
4788
|
+
'**/vitest.config.{mjs,js,ts,mts}',
|
|
4789
|
+
'!vitest.config.{mjs,js,ts,mts}',
|
|
4790
|
+
'!vite.config.{mjs,js,ts,mts}',
|
|
4791
|
+
],
|
|
4792
|
+
},
|
|
4793
|
+
});
|
|
4203
4794
|
"
|
|
4204
4795
|
`;
|
|
4205
4796
|
|
|
@@ -4244,8 +4835,8 @@ export default defineConfig(() => ({
|
|
|
4244
4835
|
},
|
|
4245
4836
|
plugins: [
|
|
4246
4837
|
tanstackRouter({
|
|
4247
|
-
routesDirectory: resolve(
|
|
4248
|
-
generatedRouteTree: resolve(
|
|
4838
|
+
routesDirectory: resolve(import.meta.dirname, 'src/routes'),
|
|
4839
|
+
generatedRouteTree: resolve(import.meta.dirname, 'src/routeTree.gen.ts'),
|
|
4249
4840
|
}),
|
|
4250
4841
|
react(),
|
|
4251
4842
|
tailwindcss(),
|
|
@@ -4255,7 +4846,7 @@ export default defineConfig(() => ({
|
|
|
4255
4846
|
// plugins: [],
|
|
4256
4847
|
// },
|
|
4257
4848
|
build: {
|
|
4258
|
-
outDir: '../dist/test-app',
|
|
4849
|
+
outDir: '../dist/test-app/bundle',
|
|
4259
4850
|
emptyOutDir: true,
|
|
4260
4851
|
reportCompressedSize: true,
|
|
4261
4852
|
commonjsOptions: {
|
|
@@ -4275,7 +4866,7 @@ export default defineConfig(() => ({
|
|
|
4275
4866
|
provider: 'v8' as const,
|
|
4276
4867
|
},
|
|
4277
4868
|
},
|
|
4278
|
-
resolve: { tsconfigPaths: true },
|
|
4869
|
+
resolve: { tsconfigPaths: true, dedupe: ['react', 'react-dom'] },
|
|
4279
4870
|
define: { global: {} },
|
|
4280
4871
|
}));
|
|
4281
4872
|
"
|
|
@@ -4520,6 +5111,7 @@ exports[`react-website generator > should generate shared constructs > common/co
|
|
|
4520
5111
|
"export * from './static-website.js';
|
|
4521
5112
|
export * from './app.js';
|
|
4522
5113
|
export * from './checkov.js';
|
|
5114
|
+
export * from './cloudfront.js';
|
|
4523
5115
|
export * from './runtime-config.js';
|
|
4524
5116
|
export * from './workspace.js';
|
|
4525
5117
|
"
|
|
@@ -4529,11 +5121,21 @@ exports[`react-website generator > should generate shared constructs > common/co
|
|
|
4529
5121
|
"import {
|
|
4530
5122
|
CfnOutput,
|
|
4531
5123
|
CfnResource,
|
|
5124
|
+
Duration,
|
|
4532
5125
|
Lazy,
|
|
5126
|
+
Names,
|
|
4533
5127
|
RemovalPolicy,
|
|
4534
5128
|
Stack,
|
|
4535
5129
|
} from 'aws-cdk-lib';
|
|
4536
|
-
import {
|
|
5130
|
+
import {
|
|
5131
|
+
Distribution,
|
|
5132
|
+
HeadersFrameOption,
|
|
5133
|
+
HeadersReferrerPolicy,
|
|
5134
|
+
ResponseHeadersPolicy,
|
|
5135
|
+
SecurityPolicyProtocol,
|
|
5136
|
+
ViewerProtocolPolicy,
|
|
5137
|
+
} from 'aws-cdk-lib/aws-cloudfront';
|
|
5138
|
+
import { ICertificate } from 'aws-cdk-lib/aws-certificatemanager';
|
|
4537
5139
|
import { S3BucketOrigin } from 'aws-cdk-lib/aws-cloudfront-origins';
|
|
4538
5140
|
import {
|
|
4539
5141
|
BlockPublicAccess,
|
|
@@ -4542,18 +5144,56 @@ import {
|
|
|
4542
5144
|
IBucket,
|
|
4543
5145
|
ObjectOwnership,
|
|
4544
5146
|
} from 'aws-cdk-lib/aws-s3';
|
|
4545
|
-
import {
|
|
5147
|
+
import {
|
|
5148
|
+
BucketDeployment,
|
|
5149
|
+
CacheControl,
|
|
5150
|
+
Source,
|
|
5151
|
+
} from 'aws-cdk-lib/aws-s3-deployment';
|
|
4546
5152
|
import { Construct } from 'constructs';
|
|
4547
5153
|
import { RuntimeConfig } from './runtime-config.js';
|
|
4548
5154
|
import { Key } from 'aws-cdk-lib/aws-kms';
|
|
5155
|
+
import {
|
|
5156
|
+
CfnDelivery,
|
|
5157
|
+
CfnDeliveryDestination,
|
|
5158
|
+
CfnDeliverySource,
|
|
5159
|
+
LogGroup,
|
|
5160
|
+
RetentionDays,
|
|
5161
|
+
} from 'aws-cdk-lib/aws-logs';
|
|
5162
|
+
import { Effect, PolicyStatement, ServicePrincipal } from 'aws-cdk-lib/aws-iam';
|
|
4549
5163
|
import { CfnWebACL } from 'aws-cdk-lib/aws-wafv2';
|
|
4550
5164
|
import { suppressRules } from './checkov.js';
|
|
4551
5165
|
|
|
4552
5166
|
const DEFAULT_RUNTIME_CONFIG_FILENAME = 'runtime-config.json';
|
|
4553
5167
|
|
|
5168
|
+
// Content-Security-Policy enforced on all responses. Restricts scripts and
|
|
5169
|
+
// framing to mitigate XSS and clickjacking, while permitting HTTPS/WSS calls
|
|
5170
|
+
// (connect-src) to AWS service endpoints such as API Gateway, Cognito and
|
|
5171
|
+
// Bedrock AgentCore which are only known at deploy time. Edit this to tighten
|
|
5172
|
+
// connect-src to your specific origins once they are known.
|
|
5173
|
+
const CONTENT_SECURITY_POLICY = [
|
|
5174
|
+
"default-src 'self'",
|
|
5175
|
+
"script-src 'self'",
|
|
5176
|
+
"style-src 'self' 'unsafe-inline'",
|
|
5177
|
+
"img-src 'self' data:",
|
|
5178
|
+
"font-src 'self' data:",
|
|
5179
|
+
"connect-src 'self' https: wss:",
|
|
5180
|
+
"object-src 'none'",
|
|
5181
|
+
"base-uri 'self'",
|
|
5182
|
+
"frame-ancestors 'none'",
|
|
5183
|
+
].join('; ');
|
|
5184
|
+
|
|
4554
5185
|
export interface StaticWebsiteProps {
|
|
4555
5186
|
readonly websiteName: string;
|
|
4556
5187
|
readonly websiteFilePath: string;
|
|
5188
|
+
/**
|
|
5189
|
+
* Custom domain names for the CloudFront distribution. Requires \`certificate\`.
|
|
5190
|
+
*/
|
|
5191
|
+
readonly domainNames?: string[];
|
|
5192
|
+
/**
|
|
5193
|
+
* ACM certificate for the custom domain names. Must be in us-east-1.
|
|
5194
|
+
* When provided, viewers are required to use TLS 1.2 or later.
|
|
5195
|
+
*/
|
|
5196
|
+
readonly certificate?: ICertificate;
|
|
4557
5197
|
}
|
|
4558
5198
|
|
|
4559
5199
|
/**
|
|
@@ -4572,39 +5212,48 @@ export class StaticWebsite extends Construct {
|
|
|
4572
5212
|
constructor(
|
|
4573
5213
|
scope: Construct,
|
|
4574
5214
|
id: string,
|
|
4575
|
-
{
|
|
5215
|
+
{
|
|
5216
|
+
websiteFilePath,
|
|
5217
|
+
websiteName,
|
|
5218
|
+
domainNames,
|
|
5219
|
+
certificate,
|
|
5220
|
+
}: StaticWebsiteProps,
|
|
4576
5221
|
) {
|
|
4577
5222
|
super(scope, id);
|
|
4578
|
-
this.node.setContext(
|
|
4579
|
-
'@aws-cdk/aws-s3:serverAccessLogsUseBucketPolicy',
|
|
4580
|
-
true,
|
|
4581
|
-
);
|
|
4582
5223
|
|
|
4583
5224
|
const websiteKey = new Key(this, 'WebsiteKey', {
|
|
4584
5225
|
enableKeyRotation: true,
|
|
4585
5226
|
});
|
|
4586
5227
|
|
|
4587
|
-
|
|
4588
|
-
|
|
4589
|
-
|
|
4590
|
-
|
|
4591
|
-
|
|
4592
|
-
|
|
5228
|
+
// Allow CloudWatch Logs to use the website key for server access log delivery.
|
|
5229
|
+
const stack = Stack.of(this);
|
|
5230
|
+
websiteKey.addToResourcePolicy(
|
|
5231
|
+
new PolicyStatement({
|
|
5232
|
+
effect: Effect.ALLOW,
|
|
5233
|
+
principals: [
|
|
5234
|
+
new ServicePrincipal(\`logs.\${stack.region}.amazonaws.com\`),
|
|
5235
|
+
],
|
|
5236
|
+
actions: [
|
|
5237
|
+
'kms:Encrypt',
|
|
5238
|
+
'kms:Decrypt',
|
|
5239
|
+
'kms:ReEncrypt*',
|
|
5240
|
+
'kms:GenerateDataKey*',
|
|
5241
|
+
'kms:DescribeKey',
|
|
5242
|
+
],
|
|
5243
|
+
resources: ['*'],
|
|
5244
|
+
conditions: {
|
|
5245
|
+
ArnLike: {
|
|
5246
|
+
'kms:EncryptionContext:aws:logs:arn': \`arn:aws:logs:\${stack.region}:\${stack.account}:log-group:*\`,
|
|
5247
|
+
},
|
|
5248
|
+
},
|
|
5249
|
+
}),
|
|
5250
|
+
);
|
|
5251
|
+
|
|
5252
|
+
const accessLogs = new LogGroup(this, 'AccessLogs', {
|
|
5253
|
+
retention: RetentionDays.ONE_YEAR,
|
|
4593
5254
|
encryptionKey: websiteKey,
|
|
4594
|
-
|
|
4595
|
-
publicReadAccess: false,
|
|
4596
|
-
blockPublicAccess: BlockPublicAccess.BLOCK_ALL,
|
|
5255
|
+
removalPolicy: RemovalPolicy.DESTROY,
|
|
4597
5256
|
});
|
|
4598
|
-
suppressRules(
|
|
4599
|
-
accessLogsBucket,
|
|
4600
|
-
['CKV_AWS_21'],
|
|
4601
|
-
'Access log bucket does not need versioning enabled',
|
|
4602
|
-
);
|
|
4603
|
-
suppressRules(
|
|
4604
|
-
accessLogsBucket,
|
|
4605
|
-
['CKV_AWS_18'],
|
|
4606
|
-
'Access log bucket does not need an access log bucket',
|
|
4607
|
-
);
|
|
4608
5257
|
|
|
4609
5258
|
// S3 Bucket to hold website files
|
|
4610
5259
|
this.websiteBucket = new Bucket(this, 'WebsiteBucket', {
|
|
@@ -4617,13 +5266,23 @@ export class StaticWebsite extends Construct {
|
|
|
4617
5266
|
objectOwnership: ObjectOwnership.BUCKET_OWNER_ENFORCED,
|
|
4618
5267
|
publicReadAccess: false,
|
|
4619
5268
|
blockPublicAccess: BlockPublicAccess.BLOCK_ALL,
|
|
4620
|
-
serverAccessLogsPrefix: 'website-access-logs',
|
|
4621
|
-
serverAccessLogsBucket: accessLogsBucket,
|
|
4622
5269
|
});
|
|
5270
|
+
suppressRules(
|
|
5271
|
+
this.websiteBucket,
|
|
5272
|
+
['CKV_AWS_18'],
|
|
5273
|
+
'Server access logs are delivered to CloudWatch Logs',
|
|
5274
|
+
);
|
|
5275
|
+
this.deliverAccessLogsToCloudWatch(
|
|
5276
|
+
'Website',
|
|
5277
|
+
this.websiteBucket,
|
|
5278
|
+
accessLogs,
|
|
5279
|
+
);
|
|
4623
5280
|
// Web ACL
|
|
4624
5281
|
const wafStack = new CloudfrontWebAcl(this, 'waf');
|
|
4625
5282
|
|
|
4626
|
-
//
|
|
5283
|
+
// Bucket holding CloudFront standard access logs. CloudFront delivers its
|
|
5284
|
+
// own logs to S3 only, so this bucket is retained; its S3 server access
|
|
5285
|
+
// logs are delivered to CloudWatch Logs.
|
|
4627
5286
|
const logBucket = new Bucket(this, 'DistributionLogBucket', {
|
|
4628
5287
|
enforceSSL: true,
|
|
4629
5288
|
autoDeleteObjects: true,
|
|
@@ -4633,14 +5292,48 @@ export class StaticWebsite extends Construct {
|
|
|
4633
5292
|
objectOwnership: ObjectOwnership.BUCKET_OWNER_PREFERRED,
|
|
4634
5293
|
publicReadAccess: false,
|
|
4635
5294
|
blockPublicAccess: BlockPublicAccess.BLOCK_ALL,
|
|
4636
|
-
serverAccessLogsPrefix: 'distribution-access-logs',
|
|
4637
|
-
serverAccessLogsBucket: accessLogsBucket,
|
|
4638
5295
|
});
|
|
4639
5296
|
suppressRules(
|
|
4640
5297
|
logBucket,
|
|
4641
5298
|
['CKV_AWS_21'],
|
|
4642
5299
|
'Distribution log bucket does not need versioning enabled',
|
|
4643
5300
|
);
|
|
5301
|
+
suppressRules(
|
|
5302
|
+
logBucket,
|
|
5303
|
+
['CKV_AWS_18'],
|
|
5304
|
+
'Server access logs are delivered to CloudWatch Logs',
|
|
5305
|
+
);
|
|
5306
|
+
this.deliverAccessLogsToCloudWatch('Distribution', logBucket, accessLogs);
|
|
5307
|
+
|
|
5308
|
+
// Security headers applied to all responses.
|
|
5309
|
+
const responseHeadersPolicy = new ResponseHeadersPolicy(
|
|
5310
|
+
this,
|
|
5311
|
+
'ResponseHeadersPolicy',
|
|
5312
|
+
{
|
|
5313
|
+
securityHeadersBehavior: {
|
|
5314
|
+
strictTransportSecurity: {
|
|
5315
|
+
accessControlMaxAge: Duration.days(730),
|
|
5316
|
+
includeSubdomains: true,
|
|
5317
|
+
preload: true,
|
|
5318
|
+
override: true,
|
|
5319
|
+
},
|
|
5320
|
+
contentTypeOptions: { override: true },
|
|
5321
|
+
frameOptions: {
|
|
5322
|
+
frameOption: HeadersFrameOption.DENY,
|
|
5323
|
+
override: true,
|
|
5324
|
+
},
|
|
5325
|
+
referrerPolicy: {
|
|
5326
|
+
referrerPolicy:
|
|
5327
|
+
HeadersReferrerPolicy.STRICT_ORIGIN_WHEN_CROSS_ORIGIN,
|
|
5328
|
+
override: true,
|
|
5329
|
+
},
|
|
5330
|
+
contentSecurityPolicy: {
|
|
5331
|
+
contentSecurityPolicy: CONTENT_SECURITY_POLICY,
|
|
5332
|
+
override: true,
|
|
5333
|
+
},
|
|
5334
|
+
},
|
|
5335
|
+
},
|
|
5336
|
+
);
|
|
4644
5337
|
|
|
4645
5338
|
const defaultRootObject = 'index.html';
|
|
4646
5339
|
this.cloudFrontDistribution = new Distribution(
|
|
@@ -4650,9 +5343,17 @@ export class StaticWebsite extends Construct {
|
|
|
4650
5343
|
webAclId: wafStack.wafArn,
|
|
4651
5344
|
enableLogging: true,
|
|
4652
5345
|
logBucket: logBucket,
|
|
5346
|
+
...(certificate
|
|
5347
|
+
? {
|
|
5348
|
+
certificate,
|
|
5349
|
+
domainNames,
|
|
5350
|
+
minimumProtocolVersion: SecurityPolicyProtocol.TLS_V1_2_2021,
|
|
5351
|
+
}
|
|
5352
|
+
: {}),
|
|
4653
5353
|
defaultBehavior: {
|
|
4654
5354
|
origin: S3BucketOrigin.withOriginAccessControl(this.websiteBucket),
|
|
4655
5355
|
viewerProtocolPolicy: ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
|
|
5356
|
+
responseHeadersPolicy,
|
|
4656
5357
|
},
|
|
4657
5358
|
defaultRootObject,
|
|
4658
5359
|
errorResponses: [
|
|
@@ -4669,16 +5370,31 @@ export class StaticWebsite extends Construct {
|
|
|
4669
5370
|
],
|
|
4670
5371
|
},
|
|
4671
5372
|
);
|
|
4672
|
-
|
|
4673
|
-
|
|
4674
|
-
|
|
4675
|
-
|
|
4676
|
-
|
|
5373
|
+
if (!certificate) {
|
|
5374
|
+
// See https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DownloadDistValuesGeneral.html
|
|
5375
|
+
suppressRules(
|
|
5376
|
+
this.cloudFrontDistribution,
|
|
5377
|
+
['CKV_AWS_174'],
|
|
5378
|
+
'Cloudfront default certificate does not use TLS 1.2',
|
|
5379
|
+
);
|
|
5380
|
+
}
|
|
4677
5381
|
|
|
4678
5382
|
// Deploy Website
|
|
4679
5383
|
this.bucketDeployment = new BucketDeployment(this, 'WebsiteDeployment', {
|
|
5384
|
+
sources: [Source.asset(websiteFilePath)],
|
|
5385
|
+
destinationBucket: this.websiteBucket,
|
|
5386
|
+
// Files in the distribution's edge caches will be invalidated after files are uploaded to the destination bucket.
|
|
5387
|
+
distribution: this.cloudFrontDistribution,
|
|
5388
|
+
// Exclude the runtime config from this deployment's sync so its default pruning
|
|
5389
|
+
// never deletes the file managed separately by RuntimeConfigDeployment below.
|
|
5390
|
+
exclude: [DEFAULT_RUNTIME_CONFIG_FILENAME],
|
|
5391
|
+
memoryLimit: 1024,
|
|
5392
|
+
});
|
|
5393
|
+
|
|
5394
|
+
// Deploy runtime-config.json separately so it is never cached - clients
|
|
5395
|
+
// must always fetch the latest configuration.
|
|
5396
|
+
new BucketDeployment(this, 'RuntimeConfigDeployment', {
|
|
4680
5397
|
sources: [
|
|
4681
|
-
Source.asset(websiteFilePath),
|
|
4682
5398
|
Source.data(
|
|
4683
5399
|
DEFAULT_RUNTIME_CONFIG_FILENAME,
|
|
4684
5400
|
Lazy.string({
|
|
@@ -4690,8 +5406,9 @@ export class StaticWebsite extends Construct {
|
|
|
4690
5406
|
),
|
|
4691
5407
|
],
|
|
4692
5408
|
destinationBucket: this.websiteBucket,
|
|
4693
|
-
// Files in the distribution's edge caches will be invalidated after files are uploaded to the destination bucket.
|
|
4694
5409
|
distribution: this.cloudFrontDistribution,
|
|
5410
|
+
cacheControl: [CacheControl.noCache()],
|
|
5411
|
+
prune: false,
|
|
4695
5412
|
memoryLimit: 1024,
|
|
4696
5413
|
});
|
|
4697
5414
|
|
|
@@ -4712,6 +5429,48 @@ export class StaticWebsite extends Construct {
|
|
|
4712
5429
|
value: this.websiteBucket.bucketName,
|
|
4713
5430
|
});
|
|
4714
5431
|
}
|
|
5432
|
+
|
|
5433
|
+
/**
|
|
5434
|
+
* Delivers a bucket's S3 server access logs to a CloudWatch log group using
|
|
5435
|
+
* CloudWatch Logs vended log delivery.
|
|
5436
|
+
*/
|
|
5437
|
+
private deliverAccessLogsToCloudWatch(
|
|
5438
|
+
id: string,
|
|
5439
|
+
bucket: IBucket,
|
|
5440
|
+
logGroup: LogGroup,
|
|
5441
|
+
) {
|
|
5442
|
+
const source: CfnDeliverySource = new CfnDeliverySource(
|
|
5443
|
+
this,
|
|
5444
|
+
\`\${id}AccessLogsSource\`,
|
|
5445
|
+
{
|
|
5446
|
+
name: Lazy.string({
|
|
5447
|
+
produce: () => Names.uniqueResourceName(source, { maxLength: 60 }),
|
|
5448
|
+
}),
|
|
5449
|
+
logType: 'S3_SERVER_ACCESS_LOGS',
|
|
5450
|
+
resourceArn: bucket.bucketArn,
|
|
5451
|
+
},
|
|
5452
|
+
);
|
|
5453
|
+
const bucketPolicy = (bucket as Bucket).policy;
|
|
5454
|
+
if (bucketPolicy) {
|
|
5455
|
+
source.node.addDependency(bucketPolicy);
|
|
5456
|
+
}
|
|
5457
|
+
const destination: CfnDeliveryDestination = new CfnDeliveryDestination(
|
|
5458
|
+
this,
|
|
5459
|
+
\`\${id}AccessLogsDestination\`,
|
|
5460
|
+
{
|
|
5461
|
+
name: Lazy.string({
|
|
5462
|
+
produce: () =>
|
|
5463
|
+
Names.uniqueResourceName(destination, { maxLength: 60 }),
|
|
5464
|
+
}),
|
|
5465
|
+
destinationResourceArn: logGroup.logGroupArn,
|
|
5466
|
+
},
|
|
5467
|
+
);
|
|
5468
|
+
const delivery = new CfnDelivery(this, \`\${id}AccessLogsDelivery\`, {
|
|
5469
|
+
deliverySourceName: source.name,
|
|
5470
|
+
deliveryDestinationArn: destination.attrArn,
|
|
5471
|
+
});
|
|
5472
|
+
delivery.addDependency(source);
|
|
5473
|
+
}
|
|
4715
5474
|
}
|
|
4716
5475
|
|
|
4717
5476
|
export class CloudfrontWebAcl extends Stack {
|
|
@@ -4835,19 +5594,7 @@ root &&
|
|
|
4835
5594
|
"
|
|
4836
5595
|
`;
|
|
4837
5596
|
|
|
4838
|
-
exports[`react-website generator > should handle npm scope prefix correctly > scoped-dependencies 1`] = `
|
|
4839
|
-
{
|
|
4840
|
-
"@cloudscape-design/board-components": "3.0.187",
|
|
4841
|
-
"@cloudscape-design/components": "3.0.1304",
|
|
4842
|
-
"@cloudscape-design/global-styles": "1.0.59",
|
|
4843
|
-
"@tanstack/react-router": "1.170.10",
|
|
4844
|
-
"aws-cdk-lib": "2.257.0",
|
|
4845
|
-
"constructs": "10.6.0",
|
|
4846
|
-
"react": "19.2.7",
|
|
4847
|
-
"react-dom": "19.2.7",
|
|
4848
|
-
"tailwindcss": "4.3.0",
|
|
4849
|
-
}
|
|
4850
|
-
`;
|
|
5597
|
+
exports[`react-website generator > should handle npm scope prefix correctly > scoped-dependencies 1`] = `{}`;
|
|
4851
5598
|
|
|
4852
5599
|
exports[`react-website generator ux tests > Cloudscape > should update package.json with required dependencies > test-app/src/components/AppLayout/index.tsx 1`] = `
|
|
4853
5600
|
"import * as React from 'react';
|
|
@@ -5088,55 +5835,55 @@ exports[`react-website generator ux tests > Cloudscape > should update package.j
|
|
|
5088
5835
|
// You should NOT make any changes in this file as it will be overwritten.
|
|
5089
5836
|
// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.
|
|
5090
5837
|
|
|
5091
|
-
import { Route as rootRouteImport } from './routes/__root'
|
|
5092
|
-
import { Route as IndexRouteImport } from './routes/index'
|
|
5838
|
+
import { Route as rootRouteImport } from './routes/__root'
|
|
5839
|
+
import { Route as IndexRouteImport } from './routes/index'
|
|
5093
5840
|
|
|
5094
5841
|
const IndexRoute = IndexRouteImport.update({
|
|
5095
5842
|
id: '/',
|
|
5096
5843
|
path: '/',
|
|
5097
5844
|
getParentRoute: () => rootRouteImport,
|
|
5098
|
-
} as any)
|
|
5845
|
+
} as any)
|
|
5099
5846
|
|
|
5100
5847
|
export interface FileRoutesByFullPath {
|
|
5101
|
-
'/': typeof IndexRoute
|
|
5848
|
+
'/': typeof IndexRoute
|
|
5102
5849
|
}
|
|
5103
5850
|
export interface FileRoutesByTo {
|
|
5104
|
-
'/': typeof IndexRoute
|
|
5851
|
+
'/': typeof IndexRoute
|
|
5105
5852
|
}
|
|
5106
5853
|
export interface FileRoutesById {
|
|
5107
|
-
__root__: typeof rootRouteImport
|
|
5108
|
-
'/': typeof IndexRoute
|
|
5854
|
+
__root__: typeof rootRouteImport
|
|
5855
|
+
'/': typeof IndexRoute
|
|
5109
5856
|
}
|
|
5110
5857
|
export interface FileRouteTypes {
|
|
5111
|
-
fileRoutesByFullPath: FileRoutesByFullPath
|
|
5112
|
-
fullPaths: '/'
|
|
5113
|
-
fileRoutesByTo: FileRoutesByTo
|
|
5114
|
-
to: '/'
|
|
5115
|
-
id: '__root__' | '/'
|
|
5116
|
-
fileRoutesById: FileRoutesById
|
|
5858
|
+
fileRoutesByFullPath: FileRoutesByFullPath
|
|
5859
|
+
fullPaths: '/'
|
|
5860
|
+
fileRoutesByTo: FileRoutesByTo
|
|
5861
|
+
to: '/'
|
|
5862
|
+
id: '__root__' | '/'
|
|
5863
|
+
fileRoutesById: FileRoutesById
|
|
5117
5864
|
}
|
|
5118
5865
|
export interface RootRouteChildren {
|
|
5119
|
-
IndexRoute: typeof IndexRoute
|
|
5866
|
+
IndexRoute: typeof IndexRoute
|
|
5120
5867
|
}
|
|
5121
5868
|
|
|
5122
5869
|
declare module '@tanstack/react-router' {
|
|
5123
5870
|
interface FileRoutesByPath {
|
|
5124
5871
|
'/': {
|
|
5125
|
-
id: '/'
|
|
5126
|
-
path: '/'
|
|
5127
|
-
fullPath: '/'
|
|
5128
|
-
preLoaderRoute: typeof IndexRouteImport
|
|
5129
|
-
parentRoute: typeof rootRouteImport
|
|
5130
|
-
}
|
|
5872
|
+
id: '/'
|
|
5873
|
+
path: '/'
|
|
5874
|
+
fullPath: '/'
|
|
5875
|
+
preLoaderRoute: typeof IndexRouteImport
|
|
5876
|
+
parentRoute: typeof rootRouteImport
|
|
5877
|
+
}
|
|
5131
5878
|
}
|
|
5132
5879
|
}
|
|
5133
5880
|
|
|
5134
5881
|
const rootRouteChildren: RootRouteChildren = {
|
|
5135
5882
|
IndexRoute: IndexRoute,
|
|
5136
|
-
}
|
|
5883
|
+
}
|
|
5137
5884
|
export const routeTree = rootRouteImport
|
|
5138
5885
|
._addFileChildren(rootRouteChildren)
|
|
5139
|
-
._addFileTypes<FileRouteTypes>()
|
|
5886
|
+
._addFileTypes<FileRouteTypes>()
|
|
5140
5887
|
"
|
|
5141
5888
|
`;
|
|
5142
5889
|
|
|
@@ -5193,8 +5940,8 @@ import {
|
|
|
5193
5940
|
SidebarInset,
|
|
5194
5941
|
SidebarProvider,
|
|
5195
5942
|
SidebarTrigger,
|
|
5196
|
-
} from '
|
|
5197
|
-
import { Separator } from '
|
|
5943
|
+
} from '@proj/common-shadcn/components/ui/sidebar';
|
|
5944
|
+
import { Separator } from '@proj/common-shadcn/components/ui/separator';
|
|
5198
5945
|
import Config from '../../config';
|
|
5199
5946
|
|
|
5200
5947
|
import { Link, useLocation, useMatchRoute } from '@tanstack/react-router';
|
|
@@ -5205,7 +5952,7 @@ import {
|
|
|
5205
5952
|
BreadcrumbList,
|
|
5206
5953
|
BreadcrumbPage,
|
|
5207
5954
|
BreadcrumbSeparator,
|
|
5208
|
-
} from '
|
|
5955
|
+
} from '@proj/common-shadcn/components/ui/breadcrumb';
|
|
5209
5956
|
import { AppSidebar } from '../app-sidebar';
|
|
5210
5957
|
|
|
5211
5958
|
const getBreadcrumbs = (
|
|
@@ -5316,7 +6063,7 @@ import {
|
|
|
5316
6063
|
Alert as ShadcnAlert,
|
|
5317
6064
|
AlertDescription,
|
|
5318
6065
|
AlertTitle,
|
|
5319
|
-
} from '
|
|
6066
|
+
} from '@proj/common-shadcn/components/ui/alert';
|
|
5320
6067
|
|
|
5321
6068
|
type AlertType = 'info' | 'error';
|
|
5322
6069
|
|
|
@@ -5356,7 +6103,7 @@ import {
|
|
|
5356
6103
|
SidebarMenu,
|
|
5357
6104
|
SidebarMenuButton,
|
|
5358
6105
|
SidebarMenuItem,
|
|
5359
|
-
} from '
|
|
6106
|
+
} from '@proj/common-shadcn/components/ui/sidebar';
|
|
5360
6107
|
import { Link } from '@tanstack/react-router';
|
|
5361
6108
|
|
|
5362
6109
|
import Config from '../config';
|
|
@@ -5398,7 +6145,7 @@ export function AppSidebar() {
|
|
|
5398
6145
|
`;
|
|
5399
6146
|
|
|
5400
6147
|
exports[`react-website generator ux tests > Shadcn > should update package.json with required dependencies > test-app/src/components/spinner.tsx 1`] = `
|
|
5401
|
-
"import { Spinner as ShadcnSpinner } from '
|
|
6148
|
+
"import { Spinner as ShadcnSpinner } from '@proj/common-shadcn/components/ui/spinner';
|
|
5402
6149
|
|
|
5403
6150
|
export const Spinner = ShadcnSpinner;
|
|
5404
6151
|
"
|
|
@@ -5459,55 +6206,55 @@ exports[`react-website generator ux tests > Shadcn > should update package.json
|
|
|
5459
6206
|
// You should NOT make any changes in this file as it will be overwritten.
|
|
5460
6207
|
// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.
|
|
5461
6208
|
|
|
5462
|
-
import { Route as rootRouteImport } from './routes/__root'
|
|
5463
|
-
import { Route as IndexRouteImport } from './routes/index'
|
|
6209
|
+
import { Route as rootRouteImport } from './routes/__root'
|
|
6210
|
+
import { Route as IndexRouteImport } from './routes/index'
|
|
5464
6211
|
|
|
5465
6212
|
const IndexRoute = IndexRouteImport.update({
|
|
5466
6213
|
id: '/',
|
|
5467
6214
|
path: '/',
|
|
5468
6215
|
getParentRoute: () => rootRouteImport,
|
|
5469
|
-
} as any)
|
|
6216
|
+
} as any)
|
|
5470
6217
|
|
|
5471
6218
|
export interface FileRoutesByFullPath {
|
|
5472
|
-
'/': typeof IndexRoute
|
|
6219
|
+
'/': typeof IndexRoute
|
|
5473
6220
|
}
|
|
5474
6221
|
export interface FileRoutesByTo {
|
|
5475
|
-
'/': typeof IndexRoute
|
|
6222
|
+
'/': typeof IndexRoute
|
|
5476
6223
|
}
|
|
5477
6224
|
export interface FileRoutesById {
|
|
5478
|
-
__root__: typeof rootRouteImport
|
|
5479
|
-
'/': typeof IndexRoute
|
|
6225
|
+
__root__: typeof rootRouteImport
|
|
6226
|
+
'/': typeof IndexRoute
|
|
5480
6227
|
}
|
|
5481
6228
|
export interface FileRouteTypes {
|
|
5482
|
-
fileRoutesByFullPath: FileRoutesByFullPath
|
|
5483
|
-
fullPaths: '/'
|
|
5484
|
-
fileRoutesByTo: FileRoutesByTo
|
|
5485
|
-
to: '/'
|
|
5486
|
-
id: '__root__' | '/'
|
|
5487
|
-
fileRoutesById: FileRoutesById
|
|
6229
|
+
fileRoutesByFullPath: FileRoutesByFullPath
|
|
6230
|
+
fullPaths: '/'
|
|
6231
|
+
fileRoutesByTo: FileRoutesByTo
|
|
6232
|
+
to: '/'
|
|
6233
|
+
id: '__root__' | '/'
|
|
6234
|
+
fileRoutesById: FileRoutesById
|
|
5488
6235
|
}
|
|
5489
6236
|
export interface RootRouteChildren {
|
|
5490
|
-
IndexRoute: typeof IndexRoute
|
|
6237
|
+
IndexRoute: typeof IndexRoute
|
|
5491
6238
|
}
|
|
5492
6239
|
|
|
5493
6240
|
declare module '@tanstack/react-router' {
|
|
5494
6241
|
interface FileRoutesByPath {
|
|
5495
6242
|
'/': {
|
|
5496
|
-
id: '/'
|
|
5497
|
-
path: '/'
|
|
5498
|
-
fullPath: '/'
|
|
5499
|
-
preLoaderRoute: typeof IndexRouteImport
|
|
5500
|
-
parentRoute: typeof rootRouteImport
|
|
5501
|
-
}
|
|
6243
|
+
id: '/'
|
|
6244
|
+
path: '/'
|
|
6245
|
+
fullPath: '/'
|
|
6246
|
+
preLoaderRoute: typeof IndexRouteImport
|
|
6247
|
+
parentRoute: typeof rootRouteImport
|
|
6248
|
+
}
|
|
5502
6249
|
}
|
|
5503
6250
|
}
|
|
5504
6251
|
|
|
5505
6252
|
const rootRouteChildren: RootRouteChildren = {
|
|
5506
6253
|
IndexRoute: IndexRoute,
|
|
5507
|
-
}
|
|
6254
|
+
}
|
|
5508
6255
|
export const routeTree = rootRouteImport
|
|
5509
6256
|
._addFileChildren(rootRouteChildren)
|
|
5510
|
-
._addFileTypes<FileRouteTypes>()
|
|
6257
|
+
._addFileTypes<FileRouteTypes>()
|
|
5511
6258
|
"
|
|
5512
6259
|
`;
|
|
5513
6260
|
|