declapract-typescript-ehmpathy 0.49.9 → 0.49.11
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/cache/declarations/declapract.declare.yml +4 -0
- package/dist/.test/assets/cache/declarations/practices/cache/.declapract.integration.test.ts +108 -0
- package/dist/.test/assets/cache/declarations/practices/cache/.test/assets/repo-with-old-cache-package/declapract.use.yml +6 -0
- package/dist/.test/assets/cache/declarations/practices/cache/.test/assets/repo-with-old-cache-package/package.json +7 -0
- package/dist/.test/assets/cache/declarations/practices/cache/.test/assets/repo-with-valid-cache-package/declapract.use.yml +6 -0
- package/dist/.test/assets/cache/declarations/practices/cache/.test/assets/repo-with-valid-cache-package/package.json +7 -0
- package/dist/.test/assets/cache/declarations/practices/cache/.test/assets/repo-without-cache-package/declapract.use.yml +6 -0
- package/dist/.test/assets/cache/declarations/practices/cache/.test/assets/repo-without-cache-package/package.json +7 -0
- package/dist/.test/assets/cache/declarations/practices/cache/best-practice/package.json +7 -0
- package/dist/.test/assets/cache/declarations/useCases.yml +5 -0
- package/dist/.test/assets/expo/declarations/declapract.declare.yml +4 -0
- package/dist/.test/assets/expo/declarations/practices/cicd-app-react-native-expo/.declapract.integration.test.ts +810 -0
- package/dist/.test/assets/expo/declarations/practices/cicd-app-react-native-expo/__snapshots__/.declapract.integration.test.ts.snap +289 -0
- package/dist/.test/assets/expo/declarations/practices/cicd-app-react-native-expo/best-practice/.declapract.readme.md +27 -0
- package/dist/.test/assets/expo/declarations/practices/cicd-app-react-native-expo/best-practice/.github/workflows/.deploy-expo.yml +127 -0
- package/dist/.test/assets/expo/declarations/practices/cicd-app-react-native-expo/best-practice/.github/workflows/deploy.yml +76 -0
- package/dist/.test/assets/expo/declarations/practices/cicd-app-react-native-expo/best-practice/.github/workflows/test.yml +27 -0
- package/dist/.test/assets/expo/declarations/practices/cicd-app-react-native-expo/best-practice/.gitignore.declapract.ts +28 -0
- package/dist/.test/assets/expo/declarations/practices/cicd-app-react-native-expo/best-practice/package.json +36 -0
- package/dist/.test/assets/expo/declarations/practices/cicd-app-react-native-expo/best-practice/package.json.declapract.ts +3 -0
- package/dist/.test/assets/expo/declarations/practices/node/.test/assets/repo-expo-npmrc/declapract.use.yml +23 -0
- package/dist/.test/assets/expo/declarations/practices/node/.test/assets/repo-expo-npmrc/package.json +4 -0
- package/dist/.test/assets/expo/declarations/practices/node/bad-practices/self-deps-not-link/.declapract.readme.md +10 -0
- package/dist/.test/assets/expo/declarations/practices/node/bad-practices/self-deps-not-link/package.json.declapract.ts +76 -0
- package/dist/.test/assets/expo/declarations/practices/node/best-practice/.npmrc.declapract.integration.test.ts +165 -0
- package/dist/.test/assets/expo/declarations/practices/node/best-practice/.npmrc.declapract.ts +60 -0
- package/dist/.test/assets/expo/declarations/practices/node/best-practice/.nvmrc +1 -0
- package/dist/.test/assets/expo/declarations/practices/node/best-practice/__snapshots__/.npmrc.declapract.integration.test.ts.snap +24 -0
- package/dist/.test/assets/expo/declarations/practices/node/best-practice/package.json +15 -0
- package/dist/.test/assets/expo/declarations/practices/node/best-practice/package.json.declapract.ts +3 -0
- package/dist/.test/assets/expo/declarations/practices/node/best-practice/readme.md +1 -0
- package/dist/.test/assets/expo/declarations/practices/node/best-practice/readme.md.declapract.ts +3 -0
- package/dist/.test/assets/expo/declarations/useCases.yml +8 -0
- package/dist/.test/assets/expo-fullusecase/declarations/declapract.declare.yml +10 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cache/.declapract.integration.test.ts +108 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cache/.test/assets/repo-with-old-cache-package/declapract.use.yml +6 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cache/.test/assets/repo-with-old-cache-package/package.json +7 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cache/.test/assets/repo-with-valid-cache-package/declapract.use.yml +6 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cache/.test/assets/repo-with-valid-cache-package/package.json +7 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cache/.test/assets/repo-without-cache-package/declapract.use.yml +6 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cache/.test/assets/repo-without-cache-package/package.json +7 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cache/best-practice/package.json +7 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-app-react-native-expo/.declapract.integration.test.ts +810 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-app-react-native-expo/__snapshots__/.declapract.integration.test.ts.snap +289 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-app-react-native-expo/best-practice/.declapract.readme.md +27 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-app-react-native-expo/best-practice/.github/workflows/.deploy-expo.yml +127 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-app-react-native-expo/best-practice/.github/workflows/deploy.yml +76 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-app-react-native-expo/best-practice/.github/workflows/test.yml +27 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-app-react-native-expo/best-practice/.gitignore.declapract.ts +28 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-app-react-native-expo/best-practice/package.json +36 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-app-react-native-expo/best-practice/package.json.declapract.ts +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/.declapract.integration.test.ts +572 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/.test/assets/repo-with-unpinned-workflow/.github/workflows/.test.yml +19 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/.test/assets/repo-with-unpinned-workflow/.github/workflows/consumer-owned.yml +21 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/.test/assets/repo-with-unpinned-workflow/.github/workflows/review.yml +26 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/.test/assets/repo-with-unpinned-workflow/declapract.use.yml +6 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/__snapshots__/.declapract.integration.test.ts.snap +550 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/bad-practices/has-changelog-file/changelog.md.declapract.ts +11 -0
- package/dist/.test/assets/expo-fullusecase/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/expo-fullusecase/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/expo-fullusecase/declarations/practices/cicd-common/best-practice/.declapract.readme.md +8 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/best-practice/.github/actions/please-release/action.yml +469 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/best-practice/.github/actions/test-shards-setup/action.yml +68 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/best-practice/.github/workflows/.declastruct.yml +198 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/best-practice/.github/workflows/.install.yml +56 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/best-practice/.github/workflows/.test.yml +380 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/best-practice/.github/workflows/.test.yml.declapract.ts +15 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/best-practice/.github/workflows/release.yml +32 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/best-practice/.github/workflows/review.yml +26 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/best-practice/.github/workflows/test.yml +25 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/best-practice/.github/workflows/test.yml.declapract.ts +15 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/conventional-commits/bad-practices/commitlint/package.json +5 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/conventional-commits/bad-practices/commitlint/package.json.declapract.ts +19 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/conventional-commits/best-practice/.declapract.readme.md +5 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/conventional-commits/best-practice/.husky/check.commit.sh +7 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/conventional-commits/best-practice/.husky/commit-msg +8 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/conventional-commits/best-practice/commitlint.config.js +21 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/conventional-commits/best-practice/package.json +17 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/conventional-commits/best-practice/package.json.declapract.ts +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/bad-practices/data-dir/.declapract.readme.md +10 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/bad-practices/data-dir/src/<star><star>/data/<star><star>/<star>.declapract.ts +19 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/bad-practices/domain-dir/.declapract.readme.md +8 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/bad-practices/domain-dir/src/<star><star>/domain/<star><star>/<star>.declapract.ts +59 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/bad-practices/logic-dir/.declapract.readme.md +8 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/bad-practices/logic-dir/src/<star><star>/logic/<star><star>/<star>.declapract.ts +19 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/bad-practices/model-dir/.declapract.readme.md +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/bad-practices/model-dir/src/<star><star>/<star>.ts.declapract.ts +46 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/bad-practices/model-dir/src/<star><star>/model/<star><star>/<star>.declapract.ts +16 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/bad-practices/nonpublished-modules-dir/src/__nonpublished_modules__/<star><star>/<star>.declapract.ts +17 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/bad-practices/old-import-paths/.declapract.readme.md +21 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/bad-practices/old-import-paths/src/<star><star>/<star>.ts.declapract.ts +67 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/bad-practices/services-dir/.declapract.readme.md +5 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/bad-practices/services-dir/src/<star><star>/services/<star><star>/<star>.declapract.ts +16 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/best-practice/.declapract.readme.md +73 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/best-practice/src/access/daos/<star><star>/<star>.ts.declapract.ts +4 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/best-practice/src/access/sdks/<star><star>/<star>.ts.declapract.ts +4 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/best-practice/src/access/svcs/<star><star>/<star>.ts.declapract.ts +4 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/best-practice/src/contract/<star><star>/<star>.ts.declapract.ts +4 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/best-practice/src/domain.objects/<star><star>/<star>.ts.declapract.ts +4 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/best-practice/src/domain.operations/<star><star>/<star>.ts.declapract.ts +4 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/best-practice/src/infra/<star><star>/<star>.ts.declapract.ts +4 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/domain/bad-practices/schematic-joi-model/src/domain/<star><star>/<star>.ts.declapract.ts +16 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/domain/bad-practices/simple-type-guards/.declapract.readme.md +1 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/domain/bad-practices/simple-type-guards/package.json.declapract.ts +23 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/domain/best-practice/package.json +6 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/domain/best-practice/package.json.declapract.ts +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/domain/best-practice/src/domain/objects/index.ts.declapract.ts +4 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/errors/bad-practices/error-fns/package.json +5 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/errors/bad-practices/error-fns/package.json.declapract.ts +23 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/errors/bad-practices/error-fns/src/<star><star>/<star>.ts.declapract.ts +17 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/errors/bad-practices/local-error-imports/src/<star><star>/<star>.ts.declapract.ts +85 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/errors/bad-practices/own-implementation/src/utils/errors/UnexpectedCodePathError.ts.declapract.ts +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/errors/best-practice/package.json +5 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/errors/best-practice/package.json.declapract.ts +4 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/format/bad-practices/format-script/package.json.declapract.ts +26 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/format/bad-practices/prettier/.declapract.readme.md +6 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/format/bad-practices/prettier/.prettierignore +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/format/bad-practices/prettier/.prettierignore.declapract.ts +8 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/format/bad-practices/prettier/package.json +10 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/format/bad-practices/prettier/package.json.declapract.ts +35 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/format/bad-practices/prettier/prettier.config.js +10 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/format/bad-practices/prettier/prettier.config.js.declapract.ts +8 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/format/best-practice/package.json.declapract.ts +32 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/git/.declapract.integration.test.ts +950 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/git/.test/assets/repo-with-rhachet-only/declapract.use.yml +6 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/git/.test/assets/repo-with-rhachet-only/package.json +4 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/git/.test/assets/repo-without-cache-ignores/declapract.use.yml +9 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/git/.test/assets/repo-without-cache-ignores/package.json +4 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/git/__snapshots__/.declapract.integration.test.ts.snap +51 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/git/best-practice/.declapract.readme.md +23 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/git/best-practice/.gitattributes +7 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/git/best-practice/.gitattributes.declapract.ts +159 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/git/best-practice/.gitignore.declapract.ts +92 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/bad-practices/postinstall/package.json.declapract.ts +18 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/best-practice/.husky/check.commit.sh +7 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/best-practice/.husky/check.lockfile.sh +14 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/best-practice/.husky/check.nvm.sh +4 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/best-practice/.husky/check.timestamps.sh +48 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/best-practice/.husky/check.yalc.sh +11 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/best-practice/.husky/commit-msg +8 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/best-practice/.husky/post-checkout +9 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/best-practice/.husky/post-merge +8 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/best-practice/.husky/post-rewrite +8 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/best-practice/.husky/pre-commit +10 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/best-practice/package.json +9 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/best-practice/package.json.declapract.ts +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/check.timestamps.play.declapract.integration.test.ts +148 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/bad-practices/biome-json-extension/biome.json.declapract.ts +7 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/bad-practices/depcheck-denylisted-ignores/.declapract.readme.md +8 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/bad-practices/depcheck-denylisted-ignores/.depcheckrc.yml.declapract.ts +60 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/bad-practices/eslint/.eslintrc.js +67 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/bad-practices/eslint/.eslintrc.js.declapract.ts +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/bad-practices/eslint/package.json.declapract.ts +51 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/bad-practices/tslint/package.json.declapract.ts +22 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/bad-practices/tslint/tslint.json.declapract.ts +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/best-practice/.declapract.readme.md +5 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/best-practice/.depcheckrc.yml +25 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/best-practice/.depcheckrc.yml.declapract.ts +41 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/best-practice/.dpdmrc.yaml +9 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/best-practice/biome.jsonc +103 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/best-practice/package.json +17 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/best-practice/package.json.declapract.ts +4 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/lint-react/best-practice/package.json +7 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/lint-react/best-practice/package.json.declapract.ts +4 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/lint-react-native/best-practice/.eslintrc.js +57 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/lint-react-native/best-practice/package.json +5 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/lint-react-native/best-practice/package.json.declapract.ts +4 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/node/.test/assets/repo-expo-npmrc/declapract.use.yml +23 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/node/.test/assets/repo-expo-npmrc/package.json +4 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/node/bad-practices/self-deps-not-link/.declapract.readme.md +10 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/node/bad-practices/self-deps-not-link/package.json.declapract.ts +76 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/node/best-practice/.npmrc.declapract.integration.test.ts +165 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/node/best-practice/.npmrc.declapract.ts +60 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/node/best-practice/.nvmrc +1 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/node/best-practice/__snapshots__/.npmrc.declapract.integration.test.ts.snap +24 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/node/best-practice/package.json +15 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/node/best-practice/package.json.declapract.ts +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/node/best-practice/readme.md +1 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/node/best-practice/readme.md.declapract.ts +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/nonpublished-modules/.declapract.readme.md +5 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/nonpublished-modules/bad-practices/ahbode-standard-lambda-handler/.declapract.readme.md +1 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/nonpublished-modules/bad-practices/ahbode-standard-lambda-handler/src/__nonpublished_modules__/ahbode-standard-lambda-handler/<star><star>/<star>.ts.declapract.ts +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/nonpublished-modules/bad-practices/ahbode-standard-lambda-handler/src/contract/handlers/<star>.integration.test.ts +1 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/nonpublished-modules/bad-practices/ahbode-standard-lambda-handler/src/contract/handlers/<star>.integration.test.ts.declapract.ts +15 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/nonpublished-modules/bad-practices/ahbode-standard-lambda-handler/src/contract/handlers/<star>.ts +1 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/nonpublished-modules/bad-practices/ahbode-standard-lambda-handler/src/contract/handlers/<star>.ts.declapract.ts +13 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/nonpublished-modules/bad-practices/deep-omit/.declapract.readme.md +1 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/nonpublished-modules/bad-practices/deep-omit/src/__nonpublished_modules__/deep-omit/<star><star>/<star>.ts.declapract.ts +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/nonpublished-modules/bad-practices/deep-omit/src/data/dao/<star><star>/<star>.integration.test.ts +1 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/nonpublished-modules/bad-practices/deep-omit/src/data/dao/<star><star>/<star>.integration.test.ts.declapract.ts +18 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/nonpublished-modules/bad-practices/simple-dynamodb-client/.declapract.readme.md +1 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/nonpublished-modules/bad-practices/simple-dynamodb-client/src/__nonpublished_modules__/simple-dynamodb-client/<star><star>/<star>.ts.declapract.ts +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/package-json-order/best-practice/.declapract.readme.md +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/package-json-order/best-practice/package.json.declapract.ts +227 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/.declapract.integration.test.ts +175 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/.test/assets/repo-npm-to-pnpm/.husky/check.lockfile.sh +10 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/.test/assets/repo-npm-to-pnpm/declapract.use.yml +7 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/.test/assets/repo-npm-to-pnpm/package.json +16 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/__snapshots__/.declapract.integration.test.ts.snap +68 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/bad-practices/husky-lockfile-check/.declapract.readme.md +17 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/bad-practices/husky-lockfile-check/.husky/check.lockfile.sh.declapract.ts +28 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/bad-practices/npm-overrides/.declapract.readme.md +20 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/bad-practices/npm-overrides/package.json.declapract.ts +75 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/bad-practices/package-lock-json/.declapract.readme.md +30 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/bad-practices/package-lock-json/package-lock.json.declapract.integration.test.ts +105 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/bad-practices/package-lock-json/package-lock.json.declapract.ts +41 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/best-practice/.declapract.readme.md +22 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/best-practice/package.json +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/best-practice/package.json.declapract.ts +15 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/bad-practices/deprecated-reviewers-variable/declapract.use.yml.declapract.ts +41 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/bad-practices/old-declastruct-resources-path/provision/github/declastruct.resources.ts.declapract.ts +7 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/bad-practices/terraform-github/provision/github/environment/import-existing-repo.sh +12 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/bad-practices/terraform-github/provision/github/environment/import-existing-repo.sh.declapract.ts +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/bad-practices/terraform-github/provision/github/environment/main.tf +20 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/bad-practices/terraform-github/provision/github/environment/main.tf.declapract.ts +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/bad-practices/terraform-github/provision/github/environment/versions.tf +9 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/bad-practices/terraform-github/provision/github/environment/versions.tf.declapract.ts +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/bad-practices/terraform-github/provision/github/product/repository.tf +74 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/bad-practices/terraform-github/provision/github/product/repository.tf.declapract.ts +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/best-practice/.declapract.readme.md +7 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/best-practice/package.json +7 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/best-practice/package.json.declapract.ts +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/best-practice/provision/github.repo/resources.ts +229 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/rhachet/bad-practices/deprecated-use-file/.declapract.readme.md +11 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/rhachet/bad-practices/deprecated-use-file/rhachet.use.ts.declapract.ts +12 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/rhachet/bad-practices/prod-deps/.declapract.readme.md +55 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/rhachet/bad-practices/prod-deps/package.json +5 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/rhachet/bad-practices/prod-deps/package.json.declapract.ts +47 -0
- package/dist/.test/assets/expo-fullusecase/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/expo-fullusecase/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/expo-fullusecase/declarations/practices/rhachet/bad-practices/review-peer-artifacts/.declapract.readme.md +12 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/rhachet/best-practice/.agent/keyrack.yml.declapract.ts +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/rhachet/best-practice/.declapract.readme.md +32 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/rhachet/best-practice/.gitignore.declapract.ts +64 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/rhachet/best-practice/package.json +18 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/rhachet/best-practice/package.json.declapract.ts +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-any/bad-practices/javascript-config-files/jest.<star>.js.declapract.ts +17 -0
- package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/old-acceptance-dir-location/.declapract.integration.test.ts +2 -2
- package/dist/.test/assets/expo-fullusecase/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/expo-fullusecase/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/_utils/getDataFromLastOpenBracketAtStartOfLine.ts.declapract.ts +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/_utils/invokeLambda.ts.declapract.ts +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils-3/blackbox/_utils/environment.ts.declapract.ts +3 -0
- package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/best-practice/package.json +1 -3
- package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-any/best-practice/package.json.declapract.ts +3 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-any/best-practice/package.json.shell-flags.declapract.integration.test.ts +129 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/.declapract.integration.test.ts +134 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/.test/assets/repo-expo-greenfield/declapract.use.yml +6 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/.test/assets/repo-expo-greenfield/package.json +4 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/__snapshots__/.declapract.integration.test.ts.snap +112 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/bad-practices/inline-jest-config/.declapract.readme.md +22 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/bad-practices/inline-jest-config/package.json.declapract.ts +36 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/best-practice/jest.acceptance.config.ts +43 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/best-practice/jest.acceptance.env.ts +15 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/best-practice/jest.integration.config.ts +42 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/best-practice/jest.integration.env.ts +22 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/best-practice/jest.unit.config.ts +53 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/best-practice/jest.unit.env.ts +18 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/best-practice/package.json +9 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/best-practice/package.json.declapract.ts +16 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/typescript-any/bad-practices/relative-imports/.declapract.readme.md +45 -0
- package/dist/{practices/typescript → .test/assets/expo-fullusecase/declarations/practices/typescript-any}/bad-practices/relative-imports/src/<star><star>/<star>.ts.declapract.ts +11 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/typescript-any/best-practice/.declapract.readme.md +17 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/typescript-any/best-practice/package.json +8 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/typescript-any/best-practice/package.json.declapract.ts +11 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/typescript-expo/best-practice/package.json +6 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/typescript-expo/best-practice/package.json.declapract.integration.test.ts +30 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/typescript-expo/best-practice/package.json.declapract.ts +12 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/typescript-expo/best-practice/tsconfig.json +14 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/typescript-expo/best-practice/tsconfig.json.declapract.integration.test.ts +32 -0
- package/dist/.test/assets/expo-fullusecase/declarations/practices/typescript-expo/best-practice/tsconfig.json.declapract.ts +12 -0
- package/dist/.test/assets/expo-fullusecase/declarations/useCases.yml +36 -0
- package/dist/.test/assets/expo-fullusecase/repo-greenfield/app.json +6 -0
- package/dist/.test/assets/expo-fullusecase/repo-greenfield/declapract.use.yml +24 -0
- package/dist/.test/assets/expo-fullusecase/repo-greenfield/package.json +7 -0
- package/dist/.test/assets/expo-migration/declarations/declapract.declare.yml +4 -0
- package/dist/.test/assets/expo-migration/declarations/practices/cicd-app-react-native-expo/.declapract.integration.test.ts +810 -0
- package/dist/.test/assets/expo-migration/declarations/practices/cicd-app-react-native-expo/__snapshots__/.declapract.integration.test.ts.snap +289 -0
- package/dist/.test/assets/expo-migration/declarations/practices/cicd-app-react-native-expo/best-practice/.declapract.readme.md +27 -0
- package/dist/.test/assets/expo-migration/declarations/practices/cicd-app-react-native-expo/best-practice/.github/workflows/.deploy-expo.yml +127 -0
- package/dist/.test/assets/expo-migration/declarations/practices/cicd-app-react-native-expo/best-practice/.github/workflows/deploy.yml +76 -0
- package/dist/.test/assets/expo-migration/declarations/practices/cicd-app-react-native-expo/best-practice/.github/workflows/test.yml +27 -0
- package/dist/.test/assets/expo-migration/declarations/practices/cicd-app-react-native-expo/best-practice/.gitignore.declapract.ts +28 -0
- package/dist/.test/assets/expo-migration/declarations/practices/cicd-app-react-native-expo/best-practice/package.json +36 -0
- package/dist/.test/assets/expo-migration/declarations/practices/cicd-app-react-native-expo/best-practice/package.json.declapract.ts +3 -0
- package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/bad-practices/data-dir/.declapract.readme.md +10 -0
- package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/bad-practices/data-dir/src/<star><star>/data/<star><star>/<star>.declapract.ts +19 -0
- package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/bad-practices/domain-dir/.declapract.readme.md +8 -0
- package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/bad-practices/domain-dir/src/<star><star>/domain/<star><star>/<star>.declapract.ts +59 -0
- package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/bad-practices/logic-dir/.declapract.readme.md +8 -0
- package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/bad-practices/logic-dir/src/<star><star>/logic/<star><star>/<star>.declapract.ts +19 -0
- package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/bad-practices/model-dir/.declapract.readme.md +3 -0
- package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/bad-practices/model-dir/src/<star><star>/<star>.ts.declapract.ts +46 -0
- package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/bad-practices/model-dir/src/<star><star>/model/<star><star>/<star>.declapract.ts +16 -0
- package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/bad-practices/nonpublished-modules-dir/src/__nonpublished_modules__/<star><star>/<star>.declapract.ts +17 -0
- package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/bad-practices/old-import-paths/.declapract.readme.md +21 -0
- package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/bad-practices/old-import-paths/src/<star><star>/<star>.ts.declapract.ts +67 -0
- package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/bad-practices/services-dir/.declapract.readme.md +5 -0
- package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/bad-practices/services-dir/src/<star><star>/services/<star><star>/<star>.declapract.ts +16 -0
- package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/best-practice/.declapract.readme.md +73 -0
- package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/best-practice/src/access/daos/<star><star>/<star>.ts.declapract.ts +4 -0
- package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/best-practice/src/access/sdks/<star><star>/<star>.ts.declapract.ts +4 -0
- package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/best-practice/src/access/svcs/<star><star>/<star>.ts.declapract.ts +4 -0
- package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/best-practice/src/contract/<star><star>/<star>.ts.declapract.ts +4 -0
- package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/best-practice/src/domain.objects/<star><star>/<star>.ts.declapract.ts +4 -0
- package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/best-practice/src/domain.operations/<star><star>/<star>.ts.declapract.ts +4 -0
- package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/best-practice/src/infra/<star><star>/<star>.ts.declapract.ts +4 -0
- package/dist/.test/assets/expo-migration/declarations/practices/domain/bad-practices/schematic-joi-model/src/domain/<star><star>/<star>.ts.declapract.ts +16 -0
- package/dist/.test/assets/expo-migration/declarations/practices/domain/bad-practices/simple-type-guards/.declapract.readme.md +1 -0
- package/dist/.test/assets/expo-migration/declarations/practices/domain/bad-practices/simple-type-guards/package.json.declapract.ts +23 -0
- package/dist/.test/assets/expo-migration/declarations/practices/domain/best-practice/package.json +6 -0
- package/dist/.test/assets/expo-migration/declarations/practices/domain/best-practice/package.json.declapract.ts +3 -0
- package/dist/.test/assets/expo-migration/declarations/practices/domain/best-practice/src/domain/objects/index.ts.declapract.ts +4 -0
- package/dist/.test/assets/expo-migration/declarations/practices/git/.declapract.integration.test.ts +950 -0
- package/dist/.test/assets/expo-migration/declarations/practices/git/.test/assets/repo-with-rhachet-only/declapract.use.yml +6 -0
- package/dist/.test/assets/expo-migration/declarations/practices/git/.test/assets/repo-with-rhachet-only/package.json +4 -0
- package/dist/.test/assets/expo-migration/declarations/practices/git/.test/assets/repo-without-cache-ignores/declapract.use.yml +9 -0
- package/dist/.test/assets/expo-migration/declarations/practices/git/.test/assets/repo-without-cache-ignores/package.json +4 -0
- package/dist/.test/assets/expo-migration/declarations/practices/git/__snapshots__/.declapract.integration.test.ts.snap +51 -0
- package/dist/.test/assets/expo-migration/declarations/practices/git/best-practice/.declapract.readme.md +23 -0
- package/dist/.test/assets/expo-migration/declarations/practices/git/best-practice/.gitattributes +7 -0
- package/dist/.test/assets/expo-migration/declarations/practices/git/best-practice/.gitattributes.declapract.ts +159 -0
- package/dist/.test/assets/expo-migration/declarations/practices/git/best-practice/.gitignore.declapract.ts +92 -0
- package/dist/.test/assets/expo-migration/declarations/practices/node/.test/assets/repo-expo-npmrc/declapract.use.yml +23 -0
- package/dist/.test/assets/expo-migration/declarations/practices/node/.test/assets/repo-expo-npmrc/package.json +4 -0
- package/dist/.test/assets/expo-migration/declarations/practices/node/bad-practices/self-deps-not-link/.declapract.readme.md +10 -0
- package/dist/.test/assets/expo-migration/declarations/practices/node/bad-practices/self-deps-not-link/package.json.declapract.ts +76 -0
- package/dist/.test/assets/expo-migration/declarations/practices/node/best-practice/.npmrc.declapract.integration.test.ts +165 -0
- package/dist/.test/assets/expo-migration/declarations/practices/node/best-practice/.npmrc.declapract.ts +60 -0
- package/dist/.test/assets/expo-migration/declarations/practices/node/best-practice/.nvmrc +1 -0
- package/dist/.test/assets/expo-migration/declarations/practices/node/best-practice/__snapshots__/.npmrc.declapract.integration.test.ts.snap +24 -0
- package/dist/.test/assets/expo-migration/declarations/practices/node/best-practice/package.json +15 -0
- package/dist/.test/assets/expo-migration/declarations/practices/node/best-practice/package.json.declapract.ts +3 -0
- package/dist/.test/assets/expo-migration/declarations/practices/node/best-practice/readme.md +1 -0
- package/dist/.test/assets/expo-migration/declarations/practices/node/best-practice/readme.md.declapract.ts +3 -0
- package/dist/.test/assets/expo-migration/declarations/practices/pnpm/.declapract.integration.test.ts +175 -0
- package/dist/.test/assets/expo-migration/declarations/practices/pnpm/.test/assets/repo-npm-to-pnpm/.husky/check.lockfile.sh +10 -0
- package/dist/.test/assets/expo-migration/declarations/practices/pnpm/.test/assets/repo-npm-to-pnpm/declapract.use.yml +7 -0
- package/dist/.test/assets/expo-migration/declarations/practices/pnpm/.test/assets/repo-npm-to-pnpm/package.json +16 -0
- package/dist/.test/assets/expo-migration/declarations/practices/pnpm/__snapshots__/.declapract.integration.test.ts.snap +68 -0
- package/dist/.test/assets/expo-migration/declarations/practices/pnpm/bad-practices/husky-lockfile-check/.declapract.readme.md +17 -0
- package/dist/.test/assets/expo-migration/declarations/practices/pnpm/bad-practices/husky-lockfile-check/.husky/check.lockfile.sh.declapract.ts +28 -0
- package/dist/.test/assets/expo-migration/declarations/practices/pnpm/bad-practices/npm-overrides/.declapract.readme.md +20 -0
- package/dist/.test/assets/expo-migration/declarations/practices/pnpm/bad-practices/npm-overrides/package.json.declapract.ts +75 -0
- package/dist/.test/assets/expo-migration/declarations/practices/pnpm/bad-practices/package-lock-json/.declapract.readme.md +30 -0
- package/dist/.test/assets/expo-migration/declarations/practices/pnpm/bad-practices/package-lock-json/package-lock.json.declapract.integration.test.ts +105 -0
- package/dist/.test/assets/expo-migration/declarations/practices/pnpm/bad-practices/package-lock-json/package-lock.json.declapract.ts +41 -0
- package/dist/.test/assets/expo-migration/declarations/practices/pnpm/best-practice/.declapract.readme.md +22 -0
- package/dist/.test/assets/expo-migration/declarations/practices/pnpm/best-practice/package.json +3 -0
- package/dist/.test/assets/expo-migration/declarations/practices/pnpm/best-practice/package.json.declapract.ts +15 -0
- package/dist/.test/assets/expo-migration/declarations/practices/rhachet/bad-practices/deprecated-use-file/.declapract.readme.md +11 -0
- package/dist/.test/assets/expo-migration/declarations/practices/rhachet/bad-practices/deprecated-use-file/rhachet.use.ts.declapract.ts +12 -0
- package/dist/.test/assets/expo-migration/declarations/practices/rhachet/bad-practices/prod-deps/.declapract.readme.md +55 -0
- package/dist/.test/assets/expo-migration/declarations/practices/rhachet/bad-practices/prod-deps/package.json +5 -0
- package/dist/.test/assets/expo-migration/declarations/practices/rhachet/bad-practices/prod-deps/package.json.declapract.ts +47 -0
- package/dist/.test/assets/expo-migration/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/expo-migration/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/expo-migration/declarations/practices/rhachet/bad-practices/review-peer-artifacts/.declapract.readme.md +12 -0
- package/dist/.test/assets/expo-migration/declarations/practices/rhachet/best-practice/.agent/keyrack.yml.declapract.ts +3 -0
- package/dist/.test/assets/expo-migration/declarations/practices/rhachet/best-practice/.declapract.readme.md +32 -0
- package/dist/.test/assets/expo-migration/declarations/practices/rhachet/best-practice/.gitignore.declapract.ts +64 -0
- package/dist/.test/assets/expo-migration/declarations/practices/rhachet/best-practice/package.json +18 -0
- package/dist/.test/assets/expo-migration/declarations/practices/rhachet/best-practice/package.json.declapract.ts +3 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/javascript-config-files/.declapract.readme.md +1 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/javascript-config-files/jest.<star>.js.declapract.ts +17 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/mocks/.declapract.readme.md +8 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/mocks/<star><star>/__mock__/<star>.js +3 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/mocks/<star><star>/__mock__/<star>.ts +3 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/.declapract.integration.test.ts +63 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/.declapract.readme.md +22 -0
- package/dist/.test/assets/expo-migration/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/expo-migration/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/expo-migration/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/expo-migration/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/.test/assets/demo-repo-with-accept-blackbox-dir/declapract.declare.yml +4 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/.test/assets/demo-repo-with-accept-blackbox-dir/declapract.use.yml +5 -0
- package/dist/.test/assets/expo-migration/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/expo-migration/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/accept.blackbox/<star><star>/<star>.declapract.ts +19 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/acceptance/<star><star>/<star>.declapract.ts +19 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-acceptance-import-paths/.declapract.readme.md +31 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-acceptance-import-paths/<star><star>/<star>.ts.declapract.ts +25 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/_utils/getDataFromLastOpenBracketAtStartOfLine.ts.declapract.ts +3 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/_utils/invokeLambda.ts.declapract.ts +3 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/lambdas/<star>.ts.declapract.ts +44 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils-2/blackbox/lambdas/<star>.ts.declapract.ts +22 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils-3/blackbox/_utils/environment.ts.declapract.ts +3 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils-3/blackbox/lambdas/<star>.ts.declapract.ts +18 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-extension-pattern/.declapract.readme.md +3 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-extension-pattern/<star><star>/<star>.test.acceptance.ts.declapract.ts +11 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-extension-pattern/<star><star>/<star>.test.integration.ts.declapract.ts +11 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-test-utils-and-assets-location/.declapract.readme.md +8 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-test-utils-and-assets-location/<star><star>/<star>.ts.declapract.ts +27 -0
- package/dist/.test/assets/expo-migration/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/expo-migration/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/expo-migration/declarations/practices/tests-any/best-practice/.declapract.readme.md +45 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/best-practice/.declapract.todo.md +3 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/best-practice/package.json +17 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/best-practice/package.json.declapract.ts +3 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/best-practice/package.json.shell-flags.declapract.integration.test.ts +129 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/best-practice/src/<star><star>/<star>.integration.test.ts.declapract.ts +3 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-any/best-practice/src/<star><star>/<star>.test.ts.declapract.ts +3 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/.declapract.integration.test.ts +134 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/.test/assets/repo-expo-greenfield/declapract.use.yml +6 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/.test/assets/repo-expo-greenfield/package.json +4 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/__snapshots__/.declapract.integration.test.ts.snap +112 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/bad-practices/inline-jest-config/.declapract.readme.md +22 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/bad-practices/inline-jest-config/package.json.declapract.ts +36 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/best-practice/jest.acceptance.config.ts +43 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/best-practice/jest.acceptance.env.ts +15 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/best-practice/jest.config.ts +7 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/best-practice/jest.integration.config.ts +42 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/best-practice/jest.integration.env.ts +22 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/best-practice/jest.unit.config.ts +53 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/best-practice/jest.unit.env.ts +18 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/best-practice/package.json +9 -0
- package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/best-practice/package.json.declapract.ts +16 -0
- package/dist/.test/assets/expo-migration/declarations/practices/typescript-any/bad-practices/relative-imports/.declapract.readme.md +45 -0
- package/dist/.test/assets/expo-migration/declarations/practices/typescript-any/bad-practices/relative-imports/src/<star><star>/<star>.ts.declapract.ts +97 -0
- package/dist/.test/assets/expo-migration/declarations/practices/typescript-any/best-practice/.declapract.readme.md +17 -0
- package/dist/.test/assets/expo-migration/declarations/practices/typescript-any/best-practice/package.json +8 -0
- package/dist/.test/assets/expo-migration/declarations/practices/typescript-any/best-practice/package.json.declapract.ts +11 -0
- package/dist/.test/assets/expo-migration/declarations/practices/typescript-expo/best-practice/package.json +6 -0
- package/dist/.test/assets/expo-migration/declarations/practices/typescript-expo/best-practice/package.json.declapract.integration.test.ts +30 -0
- package/dist/.test/assets/expo-migration/declarations/practices/typescript-expo/best-practice/package.json.declapract.ts +12 -0
- package/dist/.test/assets/expo-migration/declarations/practices/typescript-expo/best-practice/tsconfig.json +14 -0
- package/dist/.test/assets/expo-migration/declarations/practices/typescript-expo/best-practice/tsconfig.json.declapract.integration.test.ts +32 -0
- package/dist/.test/assets/expo-migration/declarations/practices/typescript-expo/best-practice/tsconfig.json.declapract.ts +12 -0
- package/dist/.test/assets/expo-migration/declarations/useCases.yml +21 -0
- package/dist/.test/assets/expo-migration/repo-app-protools-shaped/.github/workflows/.deploy-expo.yml +30 -0
- package/dist/.test/assets/expo-migration/repo-app-protools-shaped/.husky/check.lockfile.sh +5 -0
- package/dist/.test/assets/expo-migration/repo-app-protools-shaped/declapract.use.yml +24 -0
- package/dist/.test/assets/expo-migration/repo-app-protools-shaped/jest.config.js +8 -0
- package/dist/.test/assets/expo-migration/repo-app-protools-shaped/package-lock.json +7 -0
- package/dist/.test/assets/expo-migration/repo-app-protools-shaped/package.json +22 -0
- package/dist/.test/assets/expo-migration/repo-app-protools-shaped/pnpm-lock.yaml +5 -0
- package/dist/.test/assets/expo-migration/repo-app-protools-shaped/src/data/dao/daoCustomer.ts +9 -0
- package/dist/.test/assets/expo-migration/repo-app-protools-shaped/src/logic/customer/getCustomer.ts +25 -0
- package/dist/.test/assets/expo-migration/repo-app-protools-shaped/src/logic/shared/formatCustomer.ts +8 -0
- package/dist/.test/assets/expo-migration/repo-app-protools-shaped/tsconfig.json +12 -0
- package/dist/.test/assets/expo-toolchain/declarations/declapract.declare.yml +4 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/javascript-config-files/.declapract.readme.md +1 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/javascript-config-files/jest.<star>.js.declapract.ts +17 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/mocks/.declapract.readme.md +8 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/mocks/<star><star>/__mock__/<star>.js +3 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/mocks/<star><star>/__mock__/<star>.ts +3 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/.declapract.integration.test.ts +63 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/.declapract.readme.md +22 -0
- package/dist/.test/assets/expo-toolchain/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/expo-toolchain/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/expo-toolchain/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/expo-toolchain/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/.test/assets/demo-repo-with-accept-blackbox-dir/declapract.declare.yml +4 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/.test/assets/demo-repo-with-accept-blackbox-dir/declapract.use.yml +5 -0
- package/dist/.test/assets/expo-toolchain/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/expo-toolchain/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/accept.blackbox/<star><star>/<star>.declapract.ts +19 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/acceptance/<star><star>/<star>.declapract.ts +19 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-acceptance-import-paths/.declapract.readme.md +31 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-acceptance-import-paths/<star><star>/<star>.ts.declapract.ts +25 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/_utils/getDataFromLastOpenBracketAtStartOfLine.ts.declapract.ts +3 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/_utils/invokeLambda.ts.declapract.ts +3 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/lambdas/<star>.ts.declapract.ts +44 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils-2/blackbox/lambdas/<star>.ts.declapract.ts +22 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils-3/blackbox/_utils/environment.ts.declapract.ts +3 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils-3/blackbox/lambdas/<star>.ts.declapract.ts +18 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-extension-pattern/.declapract.readme.md +3 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-extension-pattern/<star><star>/<star>.test.acceptance.ts.declapract.ts +11 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-extension-pattern/<star><star>/<star>.test.integration.ts.declapract.ts +11 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-test-utils-and-assets-location/.declapract.readme.md +8 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-test-utils-and-assets-location/<star><star>/<star>.ts.declapract.ts +27 -0
- package/dist/.test/assets/expo-toolchain/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/expo-toolchain/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/expo-toolchain/declarations/practices/tests-any/best-practice/.declapract.readme.md +45 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/best-practice/.declapract.todo.md +3 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/best-practice/package.json +17 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/best-practice/package.json.declapract.ts +3 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/best-practice/package.json.shell-flags.declapract.integration.test.ts +129 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/best-practice/src/<star><star>/<star>.integration.test.ts.declapract.ts +3 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/best-practice/src/<star><star>/<star>.test.ts.declapract.ts +3 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/.declapract.integration.test.ts +134 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/.test/assets/repo-expo-greenfield/declapract.use.yml +6 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/.test/assets/repo-expo-greenfield/package.json +4 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/__snapshots__/.declapract.integration.test.ts.snap +112 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/bad-practices/inline-jest-config/.declapract.readme.md +22 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/bad-practices/inline-jest-config/package.json.declapract.ts +36 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/best-practice/jest.acceptance.config.ts +43 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/best-practice/jest.acceptance.env.ts +15 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/best-practice/jest.config.ts +7 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/best-practice/jest.integration.config.ts +42 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/best-practice/jest.integration.env.ts +22 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/best-practice/jest.unit.config.ts +53 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/best-practice/jest.unit.env.ts +18 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/best-practice/package.json +9 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/best-practice/package.json.declapract.ts +16 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/typescript-any/bad-practices/relative-imports/.declapract.readme.md +45 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/typescript-any/bad-practices/relative-imports/src/<star><star>/<star>.ts.declapract.ts +97 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/typescript-any/best-practice/.declapract.readme.md +17 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/typescript-any/best-practice/package.json +8 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/typescript-any/best-practice/package.json.declapract.ts +11 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/typescript-expo/best-practice/package.json +6 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/typescript-expo/best-practice/package.json.declapract.integration.test.ts +30 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/typescript-expo/best-practice/package.json.declapract.ts +12 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/typescript-expo/best-practice/tsconfig.json +14 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/typescript-expo/best-practice/tsconfig.json.declapract.integration.test.ts +32 -0
- package/dist/.test/assets/expo-toolchain/declarations/practices/typescript-expo/best-practice/tsconfig.json.declapract.ts +12 -0
- package/dist/.test/assets/expo-toolchain/declarations/useCases.yml +12 -0
- package/dist/.test/assets/pnpm/declarations/declapract.declare.yml +4 -0
- package/dist/.test/assets/pnpm/declarations/practices/pnpm/.declapract.integration.test.ts +175 -0
- package/dist/.test/assets/pnpm/declarations/practices/pnpm/.test/assets/repo-npm-to-pnpm/.husky/check.lockfile.sh +10 -0
- package/dist/.test/assets/pnpm/declarations/practices/pnpm/.test/assets/repo-npm-to-pnpm/declapract.use.yml +7 -0
- package/dist/.test/assets/pnpm/declarations/practices/pnpm/.test/assets/repo-npm-to-pnpm/package.json +16 -0
- package/dist/.test/assets/pnpm/declarations/practices/pnpm/__snapshots__/.declapract.integration.test.ts.snap +68 -0
- package/dist/.test/assets/pnpm/declarations/practices/pnpm/bad-practices/husky-lockfile-check/.declapract.readme.md +17 -0
- package/dist/.test/assets/pnpm/declarations/practices/pnpm/bad-practices/husky-lockfile-check/.husky/check.lockfile.sh.declapract.ts +28 -0
- package/dist/.test/assets/pnpm/declarations/practices/pnpm/bad-practices/npm-overrides/.declapract.readme.md +20 -0
- package/dist/.test/assets/pnpm/declarations/practices/pnpm/bad-practices/npm-overrides/package.json.declapract.ts +75 -0
- package/dist/.test/assets/pnpm/declarations/practices/pnpm/bad-practices/package-lock-json/.declapract.readme.md +30 -0
- package/dist/.test/assets/pnpm/declarations/practices/pnpm/bad-practices/package-lock-json/package-lock.json.declapract.integration.test.ts +105 -0
- package/dist/.test/assets/pnpm/declarations/practices/pnpm/bad-practices/package-lock-json/package-lock.json.declapract.ts +41 -0
- package/dist/.test/assets/pnpm/declarations/practices/pnpm/best-practice/.declapract.readme.md +22 -0
- package/dist/.test/assets/pnpm/declarations/practices/pnpm/best-practice/package.json +3 -0
- package/dist/.test/assets/pnpm/declarations/practices/pnpm/best-practice/package.json.declapract.ts +15 -0
- package/dist/.test/assets/pnpm/declarations/useCases.yml +7 -0
- package/dist/__snapshots__/actionPins.declapract.integration.test.ts.snap +70 -0
- package/dist/actionPins.declapract.integration.test.ts +785 -0
- package/dist/practices/cache/.declapract.integration.test.ts +3 -3
- package/dist/practices/cicd-app-react-native-expo/.declapract.integration.test.ts +810 -0
- package/dist/practices/cicd-app-react-native-expo/__snapshots__/.declapract.integration.test.ts.snap +289 -0
- package/dist/practices/cicd-app-react-native-expo/best-practice/.github/workflows/.deploy-expo.yml +24 -25
- package/dist/practices/cicd-app-react-native-expo/best-practice/.github/workflows/deploy.yml +4 -0
- package/dist/practices/cicd-app-react-native-expo/best-practice/.github/workflows/test.yml +4 -0
- package/dist/practices/cicd-app-react-native-expo/best-practice/package.json +0 -7
- package/dist/practices/cicd-common/.declapract.integration.test.ts +572 -0
- package/dist/practices/cicd-common/.test/assets/repo-with-unpinned-workflow/.github/workflows/.test.yml +19 -0
- package/dist/practices/cicd-common/.test/assets/repo-with-unpinned-workflow/.github/workflows/consumer-owned.yml +21 -0
- package/dist/practices/cicd-common/.test/assets/repo-with-unpinned-workflow/.github/workflows/review.yml +26 -0
- package/dist/practices/cicd-common/.test/assets/repo-with-unpinned-workflow/declapract.use.yml +6 -0
- package/dist/practices/cicd-common/.test/assets/repo-with-unpinned-workflow/package.json +4 -0
- package/dist/practices/cicd-common/__snapshots__/.declapract.integration.test.ts.snap +550 -0
- package/dist/practices/cicd-common/best-practice/.declapract.readme.md +5 -0
- package/dist/practices/cicd-common/best-practice/.github/workflows/.declastruct.yml +12 -12
- package/dist/practices/cicd-common/best-practice/.github/workflows/.install.yml +5 -5
- package/dist/practices/cicd-common/best-practice/.github/workflows/.test.yml +25 -25
- package/dist/practices/cicd-common/best-practice/.github/workflows/release.yml +2 -2
- package/dist/practices/cicd-common/best-practice/.github/workflows/review.yml +1 -1
- package/dist/practices/cicd-package/best-practice/.github/workflows/.publish-npm.yml +3 -3
- package/dist/practices/cicd-package/best-practice/.github/workflows/provision.yml +4 -0
- package/dist/practices/cicd-service/best-practice/.github/workflows/.deploy-sls.yml +13 -13
- package/dist/practices/cicd-service/best-practice/.github/workflows/.sql-schema-control.yml +8 -8
- package/dist/practices/cicd-service/best-practice/.github/workflows/.terraform.yml +6 -6
- package/dist/practices/cicd-service/best-practice/.github/workflows/provision.yml +4 -0
- package/dist/practices/directory-structure-src/bad-practices/old-import-paths/.declapract.readme.md +10 -0
- package/dist/practices/directory-structure-src/bad-practices/old-import-paths/src/<star><star>/<star>.ts.declapract.ts +13 -1
- package/dist/practices/node/.test/assets/repo-expo-npmrc/declapract.use.yml +23 -0
- package/dist/practices/node/.test/assets/repo-expo-npmrc/package.json +4 -0
- package/dist/practices/node/best-practice/.npmrc.declapract.integration.test.ts +165 -0
- package/dist/practices/node/best-practice/.npmrc.declapract.ts +60 -0
- package/dist/practices/node/best-practice/__snapshots__/.npmrc.declapract.integration.test.ts.snap +24 -0
- package/dist/practices/pnpm/.declapract.integration.test.ts +175 -0
- package/dist/practices/pnpm/.test/assets/repo-npm-to-pnpm/.husky/check.lockfile.sh +10 -0
- package/dist/practices/pnpm/.test/assets/repo-npm-to-pnpm/declapract.use.yml +7 -0
- package/dist/practices/pnpm/.test/assets/repo-npm-to-pnpm/package.json +16 -0
- package/dist/practices/pnpm/__snapshots__/.declapract.integration.test.ts.snap +68 -0
- package/dist/practices/pnpm/bad-practices/husky-lockfile-check/.declapract.readme.md +17 -0
- package/dist/practices/pnpm/bad-practices/husky-lockfile-check/.husky/check.lockfile.sh.declapract.ts +28 -0
- package/dist/practices/pnpm/bad-practices/npm-overrides/.declapract.readme.md +20 -0
- package/dist/practices/pnpm/bad-practices/npm-overrides/package.json.declapract.ts +75 -0
- package/dist/practices/pnpm/bad-practices/package-lock-json/.declapract.readme.md +30 -0
- package/dist/practices/pnpm/bad-practices/package-lock-json/package-lock.json.declapract.integration.test.ts +105 -0
- package/dist/practices/pnpm/bad-practices/package-lock-json/package-lock.json.declapract.ts +40 -2
- package/dist/practices/pnpm/best-practice/.declapract.readme.md +22 -0
- package/dist/practices/pnpm/best-practice/package.json +1 -1
- package/dist/practices/pnpm/best-practice/package.json.declapract.ts +12 -0
- package/dist/practices/tests-any/bad-practices/javascript-config-files/.declapract.readme.md +1 -0
- package/dist/practices/tests-any/bad-practices/javascript-config-files/jest.<star>.js.declapract.ts +17 -0
- package/dist/practices/tests-any/bad-practices/mocks/.declapract.readme.md +8 -0
- package/dist/practices/tests-any/bad-practices/mocks/<star><star>/__mock__/<star>.js +3 -0
- package/dist/practices/tests-any/bad-practices/mocks/<star><star>/__mock__/<star>.ts +3 -0
- package/dist/practices/tests-any/bad-practices/old-acceptance-dir-location/.declapract.integration.test.ts +63 -0
- package/dist/practices/tests-any/bad-practices/old-acceptance-dir-location/.declapract.readme.md +22 -0
- package/dist/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/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/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/practices/tests-any/bad-practices/old-acceptance-dir-location/.test/assets/demo-repo-with-accept-blackbox-dir/declapract.declare.yml +4 -0
- package/dist/practices/tests-any/bad-practices/old-acceptance-dir-location/.test/assets/demo-repo-with-accept-blackbox-dir/declapract.use.yml +5 -0
- package/dist/practices/tests-any/bad-practices/old-acceptance-dir-location/.test/assets/demo-repo-with-accept-blackbox-dir/package.json +4 -0
- package/dist/practices/tests-any/bad-practices/old-acceptance-dir-location/accept.blackbox/<star><star>/<star>.declapract.ts +19 -0
- package/dist/practices/tests-any/bad-practices/old-acceptance-dir-location/acceptance/<star><star>/<star>.declapract.ts +19 -0
- package/dist/practices/tests-any/bad-practices/old-acceptance-import-paths/.declapract.readme.md +31 -0
- package/dist/practices/tests-any/bad-practices/old-acceptance-import-paths/<star><star>/<star>.ts.declapract.ts +25 -0
- package/dist/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/_utils/getDataFromLastOpenBracketAtStartOfLine.ts.declapract.ts +3 -0
- package/dist/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/_utils/invokeLambda.ts.declapract.ts +3 -0
- package/dist/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/lambdas/<star>.ts.declapract.ts +44 -0
- package/dist/practices/tests-any/bad-practices/old-acceptance-test-utils-2/blackbox/lambdas/<star>.ts.declapract.ts +22 -0
- package/dist/practices/tests-any/bad-practices/old-acceptance-test-utils-3/blackbox/_utils/environment.ts.declapract.ts +3 -0
- package/dist/practices/tests-any/bad-practices/old-acceptance-test-utils-3/blackbox/lambdas/<star>.ts.declapract.ts +18 -0
- package/dist/practices/tests-any/bad-practices/old-extension-pattern/.declapract.readme.md +3 -0
- package/dist/practices/tests-any/bad-practices/old-extension-pattern/<star><star>/<star>.test.acceptance.ts.declapract.ts +11 -0
- package/dist/practices/tests-any/bad-practices/old-extension-pattern/<star><star>/<star>.test.integration.ts.declapract.ts +11 -0
- package/dist/practices/tests-any/bad-practices/old-test-utils-and-assets-location/.declapract.readme.md +8 -0
- package/dist/practices/tests-any/bad-practices/old-test-utils-and-assets-location/<star><star>/<star>.ts.declapract.ts +27 -0
- package/dist/practices/tests-any/bad-practices/old-test-utils-and-assets-location/<star><star>/__test_assets__/<star><star>/<star>.declapract.ts +17 -0
- package/dist/practices/tests-any/bad-practices/old-test-utils-and-assets-location/<star><star>/__test_utils__/<star><star>/<star>.declapract.ts +17 -0
- package/dist/practices/tests-any/best-practice/.declapract.readme.md +45 -0
- package/dist/practices/tests-any/best-practice/.declapract.todo.md +3 -0
- package/dist/practices/tests-any/best-practice/package.json +17 -0
- package/dist/practices/tests-any/best-practice/package.json.declapract.ts +3 -0
- package/dist/practices/tests-any/best-practice/package.json.shell-flags.declapract.integration.test.ts +129 -0
- package/dist/practices/tests-any/best-practice/src/<star><star>/<star>.integration.test.ts.declapract.ts +3 -0
- package/dist/practices/tests-any/best-practice/src/<star><star>/<star>.test.ts.declapract.ts +3 -0
- package/dist/practices/tests-expo/.declapract.integration.test.ts +134 -0
- package/dist/practices/tests-expo/.test/assets/repo-expo-greenfield/declapract.use.yml +6 -0
- package/dist/practices/tests-expo/.test/assets/repo-expo-greenfield/package.json +4 -0
- package/dist/practices/tests-expo/__snapshots__/.declapract.integration.test.ts.snap +112 -0
- package/dist/practices/tests-expo/bad-practices/inline-jest-config/.declapract.readme.md +22 -0
- package/dist/practices/tests-expo/bad-practices/inline-jest-config/package.json.declapract.ts +36 -0
- package/dist/practices/tests-expo/best-practice/jest.acceptance.config.ts +43 -0
- package/dist/practices/tests-expo/best-practice/jest.acceptance.env.ts +15 -0
- package/dist/practices/tests-expo/best-practice/jest.config.ts +7 -0
- package/dist/practices/tests-expo/best-practice/jest.integration.config.ts +42 -0
- package/dist/practices/tests-expo/best-practice/jest.integration.env.ts +22 -0
- package/dist/practices/tests-expo/best-practice/jest.unit.config.ts +53 -0
- package/dist/practices/tests-expo/best-practice/jest.unit.env.ts +18 -0
- package/dist/practices/tests-expo/best-practice/package.json +9 -0
- package/dist/practices/tests-expo/best-practice/package.json.declapract.ts +16 -0
- package/dist/practices/tests-node/bad-practices/babel/babel.config.js.declapract.ts +3 -0
- package/dist/practices/tests-node/bad-practices/deprecated-test-deps/package.json.declapract.ts +50 -0
- package/dist/practices/tests-node/best-practice/jest.config.ts +7 -0
- package/dist/practices/tests-node/best-practice/jest.unit.env.ts.declapract.ts +39 -0
- package/dist/practices/tests-node/best-practice/package.json +6 -0
- package/dist/practices/tests-node/best-practice/package.json.declapract.ts +10 -0
- package/dist/practices/typescript-any/bad-practices/relative-imports/.declapract.readme.md +45 -0
- package/dist/practices/typescript-any/bad-practices/relative-imports/src/<star><star>/<star>.ts.declapract.ts +97 -0
- package/dist/practices/typescript-any/best-practice/.declapract.readme.md +17 -0
- package/dist/practices/typescript-any/best-practice/package.json +8 -0
- package/dist/practices/typescript-any/best-practice/package.json.declapract.ts +11 -0
- package/dist/practices/typescript-expo/best-practice/package.json +6 -0
- package/dist/practices/typescript-expo/best-practice/package.json.declapract.integration.test.ts +30 -0
- package/dist/practices/typescript-expo/best-practice/package.json.declapract.ts +12 -0
- package/dist/practices/typescript-expo/best-practice/tsconfig.json +14 -0
- package/dist/practices/typescript-expo/best-practice/tsconfig.json.declapract.integration.test.ts +32 -0
- package/dist/practices/typescript-expo/best-practice/tsconfig.json.declapract.ts +12 -0
- package/dist/practices/{typescript → typescript-node}/best-practice/package.json +1 -3
- package/dist/practices/typescript-node/best-practice/package.json.declapract.ts +25 -0
- package/dist/practices/typescript-node/best-practice/tsconfig.json.declapract.ts +3 -0
- package/dist/useCases.yml +36 -16
- package/dist/utils/defineExpectedNpmrcContents.ts +103 -0
- package/dist/utils/getAllPracticesForUsecase.ts +53 -0
- package/dist/utils/isDeferredToDeprecatedDirMove.ts +37 -0
- package/package.json +4 -4
- package/dist/practices/tests/bad-practices/deprecated-test-deps/package.json.declapract.ts +0 -39
- package/dist/practices/tests/best-practice/jest.unit.env.ts.declapract.ts +0 -35
- package/dist/practices/typescript/bad-practices/relative-imports/.declapract.readme.md +0 -27
- package/dist/practices/typescript/best-practice/.declapract.readme.md +0 -15
- package/dist/practices/typescript/best-practice/package.json.declapract.ts +0 -18
- /package/dist/{practices/tests → .test/assets/cache/declarations/practices/cache}/best-practice/package.json.declapract.ts +0 -0
- /package/dist/{practices/typescript/best-practice/tsconfig.json.declapract.ts → .test/assets/expo-fullusecase/declarations/practices/cache/best-practice/package.json.declapract.ts} +0 -0
- /package/dist/{practices/tests/bad-practices/old-acceptance-dir-location/.test/assets/demo-repo-with-accept-blackbox-dir → .test/assets/expo-fullusecase/declarations/practices/cicd-common/.test/assets/repo-with-unpinned-workflow}/package.json +0 -0
- /package/dist/{practices/tests/bad-practices/babel/babel.config.js.declapract.ts → .test/assets/expo-fullusecase/declarations/practices/cicd-common/bad-practices/old-names/.github/workflows/ci-on-commit.yml.declapract.ts} +0 -0
- /package/dist/{practices/tests/bad-practices/javascript-config-files/jest.<star>.js.declapract.ts → .test/assets/expo-fullusecase/declarations/practices/cicd-common/bad-practices/old-names/.github/workflows/ci_on_commit.yml.declapract.ts} +0 -0
- /package/dist/{practices/tests/bad-practices/old-acceptance-test-utils-3/blackbox/_utils/environment.ts.declapract.ts → .test/assets/expo-fullusecase/declarations/practices/cicd-common/bad-practices/old-names/.github/workflows/pr-release-on-main.yml.declapract.ts} +0 -0
- /package/dist/{practices/tests/bad-practices/old-acceptance-test-utils/blackbox/_utils/getDataFromLastOpenBracketAtStartOfLine.ts.declapract.ts → .test/assets/expo-fullusecase/declarations/practices/cicd-common/bad-practices/old-names/.github/workflows/test-on-commit.yml.declapract.ts} +0 -0
- /package/dist/{practices/tests/bad-practices/old-acceptance-test-utils/blackbox/_utils/invokeLambda.ts.declapract.ts → .test/assets/expo-fullusecase/declarations/practices/cicd-common/bad-practices/old-names/.github/workflows/test_on_commit.yml.declapract.ts} +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/javascript-config-files/.declapract.readme.md +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/mocks/.declapract.readme.md +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/mocks/<star><star>/__mock__/<star>.js +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/mocks/<star><star>/__mock__/<star>.ts +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/old-acceptance-dir-location/.declapract.readme.md +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/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 +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/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 +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/old-acceptance-dir-location/.test/assets/demo-repo-with-accept-blackbox-dir/accept.blackbox/somefile.ts +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/old-acceptance-dir-location/.test/assets/demo-repo-with-accept-blackbox-dir/declapract.declare.yml +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/old-acceptance-dir-location/.test/assets/demo-repo-with-accept-blackbox-dir/declapract.use.yml +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/old-acceptance-dir-location/accept.blackbox/<star><star>/<star>.declapract.ts +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/old-acceptance-dir-location/acceptance/<star><star>/<star>.declapract.ts +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/old-acceptance-import-paths/.declapract.readme.md +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/old-acceptance-import-paths/<star><star>/<star>.ts.declapract.ts +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/old-acceptance-test-utils/blackbox/lambdas/<star>.ts.declapract.ts +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/old-acceptance-test-utils-2/blackbox/lambdas/<star>.ts.declapract.ts +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/old-acceptance-test-utils-3/blackbox/lambdas/<star>.ts.declapract.ts +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/old-extension-pattern/.declapract.readme.md +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/old-extension-pattern/<star><star>/<star>.test.acceptance.ts.declapract.ts +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/old-extension-pattern/<star><star>/<star>.test.integration.ts.declapract.ts +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/old-test-utils-and-assets-location/.declapract.readme.md +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/old-test-utils-and-assets-location/<star><star>/<star>.ts.declapract.ts +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/old-test-utils-and-assets-location/<star><star>/__test_assets__/<star><star>/<star>.declapract.ts +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/old-test-utils-and-assets-location/<star><star>/__test_utils__/<star><star>/<star>.declapract.ts +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/best-practice/.declapract.readme.md +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/best-practice/.declapract.todo.md +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/best-practice/src/<star><star>/<star>.integration.test.ts.declapract.ts +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/best-practice/src/<star><star>/<star>.test.ts.declapract.ts +0 -0
- /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-expo}/best-practice/jest.config.ts +0 -0
- /package/dist/practices/{tests → tests-node}/bad-practices/babel/babel.config.js +0 -0
- /package/dist/practices/{tests → tests-node}/bad-practices/deprecated-test-deps/.declapract.readme.md +0 -0
- /package/dist/practices/{tests → tests-node}/bad-practices/deprecated-test-deps/package.json +0 -0
- /package/dist/practices/{tests → tests-node}/best-practice/jest.acceptance.config.ts +0 -0
- /package/dist/practices/{tests → tests-node}/best-practice/jest.acceptance.env.ts +0 -0
- /package/dist/practices/{tests → tests-node}/best-practice/jest.integration.config.ts +0 -0
- /package/dist/practices/{tests → tests-node}/best-practice/jest.integration.env.ts +0 -0
- /package/dist/practices/{tests → tests-node}/best-practice/jest.unit.config.ts +0 -0
- /package/dist/practices/{tests → tests-node}/best-practice/jest.unit.env.ts +0 -0
- /package/dist/practices/{typescript → typescript-node}/best-practice/tsconfig.build.json +0 -0
- /package/dist/practices/{typescript → typescript-node}/best-practice/tsconfig.json +0 -0
|
@@ -0,0 +1,810 @@
|
|
|
1
|
+
import fs from 'fs/promises';
|
|
2
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
|
|
5
|
+
import { executeApply } from 'declapract';
|
|
6
|
+
import { genTempDir, given, then, useBeforeAll, when } from 'test-fns';
|
|
7
|
+
import yaml from 'yaml';
|
|
8
|
+
|
|
9
|
+
import { getAllPracticesForUsecase } from '../../utils/getAllPracticesForUsecase';
|
|
10
|
+
|
|
11
|
+
// executeApply is slow (whole-usecase evaluation across ten practices)
|
|
12
|
+
jest.setTimeout(240_000);
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* .what = the GRACEFUL-MIGRATION acceptance test for the `app-react-native-expo` usecase,
|
|
16
|
+
* run against an already-built expo app repo shaped like `app-protools-native`
|
|
17
|
+
* (the wish's part-3 "definition of done").
|
|
18
|
+
* .why = every other fixture is a bare/greenfield subset. this one models a REAL repo mid-
|
|
19
|
+
* migration — npm (`overrides` + `resolutions`, `package-lock.json`, no
|
|
20
|
+
* `packageManager`), a customized `tsconfig.json` (an extra `@app-custom` path), a
|
|
21
|
+
* `.gitignore` with its own custom ignores, a husky lockfile hook on the npm name,
|
|
22
|
+
* and the deprecated `src/logic/` + `src/data/` layers with a cross-import. it proves
|
|
23
|
+
* the whole migration slice applies GRACEFULLY: rename (not delete), union (not
|
|
24
|
+
* clobber), merge-not-overwrite — a consumer's own work survives.
|
|
25
|
+
* .note = the WHOLE usecase is evaluated before any file-filter, so the fixture's
|
|
26
|
+
* `declapract.use.yml` defines every variable the ten practices reference.
|
|
27
|
+
*/
|
|
28
|
+
describe('app-react-native-expo — graceful migration of an app-protools-shaped repo', () => {
|
|
29
|
+
given('[case1] a customized npm expo repo on the deprecated src layers', () => {
|
|
30
|
+
const tempDir = genTempDir({
|
|
31
|
+
slug: 'expo-migration',
|
|
32
|
+
clone: './src/.test/assets/expo-migration/repo-app-protools-shaped',
|
|
33
|
+
symlink: [
|
|
34
|
+
{ at: 'declarations', to: './src/.test/assets/expo-migration/declarations' },
|
|
35
|
+
{ at: 'node_modules', to: 'node_modules' },
|
|
36
|
+
],
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
const read = (rel: string) =>
|
|
40
|
+
fs.readFile(path.join(tempDir, rel), 'utf-8').catch(() => null);
|
|
41
|
+
|
|
42
|
+
// useBeforeAll RETURNS the captured state (no in-place mutation of a shared const)
|
|
43
|
+
const state = useBeforeAll(async () => {
|
|
44
|
+
const config = path.join(tempDir, 'declapract.use.yml');
|
|
45
|
+
|
|
46
|
+
// capture the before-state of the files the migration mutates
|
|
47
|
+
const before = {
|
|
48
|
+
pkg: await read('package.json'),
|
|
49
|
+
npmrc: await read('.npmrc'),
|
|
50
|
+
tsconfig: await read('tsconfig.json'),
|
|
51
|
+
gitignore: await read('.gitignore'),
|
|
52
|
+
husky: await read('.husky/check.lockfile.sh'),
|
|
53
|
+
packageLock: await read('package-lock.json'),
|
|
54
|
+
deployExpo: await read('.github/workflows/.deploy-expo.yml'),
|
|
55
|
+
domainIndex: await read('src/domain/objects/index.ts'),
|
|
56
|
+
logicFile: await read('src/logic/customer/getCustomer.ts'),
|
|
57
|
+
daoFile: await read('src/data/dao/daoCustomer.ts'),
|
|
58
|
+
// the stale JS jest config (jsdom) the app-protools-native audit names — a
|
|
59
|
+
// dual-source hazard the migration must reconcile against the shipped .ts config
|
|
60
|
+
jestConfigJs: await read('jest.config.js'),
|
|
61
|
+
jestConfigTs: await read('jest.config.ts'),
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
// apply the whole usecase twice — the migration is a two-pass settle:
|
|
65
|
+
// pass 1 RELOCATES the deprecated-dir files (imports untouched); pass 2
|
|
66
|
+
// rewrites those moved files' imports at their new path AND settles the
|
|
67
|
+
// package.json minVersion pins. (move + import-rewrite are held to
|
|
68
|
+
// separate passes so declapract never applies a relocate and an in-place
|
|
69
|
+
// rewrite to one file in one apply.)
|
|
70
|
+
await executeApply({ config });
|
|
71
|
+
await executeApply({ config });
|
|
72
|
+
const after2 = {
|
|
73
|
+
pkg: await read('package.json'),
|
|
74
|
+
npmrc: await read('.npmrc'),
|
|
75
|
+
tsconfig: await read('tsconfig.json'),
|
|
76
|
+
gitignore: await read('.gitignore'),
|
|
77
|
+
husky: await read('.husky/check.lockfile.sh'),
|
|
78
|
+
packageLock: await read('package-lock.json'),
|
|
79
|
+
deployExpo: await read('.github/workflows/.deploy-expo.yml'),
|
|
80
|
+
domainIndex: await read('src/domain/objects/index.ts'),
|
|
81
|
+
// the dir-move destinations
|
|
82
|
+
movedLogic: await read('src/domain.operations/customer/getCustomer.ts'),
|
|
83
|
+
movedDao: await read('src/access/daos/daoCustomer.ts'),
|
|
84
|
+
movedShared: await read('src/domain.operations/shared/formatCustomer.ts'),
|
|
85
|
+
// the deprecated originals must be GONE
|
|
86
|
+
oldLogic: await read('src/logic/customer/getCustomer.ts'),
|
|
87
|
+
oldDao: await read('src/data/dao/daoCustomer.ts'),
|
|
88
|
+
oldShared: await read('src/logic/shared/formatCustomer.ts'),
|
|
89
|
+
// the stale JS jest config must be GONE; the shipped .ts config must be PRESENT
|
|
90
|
+
jestConfigJs: await read('jest.config.js'),
|
|
91
|
+
jestConfigTs: await read('jest.config.ts'),
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
// a third apply proves the settled state is a fixed point (no drift)
|
|
95
|
+
await executeApply({ config });
|
|
96
|
+
const after3 = {
|
|
97
|
+
pkg: await read('package.json'),
|
|
98
|
+
tsconfig: await read('tsconfig.json'),
|
|
99
|
+
movedLogic: await read('src/domain.operations/customer/getCustomer.ts'),
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
return { before, after2, after3 };
|
|
103
|
+
}, 230_000);
|
|
104
|
+
|
|
105
|
+
when('[t0] the deprecated src layers are migrated', () => {
|
|
106
|
+
then('src/logic/ moves to src/domain.operations/, the original gone', () => {
|
|
107
|
+
expect(state.after2.movedLogic).toBeDefined();
|
|
108
|
+
expect(state.after2.movedLogic).not.toBeNull();
|
|
109
|
+
expect(state.after2.oldLogic).toBeNull();
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
then('src/data/dao/ moves to src/access/daos/, the original gone', () => {
|
|
113
|
+
expect(state.after2.movedDao).not.toBeNull();
|
|
114
|
+
expect(state.after2.oldDao).toBeNull();
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
then('the moved logic file has its import path rewritten', () => {
|
|
118
|
+
// ../../data/dao/daoCustomer -> ../../access/daos/daoCustomer
|
|
119
|
+
expect(state.after2.movedLogic).toContain('/access/daos/daoCustomer');
|
|
120
|
+
expect(state.after2.movedLogic).not.toContain('/data/dao/daoCustomer');
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
then('every import SHAPE in the moved file is rewritten (r10 blocker 3)', () => {
|
|
124
|
+
// the fixture file carries THREE deprecated-layer import shapes; the pipeline
|
|
125
|
+
// must rewrite ALL of them, not just the first. prove each shape landed at
|
|
126
|
+
// access/daos with no data/dao path left behind.
|
|
127
|
+
const moved = state.after2.movedLogic!;
|
|
128
|
+
// plain value import
|
|
129
|
+
expect(moved).toContain(
|
|
130
|
+
"import { daoCustomer } from '@src/access/daos/daoCustomer'",
|
|
131
|
+
);
|
|
132
|
+
// type-only import
|
|
133
|
+
expect(moved).toContain(
|
|
134
|
+
"import type { Customer } from '@src/access/daos/daoCustomer'",
|
|
135
|
+
);
|
|
136
|
+
// barrel re-export
|
|
137
|
+
expect(moved).toContain(
|
|
138
|
+
"export { daoCustomer as daoCustomerReExport } from '@src/access/daos/daoCustomer'",
|
|
139
|
+
);
|
|
140
|
+
// NO deprecated import PATH survives on any of the three (the quoted specifier
|
|
141
|
+
// only — the file's own comment still names data/dao as prose, which is fine)
|
|
142
|
+
expect(moved).not.toContain("'@src/data/dao/daoCustomer'");
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
then('the moved file\'s ../ relative import is aliased (relative-imports two-pass defer)', () => {
|
|
146
|
+
// the fixture's getCustomer.ts carries a `../shared/formatCustomer` RELATIVE import to
|
|
147
|
+
// a peer in the same deprecated layer. relative-imports must DEFER it on pass 1 (the
|
|
148
|
+
// file still sits under logic/, so its isDeferredToDeprecatedDirMove guard fires) while
|
|
149
|
+
// old-logic-dir relocates the file, then fire on pass 2 once the file sits at
|
|
150
|
+
// domain.operations/ — the ../shared/formatCustomer path becomes the @src alias. this
|
|
151
|
+
// proves the branch-new deferred-dir guard end-to-end (the r1 relative-imports blocker):
|
|
152
|
+
// a relocate and an in-place rewrite of one file never collide in a single pass.
|
|
153
|
+
// the peer util is itself relocated logic/shared/ -> domain.operations/shared/.
|
|
154
|
+
expect(state.after2.movedShared).not.toBeNull();
|
|
155
|
+
expect(state.after2.oldShared).toBeNull();
|
|
156
|
+
// the importer's relative path is aliased to @src at the file's NEW home
|
|
157
|
+
expect(state.after2.movedLogic).toContain(
|
|
158
|
+
"import { formatCustomer } from '@src/domain.operations/shared/formatCustomer'",
|
|
159
|
+
);
|
|
160
|
+
expect(state.after2.movedLogic).not.toContain("'../shared/formatCustomer'");
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
when('[t1] package.json is migrated npm -> pnpm', () => {
|
|
165
|
+
then('overrides + resolutions relocate into pnpm.overrides', () => {
|
|
166
|
+
const pkg = JSON.parse(state.after2.pkg!);
|
|
167
|
+
expect(pkg.overrides).toBeUndefined();
|
|
168
|
+
expect(pkg.resolutions).toBeUndefined();
|
|
169
|
+
expect(pkg.pnpm.overrides['type-fns']).toEqual('1.9.9');
|
|
170
|
+
expect(pkg.pnpm.overrides['@commitlint/format']).toEqual('19.9.9');
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
then('the packageManager pin converges to the blessed exact version', () => {
|
|
174
|
+
// the fixture is AHEAD of the blessed pin (pnpm@10.32.1). the pnpm
|
|
175
|
+
// best-practice CONTAINS declares the ONE blessed version (pnpm@10.31.7),
|
|
176
|
+
// so a consumer ahead of it is pinned BACK on fix — that downgrade is the
|
|
177
|
+
// wisher-settled org-convergence REQUIREMENT (one blessed pnpm across CI,
|
|
178
|
+
// local, every repo), not a regression. this characterizes it.
|
|
179
|
+
const pkgBefore = JSON.parse(state.before.pkg!);
|
|
180
|
+
expect(pkgBefore.packageManager).toEqual('pnpm@10.32.1');
|
|
181
|
+
|
|
182
|
+
const pkg = JSON.parse(state.after2.pkg!);
|
|
183
|
+
expect(pkg.packageManager).toEqual('pnpm@10.31.7');
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
then('the inline jest dual-source block is dropped', () => {
|
|
187
|
+
// the repo carried a jest-expo preset INLINE in package.json AND the
|
|
188
|
+
// tests-expo jest.*.config.ts files — a dual source. the migration drops
|
|
189
|
+
// the inline block so the config files are the one home.
|
|
190
|
+
const pkgBefore = JSON.parse(state.before.pkg!);
|
|
191
|
+
expect(pkgBefore.jest).toBeDefined();
|
|
192
|
+
|
|
193
|
+
const pkg = JSON.parse(state.after2.pkg!);
|
|
194
|
+
expect(pkg.jest).toBeUndefined();
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
when('[t2] the .npmrc hoist is unioned in, not clobbered', () => {
|
|
199
|
+
then('the hoisted-linker block is present', () => {
|
|
200
|
+
expect(state.after2.npmrc).toContain('node-linker=hoisted');
|
|
201
|
+
expect(state.after2.npmrc).toContain('public-hoist-pattern[]=*expo*');
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
then('the base save-exact line survives', () => {
|
|
205
|
+
expect(state.after2.npmrc).toContain('save-exact=true');
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
when('[t3] the customized tsconfig is preserved (CONTAINS, not clobbered)', () => {
|
|
210
|
+
then('the extends of expo/tsconfig.base holds', () => {
|
|
211
|
+
expect(state.after2.tsconfig).toContain('expo/tsconfig.base');
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
then("the app's own custom @app-custom path is preserved", () => {
|
|
215
|
+
expect(state.after2.tsconfig).toContain('@app-custom');
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
when('[t4] the .gitignore gains the rhachet line, keeps the repo customs', () => {
|
|
220
|
+
then('the rhachet .agent/.cache/ line is added', () => {
|
|
221
|
+
expect(state.after2.gitignore).toContain('.agent/.cache/');
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
then("the repo's own custom ignores survive", () => {
|
|
225
|
+
expect(state.after2.gitignore).toContain('.idea');
|
|
226
|
+
expect(state.after2.gitignore).toContain('*.pyc');
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
then('the node_modules negations sit below node_modules', () => {
|
|
230
|
+
const lines = state.after2.gitignore!.split('\n');
|
|
231
|
+
expect(lines.indexOf('node_modules')).toBeLessThan(
|
|
232
|
+
lines.indexOf('!.test*/**/node_modules'),
|
|
233
|
+
);
|
|
234
|
+
});
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
when('[t5] the husky lockfile hook is swapped to pnpm', () => {
|
|
238
|
+
then('it watches pnpm-lock.yaml, not package-lock.json', () => {
|
|
239
|
+
expect(state.after2.husky).toContain('pnpm-lock.yaml');
|
|
240
|
+
expect(state.after2.husky).not.toContain('package-lock.json');
|
|
241
|
+
});
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
when('[t5b] the npm lockfile is removed forget-not-destroy', () => {
|
|
245
|
+
then('package-lock.json is deleted — but only because pnpm-lock.yaml exists', () => {
|
|
246
|
+
// the fixture seeds BOTH lockfiles (the realistic post-`pnpm install` state),
|
|
247
|
+
// so the gated fix removes the redundant npm lockfile. the survive-when-unsafe
|
|
248
|
+
// path (no pnpm-lock.yaml → no delete) is clamped in the bad-practice's own
|
|
249
|
+
// package-lock.json.declapract.integration.test.ts [case2].
|
|
250
|
+
expect(state.before.packageLock).not.toBeNull();
|
|
251
|
+
expect(state.after2.packageLock).toBeNull();
|
|
252
|
+
});
|
|
253
|
+
});
|
|
254
|
+
|
|
255
|
+
when('[t5c] the expo deploy workflow is migrated npm -> pnpm', () => {
|
|
256
|
+
then('the npm-shaped install is clobbered to the pnpm shape', () => {
|
|
257
|
+
// the fixture ships an npm-shaped .deploy-expo.yml (npm ci + actions/cache
|
|
258
|
+
// on package-lock.json). the cicd-app-react-native-expo practice declares
|
|
259
|
+
// this workflow via the repo's default EQUALS, so a divergent consumer
|
|
260
|
+
// file is overwritten with the pnpm template. this is the wish's
|
|
261
|
+
// "clobber (safe target)" — a CI workflow is a safe overwrite, unlike a
|
|
262
|
+
// consumer's own tsconfig/gitignore which merge.
|
|
263
|
+
//
|
|
264
|
+
// the pnpm template mirrors the node deploy path (.deploy-sls.yml): a shared
|
|
265
|
+
// install job builds node_modules once via ./.github/workflows/.install.yml,
|
|
266
|
+
// then each deploy job restores it (fail-on-cache-miss) rather than re-install.
|
|
267
|
+
// so the pnpm install itself lives in .install.yml, not this workflow.
|
|
268
|
+
expect(state.before.deployExpo).toContain('npm ci');
|
|
269
|
+
expect(state.after2.deployExpo).toContain(
|
|
270
|
+
'uses: ./.github/workflows/.install.yml',
|
|
271
|
+
);
|
|
272
|
+
expect(state.after2.deployExpo).toContain('fail-on-cache-miss: true');
|
|
273
|
+
expect(state.after2.deployExpo).not.toContain('npm ci');
|
|
274
|
+
});
|
|
275
|
+
|
|
276
|
+
then('the before + after .deploy-expo.yml match snapshot', () => {
|
|
277
|
+
// a diff-visible clamp on the 125-line live CI/CD workflow: any silent
|
|
278
|
+
// content drift in the template surfaces in the after-snapshot review.
|
|
279
|
+
expect(state.before.deployExpo).toMatchSnapshot('.deploy-expo.yml — before');
|
|
280
|
+
expect(state.after2.deployExpo).toMatchSnapshot('.deploy-expo.yml — after migration');
|
|
281
|
+
});
|
|
282
|
+
});
|
|
283
|
+
|
|
284
|
+
when('[t5e] the jest dual-source is reconciled (stale .js dropped for the .ts config)', () => {
|
|
285
|
+
// the app-protools-native audit names the jest dual-source hazard: a jsdom
|
|
286
|
+
// `jest.config.js` + the shipped `jest.config.ts` both present at once. the tests-any
|
|
287
|
+
// `javascript-config-files` bad-practice DELETES the stale `.js` while the tests-expo
|
|
288
|
+
// best-practice supplies the canonical `.ts` in the same pass — so a repo under
|
|
289
|
+
// migration ends with ONE jest config source, not two.
|
|
290
|
+
then('the fixture starts with a stale JS jest config', () => {
|
|
291
|
+
expect(state.before.jestConfigJs).not.toBeNull();
|
|
292
|
+
expect(state.before.jestConfigJs).toContain('jsdom');
|
|
293
|
+
});
|
|
294
|
+
|
|
295
|
+
then('declapract fix removes the stale JS jest config', () => {
|
|
296
|
+
expect(state.after2.jestConfigJs).toBeNull();
|
|
297
|
+
});
|
|
298
|
+
|
|
299
|
+
then('the shipped .ts jest config lands as the single source', () => {
|
|
300
|
+
expect(state.after2.jestConfigTs).not.toBeNull();
|
|
301
|
+
});
|
|
302
|
+
});
|
|
303
|
+
|
|
304
|
+
when('[t5d] the domain EXISTS check is unmet (no src/domain/objects/index.ts)', () => {
|
|
305
|
+
// the wisher ruled `domain`'s EXISTS check a HARD BLOCKER for every expo repo, and a
|
|
306
|
+
// real app-protools-shaped repo has no `src/domain/objects/index.ts` on day one. this
|
|
307
|
+
// characterizes what `declapract fix` DOES on that unmet, content-less EXISTS check:
|
|
308
|
+
// it flags the absence (the human must author their domain) but auto-creates no file —
|
|
309
|
+
// there is no sibling template to write — and it does NOT halt the rest of the apply.
|
|
310
|
+
then('the repo has no domain objects file to begin with', () => {
|
|
311
|
+
expect(state.before.domainIndex).toBeNull();
|
|
312
|
+
});
|
|
313
|
+
|
|
314
|
+
then('declapract fix does NOT auto-create the file (no template to write)', () => {
|
|
315
|
+
// an EXISTS best-practice with no sibling content cannot be auto-fixed — the file
|
|
316
|
+
// stays absent, so the check keeps flagging until the human authors their domain.
|
|
317
|
+
expect(state.after2.domainIndex).toBeNull();
|
|
318
|
+
});
|
|
319
|
+
|
|
320
|
+
then('the unmet EXISTS does NOT halt the apply — the whole migration still lands', () => {
|
|
321
|
+
// proof the apply did not abort on the unmet check: the domain practice's OWN
|
|
322
|
+
// package.json CONTAINS still merged its deps, AND every other practice's mutation
|
|
323
|
+
// (the dir-move, the pnpm switch, the .npmrc hoist) landed — asserted across [t0]-[t5c].
|
|
324
|
+
const pkg = JSON.parse(state.after2.pkg!);
|
|
325
|
+
expect(pkg.dependencies['domain-objects']).toBeDefined();
|
|
326
|
+
expect(pkg.dependencies['type-fns']).toBeDefined();
|
|
327
|
+
expect(state.after2.movedLogic).not.toBeNull();
|
|
328
|
+
});
|
|
329
|
+
});
|
|
330
|
+
|
|
331
|
+
when('[t6] the migration is re-applied', () => {
|
|
332
|
+
then('package.json is a fixed point once settled', () => {
|
|
333
|
+
expect(state.after3.pkg).toEqual(state.after2.pkg);
|
|
334
|
+
});
|
|
335
|
+
|
|
336
|
+
then('tsconfig.json is a fixed point', () => {
|
|
337
|
+
expect(state.after3.tsconfig).toEqual(state.after2.tsconfig);
|
|
338
|
+
});
|
|
339
|
+
|
|
340
|
+
then('the moved logic file is a fixed point', () => {
|
|
341
|
+
expect(state.after3.movedLogic).toEqual(state.after2.movedLogic);
|
|
342
|
+
});
|
|
343
|
+
|
|
344
|
+
then('the before + settled package.json match snapshot', () => {
|
|
345
|
+
expect(state.before.pkg).toMatchSnapshot('package.json — before');
|
|
346
|
+
expect(state.after2.pkg).toMatchSnapshot('package.json — after migration');
|
|
347
|
+
});
|
|
348
|
+
});
|
|
349
|
+
});
|
|
350
|
+
});
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* .what = a drift guard between the migration fixture's curated practice subset and the
|
|
354
|
+
* real `app-react-native-expo` usecase in `src/useCases.yml`.
|
|
355
|
+
* .why = the fixture above deliberately exercises only the practices that MUTATE an extant
|
|
356
|
+
* repo's files (the migration-risk set). the rest of the real usecase merely DROPS a
|
|
357
|
+
* net-new file (a config-only practice: lint, format, husky, …) and carries no
|
|
358
|
+
* migration risk, so it is left out on purpose. that curation is a hidden link:
|
|
359
|
+
* when a practice is added to the real usecase, the fixture silently falls out of
|
|
360
|
+
* date and no test notices. this guard makes the link explicit — every real
|
|
361
|
+
* practice must be classified as EITHER exercised-by-the-fixture OR config-only-
|
|
362
|
+
* allowlisted, so a new practice fails the build until a human triages it into one bin.
|
|
363
|
+
*/
|
|
364
|
+
describe('app-react-native-expo — migration-fixture drift guard', () => {
|
|
365
|
+
// a config-only practice DROPS a net-new file with no migration risk, so the migration
|
|
366
|
+
// fixture need not exercise it. each entry is a deliberate human triage, not a default.
|
|
367
|
+
// NO terraform-common — it was dropped from the expo usecase (an expo app owns no
|
|
368
|
+
// terraform-managed infra), so it is no longer a practice to classify.
|
|
369
|
+
const configOnlyAllowlist = [
|
|
370
|
+
'cache',
|
|
371
|
+
'cicd-common',
|
|
372
|
+
'conventional-commits',
|
|
373
|
+
'errors',
|
|
374
|
+
'husky',
|
|
375
|
+
'format',
|
|
376
|
+
'nonpublished-modules',
|
|
377
|
+
'package-json-order',
|
|
378
|
+
'provision-github',
|
|
379
|
+
'lint',
|
|
380
|
+
'lint-react',
|
|
381
|
+
'lint-react-native',
|
|
382
|
+
];
|
|
383
|
+
|
|
384
|
+
const readUsecasePractices = (input: {
|
|
385
|
+
path: string;
|
|
386
|
+
usecase: string;
|
|
387
|
+
}): string[] => {
|
|
388
|
+
const parsed = yaml.parse(readFileSync(input.path, 'utf-8'));
|
|
389
|
+
return parsed['use-cases'][input.usecase].practices;
|
|
390
|
+
};
|
|
391
|
+
|
|
392
|
+
const repoRoot = path.join(__dirname, '../../..');
|
|
393
|
+
|
|
394
|
+
given('the real usecase and the fixture usecase', () => {
|
|
395
|
+
// the real expo usecase now COMPOSES its platform baseline via `extends`, so its full
|
|
396
|
+
// expanded set (not its raw `.practices`, which holds only the expo delta) is the true
|
|
397
|
+
// practice set a consumer receives. expand it so the fixture-vs-real comparison stays honest.
|
|
398
|
+
const realPractices = getAllPracticesForUsecase({
|
|
399
|
+
usecasesYmlPath: path.join(repoRoot, 'src/useCases.yml'),
|
|
400
|
+
usecase: 'app-react-native-expo',
|
|
401
|
+
});
|
|
402
|
+
// the fixture usecase lists its practices inline (no extends), so its raw list is its set.
|
|
403
|
+
const fixturePractices = readUsecasePractices({
|
|
404
|
+
path: path.join(
|
|
405
|
+
repoRoot,
|
|
406
|
+
'src/.test/assets/expo-migration/declarations/useCases.yml',
|
|
407
|
+
),
|
|
408
|
+
usecase: 'app-react-native-expo',
|
|
409
|
+
});
|
|
410
|
+
|
|
411
|
+
when('the fixture subset is measured against the real usecase', () => {
|
|
412
|
+
then('the fixture invents no practice absent from the real usecase', () => {
|
|
413
|
+
const invented = fixturePractices.filter(
|
|
414
|
+
(practice) => !realPractices.includes(practice),
|
|
415
|
+
);
|
|
416
|
+
expect(invented).toEqual([]);
|
|
417
|
+
});
|
|
418
|
+
|
|
419
|
+
then('a fixture practice is never also on the config-only allowlist', () => {
|
|
420
|
+
const overlap = fixturePractices.filter((practice) =>
|
|
421
|
+
configOnlyAllowlist.includes(practice),
|
|
422
|
+
);
|
|
423
|
+
expect(overlap).toEqual([]);
|
|
424
|
+
});
|
|
425
|
+
|
|
426
|
+
then('the allowlist names no practice absent from the real usecase', () => {
|
|
427
|
+
const dead = configOnlyAllowlist.filter(
|
|
428
|
+
(practice) => !realPractices.includes(practice),
|
|
429
|
+
);
|
|
430
|
+
expect(dead).toEqual([]);
|
|
431
|
+
});
|
|
432
|
+
|
|
433
|
+
then('every real usecase practice is classified — exercised or config-only', () => {
|
|
434
|
+
const classified = new Set([
|
|
435
|
+
...fixturePractices,
|
|
436
|
+
...configOnlyAllowlist,
|
|
437
|
+
]);
|
|
438
|
+
const unclassified = realPractices.filter(
|
|
439
|
+
(practice) => !classified.has(practice),
|
|
440
|
+
);
|
|
441
|
+
expect(unclassified).toEqual([]);
|
|
442
|
+
});
|
|
443
|
+
});
|
|
444
|
+
});
|
|
445
|
+
});
|
|
446
|
+
|
|
447
|
+
/**
|
|
448
|
+
* .what = a drift guard between `typescript-project`'s platform baseline and the
|
|
449
|
+
* `app-react-native-expo` usecase in `src/useCases.yml`.
|
|
450
|
+
* .why = both usecases now COMPOSE the shared `typescript-project-core` baseline via
|
|
451
|
+
* `extends`, so the 17 runtime-agnostic practices reach both consumers from ONE
|
|
452
|
+
* source and cannot drift apart by hand-copy. this guard is the second line of
|
|
453
|
+
* defense: it measures each usecase's RESOLVED practice set (extends applied) and
|
|
454
|
+
* asserts every practice in `typescript-project`'s resolved set is EITHER in expo's
|
|
455
|
+
* resolved set OR on the `expoDivergesFromBaseline` allowlist (a deliberate
|
|
456
|
+
* runtime-swap or exclusion). so if a future practice is added to `typescript-project`
|
|
457
|
+
* DIRECTLY (its runtime delta, not the shared core), it fails the build until a human
|
|
458
|
+
* triages it into expo or names it a divergence — the silent-drift regression this
|
|
459
|
+
* whole wish exists to fix, kept loud.
|
|
460
|
+
* .note = the guard reads the RESOLVED set (`getAllPracticesForUsecase`), not the raw
|
|
461
|
+
* `.practices`. after the core extraction both usecases carry only their runtime
|
|
462
|
+
* delta inline, so a raw read would compare deltas, not baselines.
|
|
463
|
+
*/
|
|
464
|
+
describe('app-react-native-expo — platform-baseline drift guard', () => {
|
|
465
|
+
// the practices `typescript-project`'s resolved set carries that the expo usecase
|
|
466
|
+
// deliberately does NOT — each a runtime swap or a wish-scoped exclusion, not an oversight.
|
|
467
|
+
// a build failure here means: triage the new baseline practice into expo, or add it here
|
|
468
|
+
// with a reason.
|
|
469
|
+
const expoDivergesFromBaseline = [
|
|
470
|
+
// node-shaped build/test practices, replaced by the -expo cut in the triad
|
|
471
|
+
'typescript-node', // → typescript-expo
|
|
472
|
+
'tests-node', // → tests-expo
|
|
473
|
+
// a runtime rate-limit lib, excluded by the wish (not a platform tool)
|
|
474
|
+
'bottleneck',
|
|
475
|
+
];
|
|
476
|
+
|
|
477
|
+
const usecasesYmlPath = path.join(__dirname, '../../..', 'src/useCases.yml');
|
|
478
|
+
|
|
479
|
+
given('the typescript-project baseline and the expo usecase', () => {
|
|
480
|
+
const baselinePractices = getAllPracticesForUsecase({
|
|
481
|
+
usecasesYmlPath,
|
|
482
|
+
usecase: 'typescript-project',
|
|
483
|
+
});
|
|
484
|
+
const expoPractices = getAllPracticesForUsecase({
|
|
485
|
+
usecasesYmlPath,
|
|
486
|
+
usecase: 'app-react-native-expo',
|
|
487
|
+
});
|
|
488
|
+
|
|
489
|
+
when('the expo usecase is measured against the baseline', () => {
|
|
490
|
+
then('every baseline practice is in expo OR deliberately diverged', () => {
|
|
491
|
+
// this assertion carries the load: a practice added to typescript-project
|
|
492
|
+
// that is neither carried into expo nor listed as a deliberate divergence
|
|
493
|
+
// fails the build — so the silent-drift regression cannot ship.
|
|
494
|
+
const classified = new Set([
|
|
495
|
+
...expoPractices,
|
|
496
|
+
...expoDivergesFromBaseline,
|
|
497
|
+
]);
|
|
498
|
+
const undropped = baselinePractices.filter(
|
|
499
|
+
(practice) => !classified.has(practice),
|
|
500
|
+
);
|
|
501
|
+
expect(undropped).toEqual([]);
|
|
502
|
+
});
|
|
503
|
+
|
|
504
|
+
then('the divergence allowlist names no practice absent from the baseline', () => {
|
|
505
|
+
const dead = expoDivergesFromBaseline.filter(
|
|
506
|
+
(practice) => !baselinePractices.includes(practice),
|
|
507
|
+
);
|
|
508
|
+
expect(dead).toEqual([]);
|
|
509
|
+
});
|
|
510
|
+
|
|
511
|
+
then('a diverged practice is never ALSO present in the expo usecase', () => {
|
|
512
|
+
// a practice cannot be both "carried into expo" and "deliberately dropped"
|
|
513
|
+
const contradiction = expoDivergesFromBaseline.filter((practice) =>
|
|
514
|
+
expoPractices.includes(practice),
|
|
515
|
+
);
|
|
516
|
+
expect(contradiction).toEqual([]);
|
|
517
|
+
});
|
|
518
|
+
});
|
|
519
|
+
});
|
|
520
|
+
});
|
|
521
|
+
|
|
522
|
+
/**
|
|
523
|
+
* .what = a characterization test that PINS every usecase's fully-resolved practice set
|
|
524
|
+
* (extends applied) to an explicit expected list.
|
|
525
|
+
* .why = the `typescript-project-core` extraction moved 17 shared practices out of the
|
|
526
|
+
* hand-copied usecase bodies into one composed baseline. the extraction is only safe
|
|
527
|
+
* if it changes ZERO practice for any consumer. this test is that proof: it locks each
|
|
528
|
+
* usecase's resolved set, so any future edit to the extends graph or the core that
|
|
529
|
+
* would add/drop a practice for a repo fails the build with an exact diff. it also
|
|
530
|
+
* documents declapract's NON-TRANSITIVE extends (declapract#17) — each consumer must
|
|
531
|
+
* extend `typescript-project-core` DIRECTLY, since it does not arrive through
|
|
532
|
+
* `typescript-project`.
|
|
533
|
+
*/
|
|
534
|
+
describe('useCases.yml — resolved-practice characterization', () => {
|
|
535
|
+
const usecasesYmlPath = path.join(__dirname, '../../..', 'src/useCases.yml');
|
|
536
|
+
|
|
537
|
+
const sorted = (input: string[]): string[] => [...input].sort();
|
|
538
|
+
|
|
539
|
+
// the shared runtime-agnostic baseline every real dev repo composes
|
|
540
|
+
const core = [
|
|
541
|
+
'cache',
|
|
542
|
+
'cicd-common',
|
|
543
|
+
'conventional-commits',
|
|
544
|
+
'husky',
|
|
545
|
+
'directory-structure-src',
|
|
546
|
+
'domain',
|
|
547
|
+
'errors',
|
|
548
|
+
'format',
|
|
549
|
+
'git',
|
|
550
|
+
'lint',
|
|
551
|
+
'node',
|
|
552
|
+
'nonpublished-modules',
|
|
553
|
+
'package-json-order',
|
|
554
|
+
'rhachet',
|
|
555
|
+
'tests-any',
|
|
556
|
+
'typescript-any',
|
|
557
|
+
'pnpm',
|
|
558
|
+
];
|
|
559
|
+
|
|
560
|
+
// the node runtime delta atop the core
|
|
561
|
+
const nodeDelta = ['tests-node', 'typescript-node', 'bottleneck'];
|
|
562
|
+
|
|
563
|
+
const lambdaServiceDelta = [
|
|
564
|
+
'artifact',
|
|
565
|
+
'cicd-service',
|
|
566
|
+
'config',
|
|
567
|
+
'commands',
|
|
568
|
+
'dates-and-times',
|
|
569
|
+
'environments',
|
|
570
|
+
'environments-aws',
|
|
571
|
+
'logs',
|
|
572
|
+
'node-service',
|
|
573
|
+
'runtime-schemas',
|
|
574
|
+
'serverless',
|
|
575
|
+
'provision-github',
|
|
576
|
+
'terraform-common',
|
|
577
|
+
'terraform-aws',
|
|
578
|
+
'tests-service',
|
|
579
|
+
'uuid',
|
|
580
|
+
];
|
|
581
|
+
|
|
582
|
+
const expected: Record<string, string[]> = {
|
|
583
|
+
'typescript-project-core': core,
|
|
584
|
+
'typescript-project': [...core, ...nodeDelta],
|
|
585
|
+
'npm-package': [
|
|
586
|
+
...core,
|
|
587
|
+
...nodeDelta,
|
|
588
|
+
'cicd-package',
|
|
589
|
+
'node-package',
|
|
590
|
+
'provision-github',
|
|
591
|
+
],
|
|
592
|
+
'lambda-service': [...core, ...nodeDelta, ...lambdaServiceDelta],
|
|
593
|
+
'lambda-service-with-rds': [
|
|
594
|
+
...core,
|
|
595
|
+
...nodeDelta,
|
|
596
|
+
...lambdaServiceDelta,
|
|
597
|
+
'persist-with-rds',
|
|
598
|
+
],
|
|
599
|
+
'lambda-service-with-dynamodb': [
|
|
600
|
+
...core,
|
|
601
|
+
...nodeDelta,
|
|
602
|
+
...lambdaServiceDelta,
|
|
603
|
+
'persist-with-dynamodb',
|
|
604
|
+
],
|
|
605
|
+
// the expo runtime delta atop the core — NO terraform-common (an expo app owns no
|
|
606
|
+
// terraform-managed infra; declastruct is the go-forward), NO node-shaped build/test.
|
|
607
|
+
'app-react-native-expo': [
|
|
608
|
+
...core,
|
|
609
|
+
'cicd-app-react-native-expo',
|
|
610
|
+
'provision-github',
|
|
611
|
+
'lint-react',
|
|
612
|
+
'lint-react-native',
|
|
613
|
+
'tests-expo',
|
|
614
|
+
'typescript-expo',
|
|
615
|
+
],
|
|
616
|
+
};
|
|
617
|
+
|
|
618
|
+
given('the useCases.yml extends graph', () => {
|
|
619
|
+
for (const usecase of Object.keys(expected)) {
|
|
620
|
+
when(`the resolved set of '${usecase}'`, () => {
|
|
621
|
+
then('matches the pinned characterization', () => {
|
|
622
|
+
const actual = getAllPracticesForUsecase({ usecasesYmlPath, usecase });
|
|
623
|
+
expect(sorted(actual)).toEqual(sorted(expected[usecase]!));
|
|
624
|
+
});
|
|
625
|
+
});
|
|
626
|
+
}
|
|
627
|
+
});
|
|
628
|
+
|
|
629
|
+
when('expo is compared to the core baseline', () => {
|
|
630
|
+
then('expo carries every core practice (the extraction reached it)', () => {
|
|
631
|
+
const expo = getAllPracticesForUsecase({
|
|
632
|
+
usecasesYmlPath,
|
|
633
|
+
usecase: 'app-react-native-expo',
|
|
634
|
+
});
|
|
635
|
+
const absent = core.filter((practice) => !expo.includes(practice));
|
|
636
|
+
expect(absent).toEqual([]);
|
|
637
|
+
});
|
|
638
|
+
|
|
639
|
+
then('expo carries no terraform-common (dropped in this wish)', () => {
|
|
640
|
+
const expo = getAllPracticesForUsecase({
|
|
641
|
+
usecasesYmlPath,
|
|
642
|
+
usecase: 'app-react-native-expo',
|
|
643
|
+
});
|
|
644
|
+
expect(expo).not.toContain('terraform-common');
|
|
645
|
+
});
|
|
646
|
+
});
|
|
647
|
+
});
|
|
648
|
+
|
|
649
|
+
/**
|
|
650
|
+
* .what = the FULL-usecase evaluation smoke — a real `executeApply` of the COMPLETE
|
|
651
|
+
* `app-react-native-expo` usecase (all 23 practices, the same set a consumer
|
|
652
|
+
* receives), run against the app-protools-shaped repo.
|
|
653
|
+
* .why = the graceful-migration acceptance test above deliberately curates the 11
|
|
654
|
+
* migration-RISK practices, so the 12 config-only practices (cicd-common, husky,
|
|
655
|
+
* conventional-commits, format, lint, …) — the bulk of the real usecase — are
|
|
656
|
+
* never exercised end-to-end. this smoke closes that gap: it proves the WHOLE
|
|
657
|
+
* usecase expands and applies without a variable-gap, a cross-practice collision,
|
|
658
|
+
* or an ELOOP — the wish's headline criterion (a consumer runs `declapract fix`
|
|
659
|
+
* on the real usecase and it lands clean). the fixture symlinks all 23 practices
|
|
660
|
+
* individually (never the real `src/practices` dir), so the deep-walk is loop-free
|
|
661
|
+
* by construction.
|
|
662
|
+
* .note = a practice-set parity guard below pins this fixture's usecase === the real
|
|
663
|
+
* `src/useCases.yml` usecase, so the smoke can never silently test a stale set.
|
|
664
|
+
*/
|
|
665
|
+
describe('app-react-native-expo — full-usecase evaluation smoke', () => {
|
|
666
|
+
const repoRoot = path.join(__dirname, '../../..');
|
|
667
|
+
const sorted = (input: string[]): string[] => [...input].sort();
|
|
668
|
+
|
|
669
|
+
given('the full-usecase fixture mirrors the real usecase', () => {
|
|
670
|
+
const realPractices = getAllPracticesForUsecase({
|
|
671
|
+
usecasesYmlPath: path.join(repoRoot, 'src/useCases.yml'),
|
|
672
|
+
usecase: 'app-react-native-expo',
|
|
673
|
+
});
|
|
674
|
+
const fixturePractices = getAllPracticesForUsecase({
|
|
675
|
+
usecasesYmlPath: path.join(
|
|
676
|
+
repoRoot,
|
|
677
|
+
'src/.test/assets/expo-fullusecase/declarations/useCases.yml',
|
|
678
|
+
),
|
|
679
|
+
usecase: 'app-react-native-expo',
|
|
680
|
+
});
|
|
681
|
+
|
|
682
|
+
when('the fixture practice set is measured against the real one', () => {
|
|
683
|
+
then('the two practice sets are identical (no silent drift)', () => {
|
|
684
|
+
expect(sorted(fixturePractices)).toEqual(sorted(realPractices));
|
|
685
|
+
});
|
|
686
|
+
|
|
687
|
+
then('every fixture practice has a symlink in the declarations dir', () => {
|
|
688
|
+
const symlinked = fixturePractices.filter((practice) =>
|
|
689
|
+
existsSync(
|
|
690
|
+
path.join(
|
|
691
|
+
repoRoot,
|
|
692
|
+
'src/.test/assets/expo-fullusecase/declarations/practices',
|
|
693
|
+
practice,
|
|
694
|
+
),
|
|
695
|
+
),
|
|
696
|
+
);
|
|
697
|
+
expect(sorted(symlinked)).toEqual(sorted(fixturePractices));
|
|
698
|
+
});
|
|
699
|
+
});
|
|
700
|
+
});
|
|
701
|
+
|
|
702
|
+
given('[case1] the app-protools-shaped repo on the full usecase', () => {
|
|
703
|
+
const tempDir = genTempDir({
|
|
704
|
+
slug: 'expo-fullusecase',
|
|
705
|
+
clone: './src/.test/assets/expo-migration/repo-app-protools-shaped',
|
|
706
|
+
symlink: [
|
|
707
|
+
{
|
|
708
|
+
at: 'declarations',
|
|
709
|
+
to: './src/.test/assets/expo-fullusecase/declarations',
|
|
710
|
+
},
|
|
711
|
+
{ at: 'node_modules', to: 'node_modules' },
|
|
712
|
+
],
|
|
713
|
+
});
|
|
714
|
+
|
|
715
|
+
const read = (rel: string) =>
|
|
716
|
+
fs.readFile(path.join(tempDir, rel), 'utf-8').catch(() => null);
|
|
717
|
+
|
|
718
|
+
// useBeforeAll runs the REAL executeApply over the WHOLE 23-practice usecase; if the
|
|
719
|
+
// usecase fails to expand (a variable gap), or a practice fix throws (a collision or
|
|
720
|
+
// ELOOP), this setup throws and every `then` below goes red. so "applies clean" is
|
|
721
|
+
// proven by the setup that completes AND by the config-only artifacts below.
|
|
722
|
+
const state = useBeforeAll(async () => {
|
|
723
|
+
const config = path.join(tempDir, 'declapract.use.yml');
|
|
724
|
+
|
|
725
|
+
// two passes: the dir-migration is a two-pass settle (relocate, then rewrite), and
|
|
726
|
+
// the whole usecase must survive both — the second pass also proves no config-only
|
|
727
|
+
// practice re-flags its own just-applied output (a fix that would loop).
|
|
728
|
+
await executeApply({ config });
|
|
729
|
+
await executeApply({ config });
|
|
730
|
+
|
|
731
|
+
return {
|
|
732
|
+
// a config-only practice ABSENT from the migration subset — proves the 12 extra
|
|
733
|
+
// practices actually ran (the fixture repo has no commitlint config before apply)
|
|
734
|
+
commitlint: await read('commitlint.config.js'),
|
|
735
|
+
// cicd-common (config-only) drops this net-new workflow
|
|
736
|
+
declastructWorkflow: await read('.github/workflows/.declastruct.yml'),
|
|
737
|
+
// the migration-risk practices still land in the full set (a superset apply)
|
|
738
|
+
movedLogic: await read('src/domain.operations/customer/getCustomer.ts'),
|
|
739
|
+
npmrc: await read('.npmrc'),
|
|
740
|
+
};
|
|
741
|
+
}, 230_000);
|
|
742
|
+
|
|
743
|
+
when('[t0] the whole usecase is applied', () => {
|
|
744
|
+
then('the config-only practices ran (commitlint config created)', () => {
|
|
745
|
+
expect(state.commitlint).not.toBeNull();
|
|
746
|
+
});
|
|
747
|
+
|
|
748
|
+
then('cicd-common ran (the declastruct workflow was dropped in)', () => {
|
|
749
|
+
expect(state.declastructWorkflow).not.toBeNull();
|
|
750
|
+
});
|
|
751
|
+
|
|
752
|
+
then('the migration-risk practices still landed (superset apply)', () => {
|
|
753
|
+
expect(state.movedLogic).not.toBeNull();
|
|
754
|
+
expect(state.npmrc).toContain('node-linker=hoisted');
|
|
755
|
+
});
|
|
756
|
+
});
|
|
757
|
+
});
|
|
758
|
+
|
|
759
|
+
given('[case2] a bare create-expo-app scaffold with no src/ at all', () => {
|
|
760
|
+
const tempDir = genTempDir({
|
|
761
|
+
slug: 'expo-fullusecase-greenfield',
|
|
762
|
+
clone: './src/.test/assets/expo-fullusecase/repo-greenfield',
|
|
763
|
+
symlink: [
|
|
764
|
+
{
|
|
765
|
+
at: 'declarations',
|
|
766
|
+
to: './src/.test/assets/expo-fullusecase/declarations',
|
|
767
|
+
},
|
|
768
|
+
{ at: 'node_modules', to: 'node_modules' },
|
|
769
|
+
],
|
|
770
|
+
});
|
|
771
|
+
|
|
772
|
+
const read = (rel: string) =>
|
|
773
|
+
fs.readFile(path.join(tempDir, rel), 'utf-8').catch(() => null);
|
|
774
|
+
|
|
775
|
+
// the greenfield repo holds only package.json + app.json — NO src/ at all. the domain
|
|
776
|
+
// and directory-structure-src EXISTS checks are therefore unmet, so the apply must FLAG
|
|
777
|
+
// them (leave the file absent) WITHOUT a halt or a crash. this useBeforeAll proves the
|
|
778
|
+
// whole 23-practice usecase survives a repo with no src/ tree — the r10 blocker-2 case.
|
|
779
|
+
const state = useBeforeAll(async () => {
|
|
780
|
+
const config = path.join(tempDir, 'declapract.use.yml');
|
|
781
|
+
await executeApply({ config });
|
|
782
|
+
await executeApply({ config });
|
|
783
|
+
|
|
784
|
+
return {
|
|
785
|
+
// config-only practices still drop their net-new files on a bare tree
|
|
786
|
+
commitlint: await read('commitlint.config.js'),
|
|
787
|
+
declastructWorkflow: await read('.github/workflows/.declastruct.yml'),
|
|
788
|
+
// the expo .npmrc hoist still lands on a bare tree (findsert onto an absent file)
|
|
789
|
+
npmrc: await read('.npmrc'),
|
|
790
|
+
// the unmet domain EXISTS check stays absent — flagged, never auto-authored
|
|
791
|
+
domainIndex: await read('src/domain/objects/index.ts'),
|
|
792
|
+
};
|
|
793
|
+
}, 230_000);
|
|
794
|
+
|
|
795
|
+
when('[t0] the whole usecase is applied to a bare no-src repo', () => {
|
|
796
|
+
then('the apply does NOT crash — config-only files still created', () => {
|
|
797
|
+
expect(state.commitlint).not.toBeNull();
|
|
798
|
+
expect(state.declastructWorkflow).not.toBeNull();
|
|
799
|
+
});
|
|
800
|
+
|
|
801
|
+
then('the expo .npmrc hoist still lands on a bare tree', () => {
|
|
802
|
+
expect(state.npmrc).toContain('node-linker=hoisted');
|
|
803
|
+
});
|
|
804
|
+
|
|
805
|
+
then('the unmet domain EXISTS check stays absent (flagged, not auto-authored)', () => {
|
|
806
|
+
expect(state.domainIndex).toBeNull();
|
|
807
|
+
});
|
|
808
|
+
});
|
|
809
|
+
});
|
|
810
|
+
});
|