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.
Files changed (699) hide show
  1. package/dist/.test/assets/cache/declarations/declapract.declare.yml +4 -0
  2. package/dist/.test/assets/cache/declarations/practices/cache/.declapract.integration.test.ts +108 -0
  3. package/dist/.test/assets/cache/declarations/practices/cache/.test/assets/repo-with-old-cache-package/declapract.use.yml +6 -0
  4. package/dist/.test/assets/cache/declarations/practices/cache/.test/assets/repo-with-old-cache-package/package.json +7 -0
  5. package/dist/.test/assets/cache/declarations/practices/cache/.test/assets/repo-with-valid-cache-package/declapract.use.yml +6 -0
  6. package/dist/.test/assets/cache/declarations/practices/cache/.test/assets/repo-with-valid-cache-package/package.json +7 -0
  7. package/dist/.test/assets/cache/declarations/practices/cache/.test/assets/repo-without-cache-package/declapract.use.yml +6 -0
  8. package/dist/.test/assets/cache/declarations/practices/cache/.test/assets/repo-without-cache-package/package.json +7 -0
  9. package/dist/.test/assets/cache/declarations/practices/cache/best-practice/package.json +7 -0
  10. package/dist/.test/assets/cache/declarations/useCases.yml +5 -0
  11. package/dist/.test/assets/expo/declarations/declapract.declare.yml +4 -0
  12. package/dist/.test/assets/expo/declarations/practices/cicd-app-react-native-expo/.declapract.integration.test.ts +810 -0
  13. package/dist/.test/assets/expo/declarations/practices/cicd-app-react-native-expo/__snapshots__/.declapract.integration.test.ts.snap +289 -0
  14. package/dist/.test/assets/expo/declarations/practices/cicd-app-react-native-expo/best-practice/.declapract.readme.md +27 -0
  15. package/dist/.test/assets/expo/declarations/practices/cicd-app-react-native-expo/best-practice/.github/workflows/.deploy-expo.yml +127 -0
  16. package/dist/.test/assets/expo/declarations/practices/cicd-app-react-native-expo/best-practice/.github/workflows/deploy.yml +76 -0
  17. package/dist/.test/assets/expo/declarations/practices/cicd-app-react-native-expo/best-practice/.github/workflows/test.yml +27 -0
  18. package/dist/.test/assets/expo/declarations/practices/cicd-app-react-native-expo/best-practice/.gitignore.declapract.ts +28 -0
  19. package/dist/.test/assets/expo/declarations/practices/cicd-app-react-native-expo/best-practice/package.json +36 -0
  20. package/dist/.test/assets/expo/declarations/practices/cicd-app-react-native-expo/best-practice/package.json.declapract.ts +3 -0
  21. package/dist/.test/assets/expo/declarations/practices/node/.test/assets/repo-expo-npmrc/declapract.use.yml +23 -0
  22. package/dist/.test/assets/expo/declarations/practices/node/.test/assets/repo-expo-npmrc/package.json +4 -0
  23. package/dist/.test/assets/expo/declarations/practices/node/bad-practices/self-deps-not-link/.declapract.readme.md +10 -0
  24. package/dist/.test/assets/expo/declarations/practices/node/bad-practices/self-deps-not-link/package.json.declapract.ts +76 -0
  25. package/dist/.test/assets/expo/declarations/practices/node/best-practice/.npmrc.declapract.integration.test.ts +165 -0
  26. package/dist/.test/assets/expo/declarations/practices/node/best-practice/.npmrc.declapract.ts +60 -0
  27. package/dist/.test/assets/expo/declarations/practices/node/best-practice/.nvmrc +1 -0
  28. package/dist/.test/assets/expo/declarations/practices/node/best-practice/__snapshots__/.npmrc.declapract.integration.test.ts.snap +24 -0
  29. package/dist/.test/assets/expo/declarations/practices/node/best-practice/package.json +15 -0
  30. package/dist/.test/assets/expo/declarations/practices/node/best-practice/package.json.declapract.ts +3 -0
  31. package/dist/.test/assets/expo/declarations/practices/node/best-practice/readme.md +1 -0
  32. package/dist/.test/assets/expo/declarations/practices/node/best-practice/readme.md.declapract.ts +3 -0
  33. package/dist/.test/assets/expo/declarations/useCases.yml +8 -0
  34. package/dist/.test/assets/expo-fullusecase/declarations/declapract.declare.yml +10 -0
  35. package/dist/.test/assets/expo-fullusecase/declarations/practices/cache/.declapract.integration.test.ts +108 -0
  36. package/dist/.test/assets/expo-fullusecase/declarations/practices/cache/.test/assets/repo-with-old-cache-package/declapract.use.yml +6 -0
  37. package/dist/.test/assets/expo-fullusecase/declarations/practices/cache/.test/assets/repo-with-old-cache-package/package.json +7 -0
  38. package/dist/.test/assets/expo-fullusecase/declarations/practices/cache/.test/assets/repo-with-valid-cache-package/declapract.use.yml +6 -0
  39. package/dist/.test/assets/expo-fullusecase/declarations/practices/cache/.test/assets/repo-with-valid-cache-package/package.json +7 -0
  40. package/dist/.test/assets/expo-fullusecase/declarations/practices/cache/.test/assets/repo-without-cache-package/declapract.use.yml +6 -0
  41. package/dist/.test/assets/expo-fullusecase/declarations/practices/cache/.test/assets/repo-without-cache-package/package.json +7 -0
  42. package/dist/.test/assets/expo-fullusecase/declarations/practices/cache/best-practice/package.json +7 -0
  43. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-app-react-native-expo/.declapract.integration.test.ts +810 -0
  44. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-app-react-native-expo/__snapshots__/.declapract.integration.test.ts.snap +289 -0
  45. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-app-react-native-expo/best-practice/.declapract.readme.md +27 -0
  46. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-app-react-native-expo/best-practice/.github/workflows/.deploy-expo.yml +127 -0
  47. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-app-react-native-expo/best-practice/.github/workflows/deploy.yml +76 -0
  48. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-app-react-native-expo/best-practice/.github/workflows/test.yml +27 -0
  49. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-app-react-native-expo/best-practice/.gitignore.declapract.ts +28 -0
  50. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-app-react-native-expo/best-practice/package.json +36 -0
  51. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-app-react-native-expo/best-practice/package.json.declapract.ts +3 -0
  52. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/.declapract.integration.test.ts +572 -0
  53. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/.test/assets/repo-with-unpinned-workflow/.github/workflows/.test.yml +19 -0
  54. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/.test/assets/repo-with-unpinned-workflow/.github/workflows/consumer-owned.yml +21 -0
  55. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/.test/assets/repo-with-unpinned-workflow/.github/workflows/review.yml +26 -0
  56. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/.test/assets/repo-with-unpinned-workflow/declapract.use.yml +6 -0
  57. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/__snapshots__/.declapract.integration.test.ts.snap +550 -0
  58. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/bad-practices/has-changelog-file/changelog.md.declapract.ts +11 -0
  59. 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
  60. 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
  61. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/best-practice/.declapract.readme.md +8 -0
  62. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/best-practice/.github/actions/please-release/action.yml +469 -0
  63. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/best-practice/.github/actions/test-shards-setup/action.yml +68 -0
  64. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/best-practice/.github/workflows/.declastruct.yml +198 -0
  65. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/best-practice/.github/workflows/.install.yml +56 -0
  66. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/best-practice/.github/workflows/.test.yml +380 -0
  67. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/best-practice/.github/workflows/.test.yml.declapract.ts +15 -0
  68. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/best-practice/.github/workflows/release.yml +32 -0
  69. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/best-practice/.github/workflows/review.yml +26 -0
  70. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/best-practice/.github/workflows/test.yml +25 -0
  71. package/dist/.test/assets/expo-fullusecase/declarations/practices/cicd-common/best-practice/.github/workflows/test.yml.declapract.ts +15 -0
  72. package/dist/.test/assets/expo-fullusecase/declarations/practices/conventional-commits/bad-practices/commitlint/package.json +5 -0
  73. package/dist/.test/assets/expo-fullusecase/declarations/practices/conventional-commits/bad-practices/commitlint/package.json.declapract.ts +19 -0
  74. package/dist/.test/assets/expo-fullusecase/declarations/practices/conventional-commits/best-practice/.declapract.readme.md +5 -0
  75. package/dist/.test/assets/expo-fullusecase/declarations/practices/conventional-commits/best-practice/.husky/check.commit.sh +7 -0
  76. package/dist/.test/assets/expo-fullusecase/declarations/practices/conventional-commits/best-practice/.husky/commit-msg +8 -0
  77. package/dist/.test/assets/expo-fullusecase/declarations/practices/conventional-commits/best-practice/commitlint.config.js +21 -0
  78. package/dist/.test/assets/expo-fullusecase/declarations/practices/conventional-commits/best-practice/package.json +17 -0
  79. package/dist/.test/assets/expo-fullusecase/declarations/practices/conventional-commits/best-practice/package.json.declapract.ts +3 -0
  80. package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/bad-practices/data-dir/.declapract.readme.md +10 -0
  81. 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
  82. package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/bad-practices/domain-dir/.declapract.readme.md +8 -0
  83. 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
  84. package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/bad-practices/logic-dir/.declapract.readme.md +8 -0
  85. 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
  86. package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/bad-practices/model-dir/.declapract.readme.md +3 -0
  87. package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/bad-practices/model-dir/src/<star><star>/<star>.ts.declapract.ts +46 -0
  88. 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
  89. 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
  90. package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/bad-practices/old-import-paths/.declapract.readme.md +21 -0
  91. 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
  92. package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/bad-practices/services-dir/.declapract.readme.md +5 -0
  93. 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
  94. package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/best-practice/.declapract.readme.md +73 -0
  95. package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/best-practice/src/access/daos/<star><star>/<star>.ts.declapract.ts +4 -0
  96. package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/best-practice/src/access/sdks/<star><star>/<star>.ts.declapract.ts +4 -0
  97. package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/best-practice/src/access/svcs/<star><star>/<star>.ts.declapract.ts +4 -0
  98. package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/best-practice/src/contract/<star><star>/<star>.ts.declapract.ts +4 -0
  99. package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/best-practice/src/domain.objects/<star><star>/<star>.ts.declapract.ts +4 -0
  100. package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/best-practice/src/domain.operations/<star><star>/<star>.ts.declapract.ts +4 -0
  101. package/dist/.test/assets/expo-fullusecase/declarations/practices/directory-structure-src/best-practice/src/infra/<star><star>/<star>.ts.declapract.ts +4 -0
  102. package/dist/.test/assets/expo-fullusecase/declarations/practices/domain/bad-practices/schematic-joi-model/src/domain/<star><star>/<star>.ts.declapract.ts +16 -0
  103. package/dist/.test/assets/expo-fullusecase/declarations/practices/domain/bad-practices/simple-type-guards/.declapract.readme.md +1 -0
  104. package/dist/.test/assets/expo-fullusecase/declarations/practices/domain/bad-practices/simple-type-guards/package.json.declapract.ts +23 -0
  105. package/dist/.test/assets/expo-fullusecase/declarations/practices/domain/best-practice/package.json +6 -0
  106. package/dist/.test/assets/expo-fullusecase/declarations/practices/domain/best-practice/package.json.declapract.ts +3 -0
  107. package/dist/.test/assets/expo-fullusecase/declarations/practices/domain/best-practice/src/domain/objects/index.ts.declapract.ts +4 -0
  108. package/dist/.test/assets/expo-fullusecase/declarations/practices/errors/bad-practices/error-fns/package.json +5 -0
  109. package/dist/.test/assets/expo-fullusecase/declarations/practices/errors/bad-practices/error-fns/package.json.declapract.ts +23 -0
  110. package/dist/.test/assets/expo-fullusecase/declarations/practices/errors/bad-practices/error-fns/src/<star><star>/<star>.ts.declapract.ts +17 -0
  111. package/dist/.test/assets/expo-fullusecase/declarations/practices/errors/bad-practices/local-error-imports/src/<star><star>/<star>.ts.declapract.ts +85 -0
  112. package/dist/.test/assets/expo-fullusecase/declarations/practices/errors/bad-practices/own-implementation/src/utils/errors/UnexpectedCodePathError.ts.declapract.ts +3 -0
  113. package/dist/.test/assets/expo-fullusecase/declarations/practices/errors/best-practice/package.json +5 -0
  114. package/dist/.test/assets/expo-fullusecase/declarations/practices/errors/best-practice/package.json.declapract.ts +4 -0
  115. package/dist/.test/assets/expo-fullusecase/declarations/practices/format/bad-practices/format-script/package.json.declapract.ts +26 -0
  116. package/dist/.test/assets/expo-fullusecase/declarations/practices/format/bad-practices/prettier/.declapract.readme.md +6 -0
  117. package/dist/.test/assets/expo-fullusecase/declarations/practices/format/bad-practices/prettier/.prettierignore +3 -0
  118. package/dist/.test/assets/expo-fullusecase/declarations/practices/format/bad-practices/prettier/.prettierignore.declapract.ts +8 -0
  119. package/dist/.test/assets/expo-fullusecase/declarations/practices/format/bad-practices/prettier/package.json +10 -0
  120. package/dist/.test/assets/expo-fullusecase/declarations/practices/format/bad-practices/prettier/package.json.declapract.ts +35 -0
  121. package/dist/.test/assets/expo-fullusecase/declarations/practices/format/bad-practices/prettier/prettier.config.js +10 -0
  122. package/dist/.test/assets/expo-fullusecase/declarations/practices/format/bad-practices/prettier/prettier.config.js.declapract.ts +8 -0
  123. package/dist/.test/assets/expo-fullusecase/declarations/practices/format/best-practice/package.json.declapract.ts +32 -0
  124. package/dist/.test/assets/expo-fullusecase/declarations/practices/git/.declapract.integration.test.ts +950 -0
  125. package/dist/.test/assets/expo-fullusecase/declarations/practices/git/.test/assets/repo-with-rhachet-only/declapract.use.yml +6 -0
  126. package/dist/.test/assets/expo-fullusecase/declarations/practices/git/.test/assets/repo-with-rhachet-only/package.json +4 -0
  127. package/dist/.test/assets/expo-fullusecase/declarations/practices/git/.test/assets/repo-without-cache-ignores/declapract.use.yml +9 -0
  128. package/dist/.test/assets/expo-fullusecase/declarations/practices/git/.test/assets/repo-without-cache-ignores/package.json +4 -0
  129. package/dist/.test/assets/expo-fullusecase/declarations/practices/git/__snapshots__/.declapract.integration.test.ts.snap +51 -0
  130. package/dist/.test/assets/expo-fullusecase/declarations/practices/git/best-practice/.declapract.readme.md +23 -0
  131. package/dist/.test/assets/expo-fullusecase/declarations/practices/git/best-practice/.gitattributes +7 -0
  132. package/dist/.test/assets/expo-fullusecase/declarations/practices/git/best-practice/.gitattributes.declapract.ts +159 -0
  133. package/dist/.test/assets/expo-fullusecase/declarations/practices/git/best-practice/.gitignore.declapract.ts +92 -0
  134. package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/bad-practices/postinstall/package.json.declapract.ts +18 -0
  135. package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/best-practice/.husky/check.commit.sh +7 -0
  136. package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/best-practice/.husky/check.lockfile.sh +14 -0
  137. package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/best-practice/.husky/check.nvm.sh +4 -0
  138. package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/best-practice/.husky/check.timestamps.sh +48 -0
  139. package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/best-practice/.husky/check.yalc.sh +11 -0
  140. package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/best-practice/.husky/commit-msg +8 -0
  141. package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/best-practice/.husky/post-checkout +9 -0
  142. package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/best-practice/.husky/post-merge +8 -0
  143. package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/best-practice/.husky/post-rewrite +8 -0
  144. package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/best-practice/.husky/pre-commit +10 -0
  145. package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/best-practice/package.json +9 -0
  146. package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/best-practice/package.json.declapract.ts +3 -0
  147. package/dist/.test/assets/expo-fullusecase/declarations/practices/husky/check.timestamps.play.declapract.integration.test.ts +148 -0
  148. package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/bad-practices/biome-json-extension/biome.json.declapract.ts +7 -0
  149. package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/bad-practices/depcheck-denylisted-ignores/.declapract.readme.md +8 -0
  150. package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/bad-practices/depcheck-denylisted-ignores/.depcheckrc.yml.declapract.ts +60 -0
  151. package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/bad-practices/eslint/.eslintrc.js +67 -0
  152. package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/bad-practices/eslint/.eslintrc.js.declapract.ts +3 -0
  153. package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/bad-practices/eslint/package.json.declapract.ts +51 -0
  154. package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/bad-practices/tslint/package.json.declapract.ts +22 -0
  155. package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/bad-practices/tslint/tslint.json.declapract.ts +3 -0
  156. package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/best-practice/.declapract.readme.md +5 -0
  157. package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/best-practice/.depcheckrc.yml +25 -0
  158. package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/best-practice/.depcheckrc.yml.declapract.ts +41 -0
  159. package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/best-practice/.dpdmrc.yaml +9 -0
  160. package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/best-practice/biome.jsonc +103 -0
  161. package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/best-practice/package.json +17 -0
  162. package/dist/.test/assets/expo-fullusecase/declarations/practices/lint/best-practice/package.json.declapract.ts +4 -0
  163. package/dist/.test/assets/expo-fullusecase/declarations/practices/lint-react/best-practice/package.json +7 -0
  164. package/dist/.test/assets/expo-fullusecase/declarations/practices/lint-react/best-practice/package.json.declapract.ts +4 -0
  165. package/dist/.test/assets/expo-fullusecase/declarations/practices/lint-react-native/best-practice/.eslintrc.js +57 -0
  166. package/dist/.test/assets/expo-fullusecase/declarations/practices/lint-react-native/best-practice/package.json +5 -0
  167. package/dist/.test/assets/expo-fullusecase/declarations/practices/lint-react-native/best-practice/package.json.declapract.ts +4 -0
  168. package/dist/.test/assets/expo-fullusecase/declarations/practices/node/.test/assets/repo-expo-npmrc/declapract.use.yml +23 -0
  169. package/dist/.test/assets/expo-fullusecase/declarations/practices/node/.test/assets/repo-expo-npmrc/package.json +4 -0
  170. package/dist/.test/assets/expo-fullusecase/declarations/practices/node/bad-practices/self-deps-not-link/.declapract.readme.md +10 -0
  171. package/dist/.test/assets/expo-fullusecase/declarations/practices/node/bad-practices/self-deps-not-link/package.json.declapract.ts +76 -0
  172. package/dist/.test/assets/expo-fullusecase/declarations/practices/node/best-practice/.npmrc.declapract.integration.test.ts +165 -0
  173. package/dist/.test/assets/expo-fullusecase/declarations/practices/node/best-practice/.npmrc.declapract.ts +60 -0
  174. package/dist/.test/assets/expo-fullusecase/declarations/practices/node/best-practice/.nvmrc +1 -0
  175. package/dist/.test/assets/expo-fullusecase/declarations/practices/node/best-practice/__snapshots__/.npmrc.declapract.integration.test.ts.snap +24 -0
  176. package/dist/.test/assets/expo-fullusecase/declarations/practices/node/best-practice/package.json +15 -0
  177. package/dist/.test/assets/expo-fullusecase/declarations/practices/node/best-practice/package.json.declapract.ts +3 -0
  178. package/dist/.test/assets/expo-fullusecase/declarations/practices/node/best-practice/readme.md +1 -0
  179. package/dist/.test/assets/expo-fullusecase/declarations/practices/node/best-practice/readme.md.declapract.ts +3 -0
  180. package/dist/.test/assets/expo-fullusecase/declarations/practices/nonpublished-modules/.declapract.readme.md +5 -0
  181. package/dist/.test/assets/expo-fullusecase/declarations/practices/nonpublished-modules/bad-practices/ahbode-standard-lambda-handler/.declapract.readme.md +1 -0
  182. 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
  183. 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
  184. 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
  185. package/dist/.test/assets/expo-fullusecase/declarations/practices/nonpublished-modules/bad-practices/ahbode-standard-lambda-handler/src/contract/handlers/<star>.ts +1 -0
  186. 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
  187. package/dist/.test/assets/expo-fullusecase/declarations/practices/nonpublished-modules/bad-practices/deep-omit/.declapract.readme.md +1 -0
  188. 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
  189. 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
  190. 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
  191. package/dist/.test/assets/expo-fullusecase/declarations/practices/nonpublished-modules/bad-practices/simple-dynamodb-client/.declapract.readme.md +1 -0
  192. 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
  193. package/dist/.test/assets/expo-fullusecase/declarations/practices/package-json-order/best-practice/.declapract.readme.md +3 -0
  194. package/dist/.test/assets/expo-fullusecase/declarations/practices/package-json-order/best-practice/package.json.declapract.ts +227 -0
  195. package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/.declapract.integration.test.ts +175 -0
  196. package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/.test/assets/repo-npm-to-pnpm/.husky/check.lockfile.sh +10 -0
  197. package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/.test/assets/repo-npm-to-pnpm/declapract.use.yml +7 -0
  198. package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/.test/assets/repo-npm-to-pnpm/package.json +16 -0
  199. package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/__snapshots__/.declapract.integration.test.ts.snap +68 -0
  200. package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/bad-practices/husky-lockfile-check/.declapract.readme.md +17 -0
  201. package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/bad-practices/husky-lockfile-check/.husky/check.lockfile.sh.declapract.ts +28 -0
  202. package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/bad-practices/npm-overrides/.declapract.readme.md +20 -0
  203. package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/bad-practices/npm-overrides/package.json.declapract.ts +75 -0
  204. package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/bad-practices/package-lock-json/.declapract.readme.md +30 -0
  205. package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/bad-practices/package-lock-json/package-lock.json.declapract.integration.test.ts +105 -0
  206. package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/bad-practices/package-lock-json/package-lock.json.declapract.ts +41 -0
  207. package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/best-practice/.declapract.readme.md +22 -0
  208. package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/best-practice/package.json +3 -0
  209. package/dist/.test/assets/expo-fullusecase/declarations/practices/pnpm/best-practice/package.json.declapract.ts +15 -0
  210. package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/bad-practices/deprecated-reviewers-variable/declapract.use.yml.declapract.ts +41 -0
  211. 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
  212. package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/bad-practices/terraform-github/provision/github/environment/import-existing-repo.sh +12 -0
  213. 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
  214. package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/bad-practices/terraform-github/provision/github/environment/main.tf +20 -0
  215. package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/bad-practices/terraform-github/provision/github/environment/main.tf.declapract.ts +3 -0
  216. package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/bad-practices/terraform-github/provision/github/environment/versions.tf +9 -0
  217. package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/bad-practices/terraform-github/provision/github/environment/versions.tf.declapract.ts +3 -0
  218. package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/bad-practices/terraform-github/provision/github/product/repository.tf +74 -0
  219. package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/bad-practices/terraform-github/provision/github/product/repository.tf.declapract.ts +3 -0
  220. package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/best-practice/.declapract.readme.md +7 -0
  221. package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/best-practice/package.json +7 -0
  222. package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/best-practice/package.json.declapract.ts +3 -0
  223. package/dist/.test/assets/expo-fullusecase/declarations/practices/provision-github/best-practice/provision/github.repo/resources.ts +229 -0
  224. package/dist/.test/assets/expo-fullusecase/declarations/practices/rhachet/bad-practices/deprecated-use-file/.declapract.readme.md +11 -0
  225. package/dist/.test/assets/expo-fullusecase/declarations/practices/rhachet/bad-practices/deprecated-use-file/rhachet.use.ts.declapract.ts +12 -0
  226. package/dist/.test/assets/expo-fullusecase/declarations/practices/rhachet/bad-practices/prod-deps/.declapract.readme.md +55 -0
  227. package/dist/.test/assets/expo-fullusecase/declarations/practices/rhachet/bad-practices/prod-deps/package.json +5 -0
  228. package/dist/.test/assets/expo-fullusecase/declarations/practices/rhachet/bad-practices/prod-deps/package.json.declapract.ts +47 -0
  229. 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
  230. 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
  231. package/dist/.test/assets/expo-fullusecase/declarations/practices/rhachet/bad-practices/review-peer-artifacts/.declapract.readme.md +12 -0
  232. package/dist/.test/assets/expo-fullusecase/declarations/practices/rhachet/best-practice/.agent/keyrack.yml.declapract.ts +3 -0
  233. package/dist/.test/assets/expo-fullusecase/declarations/practices/rhachet/best-practice/.declapract.readme.md +32 -0
  234. package/dist/.test/assets/expo-fullusecase/declarations/practices/rhachet/best-practice/.gitignore.declapract.ts +64 -0
  235. package/dist/.test/assets/expo-fullusecase/declarations/practices/rhachet/best-practice/package.json +18 -0
  236. package/dist/.test/assets/expo-fullusecase/declarations/practices/rhachet/best-practice/package.json.declapract.ts +3 -0
  237. package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-any/bad-practices/javascript-config-files/jest.<star>.js.declapract.ts +17 -0
  238. package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/old-acceptance-dir-location/.declapract.integration.test.ts +2 -2
  239. 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
  240. package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/_utils/getDataFromLastOpenBracketAtStartOfLine.ts.declapract.ts +3 -0
  241. package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/_utils/invokeLambda.ts.declapract.ts +3 -0
  242. 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
  243. package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/best-practice/package.json +1 -3
  244. package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-any/best-practice/package.json.declapract.ts +3 -0
  245. package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-any/best-practice/package.json.shell-flags.declapract.integration.test.ts +129 -0
  246. package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/.declapract.integration.test.ts +134 -0
  247. package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/.test/assets/repo-expo-greenfield/declapract.use.yml +6 -0
  248. package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/.test/assets/repo-expo-greenfield/package.json +4 -0
  249. package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/__snapshots__/.declapract.integration.test.ts.snap +112 -0
  250. package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/bad-practices/inline-jest-config/.declapract.readme.md +22 -0
  251. package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/bad-practices/inline-jest-config/package.json.declapract.ts +36 -0
  252. package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/best-practice/jest.acceptance.config.ts +43 -0
  253. package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/best-practice/jest.acceptance.env.ts +15 -0
  254. package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/best-practice/jest.integration.config.ts +42 -0
  255. package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/best-practice/jest.integration.env.ts +22 -0
  256. package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/best-practice/jest.unit.config.ts +53 -0
  257. package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/best-practice/jest.unit.env.ts +18 -0
  258. package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/best-practice/package.json +9 -0
  259. package/dist/.test/assets/expo-fullusecase/declarations/practices/tests-expo/best-practice/package.json.declapract.ts +16 -0
  260. package/dist/.test/assets/expo-fullusecase/declarations/practices/typescript-any/bad-practices/relative-imports/.declapract.readme.md +45 -0
  261. 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
  262. package/dist/.test/assets/expo-fullusecase/declarations/practices/typescript-any/best-practice/.declapract.readme.md +17 -0
  263. package/dist/.test/assets/expo-fullusecase/declarations/practices/typescript-any/best-practice/package.json +8 -0
  264. package/dist/.test/assets/expo-fullusecase/declarations/practices/typescript-any/best-practice/package.json.declapract.ts +11 -0
  265. package/dist/.test/assets/expo-fullusecase/declarations/practices/typescript-expo/best-practice/package.json +6 -0
  266. package/dist/.test/assets/expo-fullusecase/declarations/practices/typescript-expo/best-practice/package.json.declapract.integration.test.ts +30 -0
  267. package/dist/.test/assets/expo-fullusecase/declarations/practices/typescript-expo/best-practice/package.json.declapract.ts +12 -0
  268. package/dist/.test/assets/expo-fullusecase/declarations/practices/typescript-expo/best-practice/tsconfig.json +14 -0
  269. package/dist/.test/assets/expo-fullusecase/declarations/practices/typescript-expo/best-practice/tsconfig.json.declapract.integration.test.ts +32 -0
  270. package/dist/.test/assets/expo-fullusecase/declarations/practices/typescript-expo/best-practice/tsconfig.json.declapract.ts +12 -0
  271. package/dist/.test/assets/expo-fullusecase/declarations/useCases.yml +36 -0
  272. package/dist/.test/assets/expo-fullusecase/repo-greenfield/app.json +6 -0
  273. package/dist/.test/assets/expo-fullusecase/repo-greenfield/declapract.use.yml +24 -0
  274. package/dist/.test/assets/expo-fullusecase/repo-greenfield/package.json +7 -0
  275. package/dist/.test/assets/expo-migration/declarations/declapract.declare.yml +4 -0
  276. package/dist/.test/assets/expo-migration/declarations/practices/cicd-app-react-native-expo/.declapract.integration.test.ts +810 -0
  277. package/dist/.test/assets/expo-migration/declarations/practices/cicd-app-react-native-expo/__snapshots__/.declapract.integration.test.ts.snap +289 -0
  278. package/dist/.test/assets/expo-migration/declarations/practices/cicd-app-react-native-expo/best-practice/.declapract.readme.md +27 -0
  279. package/dist/.test/assets/expo-migration/declarations/practices/cicd-app-react-native-expo/best-practice/.github/workflows/.deploy-expo.yml +127 -0
  280. package/dist/.test/assets/expo-migration/declarations/practices/cicd-app-react-native-expo/best-practice/.github/workflows/deploy.yml +76 -0
  281. package/dist/.test/assets/expo-migration/declarations/practices/cicd-app-react-native-expo/best-practice/.github/workflows/test.yml +27 -0
  282. package/dist/.test/assets/expo-migration/declarations/practices/cicd-app-react-native-expo/best-practice/.gitignore.declapract.ts +28 -0
  283. package/dist/.test/assets/expo-migration/declarations/practices/cicd-app-react-native-expo/best-practice/package.json +36 -0
  284. package/dist/.test/assets/expo-migration/declarations/practices/cicd-app-react-native-expo/best-practice/package.json.declapract.ts +3 -0
  285. package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/bad-practices/data-dir/.declapract.readme.md +10 -0
  286. 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
  287. package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/bad-practices/domain-dir/.declapract.readme.md +8 -0
  288. 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
  289. package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/bad-practices/logic-dir/.declapract.readme.md +8 -0
  290. 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
  291. package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/bad-practices/model-dir/.declapract.readme.md +3 -0
  292. package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/bad-practices/model-dir/src/<star><star>/<star>.ts.declapract.ts +46 -0
  293. 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
  294. 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
  295. package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/bad-practices/old-import-paths/.declapract.readme.md +21 -0
  296. 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
  297. package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/bad-practices/services-dir/.declapract.readme.md +5 -0
  298. 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
  299. package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/best-practice/.declapract.readme.md +73 -0
  300. package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/best-practice/src/access/daos/<star><star>/<star>.ts.declapract.ts +4 -0
  301. package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/best-practice/src/access/sdks/<star><star>/<star>.ts.declapract.ts +4 -0
  302. package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/best-practice/src/access/svcs/<star><star>/<star>.ts.declapract.ts +4 -0
  303. package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/best-practice/src/contract/<star><star>/<star>.ts.declapract.ts +4 -0
  304. package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/best-practice/src/domain.objects/<star><star>/<star>.ts.declapract.ts +4 -0
  305. package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/best-practice/src/domain.operations/<star><star>/<star>.ts.declapract.ts +4 -0
  306. package/dist/.test/assets/expo-migration/declarations/practices/directory-structure-src/best-practice/src/infra/<star><star>/<star>.ts.declapract.ts +4 -0
  307. package/dist/.test/assets/expo-migration/declarations/practices/domain/bad-practices/schematic-joi-model/src/domain/<star><star>/<star>.ts.declapract.ts +16 -0
  308. package/dist/.test/assets/expo-migration/declarations/practices/domain/bad-practices/simple-type-guards/.declapract.readme.md +1 -0
  309. package/dist/.test/assets/expo-migration/declarations/practices/domain/bad-practices/simple-type-guards/package.json.declapract.ts +23 -0
  310. package/dist/.test/assets/expo-migration/declarations/practices/domain/best-practice/package.json +6 -0
  311. package/dist/.test/assets/expo-migration/declarations/practices/domain/best-practice/package.json.declapract.ts +3 -0
  312. package/dist/.test/assets/expo-migration/declarations/practices/domain/best-practice/src/domain/objects/index.ts.declapract.ts +4 -0
  313. package/dist/.test/assets/expo-migration/declarations/practices/git/.declapract.integration.test.ts +950 -0
  314. package/dist/.test/assets/expo-migration/declarations/practices/git/.test/assets/repo-with-rhachet-only/declapract.use.yml +6 -0
  315. package/dist/.test/assets/expo-migration/declarations/practices/git/.test/assets/repo-with-rhachet-only/package.json +4 -0
  316. package/dist/.test/assets/expo-migration/declarations/practices/git/.test/assets/repo-without-cache-ignores/declapract.use.yml +9 -0
  317. package/dist/.test/assets/expo-migration/declarations/practices/git/.test/assets/repo-without-cache-ignores/package.json +4 -0
  318. package/dist/.test/assets/expo-migration/declarations/practices/git/__snapshots__/.declapract.integration.test.ts.snap +51 -0
  319. package/dist/.test/assets/expo-migration/declarations/practices/git/best-practice/.declapract.readme.md +23 -0
  320. package/dist/.test/assets/expo-migration/declarations/practices/git/best-practice/.gitattributes +7 -0
  321. package/dist/.test/assets/expo-migration/declarations/practices/git/best-practice/.gitattributes.declapract.ts +159 -0
  322. package/dist/.test/assets/expo-migration/declarations/practices/git/best-practice/.gitignore.declapract.ts +92 -0
  323. package/dist/.test/assets/expo-migration/declarations/practices/node/.test/assets/repo-expo-npmrc/declapract.use.yml +23 -0
  324. package/dist/.test/assets/expo-migration/declarations/practices/node/.test/assets/repo-expo-npmrc/package.json +4 -0
  325. package/dist/.test/assets/expo-migration/declarations/practices/node/bad-practices/self-deps-not-link/.declapract.readme.md +10 -0
  326. package/dist/.test/assets/expo-migration/declarations/practices/node/bad-practices/self-deps-not-link/package.json.declapract.ts +76 -0
  327. package/dist/.test/assets/expo-migration/declarations/practices/node/best-practice/.npmrc.declapract.integration.test.ts +165 -0
  328. package/dist/.test/assets/expo-migration/declarations/practices/node/best-practice/.npmrc.declapract.ts +60 -0
  329. package/dist/.test/assets/expo-migration/declarations/practices/node/best-practice/.nvmrc +1 -0
  330. package/dist/.test/assets/expo-migration/declarations/practices/node/best-practice/__snapshots__/.npmrc.declapract.integration.test.ts.snap +24 -0
  331. package/dist/.test/assets/expo-migration/declarations/practices/node/best-practice/package.json +15 -0
  332. package/dist/.test/assets/expo-migration/declarations/practices/node/best-practice/package.json.declapract.ts +3 -0
  333. package/dist/.test/assets/expo-migration/declarations/practices/node/best-practice/readme.md +1 -0
  334. package/dist/.test/assets/expo-migration/declarations/practices/node/best-practice/readme.md.declapract.ts +3 -0
  335. package/dist/.test/assets/expo-migration/declarations/practices/pnpm/.declapract.integration.test.ts +175 -0
  336. package/dist/.test/assets/expo-migration/declarations/practices/pnpm/.test/assets/repo-npm-to-pnpm/.husky/check.lockfile.sh +10 -0
  337. package/dist/.test/assets/expo-migration/declarations/practices/pnpm/.test/assets/repo-npm-to-pnpm/declapract.use.yml +7 -0
  338. package/dist/.test/assets/expo-migration/declarations/practices/pnpm/.test/assets/repo-npm-to-pnpm/package.json +16 -0
  339. package/dist/.test/assets/expo-migration/declarations/practices/pnpm/__snapshots__/.declapract.integration.test.ts.snap +68 -0
  340. package/dist/.test/assets/expo-migration/declarations/practices/pnpm/bad-practices/husky-lockfile-check/.declapract.readme.md +17 -0
  341. package/dist/.test/assets/expo-migration/declarations/practices/pnpm/bad-practices/husky-lockfile-check/.husky/check.lockfile.sh.declapract.ts +28 -0
  342. package/dist/.test/assets/expo-migration/declarations/practices/pnpm/bad-practices/npm-overrides/.declapract.readme.md +20 -0
  343. package/dist/.test/assets/expo-migration/declarations/practices/pnpm/bad-practices/npm-overrides/package.json.declapract.ts +75 -0
  344. package/dist/.test/assets/expo-migration/declarations/practices/pnpm/bad-practices/package-lock-json/.declapract.readme.md +30 -0
  345. package/dist/.test/assets/expo-migration/declarations/practices/pnpm/bad-practices/package-lock-json/package-lock.json.declapract.integration.test.ts +105 -0
  346. package/dist/.test/assets/expo-migration/declarations/practices/pnpm/bad-practices/package-lock-json/package-lock.json.declapract.ts +41 -0
  347. package/dist/.test/assets/expo-migration/declarations/practices/pnpm/best-practice/.declapract.readme.md +22 -0
  348. package/dist/.test/assets/expo-migration/declarations/practices/pnpm/best-practice/package.json +3 -0
  349. package/dist/.test/assets/expo-migration/declarations/practices/pnpm/best-practice/package.json.declapract.ts +15 -0
  350. package/dist/.test/assets/expo-migration/declarations/practices/rhachet/bad-practices/deprecated-use-file/.declapract.readme.md +11 -0
  351. package/dist/.test/assets/expo-migration/declarations/practices/rhachet/bad-practices/deprecated-use-file/rhachet.use.ts.declapract.ts +12 -0
  352. package/dist/.test/assets/expo-migration/declarations/practices/rhachet/bad-practices/prod-deps/.declapract.readme.md +55 -0
  353. package/dist/.test/assets/expo-migration/declarations/practices/rhachet/bad-practices/prod-deps/package.json +5 -0
  354. package/dist/.test/assets/expo-migration/declarations/practices/rhachet/bad-practices/prod-deps/package.json.declapract.ts +47 -0
  355. 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
  356. 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
  357. package/dist/.test/assets/expo-migration/declarations/practices/rhachet/bad-practices/review-peer-artifacts/.declapract.readme.md +12 -0
  358. package/dist/.test/assets/expo-migration/declarations/practices/rhachet/best-practice/.agent/keyrack.yml.declapract.ts +3 -0
  359. package/dist/.test/assets/expo-migration/declarations/practices/rhachet/best-practice/.declapract.readme.md +32 -0
  360. package/dist/.test/assets/expo-migration/declarations/practices/rhachet/best-practice/.gitignore.declapract.ts +64 -0
  361. package/dist/.test/assets/expo-migration/declarations/practices/rhachet/best-practice/package.json +18 -0
  362. package/dist/.test/assets/expo-migration/declarations/practices/rhachet/best-practice/package.json.declapract.ts +3 -0
  363. package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/javascript-config-files/.declapract.readme.md +1 -0
  364. package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/javascript-config-files/jest.<star>.js.declapract.ts +17 -0
  365. package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/mocks/.declapract.readme.md +8 -0
  366. package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/mocks/<star><star>/__mock__/<star>.js +3 -0
  367. package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/mocks/<star><star>/__mock__/<star>.ts +3 -0
  368. package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/.declapract.integration.test.ts +63 -0
  369. package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/.declapract.readme.md +22 -0
  370. 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
  371. 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
  372. 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
  373. 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
  374. 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
  375. 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
  376. 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
  377. package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/acceptance/<star><star>/<star>.declapract.ts +19 -0
  378. package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-acceptance-import-paths/.declapract.readme.md +31 -0
  379. package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-acceptance-import-paths/<star><star>/<star>.ts.declapract.ts +25 -0
  380. package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/_utils/getDataFromLastOpenBracketAtStartOfLine.ts.declapract.ts +3 -0
  381. package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/_utils/invokeLambda.ts.declapract.ts +3 -0
  382. package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/lambdas/<star>.ts.declapract.ts +44 -0
  383. 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
  384. 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
  385. 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
  386. package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-extension-pattern/.declapract.readme.md +3 -0
  387. 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
  388. 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
  389. package/dist/.test/assets/expo-migration/declarations/practices/tests-any/bad-practices/old-test-utils-and-assets-location/.declapract.readme.md +8 -0
  390. 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
  391. 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
  392. 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
  393. package/dist/.test/assets/expo-migration/declarations/practices/tests-any/best-practice/.declapract.readme.md +45 -0
  394. package/dist/.test/assets/expo-migration/declarations/practices/tests-any/best-practice/.declapract.todo.md +3 -0
  395. package/dist/.test/assets/expo-migration/declarations/practices/tests-any/best-practice/package.json +17 -0
  396. package/dist/.test/assets/expo-migration/declarations/practices/tests-any/best-practice/package.json.declapract.ts +3 -0
  397. package/dist/.test/assets/expo-migration/declarations/practices/tests-any/best-practice/package.json.shell-flags.declapract.integration.test.ts +129 -0
  398. package/dist/.test/assets/expo-migration/declarations/practices/tests-any/best-practice/src/<star><star>/<star>.integration.test.ts.declapract.ts +3 -0
  399. package/dist/.test/assets/expo-migration/declarations/practices/tests-any/best-practice/src/<star><star>/<star>.test.ts.declapract.ts +3 -0
  400. package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/.declapract.integration.test.ts +134 -0
  401. package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/.test/assets/repo-expo-greenfield/declapract.use.yml +6 -0
  402. package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/.test/assets/repo-expo-greenfield/package.json +4 -0
  403. package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/__snapshots__/.declapract.integration.test.ts.snap +112 -0
  404. package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/bad-practices/inline-jest-config/.declapract.readme.md +22 -0
  405. package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/bad-practices/inline-jest-config/package.json.declapract.ts +36 -0
  406. package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/best-practice/jest.acceptance.config.ts +43 -0
  407. package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/best-practice/jest.acceptance.env.ts +15 -0
  408. package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/best-practice/jest.config.ts +7 -0
  409. package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/best-practice/jest.integration.config.ts +42 -0
  410. package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/best-practice/jest.integration.env.ts +22 -0
  411. package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/best-practice/jest.unit.config.ts +53 -0
  412. package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/best-practice/jest.unit.env.ts +18 -0
  413. package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/best-practice/package.json +9 -0
  414. package/dist/.test/assets/expo-migration/declarations/practices/tests-expo/best-practice/package.json.declapract.ts +16 -0
  415. package/dist/.test/assets/expo-migration/declarations/practices/typescript-any/bad-practices/relative-imports/.declapract.readme.md +45 -0
  416. package/dist/.test/assets/expo-migration/declarations/practices/typescript-any/bad-practices/relative-imports/src/<star><star>/<star>.ts.declapract.ts +97 -0
  417. package/dist/.test/assets/expo-migration/declarations/practices/typescript-any/best-practice/.declapract.readme.md +17 -0
  418. package/dist/.test/assets/expo-migration/declarations/practices/typescript-any/best-practice/package.json +8 -0
  419. package/dist/.test/assets/expo-migration/declarations/practices/typescript-any/best-practice/package.json.declapract.ts +11 -0
  420. package/dist/.test/assets/expo-migration/declarations/practices/typescript-expo/best-practice/package.json +6 -0
  421. package/dist/.test/assets/expo-migration/declarations/practices/typescript-expo/best-practice/package.json.declapract.integration.test.ts +30 -0
  422. package/dist/.test/assets/expo-migration/declarations/practices/typescript-expo/best-practice/package.json.declapract.ts +12 -0
  423. package/dist/.test/assets/expo-migration/declarations/practices/typescript-expo/best-practice/tsconfig.json +14 -0
  424. package/dist/.test/assets/expo-migration/declarations/practices/typescript-expo/best-practice/tsconfig.json.declapract.integration.test.ts +32 -0
  425. package/dist/.test/assets/expo-migration/declarations/practices/typescript-expo/best-practice/tsconfig.json.declapract.ts +12 -0
  426. package/dist/.test/assets/expo-migration/declarations/useCases.yml +21 -0
  427. package/dist/.test/assets/expo-migration/repo-app-protools-shaped/.github/workflows/.deploy-expo.yml +30 -0
  428. package/dist/.test/assets/expo-migration/repo-app-protools-shaped/.husky/check.lockfile.sh +5 -0
  429. package/dist/.test/assets/expo-migration/repo-app-protools-shaped/declapract.use.yml +24 -0
  430. package/dist/.test/assets/expo-migration/repo-app-protools-shaped/jest.config.js +8 -0
  431. package/dist/.test/assets/expo-migration/repo-app-protools-shaped/package-lock.json +7 -0
  432. package/dist/.test/assets/expo-migration/repo-app-protools-shaped/package.json +22 -0
  433. package/dist/.test/assets/expo-migration/repo-app-protools-shaped/pnpm-lock.yaml +5 -0
  434. package/dist/.test/assets/expo-migration/repo-app-protools-shaped/src/data/dao/daoCustomer.ts +9 -0
  435. package/dist/.test/assets/expo-migration/repo-app-protools-shaped/src/logic/customer/getCustomer.ts +25 -0
  436. package/dist/.test/assets/expo-migration/repo-app-protools-shaped/src/logic/shared/formatCustomer.ts +8 -0
  437. package/dist/.test/assets/expo-migration/repo-app-protools-shaped/tsconfig.json +12 -0
  438. package/dist/.test/assets/expo-toolchain/declarations/declapract.declare.yml +4 -0
  439. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/javascript-config-files/.declapract.readme.md +1 -0
  440. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/javascript-config-files/jest.<star>.js.declapract.ts +17 -0
  441. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/mocks/.declapract.readme.md +8 -0
  442. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/mocks/<star><star>/__mock__/<star>.js +3 -0
  443. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/mocks/<star><star>/__mock__/<star>.ts +3 -0
  444. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/.declapract.integration.test.ts +63 -0
  445. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/.declapract.readme.md +22 -0
  446. 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
  447. 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
  448. 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
  449. 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
  450. 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
  451. 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
  452. 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
  453. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-acceptance-dir-location/acceptance/<star><star>/<star>.declapract.ts +19 -0
  454. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-acceptance-import-paths/.declapract.readme.md +31 -0
  455. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-acceptance-import-paths/<star><star>/<star>.ts.declapract.ts +25 -0
  456. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/_utils/getDataFromLastOpenBracketAtStartOfLine.ts.declapract.ts +3 -0
  457. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/_utils/invokeLambda.ts.declapract.ts +3 -0
  458. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/lambdas/<star>.ts.declapract.ts +44 -0
  459. 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
  460. 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
  461. 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
  462. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-extension-pattern/.declapract.readme.md +3 -0
  463. 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
  464. 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
  465. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/bad-practices/old-test-utils-and-assets-location/.declapract.readme.md +8 -0
  466. 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
  467. 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
  468. 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
  469. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/best-practice/.declapract.readme.md +45 -0
  470. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/best-practice/.declapract.todo.md +3 -0
  471. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/best-practice/package.json +17 -0
  472. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/best-practice/package.json.declapract.ts +3 -0
  473. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/best-practice/package.json.shell-flags.declapract.integration.test.ts +129 -0
  474. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/best-practice/src/<star><star>/<star>.integration.test.ts.declapract.ts +3 -0
  475. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-any/best-practice/src/<star><star>/<star>.test.ts.declapract.ts +3 -0
  476. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/.declapract.integration.test.ts +134 -0
  477. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/.test/assets/repo-expo-greenfield/declapract.use.yml +6 -0
  478. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/.test/assets/repo-expo-greenfield/package.json +4 -0
  479. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/__snapshots__/.declapract.integration.test.ts.snap +112 -0
  480. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/bad-practices/inline-jest-config/.declapract.readme.md +22 -0
  481. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/bad-practices/inline-jest-config/package.json.declapract.ts +36 -0
  482. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/best-practice/jest.acceptance.config.ts +43 -0
  483. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/best-practice/jest.acceptance.env.ts +15 -0
  484. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/best-practice/jest.config.ts +7 -0
  485. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/best-practice/jest.integration.config.ts +42 -0
  486. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/best-practice/jest.integration.env.ts +22 -0
  487. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/best-practice/jest.unit.config.ts +53 -0
  488. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/best-practice/jest.unit.env.ts +18 -0
  489. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/best-practice/package.json +9 -0
  490. package/dist/.test/assets/expo-toolchain/declarations/practices/tests-expo/best-practice/package.json.declapract.ts +16 -0
  491. package/dist/.test/assets/expo-toolchain/declarations/practices/typescript-any/bad-practices/relative-imports/.declapract.readme.md +45 -0
  492. package/dist/.test/assets/expo-toolchain/declarations/practices/typescript-any/bad-practices/relative-imports/src/<star><star>/<star>.ts.declapract.ts +97 -0
  493. package/dist/.test/assets/expo-toolchain/declarations/practices/typescript-any/best-practice/.declapract.readme.md +17 -0
  494. package/dist/.test/assets/expo-toolchain/declarations/practices/typescript-any/best-practice/package.json +8 -0
  495. package/dist/.test/assets/expo-toolchain/declarations/practices/typescript-any/best-practice/package.json.declapract.ts +11 -0
  496. package/dist/.test/assets/expo-toolchain/declarations/practices/typescript-expo/best-practice/package.json +6 -0
  497. package/dist/.test/assets/expo-toolchain/declarations/practices/typescript-expo/best-practice/package.json.declapract.integration.test.ts +30 -0
  498. package/dist/.test/assets/expo-toolchain/declarations/practices/typescript-expo/best-practice/package.json.declapract.ts +12 -0
  499. package/dist/.test/assets/expo-toolchain/declarations/practices/typescript-expo/best-practice/tsconfig.json +14 -0
  500. package/dist/.test/assets/expo-toolchain/declarations/practices/typescript-expo/best-practice/tsconfig.json.declapract.integration.test.ts +32 -0
  501. package/dist/.test/assets/expo-toolchain/declarations/practices/typescript-expo/best-practice/tsconfig.json.declapract.ts +12 -0
  502. package/dist/.test/assets/expo-toolchain/declarations/useCases.yml +12 -0
  503. package/dist/.test/assets/pnpm/declarations/declapract.declare.yml +4 -0
  504. package/dist/.test/assets/pnpm/declarations/practices/pnpm/.declapract.integration.test.ts +175 -0
  505. package/dist/.test/assets/pnpm/declarations/practices/pnpm/.test/assets/repo-npm-to-pnpm/.husky/check.lockfile.sh +10 -0
  506. package/dist/.test/assets/pnpm/declarations/practices/pnpm/.test/assets/repo-npm-to-pnpm/declapract.use.yml +7 -0
  507. package/dist/.test/assets/pnpm/declarations/practices/pnpm/.test/assets/repo-npm-to-pnpm/package.json +16 -0
  508. package/dist/.test/assets/pnpm/declarations/practices/pnpm/__snapshots__/.declapract.integration.test.ts.snap +68 -0
  509. package/dist/.test/assets/pnpm/declarations/practices/pnpm/bad-practices/husky-lockfile-check/.declapract.readme.md +17 -0
  510. package/dist/.test/assets/pnpm/declarations/practices/pnpm/bad-practices/husky-lockfile-check/.husky/check.lockfile.sh.declapract.ts +28 -0
  511. package/dist/.test/assets/pnpm/declarations/practices/pnpm/bad-practices/npm-overrides/.declapract.readme.md +20 -0
  512. package/dist/.test/assets/pnpm/declarations/practices/pnpm/bad-practices/npm-overrides/package.json.declapract.ts +75 -0
  513. package/dist/.test/assets/pnpm/declarations/practices/pnpm/bad-practices/package-lock-json/.declapract.readme.md +30 -0
  514. package/dist/.test/assets/pnpm/declarations/practices/pnpm/bad-practices/package-lock-json/package-lock.json.declapract.integration.test.ts +105 -0
  515. package/dist/.test/assets/pnpm/declarations/practices/pnpm/bad-practices/package-lock-json/package-lock.json.declapract.ts +41 -0
  516. package/dist/.test/assets/pnpm/declarations/practices/pnpm/best-practice/.declapract.readme.md +22 -0
  517. package/dist/.test/assets/pnpm/declarations/practices/pnpm/best-practice/package.json +3 -0
  518. package/dist/.test/assets/pnpm/declarations/practices/pnpm/best-practice/package.json.declapract.ts +15 -0
  519. package/dist/.test/assets/pnpm/declarations/useCases.yml +7 -0
  520. package/dist/__snapshots__/actionPins.declapract.integration.test.ts.snap +70 -0
  521. package/dist/actionPins.declapract.integration.test.ts +785 -0
  522. package/dist/practices/cache/.declapract.integration.test.ts +3 -3
  523. package/dist/practices/cicd-app-react-native-expo/.declapract.integration.test.ts +810 -0
  524. package/dist/practices/cicd-app-react-native-expo/__snapshots__/.declapract.integration.test.ts.snap +289 -0
  525. package/dist/practices/cicd-app-react-native-expo/best-practice/.github/workflows/.deploy-expo.yml +24 -25
  526. package/dist/practices/cicd-app-react-native-expo/best-practice/.github/workflows/deploy.yml +4 -0
  527. package/dist/practices/cicd-app-react-native-expo/best-practice/.github/workflows/test.yml +4 -0
  528. package/dist/practices/cicd-app-react-native-expo/best-practice/package.json +0 -7
  529. package/dist/practices/cicd-common/.declapract.integration.test.ts +572 -0
  530. package/dist/practices/cicd-common/.test/assets/repo-with-unpinned-workflow/.github/workflows/.test.yml +19 -0
  531. package/dist/practices/cicd-common/.test/assets/repo-with-unpinned-workflow/.github/workflows/consumer-owned.yml +21 -0
  532. package/dist/practices/cicd-common/.test/assets/repo-with-unpinned-workflow/.github/workflows/review.yml +26 -0
  533. package/dist/practices/cicd-common/.test/assets/repo-with-unpinned-workflow/declapract.use.yml +6 -0
  534. package/dist/practices/cicd-common/.test/assets/repo-with-unpinned-workflow/package.json +4 -0
  535. package/dist/practices/cicd-common/__snapshots__/.declapract.integration.test.ts.snap +550 -0
  536. package/dist/practices/cicd-common/best-practice/.declapract.readme.md +5 -0
  537. package/dist/practices/cicd-common/best-practice/.github/workflows/.declastruct.yml +12 -12
  538. package/dist/practices/cicd-common/best-practice/.github/workflows/.install.yml +5 -5
  539. package/dist/practices/cicd-common/best-practice/.github/workflows/.test.yml +25 -25
  540. package/dist/practices/cicd-common/best-practice/.github/workflows/release.yml +2 -2
  541. package/dist/practices/cicd-common/best-practice/.github/workflows/review.yml +1 -1
  542. package/dist/practices/cicd-package/best-practice/.github/workflows/.publish-npm.yml +3 -3
  543. package/dist/practices/cicd-package/best-practice/.github/workflows/provision.yml +4 -0
  544. package/dist/practices/cicd-service/best-practice/.github/workflows/.deploy-sls.yml +13 -13
  545. package/dist/practices/cicd-service/best-practice/.github/workflows/.sql-schema-control.yml +8 -8
  546. package/dist/practices/cicd-service/best-practice/.github/workflows/.terraform.yml +6 -6
  547. package/dist/practices/cicd-service/best-practice/.github/workflows/provision.yml +4 -0
  548. package/dist/practices/directory-structure-src/bad-practices/old-import-paths/.declapract.readme.md +10 -0
  549. package/dist/practices/directory-structure-src/bad-practices/old-import-paths/src/<star><star>/<star>.ts.declapract.ts +13 -1
  550. package/dist/practices/node/.test/assets/repo-expo-npmrc/declapract.use.yml +23 -0
  551. package/dist/practices/node/.test/assets/repo-expo-npmrc/package.json +4 -0
  552. package/dist/practices/node/best-practice/.npmrc.declapract.integration.test.ts +165 -0
  553. package/dist/practices/node/best-practice/.npmrc.declapract.ts +60 -0
  554. package/dist/practices/node/best-practice/__snapshots__/.npmrc.declapract.integration.test.ts.snap +24 -0
  555. package/dist/practices/pnpm/.declapract.integration.test.ts +175 -0
  556. package/dist/practices/pnpm/.test/assets/repo-npm-to-pnpm/.husky/check.lockfile.sh +10 -0
  557. package/dist/practices/pnpm/.test/assets/repo-npm-to-pnpm/declapract.use.yml +7 -0
  558. package/dist/practices/pnpm/.test/assets/repo-npm-to-pnpm/package.json +16 -0
  559. package/dist/practices/pnpm/__snapshots__/.declapract.integration.test.ts.snap +68 -0
  560. package/dist/practices/pnpm/bad-practices/husky-lockfile-check/.declapract.readme.md +17 -0
  561. package/dist/practices/pnpm/bad-practices/husky-lockfile-check/.husky/check.lockfile.sh.declapract.ts +28 -0
  562. package/dist/practices/pnpm/bad-practices/npm-overrides/.declapract.readme.md +20 -0
  563. package/dist/practices/pnpm/bad-practices/npm-overrides/package.json.declapract.ts +75 -0
  564. package/dist/practices/pnpm/bad-practices/package-lock-json/.declapract.readme.md +30 -0
  565. package/dist/practices/pnpm/bad-practices/package-lock-json/package-lock.json.declapract.integration.test.ts +105 -0
  566. package/dist/practices/pnpm/bad-practices/package-lock-json/package-lock.json.declapract.ts +40 -2
  567. package/dist/practices/pnpm/best-practice/.declapract.readme.md +22 -0
  568. package/dist/practices/pnpm/best-practice/package.json +1 -1
  569. package/dist/practices/pnpm/best-practice/package.json.declapract.ts +12 -0
  570. package/dist/practices/tests-any/bad-practices/javascript-config-files/.declapract.readme.md +1 -0
  571. package/dist/practices/tests-any/bad-practices/javascript-config-files/jest.<star>.js.declapract.ts +17 -0
  572. package/dist/practices/tests-any/bad-practices/mocks/.declapract.readme.md +8 -0
  573. package/dist/practices/tests-any/bad-practices/mocks/<star><star>/__mock__/<star>.js +3 -0
  574. package/dist/practices/tests-any/bad-practices/mocks/<star><star>/__mock__/<star>.ts +3 -0
  575. package/dist/practices/tests-any/bad-practices/old-acceptance-dir-location/.declapract.integration.test.ts +63 -0
  576. package/dist/practices/tests-any/bad-practices/old-acceptance-dir-location/.declapract.readme.md +22 -0
  577. 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
  578. 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
  579. 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
  580. package/dist/practices/tests-any/bad-practices/old-acceptance-dir-location/.test/assets/demo-repo-with-accept-blackbox-dir/declapract.declare.yml +4 -0
  581. package/dist/practices/tests-any/bad-practices/old-acceptance-dir-location/.test/assets/demo-repo-with-accept-blackbox-dir/declapract.use.yml +5 -0
  582. package/dist/practices/tests-any/bad-practices/old-acceptance-dir-location/.test/assets/demo-repo-with-accept-blackbox-dir/package.json +4 -0
  583. package/dist/practices/tests-any/bad-practices/old-acceptance-dir-location/accept.blackbox/<star><star>/<star>.declapract.ts +19 -0
  584. package/dist/practices/tests-any/bad-practices/old-acceptance-dir-location/acceptance/<star><star>/<star>.declapract.ts +19 -0
  585. package/dist/practices/tests-any/bad-practices/old-acceptance-import-paths/.declapract.readme.md +31 -0
  586. package/dist/practices/tests-any/bad-practices/old-acceptance-import-paths/<star><star>/<star>.ts.declapract.ts +25 -0
  587. package/dist/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/_utils/getDataFromLastOpenBracketAtStartOfLine.ts.declapract.ts +3 -0
  588. package/dist/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/_utils/invokeLambda.ts.declapract.ts +3 -0
  589. package/dist/practices/tests-any/bad-practices/old-acceptance-test-utils/blackbox/lambdas/<star>.ts.declapract.ts +44 -0
  590. package/dist/practices/tests-any/bad-practices/old-acceptance-test-utils-2/blackbox/lambdas/<star>.ts.declapract.ts +22 -0
  591. package/dist/practices/tests-any/bad-practices/old-acceptance-test-utils-3/blackbox/_utils/environment.ts.declapract.ts +3 -0
  592. package/dist/practices/tests-any/bad-practices/old-acceptance-test-utils-3/blackbox/lambdas/<star>.ts.declapract.ts +18 -0
  593. package/dist/practices/tests-any/bad-practices/old-extension-pattern/.declapract.readme.md +3 -0
  594. package/dist/practices/tests-any/bad-practices/old-extension-pattern/<star><star>/<star>.test.acceptance.ts.declapract.ts +11 -0
  595. package/dist/practices/tests-any/bad-practices/old-extension-pattern/<star><star>/<star>.test.integration.ts.declapract.ts +11 -0
  596. package/dist/practices/tests-any/bad-practices/old-test-utils-and-assets-location/.declapract.readme.md +8 -0
  597. package/dist/practices/tests-any/bad-practices/old-test-utils-and-assets-location/<star><star>/<star>.ts.declapract.ts +27 -0
  598. package/dist/practices/tests-any/bad-practices/old-test-utils-and-assets-location/<star><star>/__test_assets__/<star><star>/<star>.declapract.ts +17 -0
  599. package/dist/practices/tests-any/bad-practices/old-test-utils-and-assets-location/<star><star>/__test_utils__/<star><star>/<star>.declapract.ts +17 -0
  600. package/dist/practices/tests-any/best-practice/.declapract.readme.md +45 -0
  601. package/dist/practices/tests-any/best-practice/.declapract.todo.md +3 -0
  602. package/dist/practices/tests-any/best-practice/package.json +17 -0
  603. package/dist/practices/tests-any/best-practice/package.json.declapract.ts +3 -0
  604. package/dist/practices/tests-any/best-practice/package.json.shell-flags.declapract.integration.test.ts +129 -0
  605. package/dist/practices/tests-any/best-practice/src/<star><star>/<star>.integration.test.ts.declapract.ts +3 -0
  606. package/dist/practices/tests-any/best-practice/src/<star><star>/<star>.test.ts.declapract.ts +3 -0
  607. package/dist/practices/tests-expo/.declapract.integration.test.ts +134 -0
  608. package/dist/practices/tests-expo/.test/assets/repo-expo-greenfield/declapract.use.yml +6 -0
  609. package/dist/practices/tests-expo/.test/assets/repo-expo-greenfield/package.json +4 -0
  610. package/dist/practices/tests-expo/__snapshots__/.declapract.integration.test.ts.snap +112 -0
  611. package/dist/practices/tests-expo/bad-practices/inline-jest-config/.declapract.readme.md +22 -0
  612. package/dist/practices/tests-expo/bad-practices/inline-jest-config/package.json.declapract.ts +36 -0
  613. package/dist/practices/tests-expo/best-practice/jest.acceptance.config.ts +43 -0
  614. package/dist/practices/tests-expo/best-practice/jest.acceptance.env.ts +15 -0
  615. package/dist/practices/tests-expo/best-practice/jest.config.ts +7 -0
  616. package/dist/practices/tests-expo/best-practice/jest.integration.config.ts +42 -0
  617. package/dist/practices/tests-expo/best-practice/jest.integration.env.ts +22 -0
  618. package/dist/practices/tests-expo/best-practice/jest.unit.config.ts +53 -0
  619. package/dist/practices/tests-expo/best-practice/jest.unit.env.ts +18 -0
  620. package/dist/practices/tests-expo/best-practice/package.json +9 -0
  621. package/dist/practices/tests-expo/best-practice/package.json.declapract.ts +16 -0
  622. package/dist/practices/tests-node/bad-practices/babel/babel.config.js.declapract.ts +3 -0
  623. package/dist/practices/tests-node/bad-practices/deprecated-test-deps/package.json.declapract.ts +50 -0
  624. package/dist/practices/tests-node/best-practice/jest.config.ts +7 -0
  625. package/dist/practices/tests-node/best-practice/jest.unit.env.ts.declapract.ts +39 -0
  626. package/dist/practices/tests-node/best-practice/package.json +6 -0
  627. package/dist/practices/tests-node/best-practice/package.json.declapract.ts +10 -0
  628. package/dist/practices/typescript-any/bad-practices/relative-imports/.declapract.readme.md +45 -0
  629. package/dist/practices/typescript-any/bad-practices/relative-imports/src/<star><star>/<star>.ts.declapract.ts +97 -0
  630. package/dist/practices/typescript-any/best-practice/.declapract.readme.md +17 -0
  631. package/dist/practices/typescript-any/best-practice/package.json +8 -0
  632. package/dist/practices/typescript-any/best-practice/package.json.declapract.ts +11 -0
  633. package/dist/practices/typescript-expo/best-practice/package.json +6 -0
  634. package/dist/practices/typescript-expo/best-practice/package.json.declapract.integration.test.ts +30 -0
  635. package/dist/practices/typescript-expo/best-practice/package.json.declapract.ts +12 -0
  636. package/dist/practices/typescript-expo/best-practice/tsconfig.json +14 -0
  637. package/dist/practices/typescript-expo/best-practice/tsconfig.json.declapract.integration.test.ts +32 -0
  638. package/dist/practices/typescript-expo/best-practice/tsconfig.json.declapract.ts +12 -0
  639. package/dist/practices/{typescript → typescript-node}/best-practice/package.json +1 -3
  640. package/dist/practices/typescript-node/best-practice/package.json.declapract.ts +25 -0
  641. package/dist/practices/typescript-node/best-practice/tsconfig.json.declapract.ts +3 -0
  642. package/dist/useCases.yml +36 -16
  643. package/dist/utils/defineExpectedNpmrcContents.ts +103 -0
  644. package/dist/utils/getAllPracticesForUsecase.ts +53 -0
  645. package/dist/utils/isDeferredToDeprecatedDirMove.ts +37 -0
  646. package/package.json +4 -4
  647. package/dist/practices/tests/bad-practices/deprecated-test-deps/package.json.declapract.ts +0 -39
  648. package/dist/practices/tests/best-practice/jest.unit.env.ts.declapract.ts +0 -35
  649. package/dist/practices/typescript/bad-practices/relative-imports/.declapract.readme.md +0 -27
  650. package/dist/practices/typescript/best-practice/.declapract.readme.md +0 -15
  651. package/dist/practices/typescript/best-practice/package.json.declapract.ts +0 -18
  652. /package/dist/{practices/tests → .test/assets/cache/declarations/practices/cache}/best-practice/package.json.declapract.ts +0 -0
  653. /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
  654. /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
  655. /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
  656. /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
  657. /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
  658. /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
  659. /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
  660. /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/javascript-config-files/.declapract.readme.md +0 -0
  661. /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/mocks/.declapract.readme.md +0 -0
  662. /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/mocks/<star><star>/__mock__/<star>.js +0 -0
  663. /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/mocks/<star><star>/__mock__/<star>.ts +0 -0
  664. /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/old-acceptance-dir-location/.declapract.readme.md +0 -0
  665. /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
  666. /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
  667. /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
  668. /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
  669. /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
  670. /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
  671. /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
  672. /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/old-acceptance-import-paths/.declapract.readme.md +0 -0
  673. /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
  674. /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
  675. /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
  676. /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
  677. /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/bad-practices/old-extension-pattern/.declapract.readme.md +0 -0
  678. /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
  679. /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
  680. /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
  681. /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
  682. /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
  683. /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
  684. /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/best-practice/.declapract.readme.md +0 -0
  685. /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/best-practice/.declapract.todo.md +0 -0
  686. /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
  687. /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-any}/best-practice/src/<star><star>/<star>.test.ts.declapract.ts +0 -0
  688. /package/dist/{practices/tests → .test/assets/expo-fullusecase/declarations/practices/tests-expo}/best-practice/jest.config.ts +0 -0
  689. /package/dist/practices/{tests → tests-node}/bad-practices/babel/babel.config.js +0 -0
  690. /package/dist/practices/{tests → tests-node}/bad-practices/deprecated-test-deps/.declapract.readme.md +0 -0
  691. /package/dist/practices/{tests → tests-node}/bad-practices/deprecated-test-deps/package.json +0 -0
  692. /package/dist/practices/{tests → tests-node}/best-practice/jest.acceptance.config.ts +0 -0
  693. /package/dist/practices/{tests → tests-node}/best-practice/jest.acceptance.env.ts +0 -0
  694. /package/dist/practices/{tests → tests-node}/best-practice/jest.integration.config.ts +0 -0
  695. /package/dist/practices/{tests → tests-node}/best-practice/jest.integration.env.ts +0 -0
  696. /package/dist/practices/{tests → tests-node}/best-practice/jest.unit.config.ts +0 -0
  697. /package/dist/practices/{tests → tests-node}/best-practice/jest.unit.env.ts +0 -0
  698. /package/dist/practices/{typescript → typescript-node}/best-practice/tsconfig.build.json +0 -0
  699. /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
+ });