binary-collections 2.0.10 → 2.0.12

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 (290) hide show
  1. package/.opencode/package.json +5 -0
  2. package/.puppeterrc.cjs +25 -0
  3. package/binaries/binary-executor.cjs +138 -3
  4. package/binaries/clean-nodemodule.cjs +138 -3
  5. package/binaries/clean-nodemodules.cjs +138 -3
  6. package/binaries/dev.cjs +138 -3
  7. package/binaries/empty.cjs +138 -3
  8. package/binaries/git-reduce-size.cjs +138 -3
  9. package/binaries/javakill.cjs +138 -3
  10. package/binaries/kill-night-crows.bat +7 -0
  11. package/binaries/kill-night-crows.ps1 +172 -0
  12. package/binaries/kill-process.cjs +138 -3
  13. package/binaries/nodekill.cjs +138 -3
  14. package/binaries/prod.cjs +138 -3
  15. package/binaries/py +111 -0
  16. package/binaries/py.cjs +178 -0
  17. package/binaries/py.cmd +49 -0
  18. package/binaries/rmfind.cjs +138 -3
  19. package/binaries/rmx +15 -1
  20. package/binaries/rmx.cjs +138 -3
  21. package/binaries/rmx.cmd +12 -0
  22. package/binaries/submodule-token.cjs +138 -3
  23. package/binaries/test-cjs +18 -0
  24. package/binaries/test-cjs.cjs +178 -0
  25. package/binaries/test-cjs.cmd +26 -0
  26. package/binaries/test-esm +16 -0
  27. package/binaries/test-esm.cjs +178 -0
  28. package/binaries/test-esm.cmd +23 -0
  29. package/binaries/yarn-clean +32 -0
  30. package/binaries/yarn-clean.cjs +178 -0
  31. package/binaries/yarn-clean.cmd +30 -0
  32. package/binaries/yarn-clean.py +166 -0
  33. package/binaries/yc +110 -0
  34. package/binaries/yc.cjs +178 -0
  35. package/lib/binary-collections/config.cjs +126 -0
  36. package/lib/binary-collections/config.mjs +7 -0
  37. package/lib/binary-collections/executeScript.cjs +19 -0
  38. package/lib/binary-collections/executeScript.d.cts +12 -0
  39. package/lib/binary-collections/executeScript.mjs +6 -0
  40. package/lib/binary-collections/findScript.cjs +284 -0
  41. package/lib/binary-collections/findScript.d.cts +12 -0
  42. package/lib/binary-collections/findScript.mjs +7 -0
  43. package/lib/binary-collections/listScript.cjs +266 -0
  44. package/lib/binary-collections/listScript.d.cts +19 -0
  45. package/lib/binary-collections/listScript.mjs +7 -0
  46. package/lib/binary-collections.cjs +342 -194
  47. package/lib/binary-collections.mjs +22 -268
  48. package/lib/changelog.cjs +61 -13
  49. package/lib/changelog.mjs +1 -1
  50. package/lib/{chunk-E6FDDAOO.mjs → chunk-2LSRSEXF.mjs} +2 -2
  51. package/lib/chunk-34IQDTLZ.mjs +27 -0
  52. package/lib/chunk-3HFFECCI.mjs +27 -0
  53. package/lib/{chunk-V3N3JEUF.mjs → chunk-5RTXZVCW.mjs} +60 -13
  54. package/lib/chunk-66KDU4TX.mjs +268 -0
  55. package/lib/chunk-6PU7BAHB.mjs +61 -0
  56. package/lib/{chunk-6HHJRKFB.mjs → chunk-BZWVHODJ.mjs} +4 -1
  57. package/lib/chunk-C6D2TTYU.mjs +32 -0
  58. package/lib/chunk-FB2WKVJD.mjs +158 -0
  59. package/lib/{chunk-66PAU5PS.mjs → chunk-G5UUEWUO.mjs} +9 -5
  60. package/lib/{chunk-HO6GHCOB.mjs → chunk-GAGABICI.mjs} +198 -63
  61. package/lib/chunk-H44UWUFY.mjs +105 -0
  62. package/lib/chunk-NCZPTKDV.mjs +79 -0
  63. package/lib/chunk-NGFK3EYW.mjs +28 -0
  64. package/lib/chunk-NVEG3LEZ.mjs +143 -0
  65. package/lib/chunk-OGXVGBRI.mjs +29 -0
  66. package/lib/chunk-OXV52GD5.mjs +62 -0
  67. package/lib/{chunk-PDSXF5HY.mjs → chunk-PDN26I7O.mjs} +1 -0
  68. package/lib/chunk-PXBMHE7O.mjs +35 -0
  69. package/lib/chunk-R5FJOR63.mjs +47 -0
  70. package/lib/chunk-SPTECFE5.mjs +180 -0
  71. package/lib/chunk-UXCFNAR6.mjs +55 -0
  72. package/lib/chunk-V2IBPCEV.mjs +39 -0
  73. package/lib/chunk-XPJGCDOD.mjs +14 -0
  74. package/lib/{chunk-AI4CVPJ7.mjs → chunk-ZDMWBSYF.mjs} +4 -4
  75. package/lib/chunk-ZOWVMII3.mjs +228 -0
  76. package/lib/clean-github-actions-caches-cli.cjs +465 -0
  77. package/lib/clean-github-actions-caches-cli.d.cts +1 -0
  78. package/lib/clean-github-actions-caches-cli.mjs +56 -0
  79. package/lib/clean-github-actions-caches.cjs +152 -160
  80. package/lib/clean-github-actions-caches.d.cts +15 -1
  81. package/lib/clean-github-actions-caches.mjs +4 -130
  82. package/lib/cross-env/command.cjs +63 -0
  83. package/lib/cross-env/command.d.ts +8 -0
  84. package/lib/cross-env/command.js +45 -0
  85. package/lib/cross-env/command.mjs +9 -0
  86. package/lib/cross-env/index.cjs +178 -0
  87. package/lib/cross-env/index.d.ts +8 -0
  88. package/lib/cross-env/index.js +102 -0
  89. package/lib/cross-env/index.mjs +101 -0
  90. package/lib/cross-env/variable.cjs +60 -0
  91. package/lib/cross-env/variable.d.ts +7 -0
  92. package/lib/cross-env/variable.js +59 -0
  93. package/lib/cross-env/variable.mjs +9 -0
  94. package/lib/del-gradle.cjs +61 -13
  95. package/lib/del-gradle.js +9 -8
  96. package/lib/del-gradle.mjs +1 -1
  97. package/lib/del-node-modules.cjs +143 -148
  98. package/lib/del-node-modules.js +210 -14
  99. package/lib/del-node-modules.mjs +148 -17
  100. package/lib/del-ps.cjs +61 -13
  101. package/lib/del-ps.js +9 -8
  102. package/lib/del-ps.mjs +1 -1
  103. package/lib/del-yarn-caches.cjs +61 -13
  104. package/lib/del-yarn-caches.js +2 -2
  105. package/lib/del-yarn-caches.mjs +1 -1
  106. package/lib/file/copy-cli.cjs +92 -0
  107. package/lib/file/copy-cli.d.mts +1 -0
  108. package/lib/file/copy-cli.mjs +55 -0
  109. package/lib/file/copy.cjs +56 -0
  110. package/lib/file/copy.d.mts +1 -0
  111. package/lib/file/copy.mjs +8 -0
  112. package/lib/file/move-cli.cjs +91 -0
  113. package/lib/file/move-cli.d.mts +1 -0
  114. package/lib/file/move-cli.mjs +55 -0
  115. package/lib/file/move.cjs +55 -0
  116. package/lib/file/move.d.mts +1 -0
  117. package/lib/file/move.mjs +8 -0
  118. package/lib/find-node-modules-cli.js +2 -1
  119. package/lib/free-chatgpt.cjs +259 -47
  120. package/lib/free-chatgpt.js +10 -10
  121. package/lib/free-chatgpt.mjs +2 -2
  122. package/lib/git/gitattributes.cjs +1 -0
  123. package/lib/git/gitattributes.d.cts +7 -2
  124. package/lib/git/gitattributes.mjs +1 -1
  125. package/lib/git/line-endings.cjs +2 -1
  126. package/lib/git/line-endings.mjs +2 -2
  127. package/lib/git/undo-commit-cli.cjs +110 -0
  128. package/lib/git/undo-commit-cli.d.ts +1 -0
  129. package/lib/git/undo-commit-cli.js +4 -0
  130. package/lib/git/undo-commit-cli.mjs +14 -0
  131. package/lib/git/undo-commit.cjs +81 -0
  132. package/lib/git/undo-commit.d.cts +1 -0
  133. package/lib/git/undo-commit.mjs +7 -0
  134. package/lib/git/undo-staged-cli.cjs +110 -0
  135. package/lib/git/undo-staged-cli.d.ts +1 -0
  136. package/lib/git/undo-staged-cli.js +4 -0
  137. package/lib/git/undo-staged-cli.mjs +14 -0
  138. package/lib/git/undo-staged.cjs +81 -0
  139. package/lib/git/undo-staged.d.cts +1 -0
  140. package/lib/git/undo-staged.mjs +7 -0
  141. package/lib/git/user-config.cjs +61 -14
  142. package/lib/git/user-config.mjs +2 -2
  143. package/lib/git-diff-cli.cjs +427 -75
  144. package/lib/git-diff-cli.d.ts +1 -0
  145. package/lib/git-diff-cli.js +1 -0
  146. package/lib/git-diff-cli.mjs +6 -4
  147. package/lib/git-diff.cjs +426 -75
  148. package/lib/git-diff.d.ts +2 -1
  149. package/lib/git-diff.js +91 -34
  150. package/lib/git-diff.mjs +5 -4
  151. package/lib/git-fix.cjs +64 -16
  152. package/lib/git-fix.mjs +10 -10
  153. package/lib/git-purge.cjs +61 -13
  154. package/lib/git-purge.mjs +1 -1
  155. package/lib/index.d.ts +1 -1
  156. package/lib/kill-night-crows.cjs +87 -0
  157. package/lib/kill-night-crows.d.mts +1 -0
  158. package/lib/kill-night-crows.mjs +65 -0
  159. package/lib/node-cache-cleaner/npm.cjs +65 -0
  160. package/lib/node-cache-cleaner/npm.d.ts +2 -0
  161. package/lib/node-cache-cleaner/npm.js +41 -0
  162. package/lib/node-cache-cleaner/npm.mjs +10 -0
  163. package/lib/node-cache-cleaner/npx.cjs +89 -0
  164. package/lib/node-cache-cleaner/npx.d.ts +4 -0
  165. package/lib/node-cache-cleaner/npx.js +82 -0
  166. package/lib/{ps/index.d.mjs → node-cache-cleaner/npx.mjs} +6 -5
  167. package/lib/node-cache-cleaner/yarn.cjs +73 -0
  168. package/lib/node-cache-cleaner/yarn.d.ts +2 -0
  169. package/lib/node-cache-cleaner/yarn.js +62 -0
  170. package/lib/node-cache-cleaner/yarn.mjs +10 -0
  171. package/lib/node-cache-cleaner-cli.cjs +182 -0
  172. package/lib/node-cache-cleaner-cli.d.ts +2 -0
  173. package/lib/node-cache-cleaner-cli.js +60 -0
  174. package/lib/node-cache-cleaner-cli.mjs +56 -0
  175. package/lib/node-executor.cjs +91 -0
  176. package/lib/node-executor.d.cts +2 -0
  177. package/lib/node-executor.mjs +103 -0
  178. package/lib/npm-run-series.cjs +79 -39
  179. package/lib/npm-run-series.mjs +20 -6
  180. package/lib/package-resolutions-updater-cli.cjs +645 -0
  181. package/lib/package-resolutions-updater-cli.d.mts +1 -0
  182. package/lib/package-resolutions-updater-cli.mjs +102 -0
  183. package/lib/package-resolutions-updater.cjs +259 -133
  184. package/lib/package-resolutions-updater.d.mts +51 -1
  185. package/lib/package-resolutions-updater.mjs +18 -294
  186. package/lib/php-cs-fixer-staged.cjs +105 -0
  187. package/lib/php-cs-fixer-staged.d.cts +2 -0
  188. package/lib/php-cs-fixer-staged.mjs +117 -0
  189. package/lib/print-directory-tree.cjs +62 -14
  190. package/lib/print-directory-tree.mjs +2 -2
  191. package/lib/ps/connected-domain.d.ts +1 -1
  192. package/lib/ps/connected-domain.js +10 -10
  193. package/lib/ps/index.cjs +1 -1
  194. package/lib/ps/index.mjs +177 -171
  195. package/lib/ps/isWin.js +1 -1
  196. package/lib/ps/table-parser.js +6 -6
  197. package/lib/remove-module.cjs +61 -13
  198. package/lib/remove-module.mjs +1 -1
  199. package/lib/rm-node-module-cli.cjs +222 -0
  200. package/lib/rm-node-module-cli.d.cts +1 -0
  201. package/lib/rm-node-module-cli.mjs +89 -0
  202. package/lib/rm-node-modules.cjs +127 -0
  203. package/lib/rm-node-modules.d.cts +35 -0
  204. package/lib/{binary-collections-config.mjs → rm-node-modules.mjs} +3 -3
  205. package/lib/rmpath.cjs +63 -15
  206. package/lib/rmpath.mjs +2 -2
  207. package/lib/submodule-install.cjs +107 -47
  208. package/lib/submodule-install.mjs +48 -35
  209. package/lib/submodule-remove-cli.cjs +6 -3
  210. package/lib/submodule-remove-cli.js +3 -3
  211. package/lib/submodule-remove-cli.mjs +2 -3
  212. package/lib/submodule-remove.cjs +4 -1
  213. package/lib/submodule-remove.mjs +1 -1
  214. package/lib/utils/chatgpt.cjs +198 -34
  215. package/lib/utils/chatgpt.js +260 -93
  216. package/lib/utils/chatgpt.mjs +1 -1
  217. package/lib/utils/findEnvFiles.cjs +89 -0
  218. package/lib/utils/findEnvFiles.d.cts +19 -0
  219. package/lib/utils/findEnvFiles.mjs +6 -0
  220. package/lib/utils/findWorkspaceRoot.cjs +70 -0
  221. package/lib/utils/findWorkspaceRoot.d.ts +9 -0
  222. package/lib/utils/findWorkspaceRoot.js +57 -0
  223. package/lib/utils/findWorkspaceRoot.mjs +40 -0
  224. package/lib/utils/index.cjs +60 -13
  225. package/lib/utils/index.mjs +1 -1
  226. package/lib/utils/isGithubTokenValid.cjs +64 -0
  227. package/lib/utils/isGithubTokenValid.d.ts +7 -0
  228. package/lib/utils/isGithubTokenValid.js +48 -0
  229. package/lib/utils/isGithubTokenValid.mjs +36 -0
  230. package/lib/{ps/index.d.cjs → utils/isWindows.cjs} +17 -3
  231. package/lib/utils/isWindows.d.ts +5 -0
  232. package/lib/utils/isWindows.js +10 -0
  233. package/lib/utils/isWindows.mjs +8 -0
  234. package/lib/utils/runBash.cjs +53 -0
  235. package/lib/utils/runBash.d.cts +12 -0
  236. package/lib/utils/runBash.mjs +66 -0
  237. package/lib/yarn-per-branch-lock-installer.cjs +97 -0
  238. package/lib/yarn-per-branch-lock-installer.d.cts +2 -0
  239. package/lib/yarn-per-branch-lock-installer.mjs +109 -0
  240. package/lib/yarn-reinstall.cjs +61 -13
  241. package/lib/yarn-reinstall.mjs +1 -1
  242. package/package.json +133 -110
  243. package/readme.html +784 -0
  244. package/readme.md +116 -229
  245. package/releases/readme.md +1 -1
  246. package/requirements.txt +1 -0
  247. package/test/README.md +2 -2
  248. package/test-project/package.json +8 -2
  249. package/test-project/workspaces/workspace-a/package.json +135 -0
  250. package/test-project/workspaces/workspace-a/readme.md +20 -0
  251. package/test-project/workspaces/workspace-a/release/readme.md +42 -0
  252. package/test-project/workspaces/workspace-a/test/demo/package.json +25 -0
  253. package/test-project/workspaces/workspace-a/test/readme.md +12 -0
  254. package/test-project/workspaces/workspace-b/package.json +139 -0
  255. package/test-project/workspaces/workspace-b/readme.md +94 -0
  256. package/test-project/workspaces/workspace-b/requirements.txt +1 -0
  257. package/test-project/workspaces/workspace-b/test/sample-project/package.json +7 -0
  258. package/test-project/workspaces/workspace-b/themes/hexo-theme-flowbite/package.json +96 -0
  259. package/test-project/workspaces/workspace-b/themes/hexo-theme-flowbite/readme.md +156 -0
  260. package/tmp/rm-node-modules-test-project/package.json +17 -0
  261. package/tmp/rm-node-modules-test-project/packages/workspace-a/package.json +16 -0
  262. package/tmp/rm-node-modules-test-project/packages/workspace-b/package.json +16 -0
  263. package/tmp/test-repo/README.md +2 -35
  264. package/tmp/test-repo/package.json +13 -3
  265. package/docs-src/clean-github-actions-caches.md +0 -26
  266. package/docs-src/free-chatgpt.md +0 -26
  267. package/lib/binary-collections-config.cjs +0 -15
  268. package/lib/chunk-4EWQC6GZ.mjs +0 -382
  269. package/lib/chunk-4ZI7BQKQ.mjs +0 -381
  270. package/lib/chunk-5J2BEPY5.mjs +0 -83
  271. package/lib/chunk-AGZYRDC2.mjs +0 -323
  272. package/lib/chunk-BDCHCWHD.mjs +0 -136
  273. package/lib/chunk-BEZKJ25G.mjs +0 -140
  274. package/lib/chunk-DI5MDPSN.mjs +0 -386
  275. package/lib/chunk-GJTGHXRA.mjs +0 -356
  276. package/lib/chunk-HMRMTYZM.mjs +0 -40
  277. package/lib/chunk-HN52G2YL.mjs +0 -305
  278. package/lib/chunk-LEM5OMRP.mjs +0 -384
  279. package/lib/chunk-O6SWBEOQ.mjs +0 -81
  280. package/lib/chunk-RCP7DHVY.mjs +0 -190
  281. package/lib/chunk-SBNDSKG5.mjs +0 -136
  282. package/lib/chunk-U6SO4QEV.mjs +0 -320
  283. package/lib/chunk-XD6BJK6Q.mjs +0 -351
  284. package/lib/chunk-YXSFGA2D.mjs +0 -383
  285. package/lib/git/gitattributes.d.ts +0 -33
  286. package/lib/git/gitattributes.js +0 -223
  287. package/lib/ps/index.d.ts +0 -2
  288. package/lib/ps/index.js +0 -253
  289. package/tmp/typedoc/readme.md +0 -320
  290. /package/lib/{binary-collections-config.d.cts → binary-collections/config.d.cts} +0 -0
