@xylabs/ts-scripts-common 7.5.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 (408) hide show
  1. package/dist/actions/build.mjs +161 -0
  2. package/dist/actions/build.mjs.map +1 -0
  3. package/dist/actions/claude-clean.mjs +71 -0
  4. package/dist/actions/claude-clean.mjs.map +1 -0
  5. package/dist/actions/claude-commands.mjs +112 -0
  6. package/dist/actions/claude-commands.mjs.map +1 -0
  7. package/dist/actions/claude-rules.mjs +137 -0
  8. package/dist/actions/claude-rules.mjs.map +1 -0
  9. package/dist/actions/claude-settings.mjs +85 -0
  10. package/dist/actions/claude-settings.mjs.map +1 -0
  11. package/dist/actions/claude-skills.mjs +120 -0
  12. package/dist/actions/claude-skills.mjs.map +1 -0
  13. package/dist/actions/clean-docs.mjs +45 -0
  14. package/dist/actions/clean-docs.mjs.map +1 -0
  15. package/dist/actions/clean-eslint.mjs +26 -0
  16. package/dist/actions/clean-eslint.mjs.map +1 -0
  17. package/dist/actions/clean.mjs +145 -0
  18. package/dist/actions/clean.mjs.map +1 -0
  19. package/dist/actions/compile.mjs +172 -0
  20. package/dist/actions/compile.mjs.map +1 -0
  21. package/dist/actions/copy-assets.mjs +81 -0
  22. package/dist/actions/copy-assets.mjs.map +1 -0
  23. package/dist/actions/cycle.mjs +165 -0
  24. package/dist/actions/cycle.mjs.map +1 -0
  25. package/dist/actions/dead.mjs +98 -0
  26. package/dist/actions/dead.mjs.map +1 -0
  27. package/dist/actions/deplint/checkPackage/checkPackage.mjs +672 -0
  28. package/dist/actions/deplint/checkPackage/checkPackage.mjs.map +1 -0
  29. package/dist/actions/deplint/checkPackage/checkPackageTypes.mjs +1 -0
  30. package/dist/actions/deplint/checkPackage/checkPackageTypes.mjs.map +1 -0
  31. package/dist/actions/deplint/checkPackage/getUnlistedDependencies.mjs +48 -0
  32. package/dist/actions/deplint/checkPackage/getUnlistedDependencies.mjs.map +1 -0
  33. package/dist/actions/deplint/checkPackage/getUnlistedDevDependencies.mjs +33 -0
  34. package/dist/actions/deplint/checkPackage/getUnlistedDevDependencies.mjs.map +1 -0
  35. package/dist/actions/deplint/checkPackage/getUnusedDependencies.mjs +30 -0
  36. package/dist/actions/deplint/checkPackage/getUnusedDependencies.mjs.map +1 -0
  37. package/dist/actions/deplint/checkPackage/getUnusedDevDependencies.mjs +309 -0
  38. package/dist/actions/deplint/checkPackage/getUnusedDevDependencies.mjs.map +1 -0
  39. package/dist/actions/deplint/checkPackage/getUnusedPeerDependencies.mjs +26 -0
  40. package/dist/actions/deplint/checkPackage/getUnusedPeerDependencies.mjs.map +1 -0
  41. package/dist/actions/deplint/checkPackage/index.mjs +672 -0
  42. package/dist/actions/deplint/checkPackage/index.mjs.map +1 -0
  43. package/dist/actions/deplint/deplint.mjs +770 -0
  44. package/dist/actions/deplint/deplint.mjs.map +1 -0
  45. package/dist/actions/deplint/findFiles.mjs +39 -0
  46. package/dist/actions/deplint/findFiles.mjs.map +1 -0
  47. package/dist/actions/deplint/findFilesByGlob.mjs +14 -0
  48. package/dist/actions/deplint/findFilesByGlob.mjs.map +1 -0
  49. package/dist/actions/deplint/getBasePackageName.mjs +13 -0
  50. package/dist/actions/deplint/getBasePackageName.mjs.map +1 -0
  51. package/dist/actions/deplint/getCliReferencedPackagesFromFiles.mjs +140 -0
  52. package/dist/actions/deplint/getCliReferencedPackagesFromFiles.mjs.map +1 -0
  53. package/dist/actions/deplint/getDependenciesFromPackageJson.mjs +20 -0
  54. package/dist/actions/deplint/getDependenciesFromPackageJson.mjs.map +1 -0
  55. package/dist/actions/deplint/getExtendsFromTsconfigs.mjs +44 -0
  56. package/dist/actions/deplint/getExtendsFromTsconfigs.mjs.map +1 -0
  57. package/dist/actions/deplint/getExternalImportsFromFiles.mjs +122 -0
  58. package/dist/actions/deplint/getExternalImportsFromFiles.mjs.map +1 -0
  59. package/dist/actions/deplint/getImportsFromFile.mjs +85 -0
  60. package/dist/actions/deplint/getImportsFromFile.mjs.map +1 -0
  61. package/dist/actions/deplint/getRequiredPeerDependencies.mjs +36 -0
  62. package/dist/actions/deplint/getRequiredPeerDependencies.mjs.map +1 -0
  63. package/dist/actions/deplint/getScriptReferencedPackages.mjs +83 -0
  64. package/dist/actions/deplint/getScriptReferencedPackages.mjs.map +1 -0
  65. package/dist/actions/deplint/implicitDevDependencies.mjs +80 -0
  66. package/dist/actions/deplint/implicitDevDependencies.mjs.map +1 -0
  67. package/dist/actions/deplint/index.mjs +770 -0
  68. package/dist/actions/deplint/index.mjs.map +1 -0
  69. package/dist/actions/dupdeps.mjs +205 -0
  70. package/dist/actions/dupdeps.mjs.map +1 -0
  71. package/dist/actions/fix.mjs +163 -0
  72. package/dist/actions/fix.mjs.map +1 -0
  73. package/dist/actions/gen-docs.mjs +130 -0
  74. package/dist/actions/gen-docs.mjs.map +1 -0
  75. package/dist/actions/gitignore.mjs +160 -0
  76. package/dist/actions/gitignore.mjs.map +1 -0
  77. package/dist/actions/gitlint-fix.mjs +27 -0
  78. package/dist/actions/gitlint-fix.mjs.map +1 -0
  79. package/dist/actions/gitlint.mjs +48 -0
  80. package/dist/actions/gitlint.mjs.map +1 -0
  81. package/dist/actions/index.mjs +4129 -0
  82. package/dist/actions/index.mjs.map +1 -0
  83. package/dist/actions/knip.mjs +98 -0
  84. package/dist/actions/knip.mjs.map +1 -0
  85. package/dist/actions/license.mjs +92 -0
  86. package/dist/actions/license.mjs.map +1 -0
  87. package/dist/actions/lint.mjs +160 -0
  88. package/dist/actions/lint.mjs.map +1 -0
  89. package/dist/actions/lintlint.mjs +230 -0
  90. package/dist/actions/lintlint.mjs.map +1 -0
  91. package/dist/actions/npmignore-gen.mjs +91 -0
  92. package/dist/actions/npmignore-gen.mjs.map +1 -0
  93. package/dist/actions/package/clean-outputs.mjs +29 -0
  94. package/dist/actions/package/clean-outputs.mjs.map +1 -0
  95. package/dist/actions/package/clean-typescript.mjs +29 -0
  96. package/dist/actions/package/clean-typescript.mjs.map +1 -0
  97. package/dist/actions/package/clean.mjs +48 -0
  98. package/dist/actions/package/clean.mjs.map +1 -0
  99. package/dist/actions/package/compile/XyConfig.mjs +1 -0
  100. package/dist/actions/package/compile/XyConfig.mjs.map +1 -0
  101. package/dist/actions/package/compile/buildEntries.mjs +53 -0
  102. package/dist/actions/package/compile/buildEntries.mjs.map +1 -0
  103. package/dist/actions/package/compile/compile.mjs +433 -0
  104. package/dist/actions/package/compile/compile.mjs.map +1 -0
  105. package/dist/actions/package/compile/copyTypeFiles.mjs +34 -0
  106. package/dist/actions/package/compile/copyTypeFiles.mjs.map +1 -0
  107. package/dist/actions/package/compile/deepMerge.mjs +26 -0
  108. package/dist/actions/package/compile/deepMerge.mjs.map +1 -0
  109. package/dist/actions/package/compile/getCompilerOptions.mjs +12 -0
  110. package/dist/actions/package/compile/getCompilerOptions.mjs.map +1 -0
  111. package/dist/actions/package/compile/index.mjs +436 -0
  112. package/dist/actions/package/compile/index.mjs.map +1 -0
  113. package/dist/actions/package/compile/inputs.mjs +22 -0
  114. package/dist/actions/package/compile/inputs.mjs.map +1 -0
  115. package/dist/actions/package/compile/packageCompileTsc.mjs +94 -0
  116. package/dist/actions/package/compile/packageCompileTsc.mjs.map +1 -0
  117. package/dist/actions/package/compile/packageCompileTscTypes.mjs +92 -0
  118. package/dist/actions/package/compile/packageCompileTscTypes.mjs.map +1 -0
  119. package/dist/actions/package/compile/packageCompileTsup.mjs +402 -0
  120. package/dist/actions/package/compile/packageCompileTsup.mjs.map +1 -0
  121. package/dist/actions/package/copy-assets.mjs +46 -0
  122. package/dist/actions/package/copy-assets.mjs.map +1 -0
  123. package/dist/actions/package/cycle.mjs +39 -0
  124. package/dist/actions/package/cycle.mjs.map +1 -0
  125. package/dist/actions/package/gen-docs.mjs +114 -0
  126. package/dist/actions/package/gen-docs.mjs.map +1 -0
  127. package/dist/actions/package/index.mjs +825 -0
  128. package/dist/actions/package/index.mjs.map +1 -0
  129. package/dist/actions/package/lint.mjs +80 -0
  130. package/dist/actions/package/lint.mjs.map +1 -0
  131. package/dist/actions/package/publint.mjs +66 -0
  132. package/dist/actions/package/publint.mjs.map +1 -0
  133. package/dist/actions/package/recompile.mjs +483 -0
  134. package/dist/actions/package/recompile.mjs.map +1 -0
  135. package/dist/actions/package-lint.mjs +186 -0
  136. package/dist/actions/package-lint.mjs.map +1 -0
  137. package/dist/actions/packman/convert.mjs +387 -0
  138. package/dist/actions/packman/convert.mjs.map +1 -0
  139. package/dist/actions/packman/convertToPnpm.mjs +149 -0
  140. package/dist/actions/packman/convertToPnpm.mjs.map +1 -0
  141. package/dist/actions/packman/convertToYarn.mjs +171 -0
  142. package/dist/actions/packman/convertToYarn.mjs.map +1 -0
  143. package/dist/actions/packman/index.mjs +389 -0
  144. package/dist/actions/packman/index.mjs.map +1 -0
  145. package/dist/actions/packman/rewriteScripts.mjs +52 -0
  146. package/dist/actions/packman/rewriteScripts.mjs.map +1 -0
  147. package/dist/actions/publint.mjs +187 -0
  148. package/dist/actions/publint.mjs.map +1 -0
  149. package/dist/actions/readme-gen.mjs +292 -0
  150. package/dist/actions/readme-gen.mjs.map +1 -0
  151. package/dist/actions/readme-init.mjs +83 -0
  152. package/dist/actions/readme-init.mjs.map +1 -0
  153. package/dist/actions/rebuild.mjs +122 -0
  154. package/dist/actions/rebuild.mjs.map +1 -0
  155. package/dist/actions/recompile.mjs +188 -0
  156. package/dist/actions/recompile.mjs.map +1 -0
  157. package/dist/actions/relint.mjs +160 -0
  158. package/dist/actions/relint.mjs.map +1 -0
  159. package/dist/actions/retest.mjs +129 -0
  160. package/dist/actions/retest.mjs.map +1 -0
  161. package/dist/actions/sonar.mjs +98 -0
  162. package/dist/actions/sonar.mjs.map +1 -0
  163. package/dist/actions/statics.mjs +204 -0
  164. package/dist/actions/statics.mjs.map +1 -0
  165. package/dist/actions/test.mjs +123 -0
  166. package/dist/actions/test.mjs.map +1 -0
  167. package/dist/bin/package/build-only.mjs +445 -0
  168. package/dist/bin/package/build-only.mjs.map +1 -0
  169. package/dist/bin/package/build.mjs +445 -0
  170. package/dist/bin/package/build.mjs.map +1 -0
  171. package/dist/bin/package/clean-outputs.mjs +29 -0
  172. package/dist/bin/package/clean-outputs.mjs.map +1 -0
  173. package/dist/bin/package/clean-typescript.mjs +29 -0
  174. package/dist/bin/package/clean-typescript.mjs.map +1 -0
  175. package/dist/bin/package/clean.mjs +53 -0
  176. package/dist/bin/package/clean.mjs.map +1 -0
  177. package/dist/bin/package/compile-only.mjs +441 -0
  178. package/dist/bin/package/compile-only.mjs.map +1 -0
  179. package/dist/bin/package/compile-tsup.mjs +409 -0
  180. package/dist/bin/package/compile-tsup.mjs.map +1 -0
  181. package/dist/bin/package/compile.mjs +445 -0
  182. package/dist/bin/package/compile.mjs.map +1 -0
  183. package/dist/bin/package/copy-assets-cjs.mjs +54 -0
  184. package/dist/bin/package/copy-assets-cjs.mjs.map +1 -0
  185. package/dist/bin/package/copy-assets-esm.mjs +54 -0
  186. package/dist/bin/package/copy-assets-esm.mjs.map +1 -0
  187. package/dist/bin/package/cycle.mjs +51 -0
  188. package/dist/bin/package/cycle.mjs.map +1 -0
  189. package/dist/bin/package/fix.mjs +92 -0
  190. package/dist/bin/package/fix.mjs.map +1 -0
  191. package/dist/bin/package/gen-docs.mjs +121 -0
  192. package/dist/bin/package/gen-docs.mjs.map +1 -0
  193. package/dist/bin/package/lint-verbose.mjs +92 -0
  194. package/dist/bin/package/lint-verbose.mjs.map +1 -0
  195. package/dist/bin/package/lint.mjs +92 -0
  196. package/dist/bin/package/lint.mjs.map +1 -0
  197. package/dist/bin/package/publint.mjs +75 -0
  198. package/dist/bin/package/publint.mjs.map +1 -0
  199. package/dist/bin/package/recompile.mjs +489 -0
  200. package/dist/bin/package/recompile.mjs.map +1 -0
  201. package/dist/bin/package/relint.mjs +92 -0
  202. package/dist/bin/package/relint.mjs.map +1 -0
  203. package/dist/bin/xy.mjs +3826 -0
  204. package/dist/bin/xy.mjs.map +1 -0
  205. package/dist/index.d.ts +564 -0
  206. package/dist/index.mjs +4979 -0
  207. package/dist/index.mjs.map +1 -0
  208. package/dist/lib/checkResult.mjs +16 -0
  209. package/dist/lib/checkResult.mjs.map +1 -0
  210. package/dist/lib/claudeMdTemplate.mjs +65 -0
  211. package/dist/lib/claudeMdTemplate.mjs.map +1 -0
  212. package/dist/lib/createBuildConfig.mjs +55 -0
  213. package/dist/lib/createBuildConfig.mjs.map +1 -0
  214. package/dist/lib/defaultBuildConfig.mjs +23 -0
  215. package/dist/lib/defaultBuildConfig.mjs.map +1 -0
  216. package/dist/lib/deleteGlob.mjs +13 -0
  217. package/dist/lib/deleteGlob.mjs.map +1 -0
  218. package/dist/lib/dependencies/DuplicateDetector.mjs +81 -0
  219. package/dist/lib/dependencies/DuplicateDetector.mjs.map +1 -0
  220. package/dist/lib/dependencies/detectDuplicateDependencies.mjs +185 -0
  221. package/dist/lib/dependencies/detectDuplicateDependencies.mjs.map +1 -0
  222. package/dist/lib/dependencies/index.mjs +186 -0
  223. package/dist/lib/dependencies/index.mjs.map +1 -0
  224. package/dist/lib/file/ReadFileSyncOptions.mjs +6 -0
  225. package/dist/lib/file/ReadFileSyncOptions.mjs.map +1 -0
  226. package/dist/lib/file/constants.mjs +8 -0
  227. package/dist/lib/file/constants.mjs.map +1 -0
  228. package/dist/lib/file/fileLines.mjs +32 -0
  229. package/dist/lib/file/fileLines.mjs.map +1 -0
  230. package/dist/lib/file/index.mjs +42 -0
  231. package/dist/lib/file/index.mjs.map +1 -0
  232. package/dist/lib/file/tryReadFileSync.mjs +14 -0
  233. package/dist/lib/file/tryReadFileSync.mjs.map +1 -0
  234. package/dist/lib/generateIgnoreFiles.mjs +87 -0
  235. package/dist/lib/generateIgnoreFiles.mjs.map +1 -0
  236. package/dist/lib/generateReadmeFiles.mjs +260 -0
  237. package/dist/lib/generateReadmeFiles.mjs.map +1 -0
  238. package/dist/lib/gitignoreTemplate.mjs +12 -0
  239. package/dist/lib/gitignoreTemplate.mjs.map +1 -0
  240. package/dist/lib/index.mjs +834 -0
  241. package/dist/lib/index.mjs.map +1 -0
  242. package/dist/lib/initCwd.mjs +9 -0
  243. package/dist/lib/initCwd.mjs.map +1 -0
  244. package/dist/lib/jsonFormatters.mjs +11 -0
  245. package/dist/lib/jsonFormatters.mjs.map +1 -0
  246. package/dist/lib/loadConfig.mjs +24 -0
  247. package/dist/lib/loadConfig.mjs.map +1 -0
  248. package/dist/lib/parsedPackageJSON.mjs +11 -0
  249. package/dist/lib/parsedPackageJSON.mjs.map +1 -0
  250. package/dist/lib/processEx.mjs +36 -0
  251. package/dist/lib/processEx.mjs.map +1 -0
  252. package/dist/lib/runSteps.mjs +95 -0
  253. package/dist/lib/runSteps.mjs.map +1 -0
  254. package/dist/lib/runStepsAsync.mjs +113 -0
  255. package/dist/lib/runStepsAsync.mjs.map +1 -0
  256. package/dist/lib/runXy.mjs +124 -0
  257. package/dist/lib/runXy.mjs.map +1 -0
  258. package/dist/lib/runXyWithWarning.mjs +36 -0
  259. package/dist/lib/runXyWithWarning.mjs.map +1 -0
  260. package/dist/lib/safeExit.mjs +61 -0
  261. package/dist/lib/safeExit.mjs.map +1 -0
  262. package/dist/lib/string/empty.mjs +8 -0
  263. package/dist/lib/string/empty.mjs.map +1 -0
  264. package/dist/lib/string/index.mjs +12 -0
  265. package/dist/lib/string/index.mjs.map +1 -0
  266. package/dist/lib/string/union.mjs +6 -0
  267. package/dist/lib/string/union.mjs.map +1 -0
  268. package/dist/lib/tryRunLocalScript.mjs +56 -0
  269. package/dist/lib/tryRunLocalScript.mjs.map +1 -0
  270. package/dist/lib/withErrnoException.mjs +13 -0
  271. package/dist/lib/withErrnoException.mjs.map +1 -0
  272. package/dist/lib/withError.mjs +8 -0
  273. package/dist/lib/withError.mjs.map +1 -0
  274. package/dist/loadPackageConfig.mjs +11 -0
  275. package/dist/loadPackageConfig.mjs.map +1 -0
  276. package/dist/pm/PackageManager.mjs +1 -0
  277. package/dist/pm/PackageManager.mjs.map +1 -0
  278. package/dist/pm/detectPackageManager.mjs +10 -0
  279. package/dist/pm/detectPackageManager.mjs.map +1 -0
  280. package/dist/pm/index.mjs +28 -0
  281. package/dist/pm/index.mjs.map +1 -0
  282. package/dist/pm/registry.mjs +27 -0
  283. package/dist/pm/registry.mjs.map +1 -0
  284. package/dist/types.d.mjs +1 -0
  285. package/dist/types.d.mjs.map +1 -0
  286. package/dist/xy/build/buildCommand.mjs +182 -0
  287. package/dist/xy/build/buildCommand.mjs.map +1 -0
  288. package/dist/xy/build/compileCommand.mjs +189 -0
  289. package/dist/xy/build/compileCommand.mjs.map +1 -0
  290. package/dist/xy/build/compileOnlyCommand.mjs +190 -0
  291. package/dist/xy/build/compileOnlyCommand.mjs.map +1 -0
  292. package/dist/xy/build/copyAssetsCommand.mjs +92 -0
  293. package/dist/xy/build/copyAssetsCommand.mjs.map +1 -0
  294. package/dist/xy/build/index.mjs +493 -0
  295. package/dist/xy/build/index.mjs.map +1 -0
  296. package/dist/xy/build/rebuildCommand.mjs +135 -0
  297. package/dist/xy/build/rebuildCommand.mjs.map +1 -0
  298. package/dist/xy/build/recompileCommand.mjs +205 -0
  299. package/dist/xy/build/recompileCommand.mjs.map +1 -0
  300. package/dist/xy/common/claude/cleanCommand.mjs +79 -0
  301. package/dist/xy/common/claude/cleanCommand.mjs.map +1 -0
  302. package/dist/xy/common/claude/commandsCommand.mjs +120 -0
  303. package/dist/xy/common/claude/commandsCommand.mjs.map +1 -0
  304. package/dist/xy/common/claude/index.mjs +546 -0
  305. package/dist/xy/common/claude/index.mjs.map +1 -0
  306. package/dist/xy/common/claude/initCommand.mjs +319 -0
  307. package/dist/xy/common/claude/initCommand.mjs.map +1 -0
  308. package/dist/xy/common/claude/rulesCommand.mjs +153 -0
  309. package/dist/xy/common/claude/rulesCommand.mjs.map +1 -0
  310. package/dist/xy/common/claude/settingsCommand.mjs +93 -0
  311. package/dist/xy/common/claude/settingsCommand.mjs.map +1 -0
  312. package/dist/xy/common/claude/skillsCommand.mjs +129 -0
  313. package/dist/xy/common/claude/skillsCommand.mjs.map +1 -0
  314. package/dist/xy/common/cleanDocsCommand.mjs +53 -0
  315. package/dist/xy/common/cleanDocsCommand.mjs.map +1 -0
  316. package/dist/xy/common/deadCommand.mjs +116 -0
  317. package/dist/xy/common/deadCommand.mjs.map +1 -0
  318. package/dist/xy/common/genDocsCommand.mjs +146 -0
  319. package/dist/xy/common/genDocsCommand.mjs.map +1 -0
  320. package/dist/xy/common/gitignoreCommand.mjs +166 -0
  321. package/dist/xy/common/gitignoreCommand.mjs.map +1 -0
  322. package/dist/xy/common/gitlintCommand.mjs +82 -0
  323. package/dist/xy/common/gitlintCommand.mjs.map +1 -0
  324. package/dist/xy/common/index.mjs +1874 -0
  325. package/dist/xy/common/index.mjs.map +1 -0
  326. package/dist/xy/common/licenseCommand.mjs +108 -0
  327. package/dist/xy/common/licenseCommand.mjs.map +1 -0
  328. package/dist/xy/common/npmignoreGenCommand.mjs +101 -0
  329. package/dist/xy/common/npmignoreGenCommand.mjs.map +1 -0
  330. package/dist/xy/common/packmanCommand.mjs +415 -0
  331. package/dist/xy/common/packmanCommand.mjs.map +1 -0
  332. package/dist/xy/common/readme/genCommand.mjs +324 -0
  333. package/dist/xy/common/readme/genCommand.mjs.map +1 -0
  334. package/dist/xy/common/readme/index.mjs +364 -0
  335. package/dist/xy/common/readme/index.mjs.map +1 -0
  336. package/dist/xy/common/readme/initCommand.mjs +103 -0
  337. package/dist/xy/common/readme/initCommand.mjs.map +1 -0
  338. package/dist/xy/common/retestCommand.mjs +142 -0
  339. package/dist/xy/common/retestCommand.mjs.map +1 -0
  340. package/dist/xy/common/testCommand.mjs +136 -0
  341. package/dist/xy/common/testCommand.mjs.map +1 -0
  342. package/dist/xy/index.mjs +3823 -0
  343. package/dist/xy/index.mjs.map +1 -0
  344. package/dist/xy/lint/cycleCommand.mjs +184 -0
  345. package/dist/xy/lint/cycleCommand.mjs.map +1 -0
  346. package/dist/xy/lint/deplintCommand.mjs +820 -0
  347. package/dist/xy/lint/deplintCommand.mjs.map +1 -0
  348. package/dist/xy/lint/fixCommand.mjs +184 -0
  349. package/dist/xy/lint/fixCommand.mjs.map +1 -0
  350. package/dist/xy/lint/index.mjs +1691 -0
  351. package/dist/xy/lint/index.mjs.map +1 -0
  352. package/dist/xy/lint/knipCommand.mjs +121 -0
  353. package/dist/xy/lint/knipCommand.mjs.map +1 -0
  354. package/dist/xy/lint/lintCommand.mjs +202 -0
  355. package/dist/xy/lint/lintCommand.mjs.map +1 -0
  356. package/dist/xy/lint/lintlintCommand.mjs +250 -0
  357. package/dist/xy/lint/lintlintCommand.mjs.map +1 -0
  358. package/dist/xy/lint/packageLintCommand.mjs +201 -0
  359. package/dist/xy/lint/packageLintCommand.mjs.map +1 -0
  360. package/dist/xy/lint/publintCommand.mjs +208 -0
  361. package/dist/xy/lint/publintCommand.mjs.map +1 -0
  362. package/dist/xy/lint/relintCommand.mjs +179 -0
  363. package/dist/xy/lint/relintCommand.mjs.map +1 -0
  364. package/dist/xy/lint/sonarCommand.mjs +121 -0
  365. package/dist/xy/lint/sonarCommand.mjs.map +1 -0
  366. package/dist/xy/param.mjs +8 -0
  367. package/dist/xy/param.mjs.map +1 -0
  368. package/dist/xy/xy.mjs +3819 -0
  369. package/dist/xy/xy.mjs.map +1 -0
  370. package/dist/xy/xyParseOptions.mjs +91 -0
  371. package/dist/xy/xyParseOptions.mjs.map +1 -0
  372. package/package.json +108 -0
  373. package/templates/claude/CLAUDE-local.md +4 -0
  374. package/templates/claude/CLAUDE-project.md +4 -0
  375. package/templates/claude/commands/xy-build.md +5 -0
  376. package/templates/claude/commands/xy-clean.md +5 -0
  377. package/templates/claude/commands/xy-compile.md +5 -0
  378. package/templates/claude/commands/xy-cycle.md +5 -0
  379. package/templates/claude/commands/xy-dead.md +5 -0
  380. package/templates/claude/commands/xy-deplint.md +5 -0
  381. package/templates/claude/commands/xy-deps.md +24 -0
  382. package/templates/claude/commands/xy-dupdeps.md +5 -0
  383. package/templates/claude/commands/xy-fix.md +5 -0
  384. package/templates/claude/commands/xy-gen-docs.md +5 -0
  385. package/templates/claude/commands/xy-gitignore.md +5 -0
  386. package/templates/claude/commands/xy-gitlint.md +5 -0
  387. package/templates/claude/commands/xy-knip.md +5 -0
  388. package/templates/claude/commands/xy-license.md +5 -0
  389. package/templates/claude/commands/xy-lint-rules.md +44 -0
  390. package/templates/claude/commands/xy-lint.md +5 -0
  391. package/templates/claude/commands/xy-publint.md +5 -0
  392. package/templates/claude/commands/xy-rebuild.md +5 -0
  393. package/templates/claude/commands/xy-recompile.md +5 -0
  394. package/templates/claude/commands/xy-reinstall.md +5 -0
  395. package/templates/claude/commands/xy-relint.md +5 -0
  396. package/templates/claude/commands/xy-retest.md +5 -0
  397. package/templates/claude/commands/xy-sonar.md +5 -0
  398. package/templates/claude/commands/xy-test.md +5 -0
  399. package/templates/claude/commands/xy-up.md +7 -0
  400. package/templates/claude/rules/xylabs-architecture.md +8 -0
  401. package/templates/claude/rules/xylabs-build.md +9 -0
  402. package/templates/claude/rules/xylabs-git-workflow.md +7 -0
  403. package/templates/claude/rules/xylabs-naming.md +7 -0
  404. package/templates/claude/rules/xylabs-style.md +17 -0
  405. package/templates/claude/skills/xylabs-e2e-setup/SKILL.md +223 -0
  406. package/templates/gitignore/template.gitignore +51 -0
  407. package/templates/readme/README.body.md +11 -0
  408. package/templates/readme/README.template.md +22 -0
