binary-collections 2.0.9 → 2.0.11

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 (306) hide show
  1. package/.puppeterrc.cjs +25 -0
  2. package/binaries/binary-executor.cjs +178 -0
  3. package/{bin → binaries}/clean-nodemodule +0 -0
  4. package/binaries/clean-nodemodule.cjs +178 -0
  5. package/binaries/clean-nodemodule.cmd +4 -0
  6. package/{bin → binaries}/clean-nodemodules +0 -0
  7. package/binaries/clean-nodemodules.cjs +178 -0
  8. package/binaries/clean-nodemodules.cmd +5 -0
  9. package/{bin → binaries}/dev +0 -0
  10. package/binaries/dev.cjs +178 -0
  11. package/{bin → binaries}/empty +0 -0
  12. package/binaries/empty.cjs +178 -0
  13. package/{bin → binaries}/git-reduce-size +0 -0
  14. package/binaries/git-reduce-size.cjs +178 -0
  15. package/binaries/javakill.cjs +178 -0
  16. package/{bin → binaries}/javakill.cmd +0 -0
  17. package/binaries/kill-night-crows.bat +7 -0
  18. package/binaries/kill-night-crows.ps1 +172 -0
  19. package/{bin → binaries}/kill-process +0 -0
  20. package/binaries/kill-process.cjs +178 -0
  21. package/binaries/nodekill.cjs +178 -0
  22. package/{bin → binaries}/nodekill.ps1 +0 -0
  23. package/{bin → binaries}/prod +0 -0
  24. package/binaries/prod.cjs +178 -0
  25. package/binaries/py +111 -0
  26. package/binaries/py.cjs +178 -0
  27. package/binaries/py.cmd +49 -0
  28. package/{bin → binaries}/rmfind +0 -0
  29. package/binaries/rmfind.cjs +178 -0
  30. package/{bin → binaries}/rmx +0 -0
  31. package/binaries/rmx.cjs +178 -0
  32. package/{bin → binaries}/submodule-token +0 -0
  33. package/binaries/submodule-token.cjs +178 -0
  34. package/binaries/test-cjs +10 -0
  35. package/binaries/test-cjs.cjs +178 -0
  36. package/binaries/test-cjs.cmd +11 -0
  37. package/binaries/yarn-clean +32 -0
  38. package/binaries/yarn-clean.cjs +178 -0
  39. package/binaries/yarn-clean.cmd +30 -0
  40. package/binaries/yarn-clean.py +148 -0
  41. package/docs-src/clean-github-actions-caches.md +26 -0
  42. package/docs-src/free-chatgpt.md +26 -0
  43. package/lib/binary-collections-config.cjs +3 -2
  44. package/lib/binary-collections-config.mjs +2 -2
  45. package/lib/binary-collections.cjs +513 -105
  46. package/lib/binary-collections.mjs +178 -117
  47. package/lib/changelog.cjs +64 -16
  48. package/lib/changelog.mjs +177 -171
  49. package/lib/{chunk-VVEZVNIV.mjs → chunk-2CBJCW7E.mjs} +3 -3
  50. package/lib/chunk-34IQDTLZ.mjs +27 -0
  51. package/lib/chunk-3HFFECCI.mjs +27 -0
  52. package/lib/chunk-4UHL4WVN.mjs +136 -0
  53. package/lib/{chunk-4BYBVEYC.mjs → chunk-66PAU5PS.mjs} +5 -4
  54. package/lib/chunk-6HHJRKFB.mjs +59 -0
  55. package/lib/chunk-6S4NXESK.mjs +26 -0
  56. package/lib/chunk-7XTEJHOE.mjs +193 -0
  57. package/lib/{chunk-ZYAQRPUL.mjs → chunk-7YD7IPFF.mjs} +2 -2
  58. package/lib/{chunk-SH3L6HHV.mjs → chunk-A2JQXI5Z.mjs} +2 -2
  59. package/lib/{chunk-EGSSKVDH.mjs → chunk-A3VUZEJK.mjs} +1 -1
  60. package/lib/chunk-AJDD5DZM.mjs +109 -0
  61. package/lib/chunk-BZWVHODJ.mjs +62 -0
  62. package/lib/chunk-FCDQGYBF.mjs +136 -0
  63. package/lib/chunk-FKI7IEB5.mjs +172 -0
  64. package/lib/chunk-GEYA2USY.mjs +207 -0
  65. package/lib/chunk-GJTGHXRA.mjs +356 -0
  66. package/lib/{chunk-YV7DO3YV.mjs → chunk-HLGOWBEO.mjs} +1 -1
  67. package/lib/chunk-ID2WBTE2.mjs +80 -0
  68. package/lib/chunk-JXFOHKDM.mjs +239 -0
  69. package/lib/{chunk-YX5U7XDR.mjs → chunk-M3YIYRHT.mjs} +6 -5
  70. package/lib/chunk-N436BNBK.mjs +514 -0
  71. package/lib/chunk-NCXAP7AA.mjs +31 -0
  72. package/lib/chunk-PDN26I7O.mjs +188 -0
  73. package/lib/{chunk-JGR2NW6D.mjs → chunk-PDSXF5HY.mjs} +3 -3
  74. package/lib/{chunk-AASHBCRW.mjs → chunk-QQ4A6DLD.mjs} +8 -0
  75. package/lib/{chunk-ONIBBBQ3.mjs → chunk-RWLXRTYP.mjs} +4 -3
  76. package/lib/chunk-TOIVAQF7.mjs +136 -0
  77. package/lib/chunk-V5SKYJUB.mjs +136 -0
  78. package/lib/chunk-WSRETQCA.mjs +59 -0
  79. package/lib/chunk-XA3SNBPA.mjs +184 -0
  80. package/lib/chunk-XVBFFVCJ.mjs +209 -0
  81. package/lib/chunk-YYLIQQKF.mjs +31 -0
  82. package/lib/{chunk-APBWENF6.mjs → chunk-Z6JLYU2J.mjs} +63 -16
  83. package/lib/chunk-ZDMWBSYF.mjs +81 -0
  84. package/lib/clean-github-actions-caches.cjs +291 -148
  85. package/lib/clean-github-actions-caches.mjs +4 -3
  86. package/lib/del-gradle.cjs +63 -15
  87. package/lib/del-gradle.js +2 -1
  88. package/lib/del-gradle.mjs +2 -2
  89. package/lib/del-node-modules.cjs +143 -148
  90. package/lib/del-node-modules.js +210 -14
  91. package/lib/del-node-modules.mjs +149 -18
  92. package/lib/del-ps.cjs +90 -21
  93. package/lib/del-ps.js +3 -2
  94. package/lib/del-ps.mjs +7 -5
  95. package/lib/del-yarn-caches.cjs +87 -18
  96. package/lib/del-yarn-caches.js +38 -3
  97. package/lib/del-yarn-caches.mjs +6 -6
  98. package/lib/find-node-modules-cli.cjs +5 -4
  99. package/lib/find-node-modules-cli.js +2 -1
  100. package/lib/find-node-modules-cli.mjs +2 -2
  101. package/lib/find-node-modules.cjs +4 -3
  102. package/lib/{find-node-modules.d.ts → find-node-modules.d.cts} +1 -1
  103. package/lib/find-node-modules.mjs +2 -2
  104. package/lib/free-chatgpt.cjs +754 -0
  105. package/lib/free-chatgpt.js +51 -0
  106. package/lib/free-chatgpt.mjs +50 -0
  107. package/lib/git/gitattributes.cjs +2 -1
  108. package/lib/git/{gitattributes.d.ts → gitattributes.d.cts} +7 -2
  109. package/lib/git/gitattributes.mjs +2 -2
  110. package/lib/git/line-endings.cjs +298 -64
  111. package/lib/git/line-endings.mjs +4 -4
  112. package/lib/git/normalize.cjs +26 -36
  113. package/lib/git/normalize.mjs +2 -2
  114. package/lib/git/permissions.cjs +77 -11
  115. package/lib/git/permissions.mjs +3 -3
  116. package/lib/git/pull-strategy.cjs +76 -9
  117. package/lib/git/pull-strategy.mjs +3 -3
  118. package/lib/git/undo-commit-cli.cjs +110 -0
  119. package/lib/git/undo-commit-cli.d.ts +1 -0
  120. package/lib/git/undo-commit-cli.js +4 -0
  121. package/lib/git/undo-commit-cli.mjs +14 -0
  122. package/lib/git/undo-commit.cjs +81 -0
  123. package/lib/git/undo-commit.d.cts +1 -0
  124. package/lib/git/undo-commit.mjs +7 -0
  125. package/lib/git/undo-staged-cli.cjs +110 -0
  126. package/lib/git/undo-staged-cli.d.ts +1 -0
  127. package/lib/git/undo-staged-cli.js +4 -0
  128. package/lib/git/undo-staged-cli.mjs +14 -0
  129. package/lib/git/undo-staged.cjs +81 -0
  130. package/lib/git/undo-staged.d.cts +1 -0
  131. package/lib/git/undo-staged.mjs +7 -0
  132. package/lib/git/user-config.cjs +313 -83
  133. package/lib/git/user-config.mjs +4 -4
  134. package/lib/git/utils.cjs +40 -60
  135. package/lib/git/utils.mjs +2 -2
  136. package/lib/git-diff-cli.cjs +857 -0
  137. package/lib/git-diff-cli.js +16 -0
  138. package/lib/git-diff-cli.mjs +17 -0
  139. package/lib/git-diff.cjs +862 -58
  140. package/lib/git-diff.d.ts +38 -83
  141. package/lib/git-diff.js +152 -0
  142. package/lib/git-diff.mjs +23 -85
  143. package/lib/git-fix.cjs +733 -97
  144. package/lib/git-fix.mjs +10 -9
  145. package/lib/git-purge.cjs +64 -16
  146. package/lib/git-purge.d.cts +1 -0
  147. package/lib/git-purge.mjs +43 -37
  148. package/lib/index.cjs +7 -6
  149. package/lib/index.d.ts +1 -1
  150. package/lib/index.js +2 -5
  151. package/lib/index.mjs +4 -4
  152. package/lib/kill-night-crows.cjs +87 -0
  153. package/lib/kill-night-crows.d.mts +1 -0
  154. package/lib/kill-night-crows.mjs +65 -0
  155. package/lib/npm-run-series.cjs +63 -16
  156. package/lib/npm-run-series.mjs +42 -36
  157. package/lib/package-resolutions-updater-cli.cjs +560 -0
  158. package/lib/package-resolutions-updater-cli.d.mts +1 -0
  159. package/lib/package-resolutions-updater-cli.mjs +124 -0
  160. package/lib/package-resolutions-updater.cjs +178 -158
  161. package/lib/package-resolutions-updater.d.mts +32 -1
  162. package/lib/package-resolutions-updater.mjs +17 -338
  163. package/lib/php-cs-fixer-staged.cjs +105 -0
  164. package/lib/php-cs-fixer-staged.d.cts +2 -0
  165. package/lib/php-cs-fixer-staged.mjs +117 -0
  166. package/lib/print-directory-tree.cjs +320 -207
  167. package/lib/print-directory-tree.mjs +3 -3
  168. package/lib/ps/connected-domain.cjs +25 -2
  169. package/lib/ps/connected-domain.d.ts +10 -2
  170. package/lib/ps/connected-domain.js +5 -2
  171. package/lib/ps/connected-domain.mjs +8 -4
  172. package/lib/ps/index.cjs +345 -322
  173. package/lib/ps/index.d.mjs +1 -1
  174. package/lib/ps/index.js +2 -1
  175. package/lib/ps/index.mjs +179 -182
  176. package/lib/ps/isWin.cjs +24 -1
  177. package/lib/ps/isWin.d.ts +1 -1
  178. package/lib/ps/isWin.js +3 -1
  179. package/lib/ps/isWin.mjs +8 -4
  180. package/lib/ps/table-parser.cjs +167 -159
  181. package/lib/ps/table-parser.d.ts +5 -0
  182. package/lib/ps/table-parser.js +10 -4
  183. package/lib/ps/table-parser.mjs +9 -5
  184. package/lib/remove-module.cjs +310 -0
  185. package/lib/remove-module.d.mts +1 -0
  186. package/lib/remove-module.mjs +111 -0
  187. package/lib/rmpath.cjs +322 -0
  188. package/lib/rmpath.d.mts +3 -0
  189. package/lib/rmpath.mjs +108 -0
  190. package/lib/submodule-install.cjs +311 -86
  191. package/lib/submodule-install.mjs +53 -5
  192. package/lib/submodule-remove-cli.cjs +107 -0
  193. package/lib/submodule-remove-cli.d.ts +1 -0
  194. package/lib/submodule-remove-cli.js +31 -0
  195. package/lib/submodule-remove-cli.mjs +28 -0
  196. package/lib/submodule-remove.cjs +46 -0
  197. package/lib/submodule-remove.d.cts +2 -0
  198. package/lib/submodule-remove.mjs +6 -0
  199. package/lib/utils/chatgpt.cjs +541 -0
  200. package/lib/utils/chatgpt.d.ts +31 -0
  201. package/lib/utils/chatgpt.js +708 -0
  202. package/lib/utils/chatgpt.mjs +8 -0
  203. package/lib/utils/findEnvFiles.cjs +107 -0
  204. package/lib/utils/findEnvFiles.d.ts +8 -0
  205. package/lib/utils/findEnvFiles.js +121 -0
  206. package/lib/utils/findEnvFiles.mjs +8 -0
  207. package/lib/utils/findWorkspaceRoot.cjs +70 -0
  208. package/lib/utils/findWorkspaceRoot.d.ts +9 -0
  209. package/lib/utils/findWorkspaceRoot.js +57 -0
  210. package/lib/utils/findWorkspaceRoot.mjs +40 -0
  211. package/lib/{utils.cjs → utils/index.cjs} +61 -14
  212. package/lib/{utils.mjs → utils/index.mjs} +2 -2
  213. package/lib/utils/isGithubTokenValid.cjs +64 -0
  214. package/lib/utils/isGithubTokenValid.d.ts +7 -0
  215. package/lib/utils/isGithubTokenValid.js +48 -0
  216. package/lib/utils/isGithubTokenValid.mjs +36 -0
  217. package/lib/yarn-reinstall.cjs +220 -38
  218. package/lib/yarn-reinstall.mjs +2 -2
  219. package/package.json +138 -104
  220. package/readme.md +48 -75
  221. package/releases/readme.md +36 -0
  222. package/requirements.txt +1 -0
  223. package/test/README.md +101 -0
  224. package/test/package.json +2 -1
  225. package/test-project/readme.md +26 -0
  226. package/tmp/test-repo/README.md +35 -0
  227. package/tmp/test-repo/package.json +1 -1
  228. package/tmp/typedoc/readme.md +320 -0
  229. package/bin/bash-dummy +0 -56
  230. package/bin/bash-dummy.cmd +0 -25
  231. package/bin/dir-tree.cmd +0 -7
  232. package/bin/git-diff +0 -4
  233. package/bin/git-diff.cmd +0 -7
  234. package/bin/git-fix +0 -36
  235. package/bin/git-fix.cmd +0 -7
  236. package/bin/rmpath +0 -70
  237. package/bin/submodule-install.txt +0 -118
  238. package/bin/submodule-remove +0 -46
  239. package/bin/submodule.txt +0 -172
  240. package/lib/binary-collections-config.d.mts +0 -18
  241. package/lib/binary-collections-config.js +0 -39
  242. package/lib/binary-collections.d.mts +0 -137
  243. package/lib/binary-collections.d.ts +0 -137
  244. package/lib/changelog.d.mts +0 -2
  245. package/lib/changelog.js +0 -226
  246. package/lib/chunk-DPKAJKFO.mjs +0 -171
  247. package/lib/chunk-G3THLIDT.mjs +0 -200
  248. package/lib/chunk-W3ENOM53.mjs +0 -18
  249. package/lib/clean-github-actions-caches.d.mts +0 -169
  250. package/lib/clean-github-actions-caches.d.ts +0 -169
  251. package/lib/del-gradle.d.mts +0 -2
  252. package/lib/del-node-modules.d.mts +0 -2
  253. package/lib/del-ps.d.mts +0 -2
  254. package/lib/del-yarn-caches.d.mts +0 -2
  255. package/lib/find-node-modules-cli.d.mts +0 -1
  256. package/lib/find-node-modules.d.mts +0 -13
  257. package/lib/find-node-modules.js +0 -53
  258. package/lib/git/gitattributes.d.mts +0 -35
  259. package/lib/git/gitattributes.js +0 -223
  260. package/lib/git/line-endings.d.mts +0 -83
  261. package/lib/git/line-endings.d.ts +0 -83
  262. package/lib/git/normalize.d.mts +0 -43
  263. package/lib/git/normalize.d.ts +0 -43
  264. package/lib/git/permissions.d.mts +0 -17
  265. package/lib/git/permissions.d.ts +0 -17
  266. package/lib/git/pull-strategy.d.mts +0 -15
  267. package/lib/git/pull-strategy.d.ts +0 -15
  268. package/lib/git/user-config.d.mts +0 -105
  269. package/lib/git/user-config.d.ts +0 -105
  270. package/lib/git/utils.d.mts +0 -69
  271. package/lib/git/utils.d.ts +0 -69
  272. package/lib/git-diff.d.mts +0 -84
  273. package/lib/git-fix.d.mts +0 -141
  274. package/lib/git-fix.d.ts +0 -141
  275. package/lib/git-purge.d.mts +0 -2
  276. package/lib/git-purge.js +0 -59
  277. package/lib/index.d.mts +0 -1
  278. package/lib/npm-run-series.d.mts +0 -1
  279. package/lib/npm-run-series.js +0 -86
  280. package/lib/package-resolutions-updater.d.ts +0 -352
  281. package/lib/print-directory-tree.d.mts +0 -234
  282. package/lib/print-directory-tree.d.ts +0 -234
  283. package/lib/ps/connected-domain.d.mts +0 -3
  284. package/lib/ps/index.d.d.mts +0 -26
  285. package/lib/ps/index.d.d.ts +0 -26
  286. package/lib/ps/index.d.mts +0 -26
  287. package/lib/ps/isWin.d.mts +0 -3
  288. package/lib/ps/table-parser.d.mts +0 -3
  289. package/lib/submodule-install.d.mts +0 -121
  290. package/lib/submodule-install.d.ts +0 -121
  291. package/lib/utils.d.mts +0 -40
  292. package/lib/utils.js +0 -181
  293. package/lib/yarn-reinstall.d.mts +0 -49
  294. package/lib/yarn-reinstall.d.ts +0 -49
  295. package/src/package-resolutions-updater.mjs +0 -350
  296. package/src/print-directory-tree.cjs +0 -234
  297. package/src/ps/index.js +0 -286
  298. package/src/yarn-reinstall.cjs +0 -49
  299. /package/{bin → binaries}/nodekill +0 -0
  300. /package/{bin → binaries}/nodekill.cmd +0 -0
  301. /package/lib/{binary-collections-config.d.ts → binary-collections-config.d.cts} +0 -0
  302. /package/lib/{changelog.d.ts → changelog.d.cts} +0 -0
  303. /package/lib/{git-purge.d.ts → free-chatgpt.d.ts} +0 -0
  304. /package/lib/{git-diff.d.cts → git-diff-cli.d.ts} +0 -0
  305. /package/lib/{npm-run-series.d.ts → npm-run-series.d.cts} +0 -0
  306. /package/lib/{utils.d.ts → utils/index.d.cts} +0 -0