package/lib/git-diff.d.ts CHANGED
@@ -10,6 +10,7 @@ export default runGitDiff;
10
10
  * @param {string} command - The git command to execute (e.g., "git --no-pager diff --staged")
11
11
  * @param {string} successMessage - Message to display when the command executes successfully
12
12
  * @param {string} errorMessage - Message to display when the command fails
13
+ * @returns {boolean} True when diff content exists, false when no changes were found
13
14
  *
14
15
  * @throws {Error} Exits the process with code 1 if the git command fails
15
16
  *
@@ -29,7 +30,7 @@ export default runGitDiff;
29
30
  * 'Failed to generate file diff'
30
31
  * );
31
32
  */
32
- declare function runGitDiff(command: string, successMessage: string, errorMessage: string): void;
33
+ declare function runGitDiff(command: string, successMessage: string, errorMessage: string): boolean;
33
34
  export const CACHE_DIR: string;
34
35
  export const DIFF_OUTPUT: string;
35
36
  export const DIFF_OUTPUT_RELATIVE: string;
package/lib/git-diff.js CHANGED
@@ -16,19 +16,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.GPT_DIFF_OUTPUT_RELATIVE = exports.GPT_DIFF_OUTPUT = exports.DIFF_OUTPUT_RELATIVE = exports.DIFF_OUTPUT = exports.CACHE_DIR = void 0;
17
17
  exports.gitDiff = runGitDiff;
