@codyswann/lisa 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +867 -0
  3. package/all/copy-overwrite/.claude/README.md +205 -0
  4. package/all/copy-overwrite/.claude/agents/agent-architect.md +311 -0
  5. package/all/copy-overwrite/.claude/agents/codebase-analyzer.md +146 -0
  6. package/all/copy-overwrite/.claude/agents/codebase-locator.md +125 -0
  7. package/all/copy-overwrite/.claude/agents/codebase-pattern-finder.md +237 -0
  8. package/all/copy-overwrite/.claude/agents/git-history-analyzer.md +183 -0
  9. package/all/copy-overwrite/.claude/agents/hooks-expert.md +74 -0
  10. package/all/copy-overwrite/.claude/agents/skill-evaluator.md +246 -0
  11. package/all/copy-overwrite/.claude/agents/slash-command-architect.md +87 -0
  12. package/all/copy-overwrite/.claude/agents/web-search-researcher.md +112 -0
  13. package/all/copy-overwrite/.claude/commands/git/commit-and-submit-pr.md +8 -0
  14. package/all/copy-overwrite/.claude/commands/git/commit.md +44 -0
  15. package/all/copy-overwrite/.claude/commands/git/prune.md +34 -0
  16. package/all/copy-overwrite/.claude/commands/git/submit-pr.md +50 -0
  17. package/all/copy-overwrite/.claude/commands/jira/create.md +50 -0
  18. package/all/copy-overwrite/.claude/commands/jira/verify.md +34 -0
  19. package/all/copy-overwrite/.claude/commands/project/archive.md +8 -0
  20. package/all/copy-overwrite/.claude/commands/project/bootstrap.md +49 -0
  21. package/all/copy-overwrite/.claude/commands/project/complete-task.md +7 -0
  22. package/all/copy-overwrite/.claude/commands/project/debrief.md +65 -0
  23. package/all/copy-overwrite/.claude/commands/project/execute.md +94 -0
  24. package/all/copy-overwrite/.claude/commands/project/implement.md +42 -0
  25. package/all/copy-overwrite/.claude/commands/project/local-code-review.md +88 -0
  26. package/all/copy-overwrite/.claude/commands/project/lower-code-complexity.md +74 -0
  27. package/all/copy-overwrite/.claude/commands/project/plan.md +314 -0
  28. package/all/copy-overwrite/.claude/commands/project/research.md +248 -0
  29. package/all/copy-overwrite/.claude/commands/project/review.md +63 -0
  30. package/all/copy-overwrite/.claude/commands/project/setup.md +19 -0
  31. package/all/copy-overwrite/.claude/commands/project/verify.md +38 -0
  32. package/all/copy-overwrite/.claude/commands/pull-request/review.md +12 -0
  33. package/all/copy-overwrite/.claude/commands/rules/format-md.md +72 -0
  34. package/all/copy-overwrite/.claude/commands/sonarqube/check.md +6 -0
  35. package/all/copy-overwrite/.claude/commands/sonarqube/fix.md +3 -0
  36. package/all/copy-overwrite/.claude/hooks/README.md +301 -0
  37. package/all/copy-overwrite/.claude/hooks/notify-ntfy.sh +181 -0
  38. package/all/copy-overwrite/.claude/settings.json +41 -0
  39. package/all/copy-overwrite/.claude/settings.local.json.example +14 -0
  40. package/all/copy-overwrite/.claude/skills/coding-philosophy/SKILL.md +405 -0
  41. package/all/copy-overwrite/.claude/skills/coding-philosophy/references/function-structure.md +416 -0
  42. package/all/copy-overwrite/.claude/skills/coding-philosophy/references/immutable-patterns.md +316 -0
  43. package/all/copy-overwrite/.claude/skills/prompt-complexity-scorer/SKILL.md +118 -0
  44. package/all/copy-overwrite/.claude/skills/skill-creator/LICENSE.txt +202 -0
  45. package/all/copy-overwrite/.claude/skills/skill-creator/SKILL.md +210 -0
  46. package/all/copy-overwrite/.claude/skills/skill-creator/scripts/__pycache__/quick_validate.cpython-312.pyc +0 -0
  47. package/all/copy-overwrite/.claude/skills/skill-creator/scripts/init_skill.py +303 -0
  48. package/all/copy-overwrite/.claude/skills/skill-creator/scripts/package_skill.py +110 -0
  49. package/all/copy-overwrite/.claude/skills/skill-creator/scripts/quick_validate.py +65 -0
  50. package/all/copy-overwrite/CLAUDE.md +77 -0
  51. package/all/copy-overwrite/HUMAN.md +17 -0
  52. package/all/copy-overwrite/specs/.keep +0 -0
  53. package/all/create-only/PROJECT_RULES.md +0 -0
  54. package/cdk/merge/package.json +20 -0
  55. package/dist/cli/index.d.ts +7 -0
  56. package/dist/cli/index.d.ts.map +1 -0
  57. package/dist/cli/index.js +107 -0
  58. package/dist/cli/index.js.map +1 -0
  59. package/dist/cli/prompts.d.ts +45 -0
  60. package/dist/cli/prompts.d.ts.map +1 -0
  61. package/dist/cli/prompts.js +58 -0
  62. package/dist/cli/prompts.js.map +1 -0
  63. package/dist/core/config.d.ts +73 -0
  64. package/dist/core/config.d.ts.map +1 -0
  65. package/dist/core/config.js +36 -0
  66. package/dist/core/config.js.map +1 -0
  67. package/dist/core/index.d.ts +4 -0
  68. package/dist/core/index.d.ts.map +1 -0
  69. package/dist/core/index.js +4 -0
  70. package/dist/core/index.js.map +1 -0
  71. package/dist/core/lisa.d.ts +81 -0
  72. package/dist/core/lisa.d.ts.map +1 -0
  73. package/dist/core/lisa.js +459 -0
  74. package/dist/core/lisa.js.map +1 -0
  75. package/dist/core/manifest.d.ts +58 -0
  76. package/dist/core/manifest.d.ts.map +1 -0
  77. package/dist/core/manifest.js +104 -0
  78. package/dist/core/manifest.js.map +1 -0
  79. package/dist/detection/detector.interface.d.ts +15 -0
  80. package/dist/detection/detector.interface.d.ts.map +1 -0
  81. package/dist/detection/detector.interface.js +2 -0
  82. package/dist/detection/detector.interface.js.map +1 -0
  83. package/dist/detection/detectors/cdk.d.ts +10 -0
  84. package/dist/detection/detectors/cdk.d.ts.map +1 -0
  85. package/dist/detection/detectors/cdk.js +34 -0
  86. package/dist/detection/detectors/cdk.js.map +1 -0
  87. package/dist/detection/detectors/expo.d.ts +10 -0
  88. package/dist/detection/detectors/expo.d.ts.map +1 -0
  89. package/dist/detection/detectors/expo.js +30 -0
  90. package/dist/detection/detectors/expo.js.map +1 -0
  91. package/dist/detection/detectors/nestjs.d.ts +10 -0
  92. package/dist/detection/detectors/nestjs.d.ts.map +1 -0
  93. package/dist/detection/detectors/nestjs.js +34 -0
  94. package/dist/detection/detectors/nestjs.js.map +1 -0
  95. package/dist/detection/detectors/npm-package.d.ts +13 -0
  96. package/dist/detection/detectors/npm-package.d.ts.map +1 -0
  97. package/dist/detection/detectors/npm-package.js +30 -0
  98. package/dist/detection/detectors/npm-package.js.map +1 -0
  99. package/dist/detection/detectors/typescript.d.ts +10 -0
  100. package/dist/detection/detectors/typescript.d.ts.map +1 -0
  101. package/dist/detection/detectors/typescript.js +25 -0
  102. package/dist/detection/detectors/typescript.js.map +1 -0
  103. package/dist/detection/index.d.ts +24 -0
  104. package/dist/detection/index.d.ts.map +1 -0
  105. package/dist/detection/index.js +57 -0
  106. package/dist/detection/index.js.map +1 -0
  107. package/dist/errors/index.d.ts +69 -0
  108. package/dist/errors/index.d.ts.map +1 -0
  109. package/dist/errors/index.js +110 -0
  110. package/dist/errors/index.js.map +1 -0
  111. package/dist/index.d.ts +3 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +8 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/logging/console-logger.d.ts +12 -0
  116. package/dist/logging/console-logger.d.ts.map +1 -0
  117. package/dist/logging/console-logger.js +22 -0
  118. package/dist/logging/console-logger.js.map +1 -0
  119. package/dist/logging/index.d.ts +4 -0
  120. package/dist/logging/index.d.ts.map +1 -0
  121. package/dist/logging/index.js +3 -0
  122. package/dist/logging/index.js.map +1 -0
  123. package/dist/logging/logger.interface.d.ts +20 -0
  124. package/dist/logging/logger.interface.d.ts.map +1 -0
  125. package/dist/logging/logger.interface.js +2 -0
  126. package/dist/logging/logger.interface.js.map +1 -0
  127. package/dist/logging/silent-logger.d.ts +12 -0
  128. package/dist/logging/silent-logger.d.ts.map +1 -0
  129. package/dist/logging/silent-logger.js +21 -0
  130. package/dist/logging/silent-logger.js.map +1 -0
  131. package/dist/strategies/copy-contents.d.ts +14 -0
  132. package/dist/strategies/copy-contents.d.ts.map +1 -0
  133. package/dist/strategies/copy-contents.js +69 -0
  134. package/dist/strategies/copy-contents.js.map +1 -0
  135. package/dist/strategies/copy-overwrite.d.ts +14 -0
  136. package/dist/strategies/copy-overwrite.d.ts.map +1 -0
  137. package/dist/strategies/copy-overwrite.js +47 -0
  138. package/dist/strategies/copy-overwrite.js.map +1 -0
  139. package/dist/strategies/create-only.d.ts +13 -0
  140. package/dist/strategies/create-only.d.ts.map +1 -0
  141. package/dist/strategies/create-only.js +30 -0
  142. package/dist/strategies/create-only.js.map +1 -0
  143. package/dist/strategies/index.d.ts +31 -0
  144. package/dist/strategies/index.d.ts.map +1 -0
  145. package/dist/strategies/index.js +52 -0
  146. package/dist/strategies/index.js.map +1 -0
  147. package/dist/strategies/merge.d.ts +13 -0
  148. package/dist/strategies/merge.d.ts.map +1 -0
  149. package/dist/strategies/merge.js +60 -0
  150. package/dist/strategies/merge.js.map +1 -0
  151. package/dist/strategies/strategy.interface.d.ts +31 -0
  152. package/dist/strategies/strategy.interface.d.ts.map +1 -0
  153. package/dist/strategies/strategy.interface.js +2 -0
  154. package/dist/strategies/strategy.interface.js.map +1 -0
  155. package/dist/transaction/backup.d.ts +38 -0
  156. package/dist/transaction/backup.d.ts.map +1 -0
  157. package/dist/transaction/backup.js +97 -0
  158. package/dist/transaction/backup.js.map +1 -0
  159. package/dist/transaction/index.d.ts +4 -0
  160. package/dist/transaction/index.d.ts.map +1 -0
  161. package/dist/transaction/index.js +3 -0
  162. package/dist/transaction/index.js.map +1 -0
  163. package/dist/transaction/transaction.d.ts +34 -0
  164. package/dist/transaction/transaction.d.ts.map +1 -0
  165. package/dist/transaction/transaction.js +68 -0
  166. package/dist/transaction/transaction.js.map +1 -0
  167. package/dist/utils/file-operations.d.ts +29 -0
  168. package/dist/utils/file-operations.d.ts.map +1 -0
  169. package/dist/utils/file-operations.js +84 -0
  170. package/dist/utils/file-operations.js.map +1 -0
  171. package/dist/utils/index.d.ts +4 -0
  172. package/dist/utils/index.d.ts.map +1 -0
  173. package/dist/utils/index.js +4 -0
  174. package/dist/utils/index.js.map +1 -0
  175. package/dist/utils/json-utils.d.ts +22 -0
  176. package/dist/utils/json-utils.d.ts.map +1 -0
  177. package/dist/utils/json-utils.js +57 -0
  178. package/dist/utils/json-utils.js.map +1 -0
  179. package/dist/utils/path-utils.d.ts +21 -0
  180. package/dist/utils/path-utils.d.ts.map +1 -0
  181. package/dist/utils/path-utils.js +35 -0
  182. package/dist/utils/path-utils.js.map +1 -0
  183. package/eslint-plugin-code-organization/README.md +149 -0
  184. package/eslint-plugin-code-organization/__tests__/enforce-statement-order.test.js +468 -0
  185. package/eslint-plugin-code-organization/index.js +23 -0
  186. package/eslint-plugin-code-organization/package.json +10 -0
  187. package/eslint-plugin-code-organization/rules/enforce-statement-order.js +157 -0
  188. package/expo/copy-overwrite/.claude/skills/apollo-client/SKILL.md +238 -0
  189. package/expo/copy-overwrite/.claude/skills/apollo-client/references/mutation-patterns.md +360 -0
  190. package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/SKILL.md +360 -0
  191. package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/references/atomic-levels.md +417 -0
  192. package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/references/folder-structure.md +257 -0
  193. package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/references/gluestack-mapping.md +233 -0
  194. package/expo/copy-overwrite/.claude/skills/atomic-design-gluestack/scripts/validate_atomic_structure.py +327 -0
  195. package/expo/copy-overwrite/.claude/skills/container-view-pattern/SKILL.md +299 -0
  196. package/expo/copy-overwrite/.claude/skills/container-view-pattern/references/examples.md +749 -0
  197. package/expo/copy-overwrite/.claude/skills/container-view-pattern/references/patterns.md +318 -0
  198. package/expo/copy-overwrite/.claude/skills/container-view-pattern/scripts/create_component.py +198 -0
  199. package/expo/copy-overwrite/.claude/skills/container-view-pattern/scripts/validate_component.py +207 -0
  200. package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/SKILL.md +268 -0
  201. package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/references/common-issues.md +619 -0
  202. package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/references/file-extensions.md +340 -0
  203. package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/references/platform-api.md +276 -0
  204. package/expo/copy-overwrite/.claude/skills/cross-platform-compatibility/scripts/validate_cross_platform.py +414 -0
  205. package/expo/copy-overwrite/.claude/skills/directory-structure/SKILL.md +202 -0
  206. package/expo/copy-overwrite/.claude/skills/directory-structure/scripts/validate_structure.py +443 -0
  207. package/expo/copy-overwrite/.claude/skills/expo-env-config/SKILL.md +309 -0
  208. package/expo/copy-overwrite/.claude/skills/expo-env-config/references/validation-patterns.md +417 -0
  209. package/expo/copy-overwrite/.claude/skills/expo-router-best-practices/SKILL.md +431 -0
  210. package/expo/copy-overwrite/.claude/skills/expo-router-best-practices/references/official-docs.md +290 -0
  211. package/expo/copy-overwrite/.claude/skills/expo-router-best-practices/scripts/generate-route.py +169 -0
  212. package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/SKILL.md +411 -0
  213. package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/references/color-tokens.md +343 -0
  214. package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/references/component-mapping.md +307 -0
  215. package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/references/spacing-scale.md +300 -0
  216. package/expo/copy-overwrite/.claude/skills/gluestack-nativewind/scripts/validate_styling.py +354 -0
  217. package/expo/copy-overwrite/.claude/skills/local-state/SKILL.md +362 -0
  218. package/expo/copy-overwrite/.claude/skills/local-state/references/async-storage.md +505 -0
  219. package/expo/copy-overwrite/.claude/skills/local-state/references/persistence-patterns.md +711 -0
  220. package/expo/copy-overwrite/.claude/skills/local-state/references/reactive-variables.md +446 -0
  221. package/expo/copy-overwrite/.claude/skills/playwright-selectors/SKILL.md +223 -0
  222. package/expo/copy-overwrite/.claude/skills/testing-library/SKILL.md +319 -0
  223. package/expo/copy-overwrite/.claude/skills/testing-library/references/async-patterns.md +420 -0
  224. package/expo/copy-overwrite/.claude/skills/testing-library/references/expo-router-testing.md +556 -0
  225. package/expo/copy-overwrite/.claude/skills/testing-library/references/mocking-patterns.md +590 -0
  226. package/expo/copy-overwrite/.claude/skills/testing-library/references/query-priority.md +291 -0
  227. package/expo/copy-overwrite/.easignore.extra +2 -0
  228. package/expo/copy-overwrite/.mcp.json +33 -0
  229. package/expo/copy-overwrite/eslint-plugin-component-structure/README.md +234 -0
  230. package/expo/copy-overwrite/eslint-plugin-component-structure/__tests__/plugin-index.test.js +84 -0
  231. package/expo/copy-overwrite/eslint-plugin-component-structure/__tests__/require-memo-in-view.test.js +196 -0
  232. package/expo/copy-overwrite/eslint-plugin-component-structure/__tests__/single-component-per-file.test.js +289 -0
  233. package/expo/copy-overwrite/eslint-plugin-component-structure/index.js +32 -0
  234. package/expo/copy-overwrite/eslint-plugin-component-structure/package.json +10 -0
  235. package/expo/copy-overwrite/eslint-plugin-component-structure/rules/enforce-component-structure.js +230 -0
  236. package/expo/copy-overwrite/eslint-plugin-component-structure/rules/no-return-in-view.js +91 -0
  237. package/expo/copy-overwrite/eslint-plugin-component-structure/rules/require-memo-in-view.js +178 -0
  238. package/expo/copy-overwrite/eslint-plugin-component-structure/rules/single-component-per-file.js +238 -0
  239. package/expo/copy-overwrite/eslint-plugin-ui-standards/README.md +260 -0
  240. package/expo/copy-overwrite/eslint-plugin-ui-standards/index.js +29 -0
  241. package/expo/copy-overwrite/eslint-plugin-ui-standards/package.json +10 -0
  242. package/expo/copy-overwrite/eslint-plugin-ui-standards/rules/no-classname-outside-ui.js +51 -0
  243. package/expo/copy-overwrite/eslint-plugin-ui-standards/rules/no-direct-rn-imports.js +55 -0
  244. package/expo/copy-overwrite/eslint-plugin-ui-standards/rules/no-inline-styles.js +73 -0
  245. package/expo/copy-overwrite/eslint.config.mjs +560 -0
  246. package/expo/copy-overwrite/lighthouserc.js +194 -0
  247. package/expo/create-only/lighthouserc-config.json +28 -0
  248. package/expo/merge/package.json +132 -0
  249. package/lisa.sh +35 -0
  250. package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/SKILL.md +176 -0
  251. package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/advanced-features.md +527 -0
  252. package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/project-patterns.md +483 -0
  253. package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/quick-start.md +257 -0
  254. package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/resolvers-mutations.md +413 -0
  255. package/nestjs/copy-overwrite/.claude/skills/nestjs-graphql/references/types-scalars.md +513 -0
  256. package/nestjs/copy-overwrite/.claude/skills/nestjs-rules/SKILL.md +536 -0
  257. package/nestjs/copy-overwrite/.claude/skills/typeorm-patterns/SKILL.md +275 -0
  258. package/nestjs/copy-overwrite/.claude/skills/typeorm-patterns/references/configuration-patterns.md +487 -0
  259. package/nestjs/copy-overwrite/.claude/skills/typeorm-patterns/references/entity-patterns.md +450 -0
  260. package/nestjs/copy-overwrite/.claude/skills/typeorm-patterns/references/observability-patterns.md +536 -0
  261. package/nestjs/merge/package.json +75 -0
  262. package/package.json +124 -0
  263. package/typescript/copy-contents/.husky/commit-msg +91 -0
  264. package/typescript/copy-contents/.husky/pre-commit +96 -0
  265. package/typescript/copy-contents/.husky/pre-push +211 -0
  266. package/typescript/copy-overwrite/.claude/hooks/format-on-edit.sh +74 -0
  267. package/typescript/copy-overwrite/.claude/hooks/install_pkgs.sh +59 -0
  268. package/typescript/copy-overwrite/.claude/hooks/lint-on-edit.sh +103 -0
  269. package/typescript/copy-overwrite/.claude/skills/jsdoc-best-practices/SKILL.md +388 -0
  270. package/typescript/copy-overwrite/.github/README.md +455 -0
  271. package/typescript/copy-overwrite/.github/dependabot.yml +40 -0
  272. package/typescript/copy-overwrite/.github/k6/BROWSER_TESTING_NOTE.md +129 -0
  273. package/typescript/copy-overwrite/.github/k6/INTEGRATION_GUIDE.md +354 -0
  274. package/typescript/copy-overwrite/.github/k6/README.md +386 -0
  275. package/typescript/copy-overwrite/.github/k6/SCENARIO_SELECTION_GUIDE.md +264 -0
  276. package/typescript/copy-overwrite/.github/k6/examples/customer-deploy-integration.yml +115 -0
  277. package/typescript/copy-overwrite/.github/k6/examples/data-driven-test.js +268 -0
  278. package/typescript/copy-overwrite/.github/k6/scenarios/load.js +142 -0
  279. package/typescript/copy-overwrite/.github/k6/scenarios/load.json +27 -0
  280. package/typescript/copy-overwrite/.github/k6/scenarios/smoke.js +26 -0
  281. package/typescript/copy-overwrite/.github/k6/scenarios/smoke.json +20 -0
  282. package/typescript/copy-overwrite/.github/k6/scenarios/soak.js +244 -0
  283. package/typescript/copy-overwrite/.github/k6/scenarios/soak.json +29 -0
  284. package/typescript/copy-overwrite/.github/k6/scenarios/spike.js +180 -0
  285. package/typescript/copy-overwrite/.github/k6/scenarios/spike.json +32 -0
  286. package/typescript/copy-overwrite/.github/k6/scenarios/stress.js +206 -0
  287. package/typescript/copy-overwrite/.github/k6/scenarios/stress.json +38 -0
  288. package/typescript/copy-overwrite/.github/k6/scripts/api-test.js +452 -0
  289. package/typescript/copy-overwrite/.github/k6/scripts/default-test.js +185 -0
  290. package/typescript/copy-overwrite/.github/k6/thresholds/normal.json +30 -0
  291. package/typescript/copy-overwrite/.github/k6/thresholds/relaxed.json +21 -0
  292. package/typescript/copy-overwrite/.github/k6/thresholds/strict.json +29 -0
  293. package/typescript/copy-overwrite/.github/workflows/build.yml +72 -0
  294. package/typescript/copy-overwrite/.github/workflows/ci.yml +49 -0
  295. package/typescript/copy-overwrite/.github/workflows/claude.yml +51 -0
  296. package/typescript/copy-overwrite/.github/workflows/create-github-issue-on-failure.yml +113 -0
  297. package/typescript/copy-overwrite/.github/workflows/create-jira-issue-on-failure.yml +195 -0
  298. package/typescript/copy-overwrite/.github/workflows/create-sentry-issue-on-failure.yml +267 -0
  299. package/typescript/copy-overwrite/.github/workflows/deploy.yml +228 -0
  300. package/typescript/copy-overwrite/.github/workflows/k6-load-test-README.md +230 -0
  301. package/typescript/copy-overwrite/.github/workflows/lighthouse.yml +68 -0
  302. package/typescript/copy-overwrite/.github/workflows/load-test.yml +282 -0
  303. package/typescript/copy-overwrite/.github/workflows/quality.yml +1737 -0
  304. package/typescript/copy-overwrite/.github/workflows/release.yml +1599 -0
  305. package/typescript/copy-overwrite/.gitleaksignore +28 -0
  306. package/typescript/copy-overwrite/.nvmrc +1 -0
  307. package/typescript/copy-overwrite/.prettierignore +23 -0
  308. package/typescript/copy-overwrite/.prettierrc.json +22 -0
  309. package/typescript/copy-overwrite/.versionrc +42 -0
  310. package/typescript/copy-overwrite/.yamllint +20 -0
  311. package/typescript/copy-overwrite/commitlint.config.js +11 -0
  312. package/typescript/copy-overwrite/eslint-plugin-code-organization/README.md +149 -0
  313. package/typescript/copy-overwrite/eslint-plugin-code-organization/__tests__/enforce-statement-order.test.js +468 -0
  314. package/typescript/copy-overwrite/eslint-plugin-code-organization/index.js +23 -0
  315. package/typescript/copy-overwrite/eslint-plugin-code-organization/package.json +10 -0
  316. package/typescript/copy-overwrite/eslint-plugin-code-organization/rules/enforce-statement-order.js +157 -0
  317. package/typescript/copy-overwrite/eslint.config.mjs +390 -0
  318. package/typescript/copy-overwrite/eslint.ignore.config.json +57 -0
  319. package/typescript/copy-overwrite/eslint.thresholds.config.json +5 -0
  320. package/typescript/github-rulesets/base.json +106 -0
  321. package/typescript/merge/.claude/settings.json +28 -0
  322. package/typescript/merge/package.json +71 -0
