@xylabs/toolchain 7.10.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 (622) hide show
  1. package/dist/actions/analyze.mjs +140 -0
  2. package/dist/actions/analyze.mjs.map +1 -0
  3. package/dist/actions/build.mjs +173 -0
  4. package/dist/actions/build.mjs.map +1 -0
  5. package/dist/actions/claude-check.mjs +199 -0
  6. package/dist/actions/claude-check.mjs.map +1 -0
  7. package/dist/actions/claude-clean.mjs +70 -0
  8. package/dist/actions/claude-clean.mjs.map +1 -0
  9. package/dist/actions/claude-commands.mjs +126 -0
  10. package/dist/actions/claude-commands.mjs.map +1 -0
  11. package/dist/actions/claude-rules.mjs +151 -0
  12. package/dist/actions/claude-rules.mjs.map +1 -0
  13. package/dist/actions/claude-settings.mjs +99 -0
  14. package/dist/actions/claude-settings.mjs.map +1 -0
  15. package/dist/actions/claude-skills.mjs +131 -0
  16. package/dist/actions/claude-skills.mjs.map +1 -0
  17. package/dist/actions/clean-docs.mjs +66 -0
  18. package/dist/actions/clean-docs.mjs.map +1 -0
  19. package/dist/actions/clean-eslint.mjs +47 -0
  20. package/dist/actions/clean-eslint.mjs.map +1 -0
  21. package/dist/actions/clean.mjs +166 -0
  22. package/dist/actions/clean.mjs.map +1 -0
  23. package/dist/actions/compile.mjs +184 -0
  24. package/dist/actions/compile.mjs.map +1 -0
  25. package/dist/actions/copy-assets.mjs +81 -0
  26. package/dist/actions/copy-assets.mjs.map +1 -0
  27. package/dist/actions/cycle.mjs +275 -0
  28. package/dist/actions/cycle.mjs.map +1 -0
  29. package/dist/actions/dead.mjs +119 -0
  30. package/dist/actions/dead.mjs.map +1 -0
  31. package/dist/actions/deplint/checkPackage/checkPackage.mjs +1556 -0
  32. package/dist/actions/deplint/checkPackage/checkPackage.mjs.map +1 -0
  33. package/dist/actions/deplint/checkPackage/checkPackageTypes.mjs +1 -0
  34. package/dist/actions/deplint/checkPackage/checkPackageTypes.mjs.map +1 -0
  35. package/dist/actions/deplint/checkPackage/getMismatchedPeerDevVersions.mjs +77 -0
  36. package/dist/actions/deplint/checkPackage/getMismatchedPeerDevVersions.mjs.map +1 -0
  37. package/dist/actions/deplint/checkPackage/getUnlistedDependencies.mjs +158 -0
  38. package/dist/actions/deplint/checkPackage/getUnlistedDependencies.mjs.map +1 -0
  39. package/dist/actions/deplint/checkPackage/getUnlistedDevDependencies.mjs +125 -0
  40. package/dist/actions/deplint/checkPackage/getUnlistedDevDependencies.mjs.map +1 -0
  41. package/dist/actions/deplint/checkPackage/getUnnecessaryPeerDependencies.mjs +207 -0
  42. package/dist/actions/deplint/checkPackage/getUnnecessaryPeerDependencies.mjs.map +1 -0
  43. package/dist/actions/deplint/checkPackage/getUnsatisfiedPeerDependencies.mjs +318 -0
  44. package/dist/actions/deplint/checkPackage/getUnsatisfiedPeerDependencies.mjs.map +1 -0
  45. package/dist/actions/deplint/checkPackage/getUnusedDependencies.mjs +163 -0
  46. package/dist/actions/deplint/checkPackage/getUnusedDependencies.mjs.map +1 -0
  47. package/dist/actions/deplint/checkPackage/getUnusedDevDependencies.mjs +408 -0
  48. package/dist/actions/deplint/checkPackage/getUnusedDevDependencies.mjs.map +1 -0
  49. package/dist/actions/deplint/checkPackage/getUnusedPeerDependencies.mjs +75 -0
  50. package/dist/actions/deplint/checkPackage/getUnusedPeerDependencies.mjs.map +1 -0
  51. package/dist/actions/deplint/checkPackage/getWorkspaceVersionProblems.mjs +128 -0
  52. package/dist/actions/deplint/checkPackage/getWorkspaceVersionProblems.mjs.map +1 -0
  53. package/dist/actions/deplint/checkPackage/index.mjs +1609 -0
  54. package/dist/actions/deplint/checkPackage/index.mjs.map +1 -0
  55. package/dist/actions/deplint/deplint.mjs +1840 -0
  56. package/dist/actions/deplint/deplint.mjs.map +1 -0
  57. package/dist/actions/deplint/engine.mjs +1736 -0
  58. package/dist/actions/deplint/engine.mjs.map +1 -0
  59. package/dist/actions/deplint/findFiles.mjs +39 -0
  60. package/dist/actions/deplint/findFiles.mjs.map +1 -0
  61. package/dist/actions/deplint/findFilesByGlob.mjs +14 -0
  62. package/dist/actions/deplint/findFilesByGlob.mjs.map +1 -0
  63. package/dist/actions/deplint/fixer.mjs +103 -0
  64. package/dist/actions/deplint/fixer.mjs.map +1 -0
  65. package/dist/actions/deplint/getBasePackageName.mjs +13 -0
  66. package/dist/actions/deplint/getBasePackageName.mjs.map +1 -0
  67. package/dist/actions/deplint/getCliReferencedPackagesFromFiles.mjs +140 -0
  68. package/dist/actions/deplint/getCliReferencedPackagesFromFiles.mjs.map +1 -0
  69. package/dist/actions/deplint/getDependenciesFromPackageJson.mjs +29 -0
  70. package/dist/actions/deplint/getDependenciesFromPackageJson.mjs.map +1 -0
  71. package/dist/actions/deplint/getExtendsFromTsconfigs.mjs +68 -0
  72. package/dist/actions/deplint/getExtendsFromTsconfigs.mjs.map +1 -0
  73. package/dist/actions/deplint/getExternalImportsFromFiles.mjs +143 -0
  74. package/dist/actions/deplint/getExternalImportsFromFiles.mjs.map +1 -0
  75. package/dist/actions/deplint/getImportsFromFile.mjs +85 -0
  76. package/dist/actions/deplint/getImportsFromFile.mjs.map +1 -0
  77. package/dist/actions/deplint/getRequiredPeerDependencies.mjs +37 -0
  78. package/dist/actions/deplint/getRequiredPeerDependencies.mjs.map +1 -0
  79. package/dist/actions/deplint/getScriptReferencedPackages.mjs +83 -0
  80. package/dist/actions/deplint/getScriptReferencedPackages.mjs.map +1 -0
  81. package/dist/actions/deplint/implicitDevDependencies.mjs +116 -0
  82. package/dist/actions/deplint/implicitDevDependencies.mjs.map +1 -0
  83. package/dist/actions/deplint/index.mjs +1848 -0
  84. package/dist/actions/deplint/index.mjs.map +1 -0
  85. package/dist/actions/deplint/packageEditor.mjs +82 -0
  86. package/dist/actions/deplint/packageEditor.mjs.map +1 -0
  87. package/dist/actions/deplint/packageJsonEditor.mjs +101 -0
  88. package/dist/actions/deplint/packageJsonEditor.mjs.map +1 -0
  89. package/dist/actions/deplint/reporters.mjs +36 -0
  90. package/dist/actions/deplint/reporters.mjs.map +1 -0
  91. package/dist/actions/deplint/rules.mjs +1223 -0
  92. package/dist/actions/deplint/rules.mjs.map +1 -0
  93. package/dist/actions/deplint/snapshot.mjs +372 -0
  94. package/dist/actions/deplint/snapshot.mjs.map +1 -0
  95. package/dist/actions/deplint/tsScriptsAliases.mjs +20 -0
  96. package/dist/actions/deplint/tsScriptsAliases.mjs.map +1 -0
  97. package/dist/actions/deplint/types.mjs +1 -0
  98. package/dist/actions/deplint/types.mjs.map +1 -0
  99. package/dist/actions/deploy.mjs +194 -0
  100. package/dist/actions/deploy.mjs.map +1 -0
  101. package/dist/actions/dupdeps.mjs +226 -0
  102. package/dist/actions/dupdeps.mjs.map +1 -0
  103. package/dist/actions/eject.mjs +142 -0
  104. package/dist/actions/eject.mjs.map +1 -0
  105. package/dist/actions/fix.mjs +359 -0
  106. package/dist/actions/fix.mjs.map +1 -0
  107. package/dist/actions/gen-docs.mjs +155 -0
  108. package/dist/actions/gen-docs.mjs.map +1 -0
  109. package/dist/actions/gitignore.mjs +159 -0
  110. package/dist/actions/gitignore.mjs.map +1 -0
  111. package/dist/actions/gitlint-fix.mjs +27 -0
  112. package/dist/actions/gitlint-fix.mjs.map +1 -0
  113. package/dist/actions/gitlint.mjs +48 -0
  114. package/dist/actions/gitlint.mjs.map +1 -0
  115. package/dist/actions/index.mjs +8259 -0
  116. package/dist/actions/index.mjs.map +1 -0
  117. package/dist/actions/knip.mjs +119 -0
  118. package/dist/actions/knip.mjs.map +1 -0
  119. package/dist/actions/license.mjs +92 -0
  120. package/dist/actions/license.mjs.map +1 -0
  121. package/dist/actions/lint-init.mjs +275 -0
  122. package/dist/actions/lint-init.mjs.map +1 -0
  123. package/dist/actions/lint.mjs +356 -0
  124. package/dist/actions/lint.mjs.map +1 -0
  125. package/dist/actions/lintNext.mjs +209 -0
  126. package/dist/actions/lintNext.mjs.map +1 -0
  127. package/dist/actions/lintlint.mjs +341 -0
  128. package/dist/actions/lintlint.mjs.map +1 -0
  129. package/dist/actions/npmignore-gen.mjs +90 -0
  130. package/dist/actions/npmignore-gen.mjs.map +1 -0
  131. package/dist/actions/orphan.mjs +110 -0
  132. package/dist/actions/orphan.mjs.map +1 -0
  133. package/dist/actions/package/clean-outputs.mjs +50 -0
  134. package/dist/actions/package/clean-outputs.mjs.map +1 -0
  135. package/dist/actions/package/clean-typescript.mjs +50 -0
  136. package/dist/actions/package/clean-typescript.mjs.map +1 -0
  137. package/dist/actions/package/clean.mjs +69 -0
  138. package/dist/actions/package/clean.mjs.map +1 -0
  139. package/dist/actions/package/compile/XyConfig.mjs +32 -0
  140. package/dist/actions/package/compile/XyConfig.mjs.map +1 -0
  141. package/dist/actions/package/compile/buildEntries.mjs +53 -0
  142. package/dist/actions/package/compile/buildEntries.mjs.map +1 -0
  143. package/dist/actions/package/compile/compile.mjs +439 -0
  144. package/dist/actions/package/compile/compile.mjs.map +1 -0
  145. package/dist/actions/package/compile/copyTypeFiles.mjs +34 -0
  146. package/dist/actions/package/compile/copyTypeFiles.mjs.map +1 -0
  147. package/dist/actions/package/compile/deepMerge.mjs +27 -0
  148. package/dist/actions/package/compile/deepMerge.mjs.map +1 -0
  149. package/dist/actions/package/compile/getCompilerOptions.mjs +12 -0
  150. package/dist/actions/package/compile/getCompilerOptions.mjs.map +1 -0
  151. package/dist/actions/package/compile/index.mjs +472 -0
  152. package/dist/actions/package/compile/index.mjs.map +1 -0
  153. package/dist/actions/package/compile/inputs.mjs +22 -0
  154. package/dist/actions/package/compile/inputs.mjs.map +1 -0
  155. package/dist/actions/package/compile/packageCompileTsc.mjs +93 -0
  156. package/dist/actions/package/compile/packageCompileTsc.mjs.map +1 -0
  157. package/dist/actions/package/compile/packageCompileTscTypes.mjs +92 -0
  158. package/dist/actions/package/compile/packageCompileTscTypes.mjs.map +1 -0
  159. package/dist/actions/package/compile/packageCompileTsup.mjs +402 -0
  160. package/dist/actions/package/compile/packageCompileTsup.mjs.map +1 -0
  161. package/dist/actions/package/copy-assets.mjs +69 -0
  162. package/dist/actions/package/copy-assets.mjs.map +1 -0
  163. package/dist/actions/package/cycle.mjs +62 -0
  164. package/dist/actions/package/cycle.mjs.map +1 -0
  165. package/dist/actions/package/gen-docs.mjs +137 -0
  166. package/dist/actions/package/gen-docs.mjs.map +1 -0
  167. package/dist/actions/package/index.mjs +1131 -0
  168. package/dist/actions/package/index.mjs.map +1 -0
  169. package/dist/actions/package/lint.mjs +87 -0
  170. package/dist/actions/package/lint.mjs.map +1 -0
  171. package/dist/actions/package/publint.mjs +336 -0
  172. package/dist/actions/package/publint.mjs.map +1 -0
  173. package/dist/actions/package/recompile.mjs +510 -0
  174. package/dist/actions/package/recompile.mjs.map +1 -0
  175. package/dist/actions/package-lint-deps.mjs +348 -0
  176. package/dist/actions/package-lint-deps.mjs.map +1 -0
  177. package/dist/actions/package-lint.mjs +774 -0
  178. package/dist/actions/package-lint.mjs.map +1 -0
  179. package/dist/actions/packman/clean.mjs +144 -0
  180. package/dist/actions/packman/clean.mjs.map +1 -0
  181. package/dist/actions/packman/convert.mjs +1331 -0
  182. package/dist/actions/packman/convert.mjs.map +1 -0
  183. package/dist/actions/packman/convertToPnpm.mjs +295 -0
  184. package/dist/actions/packman/convertToPnpm.mjs.map +1 -0
  185. package/dist/actions/packman/convertToYarn.mjs +307 -0
  186. package/dist/actions/packman/convertToYarn.mjs.map +1 -0
  187. package/dist/actions/packman/index.mjs +1493 -0
  188. package/dist/actions/packman/index.mjs.map +1 -0
  189. package/dist/actions/packman/lint.mjs +109 -0
  190. package/dist/actions/packman/lint.mjs.map +1 -0
  191. package/dist/actions/packman/rewriteScripts.mjs +52 -0
  192. package/dist/actions/packman/rewriteScripts.mjs.map +1 -0
  193. package/dist/actions/packman/rewriteSourceImports.mjs +60 -0
  194. package/dist/actions/packman/rewriteSourceImports.mjs.map +1 -0
  195. package/dist/actions/packman/swapTsScriptsDependency.mjs +57 -0
  196. package/dist/actions/packman/swapTsScriptsDependency.mjs.map +1 -0
  197. package/dist/actions/publint.mjs +748 -0
  198. package/dist/actions/publint.mjs.map +1 -0
  199. package/dist/actions/publish.mjs +208 -0
  200. package/dist/actions/publish.mjs.map +1 -0
  201. package/dist/actions/reactTest.mjs +142 -0
  202. package/dist/actions/reactTest.mjs.map +1 -0
  203. package/dist/actions/readme-gen.mjs +362 -0
  204. package/dist/actions/readme-gen.mjs.map +1 -0
  205. package/dist/actions/readme-init.mjs +89 -0
  206. package/dist/actions/readme-init.mjs.map +1 -0
  207. package/dist/actions/readme-lint.mjs +147 -0
  208. package/dist/actions/readme-lint.mjs.map +1 -0
  209. package/dist/actions/rebuild.mjs +143 -0
  210. package/dist/actions/rebuild.mjs.map +1 -0
  211. package/dist/actions/recompile.mjs +196 -0
  212. package/dist/actions/recompile.mjs.map +1 -0
  213. package/dist/actions/reinstall.mjs +283 -0
  214. package/dist/actions/reinstall.mjs.map +1 -0
  215. package/dist/actions/relint.mjs +355 -0
  216. package/dist/actions/relint.mjs.map +1 -0
  217. package/dist/actions/repo-init.mjs +217 -0
  218. package/dist/actions/repo-init.mjs.map +1 -0
  219. package/dist/actions/retest.mjs +150 -0
  220. package/dist/actions/retest.mjs.map +1 -0
  221. package/dist/actions/sitemap.mjs +121 -0
  222. package/dist/actions/sitemap.mjs.map +1 -0
  223. package/dist/actions/sonar.mjs +119 -0
  224. package/dist/actions/sonar.mjs.map +1 -0
  225. package/dist/actions/start.mjs +142 -0
  226. package/dist/actions/start.mjs.map +1 -0
  227. package/dist/actions/statics.mjs +225 -0
  228. package/dist/actions/statics.mjs.map +1 -0
  229. package/dist/actions/test.mjs +144 -0
  230. package/dist/actions/test.mjs.map +1 -0
  231. package/dist/actions/up.mjs +140 -0
  232. package/dist/actions/up.mjs.map +1 -0
  233. package/dist/actions/updo.mjs +533 -0
  234. package/dist/actions/updo.mjs.map +1 -0
  235. package/dist/actions/upplug.mjs +124 -0
  236. package/dist/actions/upplug.mjs.map +1 -0
  237. package/dist/actions/upyarn.mjs +119 -0
  238. package/dist/actions/upyarn.mjs.map +1 -0
  239. package/dist/actions/yarn3only.mjs +60 -0
  240. package/dist/actions/yarn3only.mjs.map +1 -0
  241. package/dist/bin/package/build-only.mjs +451 -0
  242. package/dist/bin/package/build-only.mjs.map +1 -0
  243. package/dist/bin/package/build.mjs +451 -0
  244. package/dist/bin/package/build.mjs.map +1 -0
  245. package/dist/bin/package/clean-outputs.mjs +50 -0
  246. package/dist/bin/package/clean-outputs.mjs.map +1 -0
  247. package/dist/bin/package/clean-typescript.mjs +50 -0
  248. package/dist/bin/package/clean-typescript.mjs.map +1 -0
  249. package/dist/bin/package/clean.mjs +75 -0
  250. package/dist/bin/package/clean.mjs.map +1 -0
  251. package/dist/bin/package/compile-only.mjs +447 -0
  252. package/dist/bin/package/compile-only.mjs.map +1 -0
  253. package/dist/bin/package/compile-tsup.mjs +409 -0
  254. package/dist/bin/package/compile-tsup.mjs.map +1 -0
  255. package/dist/bin/package/compile.mjs +451 -0
  256. package/dist/bin/package/compile.mjs.map +1 -0
  257. package/dist/bin/package/copy-assets-cjs.mjs +75 -0
  258. package/dist/bin/package/copy-assets-cjs.mjs.map +1 -0
  259. package/dist/bin/package/copy-assets-esm.mjs +75 -0
  260. package/dist/bin/package/copy-assets-esm.mjs.map +1 -0
  261. package/dist/bin/package/cycle.mjs +72 -0
  262. package/dist/bin/package/cycle.mjs.map +1 -0
  263. package/dist/bin/package/fix.mjs +97 -0
  264. package/dist/bin/package/fix.mjs.map +1 -0
  265. package/dist/bin/package/gen-docs.mjs +142 -0
  266. package/dist/bin/package/gen-docs.mjs.map +1 -0
  267. package/dist/bin/package/lint-verbose.mjs +97 -0
  268. package/dist/bin/package/lint-verbose.mjs.map +1 -0
  269. package/dist/bin/package/lint.mjs +97 -0
  270. package/dist/bin/package/lint.mjs.map +1 -0
  271. package/dist/bin/package/publint.mjs +423 -0
  272. package/dist/bin/package/publint.mjs.map +1 -0
  273. package/dist/bin/package/recompile.mjs +516 -0
  274. package/dist/bin/package/recompile.mjs.map +1 -0
  275. package/dist/bin/package/relint.mjs +97 -0
  276. package/dist/bin/package/relint.mjs.map +1 -0
  277. package/dist/bin/run-or-exec.mjs +20 -0
  278. package/dist/bin/run-or-exec.mjs.map +1 -0
  279. package/dist/bin/xy.mjs +8885 -0
  280. package/dist/bin/xy.mjs.map +1 -0
  281. package/dist/index.d.ts +1102 -0
  282. package/dist/index.mjs +9986 -0
  283. package/dist/index.mjs.map +1 -0
  284. package/dist/lib/checkResult.mjs +16 -0
  285. package/dist/lib/checkResult.mjs.map +1 -0
  286. package/dist/lib/claudeMdTemplate.mjs +69 -0
  287. package/dist/lib/claudeMdTemplate.mjs.map +1 -0
  288. package/dist/lib/concurrency.mjs +38 -0
  289. package/dist/lib/concurrency.mjs.map +1 -0
  290. package/dist/lib/createBuildConfig.mjs +55 -0
  291. package/dist/lib/createBuildConfig.mjs.map +1 -0
  292. package/dist/lib/defaultBuildConfig.mjs +23 -0
  293. package/dist/lib/defaultBuildConfig.mjs.map +1 -0
  294. package/dist/lib/deleteGlob.mjs +13 -0
  295. package/dist/lib/deleteGlob.mjs.map +1 -0
  296. package/dist/lib/dependencies/DuplicateDetector.mjs +99 -0
  297. package/dist/lib/dependencies/DuplicateDetector.mjs.map +1 -0
  298. package/dist/lib/dependencies/detectDuplicateDependencies.mjs +203 -0
  299. package/dist/lib/dependencies/detectDuplicateDependencies.mjs.map +1 -0
  300. package/dist/lib/dependencies/index.mjs +281 -0
  301. package/dist/lib/dependencies/index.mjs.map +1 -0
  302. package/dist/lib/dependencies/workspaceCycles.mjs +79 -0
  303. package/dist/lib/dependencies/workspaceCycles.mjs.map +1 -0
  304. package/dist/lib/file/ReadFileSyncOptions.mjs +6 -0
  305. package/dist/lib/file/ReadFileSyncOptions.mjs.map +1 -0
  306. package/dist/lib/file/constants.mjs +8 -0
  307. package/dist/lib/file/constants.mjs.map +1 -0
  308. package/dist/lib/file/fileLines.mjs +32 -0
  309. package/dist/lib/file/fileLines.mjs.map +1 -0
  310. package/dist/lib/file/index.mjs +42 -0
  311. package/dist/lib/file/index.mjs.map +1 -0
  312. package/dist/lib/file/tryReadFileSync.mjs +14 -0
  313. package/dist/lib/file/tryReadFileSync.mjs.map +1 -0
  314. package/dist/lib/fillTemplate.mjs +8 -0
  315. package/dist/lib/fillTemplate.mjs.map +1 -0
  316. package/dist/lib/generateIgnoreFiles.mjs +86 -0
  317. package/dist/lib/generateIgnoreFiles.mjs.map +1 -0
  318. package/dist/lib/generateReadmeFiles.mjs +323 -0
  319. package/dist/lib/generateReadmeFiles.mjs.map +1 -0
  320. package/dist/lib/gitignoreTemplate.mjs +12 -0
  321. package/dist/lib/gitignoreTemplate.mjs.map +1 -0
  322. package/dist/lib/index.mjs +1627 -0
  323. package/dist/lib/index.mjs.map +1 -0
  324. package/dist/lib/initCwd.mjs +8 -0
  325. package/dist/lib/initCwd.mjs.map +1 -0
  326. package/dist/lib/jsonFormatters.mjs +11 -0
  327. package/dist/lib/jsonFormatters.mjs.map +1 -0
  328. package/dist/lib/latestVersions.mjs +12 -0
  329. package/dist/lib/latestVersions.mjs.map +1 -0
  330. package/dist/lib/loadConfig.mjs +72 -0
  331. package/dist/lib/loadConfig.mjs.map +1 -0
  332. package/dist/lib/packageName.mjs +26 -0
  333. package/dist/lib/packageName.mjs.map +1 -0
  334. package/dist/lib/parsedPackageJSON.mjs +11 -0
  335. package/dist/lib/parsedPackageJSON.mjs.map +1 -0
  336. package/dist/lib/processEx.mjs +36 -0
  337. package/dist/lib/processEx.mjs.map +1 -0
  338. package/dist/lib/repoTemplates.mjs +34 -0
  339. package/dist/lib/repoTemplates.mjs.map +1 -0
  340. package/dist/lib/runInstall.mjs +30 -0
  341. package/dist/lib/runInstall.mjs.map +1 -0
  342. package/dist/lib/runSteps.mjs +118 -0
  343. package/dist/lib/runSteps.mjs.map +1 -0
  344. package/dist/lib/runStepsAsync.mjs +136 -0
  345. package/dist/lib/runStepsAsync.mjs.map +1 -0
  346. package/dist/lib/runXy.mjs +147 -0
  347. package/dist/lib/runXy.mjs.map +1 -0
  348. package/dist/lib/runXyWithWarning.mjs +36 -0
  349. package/dist/lib/runXyWithWarning.mjs.map +1 -0
  350. package/dist/lib/safeExit.mjs +61 -0
  351. package/dist/lib/safeExit.mjs.map +1 -0
  352. package/dist/lib/string/empty.mjs +8 -0
  353. package/dist/lib/string/empty.mjs.map +1 -0
  354. package/dist/lib/string/index.mjs +12 -0
  355. package/dist/lib/string/index.mjs.map +1 -0
  356. package/dist/lib/string/union.mjs +6 -0
  357. package/dist/lib/string/union.mjs.map +1 -0
  358. package/dist/lib/tryRunLocalScript.mjs +57 -0
  359. package/dist/lib/tryRunLocalScript.mjs.map +1 -0
  360. package/dist/lib/updo/applyUpdates.mjs +44 -0
  361. package/dist/lib/updo/applyUpdates.mjs.map +1 -0
  362. package/dist/lib/updo/collectWorkspaceDeps.mjs +48 -0
  363. package/dist/lib/updo/collectWorkspaceDeps.mjs.map +1 -0
  364. package/dist/lib/updo/fetchRegistryInfo.mjs +53 -0
  365. package/dist/lib/updo/fetchRegistryInfo.mjs.map +1 -0
  366. package/dist/lib/updo/index.mjs +594 -0
  367. package/dist/lib/updo/index.mjs.map +1 -0
  368. package/dist/lib/updo/interactiveSelect.mjs +185 -0
  369. package/dist/lib/updo/interactiveSelect.mjs.map +1 -0
  370. package/dist/lib/updo/interfaces.mjs +1 -0
  371. package/dist/lib/updo/interfaces.mjs.map +1 -0
  372. package/dist/lib/updo/renderTable.mjs +79 -0
  373. package/dist/lib/updo/renderTable.mjs.map +1 -0
  374. package/dist/lib/updo/resolveVersions.mjs +49 -0
  375. package/dist/lib/updo/resolveVersions.mjs.map +1 -0
  376. package/dist/lib/updo/runUpdo.mjs +511 -0
  377. package/dist/lib/updo/runUpdo.mjs.map +1 -0
  378. package/dist/lib/withErrnoException.mjs +13 -0
  379. package/dist/lib/withErrnoException.mjs.map +1 -0
  380. package/dist/lib/withError.mjs +8 -0
  381. package/dist/lib/withError.mjs.map +1 -0
  382. package/dist/lib/yarn/index.mjs +39 -0
  383. package/dist/lib/yarn/index.mjs.map +1 -0
  384. package/dist/lib/yarn/isYarnVersionOrGreater.mjs +18 -0
  385. package/dist/lib/yarn/isYarnVersionOrGreater.mjs.map +1 -0
  386. package/dist/lib/yarn/workspace/Workspace.mjs +1 -0
  387. package/dist/lib/yarn/workspace/Workspace.mjs.map +1 -0
  388. package/dist/lib/yarn/workspace/index.mjs +23 -0
  389. package/dist/lib/yarn/workspace/index.mjs.map +1 -0
  390. package/dist/lib/yarn/workspace/yarnWorkspace.mjs +22 -0
  391. package/dist/lib/yarn/workspace/yarnWorkspace.mjs.map +1 -0
  392. package/dist/lib/yarn/workspace/yarnWorkspaces.mjs +15 -0
  393. package/dist/lib/yarn/workspace/yarnWorkspaces.mjs.map +1 -0
  394. package/dist/lib/yarn/yarnInitCwd.mjs +8 -0
  395. package/dist/lib/yarn/yarnInitCwd.mjs.map +1 -0
  396. package/dist/loadPackageConfig.mjs +18 -0
  397. package/dist/loadPackageConfig.mjs.map +1 -0
  398. package/dist/pm/PackageManager.mjs +1 -0
  399. package/dist/pm/PackageManager.mjs.map +1 -0
  400. package/dist/pm/detectPackageManager.mjs +10 -0
  401. package/dist/pm/detectPackageManager.mjs.map +1 -0
  402. package/dist/pm/detectReact.mjs +52 -0
  403. package/dist/pm/detectReact.mjs.map +1 -0
  404. package/dist/pm/index.mjs +263 -0
  405. package/dist/pm/index.mjs.map +1 -0
  406. package/dist/pm/pnpmPackageManager.mjs +97 -0
  407. package/dist/pm/pnpmPackageManager.mjs.map +1 -0
  408. package/dist/pm/registry.mjs +27 -0
  409. package/dist/pm/registry.mjs.map +1 -0
  410. package/dist/pm/yarnPackageManager.mjs +112 -0
  411. package/dist/pm/yarnPackageManager.mjs.map +1 -0
  412. package/dist/types.d.mjs +1 -0
  413. package/dist/types.d.mjs.map +1 -0
  414. package/dist/xy/build/buildCommand.mjs +194 -0
  415. package/dist/xy/build/buildCommand.mjs.map +1 -0
  416. package/dist/xy/build/compileCommand.mjs +203 -0
  417. package/dist/xy/build/compileCommand.mjs.map +1 -0
  418. package/dist/xy/build/compileOnlyCommand.mjs +204 -0
  419. package/dist/xy/build/compileOnlyCommand.mjs.map +1 -0
  420. package/dist/xy/build/copyAssetsCommand.mjs +92 -0
  421. package/dist/xy/build/copyAssetsCommand.mjs.map +1 -0
  422. package/dist/xy/build/index.mjs +487 -0
  423. package/dist/xy/build/index.mjs.map +1 -0
  424. package/dist/xy/build/rebuildCommand.mjs +156 -0
  425. package/dist/xy/build/rebuildCommand.mjs.map +1 -0
  426. package/dist/xy/build/recompileCommand.mjs +215 -0
  427. package/dist/xy/build/recompileCommand.mjs.map +1 -0
  428. package/dist/xy/common/checkCommand.mjs +1909 -0
  429. package/dist/xy/common/checkCommand.mjs.map +1 -0
  430. package/dist/xy/common/claude/checkCommand.mjs +207 -0
  431. package/dist/xy/common/claude/checkCommand.mjs.map +1 -0
  432. package/dist/xy/common/claude/cleanCommand.mjs +78 -0
  433. package/dist/xy/common/claude/cleanCommand.mjs.map +1 -0
  434. package/dist/xy/common/claude/commandsCommand.mjs +134 -0
  435. package/dist/xy/common/claude/commandsCommand.mjs.map +1 -0
  436. package/dist/xy/common/claude/index.mjs +734 -0
  437. package/dist/xy/common/claude/index.mjs.map +1 -0
  438. package/dist/xy/common/claude/initCommand.mjs +458 -0
  439. package/dist/xy/common/claude/initCommand.mjs.map +1 -0
  440. package/dist/xy/common/claude/rulesCommand.mjs +167 -0
  441. package/dist/xy/common/claude/rulesCommand.mjs.map +1 -0
  442. package/dist/xy/common/claude/settingsCommand.mjs +115 -0
  443. package/dist/xy/common/claude/settingsCommand.mjs.map +1 -0
  444. package/dist/xy/common/claude/skillsCommand.mjs +140 -0
  445. package/dist/xy/common/claude/skillsCommand.mjs.map +1 -0
  446. package/dist/xy/common/cleanDocsCommand.mjs +74 -0
  447. package/dist/xy/common/cleanDocsCommand.mjs.map +1 -0
  448. package/dist/xy/common/deadCommand.mjs +137 -0
  449. package/dist/xy/common/deadCommand.mjs.map +1 -0
  450. package/dist/xy/common/genDocsCommand.mjs +175 -0
  451. package/dist/xy/common/genDocsCommand.mjs.map +1 -0
  452. package/dist/xy/common/gitignoreCommand.mjs +165 -0
  453. package/dist/xy/common/gitignoreCommand.mjs.map +1 -0
  454. package/dist/xy/common/gitlintCommand.mjs +89 -0
  455. package/dist/xy/common/gitlintCommand.mjs.map +1 -0
  456. package/dist/xy/common/index.mjs +4654 -0
  457. package/dist/xy/common/index.mjs.map +1 -0
  458. package/dist/xy/common/licenseCommand.mjs +108 -0
  459. package/dist/xy/common/licenseCommand.mjs.map +1 -0
  460. package/dist/xy/common/npmignoreGenCommand.mjs +100 -0
  461. package/dist/xy/common/npmignoreGenCommand.mjs.map +1 -0
  462. package/dist/xy/common/orphan/cleanCommand.mjs +102 -0
  463. package/dist/xy/common/orphan/cleanCommand.mjs.map +1 -0
  464. package/dist/xy/common/orphan/index.mjs +138 -0
  465. package/dist/xy/common/orphan/index.mjs.map +1 -0
  466. package/dist/xy/common/orphan/listCommand.mjs +100 -0
  467. package/dist/xy/common/orphan/listCommand.mjs.map +1 -0
  468. package/dist/xy/common/packmanCommand.mjs +1538 -0
  469. package/dist/xy/common/packmanCommand.mjs.map +1 -0
  470. package/dist/xy/common/readme/genCommand.mjs +395 -0
  471. package/dist/xy/common/readme/genCommand.mjs.map +1 -0
  472. package/dist/xy/common/readme/index.mjs +538 -0
  473. package/dist/xy/common/readme/index.mjs.map +1 -0
  474. package/dist/xy/common/readme/initCommand.mjs +109 -0
  475. package/dist/xy/common/readme/initCommand.mjs.map +1 -0
  476. package/dist/xy/common/readme/lintCommand.mjs +181 -0
  477. package/dist/xy/common/readme/lintCommand.mjs.map +1 -0
  478. package/dist/xy/common/repo/index.mjs +1070 -0
  479. package/dist/xy/common/repo/index.mjs.map +1 -0
  480. package/dist/xy/common/repo/initCommand.mjs +273 -0
  481. package/dist/xy/common/repo/initCommand.mjs.map +1 -0
  482. package/dist/xy/common/repo/lintCommand.mjs +789 -0
  483. package/dist/xy/common/repo/lintCommand.mjs.map +1 -0
  484. package/dist/xy/common/retestCommand.mjs +163 -0
  485. package/dist/xy/common/retestCommand.mjs.map +1 -0
  486. package/dist/xy/common/testCommand.mjs +157 -0
  487. package/dist/xy/common/testCommand.mjs.map +1 -0
  488. package/dist/xy/deploy/deployCommand.mjs +214 -0
  489. package/dist/xy/deploy/deployCommand.mjs.map +1 -0
  490. package/dist/xy/deploy/index.mjs +289 -0
  491. package/dist/xy/deploy/index.mjs.map +1 -0
  492. package/dist/xy/deploy/publishCommand.mjs +218 -0
  493. package/dist/xy/deploy/publishCommand.mjs.map +1 -0
  494. package/dist/xy/index.mjs +8887 -0
  495. package/dist/xy/index.mjs.map +1 -0
  496. package/dist/xy/install/cleanCommand.mjs +182 -0
  497. package/dist/xy/install/cleanCommand.mjs.map +1 -0
  498. package/dist/xy/install/dupdepsCommand.mjs +234 -0
  499. package/dist/xy/install/dupdepsCommand.mjs.map +1 -0
  500. package/dist/xy/install/index.mjs +1006 -0
  501. package/dist/xy/install/index.mjs.map +1 -0
  502. package/dist/xy/install/reinstallCommand.mjs +292 -0
  503. package/dist/xy/install/reinstallCommand.mjs.map +1 -0
  504. package/dist/xy/install/staticsCommand.mjs +233 -0
  505. package/dist/xy/install/staticsCommand.mjs.map +1 -0
  506. package/dist/xy/install/upCommand.mjs +150 -0
  507. package/dist/xy/install/upCommand.mjs.map +1 -0
  508. package/dist/xy/install/updoCommand.mjs +550 -0
  509. package/dist/xy/install/updoCommand.mjs.map +1 -0
  510. package/dist/xy/lint/cycleCommand.mjs +289 -0
  511. package/dist/xy/lint/cycleCommand.mjs.map +1 -0
  512. package/dist/xy/lint/deplintCommand.mjs +1897 -0
  513. package/dist/xy/lint/deplintCommand.mjs.map +1 -0
  514. package/dist/xy/lint/fixCommand.mjs +398 -0
  515. package/dist/xy/lint/fixCommand.mjs.map +1 -0
  516. package/dist/xy/lint/index.mjs +3759 -0
  517. package/dist/xy/lint/index.mjs.map +1 -0
  518. package/dist/xy/lint/knipCommand.mjs +142 -0
  519. package/dist/xy/lint/knipCommand.mjs.map +1 -0
  520. package/dist/xy/lint/lint/index.mjs +695 -0
  521. package/dist/xy/lint/lint/index.mjs.map +1 -0
  522. package/dist/xy/lint/lint/initCommand.mjs +282 -0
  523. package/dist/xy/lint/lint/initCommand.mjs.map +1 -0
  524. package/dist/xy/lint/lint/runCommand.mjs +405 -0
  525. package/dist/xy/lint/lint/runCommand.mjs.map +1 -0
  526. package/dist/xy/lint/lintCommand.mjs +695 -0
  527. package/dist/xy/lint/lintCommand.mjs.map +1 -0
  528. package/dist/xy/lint/lintlintCommand.mjs +359 -0
  529. package/dist/xy/lint/lintlintCommand.mjs.map +1 -0
  530. package/dist/xy/lint/publintCommand.mjs +778 -0
  531. package/dist/xy/lint/publintCommand.mjs.map +1 -0
  532. package/dist/xy/lint/relintCommand.mjs +381 -0
  533. package/dist/xy/lint/relintCommand.mjs.map +1 -0
  534. package/dist/xy/lint/sonarCommand.mjs +137 -0
  535. package/dist/xy/lint/sonarCommand.mjs.map +1 -0
  536. package/dist/xy/param.mjs +8 -0
  537. package/dist/xy/param.mjs.map +1 -0
  538. package/dist/xy/react/analyzeCommand.mjs +150 -0
  539. package/dist/xy/react/analyzeCommand.mjs.map +1 -0
  540. package/dist/xy/react/ejectCommand.mjs +150 -0
  541. package/dist/xy/react/ejectCommand.mjs.map +1 -0
  542. package/dist/xy/react/index.mjs +202 -0
  543. package/dist/xy/react/index.mjs.map +1 -0
  544. package/dist/xy/react/sitemapCommand.mjs +129 -0
  545. package/dist/xy/react/sitemapCommand.mjs.map +1 -0
  546. package/dist/xy/react/startCommand.mjs +150 -0
  547. package/dist/xy/react/startCommand.mjs.map +1 -0
  548. package/dist/xy/xy.mjs +8879 -0
  549. package/dist/xy/xy.mjs.map +1 -0
  550. package/dist/xy/xyParseOptions.mjs +117 -0
  551. package/dist/xy/xyParseOptions.mjs.map +1 -0
  552. package/dist/xy/yarn/index.mjs +188 -0
  553. package/dist/xy/yarn/index.mjs.map +1 -0
  554. package/dist/xy/yarn/upplugCommand.mjs +134 -0
  555. package/dist/xy/yarn/upplugCommand.mjs.map +1 -0
  556. package/dist/xy/yarn/upyarnCommand.mjs +129 -0
  557. package/dist/xy/yarn/upyarnCommand.mjs.map +1 -0
  558. package/dist/xy/yarn/yarn3OnlyCommand.mjs +70 -0
  559. package/dist/xy/yarn/yarn3OnlyCommand.mjs.map +1 -0
  560. package/package.json +119 -0
  561. package/templates/claude/CLAUDE-local.md +4 -0
  562. package/templates/claude/CLAUDE-project.md +4 -0
  563. package/templates/claude/commands/xy-build.md +7 -0
  564. package/templates/claude/commands/xy-clean.md +7 -0
  565. package/templates/claude/commands/xy-compile.md +7 -0
  566. package/templates/claude/commands/xy-cycle.md +7 -0
  567. package/templates/claude/commands/xy-dead.md +7 -0
  568. package/templates/claude/commands/xy-deplint.md +7 -0
  569. package/templates/claude/commands/xy-deps.md +24 -0
  570. package/templates/claude/commands/xy-dupdeps.md +7 -0
  571. package/templates/claude/commands/xy-fix.md +7 -0
  572. package/templates/claude/commands/xy-gen-docs.md +7 -0
  573. package/templates/claude/commands/xy-gitignore.md +7 -0
  574. package/templates/claude/commands/xy-gitlint.md +7 -0
  575. package/templates/claude/commands/xy-knip.md +7 -0
  576. package/templates/claude/commands/xy-license.md +7 -0
  577. package/templates/claude/commands/xy-lint-rules.md +44 -0
  578. package/templates/claude/commands/xy-lint.md +7 -0
  579. package/templates/claude/commands/xy-publint.md +7 -0
  580. package/templates/claude/commands/xy-rebuild.md +7 -0
  581. package/templates/claude/commands/xy-recompile.md +7 -0
  582. package/templates/claude/commands/xy-reinstall.md +7 -0
  583. package/templates/claude/commands/xy-relint.md +7 -0
  584. package/templates/claude/commands/xy-retest.md +7 -0
  585. package/templates/claude/commands/xy-sonar.md +7 -0
  586. package/templates/claude/commands/xy-test.md +7 -0
  587. package/templates/claude/commands/xy-up.md +9 -0
  588. package/templates/claude/rules/xylabs-architecture.md +8 -0
  589. package/templates/claude/rules/xylabs-git-workflow.md +7 -0
  590. package/templates/claude/rules/xylabs-naming.md +7 -0
  591. package/templates/claude/rules/xylabs-style.md +17 -0
  592. package/templates/claude/skills/xylabs-e2e-setup/SKILL.md +223 -0
  593. package/templates/claude/skills/xylabs-xy-cli/SKILL.md +236 -0
  594. package/templates/claude/skills/xylabs-xy-deplint-fix/SKILL.md +122 -0
  595. package/templates/gitignore/gitignore/template.gitignore +51 -0
  596. package/templates/gitignore/template.gitignore +51 -0
  597. package/templates/readme/README.body.md +25 -0
  598. package/templates/readme/README.template.md +22 -0
  599. package/templates/repo/cli/package/package.json.tmpl +63 -0
  600. package/templates/repo/cli/package/src/__packageName__.ts.tmpl +21 -0
  601. package/templates/repo/cli/package/src/actions/index.ts +1 -0
  602. package/templates/repo/cli/package/src/actions/printVersion.ts.tmpl +8 -0
  603. package/templates/repo/cli/package/src/bin/__packageName__.ts.tmpl +12 -0
  604. package/templates/repo/cli/package/src/commands/index.ts +1 -0
  605. package/templates/repo/cli/package/src/commands/versionCommand.ts.tmpl +11 -0
  606. package/templates/repo/cli/package/src/index.ts.tmpl +1 -0
  607. package/templates/repo/cli/package/tsconfig.build.json +25 -0
  608. package/templates/repo/cli/package/tsconfig.json +4 -0
  609. package/templates/repo/cli/package/tsup.config.ts +15 -0
  610. package/templates/repo/cli/package/xy.config.ts +3 -0
  611. package/templates/repo/cli/root/CLAUDE.md.tmpl +38 -0
  612. package/templates/repo/cli/root/cspell.json.tmpl +13 -0
  613. package/templates/repo/cli/root/eslint.config.ts +28 -0
  614. package/templates/repo/cli/root/github/workflows/build-pnpm.yml.tmpl +34 -0
  615. package/templates/repo/cli/root/github/workflows/build-yarn.yml.tmpl +32 -0
  616. package/templates/repo/cli/root/gitignore.tmpl +47 -0
  617. package/templates/repo/cli/root/knip.config.ts +16 -0
  618. package/templates/repo/cli/root/package.json.tmpl +54 -0
  619. package/templates/repo/cli/root/pnpm-workspace.yaml +2 -0
  620. package/templates/repo/cli/root/tsconfig.json +4 -0
  621. package/templates/repo/cli/root/vitest.config.ts +31 -0
  622. package/templates/repo/cli/root/xy.config.ts.tmpl +5 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/actions/package-lint.ts","../../src/pm/detectPackageManager.ts","../../src/pm/registry.ts","../../src/lib/initCwd.ts","../../src/lib/latestVersions.ts","../../src/lib/runInstall.ts","../../src/actions/package-lint-deps.ts"],"sourcesContent":["import {\n existsSync, readFileSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\nimport picomatch from 'picomatch'\nimport semver from 'semver'\n\nimport {\n INIT_CWD, latestVersions, runInstall,\n} from '../lib/index.ts'\nimport { detectPackageManager, getPackageManager } from '../pm/index.ts'\nimport {\n checkInternalDepVersions,\n checkInternalPeerVersions,\n checkVersionConsistency,\n checkWorkspaceProtocol,\n fixInternalDepVersions,\n fixInternalPeerVersions,\n fixVersionConsistency,\n fixWorkspaceProtocol,\n} from './package-lint-deps.ts'\n\nexport interface LintResult {\n errors: string[]\n fixable: string[]\n warnings: string[]\n}\n\nfunction emptyResult(): LintResult {\n return {\n errors: [], fixable: [], warnings: [],\n }\n}\n\nfunction readRootPackageJson(cwd: string): Record<string, unknown> {\n const raw = readFileSync(PATH.resolve(cwd, 'package.json'), 'utf8')\n return JSON.parse(raw) as Record<string, unknown>\n}\n\nfunction writeRootPackageJson(cwd: string, pkg: Record<string, unknown>) {\n const path = PATH.resolve(cwd, 'package.json')\n writeFileSync(path, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n}\n\nfunction readPnpmWorkspaceGlobs(cwd: string): string[] | undefined {\n const wsPath = PATH.resolve(cwd, 'pnpm-workspace.yaml')\n if (!existsSync(wsPath)) return undefined\n const raw = readFileSync(wsPath, 'utf8')\n const globs: string[] = []\n let inPackages = false\n for (const line of raw.split('\\n')) {\n if (/^packages\\s*:/.test(line)) {\n inPackages = true\n continue\n }\n if (inPackages) {\n const match = /^\\s+-\\s+['\"]?([^'\"]+)['\"]?\\s*$/.exec(line)\n if (match) {\n globs.push(match[1])\n } else if (/^\\S/.test(line) && line.trim() !== '') {\n break\n }\n }\n }\n return globs.length > 0 ? globs : undefined\n}\n\nfunction isMonorepo(pkg: Record<string, unknown>, cwd: string): boolean {\n const workspaces = pkg.workspaces\n if (Array.isArray(workspaces) && workspaces.length > 0) return true\n return readPnpmWorkspaceGlobs(cwd) !== undefined\n}\n\nfunction checkPackagesFolder(workspaces: { location: string; name: string }[]): LintResult {\n const result = emptyResult()\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n if (!location.startsWith('packages/') && !location.startsWith('packages\\\\')) {\n result.errors.push(`${name} (${location}) is not inside a packages/ folder`)\n }\n }\n\n return result\n}\n\nfunction checkRootPrivate(pkg: Record<string, unknown>): LintResult {\n const result = emptyResult()\n\n if (!pkg.private) {\n result.fixable.push('Root package.json must be private to prevent accidental publishing')\n }\n\n return result\n}\n\nfunction fixRootPrivate(cwd: string, pkg: Record<string, unknown>) {\n pkg.private = true\n writeRootPackageJson(cwd, pkg)\n console.log(chalk.green(' ✔ Fixed: set \"private\": true in root package.json'))\n}\n\nfunction checkNoPublishConfigOnPrivate(pkg: Record<string, unknown>): LintResult {\n const result = emptyResult()\n\n if (pkg.private && pkg.publishConfig) {\n result.fixable.push('Root package.json has publishConfig but is private — publishConfig is unnecessary')\n }\n\n return result\n}\n\nfunction fixNoPublishConfigOnPrivate(cwd: string, pkg: Record<string, unknown>) {\n delete pkg.publishConfig\n writeRootPackageJson(cwd, pkg)\n console.log(chalk.green(' ✔ Fixed: removed publishConfig from private root package.json'))\n}\n\nfunction checkNoPackageManagerInWorkspaces(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const raw = readFileSync(pkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n if (pkg.packageManager) {\n result.fixable.push(`${name} (${location}) has a packageManager field — only the root should define this`)\n }\n } catch {\n // skip unreadable packages\n }\n }\n\n return result\n}\n\nfunction fixNoPackageManagerInWorkspaces(cwd: string, _pkg: Record<string, unknown>, workspaces: { location: string; name: string }[]) {\n for (const { location } of workspaces) {\n if (location === '.') continue\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const raw = readFileSync(pkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n if (pkg.packageManager) {\n delete pkg.packageManager\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(` ✔ Fixed: removed packageManager from ${location}/package.json`))\n }\n } catch {\n // skip unreadable packages\n }\n }\n}\n\nfunction checkWorkspacesFieldPlacement(\n cwd: string,\n pm: 'pnpm' | 'yarn',\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n for (const { location, name } of workspaces) {\n // For pnpm: no package should have workspaces (including root)\n // For yarn: only root should have workspaces\n if (pm === 'pnpm' ? true : location !== '.') {\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n if (pkg.workspaces) {\n const label = location === '.' ? 'Root' : `${name} (${location})`\n const reason = pm === 'pnpm'\n ? 'pnpm uses pnpm-workspace.yaml instead'\n : 'only the root should define workspaces'\n result.fixable.push(`${label} has a workspaces field — ${reason}`)\n }\n } catch {\n // skip unreadable packages\n }\n }\n }\n\n return result\n}\n\nfunction fixWorkspacesFieldPlacement(\n cwd: string,\n pm: 'pnpm' | 'yarn',\n workspaces: { location: string; name: string }[],\n): void {\n for (const { location } of workspaces) {\n if (pm === 'pnpm' ? true : location !== '.') {\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n if (pkg.workspaces) {\n delete pkg.workspaces\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n const label = location === '.' ? 'root' : location\n console.log(chalk.green(` ✔ Fixed: removed workspaces from ${label}/package.json`))\n }\n } catch {\n // skip unreadable packages\n }\n }\n }\n}\n\nfunction checkWorkspaceGlobCoverage(\n pkg: Record<string, unknown>,\n cwd: string,\n pm: 'pnpm' | 'yarn',\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n const globs = pm === 'pnpm'\n ? readPnpmWorkspaceGlobs(cwd) ?? []\n : (Array.isArray(pkg.workspaces) ? pkg.workspaces as string[] : [])\n\n if (globs.length === 0) {\n const source = pm === 'pnpm' ? 'pnpm-workspace.yaml' : 'root package.json workspaces'\n result.errors.push(`No workspace globs found in ${source}`)\n return result\n }\n\n const matchers = globs.map(glob => picomatch(glob))\n const isMatch = (location: string) => matchers.some(m => m(location))\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n if (!isMatch(location)) {\n const source = pm === 'pnpm' ? 'pnpm-workspace.yaml' : 'root package.json workspaces'\n result.errors.push(`${name} (${location}) is not matched by any glob in ${source}`)\n }\n }\n\n return result\n}\n\nfunction logResults(label: string, result: LintResult, fix: boolean): { errors: number; fixed: number } {\n let errors = 0\n let fixed = 0\n\n for (const error of result.errors) {\n console.log(chalk.red(` ✗ ${error}`))\n errors++\n }\n for (const fixable of result.fixable) {\n if (fix) {\n fixed++\n } else {\n console.log(chalk.red(` ✗ ${fixable} (fixable)`))\n errors++\n }\n }\n for (const warning of result.warnings) {\n console.log(chalk.yellow(` ⚠ ${warning}`))\n }\n if (errors === 0 && fixed === 0 && result.warnings.length === 0) {\n console.log(chalk.green(` ✓ ${label}`))\n }\n\n return { errors, fixed }\n}\n\ninterface CheckEntry {\n check: () => LintResult\n fix?: (cwd: string, pkg: Record<string, unknown>) => void\n label: string\n}\n\nfunction runChecks(entries: CheckEntry[], cwd: string, pkg: Record<string, unknown>, fix: boolean): { errors: number; fixed: number } {\n let totalErrors = 0\n let totalFixed = 0\n\n for (const entry of entries) {\n const result = entry.check()\n const log = logResults(entry.label, result, fix)\n if (fix && entry.fix && result.fixable.length > 0) {\n entry.fix(cwd, pkg)\n }\n totalErrors += log.errors\n totalFixed += log.fixed\n }\n\n return { errors: totalErrors, fixed: totalFixed }\n}\n\nfunction checkVoltaOnlyInRoot(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n if (pkg.volta) {\n result.fixable.push(`${name} (${location}) has a volta field — only the root should define this`)\n }\n } catch {\n // skip unreadable packages\n }\n }\n\n return result\n}\n\nfunction fixVoltaOnlyInRoot(cwd: string, _pkg: Record<string, unknown>, workspaces: { location: string; name: string }[]) {\n for (const { location } of workspaces) {\n if (location === '.') continue\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const raw = readFileSync(pkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n if (pkg.volta) {\n delete pkg.volta\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(` ✔ Fixed: removed volta from ${location}/package.json`))\n }\n } catch {\n // skip unreadable packages\n }\n }\n}\n\nfunction isTerminalPackage(pkg: Record<string, unknown>): boolean {\n return pkg.private === true\n}\n\nfunction checkEnginesOnlyInNonTerminal(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n // Check root (always terminal/private) — should not have engines\n const rootPkg = JSON.parse(readFileSync(PATH.resolve(cwd, 'package.json'), 'utf8')) as Record<string, unknown>\n if (rootPkg.engines) {\n result.fixable.push('Root package.json has engines — terminal packages should not declare engines (use volta instead)')\n }\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n if (isTerminalPackage(pkg) && pkg.engines) {\n result.fixable.push(`${name} (${location}) is terminal (private) but has engines — terminal packages should not declare engines`)\n }\n if (!isTerminalPackage(pkg) && !pkg.engines) {\n result.fixable.push(`${name} (${location}) is a library but has no engines field`)\n }\n } catch {\n // skip unreadable packages\n }\n }\n\n return result\n}\n\nfunction fixEnginesOnlyInNonTerminal(cwd: string, _pkg: Record<string, unknown>, workspaces: { location: string; name: string }[]) {\n // Remove engines from root\n const rootPath = PATH.resolve(cwd, 'package.json')\n const rootRaw = readFileSync(rootPath, 'utf8')\n const rootPkg = JSON.parse(rootRaw) as Record<string, unknown>\n if (rootPkg.engines) {\n delete rootPkg.engines\n writeFileSync(rootPath, `${JSON.stringify(rootPkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(' ✔ Fixed: removed engines from root package.json'))\n }\n\n // Remove engines from terminal workspace packages, add engines to libraries missing them\n const enginesTemplate = resolveEnginesTemplate(cwd, workspaces)\n for (const { location } of workspaces) {\n if (location === '.') continue\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const raw = readFileSync(pkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n if (isTerminalPackage(pkg) && pkg.engines) {\n delete pkg.engines\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(` ✔ Fixed: removed engines from ${location}/package.json`))\n }\n if (!isTerminalPackage(pkg) && !pkg.engines && enginesTemplate) {\n pkg.engines = enginesTemplate\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(` ✔ Fixed: added engines to ${location}/package.json`))\n }\n } catch {\n // skip unreadable packages\n }\n }\n}\n\nfunction resolveEnginesTemplate(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): Record<string, string> | undefined {\n // Use engines from the first sibling library package that has one\n for (const { location } of workspaces) {\n if (location === '.') continue\n try {\n const pkg = JSON.parse(readFileSync(PATH.resolve(cwd, location, 'package.json'), 'utf8')) as Record<string, unknown>\n if (!isTerminalPackage(pkg) && pkg.engines) {\n return pkg.engines as Record<string, string>\n }\n } catch {\n // skip\n }\n }\n return undefined\n}\n\nfunction checkVersionsIncludeLts(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n const toolVersions: Record<string, string> = {\n node: latestVersions.node,\n npm: latestVersions.npm,\n pnpm: latestVersions.pnpm,\n yarn: latestVersions.yarn,\n }\n\n // Check engines in all non-terminal packages\n for (const { location, name } of workspaces) {\n const pkgPath = location === '.'\n ? PATH.resolve(cwd, 'package.json')\n : PATH.resolve(cwd, location, 'package.json')\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n const label = location === '.' ? 'root' : `${name} (${location})`\n\n // Check engines ranges\n const engines = pkg.engines as Record<string, string> | undefined\n if (engines) {\n for (const [tool, range] of Object.entries(engines)) {\n const latest = toolVersions[tool]\n if (latest && !semver.satisfies(latest, range)) {\n result.errors.push(\n `${label} engines.${tool} \"${range}\" does not include latest ${tool === 'node' ? 'LTS ' : ''}version ${latest}`,\n )\n }\n }\n }\n\n // Check volta pins\n const volta = pkg.volta as Record<string, string> | undefined\n if (volta) {\n for (const [tool, pinnedVersion] of Object.entries(volta)) {\n const latest = toolVersions[tool]\n if (latest && semver.lt(pinnedVersion, latest)) {\n result.warnings.push(\n `${label} volta.${tool} \"${pinnedVersion}\" is older than latest ${tool === 'node' ? 'LTS ' : ''}version ${latest}`,\n )\n }\n }\n }\n } catch {\n // skip unreadable packages\n }\n }\n\n return result\n}\n\nfunction logSummary(errors: number, fixed: number) {\n if (fixed > 0) {\n console.log(chalk.green(`\\n Fixed ${fixed} issue(s)`))\n }\n if (errors > 0) {\n console.log(chalk.red(`\\n ${errors} error(s) found`))\n } else if (fixed === 0) {\n console.log(chalk.green('\\n All checks passed'))\n }\n}\n\nexport function packageLintMonorepo(fix = false): number {\n const cwd = INIT_CWD()\n\n let pkg: Record<string, unknown>\n try {\n pkg = readRootPackageJson(cwd)\n } catch {\n console.error(chalk.red('Could not read package.json'))\n return 1\n }\n\n if (!isMonorepo(pkg, cwd)) {\n console.log(chalk.gray('Not a monorepo — skipping repo lint checks'))\n return 0\n }\n\n console.log(chalk.green('Repo Lint'))\n\n const pm = detectPackageManager()\n const workspaces = getPackageManager().listWorkspaces()\n\n const internalDepCheck: CheckEntry = pm === 'pnpm'\n ? {\n check: () => checkWorkspaceProtocol(cwd, workspaces),\n fix: () => fixWorkspaceProtocol(cwd, workspaces),\n label: 'Internal deps/devDeps use workspace: protocol',\n }\n : {\n check: () => checkInternalDepVersions(cwd, workspaces),\n fix: () => fixInternalDepVersions(cwd, workspaces),\n label: 'Internal deps/devDeps use correct version ranges',\n }\n\n const checks: CheckEntry[] = [\n {\n check: () => checkRootPrivate(pkg), fix: fixRootPrivate, label: 'Root package is private',\n },\n {\n check: () => checkNoPublishConfigOnPrivate(pkg), fix: fixNoPublishConfigOnPrivate, label: 'No publishConfig on private root',\n },\n { check: () => checkPackagesFolder(workspaces), label: 'All packages are in packages/ folder' },\n {\n check: () => checkWorkspacesFieldPlacement(cwd, pm, workspaces),\n fix: () => fixWorkspacesFieldPlacement(cwd, pm, workspaces),\n label: pm === 'pnpm' ? 'No workspaces field in package.json (use pnpm-workspace.yaml)' : 'Workspaces field only in root package.json',\n },\n {\n check: () => checkWorkspaceGlobCoverage(pkg, cwd, pm, workspaces),\n label: 'Workspace globs cover all packages',\n },\n {\n check: () => checkNoPackageManagerInWorkspaces(cwd, workspaces),\n fix: () => fixNoPackageManagerInWorkspaces(cwd, pkg, workspaces),\n label: 'No packageManager in workspace packages',\n },\n {\n check: () => checkVoltaOnlyInRoot(cwd, workspaces),\n fix: () => fixVoltaOnlyInRoot(cwd, pkg, workspaces),\n label: 'Volta only in root package.json',\n },\n {\n check: () => checkEnginesOnlyInNonTerminal(cwd, workspaces),\n fix: () => fixEnginesOnlyInNonTerminal(cwd, pkg, workspaces),\n label: 'Engines only in non-terminal (library) packages',\n },\n {\n check: () => checkVersionsIncludeLts(cwd, workspaces),\n label: 'Engine/volta versions include latest LTS',\n },\n {\n check: () => checkVersionConsistency(cwd, pkg, workspaces),\n fix: () => fixVersionConsistency(cwd, pkg, writeRootPackageJson, workspaces),\n label: 'Consistent versions across packages',\n },\n internalDepCheck,\n {\n check: () => checkInternalPeerVersions(cwd, workspaces),\n fix: () => fixInternalPeerVersions(cwd, workspaces),\n label: 'Internal peerDeps use semver ranges (not workspace: protocol)',\n },\n ]\n\n const { errors, fixed } = runChecks(checks, cwd, pkg, fix)\n logSummary(errors, fixed)\n\n if (fix && fixed > 0) {\n runInstall()\n }\n\n return errors > 0 ? 1 : 0\n}\n","import { existsSync } from 'node:fs'\n\nexport type PackageManagerName = 'pnpm' | 'yarn'\n\nexport function detectPackageManager(): PackageManagerName {\n if (existsSync('pnpm-lock.yaml') || existsSync('pnpm-workspace.yaml')) return 'pnpm'\n return 'yarn'\n}\n","import type { PackageManagerName } from './detectPackageManager.ts'\nimport { detectPackageManager } from './detectPackageManager.ts'\nimport type { PackageManager } from './PackageManager.ts'\n\nconst implementations = new Map<PackageManagerName, PackageManager>()\n\nexport function registerPackageManager(pm: PackageManager): void {\n implementations.set(pm.name, pm)\n}\n\nexport function getPackageManager(name?: PackageManagerName): PackageManager {\n const pmName = name ?? detectPackageManager()\n const pm = implementations.get(pmName)\n if (!pm) {\n throw new Error(\n `No package manager implementation registered for \"${pmName}\". `\n + 'Ensure registerPackageManager() has been called before getPackageManager().',\n )\n }\n return pm\n}\n","export function INIT_CWD(): string {\n return process.env.INIT_CWD ?? process.cwd()\n}\n","// Auto-generated — run `yarn update-latest-versions` to refresh\n// Source: nodejs.org/dist/index.json, npm registry\n\nexport const latestVersions = {\n node: '24.14.1',\n nodeLtsCodename: 'Krypton',\n npm: '11.11.0',\n pnpm: '10.33.0',\n yarn: '4.13.0',\n} as const\n","import { spawnSync } from 'node:child_process'\n\nimport chalk from 'chalk'\n\nimport { detectPackageManager } from '../pm/index.ts'\n\nexport function runInstall(cwd?: string): boolean {\n const pm = detectPackageManager()\n console.log(chalk.gray(`Running ${pm} install...`))\n const result = spawnSync(pm, ['install'], {\n cwd,\n stdio: 'inherit',\n })\n if (result.status !== 0) {\n console.warn(chalk.yellow(`${pm} install failed`))\n return false\n }\n console.log(chalk.green('Dependencies installed'))\n return true\n}\n","import { readFileSync, writeFileSync } from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\nimport semver from 'semver'\n\nimport { INIT_CWD } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\nimport type { LintResult } from './package-lint.ts'\n\nfunction readWorkspacePackageJson(cwd: string, location: string): Record<string, unknown> | undefined {\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n return JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n } catch {\n return undefined\n }\n}\n\nfunction writeWorkspacePackageJson(cwd: string, location: string, pkg: Record<string, unknown>) {\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n}\n\nfunction buildWorkspaceVersionMap(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): Map<string, string> {\n const map = new Map<string, string>()\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n const version = pkg.version as string | undefined\n if (version) map.set(name, version)\n }\n return map\n}\n\n/**\n * Derives the expected peerDep range from the workspace protocol used in\n * the matching devDependency and the current version of the target package.\n *\n * workspace:~ + version 7.6.21 → ~7.6\n * workspace:^ + version 7.6.21 → ^7\n *\n * Falls back to ~major.minor if no matching devDep is found.\n */\nfunction expectedPeerRange(devDepVersion: string | undefined, targetVersion: string): string {\n const parsed = semver.parse(targetVersion)\n if (!parsed) return `~${targetVersion}`\n\n if (devDepVersion === 'workspace:^') {\n return `^${parsed.major}`\n }\n return `~${parsed.major}.${parsed.minor}`\n}\n\n// --- Version consistency checks ---\n\nexport function checkVersionConsistency(\n cwd: string,\n rootPkg: Record<string, unknown>,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result: LintResult = {\n errors: [], fixable: [], warnings: [],\n }\n\n if (rootPkg.version !== undefined) {\n result.fixable.push('Root package.json should not have a \"version\" field in a monorepo')\n }\n\n const versions = new Map<string, string>()\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n const version = pkg.version as string | undefined\n if (version) {\n versions.set(name, version)\n } else {\n result.errors.push(`${name} (${location}) is missing a \"version\" field`)\n }\n }\n\n const uniqueVersions = new Set(versions.values())\n if (uniqueVersions.size > 1) {\n const versionList = [...uniqueVersions].toSorted(semver.rcompare)\n for (const [name, version] of versions) {\n if (version !== versionList[0]) {\n result.fixable.push(`${name} has version ${version} (expected ${versionList[0]})`)\n }\n }\n }\n\n return result\n}\n\nexport function fixVersionConsistency(\n cwd: string,\n rootPkg: Record<string, unknown>,\n writeRootPackageJson: (cwd: string, pkg: Record<string, unknown>) => void,\n workspaces: { location: string; name: string }[],\n): void {\n if (rootPkg.version !== undefined) {\n delete rootPkg.version\n writeRootPackageJson(cwd, rootPkg)\n console.log(chalk.green(' ✔ Fixed: removed \"version\" from root package.json'))\n }\n\n const versions: string[] = []\n for (const { location } of workspaces) {\n if (location === '.') continue\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n const version = pkg.version as string | undefined\n if (version && semver.valid(version)) {\n versions.push(version)\n }\n }\n\n if (versions.length === 0) return\n\n const highest = versions.toSorted(semver.rcompare)[0]\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n if (pkg.version !== highest) {\n pkg.version = highest\n writeWorkspacePackageJson(cwd, location, pkg)\n console.log(chalk.green(` ✔ Fixed: set version to ${highest} in ${name} (${location})`))\n }\n }\n}\n\n// --- Internal dependency version checks (dependencies and devDependencies only) ---\n\nfunction expectedDepVersion(targetVersion: string): string {\n const parsed = semver.parse(targetVersion)\n if (!parsed) return `~${targetVersion}`\n return `~${targetVersion}`\n}\n\nexport function checkInternalDepVersions(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result: LintResult = {\n errors: [], fixable: [], warnings: [],\n }\n const workspaceVersions = buildWorkspaceVersionMap(cwd, workspaces)\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n\n for (const depField of ['dependencies', 'devDependencies'] as const) {\n const deps = pkg[depField] as Record<string, string> | undefined\n if (!deps) continue\n for (const [dep, version] of Object.entries(deps)) {\n const targetVersion = workspaceVersions.get(dep)\n if (!targetVersion) continue\n const expected = expectedDepVersion(targetVersion)\n if (version.startsWith('workspace:')) {\n result.fixable.push(\n `${name} (${location}) ${depField}.${dep} is \"${version}\" — should be \"${expected}\" (not workspace: protocol)`,\n )\n } else if (version !== expected) {\n result.fixable.push(\n `${name} (${location}) ${depField}.${dep} is \"${version}\" — should be \"${expected}\"`,\n )\n }\n }\n }\n }\n\n return result\n}\n\nexport function fixInternalDepVersions(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): void {\n const workspaceVersions = buildWorkspaceVersionMap(cwd, workspaces)\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n let modified = false\n\n for (const depField of ['dependencies', 'devDependencies'] as const) {\n const deps = pkg[depField] as Record<string, string> | undefined\n if (!deps) continue\n for (const [dep, version] of Object.entries(deps)) {\n const targetVersion = workspaceVersions.get(dep)\n if (!targetVersion) continue\n const expected = expectedDepVersion(targetVersion)\n if (version !== expected) {\n deps[dep] = expected\n console.log(chalk.green(` ✔ Fixed: set ${depField}.${dep} to \"${expected}\" in ${name} (${location})`))\n modified = true\n }\n }\n }\n\n if (modified) {\n writeWorkspacePackageJson(cwd, location, pkg)\n }\n }\n}\n\n// --- Workspace protocol checks (pnpm — dependencies and devDependencies only) ---\n\nexport function checkWorkspaceProtocol(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result: LintResult = {\n errors: [], fixable: [], warnings: [],\n }\n const workspaceNames = new Set(workspaces.map(w => w.name))\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n\n for (const depField of ['dependencies', 'devDependencies'] as const) {\n const deps = pkg[depField] as Record<string, string> | undefined\n if (!deps) continue\n for (const [dep, version] of Object.entries(deps)) {\n if (!workspaceNames.has(dep)) continue\n if (!version.startsWith('workspace:')) {\n result.fixable.push(\n `${name} (${location}) ${depField}.${dep} is \"${version}\" — should use workspace: protocol`,\n )\n }\n }\n }\n }\n\n return result\n}\n\nexport function fixWorkspaceProtocol(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): void {\n const workspaceNames = new Set(workspaces.map(w => w.name))\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n let modified = false\n\n for (const depField of ['dependencies', 'devDependencies'] as const) {\n const deps = pkg[depField] as Record<string, string> | undefined\n if (!deps) continue\n for (const [dep, version] of Object.entries(deps)) {\n if (!workspaceNames.has(dep)) continue\n if (!version.startsWith('workspace:')) {\n deps[dep] = 'workspace:~'\n console.log(chalk.green(` ✔ Fixed: set ${depField}.${dep} to \"workspace:~\" in ${name} (${location})`))\n modified = true\n }\n }\n }\n\n if (modified) {\n writeWorkspacePackageJson(cwd, location, pkg)\n }\n }\n}\n\n// --- Internal peerDependency version checks ---\n\nexport function checkInternalPeerVersions(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result: LintResult = {\n errors: [], fixable: [], warnings: [],\n }\n const workspaceVersions = buildWorkspaceVersionMap(cwd, workspaces)\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n\n const peerDeps = pkg.peerDependencies as Record<string, string> | undefined\n if (!peerDeps) continue\n const devDeps = pkg.devDependencies as Record<string, string> | undefined\n\n for (const [dep, version] of Object.entries(peerDeps)) {\n const targetVersion = workspaceVersions.get(dep)\n if (!targetVersion) continue\n\n if (version.startsWith('workspace:')) {\n const expected = expectedPeerRange(devDeps?.[dep], targetVersion)\n result.fixable.push(\n `${name} (${location}) peerDependencies.${dep} uses workspace: protocol — should be \"${expected}\"`,\n )\n continue\n }\n\n const expected = expectedPeerRange(devDeps?.[dep], targetVersion)\n if (version !== expected && !semver.satisfies(targetVersion, version)) {\n result.fixable.push(\n `${name} (${location}) peerDependencies.${dep} is \"${version}\" — current version ${targetVersion} is not satisfied; expected \"${expected}\"`,\n )\n }\n }\n }\n\n return result\n}\n\nexport function fixInternalPeerVersions(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): void {\n const workspaceVersions = buildWorkspaceVersionMap(cwd, workspaces)\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n\n const peerDeps = pkg.peerDependencies as Record<string, string> | undefined\n if (!peerDeps) continue\n const devDeps = pkg.devDependencies as Record<string, string> | undefined\n let modified = false\n\n for (const [dep, version] of Object.entries(peerDeps)) {\n const targetVersion = workspaceVersions.get(dep)\n if (!targetVersion) continue\n\n const expected = expectedPeerRange(devDeps?.[dep], targetVersion)\n if (version !== expected) {\n peerDeps[dep] = expected\n console.log(chalk.green(` ✔ Fixed: set peerDependencies.${dep} to \"${expected}\" in ${name} (${location})`))\n modified = true\n }\n }\n\n if (modified) {\n writeWorkspacePackageJson(cwd, location, pkg)\n }\n }\n}\n\n/**\n * Syncs all internal peerDependency versions to match current workspace versions.\n * Called by xy publish to ensure peerDeps are correct before publishing.\n */\nexport function syncInternalPeerVersions(): number {\n const cwd = INIT_CWD()\n const workspaces = getPackageManager().listWorkspaces()\n const workspaceVersions = buildWorkspaceVersionMap(cwd, workspaces)\n let updated = 0\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n\n const peerDeps = pkg.peerDependencies as Record<string, string> | undefined\n if (!peerDeps) continue\n const devDeps = pkg.devDependencies as Record<string, string> | undefined\n let modified = false\n\n for (const [dep, version] of Object.entries(peerDeps)) {\n const targetVersion = workspaceVersions.get(dep)\n if (!targetVersion) continue\n\n const expected = expectedPeerRange(devDeps?.[dep], targetVersion)\n if (version !== expected) {\n peerDeps[dep] = expected\n console.log(chalk.green(`Publish: updated ${name} peerDependencies.${dep} to \"${expected}\"`))\n modified = true\n updated++\n }\n }\n\n if (modified) {\n writeWorkspacePackageJson(cwd, location, pkg)\n }\n }\n\n return updated\n}\n\n/**\n * Reads the shared monorepo version from the first non-root workspace\n * and logs it. Call at the end of deploy to report the new version.\n */\nexport function logMonorepoVersion(): void {\n const cwd = INIT_CWD()\n const workspaces = getPackageManager().listWorkspaces()\n\n for (const { location } of workspaces) {\n if (location === '.') continue\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n const version = pkg.version as string | undefined\n if (version) {\n console.log(chalk.green(`\\nDeployed version: ${chalk.bold(version)}`))\n return\n }\n }\n}\n"],"mappings":"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","names":["existsSync","readFileSync","writeFileSync","PATH","chalk","semver","chalk","writeRootPackageJson","chalk","expected","readFileSync","PATH","writeFileSync","existsSync","chalk","semver"]}
@@ -0,0 +1,144 @@
1
+ // src/actions/packman/clean.ts
2
+ import {
3
+ existsSync as existsSync2,
4
+ rmSync,
5
+ writeFileSync
6
+ } from "fs";
7
+ import PATH2 from "path";
8
+ import chalk2 from "chalk";
9
+
10
+ // src/actions/packman/convert.ts
11
+ import {
12
+ existsSync,
13
+ readdirSync,
14
+ readFileSync,
15
+ statSync
16
+ } from "fs";
17
+ import PATH from "path";
18
+ import chalk from "chalk";
19
+ function detectCurrentPM(cwd) {
20
+ if (existsSync(PATH.join(cwd, "pnpm-lock.yaml")) || existsSync(PATH.join(cwd, "pnpm-workspace.yaml"))) {
21
+ return "pnpm";
22
+ }
23
+ if (existsSync(PATH.join(cwd, "yarn.lock")) || existsSync(PATH.join(cwd, ".yarnrc.yml"))) {
24
+ return "yarn";
25
+ }
26
+ return "unknown";
27
+ }
28
+ function findWorkspacePackagePaths(cwd) {
29
+ const pkgPath = PATH.join(cwd, "package.json");
30
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
31
+ const patterns = pkg.workspaces ?? [];
32
+ if (patterns.length === 0) {
33
+ const wsPath = PATH.join(cwd, "pnpm-workspace.yaml");
34
+ if (existsSync(wsPath)) {
35
+ const content = readFileSync(wsPath, "utf8");
36
+ const lines = content.split("\n");
37
+ let inPackages = false;
38
+ for (const line of lines) {
39
+ if (line.trim() === "packages:") {
40
+ inPackages = true;
41
+ continue;
42
+ }
43
+ if (inPackages && /^\s+-\s+/.test(line)) {
44
+ const pattern = line.replace(/^\s+-\s+/, "").replaceAll(/['"]/g, "").trim();
45
+ if (pattern) patterns.push(pattern);
46
+ } else if (inPackages && !/^\s/.test(line) && line.trim()) {
47
+ inPackages = false;
48
+ }
49
+ }
50
+ }
51
+ }
52
+ const dirs = [];
53
+ for (const pattern of patterns) {
54
+ const resolved = resolveWorkspaceGlob(cwd, pattern);
55
+ dirs.push(...resolved);
56
+ }
57
+ return dirs;
58
+ }
59
+ function resolveWorkspaceGlob(cwd, pattern) {
60
+ const parts = pattern.split("/");
61
+ return walkGlob(cwd, parts, "");
62
+ }
63
+ function walkGlob(basePath, parts, currentPath) {
64
+ if (parts.length === 0) {
65
+ const fullPath = PATH.join(basePath, currentPath);
66
+ if (existsSync(PATH.join(fullPath, "package.json"))) {
67
+ return [currentPath];
68
+ }
69
+ return [];
70
+ }
71
+ const [part, ...rest] = parts;
72
+ const dirPath = PATH.join(basePath, currentPath);
73
+ if (!existsSync(dirPath) || !statSync(dirPath).isDirectory()) {
74
+ return [];
75
+ }
76
+ if (part === "*" || part === "**") {
77
+ const entries = readdirSync(dirPath, { withFileTypes: true }).filter((e) => e.isDirectory() && !e.name.startsWith(".") && e.name !== "node_modules" && e.name !== "dist");
78
+ const results = [];
79
+ if (part === "**") {
80
+ results.push(...walkGlob(basePath, rest, currentPath));
81
+ }
82
+ for (const entry of entries) {
83
+ const subPath2 = currentPath ? `${currentPath}/${entry.name}` : entry.name;
84
+ if (part === "**") {
85
+ results.push(
86
+ ...walkGlob(basePath, rest, subPath2),
87
+ ...walkGlob(basePath, parts, subPath2)
88
+ );
89
+ } else {
90
+ results.push(...walkGlob(basePath, rest, subPath2));
91
+ }
92
+ }
93
+ return results;
94
+ }
95
+ const subPath = currentPath ? `${currentPath}/${part}` : part;
96
+ return walkGlob(basePath, rest, subPath);
97
+ }
98
+
99
+ // src/actions/packman/clean.ts
100
+ function removeNodeModules(dir, verbose) {
101
+ const nmPath = PATH2.join(dir, "node_modules");
102
+ if (existsSync2(nmPath)) {
103
+ if (verbose) console.log(chalk2.gray(`Removing ${nmPath}`));
104
+ rmSync(nmPath, { force: true, recursive: true });
105
+ return true;
106
+ }
107
+ return false;
108
+ }
109
+ function packmanClean({ verbose }) {
110
+ const cwd = process.cwd();
111
+ const pm = detectCurrentPM(cwd);
112
+ if (pm === "unknown") {
113
+ console.error(chalk2.red("Could not detect current package manager. No yarn.lock or pnpm-lock.yaml found."));
114
+ return 1;
115
+ }
116
+ console.log(chalk2.blue(`Detected package manager: ${pm}`));
117
+ let removedCount = 0;
118
+ if (removeNodeModules(cwd, verbose)) removedCount++;
119
+ const workspacePaths = findWorkspacePackagePaths(cwd);
120
+ for (const wsPath of workspacePaths) {
121
+ const fullPath = PATH2.join(cwd, wsPath);
122
+ if (removeNodeModules(fullPath, verbose)) removedCount++;
123
+ }
124
+ console.log(chalk2.green(`Removed ${removedCount} node_modules folder${removedCount === 1 ? "" : "s"}`));
125
+ if (pm === "yarn") {
126
+ const lockPath = PATH2.join(cwd, "yarn.lock");
127
+ if (existsSync2(lockPath)) {
128
+ writeFileSync(lockPath, "");
129
+ console.log(chalk2.green("Truncated yarn.lock"));
130
+ }
131
+ } else if (pm === "pnpm") {
132
+ const lockPath = PATH2.join(cwd, "pnpm-lock.yaml");
133
+ if (existsSync2(lockPath)) {
134
+ rmSync(lockPath);
135
+ console.log(chalk2.green("Deleted pnpm-lock.yaml"));
136
+ }
137
+ }
138
+ console.log(chalk2.green("Ready for a clean install"));
139
+ return 0;
140
+ }
141
+ export {
142
+ packmanClean
143
+ };
144
+ //# sourceMappingURL=clean.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/actions/packman/clean.ts","../../../src/actions/packman/convert.ts"],"sourcesContent":["import {\n existsSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { detectCurrentPM, findWorkspacePackagePaths } from './convert.ts'\n\nexport interface PackmanCleanParams {\n verbose?: boolean\n}\n\nfunction removeNodeModules(dir: string, verbose?: boolean): boolean {\n const nmPath = PATH.join(dir, 'node_modules')\n if (existsSync(nmPath)) {\n if (verbose) console.log(chalk.gray(`Removing ${nmPath}`))\n rmSync(nmPath, { force: true, recursive: true })\n return true\n }\n return false\n}\n\nexport function packmanClean({ verbose }: PackmanCleanParams): number {\n const cwd = process.cwd()\n const pm = detectCurrentPM(cwd)\n\n if (pm === 'unknown') {\n console.error(chalk.red('Could not detect current package manager. No yarn.lock or pnpm-lock.yaml found.'))\n return 1\n }\n\n console.log(chalk.blue(`Detected package manager: ${pm}`))\n\n // Remove node_modules from root and all workspace packages\n let removedCount = 0\n\n if (removeNodeModules(cwd, verbose)) removedCount++\n\n const workspacePaths = findWorkspacePackagePaths(cwd)\n for (const wsPath of workspacePaths) {\n const fullPath = PATH.join(cwd, wsPath)\n if (removeNodeModules(fullPath, verbose)) removedCount++\n }\n\n console.log(chalk.green(`Removed ${removedCount} node_modules folder${removedCount === 1 ? '' : 's'}`))\n\n // Handle lock files\n if (pm === 'yarn') {\n const lockPath = PATH.join(cwd, 'yarn.lock')\n if (existsSync(lockPath)) {\n writeFileSync(lockPath, '')\n console.log(chalk.green('Truncated yarn.lock'))\n }\n } else if (pm === 'pnpm') {\n const lockPath = PATH.join(cwd, 'pnpm-lock.yaml')\n if (existsSync(lockPath)) {\n rmSync(lockPath)\n console.log(chalk.green('Deleted pnpm-lock.yaml'))\n }\n }\n\n console.log(chalk.green('Ready for a clean install'))\n return 0\n}\n","import {\n existsSync, readdirSync, readFileSync, statSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { packageLintMonorepo } from '../package-lint.ts'\nimport { convertToPnpm } from './convertToPnpm.ts'\nimport { convertToYarn } from './convertToYarn.ts'\n\ntype TargetPM = 'pnpm' | 'yarn'\n\nexport interface ConvertParams {\n target: string\n verbose?: boolean\n}\n\nexport function detectCurrentPM(cwd: string): 'pnpm' | 'yarn' | 'unknown' {\n if (existsSync(PATH.join(cwd, 'pnpm-lock.yaml')) || existsSync(PATH.join(cwd, 'pnpm-workspace.yaml'))) {\n return 'pnpm'\n }\n if (existsSync(PATH.join(cwd, 'yarn.lock')) || existsSync(PATH.join(cwd, '.yarnrc.yml'))) {\n return 'yarn'\n }\n return 'unknown'\n}\n\nexport function findWorkspacePackagePaths(cwd: string): string[] {\n // Read workspace patterns from package.json or pnpm-workspace.yaml\n const pkgPath = PATH.join(cwd, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n\n const patterns: string[] = (pkg.workspaces ?? []) as string[]\n\n // Also try pnpm-workspace.yaml\n if (patterns.length === 0) {\n const wsPath = PATH.join(cwd, 'pnpm-workspace.yaml')\n if (existsSync(wsPath)) {\n const content = readFileSync(wsPath, 'utf8')\n const lines = content.split('\\n')\n let inPackages = false\n for (const line of lines) {\n if (line.trim() === 'packages:') {\n inPackages = true\n continue\n }\n if (inPackages && /^\\s+-\\s+/.test(line)) {\n const pattern = line.replace(/^\\s+-\\s+/, '').replaceAll(/['\"]/g, '').trim()\n if (pattern) patterns.push(pattern)\n } else if (inPackages && !/^\\s/.test(line) && line.trim()) {\n inPackages = false\n }\n }\n }\n }\n\n // Resolve glob patterns to actual package directories\n const dirs: string[] = []\n for (const pattern of patterns) {\n const resolved = resolveWorkspaceGlob(cwd, pattern)\n dirs.push(...resolved)\n }\n return dirs\n}\n\nfunction resolveWorkspaceGlob(cwd: string, pattern: string): string[] {\n // Simple glob resolution for workspace patterns like \"packages/*\" or \"packages/**/*\"\n const parts = pattern.split('/')\n return walkGlob(cwd, parts, '')\n}\n\nfunction walkGlob(basePath: string, parts: string[], currentPath: string): string[] {\n if (parts.length === 0) {\n // Check if this path has a package.json\n const fullPath = PATH.join(basePath, currentPath)\n if (existsSync(PATH.join(fullPath, 'package.json'))) {\n return [currentPath]\n }\n return []\n }\n\n const [part, ...rest] = parts\n const dirPath = PATH.join(basePath, currentPath)\n\n if (!existsSync(dirPath) || !statSync(dirPath).isDirectory()) {\n return []\n }\n\n if (part === '*' || part === '**') {\n const entries = readdirSync(dirPath, { withFileTypes: true })\n .filter(e => e.isDirectory() && !e.name.startsWith('.') && e.name !== 'node_modules' && e.name !== 'dist')\n const results: string[] = []\n\n if (part === '**') {\n // ** can match zero segments — try skipping it\n results.push(...walkGlob(basePath, rest, currentPath))\n }\n\n for (const entry of entries) {\n const subPath = currentPath ? `${currentPath}/${entry.name}` : entry.name\n if (part === '**') {\n // ** matches any depth — try both continuing with rest and recursing deeper\n results.push(\n ...walkGlob(basePath, rest, subPath),\n ...walkGlob(basePath, parts, subPath),\n )\n } else {\n results.push(...walkGlob(basePath, rest, subPath))\n }\n }\n return results\n }\n\n const subPath = currentPath ? `${currentPath}/${part}` : part\n return walkGlob(basePath, rest, subPath)\n}\n\nexport function convert({ target, verbose }: ConvertParams): number {\n const validTargets: TargetPM[] = ['pnpm', 'yarn']\n if (!validTargets.includes(target as TargetPM)) {\n console.error(chalk.red(`Invalid target \"${target}\". Must be one of: ${validTargets.join(', ')}`))\n return 1\n }\n\n const cwd = process.cwd()\n const currentPM = detectCurrentPM(cwd)\n\n if (verbose) {\n console.log(chalk.gray(`Current package manager: ${currentPM}`))\n console.log(chalk.gray(`Target package manager: ${target}`))\n }\n\n if (currentPM === target) {\n console.log(chalk.yellow(`Already using ${target}. Re-applying conversion to fix any incomplete steps...`))\n }\n\n if (currentPM === 'unknown') {\n console.error(chalk.red('Could not detect current package manager. No yarn.lock or pnpm-lock.yaml found.'))\n return 1\n }\n\n // Find all workspace package paths\n const workspacePaths = findWorkspacePackagePaths(cwd)\n if (verbose) {\n console.log(chalk.gray(`Found ${workspacePaths.length} workspace packages`))\n }\n\n const result = target === 'pnpm'\n ? convertToPnpm(cwd, workspacePaths)\n : convertToYarn(cwd, workspacePaths)\n\n if (result !== 0) return result\n\n console.log(chalk.green('\\nRunning repo lint --fix...'))\n packageLintMonorepo(true)\n\n return result\n}\n"],"mappings":";AAAA;AAAA,EACE,cAAAA;AAAA,EAAY;AAAA,EAAQ;AAAA,OACf;AACP,OAAOC,WAAU;AAEjB,OAAOC,YAAW;;;ACLlB;AAAA,EACE;AAAA,EAAY;AAAA,EAAa;AAAA,EAAc;AAAA,OAClC;AACP,OAAO,UAAU;AAEjB,OAAO,WAAW;AAaX,SAAS,gBAAgB,KAA0C;AACxE,MAAI,WAAW,KAAK,KAAK,KAAK,gBAAgB,CAAC,KAAK,WAAW,KAAK,KAAK,KAAK,qBAAqB,CAAC,GAAG;AACrG,WAAO;AAAA,EACT;AACA,MAAI,WAAW,KAAK,KAAK,KAAK,WAAW,CAAC,KAAK,WAAW,KAAK,KAAK,KAAK,aAAa,CAAC,GAAG;AACxF,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEO,SAAS,0BAA0B,KAAuB;AAE/D,QAAM,UAAU,KAAK,KAAK,KAAK,cAAc;AAC7C,QAAM,MAAM,KAAK,MAAM,aAAa,SAAS,MAAM,CAAC;AAEpD,QAAM,WAAsB,IAAI,cAAc,CAAC;AAG/C,MAAI,SAAS,WAAW,GAAG;AACzB,UAAM,SAAS,KAAK,KAAK,KAAK,qBAAqB;AACnD,QAAI,WAAW,MAAM,GAAG;AACtB,YAAM,UAAU,aAAa,QAAQ,MAAM;AAC3C,YAAM,QAAQ,QAAQ,MAAM,IAAI;AAChC,UAAI,aAAa;AACjB,iBAAW,QAAQ,OAAO;AACxB,YAAI,KAAK,KAAK,MAAM,aAAa;AAC/B,uBAAa;AACb;AAAA,QACF;AACA,YAAI,cAAc,WAAW,KAAK,IAAI,GAAG;AACvC,gBAAM,UAAU,KAAK,QAAQ,YAAY,EAAE,EAAE,WAAW,SAAS,EAAE,EAAE,KAAK;AAC1E,cAAI,QAAS,UAAS,KAAK,OAAO;AAAA,QACpC,WAAW,cAAc,CAAC,MAAM,KAAK,IAAI,KAAK,KAAK,KAAK,GAAG;AACzD,uBAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAGA,QAAM,OAAiB,CAAC;AACxB,aAAW,WAAW,UAAU;AAC9B,UAAM,WAAW,qBAAqB,KAAK,OAAO;AAClD,SAAK,KAAK,GAAG,QAAQ;AAAA,EACvB;AACA,SAAO;AACT;AAEA,SAAS,qBAAqB,KAAa,SAA2B;AAEpE,QAAM,QAAQ,QAAQ,MAAM,GAAG;AAC/B,SAAO,SAAS,KAAK,OAAO,EAAE;AAChC;AAEA,SAAS,SAAS,UAAkB,OAAiB,aAA+B;AAClF,MAAI,MAAM,WAAW,GAAG;AAEtB,UAAM,WAAW,KAAK,KAAK,UAAU,WAAW;AAChD,QAAI,WAAW,KAAK,KAAK,UAAU,cAAc,CAAC,GAAG;AACnD,aAAO,CAAC,WAAW;AAAA,IACrB;AACA,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,CAAC,MAAM,GAAG,IAAI,IAAI;AACxB,QAAM,UAAU,KAAK,KAAK,UAAU,WAAW;AAE/C,MAAI,CAAC,WAAW,OAAO,KAAK,CAAC,SAAS,OAAO,EAAE,YAAY,GAAG;AAC5D,WAAO,CAAC;AAAA,EACV;AAEA,MAAI,SAAS,OAAO,SAAS,MAAM;AACjC,UAAM,UAAU,YAAY,SAAS,EAAE,eAAe,KAAK,CAAC,EACzD,OAAO,OAAK,EAAE,YAAY,KAAK,CAAC,EAAE,KAAK,WAAW,GAAG,KAAK,EAAE,SAAS,kBAAkB,EAAE,SAAS,MAAM;AAC3G,UAAM,UAAoB,CAAC;AAE3B,QAAI,SAAS,MAAM;AAEjB,cAAQ,KAAK,GAAG,SAAS,UAAU,MAAM,WAAW,CAAC;AAAA,IACvD;AAEA,eAAW,SAAS,SAAS;AAC3B,YAAMC,WAAU,cAAc,GAAG,WAAW,IAAI,MAAM,IAAI,KAAK,MAAM;AACrE,UAAI,SAAS,MAAM;AAEjB,gBAAQ;AAAA,UACN,GAAG,SAAS,UAAU,MAAMA,QAAO;AAAA,UACnC,GAAG,SAAS,UAAU,OAAOA,QAAO;AAAA,QACtC;AAAA,MACF,OAAO;AACL,gBAAQ,KAAK,GAAG,SAAS,UAAU,MAAMA,QAAO,CAAC;AAAA,MACnD;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,cAAc,GAAG,WAAW,IAAI,IAAI,KAAK;AACzD,SAAO,SAAS,UAAU,MAAM,OAAO;AACzC;;;ADvGA,SAAS,kBAAkB,KAAa,SAA4B;AAClE,QAAM,SAASC,MAAK,KAAK,KAAK,cAAc;AAC5C,MAAIC,YAAW,MAAM,GAAG;AACtB,QAAI,QAAS,SAAQ,IAAIC,OAAM,KAAK,YAAY,MAAM,EAAE,CAAC;AACzD,WAAO,QAAQ,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAC/C,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEO,SAAS,aAAa,EAAE,QAAQ,GAA+B;AACpE,QAAM,MAAM,QAAQ,IAAI;AACxB,QAAM,KAAK,gBAAgB,GAAG;AAE9B,MAAI,OAAO,WAAW;AACpB,YAAQ,MAAMA,OAAM,IAAI,iFAAiF,CAAC;AAC1G,WAAO;AAAA,EACT;AAEA,UAAQ,IAAIA,OAAM,KAAK,6BAA6B,EAAE,EAAE,CAAC;AAGzD,MAAI,eAAe;AAEnB,MAAI,kBAAkB,KAAK,OAAO,EAAG;AAErC,QAAM,iBAAiB,0BAA0B,GAAG;AACpD,aAAW,UAAU,gBAAgB;AACnC,UAAM,WAAWF,MAAK,KAAK,KAAK,MAAM;AACtC,QAAI,kBAAkB,UAAU,OAAO,EAAG;AAAA,EAC5C;AAEA,UAAQ,IAAIE,OAAM,MAAM,WAAW,YAAY,uBAAuB,iBAAiB,IAAI,KAAK,GAAG,EAAE,CAAC;AAGtG,MAAI,OAAO,QAAQ;AACjB,UAAM,WAAWF,MAAK,KAAK,KAAK,WAAW;AAC3C,QAAIC,YAAW,QAAQ,GAAG;AACxB,oBAAc,UAAU,EAAE;AAC1B,cAAQ,IAAIC,OAAM,MAAM,qBAAqB,CAAC;AAAA,IAChD;AAAA,EACF,WAAW,OAAO,QAAQ;AACxB,UAAM,WAAWF,MAAK,KAAK,KAAK,gBAAgB;AAChD,QAAIC,YAAW,QAAQ,GAAG;AACxB,aAAO,QAAQ;AACf,cAAQ,IAAIC,OAAM,MAAM,wBAAwB,CAAC;AAAA,IACnD;AAAA,EACF;AAEA,UAAQ,IAAIA,OAAM,MAAM,2BAA2B,CAAC;AACpD,SAAO;AACT;","names":["existsSync","PATH","chalk","subPath","PATH","existsSync","chalk"]}