declapract-typescript-ehmpathy 0.49.14 → 0.50.0
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/dist/.test/assets/cicd-common/declarations/declapract.declare.yml +8 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/.declapract.integration.test.ts +597 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/.test/assets/repo-with-unpinned-workflow/.github/workflows/.test.yml +19 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/.test/assets/repo-with-unpinned-workflow/.github/workflows/consumer-owned.yml +21 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/.test/assets/repo-with-unpinned-workflow/.github/workflows/review.yml +26 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/.test/assets/repo-with-unpinned-workflow/declapract.use.yml +6 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/.test/assets/repo-with-unpinned-workflow/package.json +4 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/__snapshots__/.declapract.integration.test.ts.snap +604 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/__snapshots__/declastruct-insync-grep.declapract.integration.test.ts.snap +3 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/__snapshots__/report-slow-tests.play.declapract.integration.test.ts.snap +28 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/bad-practices/has-changelog-file/changelog.md.declapract.ts +11 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/bad-practices/old-names/.github/workflows/ci-on-commit.yml.declapract.ts +3 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/bad-practices/old-names/.github/workflows/ci_on_commit.yml.declapract.ts +3 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/bad-practices/old-names/.github/workflows/pr-release-on-main.yml.declapract.ts +3 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/bad-practices/old-names/.github/workflows/test-on-commit.yml.declapract.ts +3 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/bad-practices/old-names/.github/workflows/test_on_commit.yml.declapract.ts +3 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/bad-practices/old-use-apikeys/.agent/repo=.this/role=any/skills/use.apikeys.json.declapract.ts +7 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/bad-practices/old-use-apikeys/.agent/repo=.this/role=any/skills/use.apikeys.sh.declapract.ts +7 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/best-practice/.declapract.readme.md +8 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/best-practice/.github/actions/please-release/action.yml +469 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/best-practice/.github/actions/test-shards-setup/action.yml +68 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/best-practice/.github/workflows/.declastruct.yml +218 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/best-practice/.github/workflows/.install.yml +56 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/best-practice/.github/workflows/.test.yml +434 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/best-practice/.github/workflows/.test.yml.declapract.ts +26 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/best-practice/.github/workflows/release.yml +32 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/best-practice/.github/workflows/report-slow-tests.sh +65 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/best-practice/.github/workflows/review.yml +26 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/best-practice/.github/workflows/test.yml +25 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/best-practice/.github/workflows/test.yml.declapract.ts +15 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/declastruct-insync-grep.declapract.integration.test.ts +49 -0
- package/dist/.test/assets/cicd-common/declarations/practices/cicd-common/report-slow-tests.play.declapract.integration.test.ts +161 -0
- package/dist/.test/assets/cicd-common/declarations/useCases.yml +11 -0
- package/dist/.test/assets/cicd-service/declarations/practices/persist-with-rds/.test/assets/repo-with-hand-patch/declapract.use.yml +4 -0
- package/dist/.test/assets/cicd-service/declarations/practices/persist-with-rds/.test/assets/repo-with-hand-patch/package.json +17 -0
- package/dist/.test/assets/cicd-service/declarations/practices/persist-with-rds/.test/assets/repo-with-hand-patch/patches/left-pad@1.3.0.patch +6 -0
- package/dist/.test/assets/cicd-service/declarations/practices/persist-with-rds/.test/assets/repo-with-hand-patch/patches/pg-pool@3.14.0.patch +12 -0
- package/dist/.test/assets/cicd-service/declarations/practices/persist-with-rds/__snapshots__/pg-pool-patch.declapract.integration.test.ts.snap +147 -0
- package/dist/.test/assets/cicd-service/declarations/practices/persist-with-rds/best-practice/.declapract.readme.md +29 -0
- package/dist/.test/assets/cicd-service/declarations/practices/persist-with-rds/best-practice/.gitattributes.declapract.ts +64 -0
- package/dist/.test/assets/cicd-service/declarations/practices/persist-with-rds/best-practice/package.json +5 -0
- package/dist/.test/assets/cicd-service/declarations/practices/persist-with-rds/best-practice/patches/pg-pool.patch +21 -0
- package/dist/.test/assets/cicd-service/declarations/practices/persist-with-rds/pg-pool-patch.declapract.integration.test.ts +884 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/.declapract.integration.test.ts +15 -21
- package/dist/.test/assets/expo-fullusecase/declarations/practices/git/.declapract.integration.test.ts +2 -2
- package/dist/.test/assets/expo-fullusecase/declarations/practices/git/.gitattributes.declapract.integration.test.ts +34 -19
- package/dist/.test/assets/expo-fullusecase/declarations/practices/git/.test/assets/repo-with-legacy-gitattributes/declapract.use.yml +3 -3
- package/dist/.test/assets/expo-fullusecase/declarations/practices/git/__snapshots__/.gitattributes.declapract.integration.test.ts.snap +4 -4
- package/dist/.test/assets/expo-fullusecase/declarations/practices/git/best-practice/.declapract.readme.md +37 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/git/best-practice/.gitattributes.declapract.ts +42 -63
- package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/.test/assets/repo-stale-patch-beside-bare/declapract.use.yml +4 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/.test/assets/repo-stale-patch-beside-bare/package.json +15 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/.test/assets/repo-stale-patch-beside-bare/patches/rhachet-roles-ehmpathy.patch +6 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/.test/assets/repo-stale-patch-beside-bare/patches/rhachet-roles-ehmpathy@1.39.1.patch +6 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/.test/assets/repo-stale-patch-beside-bare/patches/type-fns@1.21.3.patch +6 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/.test/assets/repo-stale-patch-beside-bare/pnpm-lock.yaml +19 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/__snapshots__/stale-patched-dependency.declapract.integration.test.ts.snap +39 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/stale-patched-dependency.declapract.integration.test.ts +53 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/rhachet/best-practice/.declapract.readme.md +8 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/rhachet/best-practice/.gitattributes.declapract.ts +65 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-any/best-practice/.declapract.readme.md +7 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-any/best-practice/.gitattributes.declapract.ts +60 -0
- package/dist/.test/assets/expo-migration/declarations/practices/git/.declapract.integration.test.ts +2 -2
- package/dist/.test/assets/expo-migration/declarations/practices/git/.gitattributes.declapract.integration.test.ts +34 -19
- package/dist/.test/assets/expo-migration/declarations/practices/git/.test/assets/repo-with-legacy-gitattributes/declapract.use.yml +3 -3
- package/dist/.test/assets/expo-migration/declarations/practices/git/__snapshots__/.gitattributes.declapract.integration.test.ts.snap +4 -4
- package/dist/.test/assets/expo-migration/declarations/practices/git/best-practice/.declapract.readme.md +37 -0
- package/dist/.test/assets/expo-migration/declarations/practices/git/best-practice/.gitattributes.declapract.ts +42 -63
- package/dist/.test/assets/expo-migration/declarations/practices/pnpm/.test/assets/repo-stale-patch-beside-bare/declapract.use.yml +4 -0
- package/dist/.test/assets/expo-migration/declarations/practices/pnpm/.test/assets/repo-stale-patch-beside-bare/package.json +15 -0
- package/dist/.test/assets/expo-migration/declarations/practices/pnpm/.test/assets/repo-stale-patch-beside-bare/patches/rhachet-roles-ehmpathy.patch +6 -0
- package/dist/.test/assets/expo-migration/declarations/practices/pnpm/.test/assets/repo-stale-patch-beside-bare/patches/rhachet-roles-ehmpathy@1.39.1.patch +6 -0
- package/dist/.test/assets/expo-migration/declarations/practices/pnpm/.test/assets/repo-stale-patch-beside-bare/patches/type-fns@1.21.3.patch +6 -0
- package/dist/.test/assets/expo-migration/declarations/practices/pnpm/.test/assets/repo-stale-patch-beside-bare/pnpm-lock.yaml +19 -0
- package/dist/.test/assets/expo-migration/declarations/practices/pnpm/__snapshots__/stale-patched-dependency.declapract.integration.test.ts.snap +39 -0
- package/dist/.test/assets/expo-migration/declarations/practices/pnpm/stale-patched-dependency.declapract.integration.test.ts +53 -0
- package/dist/.test/assets/expo-migration/declarations/practices/rhachet/best-practice/.declapract.readme.md +8 -0
- package/dist/.test/assets/expo-migration/declarations/practices/rhachet/best-practice/.gitattributes.declapract.ts +65 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/best-practice/.declapract.readme.md +7 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/best-practice/.gitattributes.declapract.ts +60 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/best-practice/.declapract.readme.md +7 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/best-practice/.gitattributes.declapract.ts +60 -0
- package/dist/.test/assets/git/declarations/declapract.declare.yml +8 -0
- package/dist/.test/assets/git/declarations/practices/git/.declapract.integration.test.ts +1001 -0
- package/dist/.test/assets/git/declarations/practices/git/.gitattributes.declapract.integration.test.ts +120 -0
- package/dist/.test/assets/git/declarations/practices/git/.test/assets/repo-with-legacy-gitattributes/.gitattributes +6 -0
- package/dist/.test/assets/git/declarations/practices/git/.test/assets/repo-with-legacy-gitattributes/declapract.use.yml +7 -0
- package/dist/.test/assets/git/declarations/practices/git/.test/assets/repo-with-legacy-gitattributes/package.json +4 -0
- package/dist/.test/assets/git/declarations/practices/git/.test/assets/repo-with-rhachet-only/declapract.use.yml +6 -0
- package/dist/.test/assets/git/declarations/practices/git/.test/assets/repo-with-rhachet-only/package.json +4 -0
- package/dist/.test/assets/git/declarations/practices/git/.test/assets/repo-without-cache-ignores/declapract.use.yml +9 -0
- package/dist/.test/assets/git/declarations/practices/git/.test/assets/repo-without-cache-ignores/package.json +4 -0
- package/dist/.test/assets/git/declarations/practices/git/__snapshots__/.declapract.integration.test.ts.snap +55 -0
- package/dist/.test/assets/git/declarations/practices/git/__snapshots__/.gitattributes.declapract.integration.test.ts.snap +24 -0
- package/dist/.test/assets/git/declarations/practices/git/best-practice/.declapract.readme.md +60 -0
- package/dist/.test/assets/git/declarations/practices/git/best-practice/.gitattributes.declapract.ts +77 -0
- package/dist/.test/assets/git/declarations/practices/git/best-practice/.gitignore.declapract.ts +100 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-dynamodb/.declapract.integration.test.ts +181 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-dynamodb/.test/assets/demo-repo-with-dynamodb/declapract.declare.yml +4 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-dynamodb/.test/assets/demo-repo-with-dynamodb/declapract.use.yml +11 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-dynamodb/.test/assets/demo-repo-with-dynamodb/package.json +1 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-dynamodb/.test/assets/demo-repo-with-dynamodb/useCases.yml +8 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-dynamodb/__snapshots__/.declapract.integration.test.ts.snap +234 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-dynamodb/best-practice/.gitattributes.declapract.ts +56 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-dynamodb/best-practice/codegen.dynamodb.dao.ts +16 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-dynamodb/best-practice/package.json +16 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-dynamodb/best-practice/package.json.declapract.ts +3 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-dynamodb/best-practice/provision/docker/integration-test-db/docker-compose.yml +9 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/.declapract.integration.test.ts +237 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/.extensions.sql.declapract.integration.test.ts +159 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/.test/assets/demo-repo-config-schema/declapract.use.yml +20 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/.test/assets/demo-repo-config-schema/declarations/declapract.declare.yml +6 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/.test/assets/demo-repo-config-schema/package.json +4 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/.test/assets/demo-repo-on-a-prior-major/codegen.sql.dao.yml +20 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/.test/assets/demo-repo-on-a-prior-major/declapract.declare.yml +4 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/.test/assets/demo-repo-on-a-prior-major/declapract.use.yml +19 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/.test/assets/demo-repo-on-a-prior-major/package.json +4 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/.test/assets/demo-repo-on-a-prior-major/provision/docker/testdb/build-image.dockerfile +6 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/.test/assets/demo-repo-with-custom-extensions/declapract.declare.yml +4 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/.test/assets/demo-repo-with-custom-extensions/declapract.use.yml +21 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/.test/assets/demo-repo-with-custom-extensions/package.json +4 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/.test/assets/demo-repo-with-custom-extensions/provision/schema/sql/init/.extensions.sql +9 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/.test/assets/demo-repo-with-dev-config/config/dev.json +18 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/.test/assets/demo-repo-with-dev-config/declapract.declare.yml +4 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/.test/assets/demo-repo-with-dev-config/declapract.use.yml +18 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/.test/assets/demo-repo-with-dev-config/package.json +4 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/.test/assets/repo-with-hand-patch/declapract.use.yml +4 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/.test/assets/repo-with-hand-patch/package.json +17 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/.test/assets/repo-with-hand-patch/patches/left-pad@1.3.0.patch +6 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/.test/assets/repo-with-hand-patch/patches/pg-pool@3.14.0.patch +12 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/__snapshots__/.declapract.integration.test.ts.snap +45 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/__snapshots__/.extensions.sql.declapract.integration.test.ts.snap +77 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/__snapshots__/config-validates-schema.declapract.integration.test.ts.snap +500 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/__snapshots__/database-wrappers-typecheck.declapract.integration.test.ts.snap +10 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/__snapshots__/deploy-database-gerunds.declapract.integration.test.ts.snap +102 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/__snapshots__/engine-upgrade.declapract.integration.test.ts.snap +151 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/__snapshots__/pg-pool-patch.declapract.integration.test.ts.snap +147 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/__snapshots__/provision-testdb-access.declapract.integration.test.ts.snap +3 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/__snapshots__/ssm-param-names.declapract.integration.test.ts.snap +9 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/__snapshots__/testdb-preflight-failloud.declapract.integration.test.ts.snap +30 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/__snapshots__/with-connection-in-input.declapract.integration.test.ts.snap +57 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/legacy-change-id/.declapract.integration.test.ts +71 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/legacy-change-id/.declapract.readme.md +6 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/legacy-change-id/.test/assets/demo-repo-with-legacy-change-id/declapract.declare.yml +4 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/legacy-change-id/.test/assets/demo-repo-with-legacy-change-id/declapract.use.yml +19 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/legacy-change-id/.test/assets/demo-repo-with-legacy-change-id/package.json +4 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/legacy-change-id/.test/assets/demo-repo-with-legacy-change-id/provision/schema/sql/init.yml +15 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/legacy-change-id/__snapshots__/.declapract.integration.test.ts.snap +39 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/legacy-change-id/provision/schema/<star><star>/<star>.yml.declapract.ts +68 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/non-prefixed-manual-init-sqls/.declapract.readme.md +5 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/non-prefixed-manual-init-sqls/provision/schema/sql/init/database.sql.declapract.ts +3 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/non-prefixed-manual-init-sqls/provision/schema/sql/init/extensions.sql.declapract.ts +13 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/non-prefixed-manual-init-sqls/provision/schema/sql/init/schema.sql.declapract.ts +3 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/non-prefixed-manual-init-sqls/provision/schema/sql/init/user.cicd.sql.declapract.ts +3 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/non-prefixed-manual-init-sqls/provision/schema/sql/init/user.datalakedb.sql.declapract.ts +3 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-config-file-names/codegen.sql.yml.declapract.ts +3 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-dev-config-location/config/dev.json.declapract.ts +23 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-get-database-connection/.declapract.integration.test.ts +221 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-get-database-connection/.declapract.readme.md +11 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-get-database-connection/.test/assets/demo-repo-with-old-get-database-connection/declapract.declare.yml +4 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-get-database-connection/.test/assets/demo-repo-with-old-get-database-connection/declapract.use.yml +19 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-get-database-connection/.test/assets/demo-repo-with-old-get-database-connection/package.json +4 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-get-database-connection/.test/assets/demo-repo-with-old-get-database-connection/src/access/daos/daoSurfer.ts +15 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-get-database-connection/.test/assets/demo-repo-with-old-get-database-connection/src/domain.operations/getSurfLesson.ts +14 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-get-database-connection/.test/assets/demo-repo-with-old-get-database-connection/src/utils/database/getDatabaseConnection.integration.test.ts +10 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-get-database-connection/.test/assets/demo-repo-with-old-get-database-connection/src/utils/database/getDatabaseConnection.ts +68 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-get-database-connection/.test/assets/old-templates/getDatabaseConnection.3a193e5.ts +65 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-get-database-connection/.test/assets/old-templates/getDatabaseConnection.66284e3.ts +30 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-get-database-connection/.test/assets/old-templates/getDatabaseConnection.68cf8ba.ts +90 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-get-database-connection/.test/assets/old-templates/getDatabaseConnection.9e1bdc4.ts +65 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-get-database-connection/.test/assets/old-templates/getDatabaseConnection.c6cef7e.ts +68 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-get-database-connection/.test/assets/old-templates/getDatabaseConnection.c8eb35b.ts +90 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-get-database-connection/.test/assets/old-templates/getDatabaseConnection.d1e8cd7.ts +31 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-get-database-connection/.test/assets/old-templates/getDatabaseConnection.e0c53d8.ts +90 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-get-database-connection/.test/assets/old-templates/getDatabaseConnection.eab15c0.ts +89 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-get-database-connection/.test/assets/old-templates/getDatabaseConnection.ef25ae0.ts +32 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-get-database-connection/.test/assets/old-templates/getDatabaseConnection.integration.test.66284e3.ts +10 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-get-database-connection/__snapshots__/.declapract.integration.test.ts.snap +75 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-get-database-connection/src/<star><star>/<star>.ts.declapract.ts +33 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-get-database-connection/src/utils/database/getDatabaseConnection.integration.test.ts.declapract.ts +43 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-get-database-connection/src/utils/database/getDatabaseConnection.ts.declapract.ts +51 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-integration-test-db-dir/.declapract.readme.md +1 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-integration-test-db-dir/provision/docker/integration_test_db/<star><star>/<star>.declapract.ts +15 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-integration-test-db-hyphen-dir/.declapract.readme.md +1 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-integration-test-db-hyphen-dir/provision/docker/integration-test-db/<star><star>/<star>.declapract.ts +15 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-integration-test-db-paths/.declapract.readme.md +1 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-integration-test-db-paths/package.json +8 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-integration-test-db-paths/package.json.declapract.ts +10 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-packagejson-script-names/package.json +9 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-packagejson-script-names/package.json.declapract.ts +22 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/old-param-placeholder/config/<star>.json.declapract.ts +14 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/pg-client-without-ssl/.declapract.integration.test.ts +86 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/pg-client-without-ssl/.declapract.readme.md +9 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/pg-client-without-ssl/.test/assets/demo-repo-with-plaintext-pg-client/declapract.declare.yml +4 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/pg-client-without-ssl/.test/assets/demo-repo-with-plaintext-pg-client/declapract.use.yml +19 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/pg-client-without-ssl/.test/assets/demo-repo-with-plaintext-pg-client/package.json +4 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/pg-client-without-ssl/.test/assets/demo-repo-with-plaintext-pg-client/src/access/sdks/sdkWaveArchive.ts +7 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/pg-client-without-ssl/.test/assets/demo-repo-with-plaintext-pg-client/src/utils/database/getSurfReportConnection.ts +19 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/pg-client-without-ssl/__snapshots__/.declapract.integration.test.ts.snap +72 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/pg-client-without-ssl/src/<star><star>/<star>.ts.declapract.ts +32 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/schema-entities-dir/.declapract.readme.md +1 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/schema-entities-dir/provision/schema/entities/<star>.ts.declapract.ts +12 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/schema-entities-dir/provision/schema/sql/entities.yml.declapract.ts +13 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/terraform-parameters/.declapract.integration.test.ts +95 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/terraform-parameters/.test/assets/demo-repo-with-terraform-ssm/declapract.declare.yml +4 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/terraform-parameters/.test/assets/demo-repo-with-terraform-ssm/declapract.use.yml +18 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/terraform-parameters/.test/assets/demo-repo-with-terraform-ssm/package.json +4 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/terraform-parameters/.test/assets/demo-repo-with-terraform-ssm/provision/aws/product/parameter-store.tf +32 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/terraform-parameters/__snapshots__/.declapract.integration.test.ts.snap +60 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/terraform-parameters/provision/aws/product/parameter-store.tf.declapract.ts +94 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/with-connection-in-input/.declapract.readme.md +10 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/with-connection-in-input/.test/assets/demo-repo-with-connection-in-input/declapract.use.yml +2 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/with-connection-in-input/.test/assets/demo-repo-with-connection-in-input/package.json +4 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/with-connection-in-input/.test/assets/demo-repo-with-connection-in-input/src/domain.operations/findSurferById.ts +9 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/with-connection-in-input/.test/assets/demo-repo-with-connection-in-input/src/utils/database/withDatabaseConnection.ts +10 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/bad-practices/with-connection-in-input/src/<star><star>/<star>.ts.declapract.ts +55 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/.declapract.readme.md +114 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/.gitattributes.declapract.ts +64 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/codegen.sql.dao.yml +18 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/codegen.sql.dao.yml.declapract.ts +35 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/codegen.sql.schema.yml +6 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/codegen.sql.types.yml +16 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/config/prep.json +40 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/config/prep.json.declapract.ts +11 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/config/prod.json +40 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/config/prod.json.declapract.ts +11 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/config/test.json +37 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/config/test.json.declapract.ts +11 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/package.json +36 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/package.json.declapract.ts +3 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/patches/pg-pool.patch +21 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/aws/readme.md +113 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/aws/resources.parameters.ts +60 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/aws/resources.ts +30 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/docker/testdb/build-image.dockerfile +7 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/docker/testdb/build-image.dockerfile.declapract.ts +37 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/docker/testdb/check-engine-skew.integration.test.ts +115 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/docker/testdb/check-engine-skew.sh +165 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/docker/testdb/compose.sh +43 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/docker/testdb/docker-compose.yml +19 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/docker/testdb/init/.gitignore +3 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/docker/testdb/init/readme.md +3 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/docker/testdb/wait-for-postgres.sh +25 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/schema/connection.config.js +36 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/schema/control.yml +7 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/schema/deploy.database.sh +97 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/schema/sql/init/.database.sql +10 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/schema/sql/init/.extensions.sql +16 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/schema/sql/init/.extensions.sql.declapract.ts +46 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/schema/sql/init/.schema.sql +11 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/schema/sql/init/.user.cicd.sql +14 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/schema/sql/init/.user.datalakedb.sql +12 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/schema/sql/init/default_transaction_isolation.sql +6 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/schema/sql/init/user.service.sql +16 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/schema/sql/init.yml +9 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/provision/schema/sql/init.yml.declapract.ts +3 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/src/.test/assets/database/getTestdbIdentity.ts +52 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/src/.test/assets/database/getTestdbPort.ts +17 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/src/utils/config/config.schema.ts +77 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/src/utils/database/asDatabaseClientSsl.test.ts +82 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/src/utils/database/asDatabaseClientSsl.ts +52 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/src/utils/database/databaseClientTimeouts.ts +14 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/src/utils/database/getOneDatabaseConnection.integration.test.ts +10 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/src/utils/database/getOneDatabaseConnection.ts +119 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/src/utils/database/getOneDatabasePort.ts +30 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/src/utils/database/rdsCaBundleUsEast1.test.ts +51 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/src/utils/database/rdsCaBundleUsEast1.ts +86 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/src/utils/database/withDatabaseContext.ts +54 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/src/utils/database/withDatabaseTransaction.ts +35 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/config-validates-schema.declapract.integration.test.ts +332 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/database-client.declapract.integration.test.ts +291 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/database-wrappers-typecheck.declapract.integration.test.ts +225 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/deploy-database-gerunds.declapract.integration.test.ts +57 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/empty-template-declares-zero-clusters.declapract.integration.test.ts +71 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/engine-upgrade.declapract.integration.test.ts +243 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/pg-pool-patch.declapract.integration.test.ts +884 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/provision-testdb-access.declapract.integration.test.ts +50 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/ssm-param-names.declapract.integration.test.ts +154 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/testdb-per-worktree.declapract.integration.test.ts +332 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/testdb-preflight-failloud.declapract.integration.test.ts +83 -0
- package/dist/.test/assets/git/declarations/practices/persist-with-rds/with-connection-in-input.declapract.integration.test.ts +97 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/.declapract.integration.test.ts +98 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/.test/assets/demo-repo-with-consumer-boot/.agent/repo=.this/role=any/boot.yml +9 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/.test/assets/demo-repo-with-consumer-boot/declapract.declare.yml +4 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/.test/assets/demo-repo-with-consumer-boot/declapract.use.yml +2 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/.test/assets/demo-repo-with-consumer-boot/package.json +4 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/.test/assets/repo-keyrack-extant/.agent/keyrack.yml +9 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/.test/assets/repo-keyrack-extant/declapract.use.node.yml +4 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/.test/assets/repo-keyrack-extant/declapract.use.yml +4 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/.test/assets/repo-keyrack-extant/package.json +4 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/.test/assets/repo-self-linked/declapract.use.yml +4 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/.test/assets/repo-self-linked/package.json +22 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/__snapshots__/.declapract.integration.test.ts.snap +46 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/__snapshots__/boot-refs-glossary.declapract.integration.test.ts.snap +6 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/__snapshots__/boot-yml-findsert.declapract.integration.test.ts.snap +33 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/__snapshots__/keyrack-yml-findsert.declapract.integration.test.ts.snap +28 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/__snapshots__/self-link-build-order.declapract.integration.test.ts.snap +81 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/bad-practices/deprecated-use-file/.declapract.readme.md +11 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/bad-practices/deprecated-use-file/rhachet.use.ts.declapract.ts +12 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/bad-practices/prod-deps/.declapract.readme.md +59 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/bad-practices/prod-deps/.test/assets/demo-repo-with-rhachet-prod-deps/declapract.declare.yml +4 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/bad-practices/prod-deps/.test/assets/demo-repo-with-rhachet-prod-deps/declapract.use.yml +2 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/bad-practices/prod-deps/.test/assets/demo-repo-with-rhachet-prod-deps/package.json +12 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/bad-practices/prod-deps/package.json +5 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/bad-practices/prod-deps/package.json.declapract.ts +88 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/bad-practices/review-peer-artifacts/.behavior/<star><star>/.reviews/<star><star>/<star>peer-review<star>.md.declapract.ts +16 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/bad-practices/review-peer-artifacts/.behavior/<star><star>/.reviews/peer/<star><star>/<star>.md.declapract.ts +16 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/bad-practices/review-peer-artifacts/.declapract.readme.md +12 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/best-practice/.agent/keyrack.yml.declapract.ts +143 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/best-practice/.agent/repo=.this/role=any/boot.yml +22 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/best-practice/.agent/repo=.this/role=any/boot.yml.declapract.ts +189 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/best-practice/.declapract.readme.md +40 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/best-practice/.gitattributes.declapract.ts +65 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/best-practice/.gitignore.declapract.ts +94 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/best-practice/package.json +19 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/best-practice/package.json.declapract.ts +51 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/boot-refs-glossary.declapract.integration.test.ts +91 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/boot-yml-findsert.declapract.integration.test.ts +149 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/keyrack-yml-findsert.declapract.integration.test.ts +105 -0
- package/dist/.test/assets/git/declarations/practices/rhachet/self-link-build-order.declapract.integration.test.ts +88 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/.test/assets/repo-old-acceptance-utils/blackbox/lambdas/consumeSESEmailEventFromSNS.acceptance.test.ts +23 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/.test/assets/repo-old-acceptance-utils/declapract.use.yml +9 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/.test/assets/repo-old-acceptance-utils/package.json +4 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/.test/assets/repo-old-acceptance-utils-2/blackbox/lambdas/addDecoratedImage.acceptance.test.ts +19 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/.test/assets/repo-old-acceptance-utils-2/declapract.use.yml +9 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/.test/assets/repo-old-acceptance-utils-2/package.json +4 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/.test/assets/repo-old-acceptance-utils-3/blackbox/lambdas/addDecoratedImage.acceptance.test.ts +19 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/.test/assets/repo-old-acceptance-utils-3/declapract.use.yml +9 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/.test/assets/repo-old-acceptance-utils-3/package.json +4 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/__snapshots__/changedsince-origin-main.declapract.integration.test.ts.snap +8 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/__snapshots__/livedb-wake-branches.declapract.integration.test.ts.snap +6 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/__snapshots__/old-acceptance-test-utils.declapract.integration.test.ts.snap +162 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/__snapshots__/test-kind-seam.declapract.integration.test.ts.snap +9 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/autoprune-hooks.declapract.integration.test.ts +111 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/dev-tool-in-dependencies/.declapract.integration.test.ts +69 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/dev-tool-in-dependencies/.declapract.readme.md +19 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/dev-tool-in-dependencies/.test/assets/demo-repo-with-stale-test-fns-dep/declapract.use.yml +3 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/dev-tool-in-dependencies/.test/assets/demo-repo-with-stale-test-fns-dep/package.json +11 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/dev-tool-in-dependencies/__snapshots__/.declapract.integration.test.ts.snap +43 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/dev-tool-in-dependencies/package.json.declapract.ts +81 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/javascript-config-files/.declapract.readme.md +1 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/javascript-config-files/jest.<star>.js.declapract.ts +17 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/mocks/.declapract.readme.md +8 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/mocks/<star><star>/__mock__/<star>.js +3 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/mocks/<star><star>/__mock__/<star>.ts +3 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/.declapract.integration.test.ts +83 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/.declapract.readme.md +22 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/.test/assets/demo-repo-with-accept-blackbox-dir/accept.blackbox/.test/assets/.agent/config.yml +1 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/.test/assets/demo-repo-with-accept-blackbox-dir/accept.blackbox/.test/assets/.rhachet/manifest.json +1 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/.test/assets/demo-repo-with-accept-blackbox-dir/accept.blackbox/somefile.ts +1 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/.test/assets/demo-repo-with-accept-blackbox-dir/declapract.use.yml +6 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/.test/assets/demo-repo-with-accept-blackbox-dir/package.json +4 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/accept.blackbox/<star><star>/<star>.declapract.ts +19 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/acceptance/<star><star>/<star>.declapract.ts +19 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/old-acceptance-import-paths/.declapract.readme.md +31 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/old-acceptance-import-paths/<star><star>/<star>.ts.declapract.ts +25 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/_utils/getDataFromLastOpenBracketAtStartOfLine.ts.declapract.ts +3 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/_utils/invokeLambda.ts.declapract.ts +3 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/lambdas/<star>.ts.declapract.ts +49 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils-2/blackbox/lambdas/<star>.ts.declapract.ts +27 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils-3/blackbox/_utils/environment.ts.declapract.ts +3 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils-3/blackbox/lambdas/<star>.ts.declapract.ts +23 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/old-extension-pattern/.declapract.readme.md +3 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/old-extension-pattern/<star><star>/<star>.test.acceptance.ts.declapract.ts +11 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/old-extension-pattern/<star><star>/<star>.test.integration.ts.declapract.ts +11 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/old-test-utils-and-assets-location/.declapract.readme.md +8 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/old-test-utils-and-assets-location/<star><star>/<star>.ts.declapract.ts +27 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/old-test-utils-and-assets-location/<star><star>/__test_assets__/<star><star>/<star>.declapract.ts +17 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/bad-practices/old-test-utils-and-assets-location/<star><star>/__test_utils__/<star><star>/<star>.declapract.ts +17 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/best-practice/.declapract.readme.md +52 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/best-practice/.declapract.todo.md +3 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/best-practice/.gitattributes.declapract.ts +60 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/best-practice/package.json +18 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/best-practice/package.json.declapract.ts +3 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/best-practice/src/.test/useWakeOfLivedb.ts +209 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/best-practice/src/<star><star>/<star>.integration.test.ts.declapract.ts +8 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/best-practice/src/<star><star>/<star>.test.ts.declapract.ts +7 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/build-ifstale.declapract.integration.test.ts +124 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/changedsince-origin-main.declapract.integration.test.ts +58 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/livedb-wake-branches.declapract.integration.test.ts +315 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/old-acceptance-test-utils.declapract.integration.test.ts +122 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/package.json.shell-flags.declapract.integration.test.ts +139 -0
- package/dist/.test/assets/git/declarations/practices/tests-any/test-kind-seam.declapract.integration.test.ts +87 -0
- package/dist/.test/assets/git/declarations/useCases.yml +29 -0
- package/dist/.test/assets/{expo-fullusecase/declarations/practices/git/best-practice → git/repo-with-all-gitattributes-declarers}/.gitattributes +3 -0
- package/dist/.test/assets/git/repo-with-all-gitattributes-declarers/declapract.use.yml +26 -0
- package/dist/.test/assets/git/repo-with-all-gitattributes-declarers/package.json +4 -0
- package/dist/.test/assets/pnpm/declarations/practices/pnpm/.test/assets/repo-stale-patch-beside-bare/declapract.use.yml +4 -0
- package/dist/.test/assets/pnpm/declarations/practices/pnpm/.test/assets/repo-stale-patch-beside-bare/package.json +15 -0
- package/dist/.test/assets/pnpm/declarations/practices/pnpm/.test/assets/repo-stale-patch-beside-bare/patches/rhachet-roles-ehmpathy.patch +6 -0
- package/dist/.test/assets/pnpm/declarations/practices/pnpm/.test/assets/repo-stale-patch-beside-bare/patches/rhachet-roles-ehmpathy@1.39.1.patch +6 -0
- package/dist/.test/assets/pnpm/declarations/practices/pnpm/.test/assets/repo-stale-patch-beside-bare/patches/type-fns@1.21.3.patch +6 -0
- package/dist/.test/assets/pnpm/declarations/practices/pnpm/.test/assets/repo-stale-patch-beside-bare/pnpm-lock.yaml +19 -0
- package/dist/.test/assets/pnpm/declarations/practices/pnpm/__snapshots__/stale-patched-dependency.declapract.integration.test.ts.snap +39 -0
- package/dist/.test/assets/pnpm/declarations/practices/pnpm/stale-patched-dependency.declapract.integration.test.ts +53 -0
- package/dist/.test/assets/rhachet/declarations/practices/rhachet/best-practice/.declapract.readme.md +8 -0
- package/dist/.test/assets/rhachet/declarations/practices/rhachet/best-practice/.gitattributes.declapract.ts +65 -0
- package/dist/.test/assets/tests-any-only/declarations/practices/tests-any/best-practice/.declapract.readme.md +7 -0
- package/dist/.test/assets/tests-any-only/declarations/practices/tests-any/best-practice/.gitattributes.declapract.ts +60 -0
- package/dist/__snapshots__/gitattributesDeclarers.declapract.integration.test.ts.snap +79 -0
- package/dist/__snapshots__/repoSkills.declapract.acceptance.test.ts.snap +512 -0
- package/dist/__snapshots__/typecheckBestPracticeTemplates.declapract.integration.test.ts.snap +80 -0
- package/dist/gitattributesDeclarers.declapract.integration.test.ts +438 -0
- package/dist/practiceOwnerPerFile.declapract.integration.test.ts +53 -0
- package/dist/practices/cicd-common/.declapract.integration.test.ts +15 -21
- package/dist/practices/git/.declapract.integration.test.ts +2 -2
- package/dist/practices/git/.gitattributes.declapract.integration.test.ts +34 -19
- package/dist/practices/git/.test/assets/repo-with-legacy-gitattributes/declapract.use.yml +3 -3
- package/dist/practices/git/__snapshots__/.gitattributes.declapract.integration.test.ts.snap +4 -4
- package/dist/practices/git/best-practice/.declapract.readme.md +37 -0
- package/dist/practices/git/best-practice/.gitattributes.declapract.ts +42 -63
- package/dist/practices/persist-with-dynamodb/best-practice/.gitattributes.declapract.ts +56 -0
- package/dist/practices/persist-with-rds/.test/assets/repo-with-hand-patch/declapract.use.yml +4 -0
- package/dist/practices/persist-with-rds/.test/assets/repo-with-hand-patch/package.json +17 -0
- package/dist/practices/persist-with-rds/.test/assets/repo-with-hand-patch/patches/left-pad@1.3.0.patch +6 -0
- package/dist/practices/persist-with-rds/.test/assets/repo-with-hand-patch/patches/pg-pool@3.14.0.patch +12 -0
- package/dist/practices/persist-with-rds/__snapshots__/pg-pool-patch.declapract.integration.test.ts.snap +147 -0
- package/dist/practices/persist-with-rds/best-practice/.declapract.readme.md +29 -0
- package/dist/practices/persist-with-rds/best-practice/.gitattributes.declapract.ts +64 -0
- package/dist/practices/persist-with-rds/best-practice/package.json +5 -0
- package/dist/practices/persist-with-rds/best-practice/patches/pg-pool.patch +21 -0
- package/dist/practices/persist-with-rds/pg-pool-patch.declapract.integration.test.ts +884 -0
- package/dist/practices/pnpm/.test/assets/repo-stale-patch-beside-bare/declapract.use.yml +4 -0
- package/dist/practices/pnpm/.test/assets/repo-stale-patch-beside-bare/package.json +15 -0
- package/dist/practices/pnpm/.test/assets/repo-stale-patch-beside-bare/patches/rhachet-roles-ehmpathy.patch +6 -0
- package/dist/practices/pnpm/.test/assets/repo-stale-patch-beside-bare/patches/rhachet-roles-ehmpathy@1.39.1.patch +6 -0
- package/dist/practices/pnpm/.test/assets/repo-stale-patch-beside-bare/patches/type-fns@1.21.3.patch +6 -0
- package/dist/practices/pnpm/.test/assets/repo-stale-patch-beside-bare/pnpm-lock.yaml +19 -0
- package/dist/practices/pnpm/__snapshots__/stale-patched-dependency.declapract.integration.test.ts.snap +39 -0
- package/dist/practices/pnpm/stale-patched-dependency.declapract.integration.test.ts +53 -0
- package/dist/practices/rhachet/best-practice/.declapract.readme.md +8 -0
- package/dist/practices/rhachet/best-practice/.gitattributes.declapract.ts +65 -0
- package/dist/practices/tests-any/best-practice/.declapract.readme.md +7 -0
- package/dist/practices/tests-any/best-practice/.gitattributes.declapract.ts +60 -0
- package/dist/repoSkills.declapract.acceptance.test.ts +1150 -0
- package/dist/typecheckBestPracticeTemplates.declapract.integration.test.ts +181 -19
- package/dist/utils/defineExpectedGitattributesContents.ts +247 -0
- package/package.json +6 -6
- package/dist/.test/assets/expo-migration/declarations/practices/git/best-practice/.gitattributes +0 -7
- package/dist/practices/git/best-practice/.gitattributes +0 -7
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
data "aws_ssm_parameter" "legacy_admin_password" {
|
|
2
|
+
name = "${local.parameter_store_namespace}.database.admin.password"
|
|
3
|
+
count = var.environment == "prod" ? 1 : 0
|
|
4
|
+
with_decryption = true
|
|
5
|
+
}
|
|
6
|
+
resource "aws_ssm_parameter" "secret_database_admin_password" {
|
|
7
|
+
name = "${local.parameter_store_namespace}.database.admin.password"
|
|
8
|
+
type = "SecureString"
|
|
9
|
+
value = "__IGNORED__"
|
|
10
|
+
tags = local.tags
|
|
11
|
+
lifecycle {
|
|
12
|
+
ignore_changes = [value]
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
resource "aws_ssm_parameter" "secret_database_role_crud_password" {
|
|
16
|
+
name = "${local.parameter_store_namespace}.database.role.crud.password"
|
|
17
|
+
type = "SecureString"
|
|
18
|
+
value = "__IGNORED__"
|
|
19
|
+
tags = local.tags
|
|
20
|
+
lifecycle {
|
|
21
|
+
ignore_changes = [value]
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
resource "aws_ssm_parameter" "secret_twilio_authToken" {
|
|
25
|
+
name = "${local.parameter_store_namespace}.twilio.authToken"
|
|
26
|
+
type = "SecureString"
|
|
27
|
+
value = "__IGNORED__"
|
|
28
|
+
tags = local.tags
|
|
29
|
+
lifecycle {
|
|
30
|
+
ignore_changes = [value]
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
|
|
2
|
+
|
|
3
|
+
exports[`terraform-parameters forget given: [case1] a repo with terraform-managed ssm params when: [t0] the migration input (before any fix) then: the terraform input matches snapshot: parameter-store.tf — before 1`] = `
|
|
4
|
+
"data "aws_ssm_parameter" "legacy_admin_password" {
|
|
5
|
+
name = "\${local.parameter_store_namespace}.database.admin.password"
|
|
6
|
+
count = var.environment == "prod" ? 1 : 0
|
|
7
|
+
with_decryption = true
|
|
8
|
+
}
|
|
9
|
+
resource "aws_ssm_parameter" "secret_database_admin_password" {
|
|
10
|
+
name = "\${local.parameter_store_namespace}.database.admin.password"
|
|
11
|
+
type = "SecureString"
|
|
12
|
+
value = "__IGNORED__"
|
|
13
|
+
tags = local.tags
|
|
14
|
+
lifecycle {
|
|
15
|
+
ignore_changes = [value]
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
resource "aws_ssm_parameter" "secret_database_role_crud_password" {
|
|
19
|
+
name = "\${local.parameter_store_namespace}.database.role.crud.password"
|
|
20
|
+
type = "SecureString"
|
|
21
|
+
value = "__IGNORED__"
|
|
22
|
+
tags = local.tags
|
|
23
|
+
lifecycle {
|
|
24
|
+
ignore_changes = [value]
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
resource "aws_ssm_parameter" "secret_twilio_authToken" {
|
|
28
|
+
name = "\${local.parameter_store_namespace}.twilio.authToken"
|
|
29
|
+
type = "SecureString"
|
|
30
|
+
value = "__IGNORED__"
|
|
31
|
+
tags = local.tags
|
|
32
|
+
lifecycle {
|
|
33
|
+
ignore_changes = [value]
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
"
|
|
37
|
+
`;
|
|
38
|
+
|
|
39
|
+
exports[`terraform-parameters forget given: [case1] a repo with terraform-managed ssm params when: [t1] the bad-practice forget fix is applied then: the terraform file holds only removed{} forget blocks (no resource/data blocks) and matches snapshot: parameter-store.tf — after 1`] = `
|
|
40
|
+
"# copy this value before the first plan → /test-org/test-project/{config}/database.role.cicd.for-plan.password, /test-org/test-project/{config}/database.role.cicd.for-apply.password (see provision/aws/readme.md)
|
|
41
|
+
removed {
|
|
42
|
+
from = aws_ssm_parameter.secret_database_admin_password
|
|
43
|
+
lifecycle {
|
|
44
|
+
destroy = false # forget from state; keep the live param
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
removed {
|
|
48
|
+
from = aws_ssm_parameter.secret_database_role_crud_password
|
|
49
|
+
lifecycle {
|
|
50
|
+
destroy = false # forget from state; keep the live param
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
removed {
|
|
54
|
+
from = aws_ssm_parameter.secret_twilio_authToken
|
|
55
|
+
lifecycle {
|
|
56
|
+
destroy = false # forget from state; keep the live param
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
"
|
|
60
|
+
`;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { type FileCheckFunction, type FileFixFunction } from 'declapract';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* .what = terraform must not manage ssm parameters — they belong to declastruct-aws
|
|
5
|
+
* now (provision/aws/resources.parameters.ts).
|
|
6
|
+
* .why = terraform managed these via the `__IGNORED__` + `ignore_changes = [value]`
|
|
7
|
+
* workaround, which hid drift and forced the secret through terraform state. the
|
|
8
|
+
* real values live ONLY in aws (seeded once), so a plain resource-block delete
|
|
9
|
+
* would issue DeleteParameter = permanent loss. the fix instead rewrites each
|
|
10
|
+
* `resource "aws_ssm_parameter"` into a `removed{}` forget block (`destroy = false`)
|
|
11
|
+
* — terraform drops it from state and preserves the live value. requires terraform
|
|
12
|
+
* >= 1.7 for the `removed{}` block.
|
|
13
|
+
*
|
|
14
|
+
* .pair = this bad-practice removes terraform's ownership; the best-practice
|
|
15
|
+
* provision/aws/resources.parameters.ts declares the declastruct owner (value-less
|
|
16
|
+
* write-only KEEP — it adopts the live values terraform seeded). declare the wish
|
|
17
|
+
* BEFORE this forget lands so declastruct owns every param first.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
// bad practice detected while terraform still declares an ssm parameter resource.
|
|
21
|
+
export const check: FileCheckFunction = (contents) => {
|
|
22
|
+
if (contents?.includes('resource "aws_ssm_parameter"')) return; // detected
|
|
23
|
+
throw new Error(
|
|
24
|
+
'no terraform-managed ssm parameter resources; not the terraform-parameters bad practice',
|
|
25
|
+
);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* .what = the derived ssm names a legacy role param's value seeds, or [] for any other param
|
|
30
|
+
* .why = the role rename (admin → cicd for-plan + for-apply, service → crud) moved the values to
|
|
31
|
+
* new names; the forget erases the last terraform trace of the old one, so its comment
|
|
32
|
+
* names where the value must be copied (#686). a fix holds no aws access, so the copy
|
|
33
|
+
* itself is a human step (provision/aws/readme.md).
|
|
34
|
+
*/
|
|
35
|
+
const getAllCopyTargetsForLabel = (input: {
|
|
36
|
+
label: string;
|
|
37
|
+
namespace: string;
|
|
38
|
+
}): string[] => {
|
|
39
|
+
if (/(^|_)admin(_|$)/.test(input.label))
|
|
40
|
+
return [
|
|
41
|
+
`${input.namespace}/database.role.cicd.for-plan.password`,
|
|
42
|
+
`${input.namespace}/database.role.cicd.for-apply.password`,
|
|
43
|
+
];
|
|
44
|
+
if (/(^|_)service(_|$)/.test(input.label))
|
|
45
|
+
return [`${input.namespace}/database.role.crud.password`];
|
|
46
|
+
return [];
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* .what = cast copy targets into the comment line above a forget block ([] when none)
|
|
51
|
+
*/
|
|
52
|
+
const asCopyNoteLines = (input: { targets: string[] }): string[] =>
|
|
53
|
+
input.targets.length
|
|
54
|
+
? [
|
|
55
|
+
`# copy this value before the first plan → ${input.targets.join(', ')} (see provision/aws/readme.md)`,
|
|
56
|
+
]
|
|
57
|
+
: [];
|
|
58
|
+
|
|
59
|
+
export const fix: FileFixFunction = (contents, context) => {
|
|
60
|
+
if (!contents) return {};
|
|
61
|
+
|
|
62
|
+
// the derived namespace each copy target sits under; the config segment differs per env, so it stays `{config}`
|
|
63
|
+
const org = context?.projectVariables?.organizationName ?? '{org}';
|
|
64
|
+
const project = context?.projectVariables?.projectName ?? '{project}';
|
|
65
|
+
const namespace = `/${org}/${project}/{config}`;
|
|
66
|
+
|
|
67
|
+
// drop the `data "aws_ssm_parameter"` reads — they existed only to seed values
|
|
68
|
+
// that declastruct-aws now owns.
|
|
69
|
+
const withoutDataReads = contents.replace(
|
|
70
|
+
/data\s+"aws_ssm_parameter"\s+"\w+"\s*\{[\s\S]*?\n\}\n?/g,
|
|
71
|
+
'',
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
// rewrite each `resource "aws_ssm_parameter" "<label>" { ... }` into a forget
|
|
75
|
+
// block. `[\s\S]*?\n\}` stops at the first column-0 `}` (the block close); the
|
|
76
|
+
// indented ` }` of a nested lifecycle block never matches, so the nest is safe.
|
|
77
|
+
const withForgetBlocks = withoutDataReads.replace(
|
|
78
|
+
/resource\s+"aws_ssm_parameter"\s+"(\w+)"\s*\{[\s\S]*?\n\}/g,
|
|
79
|
+
(_match, label: string) =>
|
|
80
|
+
[
|
|
81
|
+
...asCopyNoteLines({
|
|
82
|
+
targets: getAllCopyTargetsForLabel({ label, namespace }),
|
|
83
|
+
}),
|
|
84
|
+
`removed {`,
|
|
85
|
+
` from = aws_ssm_parameter.${label}`,
|
|
86
|
+
` lifecycle {`,
|
|
87
|
+
` destroy = false # forget from state; keep the live param`,
|
|
88
|
+
` }`,
|
|
89
|
+
`}`,
|
|
90
|
+
].join('\n'),
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
return { contents: withForgetBlocks };
|
|
94
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
withDatabaseConnection -> withDatabaseContext, per procedure-fns pattern
|
|
2
|
+
|
|
3
|
+
`withDatabaseConnection` took `dbConnection` in the input. `withDatabaseContext`
|
|
4
|
+
(`src/utils/database/withDatabaseContext.ts`, shipped by the best-practice) takes it in the context:
|
|
5
|
+
each op becomes `(input, context) => …`, and each caller passes the context as the 2nd arg.
|
|
6
|
+
|
|
7
|
+
the move changes each op and each caller, so the fix does not rewrite code. it stamps a
|
|
8
|
+
`// @declapract:review:` line above each import or definition of `withDatabaseConnection` that names
|
|
9
|
+
the move, and leaves the extant wrapper in place so the tree still builds. delete the marker, and
|
|
10
|
+
then the wrapper, once its last caller moves.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DatabaseConnection } from '../utils/database/getDatabaseConnection';
|
|
2
|
+
import {
|
|
3
|
+
withDatabaseConnection,
|
|
4
|
+
} from '../utils/database/withDatabaseConnection';
|
|
5
|
+
|
|
6
|
+
export const findSurferById = withDatabaseConnection(
|
|
7
|
+
async ({ id, dbConnection }: { id: string; dbConnection: DatabaseConnection }) =>
|
|
8
|
+
dbConnection.query({ sql: 'select * from surfer where id = :id', values: { id } }),
|
|
9
|
+
);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DatabaseConnection, getDatabaseConnection } from './getDatabaseConnection';
|
|
2
|
+
|
|
3
|
+
export const withDatabaseConnection =
|
|
4
|
+
<I extends { dbConnection: DatabaseConnection }, O>(
|
|
5
|
+
logic: (input: I) => Promise<O>,
|
|
6
|
+
) =>
|
|
7
|
+
async (input: Omit<I, 'dbConnection'>): Promise<O> => {
|
|
8
|
+
const dbConnection = await getDatabaseConnection();
|
|
9
|
+
return logic({ ...input, dbConnection } as I);
|
|
10
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { FileCheckFunction, FileFixFunction } from 'declapract';
|
|
2
|
+
|
|
3
|
+
import { asInputToContextReviewMarker } from '../../../../../../utils/asInputToContextReviewMarker';
|
|
4
|
+
import { withReviewMarkerAbove } from '../../../../../../utils/withReviewMarkerAbove';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* .what = a line that imports, re-exports, or defines the retired `withDatabaseConnection`.
|
|
8
|
+
* .why = a multi-line import names the module only on its `from` line, so the module path is
|
|
9
|
+
* matched too; one marker per import statement either way.
|
|
10
|
+
*/
|
|
11
|
+
const WITH_DATABASE_CONNECTION_LINE_PATTERN =
|
|
12
|
+
/(?:^\s*import\b[^\n]*\bwithDatabaseConnection\b|^\s*export\s+(?:const|function)\s+withDatabaseConnection\b|\bfrom\s+['"][^'"]*\/withDatabaseConnection['"])/;
|
|
13
|
+
|
|
14
|
+
const REVIEW_MARKER = asInputToContextReviewMarker({
|
|
15
|
+
from: 'withDatabaseConnection (dbConnection in the input)',
|
|
16
|
+
into: 'withDatabaseContext (src/utils/database/withDatabaseContext.ts)',
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* .what = flags a src file that imports or defines `withDatabaseConnection`.
|
|
21
|
+
* .why = the practice replaced it with `withDatabaseContext`; the prior declaration was an EXISTS
|
|
22
|
+
* check with no fix, so an apply failed with no pointer to the replacement and each call
|
|
23
|
+
* site broke the build (#626). this check names each file by path in `plan`.
|
|
24
|
+
*/
|
|
25
|
+
export const check: FileCheckFunction = (contents) => {
|
|
26
|
+
if (
|
|
27
|
+
contents
|
|
28
|
+
?.split('\n')
|
|
29
|
+
.some((line) => WITH_DATABASE_CONNECTION_LINE_PATTERN.test(line))
|
|
30
|
+
)
|
|
31
|
+
return; // bad practice detected
|
|
32
|
+
throw new Error(
|
|
33
|
+
'does not match bad practice: no import or definition of withDatabaseConnection',
|
|
34
|
+
);
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* .what = stamps the shared input→context review line above each such import or definition.
|
|
39
|
+
* .why = each op moves `dbConnection` from its input into a context arg, and each caller passes
|
|
40
|
+
* it as the 2nd arg — a shape change a regex cannot make safely — so the fix names the
|
|
41
|
+
* move beside the line, and never deletes the extant wrapper (its callers still need it).
|
|
42
|
+
* .note = idempotent; the check stays red until a human moves the ops, so `plan` keeps it in view.
|
|
43
|
+
* .note = an absent file is left absent: every fix must settle on absent input, a contract the
|
|
44
|
+
* repo-wide fix-coverage sweep holds (`practiceFixCoverage`, #607)
|
|
45
|
+
*/
|
|
46
|
+
export const fix: FileFixFunction = (contents) => {
|
|
47
|
+
if (!contents) return { contents };
|
|
48
|
+
return {
|
|
49
|
+
contents: withReviewMarkerAbove({
|
|
50
|
+
contents,
|
|
51
|
+
lineMatcher: WITH_DATABASE_CONNECTION_LINE_PATTERN,
|
|
52
|
+
marker: REVIEW_MARKER,
|
|
53
|
+
}),
|
|
54
|
+
};
|
|
55
|
+
};
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
we use:
|
|
2
|
+
- postgres database
|
|
3
|
+
- provisioned by aws rds aurora when in prep and prod env
|
|
4
|
+
- provisioned by docker when in test env
|
|
5
|
+
- sql-schema-control to manage sql schema
|
|
6
|
+
- sql-dao-generator to generate the sql-schemas + daos
|
|
7
|
+
|
|
8
|
+
## required variables
|
|
9
|
+
|
|
10
|
+
| variable | description | example |
|
|
11
|
+
|----------|-------------|---------|
|
|
12
|
+
| `databaseTunnelHost.{prep,prod}` | ssm proxy host for database tunnel | `aws.ssmproxy.ahbodedb.prep` |
|
|
13
|
+
| `databaseClusterHost.{prep,prod}` | rds cluster endpoint | `ahbodedb.cluster-xxx.us-east-1.rds.amazonaws.com` |
|
|
14
|
+
|
|
15
|
+
## optional variables
|
|
16
|
+
|
|
17
|
+
| variable | description | default |
|
|
18
|
+
|----------|-------------|---------|
|
|
19
|
+
| `databaseClusterName` (or `databaseClusterName.{prep,prod}`) | the rds cluster the vpc tunnel targets (`database.tunnel.cluster.name`) | the first label of `databaseClusterHost.{env}` |
|
|
20
|
+
|
|
21
|
+
set it only when the cluster endpoint is a custom dns alias whose first label is not the
|
|
22
|
+
cluster identifier. a hand-set `database.tunnel.cluster.name` in a repo's own config is kept.
|
|
23
|
+
|
|
24
|
+
## the pg-pool patch
|
|
25
|
+
|
|
26
|
+
pg-pool's pool falls back to `require('pg').Client` when no `Client` is passed. dpdm reads that
|
|
27
|
+
require statically, so every repo with pg + pg-pool fails `test:lint:cycles` on `pg <-> pg-pool`
|
|
28
|
+
(the check reads node_modules too, by policy). this practice ships
|
|
29
|
+
`patches/pg-pool.patch`, which drops the fallback, under the bare-name key
|
|
30
|
+
`pnpm.patchedDependencies["pg-pool"]`:
|
|
31
|
+
|
|
32
|
+
- the bare name never goes stale, so the stale-patch check never retires it; the hunk fits every
|
|
33
|
+
stable pg-pool release in `^3.2.1`, which `pg@8.3.0` asks for
|
|
34
|
+
- a repo's own exact-version key (`pg-pool@<version>`) outranks it at install, and both survive the apply.
|
|
35
|
+
a hand patch of the same line may be deleted, key and file
|
|
36
|
+
- after an apply, run `pnpm install` and commit the lockfile: it records the patch hash, so a ci
|
|
37
|
+
`--frozen-lockfile` install fails until it does
|
|
38
|
+
- pg passes its own `Client` into every pool it builds, so code that goes through `pg` sees no change.
|
|
39
|
+
code that calls `new Pool()` from pg-pool directly must pass `{ Client: require('pg').Client }`
|
|
40
|
+
- if pnpm warns that the patch failed to apply, pg-pool moved the line: upgrade
|
|
41
|
+
declapract-typescript-ehmpathy and re-apply. if no fix has shipped yet, pin your own
|
|
42
|
+
`pg-pool@<version>` patch; its exact key outranks the bare one
|
|
43
|
+
- to recut the hunk, keep one context line on each side of the changed line. wider context misfits
|
|
44
|
+
older releases in `^3.2.1` (3.2.1–3.4.1), and pnpm then installs pg-pool unpatched
|
|
45
|
+
|
|
46
|
+
## ssm parameters
|
|
47
|
+
|
|
48
|
+
the provision wish (`provision/aws/resources.parameters.ts`) declares the db credentials at the
|
|
49
|
+
names sdk-config derives for a bare `$.at(aws::param)`:
|
|
50
|
+
|
|
51
|
+
| parameter name | description | environments |
|
|
52
|
+
|----------------|-------------|--------------|
|
|
53
|
+
| `/{org}/{project}/{config}/database.role.cicd.for-plan.password` | password for the cicd plan user | prep, prod |
|
|
54
|
+
| `/{org}/{project}/{config}/database.role.cicd.for-apply.password` | password for the cicd apply user | prep, prod |
|
|
55
|
+
| `/{org}/{project}/{config}/database.role.crud.password` | password for the crud user | prep, prod |
|
|
56
|
+
|
|
57
|
+
a repo whose values sit at a prior name (or under `role.admin` / `role.service`) copies them to
|
|
58
|
+
these names before its first provision apply — the map is in `provision/aws/readme.md`.
|
|
59
|
+
|
|
60
|
+
prep users are created with the `__CHANG3_ME__` password by `provision/schema/deploy.database.sh`,
|
|
61
|
+
so `config/prep.json` accepts either `__CHANG3_ME__` or `$.at(aws::param)` at each password.
|
|
62
|
+
|
|
63
|
+
## config grants
|
|
64
|
+
|
|
65
|
+
`src/utils/config/config.schema.ts` exports one schema per oidc grant:
|
|
66
|
+
|
|
67
|
+
- `apply` (the default: the apply job, the cloud runtime, local dev, tests) requires every secret,
|
|
68
|
+
so `Config` carries no `| undefined` and consumers need no guards
|
|
69
|
+
- `plan` marks `role.cicd.for-apply.password` and `role.crud.password` optional. the prod plan
|
|
70
|
+
job's oidc role may read only the for-plan credential, and sdk-config substitutes `undefined`
|
|
71
|
+
for each param a role is denied
|
|
72
|
+
- `for-plan` and `for-apply` each carry a username, since a plan job may map to a readonly db user
|
|
73
|
+
|
|
74
|
+
the grant is an argument, never read inside the schema; `getConfig` picks the schema at call time
|
|
75
|
+
(see the `config` practice readme).
|
|
76
|
+
|
|
77
|
+
## a stateful store gets an alias, never a copy, across the dual-publish transition
|
|
78
|
+
|
|
79
|
+
the `serverless` + `environments` practices dual-publish each lambda fleet under both slugs
|
|
80
|
+
(`-dev-` ancient, `-prep-` contemp) through the `-dev-`→`-prep-` slug transition. a stateless lambda
|
|
81
|
+
is safe under two names. a stateful store is not.
|
|
82
|
+
|
|
83
|
+
this RDS cluster (and its SSM credential params, its S3 buckets, its SQS queues) stays one store
|
|
84
|
+
reached by two pointers — a Route53 CNAME, an SSM pointer, or an ARN — never two clusters.
|
|
85
|
+
|
|
86
|
+
a second `-prep-` RDS cluster is never stood up to satisfy dual-publish. two independent clusters
|
|
87
|
+
form a write-`-dev-`/read-`-prep-` split: the ancient fleet writes one, the contemp fleet reads the
|
|
88
|
+
other, and the divergence stays silent until data is absent. the alias points at the one cluster.
|
|
89
|
+
|
|
90
|
+
no data migration is needed: the runtime DB path resolves `config.database.tunnel.lambda.host` (see
|
|
91
|
+
`src/utils/database/getOneDatabaseConnection.ts`), an access-keyed config value
|
|
92
|
+
(`databaseClusterHost.{prep,prod}`) with no deploy-slug token, so a CNAME re-points the one live
|
|
93
|
+
cluster with zero data moved. which alias mechanism to use is unsettled; the invariant "one store, two
|
|
94
|
+
pointers" holds regardless.
|
|
95
|
+
|
|
96
|
+
## the provision workflow's rds jobs are gated behind this practice (D28)
|
|
97
|
+
|
|
98
|
+
`cicd-service`'s `provision.yml` carries 4 rds-coupled jobs — `sql-schema-{prep,prod}` (the
|
|
99
|
+
`.sql-schema-control.yml` callee, driven by this practice's schema + daos) and
|
|
100
|
+
`aws-{prep,prod}-declastruct` (the `provision/aws/resources.ts` wish this practice ships). the gate
|
|
101
|
+
lives in `cicd-service/best-practice/.github/workflows/provision.yml.declapract.ts`: a usecase-aware
|
|
102
|
+
`contents` fn emits those 4 jobs **only** when `persist-with-rds` is in the resolved practice set, so
|
|
103
|
+
a service **without** rds (`lambda-service`, `lambda-service-with-dynamodb`) does not inherit a
|
|
104
|
+
`provision` workflow that references files it lacks. it uses `CONTAINS`, not `EQUALS`, so a narrow
|
|
105
|
+
`declapract apply --practice cicd-service` cannot strip an rds repo's own jobs (the additive-delta
|
|
106
|
+
EQUALS hazard). if you add a new rds-coupled provision job, add it to that gate the same way — a
|
|
107
|
+
caller that names a callee this practice supplies must be reconciled against this practice's presence.
|
|
108
|
+
|
|
109
|
+
## the dao-generator output folds in a pr
|
|
110
|
+
|
|
111
|
+
this practice declares a `# [persist-with-rds]` section of the repo-root `.gitattributes`: it marks
|
|
112
|
+
`src/access/daos/**/.generated/**` and `provision/schema/**/.generated/**` as
|
|
113
|
+
`linguist-generated`, so github renders them collapsed. the daos and the schemas themselves stay
|
|
114
|
+
open: they are the internal contracts, so a reviewer reads them. to un-fold a path, see "what folds in a pr" in `src/practices/git/best-practice/.declapract.readme.md`.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { FileCheckFunction, FileFixFunction } from 'declapract';
|
|
2
|
+
import expect from 'expect';
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
defineExpectedGitattributesContents,
|
|
6
|
+
type GitattributesSection,
|
|
7
|
+
} from '../../../utils/defineExpectedGitattributesContents';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* .what = the `.gitattributes` section this practice owns: `.generated/` dirs fold in pr diffs
|
|
11
|
+
* .why = the daos and the schemas are the internal contracts, so a reviewer reads them open.
|
|
12
|
+
* a `.generated/` dir holds derived code (casts, query types, query functions) that
|
|
13
|
+
* every regen rewrites. github folds a file marked `linguist-generated`, one click away
|
|
14
|
+
* .note = `codegen.sql.types.yml` and the dao generator write `src/access/daos/.generated/`.
|
|
15
|
+
* the `**` keeps a nested `.generated/` folded too, under the daos and the schemas
|
|
16
|
+
* alike; every other dao and schema file stays open
|
|
17
|
+
*/
|
|
18
|
+
const sections: readonly GitattributesSection[] = [
|
|
19
|
+
{
|
|
20
|
+
header: {
|
|
21
|
+
latest: '# [persist-with-rds] collapse dao-generator output in pr diffs',
|
|
22
|
+
retired: [],
|
|
23
|
+
},
|
|
24
|
+
entries: {
|
|
25
|
+
latest: [
|
|
26
|
+
'src/access/daos/**/.generated/** linguist-generated',
|
|
27
|
+
'provision/schema/**/.generated/** linguist-generated',
|
|
28
|
+
],
|
|
29
|
+
retired: [
|
|
30
|
+
'src/access/daos/** linguist-generated',
|
|
31
|
+
'provision/schema/sql/tables/** linguist-generated',
|
|
32
|
+
'provision/schema/sql/views/** linguist-generated',
|
|
33
|
+
'provision/schema/sql/functions/** linguist-generated',
|
|
34
|
+
],
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* .what = emits the `.gitattributes` this practice declares, given the repo's extant one
|
|
41
|
+
* .why = several practices declare this file; they converge only through the shared util
|
|
42
|
+
*/
|
|
43
|
+
const defineExpectedContents = (input: { contents: string | null }): string =>
|
|
44
|
+
defineExpectedGitattributesContents({
|
|
45
|
+
contents: input.contents,
|
|
46
|
+
declarer: 'persist-with-rds',
|
|
47
|
+
sections,
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* .what = throws when the repo's `.gitattributes` differs from what the shared layout emits
|
|
52
|
+
* .why = `check` gates `fix` (a throw means violated); exact equality, so `check(x) ⟺ x === fix(x)`
|
|
53
|
+
*/
|
|
54
|
+
export const check: FileCheckFunction = (contents) => {
|
|
55
|
+
expect(contents).toEqual(defineExpectedContents({ contents }));
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* .what = sets this practice's section into the repo's `.gitattributes`
|
|
60
|
+
* .why = a fixed point: a second fix changes zero, and `check` passes on the output
|
|
61
|
+
*/
|
|
62
|
+
export const fix: FileFixFunction = (contents) => ({
|
|
63
|
+
contents: defineExpectedContents({ contents }),
|
|
64
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
language: postgres
|
|
2
|
+
dialect: 17
|
|
3
|
+
generates:
|
|
4
|
+
daos:
|
|
5
|
+
to: src/access/daos
|
|
6
|
+
using:
|
|
7
|
+
log: src/utils/logger#log
|
|
8
|
+
DatabaseConnection: src/utils/database/getOneDatabaseConnection#DatabaseConnection
|
|
9
|
+
schema:
|
|
10
|
+
config: codegen.sql.schema.yml
|
|
11
|
+
control:
|
|
12
|
+
config: provision/schema/control.yml
|
|
13
|
+
code:
|
|
14
|
+
config: codegen.sql.types.yml
|
|
15
|
+
for:
|
|
16
|
+
objects:
|
|
17
|
+
search:
|
|
18
|
+
- 'src/domain.objects/*.ts'
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { FileCheckType, type FileFixFunction } from 'declapract';
|
|
2
|
+
|
|
3
|
+
export const check = FileCheckType.CONTAINS; // contains since the user may have exclusions in that "for" object
|
|
4
|
+
|
|
5
|
+
const DIALECT_LINE = /^dialect: .*$/m;
|
|
6
|
+
const LANGUAGE_LINE = /^language: .*$/m;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* .what = moves the found config onto the declared `dialect` line, and keeps every other line
|
|
10
|
+
* .why = a CONTAINS check has no default fix for a file that exists, so a repo on a stale dialect
|
|
11
|
+
* (10.7, eight majors behind) could never converge on its own (#664)
|
|
12
|
+
* .note = a second pass finds the declared line already in place, so it changes naught
|
|
13
|
+
*/
|
|
14
|
+
export const fix: FileFixFunction = (contents, context) => {
|
|
15
|
+
// write the declared config where none exists
|
|
16
|
+
const declared = context.declaredFileContents!;
|
|
17
|
+
if (!contents) return { contents: declared };
|
|
18
|
+
|
|
19
|
+
// swap the found dialect line for the declared one
|
|
20
|
+
const dialectDeclared = declared.match(DIALECT_LINE)?.[0];
|
|
21
|
+
if (!dialectDeclared) return { contents };
|
|
22
|
+
if (DIALECT_LINE.test(contents))
|
|
23
|
+
return { contents: contents.replace(DIALECT_LINE, dialectDeclared) };
|
|
24
|
+
|
|
25
|
+
// or add it under the language line, where the template declares it
|
|
26
|
+
const languageFound = contents.match(LANGUAGE_LINE)?.[0];
|
|
27
|
+
if (languageFound)
|
|
28
|
+
return {
|
|
29
|
+
contents: contents.replace(
|
|
30
|
+
LANGUAGE_LINE,
|
|
31
|
+
`${languageFound}\n${dialectDeclared}`,
|
|
32
|
+
),
|
|
33
|
+
};
|
|
34
|
+
return { contents: `${dialectDeclared}\n${contents}` };
|
|
35
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
language: postgres
|
|
2
|
+
dialect: 17
|
|
3
|
+
resources: # where to find your tables, functions, views, procedures
|
|
4
|
+
- 'provision/schema/sql/tables/**/*.sql'
|
|
5
|
+
- 'provision/schema/sql/views/**/*.sql'
|
|
6
|
+
- 'provision/schema/sql/functions/**/*.sql'
|
|
7
|
+
queries: # where to find your queries (each file must `export const query = `...`);
|
|
8
|
+
- 'src/access/daos/**/*.ts'
|
|
9
|
+
- '!src/access/daos/**/index.ts'
|
|
10
|
+
- '!src/access/daos/**/castFromDatabaseObject.ts'
|
|
11
|
+
- '!src/access/daos/**/findByRef.ts'
|
|
12
|
+
- '!src/**/*.test.ts'
|
|
13
|
+
- '!src/**/*.test.integration.ts'
|
|
14
|
+
generates: # where to output the generated code
|
|
15
|
+
types: src/access/daos/.generated/types.ts
|
|
16
|
+
queryFunctions: src/access/daos/.generated/queryFunctions.ts
|
package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/config/prep.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"database": {
|
|
3
|
+
"target": {
|
|
4
|
+
"database": "@declapract{variable.databaseName}",
|
|
5
|
+
"schema": "@declapract{variable.databaseName}"
|
|
6
|
+
},
|
|
7
|
+
"role": {
|
|
8
|
+
"cicd": {
|
|
9
|
+
"for-plan": {
|
|
10
|
+
"username": "@declapract{variable.databaseUserName.cicdUser}",
|
|
11
|
+
"password": "$.at(aws::param)"
|
|
12
|
+
},
|
|
13
|
+
"for-apply": {
|
|
14
|
+
"username": "@declapract{variable.databaseUserName.cicdUser}",
|
|
15
|
+
"password": "$.at(aws::param)"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"crud": {
|
|
19
|
+
"username": "@declapract{variable.databaseUserName.serviceUser}",
|
|
20
|
+
"password": "$.at(aws::param)"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"tunnel": {
|
|
24
|
+
"bastion": {
|
|
25
|
+
"exid": "vpc-main-bastion"
|
|
26
|
+
},
|
|
27
|
+
"cluster": {
|
|
28
|
+
"name": "@declapract{variable.databaseClusterName}"
|
|
29
|
+
},
|
|
30
|
+
"local": {
|
|
31
|
+
"host": "@declapract{variable.databaseTunnelHost.prep}",
|
|
32
|
+
"port": 15432
|
|
33
|
+
},
|
|
34
|
+
"lambda": {
|
|
35
|
+
"host": "@declapract{variable.databaseClusterHost.prep}",
|
|
36
|
+
"port": 5432
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { genRdsConfigDeclaration } from '../../../../utils/genRdsConfigDeclaration';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* .what = the contents, check, and fix that deep-merge the rds keys into config/prep.json.
|
|
5
|
+
* .why = a deep merge adds the absent rds keys and keeps the leaves a repo holds on purpose, so an
|
|
6
|
+
* apply never clobbers a value a service tuned (#638, #683); see genRdsConfigDeclaration.
|
|
7
|
+
*/
|
|
8
|
+
export const { contents, check, fix } = genRdsConfigDeclaration({
|
|
9
|
+
env: 'prep',
|
|
10
|
+
templatePath: `${__dirname}/prep.json`,
|
|
11
|
+
});
|
package/dist/.test/assets/git/declarations/practices/persist-with-rds/best-practice/config/prod.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"database": {
|
|
3
|
+
"target": {
|
|
4
|
+
"database": "@declapract{variable.databaseName}",
|
|
5
|
+
"schema": "@declapract{variable.databaseName}"
|
|
6
|
+
},
|
|
7
|
+
"role": {
|
|
8
|
+
"cicd": {
|
|
9
|
+
"for-plan": {
|
|
10
|
+
"username": "@declapract{variable.databaseUserName.cicdUser}",
|
|
11
|
+
"password": "$.at(aws::param)"
|
|
12
|
+
},
|
|
13
|
+
"for-apply": {
|
|
14
|
+
"username": "@declapract{variable.databaseUserName.cicdUser}",
|
|
15
|
+
"password": "$.at(aws::param)"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"crud": {
|
|
19
|
+
"username": "@declapract{variable.databaseUserName.serviceUser}",
|
|
20
|
+
"password": "$.at(aws::param)"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"tunnel": {
|
|
24
|
+
"bastion": {
|
|
25
|
+
"exid": "vpc-main-bastion"
|
|
26
|
+
},
|
|
27
|
+
"cluster": {
|
|
28
|
+
"name": "@declapract{variable.databaseClusterName}"
|
|
29
|
+
},
|
|
30
|
+
"local": {
|
|
31
|
+
"host": "@declapract{variable.databaseTunnelHost.prod}",
|
|
32
|
+
"port": 15433
|
|
33
|
+
},
|
|
34
|
+
"lambda": {
|
|
35
|
+
"host": "@declapract{variable.databaseClusterHost.prod}",
|
|
36
|
+
"port": 5432
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { genRdsConfigDeclaration } from '../../../../utils/genRdsConfigDeclaration';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* .what = the contents, check, and fix that deep-merge the rds keys into config/prod.json.
|
|
5
|
+
* .why = a deep merge adds the absent rds keys and keeps the leaves a repo holds on purpose, so an
|
|
6
|
+
* apply never clobbers a value a service tuned (#638); see genRdsConfigDeclaration.
|
|
7
|
+
*/
|
|
8
|
+
export const { contents, check, fix } = genRdsConfigDeclaration({
|
|
9
|
+
env: 'prod',
|
|
10
|
+
templatePath: `${__dirname}/prod.json`,
|
|
11
|
+
});
|