binary-collections 2.0.12 → 2.0.14

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 (418) hide show
  1. package/binaries/binary-executor.cjs +307 -162
  2. package/binaries/clean-nodemodule.cjs +307 -162
  3. package/binaries/clean-nodemodules.cjs +307 -162
  4. package/binaries/composer.cjs +323 -0
  5. package/binaries/composer.cmd +2 -0
  6. package/binaries/composer.phar +0 -0
  7. package/binaries/dev.cjs +307 -162
  8. package/binaries/empty.cjs +307 -162
  9. package/binaries/git-reduce-size.cjs +307 -162
  10. package/binaries/javakill.cjs +307 -162
  11. package/binaries/kill-process.cjs +307 -162
  12. package/binaries/nodekill.cjs +307 -162
  13. package/binaries/prod.cjs +307 -162
  14. package/binaries/py.cjs +307 -162
  15. package/binaries/rmfind.cjs +307 -162
  16. package/binaries/rmx.cjs +307 -162
  17. package/binaries/submodule-token.cjs +307 -162
  18. package/binaries/test-cjs.cjs +307 -162
  19. package/binaries/test-esm.cjs +307 -162
  20. package/binaries/yarn-clean.cjs +307 -162
  21. package/binaries/yc +22 -1
  22. package/binaries/yc.cjs +307 -162
  23. package/binaries/ycw +256 -0
  24. package/binaries/ycw.cjs +323 -0
  25. package/docs-src/binary-collections.md +34 -0
  26. package/docs-src/changelog.md +26 -0
  27. package/docs-src/clean-github-actions-caches.md +115 -0
  28. package/docs-src/copy-move-file.md +56 -0
  29. package/docs-src/del-gradle.md +17 -0
  30. package/docs-src/del-ps.md +28 -0
  31. package/docs-src/downloader.md +62 -0
  32. package/docs-src/env-helpers.md +29 -0
  33. package/docs-src/find-node-modules.md +17 -0
  34. package/docs-src/free-chatgpt.md +26 -0
  35. package/docs-src/generate-test-ci.md +56 -0
  36. package/docs-src/get-latest-workflow-status.md +100 -0
  37. package/docs-src/git-diff.md +33 -0
  38. package/docs-src/git-fix.md +34 -0
  39. package/docs-src/git-purge.md +17 -0
  40. package/docs-src/git-reduce-size.md +17 -0
  41. package/docs-src/git-undo.md +21 -0
  42. package/docs-src/kill-night-crows.md +26 -0
  43. package/docs-src/node-cache-cleaner.md +182 -0
  44. package/docs-src/node-executor.md +50 -0
  45. package/docs-src/node-package-packer.md +48 -0
  46. package/docs-src/npm-run-series.md +43 -0
  47. package/docs-src/opencode-cli.md +127 -0
  48. package/docs-src/package-resolutions-updater.md +22 -0
  49. package/docs-src/php-cs-fixer-staged.md +19 -0
  50. package/docs-src/print-directory-tree.md +35 -0
  51. package/docs-src/print-tarball-tree.md +55 -0
  52. package/docs-src/py.md +19 -0
  53. package/docs-src/remove-module.md +32 -0
  54. package/docs-src/rmfind-rmx.md +21 -0
  55. package/docs-src/rmpath.md +38 -0
  56. package/docs-src/run-by-checksum.md +87 -0
  57. package/docs-src/submodule-install.md +31 -0
  58. package/docs-src/submodule-remove.md +22 -0
  59. package/docs-src/submodule-token.md +17 -0
  60. package/docs-src/test-runners.md +21 -0
  61. package/docs-src/upload-backend.md +29 -0
  62. package/docs-src/vscode-cli.md +84 -0
  63. package/docs-src/workflow-badge.md +120 -0
  64. package/docs-src/yarn-install.md +31 -0
  65. package/docs-src/yarn-reinstall.md +27 -0
  66. package/lib/binary-collections/config.cjs +15 -3
  67. package/lib/binary-collections/config.d.cts +10 -0
  68. package/lib/binary-collections/config.mjs +2 -2
  69. package/lib/binary-collections/findScript.cjs +75 -28
  70. package/lib/binary-collections/findScript.mjs +2 -2
  71. package/lib/binary-collections/listScript.cjs +75 -28
  72. package/lib/binary-collections/listScript.mjs +2 -2
  73. package/lib/binary-collections.cjs +85 -43
  74. package/lib/binary-collections.mjs +8 -8
  75. package/lib/changelog.cjs +7 -12
  76. package/lib/changelog.mjs +2 -2
  77. package/lib/chunk-2SJKVOTN.mjs +146 -0
  78. package/lib/{chunk-SPTECFE5.mjs → chunk-3F6EIHYG.mjs} +87 -21
  79. package/lib/chunk-546KAIYT.mjs +113 -0
  80. package/lib/chunk-56BVU63B.mjs +86 -0
  81. package/lib/chunk-5WAOOOGZ.mjs +77 -0
  82. package/lib/{chunk-V2IBPCEV.mjs → chunk-6C7KTYGZ.mjs} +3 -1
  83. package/lib/{chunk-5RTXZVCW.mjs → chunk-6RK5UCTP.mjs} +5 -10
  84. package/lib/chunk-72XTQ3CK.mjs +45 -0
  85. package/lib/chunk-7N52Z4IJ.mjs +39 -0
  86. package/lib/chunk-7Q6YEUQF.mjs +246 -0
  87. package/lib/{chunk-ZOWVMII3.mjs → chunk-AJ3OIYYP.mjs} +75 -28
  88. package/lib/chunk-AQZ7LMFS.mjs +100 -0
  89. package/lib/chunk-BDCMTOZI.mjs +246 -0
  90. package/lib/chunk-BEUM4LH4.mjs +184 -0
  91. package/lib/{chunk-66KDU4TX.mjs → chunk-BO4TZS4Q.mjs} +39 -61
  92. package/lib/chunk-CM3IC5YC.mjs +226 -0
  93. package/lib/{chunk-6PU7BAHB.mjs → chunk-D42YBRZW.mjs} +1 -1
  94. package/lib/chunk-FR3DMHJC.mjs +146 -0
  95. package/lib/chunk-I3O5ZRYU.mjs +77 -0
  96. package/lib/chunk-J4M5EL5P.mjs +108 -0
  97. package/lib/chunk-JK3MG2KF.mjs +236 -0
  98. package/lib/chunk-JMUFQSPE.mjs +184 -0
  99. package/lib/chunk-JVMLKHD2.mjs +62 -0
  100. package/lib/chunk-KAT2JNLZ.mjs +146 -0
  101. package/lib/chunk-KLKAIFKI.mjs +40 -0
  102. package/lib/{chunk-FB2WKVJD.mjs → chunk-KRCPFWIF.mjs} +72 -37
  103. package/lib/chunk-LACQTD5V.mjs +225 -0
  104. package/lib/chunk-LVSPEFU2.mjs +86 -0
  105. package/lib/chunk-MCCMMZSM.mjs +60 -0
  106. package/lib/{chunk-2LSRSEXF.mjs → chunk-MGPYPKIE.mjs} +2 -2
  107. package/lib/chunk-OA2RKEY3.mjs +162 -0
  108. package/lib/{chunk-C6D2TTYU.mjs → chunk-OBXLTXFJ.mjs} +4 -2
  109. package/lib/{chunk-G5UUEWUO.mjs → chunk-PAZH45HS.mjs} +8 -2
  110. package/lib/chunk-QD4T255Z.mjs +40 -0
  111. package/lib/{chunk-XPJGCDOD.mjs → chunk-QII2EKCS.mjs} +14 -2
  112. package/lib/chunk-QZMGBDSA.mjs +32 -0
  113. package/lib/chunk-RDGDLSPD.mjs +76 -0
  114. package/lib/chunk-RJKTSUAX.mjs +123 -0
  115. package/lib/chunk-RKPIBGKE.mjs +61 -0
  116. package/lib/chunk-SARIXFHP.mjs +44 -0
  117. package/lib/chunk-SJYP66BO.mjs +62 -0
  118. package/lib/chunk-SWUAEY4H.mjs +44 -0
  119. package/lib/chunk-TP3O2JGW.mjs +88 -0
  120. package/lib/chunk-UAIF5VIA.mjs +89 -0
  121. package/lib/chunk-UDZBVKXH.mjs +94 -0
  122. package/lib/chunk-UEOWRYAN.mjs +32 -0
  123. package/lib/chunk-UHPFLJXH.mjs +227 -0
  124. package/lib/{chunk-M3YIYRHT.mjs → chunk-UY5VUEA3.mjs} +1 -1
  125. package/lib/chunk-UYNBNLV5.mjs +113 -0
  126. package/lib/chunk-WOC4FZ6F.mjs +164 -0
  127. package/lib/chunk-WSHVPGNM.mjs +44 -0
  128. package/lib/chunk-X7UVQ6ZC.mjs +183 -0
  129. package/lib/{chunk-NCZPTKDV.mjs → chunk-XI67TI46.mjs} +1 -1
  130. package/lib/chunk-XW5NZAKI.mjs +82 -0
  131. package/lib/chunk-YLV4QATP.mjs +86 -0
  132. package/lib/chunk-YWSLMAQ7.mjs +65 -0
  133. package/lib/chunk-ZB4IQ6VJ.mjs +46 -0
  134. package/lib/cross-env/command.cjs +2 -2
  135. package/lib/cross-env/command.js +2 -2
  136. package/lib/cross-env/command.mjs +2 -2
  137. package/lib/cross-env/index.cjs +2 -2
  138. package/lib/cross-env/index.mjs +5 -5
  139. package/lib/cross-env/variable.mjs +2 -2
  140. package/lib/del-gradle.cjs +7 -12
  141. package/lib/del-gradle.mjs +23 -17
  142. package/lib/del-node-modules.cjs +186 -4
  143. package/lib/del-node-modules.mjs +151 -142
  144. package/lib/{del-ps.cjs → del-ps-cli.cjs} +36 -41
  145. package/lib/del-ps-cli.mjs +44 -0
  146. package/lib/del-yarn-caches.cjs +6 -11
  147. package/lib/del-yarn-caches.mjs +1 -1
  148. package/lib/downloader-cli.cjs +256 -0
  149. package/lib/downloader-cli.mjs +90 -0
  150. package/lib/file/copy-cli.cjs +183 -2
  151. package/lib/file/copy-cli.mjs +6 -2
  152. package/lib/file/move-cli.cjs +183 -2
  153. package/lib/file/move-cli.mjs +6 -2
  154. package/lib/find-node-modules-cli.cjs +2 -2
  155. package/lib/find-node-modules-cli.mjs +11 -5
  156. package/lib/find-node-modules.cjs +1 -1
  157. package/lib/find-node-modules.mjs +1 -1
  158. package/lib/free-chatgpt.cjs +6 -11
  159. package/lib/free-chatgpt.mjs +1 -1
  160. package/lib/{git-diff-cli.cjs → git/git-diff-cli.cjs} +109 -36
  161. package/lib/{git-diff-cli.mjs → git/git-diff-cli.mjs} +7 -7
  162. package/lib/{git-diff.cjs → git/git-diff.cjs} +107 -34
  163. package/lib/{git-diff.js → git/git-diff.js} +88 -31
  164. package/lib/{git-diff.mjs → git/git-diff.mjs} +6 -6
  165. package/lib/{git-fix.cjs → git/git-fix.cjs} +140 -14
  166. package/lib/git/git-fix.d.cts +2 -0
  167. package/lib/{git-fix.mjs → git/git-fix.mjs} +19 -14
  168. package/lib/{git-purge.cjs → git/git-purge.cjs} +8 -13
  169. package/lib/{git-purge.mjs → git/git-purge.mjs} +5 -5
  170. package/lib/git/user-config.cjs +137 -12
  171. package/lib/git/user-config.mjs +4 -2
  172. package/lib/{clean-github-actions-caches-cli.cjs → github-workflows/clean-github-actions-caches-cli.cjs} +292 -222
  173. package/lib/{clean-github-actions-caches-cli.mjs → github-workflows/clean-github-actions-caches-cli.mjs} +30 -11
  174. package/lib/github-workflows/clean-github-actions-caches.cjs +473 -0
  175. package/lib/github-workflows/clean-github-actions-caches.d.cts +53 -0
  176. package/lib/{clean-github-actions-caches.mjs → github-workflows/clean-github-actions-caches.mjs} +5 -3
  177. package/lib/github-workflows/generate-test-ci-step-cli.cjs +240 -0
  178. package/lib/github-workflows/generate-test-ci-step-cli.d.mts +2 -0
  179. package/lib/github-workflows/generate-test-ci-step-cli.mjs +132 -0
  180. package/lib/github-workflows/get-latest-workflow-status-cli.cjs +541 -0
  181. package/lib/github-workflows/get-latest-workflow-status-cli.d.mts +2 -0
  182. package/lib/github-workflows/get-latest-workflow-status-cli.mjs +61 -0
  183. package/lib/github-workflows/get-latest-workflow-status.cjs +56 -0
  184. package/lib/github-workflows/get-latest-workflow-status.d.mts +1 -0
  185. package/lib/{ps/isWin.mjs → github-workflows/get-latest-workflow-status.mjs} +3 -5
  186. package/lib/github-workflows/utils.cjs +271 -0
  187. package/lib/github-workflows/utils.d.cts +76 -0
  188. package/lib/github-workflows/utils.mjs +8 -0
  189. package/lib/github-workflows/workflow-badge-cli.cjs +722 -0
  190. package/lib/github-workflows/workflow-badge-cli.d.mts +2 -0
  191. package/lib/github-workflows/workflow-badge-cli.mjs +98 -0
  192. package/lib/github-workflows/workflow-badge-generator.cjs +200 -0
  193. package/lib/github-workflows/workflow-badge-generator.d.mts +14 -0
  194. package/lib/github-workflows/workflow-badge-generator.mjs +8 -0
  195. package/lib/github-workflows/workflow-test-data.cjs +73 -0
  196. package/lib/github-workflows/workflow-test-data.d.cts +63 -0
  197. package/lib/github-workflows/workflow-test-data.mjs +6 -0
  198. package/lib/index.cjs +1 -1
  199. package/lib/index.mjs +1 -1
  200. package/lib/node-cache-cleaner-cli.cjs +185 -2
  201. package/lib/node-cache-cleaner-cli.js +2 -5
  202. package/lib/node-cache-cleaner-cli.mjs +8 -4
  203. package/lib/node-executor.cjs +183 -2
  204. package/lib/node-executor.mjs +5 -2
  205. package/lib/node-package-packer/build-readme.cjs +150 -0
  206. package/lib/node-package-packer/build-readme.d.mts +10 -0
  207. package/lib/node-package-packer/build-readme.mjs +10 -0
  208. package/lib/node-package-packer/build-tarball.cjs +495 -0
  209. package/lib/node-package-packer/build-tarball.d.mts +33 -0
  210. package/lib/node-package-packer/build-tarball.mjs +175 -0
  211. package/lib/node-package-packer-cli.cjs +525 -0
  212. package/lib/node-package-packer-cli.d.mts +1 -0
  213. package/lib/node-package-packer-cli.mjs +34 -0
  214. package/lib/npm-run-series.cjs +7 -12
  215. package/lib/npm-run-series.mjs +2 -2
  216. package/lib/opencode/cli/auth-rotate.cjs +143 -0
  217. package/lib/opencode/cli/auth-rotate.d.ts +1 -0
  218. package/lib/opencode/cli/auth-rotate.js +70 -0
  219. package/lib/opencode/cli/auth-rotate.mjs +10 -0
  220. package/lib/opencode/cli/list-projects.cjs +184 -0
  221. package/lib/opencode/cli/list-projects.d.ts +1 -0
  222. package/lib/opencode/cli/list-projects.js +32 -0
  223. package/lib/opencode/cli/list-projects.mjs +11 -0
  224. package/lib/opencode/cli/list-sessions.cjs +215 -0
  225. package/lib/opencode/cli/list-sessions.d.ts +1 -0
  226. package/lib/opencode/cli/list-sessions.js +45 -0
  227. package/lib/opencode/cli/list-sessions.mjs +11 -0
  228. package/lib/opencode/database.cjs +349 -0
  229. package/lib/opencode/database.d.ts +91 -0
  230. package/lib/opencode/database.js +252 -0
  231. package/lib/opencode/database.mjs +28 -0
  232. package/lib/opencode/database.runner.cjs +145 -0
  233. package/lib/opencode/database.runner.d.ts +1 -0
  234. package/lib/opencode/database.runner.js +56 -0
  235. package/lib/opencode/database.runner.mjs +37 -0
  236. package/lib/opencode/opencode-zen.runner.cjs +48 -0
  237. package/lib/opencode/opencode-zen.runner.d.mts +1 -0
  238. package/lib/opencode/opencode-zen.runner.mjs +31 -0
  239. package/lib/opencode/sqlite.cjs +114 -0
  240. package/lib/opencode/sqlite.d.ts +18 -0
  241. package/lib/opencode/sqlite.js +82 -0
  242. package/lib/opencode/sqlite.mjs +10 -0
  243. package/lib/opencode/storage.cjs +124 -0
  244. package/lib/opencode/storage.d.ts +27 -0
  245. package/lib/opencode/storage.js +101 -0
  246. package/lib/opencode/storage.mjs +38 -0
  247. package/lib/opencode/storage.runner.cjs +50 -0
  248. package/lib/opencode/storage.runner.d.ts +1 -0
  249. package/lib/opencode/storage.runner.js +13 -0
  250. package/lib/opencode/storage.runner.mjs +29 -0
  251. package/lib/{ps/isWin.cjs → opencode/types.cjs} +3 -12
  252. package/lib/opencode/types.d.ts +31 -0
  253. package/lib/{ps/isWin.js → opencode/types.js} +0 -2
  254. package/lib/opencode/types.mjs +7 -0
  255. package/lib/opencode/utils/check-api.cjs +59 -0
  256. package/lib/opencode/utils/check-api.d.ts +12 -0
  257. package/lib/opencode/utils/check-api.js +46 -0
  258. package/lib/opencode/utils/check-api.mjs +8 -0
  259. package/lib/opencode-cli.cjs +473 -0
  260. package/lib/opencode-cli.d.ts +2 -0
  261. package/lib/opencode-cli.js +115 -0
  262. package/lib/opencode-cli.mjs +111 -0
  263. package/lib/package-resolutions-updater-cli.cjs +218 -194
  264. package/lib/package-resolutions-updater-cli.mjs +6 -4
  265. package/lib/package-resolutions-updater.cjs +216 -192
  266. package/lib/package-resolutions-updater.d.mts +44 -1
  267. package/lib/package-resolutions-updater.mjs +5 -3
  268. package/lib/php-cs-fixer-staged.cjs +1 -1
  269. package/lib/php-cs-fixer-staged.mjs +1 -1
  270. package/lib/print-directory-tree.cjs +147 -21
  271. package/lib/print-directory-tree.mjs +17 -11
  272. package/lib/print-tarball-tree.cjs +262 -0
  273. package/lib/print-tarball-tree.d.mts +1 -0
  274. package/lib/print-tarball-tree.mjs +68 -0
  275. package/lib/ps/index.cjs +10 -10
  276. package/lib/ps/index.mjs +4 -4
  277. package/lib/ps/table-parser.d.ts +3 -4
  278. package/lib/ps/table-parser.js +9 -16
  279. package/lib/remove-module.cjs +17 -22
  280. package/lib/remove-module.mjs +2 -2
  281. package/lib/rm-node-module-cli.cjs +171 -4
  282. package/lib/rm-node-module-cli.mjs +7 -4
  283. package/lib/rmpath-cli.cjs +411 -0
  284. package/lib/rmpath-cli.d.mts +1 -0
  285. package/lib/rmpath-cli.mjs +25 -0
  286. package/lib/rmpath.cjs +113 -188
  287. package/lib/rmpath.mjs +7 -101
  288. package/lib/run-by-checksum/cache.cjs +69 -0
  289. package/lib/run-by-checksum/cache.d.ts +19 -0
  290. package/lib/run-by-checksum/cache.js +50 -0
  291. package/lib/run-by-checksum/cache.mjs +12 -0
  292. package/lib/run-by-checksum/hash.cjs +88 -0
  293. package/lib/run-by-checksum/hash.d.ts +17 -0
  294. package/lib/run-by-checksum/hash.js +119 -0
  295. package/lib/run-by-checksum/hash.mjs +10 -0
  296. package/lib/run-by-checksum/run.cjs +185 -0
  297. package/lib/run-by-checksum/run.d.ts +22 -0
  298. package/lib/run-by-checksum/run.js +93 -0
  299. package/lib/run-by-checksum/run.mjs +10 -0
  300. package/lib/run-by-checksum-cli.cjs +398 -0
  301. package/lib/run-by-checksum-cli.d.ts +2 -0
  302. package/lib/run-by-checksum-cli.js +43 -0
  303. package/lib/run-by-checksum-cli.mjs +56 -0
  304. package/lib/submodule-install.cjs +137 -16
  305. package/lib/submodule-install.mjs +7 -6
  306. package/lib/submodule-remove-cli.cjs +300 -7
  307. package/lib/submodule-remove-cli.js +2 -2
  308. package/lib/submodule-remove-cli.mjs +8 -3
  309. package/lib/submodule-remove.cjs +146 -5
  310. package/lib/submodule-remove.mjs +3 -1
  311. package/lib/utils/fetchResponse.cjs +24 -0
  312. package/lib/utils/fetchResponse.d.cts +25 -0
  313. package/lib/utils/fetchResponse.mjs +6 -0
  314. package/lib/utils/findEnvFiles.cjs +3 -0
  315. package/lib/utils/findEnvFiles.d.cts +2 -2
  316. package/lib/utils/findEnvFiles.mjs +1 -1
  317. package/lib/utils/index.cjs +5 -10
  318. package/lib/utils/index.d.cts +2 -9
  319. package/lib/utils/index.mjs +1 -1
  320. package/lib/utils/isWindows.mjs +3 -1
  321. package/lib/utils/runBash.cjs +1 -1
  322. package/lib/utils/runBash.mjs +1 -1
  323. package/lib/vscode/project.cjs +0 -0
  324. package/lib/vscode/project.d.ts +0 -0
  325. package/lib/vscode/project.js +1 -0
  326. package/lib/vscode/project.mjs +7 -0
  327. package/lib/vscode/storage.cjs +138 -0
  328. package/lib/vscode/storage.d.ts +51 -0
  329. package/lib/vscode/storage.js +169 -0
  330. package/lib/vscode/storage.mjs +42 -0
  331. package/lib/vscode/storage.runner.cjs +125 -0
  332. package/lib/vscode/storage.runner.d.ts +1 -0
  333. package/lib/vscode/storage.runner.js +47 -0
  334. package/lib/vscode/storage.runner.mjs +60 -0
  335. package/lib/vscode-cli.cjs +155 -0
  336. package/lib/vscode-cli.d.ts +2 -0
  337. package/lib/vscode-cli.js +80 -0
  338. package/lib/vscode-cli.mjs +71 -0
  339. package/lib/yarn-per-branch-lock-installer.cjs +202 -11
  340. package/lib/yarn-per-branch-lock-installer.mjs +24 -11
  341. package/lib/yarn-reinstall.cjs +6 -11
  342. package/lib/yarn-reinstall.mjs +1 -1
  343. package/package.json +75 -28
  344. package/readme.html +2 -2
  345. package/readme.md +44 -11
  346. package/releases/readme.md +6 -3
  347. package/src/github-workflows/generate-test-ci-step-cli.mjs +126 -0
  348. package/tmp/test-repo-runChecksum/test-complex-glob/README.md +1 -0
  349. package/tmp/test-repo-runChecksum/test-mixed-args/README.md +1 -0
  350. package/vendor/clue/ndjson-react/README.md +365 -0
  351. package/vendor/composer/pcre/README.md +189 -0
  352. package/vendor/composer/semver/README.md +99 -0
  353. package/vendor/composer/xdebug-handler/README.md +305 -0
  354. package/vendor/ergebnis/agent-detector/README.md +107 -0
  355. package/vendor/evenement/evenement/README.md +64 -0
  356. package/vendor/fidry/cpu-core-counter/README.md +138 -0
  357. package/vendor/friendsofphp/php-cs-fixer/README.md +97 -0
  358. package/vendor/psr/container/README.md +13 -0
  359. package/vendor/psr/event-dispatcher/README.md +6 -0
  360. package/vendor/psr/log/README.md +58 -0
  361. package/vendor/react/cache/README.md +367 -0
  362. package/vendor/react/child-process/README.md +619 -0
  363. package/vendor/react/dns/README.md +453 -0
  364. package/vendor/react/event-loop/README.md +930 -0
  365. package/vendor/react/promise/README.md +722 -0
  366. package/vendor/react/socket/README.md +1564 -0
  367. package/vendor/react/stream/README.md +1249 -0
  368. package/vendor/sebastian/diff/README.md +151 -0
  369. package/vendor/symfony/console/README.md +30 -0
  370. package/vendor/symfony/deprecation-contracts/README.md +26 -0
  371. package/vendor/symfony/event-dispatcher/README.md +25 -0
  372. package/vendor/symfony/event-dispatcher-contracts/README.md +9 -0
  373. package/vendor/symfony/filesystem/README.md +23 -0
  374. package/vendor/symfony/finder/README.md +24 -0
  375. package/vendor/symfony/options-resolver/README.md +25 -0
  376. package/vendor/symfony/polyfill-ctype/README.md +12 -0
  377. package/vendor/symfony/polyfill-intl-grapheme/README.md +32 -0
  378. package/vendor/symfony/polyfill-intl-normalizer/README.md +14 -0
  379. package/vendor/symfony/polyfill-mbstring/README.md +13 -0
  380. package/vendor/symfony/polyfill-php80/README.md +25 -0
  381. package/vendor/symfony/polyfill-php81/README.md +18 -0
  382. package/vendor/symfony/polyfill-php84/README.md +23 -0
  383. package/vendor/symfony/polyfill-php85/README.md +20 -0
  384. package/vendor/symfony/process/README.md +23 -0
  385. package/vendor/symfony/service-contracts/README.md +9 -0
  386. package/vendor/symfony/stopwatch/README.md +52 -0
  387. package/vendor/symfony/string/README.md +24 -0
  388. package/.opencode/package.json +0 -5
  389. package/lib/chunk-6S4NXESK.mjs +0 -26
  390. package/lib/clean-github-actions-caches.cjs +0 -249
  391. package/lib/clean-github-actions-caches.d.cts +0 -15
  392. package/lib/del-gradle.js +0 -16
  393. package/lib/del-node-modules.js +0 -211
  394. package/lib/del-ps.js +0 -32
  395. package/lib/del-ps.mjs +0 -43
  396. package/lib/find-node-modules-cli.js +0 -4
  397. package/lib/ps/isWin.d.ts +0 -2
  398. package/test/package.json +0 -20
  399. package/test-project/package.json +0 -22
  400. package/test-project/workspaces/workspace-a/package.json +0 -135
  401. package/test-project/workspaces/workspace-a/test/demo/package.json +0 -25
  402. package/test-project/workspaces/workspace-b/package.json +0 -139
  403. package/test-project/workspaces/workspace-b/test/sample-project/package.json +0 -7
  404. package/test-project/workspaces/workspace-b/themes/hexo-theme-flowbite/package.json +0 -96
  405. package/tmp/rm-node-modules-test-project/package.json +0 -17
  406. package/tmp/rm-node-modules-test-project/packages/workspace-a/package.json +0 -16
  407. package/tmp/rm-node-modules-test-project/packages/workspace-b/package.json +0 -16
  408. package/tmp/test-repo/package.json +0 -17
  409. /package/lib/{clean-github-actions-caches-cli.d.cts → del-gradle.d.cts} +0 -0
  410. /package/lib/{del-gradle.d.ts → del-node-modules.d.cts} +0 -0
  411. /package/lib/{del-node-modules.d.ts → del-ps-cli.d.mts} +0 -0
  412. /package/lib/{find-node-modules-cli.d.ts → downloader-cli.d.cts} +0 -0
  413. /package/lib/{git-diff-cli.d.ts → find-node-modules-cli.d.cts} +0 -0
  414. /package/lib/{git-fix.d.cts → git/git-diff-cli.d.ts} +0 -0
  415. /package/lib/{git-diff-cli.js → git/git-diff-cli.js} +0 -0
  416. /package/lib/{git-diff.d.ts → git/git-diff.d.ts} +0 -0
  417. /package/lib/{git-purge.d.cts → git/git-purge.d.cts} +0 -0
  418. /package/lib/{del-ps.d.ts → github-workflows/clean-github-actions-caches-cli.d.cts} +0 -0
