binary-collections 2.0.12 → 2.0.13

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 (231) hide show
  1. package/binaries/binary-executor.cjs +89 -13
  2. package/binaries/clean-nodemodule.cjs +89 -13
  3. package/binaries/clean-nodemodules.cjs +89 -13
  4. package/binaries/dev.cjs +89 -13
  5. package/binaries/empty.cjs +89 -13
  6. package/binaries/git-reduce-size.cjs +89 -13
  7. package/binaries/javakill.cjs +89 -13
  8. package/binaries/kill-process.cjs +89 -13
  9. package/binaries/nodekill.cjs +89 -13
  10. package/binaries/prod.cjs +89 -13
  11. package/binaries/py.cjs +89 -13
  12. package/binaries/rmfind.cjs +89 -13
  13. package/binaries/rmx.cjs +89 -13
  14. package/binaries/submodule-token.cjs +89 -13
  15. package/binaries/test-cjs.cjs +89 -13
  16. package/binaries/test-esm.cjs +89 -13
  17. package/binaries/yarn-clean.cjs +89 -13
  18. package/binaries/yc +22 -1
  19. package/binaries/yc.cjs +89 -13
  20. package/binaries/ycw +256 -0
  21. package/binaries/ycw.cjs +254 -0
  22. package/docs-src/binary-collections.md +34 -0
  23. package/docs-src/changelog.md +26 -0
  24. package/docs-src/clean-github-actions-caches.md +115 -0
  25. package/docs-src/copy-move-file.md +59 -0
  26. package/docs-src/del-gradle.md +17 -0
  27. package/docs-src/del-ps.md +28 -0
  28. package/docs-src/downloader.md +62 -0
  29. package/docs-src/env-helpers.md +29 -0
  30. package/docs-src/find-node-modules.md +17 -0
  31. package/docs-src/free-chatgpt.md +26 -0
  32. package/docs-src/git-diff.md +33 -0
  33. package/docs-src/git-fix.md +34 -0
  34. package/docs-src/git-purge.md +17 -0
  35. package/docs-src/git-reduce-size.md +17 -0
  36. package/docs-src/git-undo.md +21 -0
  37. package/docs-src/kill-night-crows.md +26 -0
  38. package/docs-src/node-cache-cleaner.md +182 -0
  39. package/docs-src/node-executor.md +50 -0
  40. package/docs-src/node-package-packer.md +48 -0
  41. package/docs-src/npm-run-series.md +43 -0
  42. package/docs-src/package-resolutions-updater.md +22 -0
  43. package/docs-src/php-cs-fixer-staged.md +19 -0
  44. package/docs-src/print-directory-tree.md +35 -0
  45. package/docs-src/print-tarball-tree.md +55 -0
  46. package/docs-src/py.md +19 -0
  47. package/docs-src/remove-module.md +32 -0
  48. package/docs-src/rmfind-rmx.md +21 -0
  49. package/docs-src/rmpath.md +38 -0
  50. package/docs-src/run-by-checksum.md +87 -0
  51. package/docs-src/submodule-install.md +31 -0
  52. package/docs-src/submodule-remove.md +22 -0
  53. package/docs-src/submodule-token.md +17 -0
  54. package/docs-src/test-runners.md +21 -0
  55. package/docs-src/yarn-install.md +31 -0
  56. package/docs-src/yarn-reinstall.md +27 -0
  57. package/lib/binary-collections/config.cjs +1 -1
  58. package/lib/binary-collections/config.mjs +1 -1
  59. package/lib/binary-collections/findScript.cjs +35 -10
  60. package/lib/binary-collections/findScript.mjs +2 -2
  61. package/lib/binary-collections/listScript.cjs +35 -10
  62. package/lib/binary-collections/listScript.mjs +2 -2
  63. package/lib/binary-collections.cjs +45 -25
  64. package/lib/binary-collections.mjs +11 -11
  65. package/lib/changelog.cjs +7 -12
  66. package/lib/changelog.mjs +2 -2
  67. package/lib/{chunk-SPTECFE5.mjs → chunk-2MN4VPV2.mjs} +86 -20
  68. package/lib/{chunk-V2IBPCEV.mjs → chunk-6C7KTYGZ.mjs} +3 -1
  69. package/lib/{chunk-5RTXZVCW.mjs → chunk-6RK5UCTP.mjs} +5 -10
  70. package/lib/{chunk-FB2WKVJD.mjs → chunk-CD3HF3LK.mjs} +67 -35
  71. package/lib/{chunk-6PU7BAHB.mjs → chunk-FLYSZFLW.mjs} +1 -1
  72. package/lib/chunk-KLKAIFKI.mjs +40 -0
  73. package/lib/chunk-LVSPEFU2.mjs +86 -0
  74. package/lib/{chunk-2LSRSEXF.mjs → chunk-MGPYPKIE.mjs} +2 -2
  75. package/lib/{chunk-ZOWVMII3.mjs → chunk-NQXUYO67.mjs} +35 -10
  76. package/lib/{chunk-C6D2TTYU.mjs → chunk-OBXLTXFJ.mjs} +4 -2
  77. package/lib/chunk-QD4T255Z.mjs +40 -0
  78. package/lib/{chunk-XPJGCDOD.mjs → chunk-QII2EKCS.mjs} +14 -2
  79. package/lib/chunk-RDGDLSPD.mjs +76 -0
  80. package/lib/{chunk-NCZPTKDV.mjs → chunk-RDN6HF5Z.mjs} +1 -1
  81. package/lib/chunk-RJKTSUAX.mjs +123 -0
  82. package/lib/{chunk-66KDU4TX.mjs → chunk-TBWXE7ST.mjs} +36 -61
  83. package/lib/{chunk-M3YIYRHT.mjs → chunk-UY5VUEA3.mjs} +1 -1
  84. package/lib/chunk-WSHVPGNM.mjs +44 -0
  85. package/lib/{chunk-G5UUEWUO.mjs → chunk-X2B3X7D4.mjs} +1 -1
  86. package/lib/clean-github-actions-caches-cli.cjs +255 -213
  87. package/lib/clean-github-actions-caches-cli.mjs +25 -7
  88. package/lib/clean-github-actions-caches.cjs +231 -35
  89. package/lib/clean-github-actions-caches.d.cts +39 -1
  90. package/lib/clean-github-actions-caches.mjs +2 -1
  91. package/lib/cross-env/command.cjs +2 -2
  92. package/lib/cross-env/command.js +2 -2
  93. package/lib/cross-env/command.mjs +2 -2
  94. package/lib/cross-env/index.cjs +2 -2
  95. package/lib/cross-env/index.mjs +3 -3
  96. package/lib/cross-env/variable.mjs +2 -2
  97. package/lib/del-gradle.cjs +6 -11
  98. package/lib/del-gradle.mjs +1 -1
  99. package/lib/del-node-modules.cjs +185 -3
  100. package/lib/del-node-modules.js +3 -3
  101. package/lib/del-node-modules.mjs +6 -3
  102. package/lib/{del-ps.cjs → del-ps-cli.cjs} +36 -41
  103. package/lib/del-ps-cli.mjs +44 -0
  104. package/lib/del-yarn-caches.cjs +6 -11
  105. package/lib/del-yarn-caches.mjs +1 -1
  106. package/lib/downloader-cli.cjs +256 -0
  107. package/lib/downloader-cli.d.cts +2 -0
  108. package/lib/downloader-cli.mjs +90 -0
  109. package/lib/file/copy-cli.cjs +183 -2
  110. package/lib/file/copy-cli.mjs +6 -2
  111. package/lib/file/move-cli.cjs +183 -2
  112. package/lib/file/move-cli.mjs +6 -2
  113. package/lib/find-node-modules-cli.cjs +1 -1
  114. package/lib/find-node-modules-cli.mjs +1 -1
  115. package/lib/find-node-modules.cjs +1 -1
  116. package/lib/find-node-modules.mjs +1 -1
  117. package/lib/free-chatgpt.cjs +6 -11
  118. package/lib/free-chatgpt.mjs +1 -1
  119. package/lib/git/user-config.cjs +7 -12
  120. package/lib/git/user-config.mjs +2 -2
  121. package/lib/git-diff-cli.cjs +91 -30
  122. package/lib/git-diff-cli.mjs +3 -3
  123. package/lib/git-diff.cjs +91 -30
  124. package/lib/git-diff.js +85 -28
  125. package/lib/git-diff.mjs +3 -3
  126. package/lib/git-fix.cjs +7 -12
  127. package/lib/git-fix.mjs +2 -2
  128. package/lib/git-purge.cjs +7 -12
  129. package/lib/git-purge.mjs +2 -2
  130. package/lib/index.cjs +1 -1
  131. package/lib/index.mjs +1 -1
  132. package/lib/node-cache-cleaner-cli.cjs +185 -2
  133. package/lib/node-cache-cleaner-cli.js +2 -5
  134. package/lib/node-cache-cleaner-cli.mjs +8 -4
  135. package/lib/node-executor.cjs +183 -2
  136. package/lib/node-executor.mjs +5 -2
  137. package/lib/node-package-packer/build-readme.cjs +150 -0
  138. package/lib/node-package-packer/build-readme.d.mts +10 -0
  139. package/lib/node-package-packer/build-readme.mjs +10 -0
  140. package/lib/node-package-packer/build-tarball.cjs +495 -0
  141. package/lib/node-package-packer/build-tarball.d.mts +33 -0
  142. package/lib/node-package-packer/build-tarball.mjs +175 -0
  143. package/lib/node-package-packer-cli.cjs +525 -0
  144. package/lib/node-package-packer-cli.d.mts +1 -0
  145. package/lib/node-package-packer-cli.mjs +34 -0
  146. package/lib/npm-run-series.cjs +7 -12
  147. package/lib/npm-run-series.mjs +2 -2
  148. package/lib/package-resolutions-updater-cli.cjs +73 -76
  149. package/lib/package-resolutions-updater-cli.mjs +4 -3
  150. package/lib/package-resolutions-updater.cjs +71 -74
  151. package/lib/package-resolutions-updater.d.mts +34 -0
  152. package/lib/package-resolutions-updater.mjs +3 -2
  153. package/lib/php-cs-fixer-staged.cjs +1 -1
  154. package/lib/php-cs-fixer-staged.mjs +1 -1
  155. package/lib/print-directory-tree.cjs +16 -18
  156. package/lib/print-directory-tree.mjs +11 -8
  157. package/lib/print-tarball-tree.cjs +262 -0
  158. package/lib/print-tarball-tree.d.mts +1 -0
  159. package/lib/print-tarball-tree.mjs +68 -0
  160. package/lib/ps/index.cjs +10 -10
  161. package/lib/ps/index.mjs +4 -4
  162. package/lib/ps/table-parser.d.ts +3 -4
  163. package/lib/ps/table-parser.js +9 -16
  164. package/lib/remove-module.cjs +17 -22
  165. package/lib/remove-module.mjs +2 -2
  166. package/lib/rm-node-module-cli.cjs +171 -4
  167. package/lib/rm-node-module-cli.mjs +7 -4
  168. package/lib/rmpath-cli.cjs +285 -0
  169. package/lib/rmpath-cli.d.mts +1 -0
  170. package/lib/rmpath-cli.mjs +23 -0
  171. package/lib/rmpath.cjs +6 -217
  172. package/lib/rmpath.mjs +5 -101
  173. package/lib/run-by-checksum/cache.cjs +69 -0
  174. package/lib/run-by-checksum/cache.d.ts +19 -0
  175. package/lib/run-by-checksum/cache.js +50 -0
  176. package/lib/run-by-checksum/cache.mjs +12 -0
  177. package/lib/run-by-checksum/hash.cjs +72 -0
  178. package/lib/run-by-checksum/hash.d.ts +14 -0
  179. package/lib/run-by-checksum/hash.js +85 -0
  180. package/lib/{ps/isWin.mjs → run-by-checksum/hash.mjs} +5 -5
  181. package/lib/run-by-checksum/run.cjs +169 -0
  182. package/lib/run-by-checksum/run.d.ts +22 -0
  183. package/lib/run-by-checksum/run.js +93 -0
  184. package/lib/run-by-checksum/run.mjs +10 -0
  185. package/lib/run-by-checksum-cli.cjs +382 -0
  186. package/lib/run-by-checksum-cli.d.ts +2 -0
  187. package/lib/run-by-checksum-cli.js +43 -0
  188. package/lib/run-by-checksum-cli.mjs +56 -0
  189. package/lib/submodule-install.cjs +8 -13
  190. package/lib/submodule-install.mjs +3 -3
  191. package/lib/submodule-remove-cli.cjs +169 -2
  192. package/lib/submodule-remove-cli.js +2 -2
  193. package/lib/submodule-remove-cli.mjs +5 -2
  194. package/lib/utils/fetchResponse.cjs +24 -0
  195. package/lib/utils/fetchResponse.d.cts +25 -0
  196. package/lib/utils/fetchResponse.mjs +6 -0
  197. package/lib/utils/index.cjs +5 -10
  198. package/lib/utils/index.d.cts +2 -9
  199. package/lib/utils/index.mjs +1 -1
  200. package/lib/utils/isWindows.mjs +3 -1
  201. package/lib/utils/runBash.cjs +1 -1
  202. package/lib/utils/runBash.mjs +1 -1
  203. package/lib/yarn-per-branch-lock-installer.cjs +202 -11
  204. package/lib/yarn-per-branch-lock-installer.mjs +24 -11
  205. package/lib/yarn-reinstall.cjs +6 -11
  206. package/lib/yarn-reinstall.mjs +1 -1
  207. package/package.json +35 -10
  208. package/readme.html +2 -2
  209. package/readme.md +5 -5
  210. package/releases/readme.md +6 -3
  211. package/tmp/test-repo-runChecksum/test-complex-glob/README.md +1 -0
  212. package/tmp/test-repo-runChecksum/test-mixed-args/README.md +1 -0
  213. package/.opencode/package.json +0 -5
  214. package/lib/chunk-6S4NXESK.mjs +0 -26
  215. package/lib/del-ps.js +0 -32
  216. package/lib/del-ps.mjs +0 -43
  217. package/lib/ps/isWin.cjs +0 -26
  218. package/lib/ps/isWin.d.ts +0 -2
  219. package/lib/ps/isWin.js +0 -4
  220. package/test/package.json +0 -20
  221. package/test-project/package.json +0 -22
  222. package/test-project/workspaces/workspace-a/package.json +0 -135
  223. package/test-project/workspaces/workspace-a/test/demo/package.json +0 -25
  224. package/test-project/workspaces/workspace-b/package.json +0 -139
  225. package/test-project/workspaces/workspace-b/test/sample-project/package.json +0 -7
  226. package/test-project/workspaces/workspace-b/themes/hexo-theme-flowbite/package.json +0 -96
  227. package/tmp/rm-node-modules-test-project/package.json +0 -17
  228. package/tmp/rm-node-modules-test-project/packages/workspace-a/package.json +0 -16
  229. package/tmp/rm-node-modules-test-project/packages/workspace-b/package.json +0 -16
  230. package/tmp/test-repo/package.json +0 -17
  231. /package/lib/{del-ps.d.ts → del-ps-cli.d.mts} +0 -0
