@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,142 @@
1
+ // src/lib/checkResult.ts
2
+ import chalk from "chalk";
3
+ var checkResult = (name, result, level = "error", exitOnFail = false) => {
4
+ if (result) {
5
+ const exiting = exitOnFail ? "[Exiting Process]" : "[Continuing]";
6
+ const chalkFunc = level === "error" ? chalk.red : chalk.yellow;
7
+ console[level](chalkFunc(`${name} had ${result} failures ${exiting}`));
8
+ if (exitOnFail) {
9
+ process.exit(result);
10
+ }
11
+ }
12
+ };
13
+
14
+ // src/pm/detectPackageManager.ts
15
+ import { existsSync } from "fs";
16
+ function detectPackageManager() {
17
+ if (existsSync("pnpm-lock.yaml") || existsSync("pnpm-workspace.yaml")) return "pnpm";
18
+ return "yarn";
19
+ }
20
+
21
+ // src/pm/registry.ts
22
+ var implementations = /* @__PURE__ */ new Map();
23
+ function getPackageManager(name) {
24
+ const pmName = name ?? detectPackageManager();
25
+ const pm = implementations.get(pmName);
26
+ if (!pm) {
27
+ throw new Error(
28
+ `No package manager implementation registered for "${pmName}". Install @xylabs/ts-scripts-${pmName === "yarn" ? "yarn3" : pmName} and ensure it is imported.`
29
+ );
30
+ }
31
+ return pm;
32
+ }
33
+
34
+ // src/lib/processEx.ts
35
+ import chalk2 from "chalk";
36
+
37
+ // src/lib/withError.ts
38
+ var withError = (ex, closure, predicate = (ex2) => !!ex2.name && !!ex2.message) => {
39
+ return predicate(ex) ? closure(ex) : void 0;
40
+ };
41
+
42
+ // src/lib/withErrnoException.ts
43
+ var withErrnoException = (ex, closure) => {
44
+ return withError(ex, closure, (ex2) => ex2.errno !== void 0);
45
+ };
46
+
47
+ // src/lib/processEx.ts
48
+ var processEx = (ex) => {
49
+ const error = typeof ex === "string" ? new Error(ex) : ex;
50
+ const exitCode = withErrnoException(error, (error2) => {
51
+ if (error2.code === "ENOENT") {
52
+ console.error(chalk2.red(`'${error2.path}' not found.`));
53
+ } else {
54
+ console.error(chalk2.red(`Errno: ${error2.code}`));
55
+ }
56
+ return error2.errno ?? -1;
57
+ }) ?? withError(error, (error2) => {
58
+ console.error(chalk2.red(`${error2.name}: ${error2.message}`));
59
+ return -1;
60
+ }) ?? (() => {
61
+ console.error(chalk2.red(`Unexpected Error: ${JSON.stringify(ex, null, 2)}`));
62
+ return -1;
63
+ })();
64
+ process.exit(process.exitCode ?? exitCode);
65
+ };
66
+
67
+ // src/lib/safeExit.ts
68
+ var safeExit = (func, exitOnFail = true) => {
69
+ try {
70
+ const result = func();
71
+ if (result && exitOnFail) {
72
+ process.exit(result);
73
+ }
74
+ return result;
75
+ } catch (ex) {
76
+ return processEx(ex);
77
+ }
78
+ };
79
+
80
+ // src/lib/runSteps.ts
81
+ import { spawnSync } from "child_process";
82
+ import { existsSync as existsSync2 } from "fs";
83
+ import chalk3 from "chalk";
84
+ var runSteps = (name, steps, exitOnFail = true, messages) => {
85
+ return safeExit(() => {
86
+ const pkgName = process.env.npm_package_name;
87
+ console.log(chalk3.green(`${name} [${pkgName}]`));
88
+ let totalStatus = 0;
89
+ for (const [i, [command, args, config]] of steps.entries()) {
90
+ if (messages?.[i]) {
91
+ console.log(chalk3.gray(messages?.[i]));
92
+ }
93
+ const argList = Array.isArray(args) ? args : args.split(" ");
94
+ if (command === "node" && !existsSync2(argList[0])) {
95
+ throw new Error(`File not found [${argList[0]}]`);
96
+ }
97
+ const status = spawnSync(command, Array.isArray(args) ? args : args.split(" "), {
98
+ ...config,
99
+ encoding: "utf8",
100
+ env: { FORCE_COLOR: "3", ...process.env },
101
+ shell: true,
102
+ stdio: "inherit"
103
+ }).status ?? 0;
104
+ checkResult(name, status, "error", exitOnFail);
105
+ totalStatus += status ?? 0;
106
+ }
107
+ return totalStatus;
108
+ }, !!exitOnFail);
109
+ };
110
+
111
+ // src/actions/retest.ts
112
+ var retest = ({ target } = {}) => {
113
+ const pm = getPackageManager();
114
+ if (target && pm.findWorkspace(target)) {
115
+ return runSteps(`Re-Test [${target}]`, [
116
+ pm.runInWorkspace(target, "vitest", ["--clearCache"]),
117
+ pm.runInWorkspace(target, "vitest", ["."])
118
+ ]);
119
+ }
120
+ const path = target ?? ".";
121
+ return runSteps("Re-Test", [
122
+ ["vitest", ["--clearCache"]],
123
+ ["vitest", [path]]
124
+ ]);
125
+ };
126
+
127
+ // src/xy/common/retestCommand.ts
128
+ var retestCommand = {
129
+ command: "retest [target]",
130
+ describe: "Re-Test - Run Vitest Tests with cleaned cache",
131
+ builder: (yargs) => {
132
+ return yargs.positional("target", { describe: "Package name or file/folder path to test" });
133
+ },
134
+ handler: (argv) => {
135
+ if (argv.verbose) console.log(`Re-Testing: ${argv.target ?? "all"}`);
136
+ process.exitCode = retest({ target: argv.target });
137
+ }
138
+ };
139
+ export {
140
+ retestCommand
141
+ };
142
+ //# sourceMappingURL=retestCommand.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/checkResult.ts","../../../src/pm/detectPackageManager.ts","../../../src/pm/registry.ts","../../../src/lib/processEx.ts","../../../src/lib/withError.ts","../../../src/lib/withErrnoException.ts","../../../src/lib/safeExit.ts","../../../src/lib/runSteps.ts","../../../src/actions/retest.ts","../../../src/xy/common/retestCommand.ts"],"sourcesContent":["import chalk from 'chalk'\n\nexport const checkResult = (name: string, result: number, level: 'error' | 'warn' = 'error', exitOnFail = false) => {\n if (result) {\n const exiting = exitOnFail ? '[Exiting Process]' : '[Continuing]'\n const chalkFunc = level === 'error' ? chalk.red : chalk.yellow\n console[level](chalkFunc(`${name} had ${result} failures ${exiting}`))\n if (exitOnFail) {\n process.exit(result)\n }\n }\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","import chalk from 'chalk'\n\nimport { withErrnoException } from './withErrnoException.ts'\nimport { withError } from './withError.ts'\n\nexport const processEx = (ex: unknown) => {\n const error = typeof ex === 'string' ? new Error(ex) : ex\n const exitCode\n = withErrnoException(error, (error) => {\n if (error.code === 'ENOENT') {\n console.error(chalk.red(`'${error.path}' not found.`))\n } else {\n console.error(chalk.red(`Errno: ${error.code}`))\n }\n return error.errno ?? -1\n })\n ?? withError(error, (error) => {\n console.error(chalk.red(`${error.name}: ${error.message}`))\n return -1\n })\n ?? (() => {\n console.error(chalk.red(`Unexpected Error: ${JSON.stringify(ex, null, 2)}`))\n return -1\n })()\n // This allows us to use a previously set exit code\n process.exit(process.exitCode ?? exitCode)\n}\n","export const withError = <T extends Error = Error>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ex: any,\n closure: (error: T) => number,\n predicate = (ex: T) => (!!ex.name && !!ex.message),\n) => {\n return predicate(ex as T) ? closure(ex as T) : undefined\n}\n","import { withError } from './withError.ts'\n\nexport const withErrnoException = <T extends NodeJS.ErrnoException = NodeJS.ErrnoException>(\n ex: unknown, closure: (error: T) => number,\n) => {\n return withError<T>(ex, closure, (ex: unknown) => (ex as NodeJS.ErrnoException).errno !== undefined)\n}\n","/** Catch child process a crash and returns the code */\n\nimport { processEx } from './processEx.ts'\n\nconst safeExit = (func: () => number, exitOnFail = true): number => {\n try {\n const result = func()\n if (result && exitOnFail) {\n process.exit(result)\n }\n return result\n } catch (ex) {\n return processEx(ex)\n }\n}\n\nconst safeExitAsync = async (func: () => Promise<number>, exitOnFail = true): Promise<number> => {\n try {\n const result = await func()\n if (result && exitOnFail) {\n process.exit(result)\n }\n return result\n } catch (ex) {\n return processEx(ex)\n }\n}\n\nexport { safeExit, safeExitAsync }\n","import { spawnSync } from 'node:child_process'\nimport { existsSync } from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport type { ScriptStep } from '../pm/index.ts'\nimport { checkResult } from './checkResult.ts'\nimport { safeExit } from './safeExit.ts'\n\nexport type { ScriptStep } from '../pm/index.ts'\n\nexport const runSteps = (name: string, steps: ScriptStep[], exitOnFail = true, messages?: string[]): number => {\n return safeExit(() => {\n const pkgName = process.env.npm_package_name\n console.log(chalk.green(`${name} [${pkgName}]`))\n let totalStatus = 0\n for (const [i, [command, args, config]] of steps.entries()) {\n if (messages?.[i]) {\n console.log(chalk.gray(messages?.[i]))\n }\n const argList = Array.isArray(args) ? args : args.split(' ')\n if (command === 'node' && !existsSync(argList[0])) {\n throw new Error(`File not found [${argList[0]}]`)\n }\n const status\n = spawnSync(command, Array.isArray(args) ? args : args.split(' '), {\n ...config,\n encoding: 'utf8',\n env: { FORCE_COLOR: '3', ...process.env },\n shell: true,\n stdio: 'inherit',\n }).status ?? 0\n checkResult(name, status, 'error', exitOnFail)\n totalStatus += status ?? 0\n }\n return totalStatus\n }, !!exitOnFail)\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface RetestParams {\n target?: string\n}\n\nexport const retest = ({ target }: RetestParams = {}) => {\n const pm = getPackageManager()\n if (target && pm.findWorkspace(target)) {\n return runSteps(`Re-Test [${target}]`, [\n pm.runInWorkspace(target, 'vitest', ['--clearCache']),\n pm.runInWorkspace(target, 'vitest', ['.']),\n ])\n }\n const path = target ?? '.'\n return runSteps('Re-Test', [\n ['vitest', ['--clearCache']],\n ['vitest', [path]],\n ])\n}\n","import type { CommandModule } from 'yargs'\n\nimport { retest } from '../../actions/index.ts'\n\nexport const retestCommand: CommandModule = {\n command: 'retest [target]',\n describe: 'Re-Test - Run Vitest Tests with cleaned cache',\n builder: (yargs) => {\n return yargs.positional('target', { describe: 'Package name or file/folder path to test' })\n },\n handler: (argv) => {\n if (argv.verbose) console.log(`Re-Testing: ${argv.target ?? 'all'}`)\n process.exitCode = retest({ target: argv.target as string })\n },\n}\n"],"mappings":"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","names":["chalk","ex","ex","error","chalk","existsSync","chalk","chalk","existsSync"]}
@@ -0,0 +1,136 @@
1
+ // src/lib/checkResult.ts
2
+ import chalk from "chalk";
3
+ var checkResult = (name, result, level = "error", exitOnFail = false) => {
4
+ if (result) {
5
+ const exiting = exitOnFail ? "[Exiting Process]" : "[Continuing]";
6
+ const chalkFunc = level === "error" ? chalk.red : chalk.yellow;
7
+ console[level](chalkFunc(`${name} had ${result} failures ${exiting}`));
8
+ if (exitOnFail) {
9
+ process.exit(result);
10
+ }
11
+ }
12
+ };
13
+
14
+ // src/pm/detectPackageManager.ts
15
+ import { existsSync } from "fs";
16
+ function detectPackageManager() {
17
+ if (existsSync("pnpm-lock.yaml") || existsSync("pnpm-workspace.yaml")) return "pnpm";
18
+ return "yarn";
19
+ }
20
+
21
+ // src/pm/registry.ts
22
+ var implementations = /* @__PURE__ */ new Map();
23
+ function getPackageManager(name) {
24
+ const pmName = name ?? detectPackageManager();
25
+ const pm = implementations.get(pmName);
26
+ if (!pm) {
27
+ throw new Error(
28
+ `No package manager implementation registered for "${pmName}". Install @xylabs/ts-scripts-${pmName === "yarn" ? "yarn3" : pmName} and ensure it is imported.`
29
+ );
30
+ }
31
+ return pm;
32
+ }
33
+
34
+ // src/lib/processEx.ts
35
+ import chalk2 from "chalk";
36
+
37
+ // src/lib/withError.ts
38
+ var withError = (ex, closure, predicate = (ex2) => !!ex2.name && !!ex2.message) => {
39
+ return predicate(ex) ? closure(ex) : void 0;
40
+ };
41
+
42
+ // src/lib/withErrnoException.ts
43
+ var withErrnoException = (ex, closure) => {
44
+ return withError(ex, closure, (ex2) => ex2.errno !== void 0);
45
+ };
46
+
47
+ // src/lib/processEx.ts
48
+ var processEx = (ex) => {
49
+ const error = typeof ex === "string" ? new Error(ex) : ex;
50
+ const exitCode = withErrnoException(error, (error2) => {
51
+ if (error2.code === "ENOENT") {
52
+ console.error(chalk2.red(`'${error2.path}' not found.`));
53
+ } else {
54
+ console.error(chalk2.red(`Errno: ${error2.code}`));
55
+ }
56
+ return error2.errno ?? -1;
57
+ }) ?? withError(error, (error2) => {
58
+ console.error(chalk2.red(`${error2.name}: ${error2.message}`));
59
+ return -1;
60
+ }) ?? (() => {
61
+ console.error(chalk2.red(`Unexpected Error: ${JSON.stringify(ex, null, 2)}`));
62
+ return -1;
63
+ })();
64
+ process.exit(process.exitCode ?? exitCode);
65
+ };
66
+
67
+ // src/lib/safeExit.ts
68
+ var safeExit = (func, exitOnFail = true) => {
69
+ try {
70
+ const result = func();
71
+ if (result && exitOnFail) {
72
+ process.exit(result);
73
+ }
74
+ return result;
75
+ } catch (ex) {
76
+ return processEx(ex);
77
+ }
78
+ };
79
+
80
+ // src/lib/runSteps.ts
81
+ import { spawnSync } from "child_process";
82
+ import { existsSync as existsSync2 } from "fs";
83
+ import chalk3 from "chalk";
84
+ var runSteps = (name, steps, exitOnFail = true, messages) => {
85
+ return safeExit(() => {
86
+ const pkgName = process.env.npm_package_name;
87
+ console.log(chalk3.green(`${name} [${pkgName}]`));
88
+ let totalStatus = 0;
89
+ for (const [i, [command, args, config]] of steps.entries()) {
90
+ if (messages?.[i]) {
91
+ console.log(chalk3.gray(messages?.[i]));
92
+ }
93
+ const argList = Array.isArray(args) ? args : args.split(" ");
94
+ if (command === "node" && !existsSync2(argList[0])) {
95
+ throw new Error(`File not found [${argList[0]}]`);
96
+ }
97
+ const status = spawnSync(command, Array.isArray(args) ? args : args.split(" "), {
98
+ ...config,
99
+ encoding: "utf8",
100
+ env: { FORCE_COLOR: "3", ...process.env },
101
+ shell: true,
102
+ stdio: "inherit"
103
+ }).status ?? 0;
104
+ checkResult(name, status, "error", exitOnFail);
105
+ totalStatus += status ?? 0;
106
+ }
107
+ return totalStatus;
108
+ }, !!exitOnFail);
109
+ };
110
+
111
+ // src/actions/test.ts
112
+ var test = ({ target } = {}) => {
113
+ const pm = getPackageManager();
114
+ if (target && pm.findWorkspace(target)) {
115
+ return runSteps(`Test [${target}]`, [pm.runInWorkspace(target, "vitest", ["."])]);
116
+ }
117
+ const path = target ?? ".";
118
+ return runSteps("Test", [["vitest", [path]]]);
119
+ };
120
+
121
+ // src/xy/common/testCommand.ts
122
+ var testCommand = {
123
+ command: "test [target]",
124
+ describe: "Test - Run Vitest Tests",
125
+ builder: (yargs) => {
126
+ return yargs.positional("target", { describe: "Package name or file/folder path to test" });
127
+ },
128
+ handler: (argv) => {
129
+ if (argv.verbose) console.log(`Testing: ${argv.target ?? "all"}`);
130
+ process.exitCode = test({ target: argv.target });
131
+ }
132
+ };
133
+ export {
134
+ testCommand
135
+ };
136
+ //# sourceMappingURL=testCommand.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/checkResult.ts","../../../src/pm/detectPackageManager.ts","../../../src/pm/registry.ts","../../../src/lib/processEx.ts","../../../src/lib/withError.ts","../../../src/lib/withErrnoException.ts","../../../src/lib/safeExit.ts","../../../src/lib/runSteps.ts","../../../src/actions/test.ts","../../../src/xy/common/testCommand.ts"],"sourcesContent":["import chalk from 'chalk'\n\nexport const checkResult = (name: string, result: number, level: 'error' | 'warn' = 'error', exitOnFail = false) => {\n if (result) {\n const exiting = exitOnFail ? '[Exiting Process]' : '[Continuing]'\n const chalkFunc = level === 'error' ? chalk.red : chalk.yellow\n console[level](chalkFunc(`${name} had ${result} failures ${exiting}`))\n if (exitOnFail) {\n process.exit(result)\n }\n }\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","import chalk from 'chalk'\n\nimport { withErrnoException } from './withErrnoException.ts'\nimport { withError } from './withError.ts'\n\nexport const processEx = (ex: unknown) => {\n const error = typeof ex === 'string' ? new Error(ex) : ex\n const exitCode\n = withErrnoException(error, (error) => {\n if (error.code === 'ENOENT') {\n console.error(chalk.red(`'${error.path}' not found.`))\n } else {\n console.error(chalk.red(`Errno: ${error.code}`))\n }\n return error.errno ?? -1\n })\n ?? withError(error, (error) => {\n console.error(chalk.red(`${error.name}: ${error.message}`))\n return -1\n })\n ?? (() => {\n console.error(chalk.red(`Unexpected Error: ${JSON.stringify(ex, null, 2)}`))\n return -1\n })()\n // This allows us to use a previously set exit code\n process.exit(process.exitCode ?? exitCode)\n}\n","export const withError = <T extends Error = Error>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ex: any,\n closure: (error: T) => number,\n predicate = (ex: T) => (!!ex.name && !!ex.message),\n) => {\n return predicate(ex as T) ? closure(ex as T) : undefined\n}\n","import { withError } from './withError.ts'\n\nexport const withErrnoException = <T extends NodeJS.ErrnoException = NodeJS.ErrnoException>(\n ex: unknown, closure: (error: T) => number,\n) => {\n return withError<T>(ex, closure, (ex: unknown) => (ex as NodeJS.ErrnoException).errno !== undefined)\n}\n","/** Catch child process a crash and returns the code */\n\nimport { processEx } from './processEx.ts'\n\nconst safeExit = (func: () => number, exitOnFail = true): number => {\n try {\n const result = func()\n if (result && exitOnFail) {\n process.exit(result)\n }\n return result\n } catch (ex) {\n return processEx(ex)\n }\n}\n\nconst safeExitAsync = async (func: () => Promise<number>, exitOnFail = true): Promise<number> => {\n try {\n const result = await func()\n if (result && exitOnFail) {\n process.exit(result)\n }\n return result\n } catch (ex) {\n return processEx(ex)\n }\n}\n\nexport { safeExit, safeExitAsync }\n","import { spawnSync } from 'node:child_process'\nimport { existsSync } from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport type { ScriptStep } from '../pm/index.ts'\nimport { checkResult } from './checkResult.ts'\nimport { safeExit } from './safeExit.ts'\n\nexport type { ScriptStep } from '../pm/index.ts'\n\nexport const runSteps = (name: string, steps: ScriptStep[], exitOnFail = true, messages?: string[]): number => {\n return safeExit(() => {\n const pkgName = process.env.npm_package_name\n console.log(chalk.green(`${name} [${pkgName}]`))\n let totalStatus = 0\n for (const [i, [command, args, config]] of steps.entries()) {\n if (messages?.[i]) {\n console.log(chalk.gray(messages?.[i]))\n }\n const argList = Array.isArray(args) ? args : args.split(' ')\n if (command === 'node' && !existsSync(argList[0])) {\n throw new Error(`File not found [${argList[0]}]`)\n }\n const status\n = spawnSync(command, Array.isArray(args) ? args : args.split(' '), {\n ...config,\n encoding: 'utf8',\n env: { FORCE_COLOR: '3', ...process.env },\n shell: true,\n stdio: 'inherit',\n }).status ?? 0\n checkResult(name, status, 'error', exitOnFail)\n totalStatus += status ?? 0\n }\n return totalStatus\n }, !!exitOnFail)\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface TestParams {\n target?: string\n}\n\nexport const test = ({ target }: TestParams = {}) => {\n const pm = getPackageManager()\n if (target && pm.findWorkspace(target)) {\n return runSteps(`Test [${target}]`, [pm.runInWorkspace(target, 'vitest', ['.'])])\n }\n const path = target ?? '.'\n return runSteps('Test', [['vitest', [path]]])\n}\n","import type { CommandModule } from 'yargs'\n\nimport { test } from '../../actions/index.ts'\n\nexport const testCommand: CommandModule = {\n command: 'test [target]',\n describe: 'Test - Run Vitest Tests',\n builder: (yargs) => {\n return yargs.positional('target', { describe: 'Package name or file/folder path to test' })\n },\n handler: (argv) => {\n if (argv.verbose) console.log(`Testing: ${argv.target ?? 'all'}`)\n process.exitCode = test({ target: argv.target as string })\n },\n}\n"],"mappings":"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","names":["chalk","ex","ex","error","chalk","existsSync","chalk","chalk","existsSync"]}