@@ -0,0 +1,186 @@
1
+ // src/actions/package-lint.ts
2
+ import { readFileSync, writeFileSync } from "fs";
3
+ import PATH from "path";
4
+ import chalk from "chalk";
5
+ import picomatch from "picomatch";
6
+
7
+ // src/pm/detectPackageManager.ts
8
+ import { existsSync } from "fs";
9
+ function detectPackageManager() {
10
+ if (existsSync("pnpm-lock.yaml") || existsSync("pnpm-workspace.yaml")) return "pnpm";
11
+ return "yarn";
12
+ }
13
+
14
+ // src/pm/registry.ts
15
+ var implementations = /* @__PURE__ */ new Map();
16
+ function getPackageManager(name) {
17
+ const pmName = name ?? detectPackageManager();
18
+ const pm = implementations.get(pmName);
19
+ if (!pm) {
20
+ throw new Error(
21
+ `No package manager implementation registered for "${pmName}". Install @xylabs/ts-scripts-${pmName === "yarn" ? "yarn3" : pmName} and ensure it is imported.`
22
+ );
23
+ }
24
+ return pm;
25
+ }
26
+
27
+ // src/lib/initCwd.ts
28
+ function INIT_CWD() {
29
+ if (!process.env.INIT_CWD) console.error("Missing INIT_CWD");
30
+ return process.env.INIT_CWD;
31
+ }
32
+
33
+ // src/actions/package-lint.ts
34
+ function emptyResult() {
35
+ return {
36
+ errors: [],
37
+ fixable: [],
38
+ warnings: []
39
+ };
40
+ }
41
+ function readRootPackageJson(cwd) {
42
+ const raw = readFileSync(PATH.resolve(cwd, "package.json"), "utf8");
43
+ return JSON.parse(raw);
44
+ }
45
+ function writeRootPackageJson(cwd, pkg) {
46
+ const path = PATH.resolve(cwd, "package.json");
47
+ writeFileSync(path, `${JSON.stringify(pkg, null, 2)}
48
+ `, "utf8");
49
+ }
50
+ function isMonorepo(pkg) {
51
+ const workspaces = pkg.workspaces;
52
+ return Array.isArray(workspaces) && workspaces.length > 0;
53
+ }
54
+ function checkPackagesFolder(workspaces) {
55
+ const result = emptyResult();
56
+ for (const { location, name } of workspaces) {
57
+ if (location === ".") continue;
58
+ if (!location.startsWith("packages/") && !location.startsWith("packages\\")) {
59
+ result.errors.push(`${name} (${location}) is not inside a packages/ folder`);
60
+ }
61
+ }
62
+ return result;
63
+ }
64
+ function checkRootPrivate(pkg) {
65
+ const result = emptyResult();
66
+ if (!pkg.private) {
67
+ result.fixable.push("Root package.json must be private to prevent accidental publishing");
68
+ }
69
+ return result;
70
+ }
71
+ function fixRootPrivate(cwd, pkg) {
72
+ pkg.private = true;
73
+ writeRootPackageJson(cwd, pkg);
74
+ console.log(chalk.green(' \u2714 Fixed: set "private": true in root package.json'));
75
+ }
76
+ function checkNoPublishConfigOnPrivate(pkg) {
77
+ const result = emptyResult();
78
+ if (pkg.private && pkg.publishConfig) {
79
+ result.fixable.push("Root package.json has publishConfig but is private \u2014 publishConfig is unnecessary");
80
+ }
81
+ return result;
82
+ }
83
+ function fixNoPublishConfigOnPrivate(cwd, pkg) {
84
+ delete pkg.publishConfig;
85
+ writeRootPackageJson(cwd, pkg);
86
+ console.log(chalk.green(" \u2714 Fixed: removed publishConfig from private root package.json"));
87
+ }
88
+ function checkDiscoverable(pkg, workspaces) {
89
+ const result = emptyResult();
90
+ const globs = pkg.workspaces;
91
+ const matchers = globs.map((glob) => picomatch(glob));
92
+ const isMatch = (location) => matchers.some((m) => m(location));
93
+ for (const { location, name } of workspaces) {
94
+ if (location === ".") continue;
95
+ if (!isMatch(location)) {
96
+ result.errors.push(`${name} (${location}) is not matched by any workspace glob in package.json`);
97
+ }
98
+ }
99
+ return result;
100
+ }
101
+ function logResults(label, result, fix) {
102
+ let errors = 0;
103
+ let fixed = 0;
104
+ for (const error of result.errors) {
105
+ console.log(chalk.red(` \u2717 ${error}`));
106
+ errors++;
107
+ }
108
+ for (const fixable of result.fixable) {
109
+ if (fix) {
110
+ fixed++;
111
+ } else {
112
+ console.log(chalk.red(` \u2717 ${fixable} (fixable)`));
113
+ errors++;
114
+ }
115
+ }
116
+ for (const warning of result.warnings) {
117
+ console.log(chalk.yellow(` \u26A0 ${warning}`));
118
+ }
119
+ if (errors === 0 && fixed === 0 && result.warnings.length === 0) {
120
+ console.log(chalk.green(` \u2713 ${label}`));
121
+ }
122
+ return { errors, fixed };
123
+ }
124
+ function runChecks(entries, cwd, pkg, fix) {
125
+ let totalErrors = 0;
126
+ let totalFixed = 0;
127
+ for (const entry of entries) {
128
+ const result = entry.check();
129
+ const log = logResults(entry.label, result, fix);
130
+ if (fix && entry.fix && result.fixable.length > 0) {
131
+ entry.fix(cwd, pkg);
132
+ }
133
+ totalErrors += log.errors;
134
+ totalFixed += log.fixed;
135
+ }
136
+ return { errors: totalErrors, fixed: totalFixed };
137
+ }
138
+ function logSummary(errors, fixed) {
139
+ if (fixed > 0) {
140
+ console.log(chalk.green(`
141
+ Fixed ${fixed} issue(s)`));
142
+ }
143
+ if (errors > 0) {
144
+ console.log(chalk.red(`
145
+ ${errors} error(s) found`));
146
+ } else if (fixed === 0) {
147
+ console.log(chalk.green("\n All checks passed"));
148
+ }
149
+ }
150
+ function packageLintMonorepo(fix = false) {
151
+ const cwd = INIT_CWD() ?? process.cwd();
152
+ let pkg;
153
+ try {
154
+ pkg = readRootPackageJson(cwd);
155
+ } catch {
156
+ console.error(chalk.red("Could not read package.json"));
157
+ return 1;
158
+ }
159
+ if (!isMonorepo(pkg)) {
160
+ console.log(chalk.gray("Not a monorepo \u2014 skipping package-lint checks"));
161
+ return 0;
162
+ }
163
+ console.log(chalk.green("Package Lint"));
164
+ const workspaces = getPackageManager().listWorkspaces();
165
+ const checks = [
166
+ {
167
+ check: () => checkRootPrivate(pkg),
168
+ fix: fixRootPrivate,
169
+ label: "Root package is private"
170
+ },
171
+ {
172
+ check: () => checkNoPublishConfigOnPrivate(pkg),
173
+ fix: fixNoPublishConfigOnPrivate,
174
+ label: "No publishConfig on private root"
175
+ },
176
+ { check: () => checkPackagesFolder(workspaces), label: "All packages are in packages/ folder" },
177
+ { check: () => checkDiscoverable(pkg, workspaces), label: "All packages are discoverable from workspace globs" }
178
+ ];
179
+ const { errors, fixed } = runChecks(checks, cwd, pkg, fix);
180
+ logSummary(errors, fixed);
181
+ return errors > 0 ? 1 : 0;
182
+ }
183
+ export {
184
+ packageLintMonorepo
185
+ };
186
+ //# sourceMappingURL=package-lint.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/actions/package-lint.ts","../../src/pm/detectPackageManager.ts","../../src/pm/registry.ts","../../src/lib/initCwd.ts"],"sourcesContent":["import { readFileSync, writeFileSync } from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\nimport picomatch from 'picomatch'\n\nimport { INIT_CWD } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\ninterface 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) {\n const raw = readFileSync(PATH.resolve(cwd, 'package.json'), 'utf8')\n return JSON.parse(raw)\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 isMonorepo(pkg: Record<string, unknown>): boolean {\n const workspaces = pkg.workspaces\n return Array.isArray(workspaces) && workspaces.length > 0\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 checkDiscoverable(\n pkg: Record<string, unknown>,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n const globs = pkg.workspaces as string[]\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 result.errors.push(`${name} (${location}) is not matched by any workspace glob in package.json`)\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 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() ?? process.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)) {\n console.log(chalk.gray('Not a monorepo — skipping package-lint checks'))\n return 0\n }\n\n console.log(chalk.green('Package Lint'))\n\n const workspaces = getPackageManager().listWorkspaces()\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 { check: () => checkDiscoverable(pkg, workspaces), label: 'All packages are discoverable from workspace globs' },\n ]\n\n const { errors, fixed } = runChecks(checks, cwd, pkg, fix)\n logSummary(errors, fixed)\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 + `Install @xylabs/ts-scripts-${pmName === 'yarn' ? 'yarn3' : pmName} and ensure it is imported.`,\n )\n }\n return pm\n}\n","export function INIT_CWD(): string | undefined {\n if (!process.env.INIT_CWD) console.error('Missing INIT_CWD')\n return process.env.INIT_CWD\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,387 @@
1
+ // src/actions/packman/convert.ts
2
+ import {
3
+ existsSync as existsSync3,
4
+ readdirSync,
5
+ readFileSync as readFileSync3,
6
+ statSync
7
+ } from "fs";
8
+ import PATH3 from "path";
9
+ import chalk3 from "chalk";
10
+
11
+ // src/actions/packman/convertToPnpm.ts
12
+ import {
13
+ existsSync,
14
+ mkdirSync,
15
+ readFileSync,
16
+ rmSync,
17
+ writeFileSync
18
+ } from "fs";
19
+ import PATH from "path";
20
+ import chalk from "chalk";
21
+
22
+ // src/actions/packman/rewriteScripts.ts
23
+ function rewriteYarnToPnpm(script) {
24
+ let result = script;
25
+ result = result.replaceAll(/\byarn workspace (\S+) run /g, "pnpm --filter $1 run ");
26
+ result = result.replaceAll(/\byarn workspace (\S+) (package-\S+)/g, "pnpm --filter $1 run $2");
27
+ result = result.replaceAll(/\byarn workspaces foreach\s+(?:[^\s]*\s+)*run /g, "pnpm -r run ");
28
+ result = result.replaceAll(/\byarn workspaces foreach --all version (\S+) --deferred/g, "pnpm -r exec npm version $1 --no-git-tag-version");
29
+ result = result.replaceAll(/\byarn version apply --all/g, 'echo "versions applied"');
30
+ result = result.replaceAll(/\byarn xy\b/g, "pnpm xy");
31
+ result = result.replaceAll(/\byarn add\b/g, "pnpm add");
32
+ result = result.replaceAll(/\byarn remove\b/g, "pnpm remove");
33
+ result = result.replaceAll(/\byarn install\b/g, "pnpm install");
34
+ result = result.replaceAll(/\byarn dedupe\b/g, "pnpm dedupe");
35
+ result = result.replaceAll(/\byarn outdated\b/g, "pnpm outdated");
36
+ result = result.replaceAll(/\byarn run\b/g, "pnpm run");
37
+ result = result.replaceAll(/\byarn rimraf\b/g, "rimraf");
38
+ result = result.replaceAll(/\byarn npm\b/g, "npm");
39
+ result = result.replaceAll(/\byarn\b(?![@/.])/g, "pnpm");
40
+ return result;
41
+ }
42
+ function rewritePnpmToYarn(script) {
43
+ let result = script;
44
+ result = result.replaceAll(/\bpnpm --filter (\S+) run /g, "yarn workspace $1 run ");
45
+ result = result.replaceAll(/\bpnpm -r run /g, "yarn workspaces foreach -Apt run ");
46
+ result = result.replaceAll(/\bpnpm -r exec npm version (\S+) --no-git-tag-version/g, "yarn workspaces foreach --all version $1 --deferred");
47
+ result = result.replaceAll(/\bpnpm xy\b/g, "yarn xy");
48
+ result = result.replaceAll(/\bpnpm add\b/g, "yarn add");
49
+ result = result.replaceAll(/\bpnpm remove\b/g, "yarn remove");
50
+ result = result.replaceAll(/\bpnpm install\b/g, "yarn install");
51
+ result = result.replaceAll(/\bpnpm dedupe\b/g, "yarn dedupe");
52
+ result = result.replaceAll(/\bpnpm outdated\b/g, "yarn outdated");
53
+ result = result.replaceAll(/\bpnpm run\b/g, "yarn run");
54
+ result = result.replaceAll(/\bpnpm\b(?![@/.])/g, "yarn");
55
+ return result;
56
+ }
57
+ function rewriteScript(script, direction) {
58
+ return direction === "yarn-to-pnpm" ? rewriteYarnToPnpm(script) : rewritePnpmToYarn(script);
59
+ }
60
+ function rewriteScriptsInPackageJson(pkg, direction) {
61
+ const scripts = pkg.scripts;
62
+ if (!scripts) return pkg;
63
+ const rewritten = {};
64
+ for (const [name, script] of Object.entries(scripts)) {
65
+ rewritten[name] = rewriteScript(script, direction);
66
+ }
67
+ return { ...pkg, scripts: rewritten };
68
+ }
69
+
70
+ // src/actions/packman/convertToPnpm.ts
71
+ var PNPM_VERSION = "10.12.1";
72
+ function createPnpmWorkspaceYaml(cwd, workspacePatterns) {
73
+ const lines = ["packages:"];
74
+ for (const pattern of workspacePatterns) {
75
+ lines.push(` - '${pattern}'`);
76
+ }
77
+ writeFileSync(PATH.join(cwd, "pnpm-workspace.yaml"), lines.join("\n") + "\n", "utf8");
78
+ console.log(chalk.green(" Created pnpm-workspace.yaml"));
79
+ }
80
+ function updateRootPackageJson(cwd) {
81
+ const pkgPath = PATH.join(cwd, "package.json");
82
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
83
+ const workspacePatterns = pkg.workspaces ?? [];
84
+ delete pkg.workspaces;
85
+ pkg.packageManager = `pnpm@${PNPM_VERSION}`;
86
+ const updated = rewriteScriptsInPackageJson(pkg, "yarn-to-pnpm");
87
+ writeFileSync(pkgPath, JSON.stringify(updated, null, 2) + "\n", "utf8");
88
+ console.log(chalk.green(" Updated root package.json"));
89
+ return workspacePatterns;
90
+ }
91
+ function updateGitignore(cwd) {
92
+ const gitignorePath = PATH.join(cwd, ".gitignore");
93
+ if (!existsSync(gitignorePath)) return;
94
+ let content = readFileSync(gitignorePath, "utf8");
95
+ const yarnLines = [
96
+ ".pnp.*",
97
+ ".pnp",
98
+ ".yarn/*",
99
+ "!.yarn/patches",
100
+ "!.yarn/plugins",
101
+ "!.yarn/releases",
102
+ "!.yarn/sdks",
103
+ "!.yarn/versions"
104
+ ];
105
+ for (const line of yarnLines) {
106
+ content = content.replaceAll(new RegExp(String.raw`^${line.replaceAll(".", String.raw`\.`).replaceAll("*", String.raw`\*`).replaceAll("!", String.raw`\!`)}\s*$`, "gm"), "");
107
+ }
108
+ content = content.replaceAll(/\n{3,}/g, "\n\n");
109
+ writeFileSync(gitignorePath, content, "utf8");
110
+ console.log(chalk.green(" Updated .gitignore"));
111
+ }
112
+ function deleteYarnArtifacts(cwd) {
113
+ const yarnLock = PATH.join(cwd, "yarn.lock");
114
+ const yarnrc = PATH.join(cwd, ".yarnrc.yml");
115
+ const yarnDir = PATH.join(cwd, ".yarn");
116
+ if (existsSync(yarnLock)) {
117
+ rmSync(yarnLock);
118
+ console.log(chalk.gray(" Deleted yarn.lock"));
119
+ }
120
+ if (existsSync(yarnrc)) {
121
+ rmSync(yarnrc);
122
+ console.log(chalk.gray(" Deleted .yarnrc.yml"));
123
+ }
124
+ if (existsSync(yarnDir)) {
125
+ rmSync(yarnDir, { force: true, recursive: true });
126
+ console.log(chalk.gray(" Deleted .yarn/"));
127
+ }
128
+ }
129
+ function createNpmrc(cwd) {
130
+ const npmrcPath = PATH.join(cwd, ".npmrc");
131
+ if (existsSync(npmrcPath)) return;
132
+ mkdirSync(PATH.dirname(npmrcPath), { recursive: true });
133
+ writeFileSync(npmrcPath, "", "utf8");
134
+ console.log(chalk.green(" Created .npmrc"));
135
+ }
136
+ function convertToPnpm(cwd, workspacePackageJsonPaths) {
137
+ console.log(chalk.blue("\nConverting to pnpm...\n"));
138
+ const workspacePatterns = updateRootPackageJson(cwd);
139
+ createPnpmWorkspaceYaml(cwd, workspacePatterns);
140
+ for (const pkgPath of workspacePackageJsonPaths) {
141
+ const fullPath = PATH.resolve(cwd, pkgPath, "package.json");
142
+ if (!existsSync(fullPath)) continue;
143
+ const pkg = JSON.parse(readFileSync(fullPath, "utf8"));
144
+ const updated = rewriteScriptsInPackageJson(pkg, "yarn-to-pnpm");
145
+ if (JSON.stringify(pkg) !== JSON.stringify(updated)) {
146
+ writeFileSync(fullPath, JSON.stringify(updated, null, 2) + "\n", "utf8");
147
+ }
148
+ }
149
+ console.log(chalk.green(` Rewrote scripts in ${workspacePackageJsonPaths.length} workspace package(s)`));
150
+ updateGitignore(cwd);
151
+ createNpmrc(cwd);
152
+ deleteYarnArtifacts(cwd);
153
+ console.log(chalk.blue("\nConversion complete. Run `pnpm install` to generate pnpm-lock.yaml.\n"));
154
+ return 0;
155
+ }
156
+
157
+ // src/actions/packman/convertToYarn.ts
158
+ import {
159
+ existsSync as existsSync2,
160
+ readFileSync as readFileSync2,
161
+ rmSync as rmSync2,
162
+ writeFileSync as writeFileSync2
163
+ } from "fs";
164
+ import PATH2 from "path";
165
+ import chalk2 from "chalk";
166
+ var YARN_VERSION = "4.13.0";
167
+ var YARNRC_TEMPLATE = `compressionLevel: mixed
168
+
169
+ enableGlobalCache: true
170
+
171
+ enableInlineBuilds: true
172
+
173
+ nmHoistingLimits: none
174
+
175
+ nodeLinker: node-modules
176
+ `;
177
+ var YARN_GITIGNORE_ENTRIES = `
178
+ .pnp.*
179
+ .yarn/*
180
+ !.yarn/patches
181
+ !.yarn/plugins
182
+ !.yarn/releases
183
+ !.yarn/sdks
184
+ !.yarn/versions
185
+ `;
186
+ function readPnpmWorkspacePatterns(cwd) {
187
+ const wsPath = PATH2.join(cwd, "pnpm-workspace.yaml");
188
+ if (!existsSync2(wsPath)) return [];
189
+ const content = readFileSync2(wsPath, "utf8");
190
+ const patterns = [];
191
+ const lines = content.split("\n");
192
+ let inPackages = false;
193
+ for (const line of lines) {
194
+ if (line.trim() === "packages:") {
195
+ inPackages = true;
196
+ continue;
197
+ }
198
+ if (inPackages && /^\s+-\s+/.test(line)) {
199
+ const pattern = line.replace(/^\s+-\s+/, "").replaceAll(/['"]/g, "").trim();
200
+ if (pattern) patterns.push(pattern);
201
+ } else if (inPackages && !/^\s/.test(line) && line.trim()) {
202
+ inPackages = false;
203
+ }
204
+ }
205
+ return patterns;
206
+ }
207
+ function updateRootPackageJson2(cwd, workspacePatterns) {
208
+ const pkgPath = PATH2.join(cwd, "package.json");
209
+ const pkg = JSON.parse(readFileSync2(pkgPath, "utf8"));
210
+ pkg.workspaces = workspacePatterns;
211
+ pkg.packageManager = `yarn@${YARN_VERSION}`;
212
+ const updated = rewriteScriptsInPackageJson(pkg, "pnpm-to-yarn");
213
+ writeFileSync2(pkgPath, JSON.stringify(updated, null, 2) + "\n", "utf8");
214
+ console.log(chalk2.green(" Updated root package.json"));
215
+ }
216
+ function updateGitignore2(cwd) {
217
+ const gitignorePath = PATH2.join(cwd, ".gitignore");
218
+ let content = existsSync2(gitignorePath) ? readFileSync2(gitignorePath, "utf8") : "";
219
+ if (!content.includes(".yarn/*")) {
220
+ content = content.trimEnd() + "\n" + YARN_GITIGNORE_ENTRIES;
221
+ }
222
+ writeFileSync2(gitignorePath, content, "utf8");
223
+ console.log(chalk2.green(" Updated .gitignore"));
224
+ }
225
+ function deletePnpmArtifacts(cwd) {
226
+ const lockfile = PATH2.join(cwd, "pnpm-lock.yaml");
227
+ const workspaceYaml = PATH2.join(cwd, "pnpm-workspace.yaml");
228
+ const npmrc = PATH2.join(cwd, ".npmrc");
229
+ if (existsSync2(lockfile)) {
230
+ rmSync2(lockfile);
231
+ console.log(chalk2.gray(" Deleted pnpm-lock.yaml"));
232
+ }
233
+ if (existsSync2(workspaceYaml)) {
234
+ rmSync2(workspaceYaml);
235
+ console.log(chalk2.gray(" Deleted pnpm-workspace.yaml"));
236
+ }
237
+ if (existsSync2(npmrc)) {
238
+ const content = readFileSync2(npmrc, "utf8");
239
+ if (content.trim() === "" || content.includes("shamefully-hoist") || content.includes("node-linker")) {
240
+ rmSync2(npmrc);
241
+ console.log(chalk2.gray(" Deleted .npmrc"));
242
+ }
243
+ }
244
+ }
245
+ function createYarnrc(cwd) {
246
+ const yarnrcPath = PATH2.join(cwd, ".yarnrc.yml");
247
+ if (existsSync2(yarnrcPath)) return;
248
+ writeFileSync2(yarnrcPath, YARNRC_TEMPLATE, "utf8");
249
+ console.log(chalk2.green(" Created .yarnrc.yml"));
250
+ }
251
+ function convertToYarn(cwd, workspacePackageJsonPaths) {
252
+ console.log(chalk2.blue("\nConverting to yarn...\n"));
253
+ const workspacePatterns = readPnpmWorkspacePatterns(cwd);
254
+ if (workspacePatterns.length === 0) {
255
+ console.warn(chalk2.yellow(" No workspace patterns found in pnpm-workspace.yaml"));
256
+ }
257
+ updateRootPackageJson2(cwd, workspacePatterns);
258
+ for (const pkgPath of workspacePackageJsonPaths) {
259
+ const fullPath = PATH2.resolve(cwd, pkgPath, "package.json");
260
+ if (!existsSync2(fullPath)) continue;
261
+ const pkg = JSON.parse(readFileSync2(fullPath, "utf8"));
262
+ const updated = rewriteScriptsInPackageJson(pkg, "pnpm-to-yarn");
263
+ if (JSON.stringify(pkg) !== JSON.stringify(updated)) {
264
+ writeFileSync2(fullPath, JSON.stringify(updated, null, 2) + "\n", "utf8");
265
+ }
266
+ }
267
+ console.log(chalk2.green(` Rewrote scripts in ${workspacePackageJsonPaths.length} workspace package(s)`));
268
+ updateGitignore2(cwd);
269
+ createYarnrc(cwd);
270
+ deletePnpmArtifacts(cwd);
271
+ console.log(chalk2.blue("\nConversion complete. Run `corepack enable yarn && yarn set version stable && yarn install` to finish setup.\n"));
272
+ return 0;
273
+ }
274
+
275
+ // src/actions/packman/convert.ts
276
+ function detectCurrentPM(cwd) {
277
+ if (existsSync3(PATH3.join(cwd, "pnpm-lock.yaml")) || existsSync3(PATH3.join(cwd, "pnpm-workspace.yaml"))) {
278
+ return "pnpm";
279
+ }
280
+ if (existsSync3(PATH3.join(cwd, "yarn.lock")) || existsSync3(PATH3.join(cwd, ".yarnrc.yml"))) {
281
+ return "yarn";
282
+ }
283
+ return "unknown";
284
+ }
285
+ function findWorkspacePackagePaths(cwd) {
286
+ const pkgPath = PATH3.join(cwd, "package.json");
287
+ const pkg = JSON.parse(readFileSync3(pkgPath, "utf8"));
288
+ let patterns = pkg.workspaces ?? [];
289
+ if (patterns.length === 0) {
290
+ const wsPath = PATH3.join(cwd, "pnpm-workspace.yaml");
291
+ if (existsSync3(wsPath)) {
292
+ const content = readFileSync3(wsPath, "utf8");
293
+ const lines = content.split("\n");
294
+ let inPackages = false;
295
+ for (const line of lines) {
296
+ if (line.trim() === "packages:") {
297
+ inPackages = true;
298
+ continue;
299
+ }
300
+ if (inPackages && /^\s+-\s+/.test(line)) {
301
+ const pattern = line.replace(/^\s+-\s+/, "").replaceAll(/['"]/g, "").trim();
302
+ if (pattern) patterns.push(pattern);
303
+ } else if (inPackages && !/^\s/.test(line) && line.trim()) {
304
+ inPackages = false;
305
+ }
306
+ }
307
+ }
308
+ }
309
+ const dirs = [];
310
+ for (const pattern of patterns) {
311
+ const resolved = resolveWorkspaceGlob(cwd, pattern);
312
+ dirs.push(...resolved);
313
+ }
314
+ return dirs;
315
+ }
316
+ function resolveWorkspaceGlob(cwd, pattern) {
317
+ const parts = pattern.split("/");
318
+ return walkGlob(cwd, parts, "");
319
+ }
320
+ function walkGlob(basePath, parts, currentPath) {
321
+ if (parts.length === 0) {
322
+ const fullPath = PATH3.join(basePath, currentPath);
323
+ if (existsSync3(PATH3.join(fullPath, "package.json"))) {
324
+ return [currentPath];
325
+ }
326
+ return [];
327
+ }
328
+ const [part, ...rest] = parts;
329
+ const dirPath = PATH3.join(basePath, currentPath);
330
+ if (!existsSync3(dirPath) || !statSync(dirPath).isDirectory()) {
331
+ return [];
332
+ }
333
+ if (part === "*" || part === "**") {
334
+ const entries = readdirSync(dirPath, { withFileTypes: true }).filter((e) => e.isDirectory() && !e.name.startsWith(".") && e.name !== "node_modules" && e.name !== "dist");
335
+ const results = [];
336
+ if (part === "**") {
337
+ results.push(...walkGlob(basePath, rest, currentPath));
338
+ }
339
+ for (const entry of entries) {
340
+ const subPath2 = currentPath ? `${currentPath}/${entry.name}` : entry.name;
341
+ if (part === "**") {
342
+ results.push(
343
+ ...walkGlob(basePath, rest, subPath2),
344
+ ...walkGlob(basePath, parts, subPath2)
345
+ );
346
+ } else {
347
+ results.push(...walkGlob(basePath, rest, subPath2));
348
+ }
349
+ }
350
+ return results;
351
+ }
352
+ const subPath = currentPath ? `${currentPath}/${part}` : part;
353
+ return walkGlob(basePath, rest, subPath);
354
+ }
355
+ function convert({ target, verbose }) {
356
+ const validTargets = ["pnpm", "yarn"];
357
+ if (!validTargets.includes(target)) {
358
+ console.error(chalk3.red(`Invalid target "${target}". Must be one of: ${validTargets.join(", ")}`));
359
+ return 1;
360
+ }
361
+ const cwd = process.cwd();
362
+ const currentPM = detectCurrentPM(cwd);
363
+ if (verbose) {
364
+ console.log(chalk3.gray(`Current package manager: ${currentPM}`));
365
+ console.log(chalk3.gray(`Target package manager: ${target}`));
366
+ }
367
+ if (currentPM === target) {
368
+ console.error(chalk3.red(`Already using ${target}. No conversion needed.`));
369
+ return 1;
370
+ }
371
+ if (currentPM === "unknown") {
372
+ console.error(chalk3.red("Could not detect current package manager. No yarn.lock or pnpm-lock.yaml found."));
373
+ return 1;
374
+ }
375
+ const workspacePaths = findWorkspacePackagePaths(cwd);
376
+ if (verbose) {
377
+ console.log(chalk3.gray(`Found ${workspacePaths.length} workspace packages`));
378
+ }
379
+ if (target === "pnpm") {
380
+ return convertToPnpm(cwd, workspacePaths);
381
+ }
382
+ return convertToYarn(cwd, workspacePaths);
383
+ }
384
+ export {
385
+ convert
386
+ };
387
+ //# sourceMappingURL=convert.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/actions/packman/convert.ts","../../../src/actions/packman/convertToPnpm.ts","../../../src/actions/packman/rewriteScripts.ts","../../../src/actions/packman/convertToYarn.ts"],"sourcesContent":["import {\n existsSync, readdirSync, readFileSync, statSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\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\nfunction 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\nfunction 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'))\n\n let patterns: string[] = pkg.workspaces ?? []\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.error(chalk.red(`Already using ${target}. No conversion needed.`))\n return 1\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 if (target === 'pnpm') {\n return convertToPnpm(cwd, workspacePaths)\n }\n return convertToYarn(cwd, workspacePaths)\n}\n","import {\n existsSync, mkdirSync, readFileSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { rewriteScriptsInPackageJson } from './rewriteScripts.ts'\n\nconst PNPM_VERSION = '10.12.1'\n\nfunction createPnpmWorkspaceYaml(cwd: string, workspacePatterns: string[]): void {\n const lines = ['packages:']\n for (const pattern of workspacePatterns) {\n lines.push(` - '${pattern}'`)\n }\n writeFileSync(PATH.join(cwd, 'pnpm-workspace.yaml'), lines.join('\\n') + '\\n', 'utf8')\n console.log(chalk.green(' Created pnpm-workspace.yaml'))\n}\n\nfunction updateRootPackageJson(cwd: string): string[] {\n const pkgPath = PATH.join(cwd, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))\n\n // Save workspace patterns before removing\n const workspacePatterns: string[] = pkg.workspaces ?? []\n\n // Remove yarn workspaces field (pnpm uses pnpm-workspace.yaml)\n delete pkg.workspaces\n\n // Update packageManager\n pkg.packageManager = `pnpm@${PNPM_VERSION}`\n\n // Rewrite scripts\n const updated = rewriteScriptsInPackageJson(pkg, 'yarn-to-pnpm')\n\n writeFileSync(pkgPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n console.log(chalk.green(' Updated root package.json'))\n\n return workspacePatterns\n}\n\nfunction updateGitignore(cwd: string): void {\n const gitignorePath = PATH.join(cwd, '.gitignore')\n if (!existsSync(gitignorePath)) return\n\n let content = readFileSync(gitignorePath, 'utf8')\n\n // Remove yarn-specific entries\n const yarnLines = [\n '.pnp.*',\n '.pnp',\n '.yarn/*',\n '!.yarn/patches',\n '!.yarn/plugins',\n '!.yarn/releases',\n '!.yarn/sdks',\n '!.yarn/versions',\n ]\n for (const line of yarnLines) {\n content = content.replaceAll(new RegExp(String.raw`^${line.replaceAll('.', String.raw`\\.`).replaceAll('*', String.raw`\\*`).replaceAll('!', String.raw`\\!`)}\\s*$`, 'gm'), '')\n }\n\n // Clean up multiple blank lines\n content = content.replaceAll(/\\n{3,}/g, '\\n\\n')\n\n writeFileSync(gitignorePath, content, 'utf8')\n console.log(chalk.green(' Updated .gitignore'))\n}\n\nfunction deleteYarnArtifacts(cwd: string): void {\n const yarnLock = PATH.join(cwd, 'yarn.lock')\n const yarnrc = PATH.join(cwd, '.yarnrc.yml')\n const yarnDir = PATH.join(cwd, '.yarn')\n\n if (existsSync(yarnLock)) {\n rmSync(yarnLock)\n console.log(chalk.gray(' Deleted yarn.lock'))\n }\n if (existsSync(yarnrc)) {\n rmSync(yarnrc)\n console.log(chalk.gray(' Deleted .yarnrc.yml'))\n }\n if (existsSync(yarnDir)) {\n rmSync(yarnDir, { force: true, recursive: true })\n console.log(chalk.gray(' Deleted .yarn/'))\n }\n}\n\nfunction createNpmrc(cwd: string): void {\n const npmrcPath = PATH.join(cwd, '.npmrc')\n if (existsSync(npmrcPath)) return\n\n mkdirSync(PATH.dirname(npmrcPath), { recursive: true })\n writeFileSync(npmrcPath, '', 'utf8')\n console.log(chalk.green(' Created .npmrc'))\n}\n\nexport function convertToPnpm(cwd: string, workspacePackageJsonPaths: string[]): number {\n console.log(chalk.blue('\\nConverting to pnpm...\\n'))\n\n // 1. Read workspace patterns and update root package.json\n const workspacePatterns = updateRootPackageJson(cwd)\n\n // 2. Create pnpm-workspace.yaml\n createPnpmWorkspaceYaml(cwd, workspacePatterns)\n\n // 3. Rewrite scripts in workspace package.json files\n for (const pkgPath of workspacePackageJsonPaths) {\n const fullPath = PATH.resolve(cwd, pkgPath, 'package.json')\n if (!existsSync(fullPath)) continue\n const pkg = JSON.parse(readFileSync(fullPath, 'utf8'))\n const updated = rewriteScriptsInPackageJson(pkg, 'yarn-to-pnpm')\n if (JSON.stringify(pkg) !== JSON.stringify(updated)) {\n writeFileSync(fullPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n }\n }\n console.log(chalk.green(` Rewrote scripts in ${workspacePackageJsonPaths.length} workspace package(s)`))\n\n // 4. Update .gitignore\n updateGitignore(cwd)\n\n // 5. Create .npmrc\n createNpmrc(cwd)\n\n // 6. Delete yarn artifacts\n deleteYarnArtifacts(cwd)\n\n console.log(chalk.blue('\\nConversion complete. Run `pnpm install` to generate pnpm-lock.yaml.\\n'))\n return 0\n}\n","type Direction = 'pnpm-to-yarn' | 'yarn-to-pnpm'\n\nfunction rewriteYarnToPnpm(script: string): string {\n let result = script\n // yarn workspace @pkg run script → pnpm --filter @pkg run script\n result = result.replaceAll(/\\byarn workspace (\\S+) run /g, 'pnpm --filter $1 run ')\n // yarn workspace @pkg package-X → pnpm --filter @pkg run package-X\n result = result.replaceAll(/\\byarn workspace (\\S+) (package-\\S+)/g, 'pnpm --filter $1 run $2')\n // yarn workspaces foreach [flags] run script → pnpm -r run script\n result = result.replaceAll(/\\byarn workspaces foreach\\s+(?:[^\\s]*\\s+)*run /g, 'pnpm -r run ')\n // yarn workspaces foreach --all version X --deferred → pnpm -r exec npm version X --no-git-tag-version\n result = result.replaceAll(/\\byarn workspaces foreach --all version (\\S+) --deferred/g, 'pnpm -r exec npm version $1 --no-git-tag-version')\n // yarn version apply --all → (remove, handled in bump)\n result = result.replaceAll(/\\byarn version apply --all/g, 'echo \"versions applied\"')\n // yarn xy → pnpm xy\n result = result.replaceAll(/\\byarn xy\\b/g, 'pnpm xy')\n // yarn add/remove/install/dedupe/outdated → pnpm equivalents\n result = result.replaceAll(/\\byarn add\\b/g, 'pnpm add')\n result = result.replaceAll(/\\byarn remove\\b/g, 'pnpm remove')\n result = result.replaceAll(/\\byarn install\\b/g, 'pnpm install')\n result = result.replaceAll(/\\byarn dedupe\\b/g, 'pnpm dedupe')\n result = result.replaceAll(/\\byarn outdated\\b/g, 'pnpm outdated')\n result = result.replaceAll(/\\byarn run\\b/g, 'pnpm run')\n // yarn rimraf → rimraf (no PM prefix)\n result = result.replaceAll(/\\byarn rimraf\\b/g, 'rimraf')\n // yarn npm → npm (direct)\n result = result.replaceAll(/\\byarn npm\\b/g, 'npm')\n // Remaining bare \"yarn\" at word boundary (but not in URLs or package names)\n result = result.replaceAll(/\\byarn\\b(?![@/.])/g, 'pnpm')\n return result\n}\n\nfunction rewritePnpmToYarn(script: string): string {\n let result = script\n // pnpm --filter @pkg run script → yarn workspace @pkg run script\n result = result.replaceAll(/\\bpnpm --filter (\\S+) run /g, 'yarn workspace $1 run ')\n // pnpm -r run script → yarn workspaces foreach -Apt run script\n result = result.replaceAll(/\\bpnpm -r run /g, 'yarn workspaces foreach -Apt run ')\n // pnpm -r exec npm version X → yarn workspaces foreach --all version X --deferred\n result = result.replaceAll(/\\bpnpm -r exec npm version (\\S+) --no-git-tag-version/g, 'yarn workspaces foreach --all version $1 --deferred')\n // pnpm xy → yarn xy\n result = result.replaceAll(/\\bpnpm xy\\b/g, 'yarn xy')\n // pnpm add/remove/install/dedupe/outdated → yarn equivalents\n result = result.replaceAll(/\\bpnpm add\\b/g, 'yarn add')\n result = result.replaceAll(/\\bpnpm remove\\b/g, 'yarn remove')\n result = result.replaceAll(/\\bpnpm install\\b/g, 'yarn install')\n result = result.replaceAll(/\\bpnpm dedupe\\b/g, 'yarn dedupe')\n result = result.replaceAll(/\\bpnpm outdated\\b/g, 'yarn outdated')\n result = result.replaceAll(/\\bpnpm run\\b/g, 'yarn run')\n // Remaining bare \"pnpm\"\n result = result.replaceAll(/\\bpnpm\\b(?![@/.])/g, 'yarn')\n return result\n}\n\nexport function rewriteScript(script: string, direction: Direction): string {\n return direction === 'yarn-to-pnpm'\n ? rewriteYarnToPnpm(script)\n : rewritePnpmToYarn(script)\n}\n\nexport function rewriteScriptsInPackageJson(\n pkg: Record<string, unknown>,\n direction: Direction,\n): Record<string, unknown> {\n const scripts = pkg.scripts as Record<string, string> | undefined\n if (!scripts) return pkg\n\n const rewritten: Record<string, string> = {}\n for (const [name, script] of Object.entries(scripts)) {\n rewritten[name] = rewriteScript(script, direction)\n }\n return { ...pkg, scripts: rewritten }\n}\n","import {\n existsSync, readFileSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { rewriteScriptsInPackageJson } from './rewriteScripts.ts'\n\nconst YARN_VERSION = '4.13.0'\n\nconst YARNRC_TEMPLATE = `compressionLevel: mixed\n\nenableGlobalCache: true\n\nenableInlineBuilds: true\n\nnmHoistingLimits: none\n\nnodeLinker: node-modules\n`\n\nconst YARN_GITIGNORE_ENTRIES = `\n.pnp.*\n.yarn/*\n!.yarn/patches\n!.yarn/plugins\n!.yarn/releases\n!.yarn/sdks\n!.yarn/versions\n`\n\nfunction readPnpmWorkspacePatterns(cwd: string): string[] {\n const wsPath = PATH.join(cwd, 'pnpm-workspace.yaml')\n if (!existsSync(wsPath)) return []\n\n const content = readFileSync(wsPath, 'utf8')\n const patterns: string[] = []\n // Simple YAML parsing for packages list\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 return patterns\n}\n\nfunction updateRootPackageJson(cwd: string, workspacePatterns: string[]): void {\n const pkgPath = PATH.join(cwd, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))\n\n // Add workspaces field\n pkg.workspaces = workspacePatterns\n\n // Update packageManager\n pkg.packageManager = `yarn@${YARN_VERSION}`\n\n // Rewrite scripts\n const updated = rewriteScriptsInPackageJson(pkg, 'pnpm-to-yarn')\n\n writeFileSync(pkgPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n console.log(chalk.green(' Updated root package.json'))\n}\n\nfunction updateGitignore(cwd: string): void {\n const gitignorePath = PATH.join(cwd, '.gitignore')\n let content = existsSync(gitignorePath) ? readFileSync(gitignorePath, 'utf8') : ''\n\n // Add yarn entries if not already present\n if (!content.includes('.yarn/*')) {\n content = content.trimEnd() + '\\n' + YARN_GITIGNORE_ENTRIES\n }\n\n writeFileSync(gitignorePath, content, 'utf8')\n console.log(chalk.green(' Updated .gitignore'))\n}\n\nfunction deletePnpmArtifacts(cwd: string): void {\n const lockfile = PATH.join(cwd, 'pnpm-lock.yaml')\n const workspaceYaml = PATH.join(cwd, 'pnpm-workspace.yaml')\n const npmrc = PATH.join(cwd, '.npmrc')\n\n if (existsSync(lockfile)) {\n rmSync(lockfile)\n console.log(chalk.gray(' Deleted pnpm-lock.yaml'))\n }\n if (existsSync(workspaceYaml)) {\n rmSync(workspaceYaml)\n console.log(chalk.gray(' Deleted pnpm-workspace.yaml'))\n }\n if (existsSync(npmrc)) {\n const content = readFileSync(npmrc, 'utf8')\n // Only delete if it's empty or pnpm-specific\n if (content.trim() === '' || content.includes('shamefully-hoist') || content.includes('node-linker')) {\n rmSync(npmrc)\n console.log(chalk.gray(' Deleted .npmrc'))\n }\n }\n}\n\nfunction createYarnrc(cwd: string): void {\n const yarnrcPath = PATH.join(cwd, '.yarnrc.yml')\n if (existsSync(yarnrcPath)) return\n\n writeFileSync(yarnrcPath, YARNRC_TEMPLATE, 'utf8')\n console.log(chalk.green(' Created .yarnrc.yml'))\n}\n\nexport function convertToYarn(cwd: string, workspacePackageJsonPaths: string[]): number {\n console.log(chalk.blue('\\nConverting to yarn...\\n'))\n\n // 1. Read workspace patterns from pnpm-workspace.yaml\n const workspacePatterns = readPnpmWorkspacePatterns(cwd)\n if (workspacePatterns.length === 0) {\n console.warn(chalk.yellow(' No workspace patterns found in pnpm-workspace.yaml'))\n }\n\n // 2. Update root package.json\n updateRootPackageJson(cwd, workspacePatterns)\n\n // 3. Rewrite scripts in workspace package.json files\n for (const pkgPath of workspacePackageJsonPaths) {\n const fullPath = PATH.resolve(cwd, pkgPath, 'package.json')\n if (!existsSync(fullPath)) continue\n const pkg = JSON.parse(readFileSync(fullPath, 'utf8'))\n const updated = rewriteScriptsInPackageJson(pkg, 'pnpm-to-yarn')\n if (JSON.stringify(pkg) !== JSON.stringify(updated)) {\n writeFileSync(fullPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n }\n }\n console.log(chalk.green(` Rewrote scripts in ${workspacePackageJsonPaths.length} workspace package(s)`))\n\n // 4. Update .gitignore\n updateGitignore(cwd)\n\n // 5. Create .yarnrc.yml\n createYarnrc(cwd)\n\n // 6. Delete pnpm artifacts\n deletePnpmArtifacts(cwd)\n\n console.log(chalk.blue('\\nConversion complete. Run `corepack enable yarn && yarn set version stable && yarn install` to finish setup.\\n'))\n return 0\n}\n"],"mappings":"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","names":["existsSync","readFileSync","PATH","chalk","existsSync","readFileSync","rmSync","writeFileSync","PATH","chalk","PATH","existsSync","readFileSync","updateRootPackageJson","writeFileSync","chalk","updateGitignore","rmSync","existsSync","PATH","readFileSync","subPath","chalk"]}