@@ -34,6 +34,173 @@ var init_cjs_shims = __esm({
34
34
  }
35
35
  });
36
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
+
37
204
  // src/submodule-remove.cjs
38
205
  var require_submodule_remove = __commonJS({
39
206
  "src/submodule-remove.cjs"(exports2, module2) {
@@ -89,10 +256,10 @@ var require_submodule_remove = __commonJS({
89
256
  // src/submodule-remove-cli.js
90
257
  init_cjs_shims();
91
258
  var import_fs_extra = __toESM(require("fs-extra"), 1);
92
- var import_minimist = __toESM(require("minimist"), 1);
259
+ var import_utils = __toESM(require_utils(), 1);
93
260
  var import_upath = __toESM(require("upath"), 1);
94
261
  var import_submodule_remove = __toESM(require_submodule_remove(), 1);
95
- var args = (0, import_minimist.default)(process.argv.slice(2));
262
+ var args = (0, import_utils.getArgs)();
96
263
  var submodulePath = args._[0];
97
264
  if (!submodulePath) {
98
265
  console.error("Usage: node submodule-remove.cjs <submodule-path>");
@@ -13,10 +13,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  const fs_extra_1 = __importDefault(require("fs-extra"));
16
- const minimist_1 = __importDefault(require("minimist"));
16
+ const index_cjs_1 = require("./utils/index.cjs");
17
17
  const upath_1 = __importDefault(require("upath"));
18
18
  const submodule_remove_cjs_1 = __importDefault(require("./submodule-remove.cjs"));
19
- const args = (0, minimist_1.default)(process.argv.slice(2));
19
+ const args = (0, index_cjs_1.getArgs)();
20
20
  const submodulePath = args._[0];
21
21
  if (!submodulePath) {
22
22
  console.error('Usage: node submodule-remove.cjs <submodule-path>');
@@ -2,6 +2,9 @@ import { createRequire } from 'module'; const require = createRequire(import.met
2
2
  import {
3
3
  require_submodule_remove
4
4
  } from "./chunk-BZWVHODJ.mjs";
5
+ import {
6
+ require_utils
7
+ } from "./chunk-6RK5UCTP.mjs";
5
8
  import {
6
9
  __toESM,
7
10
  init_esm_shims
@@ -9,11 +12,11 @@ import {
9
12
 
10
13
  // src/submodule-remove-cli.js
11
14
  init_esm_shims();
15
+ var import_utils = __toESM(require_utils(), 1);
12
16
  var import_submodule_remove = __toESM(require_submodule_remove(), 1);
13
17
  import fs from "fs-extra";
14
- import minimist from "minimist";
15
18
  import path from "upath";
16
- var args = minimist(process.argv.slice(2));
19
+ var args = (0, import_utils.getArgs)();
17
20
  var submodulePath = args._[0];
18
21
  if (!submodulePath) {
19
22
  console.error("Usage: node submodule-remove.cjs <submodule-path>");
@@ -0,0 +1,24 @@
1
+ // src/utils/fetchResponse.cjs
2
+ var axios = require("axios");
3
+ async function fetchResponse(url, options = {}) {
4
+ var _a, _b, _c;
5
+ const response = await axios.get(url, {
6
+ maxRedirects: 5,
7
+ responseType: "arraybuffer",
8
+ validateStatus: () => true,
9
+ ...options
10
+ });
11
+ const finalUrl = ((_b = (_a = response.request) == null ? void 0 : _a.res) == null ? void 0 : _b.responseUrl) ?? ((_c = response.request) == null ? void 0 : _c.responseURL) ?? url;
12
+ return {
13
+ finalUrl,
14
+ status: response.status,
15
+ statusText: response.statusText,
16
+ contentType: response.headers["content-type"],
17
+ contentLength: response.headers["content-length"],
18
+ dataLength: Buffer.isBuffer(response.data) ? response.data.length : void 0,
19
+ data: response.data
20
+ };
21
+ }
22
+ module.exports = fetchResponse;
23
+ module.exports.fetchResponse = fetchResponse;
24
+ module.exports.default = fetchResponse;
@@ -0,0 +1,25 @@
1
+ export = fetchResponse;
2
+ /**
3
+ * Fetch a URL with axios and return response metadata.
4
+ * @param {string} url The URL to request.
5
+ * @param {import('axios').AxiosRequestConfig} [options] Axios request options.
6
+ * @returns {Promise<{
7
+ * finalUrl: string,
8
+ * status: number,
9
+ * statusText: string,
10
+ * contentType: string | undefined,
11
+ * contentLength: string | undefined,
12
+ * dataLength: number | undefined
13
+ * }>}
14
+ */
15
+ declare function fetchResponse(url: string, options?: import("axios").AxiosRequestConfig): Promise<{
16
+ finalUrl: string;
17
+ status: number;
18
+ statusText: string;
19
+ contentType: string | undefined;
20
+ contentLength: string | undefined;
21
+ dataLength: number | undefined;
22
+ }>;
23
+ declare namespace fetchResponse {
24
+ export { fetchResponse, fetchResponse as default };
25
+ }
@@ -0,0 +1,6 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import {
3
+ require_fetchResponse
4
+ } from "../chunk-KLKAIFKI.mjs";
5
+ import "../chunk-QQ4A6DLD.mjs";
6
+ export default require_fetchResponse();
@@ -1,9 +1,9 @@
1
1
  // src/utils/index.cjs
2
2
  var fs = require("fs");
3
3
  var path = require("upath");
4
- var argv = require("minimist")(process.argv.slice(2));
4
+ var minimistLib = require("minimist");
5
+ var argv = minimistLib(process.argv.slice(2));
5
6
  var { exec } = require("child_process");
6
- var { URL } = require("url");
7
7
  var { promisify } = require("util");
8
8
  var execAsync = promisify(exec);
9
9
  async function parseGitRemotes() {
@@ -37,15 +37,10 @@ async function parseGitRemotes() {
37
37
  }
38
38
  }
39
39
  module.exports.parseGitRemotes = parseGitRemotes;
40
- function joinPathPreserveDriveLetter(...segments) {
41
- let fullPath = require("path").join(...segments);
42
- if (/^[a-z]:\\/.test(fullPath)) {
43
- fullPath = fullPath.charAt(0).toUpperCase() + fullPath.slice(1);
40
+ function getArgs(opts) {
41
+ if (opts) {
42
+ return minimistLib(process.argv.slice(2), opts);
44
43
  }
45
- return fullPath;
46
- }
47
- module.exports.joinPathPreserveDriveLetter = joinPathPreserveDriveLetter;
48
- function getArgs() {
49
44
  return argv;
50
45
  }
51
46
  module.exports.getArgs = getArgs;
@@ -1,17 +1,10 @@
1
1
  export function parseGitRemotes(): Promise<{}>;
2
- /**
3
- * Joins all given path segments together and normalizes the resulting path.
4
- * Preserves the case of the drive letter on Windows.
5
- *
6
- * @param {...string} segments Path segments to join.
7
- * @returns {string} Normalized path with drive letter case preserved.
8
- */
9
- export function joinPathPreserveDriveLetter(...segments: string[]): string;
10
2
  /**
11
3
  * Returns parsed command line arguments using minimist.
4
+ * @param {import('minimist').Opts} [opts] Optional minimist options for custom parsing.
12
5
  * @returns {import('minimist').ParsedArgs} Parsed command line arguments
13
6
  */
14
- export function getArgs(): import("minimist").ParsedArgs;
7
+ export function getArgs(opts?: import("minimist").Opts): import("minimist").ParsedArgs;
15
8
  /**
16
9
  * Recursively deletes a file or directory at the given path.
17
10
  * @param {string} fullPath Absolute path to the file or directory to delete.
@@ -1,6 +1,6 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
2
  import {
3
3
  require_utils
4
- } from "../chunk-5RTXZVCW.mjs";
4
+ } from "../chunk-6RK5UCTP.mjs";
5
5
  import "../chunk-QQ4A6DLD.mjs";
6
6
  export default require_utils();
@@ -1,8 +1,10 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
2
  import {
3
+ init_isWindows,
3
4
  isWindows
4
- } from "../chunk-XPJGCDOD.mjs";
5
+ } from "../chunk-QII2EKCS.mjs";
5
6
  import "../chunk-QQ4A6DLD.mjs";
7
+ init_isWindows();
6
8
  export {
7
9
  isWindows
8
10
  };
@@ -1,7 +1,7 @@
1
1
  // src/utils/runBash.cjs
2
2
  var { spawn } = require("child_process");
3
3
  var fs = require("fs");
4
- var path = require("path");
4
+ var path = require("upath");
5
5
  function runBash(file, options = {}) {
6
6
  return new Promise((resolve, reject) => {
7
7
  const env = { ...process.env, ...options.env || {} };
@@ -11,7 +11,7 @@ var require_runBash = __commonJS({
11
11
  init_esm_shims();
12
12
  var { spawn } = __require("child_process");
13
13
  var fs = __require("fs");
14
- var path = __require("path");
14
+ var path = __require("upath");
15
15
  function runBash(file, options = {}) {
16
16
  return new Promise((resolve, reject) => {
17
17
  const env = { ...process.env, ...options.env || {} };
@@ -1,9 +1,191 @@
1
1
  #!/usr/bin/env node
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 path = require("upath");
22
+ var minimistLib = require("minimist");
23
+ var argv = minimistLib(process.argv.slice(2));
24
+ var { exec } = require("child_process");
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 URL(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
+ }
50
+ });
51
+ return remotes;
52
+ } catch (error) {
53
+ console.error("Error:", error.message);
54
+ return {};
55
+ }
56
+ }
57
+ module2.exports.parseGitRemotes = parseGitRemotes;
58
+ function getArgs2(opts) {
59
+ if (opts) {
60
+ return minimistLib(process.argv.slice(2), opts);
61
+ }
62
+ return argv;
63
+ }
64
+ module2.exports.getArgs = getArgs2;
65
+ function del(fullPath) {
66
+ try {
67
+ if (!fs2.existsSync(fullPath)) return;
68
+ const stat = fs2.lstatSync(fullPath);
69
+ if (stat.isSymbolicLink()) {
70
+ try {
71
+ fs2.unlinkSync(fullPath);
72
+ console.log("deleted symlink", fullPath);
73
+ } catch (e) {
74
+ console.log("failed delete symlink", fullPath, e && e.message);
75
+ }
76
+ return;
77
+ }
78
+ if (stat.isDirectory()) {
79
+ const subdir = fs2.readdirSync(fullPath).map((dirPath) => path.resolve(fullPath, dirPath));
80
+ for (let i = 0; i < subdir.length; i++) {
81
+ del(subdir[i]);
82
+ }
83
+ try {
84
+ fs2.rmdirSync(fullPath);
85
+ console.log("deleted", fullPath);
86
+ } catch (_e) {
87
+ try {
88
+ fs2.rmSync(fullPath, { recursive: true, force: true, retryDelay: 7e3 });
89
+ console.log("deleted", fullPath);
90
+ } catch (ee) {
91
+ console.log("failed delete", fullPath, ee && ee.message);
92
+ }
93
+ }
94
+ return;
95
+ }
96
+ try {
97
+ fs2.unlinkSync(fullPath);
98
+ console.log("deleted", fullPath);
99
+ } catch (_e) {
100
+ try {
101
+ fs2.rmSync(fullPath, { recursive: true, force: true, retryDelay: 7e3 });
102
+ console.log("deleted", fullPath);
103
+ } catch (ee) {
104
+ console.log("failed delete", fullPath, ee && ee.message);
105
+ }
106
+ }
107
+ } catch (err) {
108
+ console.log("failed delete", fullPath, err && err.message);
109
+ }
110
+ }
111
+ module2.exports.del = del;
112
+ function delStream(globStream) {
113
+ globStream.stream().on("data", (result) => {
114
+ const fullPath = path.resolve(process.cwd(), result);
115
+ try {
116
+ if (fs2.existsSync(fullPath)) {
117
+ const stat = fs2.lstatSync(fullPath);
118
+ if (stat.isSymbolicLink()) {
119
+ try {
120
+ fs2.unlinkSync(fullPath);
121
+ console.log("deleted symlink", fullPath);
122
+ } catch (e) {
123
+ console.log("failed delete symlink", fullPath, e && e.message);
124
+ }
125
+ return;
126
+ }
127
+ if (stat.isDirectory()) {
128
+ const subdir = fs2.readdirSync(fullPath).map((dirPath) => path.resolve(fullPath, dirPath));
129
+ for (let i = 0; i < subdir.length; i++) {
130
+ del(subdir[i]);
131
+ }
132
+ }
133
+ }
134
+ del(fullPath);
135
+ } catch (err) {
136
+ console.log("failed processing", fullPath, err && err.message);
137
+ }
138
+ });
139
+ }
140
+ module2.exports.delStream = delStream;
141
+ function getFileTreeString(hashArray) {
142
+ const tree = {};
143
+ const hashMap = {};
144
+ for (const entry of hashArray) {
145
+ const [filePath, hash] = entry.split(" ");
146
+ hashMap[filePath] = hash;
147
+ const parts = filePath.split("/");
148
+ let current = tree;
149
+ for (let i = 0; i < parts.length; i++) {
150
+ const part = parts[i];
151
+ if (i === parts.length - 1) {
152
+ current[part] = null;
153
+ } else {
154
+ current[part] = current[part] || {};
155
+ current = current[part];
156
+ }
157
+ }
158
+ }
159
+ function printNode(node, prefix = "", parentPath = "") {
160
+ const keys = Object.keys(node).sort();
161
+ let lines = [];
162
+ keys.forEach((key, idx) => {
163
+ const isLast = idx === keys.length - 1;
164
+ const branch = isLast ? "\u2514\u2500\u2500 " : "\u251C\u2500\u2500 ";
165
+ const currentPath = parentPath ? parentPath + "/" + key : key;
166
+ if (node[key] === null) {
167
+ lines.push(prefix + branch + key + " [" + (hashMap[currentPath] || "") + "]");
168
+ } else {
169
+ lines.push(prefix + branch + key + "/");
170
+ lines = lines.concat(printNode(node[key], prefix + (isLast ? " " : "\u2502 "), currentPath));
171
+ }
172
+ });
173
+ return lines;
174
+ }
175
+ return printNode(tree, "", "").join("\n");
176
+ }
177
+ module2.exports.getFileTreeString = getFileTreeString;
178
+ var delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
179
+ module2.exports.delay = delay;
180
+ }
181
+ });
2
182
 
3
183
  // src/yarn-per-branch-lock-installer.cjs
4
- var { execSync, spawnSync } = require("child_process");
184
+ init_cjs_shims();
185
+ var { execSync } = require("child_process");
186
+ var spawn = require("cross-spawn");
5
187
  var fs = require("fs-extra");
6
- var minimist = require("minimist");
188
+ var { getArgs } = require_utils();
7
189
  function run(cmd, opts = {}) {
8
190
  var _a;
9
191
  try {
@@ -23,6 +205,14 @@ function getBranchName() {
23
205
  function safeBranchName(name) {
24
206
  return name.replace(/[\\/]/g, "-");
25
207
  }
208
+ function findCorepack() {
209
+ try {
210
+ const paths = run(process.platform === "win32" ? "where corepack" : "which corepack").split(/\r?\n/).filter(Boolean);
211
+ return paths[0] || null;
212
+ } catch {
213
+ return null;
214
+ }
215
+ }
26
216
  function findYarn() {
27
217
  try {
28
218
  const paths = run(process.platform === "win32" ? "where yarn" : "which yarn").split(/\r?\n/).filter(Boolean);
@@ -34,10 +224,8 @@ function findYarn() {
34
224
  return null;
35
225
  }
36
226
  }
37
- function runYarn(yarnPath, args) {
38
- const result = process.platform === "win32" ? spawnSync("cmd.exe", ["/d", "/s", "/c", yarnPath, ...args], {
39
- stdio: "inherit"
40
- }) : spawnSync(yarnPath, args, {
227
+ function runYarn(runner, args) {
228
+ const result = spawn.sync(runner.command, [...runner.args, ...args], {
41
229
  stdio: "inherit"
42
230
  });
43
231
  if (result.error) {
@@ -60,7 +248,7 @@ Examples:
60
248
  `);
61
249
  }
62
250
  function main() {
63
- const argv = minimist(process.argv.slice(2), {
251
+ const argv = getArgs({
64
252
  boolean: ["help"],
65
253
  alias: {
66
254
  h: "help"
@@ -74,9 +262,11 @@ function main() {
74
262
  const branch = safeBranchName(getBranchName());
75
263
  const yarnLock = "yarn.lock";
76
264
  const branchLock = `yarn.${branch}.lock`;
265
+ const corepackPath = findCorepack();
77
266
  const yarnPath = findYarn();
78
- if (!yarnPath) {
79
- console.error("Error: Yarn not found in PATH.");
267
+ const yarnRunner = corepackPath ? { command: corepackPath, args: ["yarn"] } : yarnPath ? { command: yarnPath, args: [] } : null;
268
+ if (!yarnRunner) {
269
+ console.error("Error: Corepack or Yarn not found in PATH.");
80
270
  process.exit(1);
81
271
  }
82
272
  if (fs.existsSync(branchLock)) {
@@ -87,8 +277,9 @@ function main() {
87
277
  fs.removeSync(yarnLock);
88
278
  }
89
279
  const args = packages.length ? ["up", ...packages] : ["install"];
90
- console.log(`Running: yarn ${args.join(" ")}`);
91
- runYarn(yarnPath, args);
280
+ const commandText = [yarnRunner.command, ...yarnRunner.args, ...args].join(" ");
281
+ console.log(`Running: ${commandText}`);
282
+ runYarn(yarnRunner, args);
92
283
  if (fs.existsSync(yarnLock)) {
93
284
  console.log(`Saving ${yarnLock} -> ${branchLock}`);
94
285
  fs.copyFileSync(yarnLock, branchLock);