@@ -0,0 +1,15 @@
1
+ import type { ProjectType } from '../core/config.js';
2
+ /**
3
+ * Interface for project type detectors
4
+ */
5
+ export interface IProjectTypeDetector {
6
+ /** The project type this detector identifies */
7
+ readonly type: ProjectType;
8
+ /**
9
+ * Detect if the given directory contains this project type
10
+ * @param destDir Absolute path to the project directory
11
+ * @returns Promise resolving to true if this project type is detected
12
+ */
13
+ detect(destDir: string): Promise<boolean>;
14
+ }
15
+ //# sourceMappingURL=detector.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detector.interface.d.ts","sourceRoot":"","sources":["../../src/detection/detector.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,gDAAgD;IAChD,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAE3B;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=detector.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detector.interface.js","sourceRoot":"","sources":["../../src/detection/detector.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import type { IProjectTypeDetector } from '../detector.interface.js';
2
+ /**
3
+ * Detector for AWS CDK projects
4
+ * Detects by presence of cdk.json or aws-cdk* dependencies
5
+ */
6
+ export declare class CDKDetector implements IProjectTypeDetector {
7
+ readonly type: "cdk";
8
+ detect(destDir: string): Promise<boolean>;
9
+ }
10
+ //# sourceMappingURL=cdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdk.d.ts","sourceRoot":"","sources":["../../../src/detection/detectors/cdk.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAkBrE;;;GAGG;AACH,qBAAa,WAAY,YAAW,oBAAoB;IACtD,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAU;IAEzB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAoBhD"}
@@ -0,0 +1,34 @@
1
+ import * as path from 'node:path';
2
+ import { pathExists, readJsonOrNull } from '../../utils/index.js';
3
+ /**
4
+ * Check if any key in an object starts with a prefix
5
+ */
6
+ function hasKeyStartingWith(obj, prefix) {
7
+ if (!obj) {
8
+ return false;
9
+ }
10
+ return Object.keys(obj).some((key) => key.startsWith(prefix));
11
+ }
12
+ /**
13
+ * Detector for AWS CDK projects
14
+ * Detects by presence of cdk.json or aws-cdk* dependencies
15
+ */
16
+ export class CDKDetector {
17
+ type = 'cdk';
18
+ async detect(destDir) {
19
+ // Check for cdk.json
20
+ const cdkJsonPath = path.join(destDir, 'cdk.json');
21
+ if (await pathExists(cdkJsonPath)) {
22
+ return true;
23
+ }
24
+ // Check for aws-cdk* in package.json
25
+ const packageJsonPath = path.join(destDir, 'package.json');
26
+ const packageJson = await readJsonOrNull(packageJsonPath);
27
+ if (!packageJson) {
28
+ return false;
29
+ }
30
+ return (hasKeyStartingWith(packageJson.dependencies, 'aws-cdk') ||
31
+ hasKeyStartingWith(packageJson.devDependencies, 'aws-cdk'));
32
+ }
33
+ }
34
+ //# sourceMappingURL=cdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdk.js","sourceRoot":"","sources":["../../../src/detection/detectors/cdk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAOlE;;GAEG;AACH,SAAS,kBAAkB,CAAC,GAAwC,EAAE,MAAc;IAClF,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,WAAW;IACb,IAAI,GAAG,KAAc,CAAC;IAE/B,KAAK,CAAC,MAAM,CAAC,OAAe;QAC1B,qBAAqB;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACnD,IAAI,MAAM,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,qCAAqC;QACrC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,MAAM,cAAc,CAAc,eAAe,CAAC,CAAC;QAEvE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,CACL,kBAAkB,CAAC,WAAW,CAAC,YAAY,EAAE,SAAS,CAAC;YACvD,kBAAkB,CAAC,WAAW,CAAC,eAAe,EAAE,SAAS,CAAC,CAC3D,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import type { IProjectTypeDetector } from '../detector.interface.js';
2
+ /**
3
+ * Detector for Expo (React Native) projects
4
+ * Detects by presence of app.json, eas.json, or expo dependency
5
+ */
6
+ export declare class ExpoDetector implements IProjectTypeDetector {
7
+ readonly type: "expo";
8
+ detect(destDir: string): Promise<boolean>;
9
+ }
10
+ //# sourceMappingURL=expo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expo.d.ts","sourceRoot":"","sources":["../../../src/detection/detectors/expo.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAQrE;;;GAGG;AACH,qBAAa,YAAa,YAAW,oBAAoB;IACvD,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;IAE1B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CA0BhD"}
@@ -0,0 +1,30 @@
1
+ import * as path from 'node:path';
2
+ import { pathExists, readJsonOrNull } from '../../utils/index.js';
3
+ /**
4
+ * Detector for Expo (React Native) projects
5
+ * Detects by presence of app.json, eas.json, or expo dependency
6
+ */
7
+ export class ExpoDetector {
8
+ type = 'expo';
9
+ async detect(destDir) {
10
+ // Check for app.json
11
+ const appJsonPath = path.join(destDir, 'app.json');
12
+ if (await pathExists(appJsonPath)) {
13
+ return true;
14
+ }
15
+ // Check for eas.json
16
+ const easJsonPath = path.join(destDir, 'eas.json');
17
+ if (await pathExists(easJsonPath)) {
18
+ return true;
19
+ }
20
+ // Check for expo in package.json
21
+ const packageJsonPath = path.join(destDir, 'package.json');
22
+ const packageJson = await readJsonOrNull(packageJsonPath);
23
+ if (!packageJson) {
24
+ return false;
25
+ }
26
+ return (packageJson.dependencies?.['expo'] !== undefined ||
27
+ packageJson.devDependencies?.['expo'] !== undefined);
28
+ }
29
+ }
30
+ //# sourceMappingURL=expo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expo.js","sourceRoot":"","sources":["../../../src/detection/detectors/expo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAOlE;;;GAGG;AACH,MAAM,OAAO,YAAY;IACd,IAAI,GAAG,MAAe,CAAC;IAEhC,KAAK,CAAC,MAAM,CAAC,OAAe;QAC1B,qBAAqB;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACnD,IAAI,MAAM,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,qBAAqB;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACnD,IAAI,MAAM,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,iCAAiC;QACjC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,MAAM,cAAc,CAAc,eAAe,CAAC,CAAC;QAEvE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,CACL,WAAW,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,KAAK,SAAS;YAChD,WAAW,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,KAAK,SAAS,CACpD,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import type { IProjectTypeDetector } from '../detector.interface.js';
2
+ /**
3
+ * Detector for NestJS projects
4
+ * Detects by presence of nest-cli.json or @nestjs/* dependencies
5
+ */
6
+ export declare class NestJSDetector implements IProjectTypeDetector {
7
+ readonly type: "nestjs";
8
+ detect(destDir: string): Promise<boolean>;
9
+ }
10
+ //# sourceMappingURL=nestjs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nestjs.d.ts","sourceRoot":"","sources":["../../../src/detection/detectors/nestjs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAkBrE;;;GAGG;AACH,qBAAa,cAAe,YAAW,oBAAoB;IACzD,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAE5B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAoBhD"}
@@ -0,0 +1,34 @@
1
+ import * as path from 'node:path';
2
+ import { pathExists, readJsonOrNull } from '../../utils/index.js';
3
+ /**
4
+ * Check if any key in an object starts with a prefix
5
+ */
6
+ function hasKeyStartingWith(obj, prefix) {
7
+ if (!obj) {
8
+ return false;
9
+ }
10
+ return Object.keys(obj).some((key) => key.startsWith(prefix));
11
+ }
12
+ /**
13
+ * Detector for NestJS projects
14
+ * Detects by presence of nest-cli.json or @nestjs/* dependencies
15
+ */
16
+ export class NestJSDetector {
17
+ type = 'nestjs';
18
+ async detect(destDir) {
19
+ // Check for nest-cli.json
20
+ const nestCliPath = path.join(destDir, 'nest-cli.json');
21
+ if (await pathExists(nestCliPath)) {
22
+ return true;
23
+ }
24
+ // Check for @nestjs/* in package.json
25
+ const packageJsonPath = path.join(destDir, 'package.json');
26
+ const packageJson = await readJsonOrNull(packageJsonPath);
27
+ if (!packageJson) {
28
+ return false;
29
+ }
30
+ return (hasKeyStartingWith(packageJson.dependencies, '@nestjs') ||
31
+ hasKeyStartingWith(packageJson.devDependencies, '@nestjs'));
32
+ }
33
+ }
34
+ //# sourceMappingURL=nestjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nestjs.js","sourceRoot":"","sources":["../../../src/detection/detectors/nestjs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAOlE;;GAEG;AACH,SAAS,kBAAkB,CAAC,GAAwC,EAAE,MAAc;IAClF,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,cAAc;IAChB,IAAI,GAAG,QAAiB,CAAC;IAElC,KAAK,CAAC,MAAM,CAAC,OAAe;QAC1B,0BAA0B;QAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QACxD,IAAI,MAAM,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,sCAAsC;QACtC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,MAAM,cAAc,CAAc,eAAe,CAAC,CAAC;QAEvE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,CACL,kBAAkB,CAAC,WAAW,CAAC,YAAY,EAAE,SAAS,CAAC;YACvD,kBAAkB,CAAC,WAAW,CAAC,eAAe,EAAE,SAAS,CAAC,CAC3D,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import type { IProjectTypeDetector } from '../detector.interface.js';
2
+ /**
3
+ * Detector for npm packages (publishable to npm registry)
4
+ *
5
+ * Detects by presence of package.json that:
6
+ * - Is NOT marked as private
7
+ * - Has at least one of: main, bin, exports, or files fields
8
+ */
9
+ export declare class NpmPackageDetector implements IProjectTypeDetector {
10
+ readonly type: "npm-package";
11
+ detect(destDir: string): Promise<boolean>;
12
+ }
13
+ //# sourceMappingURL=npm-package.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm-package.d.ts","sourceRoot":"","sources":["../../../src/detection/detectors/npm-package.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAWrE;;;;;;GAMG;AACH,qBAAa,kBAAmB,YAAW,oBAAoB;IAC7D,QAAQ,CAAC,IAAI,EAAG,aAAa,CAAU;IAEjC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAqBhD"}
@@ -0,0 +1,30 @@
1
+ import * as path from 'node:path';
2
+ import { readJsonOrNull } from '../../utils/index.js';
3
+ /**
4
+ * Detector for npm packages (publishable to npm registry)
5
+ *
6
+ * Detects by presence of package.json that:
7
+ * - Is NOT marked as private
8
+ * - Has at least one of: main, bin, exports, or files fields
9
+ */
10
+ export class NpmPackageDetector {
11
+ type = 'npm-package';
12
+ async detect(destDir) {
13
+ const packageJsonPath = path.join(destDir, 'package.json');
14
+ const packageJson = await readJsonOrNull(packageJsonPath);
15
+ if (!packageJson) {
16
+ return false;
17
+ }
18
+ // Private packages are not meant to be published
19
+ if (packageJson.private === true) {
20
+ return false;
21
+ }
22
+ // Must have at least one field indicating it's a publishable package
23
+ const hasMain = packageJson.main !== undefined;
24
+ const hasBin = packageJson.bin !== undefined;
25
+ const hasExports = packageJson.exports !== undefined;
26
+ const hasFiles = packageJson.files !== undefined && packageJson.files.length > 0;
27
+ return hasMain || hasBin || hasExports || hasFiles;
28
+ }
29
+ }
30
+ //# sourceMappingURL=npm-package.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm-package.js","sourceRoot":"","sources":["../../../src/detection/detectors/npm-package.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAUtD;;;;;;GAMG;AACH,MAAM,OAAO,kBAAkB;IACpB,IAAI,GAAG,aAAsB,CAAC;IAEvC,KAAK,CAAC,MAAM,CAAC,OAAe;QAC1B,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,MAAM,cAAc,CAAc,eAAe,CAAC,CAAC;QAEvE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,iDAAiD;QACjD,IAAI,WAAW,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,qEAAqE;QACrE,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,KAAK,SAAS,CAAC;QAC/C,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,KAAK,SAAS,CAAC;QAC7C,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,KAAK,SAAS,CAAC;QACrD,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,KAAK,SAAS,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAEjF,OAAO,OAAO,IAAI,MAAM,IAAI,UAAU,IAAI,QAAQ,CAAC;IACrD,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import type { IProjectTypeDetector } from '../detector.interface.js';
2
+ /**
3
+ * Detector for TypeScript projects
4
+ * Detects by presence of tsconfig.json or typescript dependency
5
+ */
6
+ export declare class TypeScriptDetector implements IProjectTypeDetector {
7
+ readonly type: "typescript";
8
+ detect(destDir: string): Promise<boolean>;
9
+ }
10
+ //# sourceMappingURL=typescript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/detection/detectors/typescript.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAQrE;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,oBAAoB;IAC7D,QAAQ,CAAC,IAAI,EAAG,YAAY,CAAU;IAEhC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAoBhD"}
@@ -0,0 +1,25 @@
1
+ import * as path from 'node:path';
2
+ import { pathExists, readJsonOrNull } from '../../utils/index.js';
3
+ /**
4
+ * Detector for TypeScript projects
5
+ * Detects by presence of tsconfig.json or typescript dependency
6
+ */
7
+ export class TypeScriptDetector {
8
+ type = 'typescript';
9
+ async detect(destDir) {
10
+ // Check for tsconfig.json
11
+ const tsconfigPath = path.join(destDir, 'tsconfig.json');
12
+ if (await pathExists(tsconfigPath)) {
13
+ return true;
14
+ }
15
+ // Check for typescript in package.json
16
+ const packageJsonPath = path.join(destDir, 'package.json');
17
+ const packageJson = await readJsonOrNull(packageJsonPath);
18
+ if (!packageJson) {
19
+ return false;
20
+ }
21
+ return (packageJson.dependencies?.['typescript'] !== undefined ||
22
+ packageJson.devDependencies?.['typescript'] !== undefined);
23
+ }
24
+ }
25
+ //# sourceMappingURL=typescript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/detection/detectors/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAOlE;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IACpB,IAAI,GAAG,YAAqB,CAAC;IAEtC,KAAK,CAAC,MAAM,CAAC,OAAe;QAC1B,0BAA0B;QAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QACzD,IAAI,MAAM,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,uCAAuC;QACvC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,MAAM,cAAc,CAAc,eAAe,CAAC,CAAC;QAEvE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,CACL,WAAW,CAAC,YAAY,EAAE,CAAC,YAAY,CAAC,KAAK,SAAS;YACtD,WAAW,CAAC,eAAe,EAAE,CAAC,YAAY,CAAC,KAAK,SAAS,CAC1D,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,24 @@
1
+ import type { ProjectType } from '../core/config.js';
2
+ import type { IProjectTypeDetector } from './detector.interface.js';
3
+ export type { IProjectTypeDetector } from './detector.interface.js';
4
+ /**
5
+ * Registry for project type detectors
6
+ */
7
+ export declare class DetectorRegistry {
8
+ private readonly detectors;
9
+ constructor(detectors?: readonly IProjectTypeDetector[]);
10
+ /**
11
+ * Detect all project types in the given directory
12
+ */
13
+ detectAll(destDir: string): Promise<ProjectType[]>;
14
+ /**
15
+ * Expand detected types to include parent types and order correctly
16
+ * Child types (expo, nestjs, cdk) automatically include their parent (typescript)
17
+ */
18
+ expandAndOrderTypes(detectedTypes: readonly ProjectType[]): ProjectType[];
19
+ }
20
+ /**
21
+ * Create default detector registry
22
+ */
23
+ export declare function createDetectorRegistry(): DetectorRegistry;
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/detection/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAOpE,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAEpE;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkC;gBAEhD,SAAS,CAAC,EAAE,SAAS,oBAAoB,EAAE;IAUvD;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAYxD;;;OAGG;IACH,mBAAmB,CAAC,aAAa,EAAE,SAAS,WAAW,EAAE,GAAG,WAAW,EAAE;CAgB1E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,gBAAgB,CAEzD"}
@@ -0,0 +1,57 @@
1
+ import { PROJECT_TYPE_HIERARCHY, PROJECT_TYPE_ORDER } from '../core/config.js';
2
+ import { TypeScriptDetector } from './detectors/typescript.js';
3
+ import { ExpoDetector } from './detectors/expo.js';
4
+ import { NestJSDetector } from './detectors/nestjs.js';
5
+ import { CDKDetector } from './detectors/cdk.js';
6
+ import { NpmPackageDetector } from './detectors/npm-package.js';
7
+ /**
8
+ * Registry for project type detectors
9
+ */
10
+ export class DetectorRegistry {
11
+ detectors;
12
+ constructor(detectors) {
13
+ this.detectors = detectors ?? [
14
+ new TypeScriptDetector(),
15
+ new NpmPackageDetector(),
16
+ new ExpoDetector(),
17
+ new NestJSDetector(),
18
+ new CDKDetector(),
19
+ ];
20
+ }
21
+ /**
22
+ * Detect all project types in the given directory
23
+ */
24
+ async detectAll(destDir) {
25
+ const detectedTypes = [];
26
+ for (const detector of this.detectors) {
27
+ if (await detector.detect(destDir)) {
28
+ detectedTypes.push(detector.type);
29
+ }
30
+ }
31
+ return detectedTypes;
32
+ }
33
+ /**
34
+ * Expand detected types to include parent types and order correctly
35
+ * Child types (expo, nestjs, cdk) automatically include their parent (typescript)
36
+ */
37
+ expandAndOrderTypes(detectedTypes) {
38
+ const allTypes = new Set();
39
+ // Add all detected types and their parents
40
+ for (const type of detectedTypes) {
41
+ allTypes.add(type);
42
+ const parent = PROJECT_TYPE_HIERARCHY[type];
43
+ if (parent !== undefined) {
44
+ allTypes.add(parent);
45
+ }
46
+ }
47
+ // Return in canonical order (typescript first, then others)
48
+ return PROJECT_TYPE_ORDER.filter((type) => allTypes.has(type));
49
+ }
50
+ }
51
+ /**
52
+ * Create default detector registry
53
+ */
54
+ export function createDetectorRegistry() {
55
+ return new DetectorRegistry();
56
+ }
57
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/detection/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAIhE;;GAEG;AACH,MAAM,OAAO,gBAAgB;IACV,SAAS,CAAkC;IAE5D,YAAY,SAA2C;QACrD,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI;YAC5B,IAAI,kBAAkB,EAAE;YACxB,IAAI,kBAAkB,EAAE;YACxB,IAAI,YAAY,EAAE;YAClB,IAAI,cAAc,EAAE;YACpB,IAAI,WAAW,EAAE;SAClB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,OAAe;QAC7B,MAAM,aAAa,GAAkB,EAAE,CAAC;QAExC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,mBAAmB,CAAC,aAAqC;QACvD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAe,CAAC;QAExC,2CAA2C;QAC3C,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEnB,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAED,4DAA4D;QAC5D,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,gBAAgB,EAAE,CAAC;AAChC,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Base error class for all Lisa errors
3
+ */
4
+ export declare class LisaError extends Error {
5
+ readonly code: string;
6
+ constructor(message: string, code: string);
7
+ }
8
+ /**
9
+ * Error thrown when destination directory is not found
10
+ */
11
+ export declare class DestinationNotFoundError extends LisaError {
12
+ readonly path: string;
13
+ constructor(path: string);
14
+ }
15
+ /**
16
+ * Error thrown when destination is not a directory
17
+ */
18
+ export declare class DestinationNotDirectoryError extends LisaError {
19
+ readonly path: string;
20
+ constructor(path: string);
21
+ }
22
+ /**
23
+ * Error thrown when JSON parsing fails
24
+ */
25
+ export declare class JsonParseError extends LisaError {
26
+ readonly filePath: string;
27
+ readonly originalError: Error;
28
+ constructor(filePath: string, originalError: Error);
29
+ }
30
+ /**
31
+ * Error thrown when JSON merge fails
32
+ */
33
+ export declare class JsonMergeError extends LisaError {
34
+ readonly filePath: string;
35
+ readonly reason: string;
36
+ constructor(filePath: string, reason: string);
37
+ }
38
+ /**
39
+ * Error thrown when file operation fails
40
+ */
41
+ export declare class FileOperationError extends LisaError {
42
+ readonly operation: string;
43
+ readonly filePath: string;
44
+ readonly originalError: Error;
45
+ constructor(operation: string, filePath: string, originalError: Error);
46
+ }
47
+ /**
48
+ * Error thrown when backup/restore fails
49
+ */
50
+ export declare class BackupError extends LisaError {
51
+ readonly operation: 'backup' | 'restore' | 'cleanup';
52
+ readonly reason: string;
53
+ constructor(operation: 'backup' | 'restore' | 'cleanup', reason: string);
54
+ }
55
+ /**
56
+ * Error thrown when rollback fails
57
+ */
58
+ export declare class RollbackError extends LisaError {
59
+ readonly reason: string;
60
+ constructor(reason: string);
61
+ }
62
+ /**
63
+ * Error thrown when a required dependency is missing
64
+ */
65
+ export declare class DependencyMissingError extends LisaError {
66
+ readonly dependencies: readonly string[];
67
+ constructor(dependencies: readonly string[]);
68
+ }
69
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK;aAGhB,IAAI,EAAE,MAAM;gBAD5B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM;CAK/B;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,SAAS;aACzB,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;CAIzC;AAED;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,SAAS;aAC7B,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;CAIzC;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,SAAS;aAEzB,QAAQ,EAAE,MAAM;aAChB,aAAa,EAAE,KAAK;gBADpB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,KAAK;CAKvC;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,SAAS;aAEzB,QAAQ,EAAE,MAAM;aAChB,MAAM,EAAE,MAAM;gBADd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM;CAKjC;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,SAAS;aAE7B,SAAS,EAAE,MAAM;aACjB,QAAQ,EAAE,MAAM;aAChB,aAAa,EAAE,KAAK;gBAFpB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,KAAK;CAKvC;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,SAAS;aAEtB,SAAS,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS;aAC3C,MAAM,EAAE,MAAM;gBADd,SAAS,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,EAC3C,MAAM,EAAE,MAAM;CAKjC;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,SAAS;aACd,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;CAI3C;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,SAAS;aACvB,YAAY,EAAE,SAAS,MAAM,EAAE;gBAA/B,YAAY,EAAE,SAAS,MAAM,EAAE;CAI5D"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Base error class for all Lisa errors
3
+ */
4
+ export class LisaError extends Error {
5
+ code;
6
+ constructor(message, code) {
7
+ super(message);
8
+ this.code = code;
9
+ this.name = 'LisaError';
10
+ }
11
+ }
12
+ /**
13
+ * Error thrown when destination directory is not found
14
+ */
15
+ export class DestinationNotFoundError extends LisaError {
16
+ path;
17
+ constructor(path) {
18
+ super(`Destination path does not exist: ${path}`, 'DEST_NOT_FOUND');
19
+ this.path = path;
20
+ this.name = 'DestinationNotFoundError';
21
+ }
22
+ }
23
+ /**
24
+ * Error thrown when destination is not a directory
25
+ */
26
+ export class DestinationNotDirectoryError extends LisaError {
27
+ path;
28
+ constructor(path) {
29
+ super(`Destination is not a directory: ${path}`, 'DEST_NOT_DIR');
30
+ this.path = path;
31
+ this.name = 'DestinationNotDirectoryError';
32
+ }
33
+ }
34
+ /**
35
+ * Error thrown when JSON parsing fails
36
+ */
37
+ export class JsonParseError extends LisaError {
38
+ filePath;
39
+ originalError;
40
+ constructor(filePath, originalError) {
41
+ super(`Failed to parse JSON file: ${filePath}`, 'JSON_PARSE_ERROR');
42
+ this.filePath = filePath;
43
+ this.originalError = originalError;
44
+ this.name = 'JsonParseError';
45
+ }
46
+ }
47
+ /**
48
+ * Error thrown when JSON merge fails
49
+ */
50
+ export class JsonMergeError extends LisaError {
51
+ filePath;
52
+ reason;
53
+ constructor(filePath, reason) {
54
+ super(`Failed to merge JSON: ${filePath} - ${reason}`, 'JSON_MERGE_ERROR');
55
+ this.filePath = filePath;
56
+ this.reason = reason;
57
+ this.name = 'JsonMergeError';
58
+ }
59
+ }
60
+ /**
61
+ * Error thrown when file operation fails
62
+ */
63
+ export class FileOperationError extends LisaError {
64
+ operation;
65
+ filePath;
66
+ originalError;
67
+ constructor(operation, filePath, originalError) {
68
+ super(`File operation '${operation}' failed for: ${filePath}`, 'FILE_OP_ERROR');
69
+ this.operation = operation;
70
+ this.filePath = filePath;
71
+ this.originalError = originalError;
72
+ this.name = 'FileOperationError';
73
+ }
74
+ }
75
+ /**
76
+ * Error thrown when backup/restore fails
77
+ */
78
+ export class BackupError extends LisaError {
79
+ operation;
80
+ reason;
81
+ constructor(operation, reason) {
82
+ super(`Backup ${operation} failed: ${reason}`, 'BACKUP_ERROR');
83
+ this.operation = operation;
84
+ this.reason = reason;
85
+ this.name = 'BackupError';
86
+ }
87
+ }
88
+ /**
89
+ * Error thrown when rollback fails
90
+ */
91
+ export class RollbackError extends LisaError {
92
+ reason;
93
+ constructor(reason) {
94
+ super(`Rollback failed: ${reason}`, 'ROLLBACK_ERROR');
95
+ this.reason = reason;
96
+ this.name = 'RollbackError';
97
+ }
98
+ }
99
+ /**
100
+ * Error thrown when a required dependency is missing
101
+ */
102
+ export class DependencyMissingError extends LisaError {
103
+ dependencies;
104
+ constructor(dependencies) {
105
+ super(`Missing required dependencies: ${dependencies.join(', ')}`, 'DEP_MISSING');
106
+ this.dependencies = dependencies;
107
+ this.name = 'DependencyMissingError';
108
+ }
109
+ }
110
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IAGhB;IAFlB,YACE,OAAe,EACC,IAAY;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,SAAI,GAAJ,IAAI,CAAQ;QAG5B,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,SAAS;IACzB;IAA5B,YAA4B,IAAY;QACtC,KAAK,CAAC,oCAAoC,IAAI,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAD1C,SAAI,GAAJ,IAAI,CAAQ;QAEtC,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,4BAA6B,SAAQ,SAAS;IAC7B;IAA5B,YAA4B,IAAY;QACtC,KAAK,CAAC,mCAAmC,IAAI,EAAE,EAAE,cAAc,CAAC,CAAC;QADvC,SAAI,GAAJ,IAAI,CAAQ;QAEtC,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;IAC7C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,SAAS;IAEzB;IACA;IAFlB,YACkB,QAAgB,EAChB,aAAoB;QAEpC,KAAK,CAAC,8BAA8B,QAAQ,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAHpD,aAAQ,GAAR,QAAQ,CAAQ;QAChB,kBAAa,GAAb,aAAa,CAAO;QAGpC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,SAAS;IAEzB;IACA;IAFlB,YACkB,QAAgB,EAChB,MAAc;QAE9B,KAAK,CAAC,yBAAyB,QAAQ,MAAM,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAH3D,aAAQ,GAAR,QAAQ,CAAQ;QAChB,WAAM,GAAN,MAAM,CAAQ;QAG9B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,SAAS;IAE7B;IACA;IACA;IAHlB,YACkB,SAAiB,EACjB,QAAgB,EAChB,aAAoB;QAEpC,KAAK,CAAC,mBAAmB,SAAS,iBAAiB,QAAQ,EAAE,EAAE,eAAe,CAAC,CAAC;QAJhE,cAAS,GAAT,SAAS,CAAQ;QACjB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,kBAAa,GAAb,aAAa,CAAO;QAGpC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,SAAS;IAEtB;IACA;IAFlB,YACkB,SAA2C,EAC3C,MAAc;QAE9B,KAAK,CAAC,UAAU,SAAS,YAAY,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC;QAH/C,cAAS,GAAT,SAAS,CAAkC;QAC3C,WAAM,GAAN,MAAM,CAAQ;QAG9B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,SAAS;IACd;IAA5B,YAA4B,MAAc;QACxC,KAAK,CAAC,oBAAoB,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAD5B,WAAM,GAAN,MAAM,CAAQ;QAExC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,SAAS;IACvB;IAA5B,YAA4B,YAA+B;QACzD,KAAK,CAAC,kCAAkC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QADxD,iBAAY,GAAZ,YAAY,CAAmB;QAEzD,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ import { createProgram } from './cli/index.js';
3
+ const program = createProgram();
4
+ program.parseAsync().catch((error) => {
5
+ console.error('Error:', error instanceof Error ? error.message : String(error));
6
+ process.exit(1);
7
+ });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;AAChC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACnC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { ILogger } from './logger.interface.js';
2
+ /**
3
+ * Console logger with colored output
4
+ */
5
+ export declare class ConsoleLogger implements ILogger {
6
+ info(message: string): void;
7
+ success(message: string): void;
8
+ warn(message: string): void;
9
+ error(message: string): void;
10
+ dry(message: string): void;
11
+ }
12
+ //# sourceMappingURL=console-logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-logger.d.ts","sourceRoot":"","sources":["../../src/logging/console-logger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD;;GAEG;AACH,qBAAa,aAAc,YAAW,OAAO;IAC3C,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI9B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5B,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAG3B"}
@@ -0,0 +1,22 @@
1
+ import pc from 'picocolors';
2
+ /**
3
+ * Console logger with colored output
4
+ */
5
+ export class ConsoleLogger {
6
+ info(message) {
7
+ console.log(`${pc.blue('[INFO]')} ${message}`);
8
+ }
9
+ success(message) {
10
+ console.log(`${pc.green('[OK]')} ${message}`);
11
+ }
12
+ warn(message) {
13
+ console.log(`${pc.yellow('[WARN]')} ${message}`);
14
+ }
15
+ error(message) {
16
+ console.log(`${pc.red('[ERROR]')} ${message}`);
17
+ }
18
+ dry(message) {
19
+ console.log(`${pc.blue('[DRY-RUN]')} ${message}`);
20
+ }
21
+ }
22
+ //# sourceMappingURL=console-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-logger.js","sourceRoot":"","sources":["../../src/logging/console-logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAG5B;;GAEG;AACH,MAAM,OAAO,aAAa;IACxB,IAAI,CAAC,OAAe;QAClB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,OAAe;QACnB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,GAAG,CAAC,OAAe;QACjB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;CACF"}