18
18
  exports.mainGitDiff = mainGitDiff;
19
+ const ansi_colors_1 = __importDefault(require("ansi-colors"));
19
20
  const child_process_1 = require("child_process");
20
21
  const fs_extra_1 = __importDefault(require("fs-extra"));
22
+ const sbg_utility_1 = require("sbg-utility");
21
23
  const upath_1 = __importDefault(require("upath"));
22
24
  const url_1 = require("url");
23
- const binary_collections_config_cjs_1 = require("./binary-collections-config.cjs");
25
+ const config_cjs_1 = require("./binary-collections/config.cjs");
24
26
  const chatgpt_js_1 = require("./utils/chatgpt.js");
25
27
  const index_cjs_1 = require("./utils/index.cjs");
26
28
  const __filename = (0, url_1.fileURLToPath)(import.meta.url);
27
29
  const __dirname = upath_1.default.dirname(__filename);
30
+ const args = (0, index_cjs_1.getArgs)();
31
+ const positional = args._ || [];
28
32
  // Output path using centralized temp directory configuration
29
- const DIFF_OUTPUT = (0, binary_collections_config_cjs_1.getTempPath)("git-diff.txt");
33
+ const FILENAME = (0, sbg_utility_1.md5)((positional[0] || 'default') + JSON.stringify(args));
34
+ const DIFF_OUTPUT = (0, config_cjs_1.getTempPath)(`git-diff/${FILENAME}.txt`);
30
35
  exports.DIFF_OUTPUT = DIFF_OUTPUT;
