@aws/nx-plugin 1.0.0-rc.0 → 1.0.0-rc.10
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 +3399 -4104
- package/README.md +8 -8
- package/executors.json +9 -0
- package/generators.json +44 -5
- package/package.json +16 -12
- package/sdk/license.d.ts +8 -0
- package/sdk/license.js +13 -0
- package/sdk/license.js.map +1 -0
- package/src/connection/agent-runtime-config.d.ts +1 -1
- package/src/connection/agent-runtime-config.js.map +1 -1
- package/src/connection/agent-serve-local.d.ts +2 -2
- package/src/connection/agent-serve-local.js +1 -1
- package/src/connection/agent-serve-local.js.map +1 -1
- package/src/connection/generator.d.ts +5 -5
- package/src/connection/generator.js +58 -39
- package/src/connection/generator.js.map +1 -1
- package/src/connection/serve-local.d.ts +1 -1
- package/src/connection/serve-local.js +1 -1
- package/src/connection/serve-local.js.map +1 -1
- package/src/infra/app/__snapshots__/generator.spec.ts.snap +49 -60
- package/src/infra/app/files/app/src/main.ts.template +2 -2
- package/src/infra/app/generator.d.ts +3 -3
- package/src/infra/app/generator.js +25 -23
- package/src/infra/app/generator.js.map +1 -1
- package/src/infra/app/schema.d.ts +1 -1
- package/src/infra/app/schema.json +1 -1
- package/src/license/__snapshots__/config.spec.ts.snap +23 -0
- package/src/license/config-types.d.ts +18 -1
- package/src/license/config-types.js +4 -0
- package/src/license/config-types.js.map +1 -1
- package/src/license/config.d.ts +65 -7
- package/src/license/config.js +315 -7
- package/src/license/config.js.map +1 -1
- package/src/license/dependency-check/check.d.ts +16 -0
- package/src/license/dependency-check/check.js +111 -0
- package/src/license/dependency-check/check.js.map +1 -0
- package/src/license/dependency-check/collectors/collector.d.ts +21 -0
- package/src/license/dependency-check/collectors/collector.js +76 -0
- package/src/license/dependency-check/collectors/collector.js.map +1 -0
- package/src/license/dependency-check/collectors/npm-collector.d.ts +10 -0
- package/src/license/dependency-check/collectors/npm-collector.js +75 -0
- package/src/license/dependency-check/collectors/npm-collector.js.map +1 -0
- package/src/license/dependency-check/collectors/python-collector.d.ts +23 -0
- package/src/license/dependency-check/collectors/python-collector.js +121 -0
- package/src/license/dependency-check/collectors/python-collector.js.map +1 -0
- package/src/license/dependency-check/evaluator.d.ts +9 -0
- package/src/license/dependency-check/evaluator.js +122 -0
- package/src/license/dependency-check/evaluator.js.map +1 -0
- package/src/license/dependency-check/executor-schema.json +6 -0
- package/src/license/dependency-check/executor.d.ts +9 -0
- package/src/license/dependency-check/executor.js +43 -0
- package/src/license/dependency-check/executor.js.map +1 -0
- package/src/license/dependency-check/pre-approved.d.ts +6 -0
- package/src/license/dependency-check/pre-approved.js +1280 -0
- package/src/license/dependency-check/pre-approved.js.map +1 -0
- package/src/license/dependency-check/types.d.ts +45 -0
- package/src/license/dependency-check/types.js +7 -0
- package/src/license/dependency-check/types.js.map +1 -0
- package/src/license/generator.d.ts +3 -3
- package/src/license/generator.js +113 -14
- package/src/license/generator.js.map +1 -1
- package/src/license/index.d.ts +8 -0
- package/src/license/index.js +13 -0
- package/src/license/index.js.map +1 -0
- package/src/license/known-exceptions.d.ts +7 -0
- package/src/license/known-exceptions.js +33 -0
- package/src/license/known-exceptions.js.map +1 -0
- package/src/license/schema.d.ts +5 -0
- package/src/license/schema.json +6 -0
- package/src/license/sync/generator.d.ts +2 -2
- package/src/license/sync/generator.js +15 -15
- package/src/license/sync/generator.js.map +1 -1
- package/src/license/sync/project-file-sync.d.ts +3 -3
- package/src/license/sync/project-file-sync.js.map +1 -1
- package/src/mcp-server/generator-info.d.ts +5 -1
- package/src/mcp-server/generator-info.js +7 -7
- package/src/mcp-server/generator-info.js.map +1 -1
- package/src/mcp-server/guide-pipeline.d.ts +1 -1
- package/src/mcp-server/guide-pipeline.js +10 -12
- package/src/mcp-server/guide-pipeline.js.map +1 -1
- package/src/mcp-server/mdx-ast.js +4 -0
- package/src/mcp-server/mdx-ast.js.map +1 -1
- package/src/mcp-server/server.js +3 -3
- package/src/mcp-server/server.js.map +1 -1
- package/src/mcp-server/tools/create-workspace-command.d.ts +1 -1
- package/src/mcp-server/tools/create-workspace-command.js +5 -5
- package/src/mcp-server/tools/create-workspace-command.js.map +1 -1
- package/src/mcp-server/tools/general-guidance.d.ts +2 -2
- package/src/mcp-server/tools/general-guidance.js +2 -2
- package/src/mcp-server/tools/general-guidance.js.map +1 -1
- package/src/mcp-server/tools/generator-guide.d.ts +2 -2
- package/src/mcp-server/tools/generator-guide.js +2 -2
- package/src/mcp-server/tools/generator-guide.js.map +1 -1
- package/src/mcp-server/tools/list-generators.d.ts +2 -2
- package/src/mcp-server/tools/list-generators.js +1 -1
- package/src/mcp-server/tools/list-generators.js.map +1 -1
- package/src/open-api/ts-client/__snapshots__/generator.reserved-keywords.spec.ts.snap +1 -1
- package/src/open-api/ts-client/generator.d.ts +3 -3
- package/src/open-api/ts-client/generator.js +2 -2
- package/src/open-api/ts-client/generator.js.map +1 -1
- package/src/open-api/ts-hooks/generator.d.ts +3 -3
- package/src/open-api/ts-hooks/generator.js +2 -2
- package/src/open-api/ts-hooks/generator.js.map +1 -1
- package/src/open-api/ts-hooks/generator.spec.tsx +14 -14
- package/src/open-api/ts-metadata/generator.d.ts +3 -3
- package/src/open-api/ts-metadata/generator.js +1 -1
- package/src/open-api/ts-metadata/generator.js.map +1 -1
- package/src/open-api/utils/codegen-data/languages.d.ts +5 -1
- package/src/open-api/utils/codegen-data/languages.js +4 -4
- package/src/open-api/utils/codegen-data/languages.js.map +1 -1
- package/src/open-api/utils/codegen-data.d.ts +6 -2
- package/src/open-api/utils/codegen-data.js +6 -6
- package/src/open-api/utils/codegen-data.js.map +1 -1
- package/src/open-api/utils/normalise.d.ts +5 -1
- package/src/open-api/utils/normalise.js +5 -5
- package/src/open-api/utils/normalise.js.map +1 -1
- package/src/open-api/utils/parse.d.ts +2 -2
- package/src/open-api/utils/parse.js +4 -0
- package/src/open-api/utils/parse.js.map +1 -1
- package/src/open-api/utils/refs.d.ts +1 -1
- package/src/preset/__snapshots__/generator.spec.ts.snap +128 -14
- package/src/preset/generator.d.ts +4 -4
- package/src/preset/generator.js +24 -19
- package/src/preset/generator.js.map +1 -1
- package/src/preset/schema.d.ts +7 -5
- package/src/preset/schema.json +9 -4
- package/src/py/agent/__snapshots__/generator.spec.ts.snap +10 -9
- package/src/py/agent/a2a-connection/generator.d.ts +3 -3
- package/src/py/agent/a2a-connection/generator.js +8 -7
- package/src/py/agent/a2a-connection/generator.js.map +1 -1
- package/src/py/agent/files/common/agent.py.template +2 -0
- package/src/py/agent/files/deploy/Dockerfile.template +3 -3
- package/src/py/agent/files/http/init.py.template +2 -2
- package/src/py/agent/files/http/main.py.template +0 -1
- package/src/py/agent/generator.d.ts +3 -3
- package/src/py/agent/generator.js +45 -39
- package/src/py/agent/generator.js.map +1 -1
- package/src/py/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +4 -0
- package/src/py/agent/mcp-connection/generator.d.ts +3 -3
- package/src/py/agent/mcp-connection/generator.js +5 -5
- package/src/py/agent/mcp-connection/generator.js.map +1 -1
- package/src/py/agent/react-connection/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/py/agent/react-connection/generator.d.ts +3 -3
- package/src/py/agent/react-connection/generator.js +8 -8
- package/src/py/agent/react-connection/generator.js.map +1 -1
- package/src/py/agent/react-connection/serve-local.d.ts +2 -2
- package/src/py/agent/react-connection/serve-local.js.map +1 -1
- package/src/py/agent/schema.d.ts +8 -8
- package/src/py/agent/schema.json +18 -18
- package/src/py/api/generator.d.ts +3 -3
- package/src/py/api/generator.js +2 -2
- package/src/py/api/generator.js.map +1 -1
- package/src/py/api/schema.d.ts +4 -6
- package/src/py/api/schema.json +15 -15
- package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +6 -6
- package/src/py/fast-api/generator.d.ts +3 -3
- package/src/py/fast-api/generator.js +73 -55
- package/src/py/fast-api/generator.js.map +1 -1
- package/src/py/fast-api/react/generator.d.ts +3 -3
- package/src/py/fast-api/react/generator.js +3 -3
- package/src/py/fast-api/react/generator.js.map +1 -1
- package/src/py/fast-api/react/open-api.d.ts +1 -1
- package/src/py/fast-api/react/open-api.js +5 -2
- package/src/py/fast-api/react/open-api.js.map +1 -1
- package/src/py/fast-api/schema.d.ts +4 -6
- package/src/py/fast-api/schema.json +15 -15
- package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/py/lambda-function/files/handler/__lambdaFunctionSnakeCase__.py.template +6 -6
- package/src/py/lambda-function/generator.d.ts +3 -3
- package/src/py/lambda-function/generator.js +34 -31
- package/src/py/lambda-function/generator.js.map +1 -1
- package/src/py/lambda-function/schema.d.ts +7 -4
- package/src/py/lambda-function/schema.json +15 -7
- package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +5 -5
- package/src/py/mcp-server/generator.d.ts +3 -3
- package/src/py/mcp-server/generator.js +44 -37
- package/src/py/mcp-server/generator.js.map +1 -1
- package/src/py/mcp-server/schema.d.ts +5 -9
- package/src/py/mcp-server/schema.json +15 -15
- package/src/py/project/generator.d.ts +3 -3
- package/src/py/project/generator.js +88 -69
- package/src/py/project/generator.js.map +1 -1
- package/src/py/project/schema.d.ts +1 -1
- package/src/py/project/schema.json +2 -2
- package/src/smithy/project/__snapshots__/generator.spec.ts.snap +18 -16
- package/src/smithy/project/files/build.Dockerfile.template +1 -0
- package/src/smithy/project/generator.d.ts +3 -3
- package/src/smithy/project/generator.js +31 -29
- package/src/smithy/project/generator.js.map +1 -1
- package/src/smithy/react-connection/generator.d.ts +3 -3
- package/src/smithy/react-connection/generator.js +4 -4
- package/src/smithy/react-connection/generator.js.map +1 -1
- package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +12 -38
- package/src/smithy/ts/api/generator.d.ts +3 -3
- package/src/smithy/ts/api/generator.js +89 -66
- package/src/smithy/ts/api/generator.js.map +1 -1
- package/src/smithy/ts/api/schema.d.ts +4 -6
- package/src/smithy/ts/api/schema.json +15 -15
- package/src/terraform/project/generator.d.ts +3 -3
- package/src/terraform/project/generator.js +14 -9
- package/src/terraform/project/generator.js.map +1 -1
- package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +6 -6
- package/src/trpc/backend/files/src/client/index.ts.template +5 -5
- package/src/trpc/backend/files/src/handler.ts.template +2 -2
- package/src/trpc/backend/generator.d.ts +3 -3
- package/src/trpc/backend/generator.js +80 -61
- package/src/trpc/backend/generator.js.map +1 -1
- package/src/trpc/backend/schema.d.ts +5 -5
- package/src/trpc/backend/schema.json +15 -15
- package/src/trpc/react/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/trpc/react/files/src/components/__apiNameClassName__ClientProvider.tsx.template +14 -14
- package/src/trpc/react/generator.d.ts +3 -3
- package/src/trpc/react/generator.js +11 -10
- package/src/trpc/react/generator.js.map +1 -1
- package/src/ts/agent/__snapshots__/generator.spec.ts.snap +11 -5
- package/src/ts/agent/a2a-connection/generator.d.ts +3 -3
- package/src/ts/agent/a2a-connection/generator.js +9 -8
- package/src/ts/agent/a2a-connection/generator.js.map +1 -1
- package/src/ts/agent/files/common/agent.ts.template +6 -2
- package/src/ts/agent/files/deploy/Dockerfile.template +1 -1
- package/src/ts/agent/generator.d.ts +3 -3
- package/src/ts/agent/generator.js +40 -35
- package/src/ts/agent/generator.js.map +1 -1
- package/src/ts/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +5 -2
- package/src/ts/agent/mcp-connection/generator.d.ts +3 -3
- package/src/ts/agent/mcp-connection/generator.js +6 -6
- package/src/ts/agent/mcp-connection/generator.js.map +1 -1
- package/src/ts/agent/react-connection/files/src/components/__agentNameClassName__AgentClientProvider.tsx.template +8 -8
- package/src/ts/agent/react-connection/generator.d.ts +3 -3
- package/src/ts/agent/react-connection/generator.js +15 -15
- package/src/ts/agent/react-connection/generator.js.map +1 -1
- package/src/ts/agent/react-connection/serve-local.d.ts +2 -2
- package/src/ts/agent/react-connection/serve-local.js +2 -2
- package/src/ts/agent/schema.d.ts +8 -8
- package/src/ts/agent/schema.json +18 -18
- package/src/ts/api/generator.d.ts +3 -3
- package/src/ts/api/generator.js +10 -8
- package/src/ts/api/generator.js.map +1 -1
- package/src/ts/api/schema.d.ts +5 -4
- package/src/ts/api/schema.json +15 -15
- package/src/ts/astro-docs/__snapshots__/generator.spec.ts.snap +7 -8
- package/src/ts/astro-docs/generator.d.ts +3 -3
- package/src/ts/astro-docs/generator.js +14 -11
- package/src/ts/astro-docs/generator.js.map +1 -1
- package/src/ts/docs/generator.d.ts +3 -3
- package/src/ts/docs/generator.js.map +1 -1
- package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +1502 -0
- package/src/ts/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +45 -0
- package/src/ts/dynamodb/agent-connection/generator.d.ts +10 -0
- package/src/ts/dynamodb/agent-connection/generator.js +32 -0
- package/src/ts/dynamodb/agent-connection/generator.js.map +1 -0
- package/src/ts/dynamodb/agent-connection/schema.d.ts +14 -0
- package/src/ts/dynamodb/agent-connection/schema.json +22 -0
- package/src/ts/dynamodb/files/scripts/create-local-table.ts.template +161 -0
- package/src/ts/dynamodb/files/scripts/start-container.ts.template +81 -0
- package/src/ts/dynamodb/files/src/client.ts.template +45 -0
- package/src/ts/dynamodb/files/src/constants.ts.template +9 -0
- package/src/ts/dynamodb/files/src/entities/example.ts.template +47 -0
- package/src/ts/dynamodb/files/src/entities/index.ts.template +1 -0
- package/src/ts/dynamodb/files/src/gsi.ts.template +14 -0
- package/src/ts/dynamodb/files/src/index.ts.template +11 -0
- package/src/ts/dynamodb/generator.d.ts +10 -0
- package/src/ts/dynamodb/generator.js +106 -0
- package/src/ts/dynamodb/generator.js.map +1 -0
- package/src/ts/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +45 -0
- package/src/ts/dynamodb/mcp-server-connection/generator.d.ts +10 -0
- package/src/ts/dynamodb/mcp-server-connection/generator.js +32 -0
- package/src/ts/dynamodb/mcp-server-connection/generator.js.map +1 -0
- package/src/ts/dynamodb/mcp-server-connection/schema.d.ts +14 -0
- package/src/ts/dynamodb/mcp-server-connection/schema.json +22 -0
- package/src/ts/dynamodb/schema.d.ts +14 -0
- package/src/ts/dynamodb/schema.json +52 -0
- package/src/ts/dynamodb/smithy-connection/__snapshots__/generator.spec.ts.snap +23 -0
- package/src/ts/dynamodb/smithy-connection/generator.d.ts +10 -0
- package/src/ts/dynamodb/smithy-connection/generator.js +30 -0
- package/src/ts/dynamodb/smithy-connection/generator.js.map +1 -0
- package/src/ts/dynamodb/smithy-connection/schema.d.ts +12 -0
- package/src/ts/dynamodb/smithy-connection/schema.json +18 -0
- package/src/ts/dynamodb/trpc-connection/__snapshots__/generator.spec.ts.snap +23 -0
- package/src/ts/dynamodb/trpc-connection/generator.d.ts +10 -0
- package/src/ts/dynamodb/trpc-connection/generator.js +30 -0
- package/src/ts/dynamodb/trpc-connection/generator.js.map +1 -0
- package/src/ts/dynamodb/trpc-connection/schema.d.ts +12 -0
- package/src/ts/dynamodb/trpc-connection/schema.json +18 -0
- package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/ts/lambda-function/files/handler/__lambdaFunctionKebabCase__.ts.template +10 -10
- package/src/ts/lambda-function/generator.d.ts +3 -3
- package/src/ts/lambda-function/generator.js +41 -36
- package/src/ts/lambda-function/generator.js.map +1 -1
- package/src/ts/lambda-function/schema.d.ts +7 -4
- package/src/ts/lambda-function/schema.json +15 -7
- package/src/ts/lib/__snapshots__/generator.spec.ts.snap +32 -65
- package/src/ts/lib/__snapshots__/vitest.spec.ts.snap +24 -0
- package/src/ts/lib/biome.d.ts +7 -0
- package/src/ts/lib/biome.js +58 -0
- package/src/ts/lib/biome.js.map +1 -0
- package/src/ts/lib/generator.d.ts +3 -3
- package/src/ts/lib/generator.js +27 -29
- package/src/ts/lib/generator.js.map +1 -1
- package/src/ts/lib/grit/vitest-pass-with-no-tests.grit +1 -1
- package/src/ts/lib/ts-project-utils.d.ts +12 -2
- package/src/ts/lib/ts-project-utils.js +30 -10
- package/src/ts/lib/ts-project-utils.js.map +1 -1
- package/src/ts/lib/vitest.d.ts +2 -2
- package/src/ts/lib/vitest.js +1 -1
- package/src/ts/lib/vitest.js.map +1 -1
- package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +4 -4
- package/src/ts/mcp-server/generator.d.ts +3 -3
- package/src/ts/mcp-server/generator.js +46 -24
- package/src/ts/mcp-server/generator.js.map +1 -1
- package/src/ts/mcp-server/schema.d.ts +5 -9
- package/src/ts/mcp-server/schema.json +15 -15
- package/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap +20 -15
- package/src/ts/nx-generator/files/nx-plugin-for-aws/generator/generator.spec.ts.template +1 -1
- package/src/ts/nx-generator/generator.d.ts +2 -2
- package/src/ts/nx-generator/generator.js +23 -19
- package/src/ts/nx-generator/generator.js.map +1 -1
- package/src/ts/nx-plugin/generator.d.ts +3 -3
- package/src/ts/nx-plugin/generator.js +12 -11
- package/src/ts/nx-plugin/generator.js.map +1 -1
- package/src/ts/nx-plugin/utils.d.ts +1 -1
- package/src/ts/nx-plugin/utils.js +10 -4
- package/src/ts/nx-plugin/utils.js.map +1 -1
- package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +120 -60
- package/src/ts/rdb/agent-connection/generator.d.ts +3 -3
- package/src/ts/rdb/agent-connection/generator.js +4 -4
- package/src/ts/rdb/agent-connection/generator.js.map +1 -1
- package/src/ts/rdb/files/prisma.config.ts.template +1 -1
- package/src/ts/rdb/files/scripts/pull-image.ts.template +15 -0
- package/src/ts/rdb/files/scripts/{docker-start.ts.template → start-container.ts.template} +24 -24
- package/src/ts/rdb/files/scripts/wait-for-db.ts.template +3 -3
- package/src/ts/rdb/files/src/create-db-user-handler.ts.template +2 -2
- package/src/ts/rdb/files/src/migration-handler.ts.template +2 -2
- package/src/ts/rdb/files/src/prisma.ts.template +2 -2
- package/src/ts/rdb/generator.d.ts +3 -3
- package/src/ts/rdb/generator.js +103 -82
- package/src/ts/rdb/generator.js.map +1 -1
- package/src/ts/rdb/mcp-server-connection/generator.d.ts +3 -3
- package/src/ts/rdb/mcp-server-connection/generator.js +4 -4
- package/src/ts/rdb/mcp-server-connection/generator.js.map +1 -1
- package/src/ts/rdb/schema.d.ts +5 -5
- package/src/ts/rdb/schema.json +13 -13
- package/src/ts/rdb/smithy-connection/generator.d.ts +3 -3
- package/src/ts/rdb/smithy-connection/generator.js +4 -4
- package/src/ts/rdb/smithy-connection/generator.js.map +1 -1
- package/src/ts/rdb/trpc-connection/files/src/middleware/__rdbNameKebab__.ts.template +1 -1
- package/src/ts/rdb/trpc-connection/generator.d.ts +3 -3
- package/src/ts/rdb/trpc-connection/generator.js +3 -3
- package/src/ts/rdb/trpc-connection/generator.js.map +1 -1
- package/src/ts/rdb/utils.d.ts +1 -1
- package/src/ts/react-website/agui/files/common/src/hooks/useAgui__agentNameClassName__.tsx.template +9 -9
- package/src/ts/react-website/agui/generator.d.ts +3 -3
- package/src/ts/react-website/agui/generator.js +13 -13
- package/src/ts/react-website/agui/generator.js.map +1 -1
- package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +423 -386
- package/src/ts/react-website/app/files/app/cloudscape/src/components/AppLayout/index.tsx.template +5 -5
- package/src/ts/react-website/app/files/app/cloudscape/src/main.tsx.template +1 -1
- package/src/ts/react-website/app/files/app/cloudscape/src/styles.css.template +1 -1
- package/src/ts/react-website/app/files/app/none/src/components/AppLayout/index.tsx.template +5 -5
- package/src/ts/react-website/app/files/app/none/src/main.tsx.template +1 -1
- package/src/ts/react-website/app/files/app/none/src/styles.css.template +2 -2
- package/src/ts/react-website/app/files/app/shadcn/src/components/AppLayout/index.tsx.template +6 -6
- package/src/ts/react-website/app/files/app/shadcn/src/main.tsx.template +1 -1
- package/src/ts/react-website/app/generator.d.ts +6 -6
- package/src/ts/react-website/app/generator.js +124 -114
- package/src/ts/react-website/app/generator.js.map +1 -1
- package/src/ts/react-website/app/schema.d.ts +9 -6
- package/src/ts/react-website/app/schema.json +13 -13
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.spec.ts.snap +1 -7
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +3 -3
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.ux-provider.spec.ts.snap +3 -23
- package/src/ts/react-website/cognito-auth/generator.d.ts +3 -3
- package/src/ts/react-website/cognito-auth/generator.js +19 -22
- package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
- package/src/ts/react-website/cognito-auth/grit/cloudscape-auth-menu.grit +8 -6
- package/src/ts/react-website/cognito-auth/grit/cognito-auth-wrapper.grit +1 -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.ts +2 -2
- package/src/ts/react-website/cognito-auth/schema.json +4 -4
- package/src/ts/react-website/cognito-auth/utils.d.ts +1 -1
- package/src/ts/react-website/cognito-auth/utils.js +1 -1
- package/src/ts/react-website/cognito-auth/utils.js.map +1 -1
- package/src/ts/react-website/runtime-config/generator.d.ts +3 -3
- package/src/ts/react-website/runtime-config/generator.js +4 -4
- package/src/ts/react-website/runtime-config/generator.js.map +1 -1
- package/src/ts/sync/generator.d.ts +3 -3
- package/src/ts/sync/generator.js +2 -2
- package/src/ts/sync/generator.js.map +1 -1
- package/src/ts/website/app/generator.d.ts +3 -3
- package/src/ts/website/app/generator.js +1 -1
- package/src/ts/website/app/generator.js.map +1 -1
- package/src/ts/website/app/schema.d.ts +8 -6
- package/src/ts/website/app/schema.json +21 -13
- package/src/ts/website/auth/generator.d.ts +3 -3
- package/src/ts/website/auth/generator.js +2 -2
- package/src/ts/website/auth/generator.js.map +1 -1
- package/src/ts/website/auth/schema.d.ts +2 -2
- package/src/ts/website/auth/schema.json +4 -4
- package/src/utils/agent-connection/agent-connection.d.ts +1 -1
- package/src/utils/agent-connection/agent-connection.js +17 -11
- package/src/utils/agent-connection/agent-connection.js.map +1 -1
- package/src/utils/agent-connection/files/core-runtime-config/model-errors.ts.template +36 -0
- package/src/utils/agent-connection/files/py-core-runtime-config/model_errors.py.template +40 -0
- package/src/utils/agent-core-constructs/agent-core-constructs.d.ts +10 -10
- package/src/utils/agent-core-constructs/agent-core-constructs.js +14 -24
- 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 +13 -13
- package/src/utils/agent-core-constructs/files/terraform/app/agent-core/__nameKebabCase__/__nameKebabCase__.tf.template +4 -4
- package/src/utils/agent-core-constructs/files/terraform/core/agent-core/runtime.tf.template +5 -5
- package/src/utils/api-constructs/api-constructs.d.ts +4 -4
- package/src/utils/api-constructs/api-constructs.js +5 -7
- package/src/utils/api-constructs/api-constructs.js.map +1 -1
- package/src/utils/api-constructs/files/cdk/app/apis/http/__apiNameKebabCase__.ts.template +12 -12
- package/src/utils/api-constructs/files/cdk/app/apis/rest/__apiNameKebabCase__.ts.template +12 -12
- package/src/utils/api-constructs/files/terraform/app/apis/http/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +7 -7
- package/src/utils/api-constructs/files/terraform/app/apis/rest/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +10 -10
- package/src/utils/api-constructs/open-api-metadata.d.ts +4 -4
- package/src/utils/api-constructs/open-api-metadata.js +2 -2
- package/src/utils/api-constructs/open-api-metadata.js.map +1 -1
- package/src/utils/ast/website.d.ts +5 -1
- package/src/utils/ast/website.js +3 -3
- package/src/utils/ast/website.js.map +1 -1
- package/src/utils/ast.d.ts +33 -1
- package/src/utils/ast.js +89 -4
- package/src/utils/ast.js.map +1 -1
- package/src/utils/bundle/bundle.d.ts +1 -1
- package/src/utils/bundle/bundle.js +2 -2
- package/src/utils/bundle/bundle.js.map +1 -1
- package/src/utils/commands.d.ts +1 -1
- package/src/utils/commands.js +2 -2
- package/src/utils/commands.js.map +1 -1
- package/src/utils/config/__snapshots__/utils.spec.ts.snap +6 -6
- package/src/utils/config/index.d.ts +5 -5
- package/src/utils/config/utils.d.ts +13 -3
- package/src/utils/config/utils.js +37 -5
- package/src/utils/config/utils.js.map +1 -1
- package/src/utils/connection/open-api/files/components/__apiNameClassName__Provider.tsx.template +7 -7
- package/src/utils/connection/open-api/react.d.ts +2 -2
- package/src/utils/connection/open-api/react.js +7 -7
- package/src/utils/connection/open-api/react.js.map +1 -1
- package/src/utils/containers.d.ts +6 -6
- package/src/utils/containers.js +6 -6
- package/src/utils/containers.js.map +1 -1
- package/src/utils/dynamodb-constructs/dynamodb-constructs.d.ts +18 -0
- package/src/utils/dynamodb-constructs/dynamodb-constructs.js +49 -0
- package/src/utils/dynamodb-constructs/dynamodb-constructs.js.map +1 -0
- package/src/utils/dynamodb-constructs/files/cdk/app/dynamodb/__nameKebabCase__.ts.template +30 -0
- package/src/utils/dynamodb-constructs/files/cdk/core/dynamodb.ts.template +105 -0
- package/src/utils/dynamodb-constructs/files/terraform/app/dynamodb/__nameKebabCase__/__nameKebabCase__.tf.template +65 -0
- package/src/utils/dynamodb-constructs/files/terraform/core/dynamodb/dynamodb.tf.template +155 -0
- package/src/utils/format.d.ts +45 -2
- package/src/utils/format.js +167 -46
- package/src/utils/format.js.map +1 -1
- package/src/utils/fs.d.ts +1 -1
- package/src/utils/fs.js.map +1 -1
- package/src/utils/function-constructs/files/cdk/app/lambda-functions/{__functionNameKebabCase__.ts.template → __nameKebabCase__.ts.template} +1 -1
- package/src/utils/function-constructs/files/terraform/app/lambda-functions/{__functionNameKebabCase__/__functionNameKebabCase__.tf.template → __nameKebabCase__/__nameKebabCase__.tf.template} +7 -7
- package/src/utils/function-constructs/function-constructs.d.ts +5 -5
- package/src/utils/function-constructs/function-constructs.js +6 -8
- package/src/utils/function-constructs/function-constructs.js.map +1 -1
- package/src/utils/generators.d.ts +4 -0
- package/src/utils/generators.js +4 -4
- package/src/utils/generators.js.map +1 -1
- package/src/utils/git.d.ts +1 -1
- package/src/utils/git.js.map +1 -1
- package/src/utils/iac-providers.d.ts +3 -3
- package/src/utils/iac-providers.js +1 -1
- package/src/utils/iac.d.ts +3 -3
- package/src/utils/iac.js +6 -6
- package/src/utils/iac.js.map +1 -1
- package/src/utils/identity-constructs/files/cdk/core/user-identity.ts.template +1 -5
- package/src/utils/identity-constructs/files/terraform/core/user-identity/identity/identity.tf.template +2 -4
- package/src/utils/identity-constructs/identity-constructs.d.ts +3 -3
- package/src/utils/identity-constructs/identity-constructs.js +4 -4
- package/src/utils/identity-constructs/identity-constructs.js.map +1 -1
- package/src/utils/js.d.ts +4 -0
- package/src/utils/js.js +4 -4
- package/src/utils/js.js.map +1 -1
- package/src/utils/mcp.d.ts +25 -0
- package/src/utils/mcp.js +81 -0
- package/src/utils/mcp.js.map +1 -0
- package/src/utils/metrics.d.ts +9 -3
- package/src/utils/metrics.js +58 -28
- package/src/utils/metrics.js.map +1 -1
- package/src/utils/npm-scope.d.ts +1 -1
- package/src/utils/npm-scope.js.map +1 -1
- package/src/utils/nx.d.ts +7 -2
- package/src/utils/nx.js +46 -14
- package/src/utils/nx.js.map +1 -1
- package/src/utils/nxlv-python.d.ts +1 -1
- package/src/utils/paths.d.ts +1 -1
- package/src/utils/pnpm-workspace.d.ts +1 -1
- package/src/utils/pnpm-workspace.js.map +1 -1
- package/src/utils/port.d.ts +30 -3
- package/src/utils/port.js +72 -4
- package/src/utils/port.js.map +1 -1
- package/src/utils/py.d.ts +2 -2
- package/src/utils/py.js +13 -6
- package/src/utils/py.js.map +1 -1
- package/src/utils/rdb-constructs/files/cdk/core/rdb/aurora.ts.template +30 -1
- package/src/utils/rdb-constructs/files/terraform/core/rdb/aurora/aurora.tf.template +18 -9
- package/src/utils/rdb-constructs/rdb-constructs.d.ts +5 -5
- package/src/utils/rdb-constructs/rdb-constructs.js +7 -17
- package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
- package/src/utils/shared-constructs.d.ts +3 -3
- package/src/utils/shared-constructs.js +10 -10
- package/src/utils/shared-constructs.js.map +1 -1
- package/src/utils/shared-infra-config.d.ts +1 -1
- package/src/utils/shared-infra-config.js +1 -1
- package/src/utils/shared-infra-config.js.map +1 -1
- package/src/utils/shared-scripts.d.ts +1 -1
- package/src/utils/shared-scripts.js +2 -2
- package/src/utils/shared-scripts.js.map +1 -1
- package/src/utils/shared-shadcn.d.ts +1 -1
- package/src/utils/shared-shadcn.js +1 -13
- package/src/utils/shared-shadcn.js.map +1 -1
- package/src/utils/test.d.ts +5 -1
- package/src/utils/test.js +9 -5
- package/src/utils/test.js.map +1 -1
- package/src/utils/toml.d.ts +1 -1
- package/src/utils/toml.js +4 -0
- package/src/utils/toml.js.map +1 -1
- package/src/utils/versions.d.ts +68 -72
- package/src/utils/versions.js +67 -71
- package/src/utils/versions.js.map +1 -1
- package/src/utils/website-constructs/files/cdk/core/static-website.ts.template +52 -5
- package/src/utils/website-constructs/files/terraform/core/static-website/static-website.tf.template +38 -11
- package/src/utils/website-constructs/website-constructs.d.ts +3 -3
- package/src/utils/website-constructs/website-constructs.js +5 -7
- package/src/utils/website-constructs/website-constructs.js.map +1 -1
- package/src/ts/lib/eslint.d.ts +0 -14
- package/src/ts/lib/eslint.js +0 -90
- package/src/ts/lib/eslint.js.map +0 -1
- package/src/ts/lib/grit/eslint-dependency-checks-warn.grit +0 -1
- /package/src/ts/{rdb/files/scripts/docker-pull.ts.template → dynamodb/files/scripts/pull-image.ts.template} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/ts/nx-plugin/utils.ts"],"names":[],"mappings":";;;;AAAA;;;GAGG;AACH,uCAOoB;AACpB,uCAAqE;AACrE,mDAAoD;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/ts/nx-plugin/utils.ts"],"names":[],"mappings":";;;;AAAA;;;GAGG;AACH,uCAOoB;AACpB,iFAAgD;AAChD,uCAAqE;AACrE,mDAAoD;AAEpD;;GAEG;AACI,MAAM,4BAA4B,GAAG,CAC1C,IAAU,EACV,WAAmB,EACnB,EAAE;IACF,MAAM,OAAO,GAAG,IAAA,wCAAmC,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAEvE,MAAM,YAAY,GAAG,IAAA,0BAAiB,EAAC,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACtE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,2BAA2B,WAAW,8BAA8B,CACrE,CAAC;IACJ,CAAC;IAED,qDAAqD;IACrD,0CAA0C;IAC1C,IAAA,mBAAU,EAAC,IAAI,EAAE,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE;QAC1C,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,EAAE,GACzC,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC;QACjC,uEAAuE;QACvE,yEAAyE;QACzE,wEAAwE;QACxE,mFAAmF;QACnF,QAAQ,CAAC,eAAe,GAAG;YACzB,GAAG,IAAI;YACP,MAAM,EAAE,MAAM,IAAI,UAAU;YAC5B,gBAAgB,EAAE,gBAAgB,IAAI,SAAS;SAChD,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,sDAAsD;IACtD,MAAM,kBAAkB,GAAG,IAAA,0BAAiB,EAAC,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IAC9E,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACrC,IAAA,kBAAS,EAAC,IAAI,EAAE,kBAAkB,EAAE;YAClC,UAAU,EAAE,EAAE;SACf,CAAC,CAAC;IACL,CAAC;IAED,oFAAoF;IACpF,MAAM,qBAAqB,GAAG,IAAA,0BAAiB,EAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC9E,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACxC,IAAA,kBAAS,EAAC,IAAI,EAAE,qBAAqB,EAAE;YACrC,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;IACD,IAAA,mBAAU,EAAC,IAAI,EAAE,qBAAqB,EAAE,CAAC,GAAG,EAAE,EAAE;QAC9C,GAAG,CAAC,IAAI,KAAK,gBAAgB,CAAC;QAC9B,GAAG,CAAC,UAAU,KAAK,mBAAmB,CAAC;QACvC,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;QACjD,CAAC,CAAC,IAAA,iBAAQ,EAAC,IAAI,EAAE,cAAc,CAAC;QAChC,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,gBAAgB,GAAG,eAAe,EAAE,IAAI,KAAK,uBAAuB,CAAC;IAE3E,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,qFAAqF;QACrF,MAAM,IAAI,GAAG;YACX,GAAG,IAAA,uBAAY,EAAC,CAAC,YAAY,CAAC,CAAC;YAC/B,uCAAuC;YACvC,CAAC,sBAAW,CAAC,IAAI,CAAC,EAAE,IAAI,sBAAW,CAAC,OAAO,EAAE;SAC9C,CAAC;QACF,IAAA,qCAA4B,EAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAA,qCAA4B,EAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,qBAAqB,CAAC,CAAC;IACtE,CAAC;AACH,CAAC,CAAC;AAlEW,QAAA,4BAA4B,gCAkEvC"}
|
|
@@ -22,7 +22,7 @@ datasource db {
|
|
|
22
22
|
"
|
|
23
23
|
`;
|
|
24
24
|
|
|
25
|
-
exports[`ts#rdb generator > should add mysql prisma dependencies when engine is MySQL > packages/db/scripts/
|
|
25
|
+
exports[`ts#rdb generator > should add mysql prisma dependencies when engine is MySQL > packages/db/scripts/pull-image.ts 1`] = `
|
|
26
26
|
"import { spawnSync } from 'child_process';
|
|
27
27
|
|
|
28
28
|
const ENGINE = 'docker';
|
|
@@ -41,7 +41,7 @@ if (inspect.status !== 0) {
|
|
|
41
41
|
"
|
|
42
42
|
`;
|
|
43
43
|
|
|
44
|
-
exports[`ts#rdb generator > should add mysql prisma dependencies when engine is MySQL > packages/db/scripts/
|
|
44
|
+
exports[`ts#rdb generator > should add mysql prisma dependencies when engine is MySQL > packages/db/scripts/start-container.ts 1`] = `
|
|
45
45
|
"import { spawn, spawnSync } from 'child_process';
|
|
46
46
|
|
|
47
47
|
const ENGINE = 'docker';
|
|
@@ -71,21 +71,14 @@ if (containerExists()) {
|
|
|
71
71
|
if (start.status !== 0) process.exit(start.status ?? 1);
|
|
72
72
|
}
|
|
73
73
|
} else {
|
|
74
|
-
const runArgs =
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
\`
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
'-p',
|
|
83
|
-
\`\${hostPort}:3306\`,
|
|
84
|
-
'-v',
|
|
85
|
-
\`\${containerName}-data:/var/lib/mysql\`,
|
|
86
|
-
'-d',
|
|
87
|
-
image,
|
|
88
|
-
];
|
|
74
|
+
const runArgs = (
|
|
75
|
+
\`run --rm --name \${containerName}\` +
|
|
76
|
+
\` -e MYSQL_DATABASE=\${dbName}\` +
|
|
77
|
+
\` -e MYSQL_ROOT_PASSWORD=\${dbPassword}\` +
|
|
78
|
+
\` -p \${hostPort}:3306\` +
|
|
79
|
+
\` -v \${containerName}-data:/var/lib/mysql\` +
|
|
80
|
+
\` -d \${image}\`
|
|
81
|
+
).split(' ');
|
|
89
82
|
const create = spawnSync(ENGINE, runArgs, { stdio: 'inherit' });
|
|
90
83
|
if (create.status !== 0) process.exit(create.status ?? 1);
|
|
91
84
|
}
|
|
@@ -663,6 +656,21 @@ export interface AuroraDatabaseProps extends _AuroraDatabaseProps {
|
|
|
663
656
|
* @default true
|
|
664
657
|
*/
|
|
665
658
|
readonly enableKeyRotation?: boolean;
|
|
659
|
+
|
|
660
|
+
/**
|
|
661
|
+
* Whether to export Aurora engine logs to CloudWatch Logs.
|
|
662
|
+
* See https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.html
|
|
663
|
+
*
|
|
664
|
+
* @default false
|
|
665
|
+
*/
|
|
666
|
+
readonly enableCloudwatchLogs?: boolean;
|
|
667
|
+
|
|
668
|
+
/**
|
|
669
|
+
* Whether to enable Performance Insights on the Aurora writer instance.
|
|
670
|
+
*
|
|
671
|
+
* @default true
|
|
672
|
+
*/
|
|
673
|
+
readonly enablePerformanceInsights?: boolean;
|
|
666
674
|
}
|
|
667
675
|
|
|
668
676
|
/**
|
|
@@ -692,6 +700,8 @@ export abstract class AuroraDatabase extends Construct {
|
|
|
692
700
|
deletionProtection = true,
|
|
693
701
|
removalPolicy = RemovalPolicy.RETAIN,
|
|
694
702
|
enableKeyRotation = true,
|
|
703
|
+
enableCloudwatchLogs = false,
|
|
704
|
+
enablePerformanceInsights = true,
|
|
695
705
|
engine,
|
|
696
706
|
engineVersion,
|
|
697
707
|
...clusterProps
|
|
@@ -707,12 +717,24 @@ export abstract class AuroraDatabase extends Construct {
|
|
|
707
717
|
vpc,
|
|
708
718
|
vpcSubnets,
|
|
709
719
|
engine: engine.clusterEngine(engineVersion ?? engine.defaultVersion),
|
|
710
|
-
writer:
|
|
720
|
+
writer:
|
|
721
|
+
writer ??
|
|
722
|
+
ClusterInstance.serverlessV2('writer', {
|
|
723
|
+
enablePerformanceInsights,
|
|
724
|
+
performanceInsightEncryptionKey: enablePerformanceInsights
|
|
725
|
+
? key
|
|
726
|
+
: undefined,
|
|
727
|
+
}),
|
|
711
728
|
credentials: Credentials.fromGeneratedSecret(adminUser, {
|
|
712
729
|
encryptionKey: key,
|
|
713
730
|
}),
|
|
714
731
|
iamAuthentication: true,
|
|
715
732
|
monitoringInterval: Duration.seconds(5),
|
|
733
|
+
cloudwatchLogsExports: enableCloudwatchLogs
|
|
734
|
+
? engine.type === 'mysql'
|
|
735
|
+
? ['audit', 'error', 'general', 'slowquery']
|
|
736
|
+
: ['postgresql']
|
|
737
|
+
: undefined,
|
|
716
738
|
defaultDatabaseName: databaseName,
|
|
717
739
|
storageEncrypted: true,
|
|
718
740
|
storageEncryptionKey: key,
|
|
@@ -901,7 +923,7 @@ export default defineConfig({
|
|
|
901
923
|
"
|
|
902
924
|
`;
|
|
903
925
|
|
|
904
|
-
exports[`ts#rdb generator > should generate terraform modules when
|
|
926
|
+
exports[`ts#rdb generator > should generate terraform modules when iac is Terraform 1`] = `
|
|
905
927
|
"# Core Aurora module
|
|
906
928
|
# This module creates an Aurora cluster and a generated admin secret.
|
|
907
929
|
|
|
@@ -1063,10 +1085,19 @@ variable "tags" {
|
|
|
1063
1085
|
default = {}
|
|
1064
1086
|
}
|
|
1065
1087
|
|
|
1088
|
+
# Suffix appended to physical resource names so that multiple deployments
|
|
1089
|
+
# (e.g. separate environments in the same account and region) don't collide.
|
|
1090
|
+
resource "random_string" "suffix" {
|
|
1091
|
+
length = 8
|
|
1092
|
+
special = false
|
|
1093
|
+
upper = false
|
|
1094
|
+
}
|
|
1095
|
+
|
|
1066
1096
|
locals {
|
|
1067
1097
|
default_port = var.engine == "aurora-mysql" ? 3306 : 5432
|
|
1068
1098
|
default_engine_version = var.engine == "aurora-mysql" ? "8.0.mysql_aurora.3.12.0" : "17.7"
|
|
1069
1099
|
parameter_group_family = var.engine == "aurora-mysql" ? "aurora-mysql8.0" : "aurora-postgresql\${split(".", coalesce(var.engine_version, local.default_engine_version))[0]}"
|
|
1100
|
+
cluster_name = "\${var.name}-aurora-\${random_string.suffix.result}"
|
|
1070
1101
|
}
|
|
1071
1102
|
|
|
1072
1103
|
resource "aws_rds_cluster_parameter_group" "database" {
|
|
@@ -1164,7 +1195,7 @@ resource "aws_security_group" "database" {
|
|
|
1164
1195
|
}
|
|
1165
1196
|
|
|
1166
1197
|
resource "aws_db_subnet_group" "database" {
|
|
1167
|
-
name =
|
|
1198
|
+
name = local.cluster_name
|
|
1168
1199
|
subnet_ids = var.subnet_ids
|
|
1169
1200
|
|
|
1170
1201
|
tags = merge(var.tags, {
|
|
@@ -1204,7 +1235,7 @@ resource "aws_secretsmanager_secret_version" "credentials" {
|
|
|
1204
1235
|
resource "aws_rds_cluster" "database" {
|
|
1205
1236
|
#checkov:skip=CKV2_AWS_27:Query logging can be enabled with enable_cloudwatch_logs; this module defaults to CDK-equivalent behavior unless logging is requested
|
|
1206
1237
|
#checkov:skip=CKV_AWS_139:Deletion protection is enabled but checkov is unable to detect it correctly
|
|
1207
|
-
cluster_identifier =
|
|
1238
|
+
cluster_identifier = local.cluster_name
|
|
1208
1239
|
engine = var.engine
|
|
1209
1240
|
engine_version = coalesce(var.engine_version, local.default_engine_version)
|
|
1210
1241
|
database_name = var.database_name
|
|
@@ -1218,7 +1249,7 @@ resource "aws_rds_cluster" "database" {
|
|
|
1218
1249
|
kms_key_id = aws_kms_key.database.arn
|
|
1219
1250
|
deletion_protection = var.deletion_protection
|
|
1220
1251
|
skip_final_snapshot = var.skip_final_snapshot
|
|
1221
|
-
final_snapshot_identifier = var.skip_final_snapshot ? null : "\${
|
|
1252
|
+
final_snapshot_identifier = var.skip_final_snapshot ? null : "\${local.cluster_name}-final-snapshot"
|
|
1222
1253
|
iam_database_authentication_enabled = true
|
|
1223
1254
|
monitoring_interval = 5
|
|
1224
1255
|
monitoring_role_arn = aws_iam_role.enhanced_monitoring.arn
|
|
@@ -1238,7 +1269,7 @@ resource "aws_rds_cluster" "database" {
|
|
|
1238
1269
|
resource "aws_rds_cluster_instance" "database" {
|
|
1239
1270
|
count = var.instance_count
|
|
1240
1271
|
|
|
1241
|
-
identifier = "\${
|
|
1272
|
+
identifier = "\${local.cluster_name}-\${count.index + 1}"
|
|
1242
1273
|
cluster_identifier = aws_rds_cluster.database.id
|
|
1243
1274
|
instance_class = "db.serverless"
|
|
1244
1275
|
engine = aws_rds_cluster.database.engine
|
|
@@ -1292,7 +1323,7 @@ resource "aws_vpc_security_group_ingress_rule" "rotation_to_database" {
|
|
|
1292
1323
|
resource "aws_cloudformation_stack" "credentials_rotation" {
|
|
1293
1324
|
#checkov:skip=CKV_AWS_124:SNS event notifications are not required for the credentials rotation stack
|
|
1294
1325
|
count = var.enable_credential_rotation ? 1 : 0
|
|
1295
|
-
name = "\${
|
|
1326
|
+
name = "\${local.cluster_name}-credentials-rotation"
|
|
1296
1327
|
|
|
1297
1328
|
capabilities = ["CAPABILITY_IAM", "CAPABILITY_AUTO_EXPAND"]
|
|
1298
1329
|
|
|
@@ -1306,7 +1337,7 @@ resource "aws_cloudformation_stack" "credentials_rotation" {
|
|
|
1306
1337
|
SecretId = aws_secretsmanager_secret.credentials.arn
|
|
1307
1338
|
HostedRotationLambda = {
|
|
1308
1339
|
RotationType = var.engine == "aurora-mysql" ? "MySQLSingleUser" : "PostgreSQLSingleUser"
|
|
1309
|
-
RotationLambdaName = "\${
|
|
1340
|
+
RotationLambdaName = "\${local.cluster_name}-credentials-rotation"
|
|
1310
1341
|
VpcSecurityGroupIds = aws_security_group.rotation[0].id
|
|
1311
1342
|
VpcSubnetIds = join(",", var.lambda_subnet_ids)
|
|
1312
1343
|
}
|
|
@@ -1386,7 +1417,7 @@ resource "aws_security_group" "proxy" {
|
|
|
1386
1417
|
resource "aws_db_proxy" "aurora" {
|
|
1387
1418
|
count = var.enable_rds_proxy ? 1 : 0
|
|
1388
1419
|
|
|
1389
|
-
name = "\${var.name}-proxy"
|
|
1420
|
+
name = "\${var.name}-proxy-\${random_string.suffix.result}"
|
|
1390
1421
|
default_auth_scheme = "IAM_AUTH"
|
|
1391
1422
|
engine_family = var.engine == "aurora-mysql" ? "MYSQL" : "POSTGRESQL"
|
|
1392
1423
|
role_arn = aws_iam_role.proxy[0].arn
|
|
@@ -1532,7 +1563,7 @@ resource "aws_iam_role_policy_attachment" "backup" {
|
|
|
1532
1563
|
resource "aws_backup_vault" "database" {
|
|
1533
1564
|
count = var.enable_backup ? 1 : 0
|
|
1534
1565
|
|
|
1535
|
-
name = "\${
|
|
1566
|
+
name = "\${local.cluster_name}-backup"
|
|
1536
1567
|
kms_key_arn = aws_kms_key.database.arn
|
|
1537
1568
|
tags = var.tags
|
|
1538
1569
|
}
|
|
@@ -1540,7 +1571,7 @@ resource "aws_backup_vault" "database" {
|
|
|
1540
1571
|
resource "aws_backup_plan" "database" {
|
|
1541
1572
|
count = var.enable_backup ? 1 : 0
|
|
1542
1573
|
|
|
1543
|
-
name = "\${
|
|
1574
|
+
name = "\${local.cluster_name}-backup"
|
|
1544
1575
|
|
|
1545
1576
|
rule {
|
|
1546
1577
|
rule_name = "daily-backup"
|
|
@@ -1647,7 +1678,7 @@ output "admin_user" {
|
|
|
1647
1678
|
"
|
|
1648
1679
|
`;
|
|
1649
1680
|
|
|
1650
|
-
exports[`ts#rdb generator > should generate terraform modules when
|
|
1681
|
+
exports[`ts#rdb generator > should generate terraform modules when iac is Terraform 2`] = `
|
|
1651
1682
|
"terraform {
|
|
1652
1683
|
required_version = ">= 1.0"
|
|
1653
1684
|
|
|
@@ -2513,10 +2544,19 @@ variable "tags" {
|
|
|
2513
2544
|
default = {}
|
|
2514
2545
|
}
|
|
2515
2546
|
|
|
2547
|
+
# Suffix appended to physical resource names so that multiple deployments
|
|
2548
|
+
# (e.g. separate environments in the same account and region) don't collide.
|
|
2549
|
+
resource "random_string" "suffix" {
|
|
2550
|
+
length = 8
|
|
2551
|
+
special = false
|
|
2552
|
+
upper = false
|
|
2553
|
+
}
|
|
2554
|
+
|
|
2516
2555
|
locals {
|
|
2517
2556
|
default_port = var.engine == "aurora-mysql" ? 3306 : 5432
|
|
2518
2557
|
default_engine_version = var.engine == "aurora-mysql" ? "8.0.mysql_aurora.3.12.0" : "17.7"
|
|
2519
2558
|
parameter_group_family = var.engine == "aurora-mysql" ? "aurora-mysql8.0" : "aurora-postgresql\${split(".", coalesce(var.engine_version, local.default_engine_version))[0]}"
|
|
2559
|
+
cluster_name = "\${var.name}-aurora-\${random_string.suffix.result}"
|
|
2520
2560
|
}
|
|
2521
2561
|
|
|
2522
2562
|
resource "aws_rds_cluster_parameter_group" "database" {
|
|
@@ -2614,7 +2654,7 @@ resource "aws_security_group" "database" {
|
|
|
2614
2654
|
}
|
|
2615
2655
|
|
|
2616
2656
|
resource "aws_db_subnet_group" "database" {
|
|
2617
|
-
name =
|
|
2657
|
+
name = local.cluster_name
|
|
2618
2658
|
subnet_ids = var.subnet_ids
|
|
2619
2659
|
|
|
2620
2660
|
tags = merge(var.tags, {
|
|
@@ -2654,7 +2694,7 @@ resource "aws_secretsmanager_secret_version" "credentials" {
|
|
|
2654
2694
|
resource "aws_rds_cluster" "database" {
|
|
2655
2695
|
#checkov:skip=CKV2_AWS_27:Query logging can be enabled with enable_cloudwatch_logs; this module defaults to CDK-equivalent behavior unless logging is requested
|
|
2656
2696
|
#checkov:skip=CKV_AWS_139:Deletion protection is enabled but checkov is unable to detect it correctly
|
|
2657
|
-
cluster_identifier =
|
|
2697
|
+
cluster_identifier = local.cluster_name
|
|
2658
2698
|
engine = var.engine
|
|
2659
2699
|
engine_version = coalesce(var.engine_version, local.default_engine_version)
|
|
2660
2700
|
database_name = var.database_name
|
|
@@ -2668,7 +2708,7 @@ resource "aws_rds_cluster" "database" {
|
|
|
2668
2708
|
kms_key_id = aws_kms_key.database.arn
|
|
2669
2709
|
deletion_protection = var.deletion_protection
|
|
2670
2710
|
skip_final_snapshot = var.skip_final_snapshot
|
|
2671
|
-
final_snapshot_identifier = var.skip_final_snapshot ? null : "\${
|
|
2711
|
+
final_snapshot_identifier = var.skip_final_snapshot ? null : "\${local.cluster_name}-final-snapshot"
|
|
2672
2712
|
iam_database_authentication_enabled = true
|
|
2673
2713
|
monitoring_interval = 5
|
|
2674
2714
|
monitoring_role_arn = aws_iam_role.enhanced_monitoring.arn
|
|
@@ -2688,7 +2728,7 @@ resource "aws_rds_cluster" "database" {
|
|
|
2688
2728
|
resource "aws_rds_cluster_instance" "database" {
|
|
2689
2729
|
count = var.instance_count
|
|
2690
2730
|
|
|
2691
|
-
identifier = "\${
|
|
2731
|
+
identifier = "\${local.cluster_name}-\${count.index + 1}"
|
|
2692
2732
|
cluster_identifier = aws_rds_cluster.database.id
|
|
2693
2733
|
instance_class = "db.serverless"
|
|
2694
2734
|
engine = aws_rds_cluster.database.engine
|
|
@@ -2742,7 +2782,7 @@ resource "aws_vpc_security_group_ingress_rule" "rotation_to_database" {
|
|
|
2742
2782
|
resource "aws_cloudformation_stack" "credentials_rotation" {
|
|
2743
2783
|
#checkov:skip=CKV_AWS_124:SNS event notifications are not required for the credentials rotation stack
|
|
2744
2784
|
count = var.enable_credential_rotation ? 1 : 0
|
|
2745
|
-
name = "\${
|
|
2785
|
+
name = "\${local.cluster_name}-credentials-rotation"
|
|
2746
2786
|
|
|
2747
2787
|
capabilities = ["CAPABILITY_IAM", "CAPABILITY_AUTO_EXPAND"]
|
|
2748
2788
|
|
|
@@ -2756,7 +2796,7 @@ resource "aws_cloudformation_stack" "credentials_rotation" {
|
|
|
2756
2796
|
SecretId = aws_secretsmanager_secret.credentials.arn
|
|
2757
2797
|
HostedRotationLambda = {
|
|
2758
2798
|
RotationType = var.engine == "aurora-mysql" ? "MySQLSingleUser" : "PostgreSQLSingleUser"
|
|
2759
|
-
RotationLambdaName = "\${
|
|
2799
|
+
RotationLambdaName = "\${local.cluster_name}-credentials-rotation"
|
|
2760
2800
|
VpcSecurityGroupIds = aws_security_group.rotation[0].id
|
|
2761
2801
|
VpcSubnetIds = join(",", var.lambda_subnet_ids)
|
|
2762
2802
|
}
|
|
@@ -2836,7 +2876,7 @@ resource "aws_security_group" "proxy" {
|
|
|
2836
2876
|
resource "aws_db_proxy" "aurora" {
|
|
2837
2877
|
count = var.enable_rds_proxy ? 1 : 0
|
|
2838
2878
|
|
|
2839
|
-
name = "\${var.name}-proxy"
|
|
2879
|
+
name = "\${var.name}-proxy-\${random_string.suffix.result}"
|
|
2840
2880
|
default_auth_scheme = "IAM_AUTH"
|
|
2841
2881
|
engine_family = var.engine == "aurora-mysql" ? "MYSQL" : "POSTGRESQL"
|
|
2842
2882
|
role_arn = aws_iam_role.proxy[0].arn
|
|
@@ -2982,7 +3022,7 @@ resource "aws_iam_role_policy_attachment" "backup" {
|
|
|
2982
3022
|
resource "aws_backup_vault" "database" {
|
|
2983
3023
|
count = var.enable_backup ? 1 : 0
|
|
2984
3024
|
|
|
2985
|
-
name = "\${
|
|
3025
|
+
name = "\${local.cluster_name}-backup"
|
|
2986
3026
|
kms_key_arn = aws_kms_key.database.arn
|
|
2987
3027
|
tags = var.tags
|
|
2988
3028
|
}
|
|
@@ -2990,7 +3030,7 @@ resource "aws_backup_vault" "database" {
|
|
|
2990
3030
|
resource "aws_backup_plan" "database" {
|
|
2991
3031
|
count = var.enable_backup ? 1 : 0
|
|
2992
3032
|
|
|
2993
|
-
name = "\${
|
|
3033
|
+
name = "\${local.cluster_name}-backup"
|
|
2994
3034
|
|
|
2995
3035
|
rule {
|
|
2996
3036
|
rule_name = "daily-backup"
|
|
@@ -3824,7 +3864,7 @@ datasource db {
|
|
|
3824
3864
|
"
|
|
3825
3865
|
`;
|
|
3826
3866
|
|
|
3827
|
-
exports[`ts#rdb generator > should generate the aurora shared construct > packages/db/scripts/
|
|
3867
|
+
exports[`ts#rdb generator > should generate the aurora shared construct > packages/db/scripts/pull-image.ts 1`] = `
|
|
3828
3868
|
"import { spawnSync } from 'child_process';
|
|
3829
3869
|
|
|
3830
3870
|
const ENGINE = 'docker';
|
|
@@ -3843,7 +3883,7 @@ if (inspect.status !== 0) {
|
|
|
3843
3883
|
"
|
|
3844
3884
|
`;
|
|
3845
3885
|
|
|
3846
|
-
exports[`ts#rdb generator > should generate the aurora shared construct > packages/db/scripts/
|
|
3886
|
+
exports[`ts#rdb generator > should generate the aurora shared construct > packages/db/scripts/start-container.ts 1`] = `
|
|
3847
3887
|
"import { spawn, spawnSync } from 'child_process';
|
|
3848
3888
|
|
|
3849
3889
|
const ENGINE = 'docker';
|
|
@@ -3873,25 +3913,16 @@ if (containerExists()) {
|
|
|
3873
3913
|
if (start.status !== 0) process.exit(start.status ?? 1);
|
|
3874
3914
|
}
|
|
3875
3915
|
} else {
|
|
3876
|
-
const runArgs =
|
|
3877
|
-
|
|
3878
|
-
|
|
3879
|
-
|
|
3880
|
-
|
|
3881
|
-
\`
|
|
3882
|
-
|
|
3883
|
-
\`
|
|
3884
|
-
|
|
3885
|
-
|
|
3886
|
-
'-e',
|
|
3887
|
-
\`PGDATA=/var/lib/postgresql/17/docker\`,
|
|
3888
|
-
'-p',
|
|
3889
|
-
\`\${hostPort}:5432\`,
|
|
3890
|
-
'-v',
|
|
3891
|
-
\`\${containerName}-data:/var/lib/postgresql\`,
|
|
3892
|
-
'-d',
|
|
3893
|
-
image,
|
|
3894
|
-
];
|
|
3916
|
+
const runArgs = (
|
|
3917
|
+
\`run --rm --name \${containerName}\` +
|
|
3918
|
+
\` -e POSTGRES_DB=\${dbName}\` +
|
|
3919
|
+
\` -e POSTGRES_USER=\${dbUser}\` +
|
|
3920
|
+
\` -e POSTGRES_PASSWORD=\${dbPassword}\` +
|
|
3921
|
+
\` -e PGDATA=/var/lib/postgresql/17/docker\` +
|
|
3922
|
+
\` -p \${hostPort}:5432\` +
|
|
3923
|
+
\` -v \${containerName}-data:/var/lib/postgresql\` +
|
|
3924
|
+
\` -d \${image}\`
|
|
3925
|
+
).split(' ');
|
|
3895
3926
|
const create = spawnSync(ENGINE, runArgs, { stdio: 'inherit' });
|
|
3896
3927
|
if (create.status !== 0) process.exit(create.status ?? 1);
|
|
3897
3928
|
}
|
|
@@ -4508,6 +4539,21 @@ export interface AuroraDatabaseProps extends _AuroraDatabaseProps {
|
|
|
4508
4539
|
* @default true
|
|
4509
4540
|
*/
|
|
4510
4541
|
readonly enableKeyRotation?: boolean;
|
|
4542
|
+
|
|
4543
|
+
/**
|
|
4544
|
+
* Whether to export Aurora engine logs to CloudWatch Logs.
|
|
4545
|
+
* See https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.html
|
|
4546
|
+
*
|
|
4547
|
+
* @default false
|
|
4548
|
+
*/
|
|
4549
|
+
readonly enableCloudwatchLogs?: boolean;
|
|
4550
|
+
|
|
4551
|
+
/**
|
|
4552
|
+
* Whether to enable Performance Insights on the Aurora writer instance.
|
|
4553
|
+
*
|
|
4554
|
+
* @default true
|
|
4555
|
+
*/
|
|
4556
|
+
readonly enablePerformanceInsights?: boolean;
|
|
4511
4557
|
}
|
|
4512
4558
|
|
|
4513
4559
|
/**
|
|
@@ -4537,6 +4583,8 @@ export abstract class AuroraDatabase extends Construct {
|
|
|
4537
4583
|
deletionProtection = true,
|
|
4538
4584
|
removalPolicy = RemovalPolicy.RETAIN,
|
|
4539
4585
|
enableKeyRotation = true,
|
|
4586
|
+
enableCloudwatchLogs = false,
|
|
4587
|
+
enablePerformanceInsights = true,
|
|
4540
4588
|
engine,
|
|
4541
4589
|
engineVersion,
|
|
4542
4590
|
...clusterProps
|
|
@@ -4552,12 +4600,24 @@ export abstract class AuroraDatabase extends Construct {
|
|
|
4552
4600
|
vpc,
|
|
4553
4601
|
vpcSubnets,
|
|
4554
4602
|
engine: engine.clusterEngine(engineVersion ?? engine.defaultVersion),
|
|
4555
|
-
writer:
|
|
4603
|
+
writer:
|
|
4604
|
+
writer ??
|
|
4605
|
+
ClusterInstance.serverlessV2('writer', {
|
|
4606
|
+
enablePerformanceInsights,
|
|
4607
|
+
performanceInsightEncryptionKey: enablePerformanceInsights
|
|
4608
|
+
? key
|
|
4609
|
+
: undefined,
|
|
4610
|
+
}),
|
|
4556
4611
|
credentials: Credentials.fromGeneratedSecret(adminUser, {
|
|
4557
4612
|
encryptionKey: key,
|
|
4558
4613
|
}),
|
|
4559
4614
|
iamAuthentication: true,
|
|
4560
4615
|
monitoringInterval: Duration.seconds(5),
|
|
4616
|
+
cloudwatchLogsExports: enableCloudwatchLogs
|
|
4617
|
+
? engine.type === 'mysql'
|
|
4618
|
+
? ['audit', 'error', 'general', 'slowquery']
|
|
4619
|
+
: ['postgresql']
|
|
4620
|
+
: undefined,
|
|
4561
4621
|
defaultDatabaseName: databaseName,
|
|
4562
4622
|
storageEncrypted: true,
|
|
4563
4623
|
storageEncryptionKey: key,
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
|
-
import { Tree } from '@nx/devkit';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
5
|
+
import { type Tree } from '@nx/devkit';
|
|
6
|
+
import { type NxGeneratorInfo } from '../../../utils/nx';
|
|
7
|
+
import type { TsRdbAgentConnectionGeneratorSchema } from './schema';
|
|
8
8
|
export declare const TS_RDB_AGENT_CONNECTION_GENERATOR_INFO: NxGeneratorInfo;
|
|
9
9
|
export declare const tsRdbAgentConnectionGenerator: (tree: Tree, options: TsRdbAgentConnectionGeneratorSchema) => Promise<void>;
|
|
10
10
|
export default tsRdbAgentConnectionGenerator;
|
|
@@ -7,13 +7,13 @@ const tslib_1 = require("tslib");
|
|
|
7
7
|
* SPDX-License-Identifier: Apache-2.0
|
|
8
8
|
*/
|
|
9
9
|
const devkit_1 = require("@nx/devkit");
|
|
10
|
-
const
|
|
11
|
-
const
|
|
10
|
+
const lodash_camelcase_1 = tslib_1.__importDefault(require("lodash.camelcase"));
|
|
11
|
+
const ast_1 = require("../../../utils/ast");
|
|
12
12
|
const format_1 = require("../../../utils/format");
|
|
13
|
+
const metrics_1 = require("../../../utils/metrics");
|
|
13
14
|
const names_1 = require("../../../utils/names");
|
|
14
|
-
const lodash_camelcase_1 = tslib_1.__importDefault(require("lodash.camelcase"));
|
|
15
15
|
const npm_scope_1 = require("../../../utils/npm-scope");
|
|
16
|
-
const
|
|
16
|
+
const nx_1 = require("../../../utils/nx");
|
|
17
17
|
const utils_1 = require("../utils");
|
|
18
18
|
exports.TS_RDB_AGENT_CONNECTION_GENERATOR_INFO = (0, nx_1.getGeneratorInfo)(__filename);
|
|
19
19
|
const tsRdbAgentConnectionGenerator = async (tree, options) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/ts/rdb/agent-connection/generator.ts"],"names":[],"mappings":";;;;AAAA;;;GAGG;AACH,uCAIoB;
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/ts/rdb/agent-connection/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ const getDatabaseUrl = async () => {
|
|
|
4
4
|
if (process.env.SERVE_LOCAL === 'true') {
|
|
5
5
|
const { LOCAL_DB_HOST, LOCAL_DB_NAME, LOCAL_DB_PASSWORD, LOCAL_DB_PORT, LOCAL_DB_USER } =
|
|
6
6
|
await import('./src/constants.js');
|
|
7
|
-
<%_ if (engine === '
|
|
7
|
+
<%_ if (engine === 'mysql') { _%>
|
|
8
8
|
return `mysql://${LOCAL_DB_USER}:${LOCAL_DB_PASSWORD}@${LOCAL_DB_HOST}:${LOCAL_DB_PORT}/${LOCAL_DB_NAME}`;
|
|
9
9
|
<%_ } else { _%>
|
|
10
10
|
return `postgresql://${LOCAL_DB_USER}:${LOCAL_DB_PASSWORD}@${LOCAL_DB_HOST}:${LOCAL_DB_PORT}/${LOCAL_DB_NAME}`;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { spawnSync } from 'child_process';
|
|
2
|
+
|
|
3
|
+
const ENGINE = '<%= containerEngine %>';
|
|
4
|
+
const image = process.argv[2];
|
|
5
|
+
|
|
6
|
+
const inspect = spawnSync(ENGINE, ['image', 'inspect', image], {
|
|
7
|
+
stdio: 'ignore',
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
if (inspect.status !== 0) {
|
|
11
|
+
const pull = spawnSync(ENGINE, ['pull', image], { stdio: 'inherit' });
|
|
12
|
+
if (pull.status !== 0) {
|
|
13
|
+
process.exit(pull.status ?? 1);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -2,7 +2,7 @@ import { spawn, spawnSync } from 'child_process';
|
|
|
2
2
|
|
|
3
3
|
const ENGINE = '<%= containerEngine %>';
|
|
4
4
|
|
|
5
|
-
<%_ if (engine === '
|
|
5
|
+
<%_ if (engine === 'mysql') { _%>
|
|
6
6
|
const [containerName, image, hostPort, dbName, dbPassword] =
|
|
7
7
|
process.argv.slice(2);
|
|
8
8
|
<%_ } else { _%>
|
|
@@ -32,30 +32,26 @@ if (containerExists()) {
|
|
|
32
32
|
if (start.status !== 0) process.exit(start.status ?? 1);
|
|
33
33
|
}
|
|
34
34
|
} else {
|
|
35
|
-
<%_ if (engine === '
|
|
36
|
-
const runArgs =
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
image,
|
|
45
|
-
];
|
|
35
|
+
<%_ if (engine === 'mysql') { _%>
|
|
36
|
+
const runArgs = (
|
|
37
|
+
`run <%- containerEngine === 'docker' ? '--rm ' : '' %>--name ${containerName}` +
|
|
38
|
+
` -e MYSQL_DATABASE=${dbName}` +
|
|
39
|
+
` -e MYSQL_ROOT_PASSWORD=${dbPassword}` +
|
|
40
|
+
` -p ${hostPort}:3306` +
|
|
41
|
+
` -v ${containerName}-data:/var/lib/mysql` +
|
|
42
|
+
` -d ${image}`
|
|
43
|
+
).split(' ');
|
|
46
44
|
<%_ } else { _%>
|
|
47
|
-
const runArgs =
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
image,
|
|
58
|
-
];
|
|
45
|
+
const runArgs = (
|
|
46
|
+
`run <%- containerEngine === 'docker' ? '--rm ' : '' %>--name ${containerName}` +
|
|
47
|
+
` -e POSTGRES_DB=${dbName}` +
|
|
48
|
+
` -e POSTGRES_USER=${dbUser}` +
|
|
49
|
+
` -e POSTGRES_PASSWORD=${dbPassword}` +
|
|
50
|
+
` -e PGDATA=/var/lib/postgresql/17/docker` +
|
|
51
|
+
` -p ${hostPort}:5432` +
|
|
52
|
+
` -v ${containerName}-data:/var/lib/postgresql` +
|
|
53
|
+
` -d ${image}`
|
|
54
|
+
).split(' ');
|
|
59
55
|
<%_ } _%>
|
|
60
56
|
const create = spawnSync(ENGINE, runArgs, { stdio: 'inherit' });
|
|
61
57
|
if (create.status !== 0) process.exit(create.status ?? 1);
|
|
@@ -70,7 +66,11 @@ let exiting = false;
|
|
|
70
66
|
const cleanup = () => {
|
|
71
67
|
if (exiting) return;
|
|
72
68
|
exiting = true;
|
|
69
|
+
<%_ if (containerEngine === 'docker') { _%>
|
|
73
70
|
spawnSync(ENGINE, ['stop', containerName], { stdio: 'ignore' });
|
|
71
|
+
<%_ } else { _%>
|
|
72
|
+
spawnSync(ENGINE, ['rm', '-f', containerName], { stdio: 'ignore' });
|
|
73
|
+
<%_ } _%>
|
|
74
74
|
logs.kill();
|
|
75
75
|
process.exit(0);
|
|
76
76
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<%_ if (engine === '
|
|
1
|
+
<%_ if (engine === 'mysql') { _%>
|
|
2
2
|
import { createConnection, Connection } from 'mariadb';
|
|
3
3
|
<%_ } else { _%>
|
|
4
4
|
import { Client } from 'pg';
|
|
@@ -10,7 +10,7 @@ const [portArg, dbArg, userArg, passwordArg] = process.argv.slice(2);
|
|
|
10
10
|
const timeoutAt = Date.now() + 60000;
|
|
11
11
|
|
|
12
12
|
while (Date.now() < timeoutAt) {
|
|
13
|
-
<%_ if (engine === '
|
|
13
|
+
<%_ if (engine === 'mysql') { _%>
|
|
14
14
|
let conn: Connection | undefined;
|
|
15
15
|
try {
|
|
16
16
|
conn = await createConnection({
|
|
@@ -52,4 +52,4 @@ while (Date.now() < timeoutAt) {
|
|
|
52
52
|
await new Promise((r) => setTimeout(r, 200));
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
throw new Error(`Timed out waiting for <%= engine === '
|
|
55
|
+
throw new Error(`Timed out waiting for <%= engine === 'mysql' ? 'mysql' : 'postgres' %> on port ${portArg}`);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CloudFormationCustomResourceEvent } from 'aws-lambda';
|
|
2
2
|
import { randomBytes } from 'node:crypto';
|
|
3
|
-
<%_ if (engine === '
|
|
3
|
+
<%_ if (engine === 'mysql') { _%>
|
|
4
4
|
import { createPool, type PoolConnection } from 'mariadb';
|
|
5
5
|
import { getDatabaseSecret, withConnectionRetry } from './utils.js';
|
|
6
6
|
<%_ } else { _%>
|
|
@@ -21,7 +21,7 @@ const resolveDbUser = (physicalResourceId?: string): string =>
|
|
|
21
21
|
: `db_${randomBytes(8).toString('hex')}`;
|
|
22
22
|
|
|
23
23
|
const ensureDatabaseUser = async (dbUser: string): Promise<void> => {
|
|
24
|
-
<%_ if (engine === '
|
|
24
|
+
<%_ if (engine === 'mysql') { _%>
|
|
25
25
|
const { dbname, username, password, host, port } = await getDatabaseSecret();
|
|
26
26
|
const pool = createPool({
|
|
27
27
|
host,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { execFile } from 'node:child_process';
|
|
2
2
|
import { promisify } from 'node:util';
|
|
3
|
-
<%_ if (engine === '
|
|
3
|
+
<%_ if (engine === 'mysql') { _%>
|
|
4
4
|
import { getDatabaseSecret, withConnectionRetry } from './utils.js';
|
|
5
5
|
<%_ } else { _%>
|
|
6
6
|
import { Signer } from '@aws-sdk/rds-signer';
|
|
@@ -8,7 +8,7 @@ import { withConnectionRetry } from './utils.js';
|
|
|
8
8
|
<%_ } _%>
|
|
9
9
|
|
|
10
10
|
const buildDatabaseUrl = async (): Promise<string> => {
|
|
11
|
-
<%_ if (engine === '
|
|
11
|
+
<%_ if (engine === 'mysql') { _%>
|
|
12
12
|
const { host, port, dbname, username, password } = await getDatabaseSecret();
|
|
13
13
|
|
|
14
14
|
return (
|