@@ -1,123 +1,531 @@
1
1
  #!/usr/bin/env node
2
- "use strict";
3
- const { spawn } = require("child_process");
4
- const { glob } = require("glob");
5
- const path = require("path");
6
- const { getArgs } = require("./utils.js");
7
- const pkgJson = require("../package.json");
8
- const fs = require("fs");
9
- /**
10
- * Main binary-collections script that dynamically finds and executes other scripts
11
- * Usage: npx binary-collections <script-name> [...args]
12
- * Example: npx binary-collections git-diff -s
13
- */
14
- function showHelp() {
15
- console.log("🚀 Binary Collections - Dynamic Script Runner");
16
- console.log("═══════════════════════════════════════════════");
17
- console.log("");
18
- console.log("📋 Usage: npx binary-collections <script-name> [...args]");
19
- console.log("");
20
- console.log("✨ Examples:");
21
- console.log(" 📊 npx binary-collections git-diff -s");
22
- console.log(" 🧹 npx binary-collections del-node-modules");
23
- console.log(" 🔍 npx binary-collections find-node-modules --help");
24
- console.log("");
25
- console.log("ℹ️ This tool will search for <script-name>.{cjs,js,mjs} in the script's directory");
26
- console.log(" and execute it with the provided arguments.");
27
- console.log("");
28
- console.log("⚙️ Options:");
29
- console.log(" --help, -h Show this help message");
30
- process.exit(0);
31
- }
32
- function findScript(scriptName, searchDir = null) {
33
- if (!searchDir)
34
- searchDir = __dirname;
35
- // Define ignore patterns for library config and utils
36
- const ignorePatterns = [
37
- `**/*config*.{cjs,js,mjs}`,
38
- `**/utils.{cjs,js,mjs}`,
39
- `**/index.{cjs,js,mjs}`,
40
- `**/chunk-*.{cjs,js,mjs}`,
41
- `**/*.d.{ts,cts,mts}` // ignore TypeScript declaration files
42
- ];
43
- try {
44
- // Use glob to find script files, excluding ignored patterns
45
- // Use cwd option for better path handling
46
- const pattern = `${scriptName}.{cjs,js,mjs}`;
47
- const files = glob.sync(pattern, {
48
- cwd: searchDir,
49
- ignore: ignorePatterns,
50
- absolute: true
2
+ var __getOwnPropNames = Object.getOwnPropertyNames;
3
+ var __esm = (fn, res) => function __init() {
4
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
5
+ };
6
+ var __commonJS = (cb, mod) => function __require() {
7
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
8
+ };
9
+
10
+ // node_modules/tsup/assets/cjs_shims.js
11
+ var init_cjs_shims = __esm({
12
+ "node_modules/tsup/assets/cjs_shims.js"() {
13
+ }
14
+ });
15
+
16
+ // src/utils/index.cjs
17
+ var require_utils = __commonJS({
18
+ "src/utils/index.cjs"(exports2, module2) {
19
+ init_cjs_shims();
20
+ var fs2 = require("fs");
21
+ var path2 = require("upath");
22
+ var argv = require("minimist")(process.argv.slice(2));
23
+ var { exec } = require("child_process");
24
+ var { URL: URL2 } = require("url");
25
+ var { promisify } = require("util");
26
+ var execAsync = promisify(exec);
27
+ async function parseGitRemotes() {
28
+ try {
29
+ const { stdout } = await execAsync("git remote -v");
30
+ const lines = stdout.split("\n");
31
+ const remotes = {};
32
+ lines.forEach((line) => {
33
+ const [name, url] = line.split(" ");
34
+ if (name && url) {
35
+ const [repoUrl] = url.split(" ");
36
+ try {
37
+ const parsedUrl = new URL2(repoUrl);
38
+ const pathParts = parsedUrl.pathname.split("/").filter(Boolean);
39
+ if (parsedUrl.hostname === "github.com" && pathParts.length === 2) {
40
+ let repoPath = pathParts.join("/");
41
+ if (repoPath.endsWith(".git")) {
42
+ repoPath = repoPath.slice(0, -4);
43
+ }
44
+ remotes[name] = repoPath;
45
+ }
46
+ } catch (e) {
47
+ console.error("URL Parsing Error:", e.message);
48
+ }
49
+ }
51
50
  });
52
- if (files.length > 0) {
53
- // Return the first match if found
54
- return files[0];
51
+ return remotes;
52
+ } catch (error) {
53
+ console.error("Error:", error.message);
54
+ return {};
55
+ }
56
+ }
57
+ module2.exports.parseGitRemotes = parseGitRemotes;
58
+ function joinPathPreserveDriveLetter(...segments) {
59
+ let fullPath = require("path").join(...segments);
60
+ if (/^[a-z]:\\/.test(fullPath)) {
61
+ fullPath = fullPath.charAt(0).toUpperCase() + fullPath.slice(1);
62
+ }
63
+ return fullPath;
64
+ }
65
+ module2.exports.joinPathPreserveDriveLetter = joinPathPreserveDriveLetter;
66
+ function getArgs2() {
67
+ return argv;
68
+ }
69
+ module2.exports.getArgs = getArgs2;
70
+ function del(fullPath) {
71
+ try {
72
+ if (!fs2.existsSync(fullPath)) return;
73
+ const stat = fs2.lstatSync(fullPath);
74
+ if (stat.isSymbolicLink()) {
75
+ try {
76
+ fs2.unlinkSync(fullPath);
77
+ console.log("deleted symlink", fullPath);
78
+ } catch (e) {
79
+ console.log("failed delete symlink", fullPath, e && e.message);
80
+ }
81
+ return;
55
82
  }
56
- else {
57
- // If not found pick from pkg.bin[scriptName] when exist
58
- if (pkgJson.bin[scriptName]) {
59
- const find = [
60
- path.join(searchDir, pkgJson.bin[scriptName]),
61
- path.join(process.cwd(), "node_modules/binary-collections", pkgJson.bin[scriptName])
62
- ].filter((file) => fs.existsSync(file));
63
- if (find.length > 0) {
64
- return find[0];
65
- }
66
- else {
67
- console.warn(`⚠️ Script "${scriptName}" not found in ${searchDir}.`);
68
- console.warn(`🔍 Searched for: ${pattern} in ${searchDir}`);
69
- }
83
+ if (stat.isDirectory()) {
84
+ const subdir = fs2.readdirSync(fullPath).map((dirPath) => path2.resolve(fullPath, dirPath));
85
+ for (let i = 0; i < subdir.length; i++) {
86
+ del(subdir[i]);
87
+ }
88
+ try {
89
+ fs2.rmdirSync(fullPath);
90
+ console.log("deleted", fullPath);
91
+ } catch (e) {
92
+ try {
93
+ fs2.rmSync(fullPath, { recursive: true, force: true, retryDelay: 7e3 });
94
+ console.log("deleted", fullPath);
95
+ } catch (ee) {
96
+ console.log("failed delete", fullPath, ee && ee.message);
70
97
  }
98
+ }
99
+ return;
100
+ }
101
+ try {
102
+ fs2.unlinkSync(fullPath);
103
+ console.log("deleted", fullPath);
104
+ } catch (e) {
105
+ try {
106
+ fs2.rmSync(fullPath, { recursive: true, force: true, retryDelay: 7e3 });
107
+ console.log("deleted", fullPath);
108
+ } catch (ee) {
109
+ console.log("failed delete", fullPath, ee && ee.message);
110
+ }
71
111
  }
112
+ } catch (err) {
113
+ console.log("failed delete", fullPath, err && err.message);
114
+ }
72
115
  }
73
- catch (error) {
74
- console.error(`🔍 Error searching for script: ${error.message}`);
116
+ module2.exports.del = del;
117
+ function delStream(globStream) {
118
+ globStream.stream().on("data", (result) => {
119
+ const fullPath = path2.resolve(process.cwd(), result);
120
+ try {
121
+ if (fs2.existsSync(fullPath)) {
122
+ const stat = fs2.lstatSync(fullPath);
123
+ if (stat.isSymbolicLink()) {
124
+ try {
125
+ fs2.unlinkSync(fullPath);
126
+ console.log("deleted symlink", fullPath);
127
+ } catch (e) {
128
+ console.log("failed delete symlink", fullPath, e && e.message);
129
+ }
130
+ return;
131
+ }
132
+ if (stat.isDirectory()) {
133
+ const subdir = fs2.readdirSync(fullPath).map((dirPath) => path2.resolve(fullPath, dirPath));
134
+ for (let i = 0; i < subdir.length; i++) {
135
+ del(subdir[i]);
136
+ }
137
+ }
138
+ }
139
+ del(fullPath);
140
+ } catch (err) {
141
+ console.log("failed processing", fullPath, err && err.message);
142
+ }
143
+ });
144
+ }
145
+ module2.exports.delStream = delStream;
146
+ function getFileTreeString(hashArray) {
147
+ const tree = {};
148
+ const hashMap = {};
149
+ for (const entry of hashArray) {
150
+ const [filePath, hash] = entry.split(" ");
151
+ hashMap[filePath] = hash;
152
+ const parts = filePath.split("/");
153
+ let current = tree;
154
+ for (let i = 0; i < parts.length; i++) {
155
+ const part = parts[i];
156
+ if (i === parts.length - 1) {
157
+ current[part] = null;
158
+ } else {
159
+ current[part] = current[part] || {};
160
+ current = current[part];
161
+ }
162
+ }
163
+ }
164
+ function printNode(node, prefix = "", parentPath = "") {
165
+ const keys = Object.keys(node).sort();
166
+ let lines = [];
167
+ keys.forEach((key, idx) => {
168
+ const isLast = idx === keys.length - 1;
169
+ const branch = isLast ? "\u2514\u2500\u2500 " : "\u251C\u2500\u2500 ";
170
+ const currentPath = parentPath ? parentPath + "/" + key : key;
171
+ if (node[key] === null) {
172
+ lines.push(prefix + branch + key + " [" + (hashMap[currentPath] || "") + "]");
173
+ } else {
174
+ lines.push(prefix + branch + key + "/");
175
+ lines = lines.concat(printNode(node[key], prefix + (isLast ? " " : "\u2502 "), currentPath));
176
+ }
177
+ });
178
+ return lines;
179
+ }
180
+ return printNode(tree, "", "").join("\n");
75
181
  }
76
- return null;
182
+ module2.exports.getFileTreeString = getFileTreeString;
183
+ var delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
184
+ module2.exports.delay = delay;
185
+ }
186
+ });
187
+
188
+ // package.json
189
+ var require_package = __commonJS({
190
+ "package.json"(exports2, module2) {
191
+ module2.exports = {
192
+ name: "binary-collections",
193
+ version: "2.0.11",
194
+ description: "Utility to clean any programming caches and more",
195
+ keywords: [
196
+ "cache",
197
+ "cleaner",
198
+ "utility"
199
+ ],
200
+ homepage: "https://www.webmanajemen.com/",
201
+ bugs: {
202
+ url: "https://github.com/dimaslanjaka/bin/issues"
203
+ },
204
+ license: "MIT",
205
+ author: {
206
+ name: "dimaslanjaka",
207
+ email: "dimaslanjaka@gmail.com",
208
+ url: "https://webmanajemen.com"
209
+ },
210
+ type: "module",
211
+ main: "lib/index.js",
212
+ exports: {
213
+ ".": {
214
+ require: {
215
+ default: "./lib/index.cjs",
216
+ types: "./lib/index.d.ts"
217
+ },
218
+ import: {
219
+ default: "./lib/index.mjs",
220
+ types: "./lib/index.d.mts"
221
+ }
222
+ },
223
+ "./package.json": "./package.json"
224
+ },
225
+ types: "lib/index.d.ts",
226
+ files: [
227
+ "binaries",
228
+ "lib",
229
+ "package.json",
230
+ "docs-src/**/*.md",
231
+ "readme.md",
232
+ ".puppeterrc.*",
233
+ "requirements.txt"
234
+ ],
235
+ scripts: {
236
+ build: "tsc -b tsconfig.build.json && npm run build:tsup && npm run postbuild",
237
+ "build:packages": "yarn workspaces foreach --worktree --exclude=binary-collections --no-private run build",
238
+ "build:rollup": "rollup -c rollup.config.js",
239
+ "build:tsup": "node build.tsup.js",
240
+ clean: "rimraf lib tmp/dist binaries",
241
+ pack: "node packer.cjs --yarn --filename=bin",
242
+ postbuild: "node -r ts-node/register -r dotenv/config build.exports.mjs && yarn run pack",
243
+ prepare: "husky",
244
+ test: 'npx jest --runInBand --forceExit --testTimeout=120000 --testPathIgnorePatterns="\\.mjs$"',
245
+ "test:coverage": "npm test --coverage --detectOpenHandles",
246
+ "test:esm": 'node --experimental-vm-modules node_modules/jest/bin/jest.js --runInBand --forceExit --testTimeout=120000 --testPathIgnorePatterns="\\.(ts|js|cjs)$"',
247
+ "test:nrs": "npm test -- nrs build:**",
248
+ "test:watch": "npm test --watch",
249
+ "update:ncu": "npx npm-check-updates -u -x jsdom,chalk,hexo,deepmerge-ts --enginesNode --root",
250
+ "update:packer": "curl -L https://github.com/dimaslanjaka/nodejs-package-types/raw/main/packer.js > packer.cjs",
251
+ "puppeteer:browser": "npx -y puppeteer browsers install chrome"
252
+ },
253
+ repository: {
254
+ type: "git",
255
+ url: "git+https://github.com/dimaslanjaka/bin"
256
+ },
257
+ dependencies: {
258
+ "@yarnpkg/core": "^4.7.0",
259
+ "ansi-colors": "^4.1.3",
260
+ axios: "^1.15.2",
261
+ dotenv: "^17.4.2",
262
+ execa: "^9.6.1",
263
+ "fs-extra": "^11.3.4",
264
+ "git-command-helper": "https://github.com/dimaslanjaka/git-command-helper/raw/refs/heads/pre-release/release/git-command-helper.tgz",
265
+ glob: "^13.0.6",
266
+ minimatch: "^10.2.5",
267
+ minimist: "^1.2.8",
268
+ "ps-node": "^0.1.6",
269
+ puppeteer: "^24.42.0",
270
+ "puppeteer-extra": "^3.3.6",
271
+ "puppeteer-extra-plugin-stealth": "^2.11.2",
272
+ remove: "^0.1.5",
273
+ "sbg-utility": "^2.0.11",
274
+ upath: "^3.0.7",
275
+ yaml: "^2.8.3",
276
+ yarn: "^1.22.22"
277
+ },
278
+ devDependencies: {
279
+ "@babel/core": "^7.29.0",
280
+ "@babel/preset-env": "^7.29.2",
281
+ "@babel/preset-typescript": "^7.28.5",
282
+ "@eslint/eslintrc": "^3.3.5",
283
+ "@eslint/js": "^10.0.1",
284
+ "@rollup/plugin-babel": "^7.0.0",
285
+ "@rollup/plugin-commonjs": "^29.0.2",
286
+ "@rollup/plugin-json": "^6.1.0",
287
+ "@rollup/plugin-node-resolve": "^16.0.3",
288
+ "@types/babel__core": "^7",
289
+ "@types/babel__preset-env": "^7",
290
+ "@types/eslint": "^9",
291
+ "@types/fs-extra": "^11",
292
+ "@types/jest": "^30.0.0",
293
+ "@types/minimist": "^1",
294
+ "@types/node": "^25.6.0",
295
+ "@types/prettier": "^3",
296
+ "@types/ps-node": "^0",
297
+ "@types/yargs": "^17",
298
+ "@typescript-eslint/eslint-plugin": "^8.59.0",
299
+ "@typescript-eslint/parser": "^8.59.0",
300
+ "babel-jest": "^30.4.1",
301
+ "browser-sync": "^3.0.4",
302
+ "cross-env": "^10.1.0",
303
+ "cross-spawn": "https://github.com/dimaslanjaka/node-cross-spawn/raw/80999ac7a7031a81e11ddb5fab0f8ba433041c98/release/cross-spawn.tgz",
304
+ eslint: "^10.2.1",
305
+ "eslint-config-prettier": "^10.1.8",
306
+ "eslint-plugin-prettier": "^5.5.5",
307
+ globals: "^17.5.0",
308
+ gulp: "^5.0.1",
309
+ husky: "^9.1.7",
310
+ jest: "^30.4.2",
311
+ "lint-staged": "^16.4.0",
312
+ marked: "^18.0.3",
313
+ prettier: "^3.8.3",
314
+ rimraf: "^6.1.3",
315
+ rollup: "^4.60.2",
316
+ "ts-jest": "^29.4.9",
317
+ "ts-node": "^10.9.2",
318
+ tsup: "^8.5.1",
319
+ typedoc: "^0.28.19",
320
+ "typedoc-plugin-ga": "^1.1.1",
321
+ typescript: "^6.0.3"
322
+ },
323
+ directories: {
324
+ lib: "lib",
325
+ bin: "binaries"
326
+ },
327
+ workspaces: [
328
+ "packages/*"
329
+ ],
330
+ packageManager: "yarn@4.9.2",
331
+ resolutions: {
332
+ "cross-spawn": "https://github.com/dimaslanjaka/node-cross-spawn/raw/80999ac7a7031a81e11ddb5fab0f8ba433041c98/release/cross-spawn.tgz",
333
+ "git-command-helper": "https://github.com/dimaslanjaka/git-command-helper/raw/0ec870a451241af4f7e16acee5474afe38918c77/release/git-command-helper.tgz",
334
+ "sbg-utility": "https://github.com/dimaslanjaka/static-blog-generator/raw/1c6327117ab66a6ac7bac6df2b5c4f1cd9ef2785/packages/sbg-utility/release/sbg-utility.tgz"
335
+ },
336
+ bin: {
337
+ "binary-collections": "lib/binary-collections.cjs",
338
+ "binary-executor": "binaries/binary-executor.cjs",
339
+ changelog: "lib/changelog.cjs",
340
+ chatgpt: "lib/free-chatgpt.cjs",
341
+ "clean-github-actions-cache": "lib/clean-github-actions-caches.cjs",
342
+ "clean-github-actions-caches": "lib/clean-github-actions-caches.cjs",
343
+ "clean-nodemodule": "binaries/clean-nodemodule.cjs",
344
+ "clean-nodemodules": "binaries/clean-nodemodules.cjs",
345
+ "clear-gh-caches": "lib/clean-github-actions-caches.cjs",
346
+ "clear-github-actions-cache": "lib/clean-github-actions-caches.cjs",
347
+ "clear-github-actions-caches": "lib/clean-github-actions-caches.cjs",
348
+ "del-gradle": "lib/del-gradle.cjs",
349
+ "del-node-modules": "lib/del-node-modules.cjs",
350
+ "del-nodemodules": "lib/del-node-modules.cjs",
351
+ "del-ps": "lib/del-ps.cjs",
352
+ "del-yarn-caches": "lib/del-yarn-caches.cjs",
353
+ "del-yarncaches": "lib/del-yarn-caches.cjs",
354
+ dev: "binaries/dev.cjs",
355
+ "dir-tree": "lib/print-directory-tree.cjs",
356
+ empty: "binaries/empty.cjs",
357
+ "find-node-modules": "lib/find-node-modules-cli.cjs",
358
+ "free-chatgpt": "lib/free-chatgpt.cjs",
359
+ "git-diff": "lib/git-diff-cli.cjs",
360
+ "git-fix": "lib/git-fix.cjs",
361
+ "git-purge": "lib/git-purge.cjs",
362
+ "git-reduce-size": "binaries/git-reduce-size.cjs",
363
+ "git-undo-commit": "lib/git/undo-commit.cjs",
364
+ "git-undo-staged": "lib/git/undo-staged.cjs",
365
+ javakill: "binaries/javakill.cjs",
366
+ "kill-night-crows": "lib/kill-night-crows.cjs",
367
+ "kill-process": "binaries/kill-process.cjs",
368
+ nodekill: "binaries/nodekill.cjs",
369
+ "npm-run-series": "lib/npm-run-series.cjs",
370
+ nrs: "lib/npm-run-series.cjs",
371
+ "package-resolutions-updater": "lib/package-resolutions-updater-cli.cjs",
372
+ "php-cs-fixer-staged": "lib/php-cs-fixer-staged.cjs",
373
+ "pkg-res-updater": "lib/package-resolutions-updater-cli.cjs",
374
+ "pkg-resolutions-updater": "lib/package-resolutions-updater-cli.cjs",
375
+ "print-directory-tree": "lib/print-directory-tree.cjs",
376
+ "print-tree": "lib/print-directory-tree.cjs",
377
+ prod: "binaries/prod.cjs",
378
+ py: "binaries/py.cjs",
379
+ "remove-module": "lib/remove-module.cjs",
380
+ rmfind: "binaries/rmfind.cjs",
381
+ rmpath: "lib/rmpath.cjs",
382
+ rmx: "binaries/rmx.cjs",
383
+ "run-s": "lib/npm-run-series.cjs",
384
+ "run-series": "lib/npm-run-series.cjs",
385
+ "submodule-install": "lib/submodule-install.cjs",
386
+ "submodule-remove": "lib/submodule-remove-cli.cjs",
387
+ "submodule-token": "binaries/submodule-token.cjs",
388
+ "test-cjs": "binaries/test-cjs.cjs",
389
+ "undo-commit": "lib/git/undo-commit.cjs",
390
+ "undo-last-commit": "lib/git/undo-commit.cjs",
391
+ "undo-staged": "lib/git/undo-staged.cjs",
392
+ "yarn-clean": "binaries/yarn-clean.cjs",
393
+ "yarn-reinstall": "lib/yarn-reinstall.cjs"
394
+ }
395
+ };
396
+ }
397
+ });
398
+
399
+ // src/binary-collections.cjs
400
+ init_cjs_shims();
401
+ var { spawn } = require("child_process");
402
+ var { glob } = require("glob");
403
+ var path = require("upath");
404
+ var { getArgs } = require_utils();
405
+ var pkgJson = require_package();
406
+ var fs = require("fs-extra");
407
+ function showHelp() {
408
+ console.log("\u{1F680} Binary Collections - Dynamic Script Runner");
409
+ console.log("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550");
410
+ console.log("");
411
+ console.log("\u{1F4CB} Usage: npx binary-collections <script-name> [...args]");
412
+ console.log("");
413
+ console.log("\u2728 Examples:");
414
+ console.log(" \u{1F4CA} npx binary-collections git-diff -s");
415
+ console.log(" \u{1F9F9} npx binary-collections del-node-modules");
416
+ console.log(" \u{1F50D} npx binary-collections find-node-modules --help");
417
+ console.log("");
418
+ console.log("\u2139\uFE0F This tool will search for <script-name>.{cjs,js,mjs} in the script's directory");
419
+ console.log(" and execute it with the provided arguments.");
420
+ console.log("");
421
+ console.log("\u2699\uFE0F Options:");
422
+ console.log(" --help, -h Show this help message");
423
+ process.exit(0);
77
424
  }
78
- function executeScript(scriptPath, args) {
79
- const child = spawn("node", [scriptPath, ...args], {
80
- stdio: "inherit",
81
- shell: true
82
- });
83
- child.on("error", (error) => {
84
- console.error(`❌ Error executing script: ${error.message}`);
85
- process.exit(1);
86
- });
87
- child.on("close", (code) => {
88
- process.exit(code);
425
+ function findScript(scriptName, searchDir = null) {
426
+ if (!searchDir) searchDir = __dirname;
427
+ let result;
428
+ const ignorePatterns = [
429
+ `**/*config*.{cjs,js,mjs}`,
430
+ `**/utils.{cjs,js,mjs}`,
431
+ `**/index.{cjs,js,mjs}`,
432
+ `**/chunk-*.{cjs,js,mjs}`,
433
+ `**/*.d.{ts,cts,mts}`
434
+ // ignore TypeScript declaration files
435
+ ];
436
+ try {
437
+ const pattern = `${scriptName}.{cjs,js,mjs}`;
438
+ const files = glob.sync(pattern, {
439
+ cwd: searchDir,
440
+ ignore: ignorePatterns,
441
+ absolute: true
89
442
  });
443
+ if (files.length > 0) {
444
+ result = files[0];
445
+ } else {
446
+ if (pkgJson.bin[scriptName]) {
447
+ const find = [
448
+ path.join(searchDir, pkgJson.bin[scriptName]),
449
+ path.join(process.cwd(), "node_modules/binary-collections", pkgJson.bin[scriptName]),
450
+ path.join(__dirname, pkgJson.bin[scriptName]),
451
+ path.join(path.join(__dirname, ".."), pkgJson.bin[scriptName])
452
+ ];
453
+ const filtered = find.filter((file) => fs.existsSync(file));
454
+ if (filtered.length > 0) {
455
+ result = filtered[0];
456
+ } else {
457
+ console.warn(`\u26A0\uFE0F Script "${scriptName}" not found in ${searchDir}.`);
458
+ console.warn(`\u{1F50D} Searched for: ${pattern} in ${searchDir}`);
459
+ }
460
+ }
461
+ }
462
+ } catch (error) {
463
+ console.error(`\u{1F50D} Error searching for script: ${error.message}`);
464
+ }
465
+ if (result && !result.includes("-cli")) {
466
+ const ext = path.extname(result);
467
+ const filename = path.basename(result, ext);
468
+ const cliFile = path.join(path.dirname(result), `${filename}-cli${ext}`);
469
+ if (fs.existsSync(cliFile)) {
470
+ result = cliFile;
471
+ console.log(`\u{1F50D} Found CLI version: ${cliFile}`);
472
+ }
473
+ }
474
+ return result;
475
+ }
476
+ function executeScript(scriptPath, args) {
477
+ console.log(`\u{1F527} Executing script: ${scriptPath} args: ${args.join(" ")}`);
478
+ const child = spawn("node", [scriptPath, ...args], {
479
+ stdio: "inherit",
480
+ shell: true
481
+ });
482
+ child.on("error", (error) => {
483
+ console.error(`\u274C Error executing script: ${error.message}`);
484
+ process.exit(1);
485
+ });
486
+ child.on("close", (code) => {
487
+ process.exit(code);
488
+ });
90
489
  }
91
490
  function main() {
92
- const args = getArgs();
93
- const positional = args._ || [];
94
- // Show help if no arguments or if help is requested without a script name
95
- if (positional.length === 0 || (positional.length === 1 && (args.help || args.h))) {
96
- showHelp();
491
+ const args = getArgs();
492
+ const positional = args._ || [];
493
+ console.log(`\u{1F50D} Parsed arguments: ${JSON.stringify(args)}`);
494
+ if (positional.length === 0) {
495
+ return showHelp();
496
+ }
497
+ const scriptName = positional[0];
498
+ const scriptArgs = [];
499
+ scriptArgs.push(...positional.slice(1));
500
+ Object.keys(args).forEach((key) => {
501
+ if (key !== "_") {
502
+ const value = args[key];
503
+ if (typeof value === "boolean" && value) {
504
+ scriptArgs.push(key.length === 1 ? `-${key}` : `--${key}`);
505
+ } else if (value !== true && value !== false) {
506
+ scriptArgs.push(key.length === 1 ? `-${key}` : `--${key}`);
507
+ scriptArgs.push(value);
508
+ }
97
509
  }
98
- const scriptName = positional[0];
99
- const scriptArgs = positional.slice(1);
100
- // Find the script in current directory
101
- const scriptPath = findScript(scriptName);
102
- if (!scriptPath) {
103
- console.error(`❌ Error: Script "${scriptName}" not found.`);
104
- console.error(`🔍 Searched for: ${scriptName}.{cjs,js,mjs} in ${__dirname}`);
105
- console.error("");
106
- console.error("📝 Available extensions: .cjs, .js, .mjs");
107
- process.exit(1);
108
- }
109
- // Show relative path from current working directory
110
- const relativePath = path.relative(process.cwd(), scriptPath);
111
- console.log(`✅ Found script: ${relativePath}`);
112
- executeScript(scriptPath, scriptArgs);
510
+ });
511
+ const scriptPath = findScript(scriptName);
512
+ if (!scriptPath) {
513
+ console.error(`\u274C Error: Script "${scriptName}" not found.`);
514
+ console.error(`\u{1F50D} Searched for: ${scriptName}.{cjs,js,mjs} in ${__dirname}`);
515
+ console.error("");
516
+ console.error("\u{1F4DD} Available extensions: .cjs, .js, .mjs");
517
+ process.exit(1);
518
+ }
519
+ const relativePath = path.relative(process.cwd(), scriptPath);
520
+ console.log(`\u2705 Found script: ${relativePath}`);
521
+ executeScript(scriptPath, scriptArgs);
113
522
  }
114
- // Handle uncaught exceptions
115
523
  process.on("uncaughtException", (error) => {
116
- console.error("💥 Uncaught Exception:", error.message);
117
- process.exit(1);
524
+ console.error("\u{1F4A5} Uncaught Exception:", error.message);
525
+ process.exit(1);
118
526
  });
119
527
  process.on("unhandledRejection", (reason, promise) => {
120
- console.error("⚠️ Unhandled Rejection at:", promise, "reason:", reason);
121
- process.exit(1);
528
+ console.error("\u26A0\uFE0F Unhandled Rejection at:", promise, "reason:", reason);
529
+ process.exit(1);
122
530
  });
123
531
  main();