31
- const GPT_DIFF_OUTPUT = (0, binary_collections_config_cjs_1.getTempPath)("gpt-question.txt");
36
+ const GPT_DIFF_OUTPUT = (0, config_cjs_1.getTempPath)(`git-diff/gpt-${FILENAME}.txt`);
32
37
  exports.GPT_DIFF_OUTPUT = GPT_DIFF_OUTPUT;
33
38
  const CACHE_DIR = upath_1.default.dirname(DIFF_OUTPUT);
34
39
  exports.CACHE_DIR = CACHE_DIR;
@@ -38,18 +43,19 @@ exports.DIFF_OUTPUT_RELATIVE = DIFF_OUTPUT_RELATIVE;
38
43
  const GPT_DIFF_OUTPUT_RELATIVE = upath_1.default.relative(process.cwd(), GPT_DIFF_OUTPUT);
39
44
  exports.GPT_DIFF_OUTPUT_RELATIVE = GPT_DIFF_OUTPUT_RELATIVE;
40
45
  // Ensure output directory exists
41
- if (!fs_extra_1.default.existsSync(CACHE_DIR)) {
42
- fs_extra_1.default.mkdirSync(CACHE_DIR, { recursive: true });
43
- }
46
+ fs_extra_1.default.ensureDirSync(CACHE_DIR, { mode: 0o755 });
44
47
  function showHelp() {
45
- console.log("\u{1F4DD} Git Diff Helper");
46
- console.log("\u{1F4C4} Usage:");
47
- console.log(" \u{1F4C2} git-diff FILE Show staged diff of specified file");
48
- console.log(" \u{1F4C2} git-diff --staged-only Show staged diff of all files");
49
- console.log(" \u{1F4C2} git-diff -s | -S Same as --staged-only");
50
- console.log(" \u{1F4C2} git-diff --ai Run ChatGPT automation for commit message");
51
- console.log(" \u{1F4C2} git-diff --help | -h Show this help message");
52
- console.log("");
48
+ console.log('\u{1F4DD} Git Diff Helper');
49
+ console.log('\u{1F4C4} Usage:');
50
+ console.log(' \u{1F4C2} git-diff FILE Show staged diff of specified file');
51
+ console.log(' \u{1F4C2} git-diff --staged-only Show staged diff of all files');
52
+ console.log(' \u{1F4C2} git-diff -s | -S Same as --staged-only');
53
+ console.log(' \u{1F4C2} git-diff --unstaged FILE Show unstaged diff of specified file');
54
+ console.log(' \u{1F4C2} git-diff --unstaged Show unstaged diff of all files');
55
+ console.log(' \u{1F4C2} git-diff -u Same as --unstaged');
56
+ console.log(' \u{1F4C2} git-diff --ai Run ChatGPT automation for commit message');
57
+ console.log(' \u{1F4C2} git-diff --help | -h Show this help message');
58
+ console.log('');
53
59
  console.log(`\u{1F4BE} Output is saved to: ${DIFF_OUTPUT_RELATIVE}`);
54
60
  console.log(`\u{1F916} GPT prompt is saved to: ${GPT_DIFF_OUTPUT_RELATIVE}`);
55
61
  process.exit(0);
@@ -64,6 +70,7 @@ function showHelp() {
64
70
  * @param {string} command - The git command to execute (e.g., "git --no-pager diff --staged")
65
71
  * @param {string} successMessage - Message to display when the command executes successfully
66
72
  * @param {string} errorMessage - Message to display when the command fails
73
+ * @returns {boolean} True when diff content exists, false when no changes were found
67
74
  *
68
75
  * @throws {Error} Exits the process with code 1 if the git command fails
69
76
  *
@@ -87,65 +94,115 @@ function runGitDiff(command, successMessage, errorMessage) {
87
94
  try {
88
95
  console.log(`🔍 [i] Running command: ${command}`);
89
96
  const result = (0, child_process_1.execSync)(command, {
90
- encoding: "utf8",
97
+ encoding: 'utf8',
91
98
  maxBuffer: 1024 * 1024 * 10 // 10MB buffer to handle large diffs
92
99
  });
93
100
  // If result is empty, inform user but don't treat as error
94
- if (!result || result.trim() === "") {
95
- console.log(`ℹ️ [i] No changes found for the specified criteria`);
96
- fs_extra_1.default.writeFileSync(DIFF_OUTPUT, "# No changes found\n");
101
+ if (!result || result.trim() === '') {
102
+ console.log(`ℹ️ [i] No changes found for the specified criteria`);
103
+ (0, sbg_utility_1.writefile)(DIFF_OUTPUT, '# No changes found\n');
97
104
  console.log(`✅ Empty diff saved to "${DIFF_OUTPUT_RELATIVE}"`);
98
- return;
105
+ return false;
99
106
  }
100
- fs_extra_1.default.writeFileSync(DIFF_OUTPUT, result);
101
- fs_extra_1.default.writeFileSync(GPT_DIFF_OUTPUT, `Hello, ChatGPT!\nCan you create a conventional commit message by diff content below:\n\n\`\`\`${result}\n\`\`\`\n\nGive me result as codeblock with language "text" only.\n\nThank you!`);
107
+ (0, sbg_utility_1.writefile)(DIFF_OUTPUT, result);
108
+ (0, sbg_utility_1.writefile)(GPT_DIFF_OUTPUT, `Hello, ChatGPT!\nCan you create a conventional commit message by diff content below:\n\n\`\`\`${result}\n\`\`\`\n\nGive me result as codeblock with language "text" only.\n\nThank you!`);
102
109
  console.log(`✅ ${successMessage}`);
103
- console.log(`💾 GPT diff prompt saved to "${GPT_DIFF_OUTPUT_RELATIVE}"`);
110
+ console.log(`💾 GPT diff prompt saved to "${ansi_colors_1.default.green(GPT_DIFF_OUTPUT_RELATIVE)}"`);
111
+ return true;
104
112
  }
105
113
  catch (error) {
106
114
  console.error(`❌ ${errorMessage}`);
107
115
  console.error(`📝 Command: ${command}`);
108
116
  console.error(`⚠️ Error: ${error.message}`);
109
117
  // Check if it's a git-related error
110
- if (error.message.includes("not a git repository")) {
111
- console.error("🚧 Make sure you are in a git repository");
118
+ if (error.message.includes('not a git repository')) {
119
+ console.error('🚧 Make sure you are in a git repository');
112
120
  }
113
121
  process.exit(1);
114
122
  }
115
123
  }
124
+ /**
125
+ * Checks whether a file has changes for a specific git diff mode.
126
+ *
127
+ * Uses `git diff --quiet` semantics:
128
+ * - exit code 0: no changes
129
+ * - exit code 1: changes exist
130
+ *
131
+ * @param {string} file - Target file path
132
+ * @param {"staged" | "unstaged"} mode - Diff mode to check
133
+ * @returns {boolean} True when changes exist for the given mode
134
+ */
135
+ function fileHasChanges(file, mode) {
136
+ const command = mode === 'staged' ? `git diff --cached --quiet -- "${file}"` : `git diff --quiet -- "${file}"`;
137
+ try {
138
+ (0, child_process_1.execSync)(command, { stdio: 'ignore' });
139
+ return false;
140
+ }
141
+ catch (error) {
142
+ if (error.status === 1) {
143
+ return true;
144
+ }
145
+ throw error;
146
+ }
147
+ }
116
148
  function mainGitDiff() {
117
149
  return __awaiter(this, void 0, void 0, function* () {
118
- const args = (0, index_cjs_1.getArgs)();
119
- const positional = args._ || [];
120
150
  // Show help if no arguments or --help/-h is passed
121
151
  if (args.help || args.h) {
122
152
  showHelp();
123
153
  }
124
- if (args["staged-only"] || args.s || args.S) {
125
- runGitDiff("git --no-pager diff --staged", `Full staged diff saved to "${DIFF_OUTPUT_RELATIVE}"`, "Failed to save staged diff");
154
+ const useUnstaged = args.unstaged || args.u;
155
+ const fileFromFlag = typeof args.unstaged === 'string' ? args.unstaged : typeof args.u === 'string' ? args.u : null;
156
+ let hasDiff = false;
157
+ if (args['staged-only'] || args.s || args.S) {
158
+ hasDiff = runGitDiff('git --no-pager diff --staged', `Full staged diff saved to "${ansi_colors_1.default.green(DIFF_OUTPUT_RELATIVE)}"`, 'Failed to save staged diff');
126
159
  }
127
160
  else {
128
161
  // Handle specific file diff
129
- const file = positional[0];
162
+ const file = positional[0] || fileFromFlag;
130
163
  if (!file) {
131
- runGitDiff("git --no-pager diff", `Full staged diff saved to "${DIFF_OUTPUT_RELATIVE}"`, "Failed to save all diff's");
164
+ const fullDiffModeLabel = useUnstaged ? 'unstaged' : 'unstaged';
165
+ hasDiff = runGitDiff('git --no-pager diff', `Full ${fullDiffModeLabel} diff saved to "${ansi_colors_1.default.green(DIFF_OUTPUT_RELATIVE)}"`, "Failed to save all diff's");
132
166
  }
133
167
  else {
134
- runGitDiff(`git --no-pager diff --cached -- "${file}"`, `Staged diff of "${file}" saved to "${DIFF_OUTPUT_RELATIVE}"`, `Failed to generate diff for "${file}"`);
168
+ let fileDiffMode = useUnstaged ? 'unstaged' : 'staged';
169
+ // Default behavior for file target: prefer staged changes, then fall back to unstaged.
170
+ if (!useUnstaged && !fileHasChanges(file, 'staged') && fileHasChanges(file, 'unstaged')) {
171
+ fileDiffMode = 'unstaged';
172
+ }
173
+ hasDiff = runGitDiff(fileDiffMode === 'unstaged' ? `git --no-pager diff -- "${file}"` : `git --no-pager diff --cached -- "${file}"`, `${fileDiffMode[0].toUpperCase() + fileDiffMode.slice(1)} diff of "${file}" saved to "${ansi_colors_1.default.green(DIFF_OUTPUT_RELATIVE)}"`, `Failed to generate ${fileDiffMode} diff for "${file}"`);
135
174
  }
136
175
  }
176
+ if (hasDiff) {
177
+ // Generate command prompt for opencode CLI
178
+ const opencodePrompt = [
179
+ '',
180
+ '🤖 OpenCode Prompt Helper',
181
+ '────────────────────────',
182
+ '',
183
+ '📄 App Prompt:',
184
+ ` Generate a conventional commit message from diff file: ${DIFF_OUTPUT}`,
185
+ '',
186
+ '💻 CLI Command:',
187
+ ` opencode run "Generate a conventional commit message from diff file ${DIFF_OUTPUT}"`,
188
+ ''
189
+ ];
190
+ const opencodePromptPath = (0, config_cjs_1.getTempPath)(`git-diff/opencode-${FILENAME}.txt`);
191
+ (0, sbg_utility_1.writefile)(opencodePromptPath, opencodePrompt.join('\n'));
192
+ console.log(`💡 OpenCode prompt saved to "${ansi_colors_1.default.green(upath_1.default.relative(process.cwd(), opencodePromptPath))}"`);
193
+ }
137
194
  // Generate commit message prompt from ChatGPT (only if --ai is specified)
138
195
  if (args.ai) {
139
196
  try {
140
197
  yield (0, chatgpt_js_1.runChatGpt)({ headless: true, questionFile: GPT_DIFF_OUTPUT });
141
198
  }
142
199
  catch (error) {
143
- console.error("❌ Error running ChatGPT:", error.message);
144
- console.error("💡 Try running with visible browser mode or check if Chrome is installed");
200
+ console.error('❌ Error running ChatGPT:', error.message);
201
+ console.error('💡 Try running with visible browser mode or check if Chrome is installed');
145
202
  }
146
203
  }
147
204
  else {
148
- console.log("💡 Tip: Use --ai flag to generate commit message with ChatGPT");
205
+ console.log('💡 Tip: Use --ai flag to generate commit message with ChatGPT');
149
206
  }
150
207
  });
151
208
  }
package/lib/git-diff.mjs CHANGED
@@ -9,10 +9,11 @@ import {
9
9
  git_diff_default,
10
10
  mainGitDiff,
11
11
  runGitDiff
12
- } from "./chunk-SBNDSKG5.mjs";
13
- import "./chunk-GJTGHXRA.mjs";
14
- import "./chunk-66PAU5PS.mjs";
15
- import "./chunk-V3N3JEUF.mjs";
12
+ } from "./chunk-SPTECFE5.mjs";
13
+ import "./chunk-G5UUEWUO.mjs";
14
+ import "./chunk-GAGABICI.mjs";
15
+ import "./chunk-H44UWUFY.mjs";
16
+ import "./chunk-5RTXZVCW.mjs";
16
17
  import "./chunk-QQ4A6DLD.mjs";
17
18
  export {
18
19
  CACHE_DIR,
package/lib/git-fix.cjs CHANGED
@@ -243,6 +243,7 @@ var require_gitattributes = __commonJS({
243
243
  formatGitAttributes,
244
244
  updateGitAttributes
245
245
  };
246
+ module2.exports.default = module2.exports;
246
247
  }
247
248
  });
248
249
 
@@ -253,7 +254,7 @@ var require_line_endings = __commonJS({
253
254
  var path2 = require("upath");
254
255
  var fs = require("fs");
255
256
  var { runGitCommand } = require_utils();
256
- var { updateGitAttributes } = require_gitattributes().default;
257
+ var { updateGitAttributes } = require_gitattributes();
257
258
  function forceLfLineEndings2() {
258
259
  console.log("\n=== Configuring LF Line Endings ===");
259
260
  runGitCommand(["config", "core.autocrlf", "false"], "Disable automatic CRLF conversion");
@@ -397,31 +398,78 @@ var require_utils2 = __commonJS({
397
398
  }
398
399
  module2.exports.getArgs = getArgs2;
399
400
  function del(fullPath) {
400
- if (fs.statSync(fullPath).isDirectory()) {
401
- const subdir = fs.readdirSync(fullPath).map((dirPath) => path2.resolve(fullPath, dirPath));
402
- for (let i = 0; i < subdir.length; i++) {
403
- del(subdir[i]);
401
+ try {
402
+ if (!fs.existsSync(fullPath)) return;
403
+ const stat = fs.lstatSync(fullPath);
404
+ if (stat.isSymbolicLink()) {
405
+ try {
406
+ fs.unlinkSync(fullPath);
407
+ console.log("deleted symlink", fullPath);
408
+ } catch (e) {
409
+ console.log("failed delete symlink", fullPath, e && e.message);
410
+ }
411
+ return;
412
+ }
413
+ if (stat.isDirectory()) {
414
+ const subdir = fs.readdirSync(fullPath).map((dirPath) => path2.resolve(fullPath, dirPath));
415
+ for (let i = 0; i < subdir.length; i++) {
416
+ del(subdir[i]);
417
+ }
418
+ try {
419
+ fs.rmdirSync(fullPath);
420
+ console.log("deleted", fullPath);
421
+ } catch (_e) {
422
+ try {
423
+ fs.rmSync(fullPath, { recursive: true, force: true, retryDelay: 7e3 });
424
+ console.log("deleted", fullPath);
425
+ } catch (ee) {
426
+ console.log("failed delete", fullPath, ee && ee.message);
427
+ }
428
+ }
429
+ return;
404
430
  }
405
- } else {
406
431
  try {
407
- fs.rmSync(fullPath, { recursive: true, force: true, retryDelay: 7e3 });
432
+ fs.unlinkSync(fullPath);
408
433
  console.log("deleted", fullPath);
409
- } catch (_) {
410
- console.log("failed delete", fullPath);
434
+ } catch (_e) {
435
+ try {
436
+ fs.rmSync(fullPath, { recursive: true, force: true, retryDelay: 7e3 });
437
+ console.log("deleted", fullPath);
438
+ } catch (ee) {
439
+ console.log("failed delete", fullPath, ee && ee.message);
440
+ }
411
441
  }
442
+ } catch (err) {
443
+ console.log("failed delete", fullPath, err && err.message);
412
444
  }
413
445
  }
414
446
  module2.exports.del = del;
415
447
  function delStream(globStream) {
416
448
  globStream.stream().on("data", (result) => {
417
449
  const fullPath = path2.resolve(process.cwd(), result);
418
- if (fs.statSync(fullPath).isDirectory()) {
419
- const subdir = fs.readdirSync(fullPath).map((dirPath) => path2.resolve(fullPath, dirPath));
420
- for (let i = 0; i < subdir.length; i++) {
421
- del(subdir[i]);
450
+ try {
451
+ if (fs.existsSync(fullPath)) {
452
+ const stat = fs.lstatSync(fullPath);
453
+ if (stat.isSymbolicLink()) {
454
+ try {
455
+ fs.unlinkSync(fullPath);
456
+ console.log("deleted symlink", fullPath);
457
+ } catch (e) {
458
+ console.log("failed delete symlink", fullPath, e && e.message);
459
+ }
460
+ return;
461
+ }
462
+ if (stat.isDirectory()) {
463
+ const subdir = fs.readdirSync(fullPath).map((dirPath) => path2.resolve(fullPath, dirPath));
464
+ for (let i = 0; i < subdir.length; i++) {
465
+ del(subdir[i]);
466
+ }
467
+ }
422
468
  }
469
+ del(fullPath);
470
+ } catch (err) {
471
+ console.log("failed processing", fullPath, err && err.message);
423
472
  }
424
- del(fullPath);
425
473
  });
426
474
  }
427
475
  module2.exports.delStream = delStream;
@@ -474,7 +522,7 @@ var require_user_config = __commonJS({
474
522
  var gch = require("git-command-helper");
475
523
  var { runGitCommand, runGitCommandOutput } = require_utils();
476
524
  var { getArgs: getArgs2 } = require_utils2();
477
- require("dotenv").config({ path: require("path").join(process.cwd(), ".env") });
525
+ require("dotenv").config({ path: require("path").join(process.cwd(), ".env"), quiet: true });
478
526
  function configureGitUser2(cliUser = null, cliEmail = null, options2 = {}) {
479
527
  console.log("\n=== Configuring Git User ===");
480
528
  let username, email;
@@ -608,7 +656,7 @@ var { configureGitUser } = require_user_config();
608
656
  var { normalizeLineEndings } = require_normalize();
609
657
  var { getArgs } = require_utils2();
610
658
  var path = require("upath");
611
- require("dotenv").config({ path: path.join(process.cwd(), ".env") });
659
+ require("dotenv").config({ path: path.join(process.cwd(), ".env"), quiet: true, override: true });
612
660
  function showHelp() {
613
661
  console.log("Git Fix Utility");
614
662
  console.log("----------------------------");
package/lib/git-fix.mjs CHANGED
@@ -1,27 +1,27 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
3
+ import {
4
+ require_pull_strategy
5
+ } from "./chunk-A2JQXI5Z.mjs";
6
+ import {
7
+ require_user_config
8
+ } from "./chunk-2LSRSEXF.mjs";
3
9
  import {
4
10
  require_line_endings
5
- } from "./chunk-O6SWBEOQ.mjs";
6
- import "./chunk-PDSXF5HY.mjs";
11
+ } from "./chunk-ZDMWBSYF.mjs";
12
+ import "./chunk-PDN26I7O.mjs";
7
13
  import {
8
14
  require_normalize
9
15
  } from "./chunk-HLGOWBEO.mjs";
10
16
  import {
11
17
  require_permissions
12
18
  } from "./chunk-7YD7IPFF.mjs";
13
- import {
14
- require_pull_strategy
15
- } from "./chunk-A2JQXI5Z.mjs";
16
- import {
17
- require_user_config
18
- } from "./chunk-E6FDDAOO.mjs";
19
19
  import {
20
20
  require_utils as require_utils2
21
21
  } from "./chunk-A3VUZEJK.mjs";
22
22
  import {
23
23
  require_utils
24
- } from "./chunk-V3N3JEUF.mjs";
24
+ } from "./chunk-5RTXZVCW.mjs";
25
25
  import {
26
26
  __commonJS,
27
27
  __require,
@@ -40,7 +40,7 @@ var require_git_fix = __commonJS({
40
40
  var { normalizeLineEndings } = require_normalize();
41
41
  var { getArgs } = require_utils();
42
42
  var path = __require("upath");
43
- __require("dotenv").config({ path: path.join(process.cwd(), ".env") });
43
+ __require("dotenv").config({ path: path.join(process.cwd(), ".env"), quiet: true, override: true });
44
44
  function showHelp() {
45
45
  console.log("Git Fix Utility");
46
46
  console.log("----------------------------");
package/lib/git-purge.cjs CHANGED
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env node
1
2
  var __getOwnPropNames = Object.getOwnPropertyNames;
2
3
  var __esm = (fn, res) => function __init() {
3
4
  return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
@@ -67,31 +68,78 @@ var require_utils = __commonJS({
67
68
  }
68
69
  module2.exports.getArgs = getArgs;
69
70
  function del(fullPath) {
70
- if (fs.statSync(fullPath).isDirectory()) {
71
- const subdir = fs.readdirSync(fullPath).map((dirPath) => path2.resolve(fullPath, dirPath));
72
- for (let i = 0; i < subdir.length; i++) {
73
- del(subdir[i]);
71
+ try {
72
+ if (!fs.existsSync(fullPath)) return;
73
+ const stat = fs.lstatSync(fullPath);
74
+ if (stat.isSymbolicLink()) {
75
+ try {
76
+ fs.unlinkSync(fullPath);
77
+ console.log("deleted symlink", fullPath);
78
+ } catch (e) {
79
+ console.log("failed delete symlink", fullPath, e && e.message);
80
+ }
81
+ return;
82
+ }
83
+ if (stat.isDirectory()) {
84
+ const subdir = fs.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
+ fs.rmdirSync(fullPath);
90
+ console.log("deleted", fullPath);
91
+ } catch (_e) {
92
+ try {
93
+ fs.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);
97
+ }
98
+ }
99
+ return;
74
100
  }
75
- } else {
76
101
  try {
77
- fs.rmSync(fullPath, { recursive: true, force: true, retryDelay: 7e3 });
102
+ fs.unlinkSync(fullPath);
78
103
  console.log("deleted", fullPath);
79
- } catch (_) {
80
- console.log("failed delete", fullPath);
104
+ } catch (_e) {
105
+ try {
106
+ fs.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
+ }
81
111
  }
112
+ } catch (err) {
113
+ console.log("failed delete", fullPath, err && err.message);
82
114
  }
83
115
  }
84
116
  module2.exports.del = del;
85
117
  function delStream(globStream) {
86
118
  globStream.stream().on("data", (result) => {
87
119
  const fullPath = path2.resolve(process.cwd(), result);
88
- if (fs.statSync(fullPath).isDirectory()) {
89
- const subdir = fs.readdirSync(fullPath).map((dirPath) => path2.resolve(fullPath, dirPath));
90
- for (let i = 0; i < subdir.length; i++) {
91
- del(subdir[i]);
120
+ try {
121
+ if (fs.existsSync(fullPath)) {
122
+ const stat = fs.lstatSync(fullPath);
123
+ if (stat.isSymbolicLink()) {
124
+ try {
125
+ fs.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 = fs.readdirSync(fullPath).map((dirPath) => path2.resolve(fullPath, dirPath));
134
+ for (let i = 0; i < subdir.length; i++) {
135
+ del(subdir[i]);
136
+ }
137
+ }
92
138
  }
139
+ del(fullPath);
140
+ } catch (err) {
141
+ console.log("failed processing", fullPath, err && err.message);
93
142
  }
94
- del(fullPath);
95
143
  });
96
144
  }
97
145
  module2.exports.delStream = delStream;
package/lib/git-purge.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
2
  import {
3
3
  require_utils
4
- } from "./chunk-V3N3JEUF.mjs";
4
+ } from "./chunk-5RTXZVCW.mjs";
5
5
  import {
6
6
  __commonJS,
7
7
  __require,
package/lib/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { findNodeModules } from "./find-node-modules.cjs";
1
+ import { findNodeModules } from './find-node-modules.cjs';
2
2
  export { findNodeModules };
@@ -0,0 +1,87 @@
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 __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") {
10
+ for (let key of __getOwnPropNames(from))
11
+ if (!__hasOwnProp.call(to, key) && key !== except)
12
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
+ }
14
+ return to;
15
+ };
16
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
17
+ // If the importer is in node compatibility mode or this is not an ESM
18
+ // file that has been converted to a CommonJS file using a Babel-
19
+ // compatible transform (i.e. "__esModule" has not been set), then set
20
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
+ mod
23
+ ));
24
+
25
+ // node_modules/tsup/assets/cjs_shims.js
26
+ var getImportMetaUrl = () => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.tagName.toUpperCase() === "SCRIPT" ? document.currentScript.src : new URL("main.js", document.baseURI).href;
27
+ var importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
28
+
29
+ // src/kill-night-crows.mjs
30
+ var import_node_child_process = require("child_process");
31
+ var import_node_fs = __toESM(require("fs"), 1);
32
+ var import_node_path = __toESM(require("path"), 1);
33
+ var import_node_url = require("url");
34
+ var __filename2 = (0, import_node_url.fileURLToPath)(importMetaUrl);
35
+ var __dirname = import_node_path.default.dirname(__filename2);
36
+ var scriptCandidates = [
37
+ import_node_path.default.resolve(__dirname, "../bin/kill-night-crows.ps1"),
38
+ import_node_path.default.resolve(__dirname, "../binaries/kill-night-crows.ps1")
39
+ ];
40
+ var scriptPath = scriptCandidates.find((candidate) => import_node_fs.default.existsSync(candidate));
41
+ var scriptChecks = scriptCandidates.map((candidate) => ({
42
+ path: candidate,
43
+ exists: import_node_fs.default.existsSync(candidate)
44
+ }));
45
+ var args = process.argv.slice(2);
46
+ var isHelp = args.includes("--help") || args.includes("-h");
47
+ if (isHelp) {
48
+ console.log(`
49
+ kill-night-crows
50
+
51
+ Usage:
52
+ node src/kill-night-crows.mjs [options]
53
+
54
+ Options:
55
+ --help, -h Show this help message
56
+
57
+ Description:
58
+ Runs kill-night-crows.ps1 to watch Night Crows processes
59
+ and kill the launcher tree when the shipping process is not responding.
60
+ Resolution priority: ../bin first, then ../binaries.
61
+
62
+ Script check:
63
+ ${scriptChecks.map((check) => ` ${check.exists ? "found" : "missing"} - ${check.path}`).join("\n")}
64
+ `);
65
+ process.exit(0);
66
+ }
67
+ if (!scriptPath) {
68
+ console.error(
69
+ `PowerShell script not found in any of these paths:
70
+ ${scriptCandidates.map((p) => ` - ${p}`).join("\n")}`
71
+ );
72
+ process.exit(1);
73
+ }
74
+ if (process.platform !== "win32") {
75
+ console.error("kill-night-crows is supported only on Windows.");
76
+ process.exit(1);
77
+ }
78
+ var result = (0, import_node_child_process.spawnSync)("powershell.exe", ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", scriptPath, ...args], {
79
+ stdio: "inherit"
80
+ });
81
+ if (typeof result.status === "number") {
82
+ process.exit(result.status);
83
+ }
84
+ if (result.error) {
85
+ console.error(result.error.message);
86
+ }
87
+ process.exit(1);
@@ -0,0 +1 @@
1
+ export {};