@@ -0,0 +1,722 @@
1
+ #!/usr/bin/env node
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __esm = (fn, res) => function __init() {
9
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
10
+ };
11
+ var __commonJS = (cb, mod) => function __require() {
12
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
13
+ };
14
+ var __copyProps = (to, from, except, desc) => {
15
+ if (from && typeof from === "object" || typeof from === "function") {
16
+ for (let key of __getOwnPropNames(from))
17
+ if (!__hasOwnProp.call(to, key) && key !== except)
18
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
19
+ }
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
+ // If the importer is in node compatibility mode or this is not an ESM
24
+ // file that has been converted to a CommonJS file using a Babel-
25
+ // compatible transform (i.e. "__esModule" has not been set), then set
26
+ // "default" to the CommonJS "module.exports" for node compatibility.
27
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
28
+ mod
29
+ ));
30
+
31
+ // node_modules/tsup/assets/cjs_shims.js
32
+ var init_cjs_shims = __esm({
33
+ "node_modules/tsup/assets/cjs_shims.js"() {
34
+ }
35
+ });
36
+
37
+ // src/utils/index.cjs
38
+ var require_utils = __commonJS({
39
+ "src/utils/index.cjs"(exports2, module2) {
40
+ init_cjs_shims();
41
+ var fs2 = require("fs");
42
+ var path2 = require("upath");
43
+ var minimistLib = require("minimist");
44
+ var argv = minimistLib(process.argv.slice(2));
45
+ var { exec } = require("child_process");
46
+ var { promisify } = require("util");
47
+ var execAsync = promisify(exec);
48
+ async function parseGitRemotes() {
49
+ try {
50
+ const { stdout } = await execAsync("git remote -v");
51
+ const lines = stdout.split("\n");
52
+ const remotes = {};
53
+ lines.forEach((line) => {
54
+ const [name, url] = line.split(" ");
55
+ if (name && url) {
56
+ const [repoUrl] = url.split(" ");
57
+ try {
58
+ const parsedUrl = new URL(repoUrl);
59
+ const pathParts = parsedUrl.pathname.split("/").filter(Boolean);
60
+ if (parsedUrl.hostname === "github.com" && pathParts.length === 2) {
61
+ let repoPath = pathParts.join("/");
62
+ if (repoPath.endsWith(".git")) {
63
+ repoPath = repoPath.slice(0, -4);
64
+ }
65
+ remotes[name] = repoPath;
66
+ }
67
+ } catch (e) {
68
+ console.error("URL Parsing Error:", e.message);
69
+ }
70
+ }
71
+ });
72
+ return remotes;
73
+ } catch (error) {
74
+ console.error("Error:", error.message);
75
+ return {};
76
+ }
77
+ }
78
+ module2.exports.parseGitRemotes = parseGitRemotes;
79
+ function getArgs2(opts) {
80
+ if (opts) {
81
+ return minimistLib(process.argv.slice(2), opts);
82
+ }
83
+ return argv;
84
+ }
85
+ module2.exports.getArgs = getArgs2;
86
+ function del(fullPath) {
87
+ try {
88
+ if (!fs2.existsSync(fullPath)) return;
89
+ const stat = fs2.lstatSync(fullPath);
90
+ if (stat.isSymbolicLink()) {
91
+ try {
92
+ fs2.unlinkSync(fullPath);
93
+ console.log("deleted symlink", fullPath);
94
+ } catch (e) {
95
+ console.log("failed delete symlink", fullPath, e && e.message);
96
+ }
97
+ return;
98
+ }
99
+ if (stat.isDirectory()) {
100
+ const subdir = fs2.readdirSync(fullPath).map((dirPath) => path2.resolve(fullPath, dirPath));
101
+ for (let i = 0; i < subdir.length; i++) {
102
+ del(subdir[i]);
103
+ }
104
+ try {
105
+ fs2.rmdirSync(fullPath);
106
+ console.log("deleted", fullPath);
107
+ } catch (_e) {
108
+ try {
109
+ fs2.rmSync(fullPath, { recursive: true, force: true, retryDelay: 7e3 });
110
+ console.log("deleted", fullPath);
111
+ } catch (ee) {
112
+ console.log("failed delete", fullPath, ee && ee.message);
113
+ }
114
+ }
115
+ return;
116
+ }
117
+ try {
118
+ fs2.unlinkSync(fullPath);
119
+ console.log("deleted", fullPath);
120
+ } catch (_e) {
121
+ try {
122
+ fs2.rmSync(fullPath, { recursive: true, force: true, retryDelay: 7e3 });
123
+ console.log("deleted", fullPath);
124
+ } catch (ee) {
125
+ console.log("failed delete", fullPath, ee && ee.message);
126
+ }
127
+ }
128
+ } catch (err) {
129
+ console.log("failed delete", fullPath, err && err.message);
130
+ }
131
+ }
132
+ module2.exports.del = del;
133
+ function delStream(globStream) {
134
+ globStream.stream().on("data", (result) => {
135
+ const fullPath = path2.resolve(process.cwd(), result);
136
+ try {
137
+ if (fs2.existsSync(fullPath)) {
138
+ const stat = fs2.lstatSync(fullPath);
139
+ if (stat.isSymbolicLink()) {
140
+ try {
141
+ fs2.unlinkSync(fullPath);
142
+ console.log("deleted symlink", fullPath);
143
+ } catch (e) {
144
+ console.log("failed delete symlink", fullPath, e && e.message);
145
+ }
146
+ return;
147
+ }
148
+ if (stat.isDirectory()) {
149
+ const subdir = fs2.readdirSync(fullPath).map((dirPath) => path2.resolve(fullPath, dirPath));
150
+ for (let i = 0; i < subdir.length; i++) {
151
+ del(subdir[i]);
152
+ }
153
+ }
154
+ }
155
+ del(fullPath);
156
+ } catch (err) {
157
+ console.log("failed processing", fullPath, err && err.message);
158
+ }
159
+ });
160
+ }
161
+ module2.exports.delStream = delStream;
162
+ function getFileTreeString(hashArray) {
163
+ const tree = {};
164
+ const hashMap = {};
165
+ for (const entry of hashArray) {
166
+ const [filePath, hash] = entry.split(" ");
167
+ hashMap[filePath] = hash;
168
+ const parts = filePath.split("/");
169
+ let current = tree;
170
+ for (let i = 0; i < parts.length; i++) {
171
+ const part = parts[i];
172
+ if (i === parts.length - 1) {
173
+ current[part] = null;
174
+ } else {
175
+ current[part] = current[part] || {};
176
+ current = current[part];
177
+ }
178
+ }
179
+ }
180
+ function printNode(node, prefix = "", parentPath = "") {
181
+ const keys = Object.keys(node).sort();
182
+ let lines = [];
183
+ keys.forEach((key, idx) => {
184
+ const isLast = idx === keys.length - 1;
185
+ const branch = isLast ? "\u2514\u2500\u2500 " : "\u251C\u2500\u2500 ";
186
+ const currentPath = parentPath ? parentPath + "/" + key : key;
187
+ if (node[key] === null) {
188
+ lines.push(prefix + branch + key + " [" + (hashMap[currentPath] || "") + "]");
189
+ } else {
190
+ lines.push(prefix + branch + key + "/");
191
+ lines = lines.concat(printNode(node[key], prefix + (isLast ? " " : "\u2502 "), currentPath));
192
+ }
193
+ });
194
+ return lines;
195
+ }
196
+ return printNode(tree, "", "").join("\n");
197
+ }
198
+ module2.exports.getFileTreeString = getFileTreeString;
199
+ var delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
200
+ module2.exports.delay = delay;
201
+ }
202
+ });
203
+
204
+ // src/utils/findEnvFiles.cjs
205
+ var require_findEnvFiles = __commonJS({
206
+ "src/utils/findEnvFiles.cjs"(exports2, module2) {
207
+ init_cjs_shims();
208
+ var fs2 = require("fs");
209
+ var path2 = require("path");
210
+ var glob = require("glob");
211
+ var DEFAULT_IGNORES = [
212
+ "**/node_modules/**",
213
+ "**/.git/**",
214
+ "**/.yarn/**",
215
+ "**/.pnpm/**",
216
+ "**/dist/**",
217
+ "**/build/**",
218
+ "**/coverage/**",
219
+ "**/vendor/**",
220
+ "**/tmp/**",
221
+ "**/.cache/**",
222
+ "**/assets/**",
223
+ "**/logs/**",
224
+ "**/output/**",
225
+ "**/public/**",
226
+ "**/static/**",
227
+ "**/temp/**",
228
+ "**/backup/**",
229
+ "**/backups/**",
230
+ "**/examples/**",
231
+ "**/docs/**",
232
+ "**/tests/**",
233
+ "**/__tests__/**",
234
+ "**/spec/**",
235
+ "**/__specs__/**",
236
+ "**/scripts/**",
237
+ "**/bin/**",
238
+ "**/hooks/**",
239
+ "**/config/**",
240
+ "**/configs/**",
241
+ "**/settings/**",
242
+ "**/.vscode/**",
243
+ "**/.idea/**"
244
+ ];
245
+ function findEnvFiles(startDir = process.cwd(), filter) {
246
+ const found = /* @__PURE__ */ new Set();
247
+ function addFile(file) {
248
+ const normalized = path2.normalize(file);
249
+ if (typeof filter === "function" && !filter(normalized)) {
250
+ return;
251
+ }
252
+ found.add(normalized);
253
+ }
254
+ let current = path2.resolve(startDir);
255
+ while (true) {
256
+ const envPath = path2.join(current, ".env");
257
+ if (fs2.existsSync(envPath)) {
258
+ addFile(envPath);
259
+ }
260
+ const parent = path2.dirname(current);
261
+ if (parent === current) {
262
+ break;
263
+ }
264
+ current = parent;
265
+ }
266
+ const files = glob.globSync("**/.env*", {
267
+ cwd: startDir,
268
+ absolute: true,
269
+ nodir: true,
270
+ ignore: DEFAULT_IGNORES
271
+ });
272
+ for (const file of files) {
273
+ addFile(file);
274
+ }
275
+ return [...found];
276
+ }
277
+ function findEnvWithToken(startDir = process.cwd(), tokenName = "GITHUB_TOKEN") {
278
+ const envFiles = findEnvFiles(startDir);
279
+ return envFiles.find((file) => {
280
+ try {
281
+ const content = fs2.readFileSync(file, "utf-8");
282
+ if (tokenName instanceof RegExp) {
283
+ return tokenName.test(content);
284
+ }
285
+ const regex = new RegExp(`^\\s*${tokenName}\\s*=`, "m");
286
+ return regex.test(content);
287
+ } catch (err) {
288
+ console.warn(`Failed to read ${file}: ${err instanceof Error ? err.message : String(err)}`);
289
+ return false;
290
+ }
291
+ });
292
+ }
293
+ module2.exports = {
294
+ DEFAULT_IGNORES,
295
+ findEnvFiles,
296
+ findEnvWithToken,
297
+ default: findEnvFiles
298
+ };
299
+ }
300
+ });
301
+
302
+ // src/binary-collections/config.cjs
303
+ var require_config = __commonJS({
304
+ "src/binary-collections/config.cjs"(exports2, module2) {
305
+ init_cjs_shims();
306
+ var path2 = require("upath");
307
+ var minimistLib = require("minimist");
308
+ var { findEnvWithToken } = require_findEnvFiles();
309
+ var dotenv = require("dotenv");
310
+ var loadDotenv = (tokenKey = /ACCESS_TOKEN|GITHUB_TOKEN/) => dotenv.config({ path: findEnvWithToken(void 0, tokenKey), quiet: true, overwrite: true });
311
+ loadDotenv();
312
+ var cliArgv = minimistLib(process.argv.slice(2), {
313
+ string: ["token"]
314
+ });
315
+ var GITHUB_ACCESS_TOKEN = cliArgv.token || process.env.ACCESS_TOKEN || process.env.GITHUB_TOKEN || process.env.GH_TOKEN;
316
+ function getTempDir() {
317
+ return process.env.TEMP_DIR || path2.join(process.cwd(), "tmp");
318
+ }
319
+ function getTempPath(...segments) {
320
+ return path2.join(getTempDir(), ...segments);
321
+ }
322
+ var TEMP_BASE_DIR = getTempDir();
323
+ module2.exports = {
324
+ getTempDir,
325
+ getTempPath,
326
+ TEMP_BASE_DIR,
327
+ GITHUB_ACCESS_TOKEN,
328
+ loadDotenv
329
+ };
330
+ }
331
+ });
332
+
333
+ // src/github-workflows/utils.cjs
334
+ var require_utils2 = __commonJS({
335
+ "src/github-workflows/utils.cjs"(exports2, module2) {
336
+ init_cjs_shims();
337
+ var axios = require("axios");
338
+ var { spawn } = require("cross-spawn");
339
+ var { GITHUB_ACCESS_TOKEN: TOKEN } = require_config();
340
+ if (!TOKEN) {
341
+ console.error("Missing env var: ACCESS_TOKEN or GITHUB_TOKEN");
342
+ process.exit(1);
343
+ }
344
+ var BASE = "https://api.github.com";
345
+ var HEADERS = {
346
+ Authorization: `Bearer ${TOKEN}`,
347
+ Accept: "application/vnd.github+json",
348
+ "X-GitHub-Api-Version": "2022-11-28"
349
+ };
350
+ async function request(url) {
351
+ try {
352
+ const res = await axios.get(url, { headers: HEADERS });
353
+ return res.data;
354
+ } catch (err) {
355
+ if (err == null ? void 0 : err.response) {
356
+ const statusText = err.response.statusText || "Request failed";
357
+ const responseText = typeof err.response.data === "string" ? err.response.data : JSON.stringify(err.response.data);
358
+ throw new Error(`${err.response.status} ${statusText}
359
+ ${responseText}`);
360
+ }
361
+ throw err;
362
+ }
363
+ }
364
+ function runGit(args) {
365
+ return new Promise((resolve, reject) => {
366
+ var _a, _b;
367
+ const child = spawn("git", args, {
368
+ cwd: process.cwd(),
369
+ stdio: ["ignore", "pipe", "pipe"]
370
+ });
371
+ let stdout = "";
372
+ let stderr = "";
373
+ (_a = child.stdout) == null ? void 0 : _a.on("data", (chunk) => {
374
+ stdout += chunk.toString();
375
+ });
376
+ (_b = child.stderr) == null ? void 0 : _b.on("data", (chunk) => {
377
+ stderr += chunk.toString();
378
+ });
379
+ child.on("error", reject);
380
+ child.on("close", (code) => {
381
+ if (code === 0) return resolve(stdout.trim());
382
+ reject(new Error(stderr.trim() || `git ${args.join(" ")} exited with code ${code}`));
383
+ });
384
+ });
385
+ }
386
+ function parseOwnerFromUrl(remoteUrl) {
387
+ const normalized = remoteUrl.trim().replace(/\.git$/i, "");
388
+ const match = normalized.match(/github\.com[:/](?<owner>[^/]+)\/(?<repo>[^/]+)$/i);
389
+ return (match == null ? void 0 : match.groups) || null;
390
+ }
391
+ function getOwnerFromRemoteUrl(remoteUrl) {
392
+ const parsed = parseOwnerFromUrl(remoteUrl);
393
+ return (parsed == null ? void 0 : parsed.owner) || null;
394
+ }
395
+ function getRepoFromRemoteUrl(remoteUrl) {
396
+ const parsed = parseOwnerFromUrl(remoteUrl);
397
+ return (parsed == null ? void 0 : parsed.repo) || null;
398
+ }
399
+ async function getCurrentOwner() {
400
+ const commands = [
401
+ ["config", "--local", "--get", "remote.origin.url"],
402
+ ["remote", "get-url", "origin"]
403
+ ];
404
+ for (const args of commands) {
405
+ try {
406
+ const remoteUrl = await runGit(args);
407
+ const owner = getOwnerFromRemoteUrl(remoteUrl);
408
+ if (owner) return owner;
409
+ } catch {
410
+ }
411
+ }
412
+ throw new Error("Unable to determine repository owner from git remote.origin.url");
413
+ }
414
+ async function getCurrentRepo() {
415
+ const commands = [
416
+ ["config", "--local", "--get", "remote.origin.url"],
417
+ ["remote", "get-url", "origin"]
418
+ ];
419
+ for (const args of commands) {
420
+ try {
421
+ const remoteUrl = await runGit(args);
422
+ const repo = getRepoFromRemoteUrl(remoteUrl);
423
+ if (repo) return repo;
424
+ } catch {
425
+ }
426
+ }
427
+ throw new Error("Unable to determine repository name from git remote.origin.url");
428
+ }
429
+ async function getOwnerRepo2() {
430
+ const owner = await getCurrentOwner();
431
+ const repo = await getCurrentRepo();
432
+ return { owner, repo };
433
+ }
434
+ async function getLatestRun2(owner, repo, workflowId) {
435
+ var _a;
436
+ let url;
437
+ if (workflowId) {
438
+ url = `${BASE}/repos/${owner}/${repo}/actions/workflows/${encodeURIComponent(workflowId)}/runs?per_page=1`;
439
+ } else {
440
+ url = `${BASE}/repos/${owner}/${repo}/actions/runs?per_page=1`;
441
+ }
442
+ const data = await request(url);
443
+ return (_a = data.workflow_runs) == null ? void 0 : _a[0];
444
+ }
445
+ async function getJobs2(owner, repo, runId) {
446
+ const data = await request(`${BASE}/repos/${owner}/${repo}/actions/runs/${runId}/jobs`);
447
+ return data.jobs || [];
448
+ }
449
+ module2.exports = {
450
+ BASE,
451
+ HEADERS,
452
+ request,
453
+ runGit,
454
+ parseOwnerFromUrl,
455
+ getOwnerFromRemoteUrl,
456
+ getRepoFromRemoteUrl,
457
+ getCurrentOwner,
458
+ getCurrentRepo,
459
+ getOwnerRepo: getOwnerRepo2,
460
+ getLatestRun: getLatestRun2,
461
+ getJobs: getJobs2
462
+ };
463
+ }
464
+ });
465
+
466
+ // src/github-workflows/workflow-badge-cli.mjs
467
+ init_cjs_shims();
468
+ var import_fs = __toESM(require("fs"), 1);
469
+ var import_upath = __toESM(require("upath"), 1);
470
+ var import_utils = __toESM(require_utils(), 1);
471
+
472
+ // src/github-workflows/workflow-badge-generator.mjs
473
+ init_cjs_shims();
474
+ var COLORS = {
475
+ success: "#2da44e",
476
+ failure: "#cf222e",
477
+ cancelled: "#656d76",
478
+ skipped: "#656d76",
479
+ inProgress: "#d4920b",
480
+ pending: "#656d76",
481
+ unknown: "#656d76",
482
+ text: "#1f2328",
483
+ textSecondary: "#656d76",
484
+ border: "#d0d7de",
485
+ bg: "#ffffff",
486
+ cardBg: "#f6f8fa"
487
+ };
488
+ function getStatusMeta(run) {
489
+ const { status, conclusion } = run;
490
+ if (conclusion === "success") return { label: "Passing", color: COLORS.success };
491
+ if (conclusion === "failure") return { label: "Failing", color: COLORS.failure };
492
+ if (conclusion === "cancelled") return { label: "Cancelled", color: COLORS.cancelled };
493
+ if (conclusion === "skipped") return { label: "Skipped", color: COLORS.skipped };
494
+ if (status === "in_progress") return { label: "In Progress", color: COLORS.inProgress };
495
+ if (status === "queued" || status === "pending") return { label: "Pending", color: COLORS.pending };
496
+ return { label: status || "Unknown", color: COLORS.unknown };
497
+ }
498
+ function esc(str) {
499
+ return String(str).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
500
+ }
501
+ function countSteps(jobs) {
502
+ let total = 0, passed = 0, failed = 0, skipped = 0, pending = 0;
503
+ for (const job of jobs) {
504
+ for (const step of job.steps || []) {
505
+ total++;
506
+ if (step.conclusion === "success") passed++;
507
+ else if (step.conclusion === "failure") failed++;
508
+ else if (step.conclusion === "skipped") skipped++;
509
+ else pending++;
510
+ }
511
+ }
512
+ return { total, passed, failed, skipped, pending };
513
+ }
514
+ function jobColor(job) {
515
+ if (job.conclusion === "success") return COLORS.success;
516
+ if (job.conclusion === "failure") return COLORS.failure;
517
+ if (job.status === "in_progress") return COLORS.inProgress;
518
+ return COLORS.pending;
519
+ }
520
+ function generateBadge(run, jobs, options = {}) {
521
+ const width = options.width || 520;
522
+ const maxSteps = options.maxSteps;
523
+ const { label: statusLabel, color: accentColor } = getStatusMeta(run);
524
+ const steps = countSteps(jobs);
525
+ const PAD = 20;
526
+ const W = width;
527
+ const RIGHT = width - PAD;
528
+ const INNER_W = RIGHT - PAD;
529
+ const els = [];
530
+ const el = (str) => els.push(str);
531
+ const LABEL_X = PAD;
532
+ const VALUE_X = 110;
533
+ let yCursor = 0;
534
+ const divider = () => {
535
+ yCursor += 4;
536
+ el(`<line x1="${PAD}" y1="${yCursor}" x2="${RIGHT}" y2="${yCursor}" stroke="${COLORS.border}" stroke-width="1"/>`);
537
+ yCursor += 5;
538
+ };
539
+ const sectionHeading = (text) => {
540
+ yCursor += 8;
541
+ el(
542
+ `<text x="${PAD}" y="${yCursor + 13}" font-size="11" font-weight="700" fill="${COLORS.textSecondary}" letter-spacing="0.5">${esc(text)}</text>`
543
+ );
544
+ yCursor += 22;
545
+ };
546
+ el(`<rect x="0" y="0" width="${W}" height="4" fill="${accentColor}"/>`);
547
+ yCursor = 4;
548
+ yCursor += 14;
549
+ const titleBaseline = yCursor + 15;
550
+ el(
551
+ `<text x="${PAD}" y="${titleBaseline}" font-size="15" font-weight="700" fill="${COLORS.text}">Workflow Status</text>`
552
+ );
553
+ const pillText = statusLabel;
554
+ const pillTextW = pillText.length * 7.8 + 32;
555
+ const pillX = RIGHT - pillTextW;
556
+ const pillY = titleBaseline - 12;
557
+ el(`<rect x="${pillX}" y="${pillY}" width="${pillTextW}" height="22" rx="11" fill="${accentColor}" opacity="0.12"/>`);
558
+ el(`<circle cx="${pillX + 14}" cy="${titleBaseline - 2}" r="4.5" fill="${accentColor}"/>`);
559
+ el(
560
+ `<text x="${pillX + 24}" y="${titleBaseline + 1}" font-size="12" font-weight="600" fill="${accentColor}">${esc(pillText)}</text>`
561
+ );
562
+ yCursor = titleBaseline + 4;
563
+ divider();
564
+ const metaRows = [
565
+ { label: "Workflow", value: run.name || "" },
566
+ { label: "Status", value: `${run.status}${run.conclusion ? ` (${run.conclusion})` : ""}` },
567
+ { label: "Branch", value: run.head_branch || "" },
568
+ { label: "Run ID", value: `#${run.id || ""}` }
569
+ ];
570
+ for (const row of metaRows) {
571
+ const rowBaseline = yCursor + 14;
572
+ el(
573
+ `<text x="${LABEL_X}" y="${rowBaseline}" font-size="12" fill="${COLORS.textSecondary}">${esc(row.label)}</text>`
574
+ );
575
+ el(
576
+ `<text x="${VALUE_X}" y="${rowBaseline}" font-size="13" fill="${COLORS.text}" font-weight="500">${esc(row.value)}</text>`
577
+ );
578
+ yCursor += 22;
579
+ }
580
+ divider();
581
+ sectionHeading("JOBS");
582
+ for (const job of jobs) {
583
+ const jColor = jobColor(job);
584
+ const jStatus = job.conclusion || job.status;
585
+ el(`<rect x="${PAD}" y="${yCursor}" width="${INNER_W}" height="28" rx="6" fill="${COLORS.cardBg}"/>`);
586
+ el(
587
+ `<text x="${PAD + 10}" y="${yCursor + 18}" font-size="13" font-weight="600" fill="${COLORS.text}">${esc(job.name)}</text>`
588
+ );
589
+ const jobStatusX = RIGHT - 14;
590
+ el(`<circle cx="${jobStatusX - 16}" cy="${yCursor + 14}" r="3.5" fill="${jColor}"/>`);
591
+ el(
592
+ `<text x="${jobStatusX}" y="${yCursor + 18}" font-size="11" fill="${COLORS.textSecondary}" text-anchor="end">${esc(jStatus)}</text>`
593
+ );
594
+ yCursor += 34;
595
+ if (job.steps && job.steps.length > 0) {
596
+ const stepsToRender = maxSteps ? job.steps.slice(0, maxSteps) : job.steps;
597
+ const hiddenCount = maxSteps ? job.steps.length - maxSteps : 0;
598
+ for (const step of stepsToRender) {
599
+ const sIcon = step.conclusion === "success" ? "\u2713" : step.conclusion === "failure" ? "\u2717" : step.conclusion === "skipped" ? "\u2013" : "\u25CB";
600
+ const sColor = step.conclusion === "success" ? COLORS.success : step.conclusion === "failure" ? COLORS.failure : step.conclusion === "skipped" ? COLORS.textSecondary : COLORS.inProgress;
601
+ el(`<text x="${PAD + 18}" y="${yCursor + 13}" font-size="12" fill="${sColor}">${sIcon}</text>`);
602
+ let stepName = step.name || "";
603
+ const maxChars = 52;
604
+ if (stepName.length > maxChars) {
605
+ stepName = stepName.slice(0, maxChars - 3) + "...";
606
+ }
607
+ el(`<text x="${PAD + 36}" y="${yCursor + 13}" font-size="12" fill="${COLORS.text}">${esc(stepName)}</text>`);
608
+ const stepStatus = step.conclusion || step.status || "";
609
+ el(
610
+ `<text x="${RIGHT}" y="${yCursor + 13}" font-size="11" fill="${COLORS.textSecondary}" text-anchor="end">${esc(stepStatus)}</text>`
611
+ );
612
+ yCursor += 20;
613
+ }
614
+ if (hiddenCount > 0) {
615
+ el(
616
+ `<text x="${PAD + 18}" y="${yCursor + 13}" font-size="12" fill="${COLORS.textSecondary}" font-style="italic">and ${hiddenCount} more step${hiddenCount !== 1 ? "s" : ""}...</text>`
617
+ );
618
+ yCursor += 20;
619
+ }
620
+ yCursor += 4;
621
+ }
622
+ }
623
+ divider();
624
+ const footerParts = [];
625
+ if (steps.passed > 0) footerParts.push(`${steps.passed} \u2713 passed`);
626
+ if (steps.failed > 0) footerParts.push(`${steps.failed} \u2717 failed`);
627
+ if (steps.pending > 0) footerParts.push(`${steps.pending} \u25CB pending`);
628
+ if (steps.skipped > 0) footerParts.push(`${steps.skipped} \u2013 skipped`);
629
+ const footerText = footerParts.length > 0 ? footerParts.join(" \xB7 ") : "No steps recorded";
630
+ el(`<text x="${PAD}" y="${yCursor + 13}" font-size="12" fill="${COLORS.textSecondary}">${esc(footerText)}</text>`);
631
+ yCursor += 22;
632
+ const totalHeight = yCursor + 6;
633
+ const svg = [
634
+ `<svg xmlns="http://www.w3.org/2000/svg" width="${W}" height="${totalHeight}" viewBox="0 0 ${W} ${totalHeight}" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif">`,
635
+ ` <defs>`,
636
+ ` <filter id="badge-shadow" x="-2%" y="-2%" width="104%" height="104%">`,
637
+ ` <feDropShadow dx="0" dy="1" stdDeviation="3" flood-color="#000" flood-opacity="0.12"/>`,
638
+ ` </filter>`,
639
+ ` </defs>`,
640
+ ` <rect x="0.5" y="0.5" width="${W - 1}" height="${totalHeight - 1}" rx="8" fill="${COLORS.bg}" stroke="${COLORS.border}" stroke-width="1" filter="url(#badge-shadow)"/>`,
641
+ ...els,
642
+ `</svg>`
643
+ ].join("\n");
644
+ return svg;
645
+ }
646
+
647
+ // src/github-workflows/workflow-badge-cli.mjs
648
+ var import_utils2 = __toESM(require_utils2(), 1);
649
+ var HELP = `
650
+ Usage: workflow-badge [options]
651
+
652
+ Generate a detailed SVG badge for the latest GitHub Actions workflow status.
653
+
654
+ Options:
655
+ -o, --output <file> Write SVG to file instead of stdout
656
+ --owner <owner> GitHub repository owner (default: auto-detect from git)
657
+ --repo <repo> GitHub repository name (default: auto-detect from git)
658
+ --workflow <name> Filter by workflow filename (e.g. "test.yml") or workflow ID
659
+ --token <token> GitHub access token (overrides env: ACCESS_TOKEN, GITHUB_TOKEN, GH_TOKEN)
660
+ --width <px> SVG width in pixels (default: 520)
661
+ --max-steps <n> Max steps to show per job (default: all)
662
+ -h, --help Show this help message
663
+
664
+ Examples:
665
+ workflow-badge
666
+ workflow-badge --output badge.svg
667
+ workflow-badge --owner dimaslanjaka --repo bin --width 600
668
+ `;
669
+ async function main() {
670
+ const argv = (0, import_utils.getArgs)({
671
+ string: ["output", "owner", "repo", "workflow", "width", "max-steps"],
672
+ boolean: ["help"],
673
+ alias: { o: "output", h: "help", w: "width" }
674
+ });
675
+ if (argv.help) {
676
+ console.log(HELP);
677
+ process.exit(0);
678
+ }
679
+ const owner = argv.owner || process.env.GH_OWNER;
680
+ const repo = argv.repo || process.env.GH_REPO;
681
+ if (owner && repo) {
682
+ console.error(`[workflow-badge] Using owner=${owner} repo=${repo}`);
683
+ } else {
684
+ const parsed = await (0, import_utils2.getOwnerRepo)();
685
+ if (!owner) argv.owner = parsed.owner;
686
+ if (!repo) argv.repo = parsed.repo;
687
+ console.error(`[workflow-badge] Detected ${parsed.owner}/${parsed.repo} from git remote`);
688
+ }
689
+ const finalOwner = argv.owner || owner;
690
+ const finalRepo = argv.repo || repo;
691
+ const workflowId = argv.workflow;
692
+ const target = workflowId ? `${finalOwner}/${finalRepo} (workflow: ${workflowId})` : `${finalOwner}/${finalRepo}`;
693
+ console.error(`[workflow-badge] Fetching latest workflow for ${target} ...`);
694
+ const run = await (0, import_utils2.getLatestRun)(finalOwner, finalRepo, workflowId);
695
+ if (!run) {
696
+ console.error("[workflow-badge] No workflow runs found.");
697
+ process.exit(1);
698
+ }
699
+ const jobs = await (0, import_utils2.getJobs)(finalOwner, finalRepo, run.id);
700
+ console.error(
701
+ `[workflow-badge] Run #${run.id}: ${run.status}${run.conclusion ? ` (${run.conclusion})` : ""} \u2014 ${jobs.length} job(s)`
702
+ );
703
+ const maxSteps = argv["max-steps"] ? parseInt(argv["max-steps"], 10) : void 0;
704
+ const options = { width: parseInt(argv.width, 10) || 520 };
705
+ if (maxSteps !== void 0) options.maxSteps = maxSteps;
706
+ const svg = generateBadge(run, jobs, options);
707
+ if (argv.output) {
708
+ const outPath = import_upath.default.resolve(argv.output);
709
+ const outDir = import_upath.default.dirname(outPath);
710
+ if (!import_fs.default.existsSync(outDir)) {
711
+ import_fs.default.mkdirSync(outDir, { recursive: true });
712
+ }
713
+ import_fs.default.writeFileSync(outPath, svg, "utf-8");
714
+ console.error(`[workflow-badge] Badge written to ${outPath}`);
715
+ } else {
716
+ process.stdout.write(svg);
717
+ }
718
+ }
719
+ main().catch((err) => {
720
+ console.error("[workflow-badge] Error:", err.message);
721
+ process.exit(1);
722
+ });