binary-collections 2.0.8 → 2.0.10

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 (250) hide show
  1. package/binaries/binary-executor.cjs +43 -0
  2. package/{bin → binaries}/clean-nodemodule +0 -0
  3. package/binaries/clean-nodemodule.cjs +43 -0
  4. package/binaries/clean-nodemodule.cmd +4 -0
  5. package/{bin → binaries}/clean-nodemodules +0 -0
  6. package/binaries/clean-nodemodules.cjs +43 -0
  7. package/binaries/clean-nodemodules.cmd +5 -0
  8. package/{bin → binaries}/dev +0 -0
  9. package/binaries/dev.cjs +43 -0
  10. package/{bin → binaries}/empty +0 -0
  11. package/binaries/empty.cjs +43 -0
  12. package/{bin → binaries}/git-reduce-size +0 -0
  13. package/binaries/git-reduce-size.cjs +43 -0
  14. package/binaries/javakill.cjs +43 -0
  15. package/{bin → binaries}/javakill.cmd +0 -0
  16. package/{bin → binaries}/kill-process +0 -0
  17. package/binaries/kill-process.cjs +43 -0
  18. package/binaries/nodekill.cjs +43 -0
  19. package/{bin → binaries}/nodekill.ps1 +0 -0
  20. package/{bin → binaries}/prod +0 -0
  21. package/binaries/prod.cjs +43 -0
  22. package/{bin → binaries}/rmfind +0 -0
  23. package/binaries/rmfind.cjs +43 -0
  24. package/{bin → binaries}/rmx +0 -0
  25. package/binaries/rmx.cjs +43 -0
  26. package/{bin → binaries}/submodule-token +0 -0
  27. package/binaries/submodule-token.cjs +43 -0
  28. package/docs-src/clean-github-actions-caches.md +26 -0
  29. package/docs-src/free-chatgpt.md +26 -0
  30. package/lib/binary-collections-config.cjs +3 -2
  31. package/lib/binary-collections-config.mjs +2 -2
  32. package/lib/binary-collections.cjs +452 -87
  33. package/lib/binary-collections.mjs +247 -8
  34. package/lib/changelog.cjs +328 -0
  35. package/lib/changelog.mjs +205 -0
  36. package/lib/chunk-4EWQC6GZ.mjs +382 -0
  37. package/lib/chunk-4ZI7BQKQ.mjs +381 -0
  38. package/lib/chunk-5J2BEPY5.mjs +83 -0
  39. package/lib/{chunk-4BYBVEYC.mjs → chunk-66PAU5PS.mjs} +5 -4
  40. package/lib/chunk-6HHJRKFB.mjs +59 -0
  41. package/lib/chunk-6S4NXESK.mjs +26 -0
  42. package/lib/{chunk-ZYAQRPUL.mjs → chunk-7YD7IPFF.mjs} +2 -2
  43. package/lib/{chunk-SH3L6HHV.mjs → chunk-A2JQXI5Z.mjs} +2 -2
  44. package/lib/{chunk-EGSSKVDH.mjs → chunk-A3VUZEJK.mjs} +1 -1
  45. package/lib/chunk-AGZYRDC2.mjs +323 -0
  46. package/lib/{chunk-VVEZVNIV.mjs → chunk-AI4CVPJ7.mjs} +6 -6
  47. package/lib/chunk-BDCHCWHD.mjs +136 -0
  48. package/lib/chunk-BEZKJ25G.mjs +140 -0
  49. package/lib/chunk-DI5MDPSN.mjs +386 -0
  50. package/lib/{chunk-ONIBBBQ3.mjs → chunk-E6FDDAOO.mjs} +4 -3
  51. package/lib/chunk-FKI7IEB5.mjs +172 -0
  52. package/lib/chunk-GJTGHXRA.mjs +356 -0
  53. package/lib/{chunk-YV7DO3YV.mjs → chunk-HLGOWBEO.mjs} +1 -1
  54. package/lib/chunk-HMRMTYZM.mjs +40 -0
  55. package/lib/chunk-HN52G2YL.mjs +305 -0
  56. package/lib/chunk-HO6GHCOB.mjs +385 -0
  57. package/lib/chunk-LEM5OMRP.mjs +384 -0
  58. package/lib/{chunk-YX5U7XDR.mjs → chunk-M3YIYRHT.mjs} +6 -5
  59. package/lib/chunk-O6SWBEOQ.mjs +81 -0
  60. package/lib/{chunk-JGR2NW6D.mjs → chunk-PDSXF5HY.mjs} +3 -3
  61. package/lib/{chunk-AASHBCRW.mjs → chunk-QQ4A6DLD.mjs} +8 -0
  62. package/lib/chunk-RCP7DHVY.mjs +190 -0
  63. package/lib/chunk-SBNDSKG5.mjs +136 -0
  64. package/lib/chunk-U6SO4QEV.mjs +320 -0
  65. package/lib/{chunk-APBWENF6.mjs → chunk-V3N3JEUF.mjs} +3 -3
  66. package/lib/chunk-XD6BJK6Q.mjs +351 -0
  67. package/lib/chunk-XVBFFVCJ.mjs +209 -0
  68. package/lib/chunk-YXSFGA2D.mjs +383 -0
  69. package/lib/clean-github-actions-caches.cjs +243 -148
  70. package/lib/clean-github-actions-caches.mjs +4 -3
  71. package/lib/del-gradle.cjs +2 -2
  72. package/lib/del-gradle.js +1 -1
  73. package/lib/del-gradle.mjs +2 -2
  74. package/lib/del-node-modules.cjs +2 -2
  75. package/lib/del-node-modules.js +1 -1
  76. package/lib/del-node-modules.mjs +2 -2
  77. package/lib/del-ps.cjs +29 -8
  78. package/lib/del-ps.js +2 -2
  79. package/lib/del-ps.mjs +7 -5
  80. package/lib/del-yarn-caches.cjs +26 -5
  81. package/lib/del-yarn-caches.js +38 -3
  82. package/lib/del-yarn-caches.mjs +6 -6
  83. package/lib/find-node-modules-cli.cjs +5 -4
  84. package/lib/find-node-modules-cli.js +1 -1
  85. package/lib/find-node-modules-cli.mjs +2 -2
  86. package/lib/find-node-modules.cjs +4 -3
  87. package/lib/{find-node-modules.d.ts → find-node-modules.d.cts} +1 -1
  88. package/lib/find-node-modules.mjs +2 -2
  89. package/lib/free-chatgpt.cjs +548 -0
  90. package/lib/free-chatgpt.d.ts +1 -0
  91. package/lib/free-chatgpt.js +51 -0
  92. package/lib/free-chatgpt.mjs +50 -0
  93. package/lib/git/gitattributes.cjs +1 -1
  94. package/lib/git/{gitattributes.d.mts → gitattributes.d.cts} +5 -7
  95. package/lib/git/gitattributes.mjs +2 -2
  96. package/lib/git/line-endings.cjs +297 -64
  97. package/lib/git/line-endings.mjs +4 -4
  98. package/lib/git/normalize.cjs +26 -36
  99. package/lib/git/normalize.mjs +2 -2
  100. package/lib/git/permissions.cjs +77 -11
  101. package/lib/git/permissions.mjs +3 -3
  102. package/lib/git/pull-strategy.cjs +76 -9
  103. package/lib/git/pull-strategy.mjs +3 -3
  104. package/lib/git/user-config.cjs +266 -83
  105. package/lib/git/user-config.mjs +4 -4
  106. package/lib/git/utils.cjs +40 -60
  107. package/lib/git/utils.mjs +2 -2
  108. package/lib/git-diff-cli.cjs +651 -0
  109. package/lib/git-diff-cli.d.ts +1 -0
  110. package/lib/git-diff-cli.js +15 -0
  111. package/lib/git-diff-cli.mjs +16 -0
  112. package/lib/git-diff.cjs +657 -58
  113. package/lib/git-diff.d.ts +38 -83
  114. package/lib/git-diff.js +152 -0
  115. package/lib/git-diff.mjs +23 -85
  116. package/lib/git-fix.cjs +685 -97
  117. package/lib/git-fix.mjs +12 -11
  118. package/lib/git-purge.cjs +3 -3
  119. package/lib/git-purge.d.cts +1 -0
  120. package/lib/git-purge.mjs +43 -37
  121. package/lib/index.cjs +7 -6
  122. package/lib/index.d.ts +1 -1
  123. package/lib/index.js +2 -5
  124. package/lib/index.mjs +4 -4
  125. package/lib/npm-run-series.cjs +3 -3
  126. package/lib/npm-run-series.mjs +42 -36
  127. package/lib/package-resolutions-updater.cjs +174 -1
  128. package/lib/package-resolutions-updater.mjs +270 -290
  129. package/lib/print-directory-tree.cjs +275 -210
  130. package/lib/print-directory-tree.mjs +2 -2
  131. package/lib/ps/connected-domain.cjs +25 -2
  132. package/lib/ps/connected-domain.d.ts +10 -2
  133. package/lib/ps/connected-domain.js +5 -2
  134. package/lib/ps/connected-domain.mjs +8 -4
  135. package/lib/ps/index.cjs +345 -322
  136. package/lib/ps/index.d.mjs +1 -1
  137. package/lib/ps/index.js +1 -1
  138. package/lib/ps/index.mjs +179 -182
  139. package/lib/ps/isWin.cjs +24 -1
  140. package/lib/ps/isWin.d.ts +1 -1
  141. package/lib/ps/isWin.js +3 -1
  142. package/lib/ps/isWin.mjs +8 -4
  143. package/lib/ps/table-parser.cjs +167 -159
  144. package/lib/ps/table-parser.d.ts +5 -0
  145. package/lib/ps/table-parser.js +10 -4
  146. package/lib/ps/table-parser.mjs +9 -5
  147. package/lib/remove-module.cjs +262 -0
  148. package/lib/remove-module.d.mts +1 -0
  149. package/lib/remove-module.mjs +111 -0
  150. package/lib/rmpath.cjs +274 -0
  151. package/lib/rmpath.d.mts +3 -0
  152. package/lib/rmpath.mjs +108 -0
  153. package/lib/submodule-install.cjs +264 -85
  154. package/lib/submodule-install.mjs +56 -7
  155. package/lib/submodule-remove-cli.cjs +103 -0
  156. package/lib/submodule-remove-cli.d.ts +1 -0
  157. package/lib/submodule-remove-cli.js +31 -0
  158. package/lib/submodule-remove-cli.mjs +28 -0
  159. package/lib/submodule-remove.cjs +43 -0
  160. package/lib/submodule-remove.d.cts +2 -0
  161. package/lib/submodule-remove.mjs +6 -0
  162. package/lib/utils/chatgpt.cjs +383 -0
  163. package/lib/utils/chatgpt.d.ts +31 -0
  164. package/lib/utils/chatgpt.js +541 -0
  165. package/lib/utils/chatgpt.mjs +8 -0
  166. package/lib/{utils.cjs → utils/index.cjs} +1 -1
  167. package/lib/{utils.mjs → utils/index.mjs} +2 -2
  168. package/lib/yarn-reinstall.cjs +172 -38
  169. package/lib/yarn-reinstall.mjs +2 -2
  170. package/package.json +91 -71
  171. package/readme.md +43 -69
  172. package/releases/readme.md +36 -0
  173. package/test/README.md +101 -0
  174. package/test/package.json +2 -1
  175. package/test-project/readme.md +26 -0
  176. package/tmp/test-repo/README.md +35 -0
  177. package/tmp/typedoc/readme.md +320 -0
  178. package/bin/bash-dummy +0 -56
  179. package/bin/bash-dummy.cmd +0 -25
  180. package/bin/dir-tree.cmd +0 -7
  181. package/bin/git-diff +0 -4
  182. package/bin/git-diff.cmd +0 -7
  183. package/bin/git-fix +0 -36
  184. package/bin/git-fix.cmd +0 -7
  185. package/bin/rmpath +0 -70
  186. package/bin/submodule-install.txt +0 -118
  187. package/bin/submodule-remove +0 -46
  188. package/bin/submodule.txt +0 -172
  189. package/lib/binary-collections-config.d.mts +0 -18
  190. package/lib/binary-collections-config.js +0 -39
  191. package/lib/binary-collections.d.mts +0 -121
  192. package/lib/binary-collections.d.ts +0 -121
  193. package/lib/chunk-DPKAJKFO.mjs +0 -171
  194. package/lib/chunk-G3THLIDT.mjs +0 -200
  195. package/lib/chunk-W3ENOM53.mjs +0 -18
  196. package/lib/clean-github-actions-caches.d.mts +0 -169
  197. package/lib/clean-github-actions-caches.d.ts +0 -169
  198. package/lib/del-gradle.d.mts +0 -2
  199. package/lib/del-node-modules.d.mts +0 -2
  200. package/lib/del-ps.d.mts +0 -2
  201. package/lib/del-yarn-caches.d.mts +0 -2
  202. package/lib/find-node-modules-cli.d.mts +0 -1
  203. package/lib/find-node-modules.d.mts +0 -13
  204. package/lib/find-node-modules.js +0 -53
  205. package/lib/git/line-endings.d.mts +0 -83
  206. package/lib/git/line-endings.d.ts +0 -83
  207. package/lib/git/normalize.d.mts +0 -43
  208. package/lib/git/normalize.d.ts +0 -43
  209. package/lib/git/permissions.d.mts +0 -17
  210. package/lib/git/permissions.d.ts +0 -17
  211. package/lib/git/pull-strategy.d.mts +0 -15
  212. package/lib/git/pull-strategy.d.ts +0 -15
  213. package/lib/git/user-config.d.mts +0 -105
  214. package/lib/git/user-config.d.ts +0 -105
  215. package/lib/git/utils.d.mts +0 -69
  216. package/lib/git/utils.d.ts +0 -69
  217. package/lib/git-diff.d.mts +0 -84
  218. package/lib/git-fix.d.mts +0 -141
  219. package/lib/git-fix.d.ts +0 -141
  220. package/lib/git-purge.d.mts +0 -2
  221. package/lib/git-purge.js +0 -59
  222. package/lib/index.d.mts +0 -1
  223. package/lib/npm-run-series.d.mts +0 -1
  224. package/lib/npm-run-series.d.ts +0 -2
  225. package/lib/npm-run-series.js +0 -86
  226. package/lib/package-resolutions-updater.d.ts +0 -326
  227. package/lib/print-directory-tree.d.mts +0 -234
  228. package/lib/print-directory-tree.d.ts +0 -234
  229. package/lib/ps/connected-domain.d.mts +0 -3
  230. package/lib/ps/index.d.d.mts +0 -26
  231. package/lib/ps/index.d.d.ts +0 -26
  232. package/lib/ps/index.d.mts +0 -26
  233. package/lib/ps/isWin.d.mts +0 -3
  234. package/lib/ps/table-parser.d.mts +0 -3
  235. package/lib/submodule-install.d.mts +0 -121
  236. package/lib/submodule-install.d.ts +0 -121
  237. package/lib/utils.d.mts +0 -40
  238. package/lib/utils.js +0 -181
  239. package/lib/yarn-reinstall.d.mts +0 -49
  240. package/lib/yarn-reinstall.d.ts +0 -49
  241. package/src/package-resolutions-updater.mjs +0 -325
  242. package/src/print-directory-tree.cjs +0 -234
  243. package/src/ps/index.js +0 -286
  244. package/src/yarn-reinstall.cjs +0 -49
  245. /package/{bin → binaries}/nodekill +0 -0
  246. /package/{bin → binaries}/nodekill.cmd +0 -0
  247. /package/lib/{binary-collections-config.d.ts → binary-collections-config.d.cts} +0 -0
  248. /package/lib/{git-purge.d.ts → changelog.d.cts} +0 -0
  249. /package/lib/{git-diff.d.cts → npm-run-series.d.cts} +0 -0
  250. /package/lib/{utils.d.ts → utils/index.d.cts} +0 -0
@@ -3,33 +3,31 @@
3
3
  * @param {string} gitattributesPath - Path to .gitattributes file
4
4
  * @returns {Array} Array of parsed rules
5
5
  */
6
- declare function parseGitAttributes(gitattributesPath: string): any[];
6
+ export function parseGitAttributes(gitattributesPath: string): any[];
7
7
  /**
8
8
  * Check if two patterns conflict (same or overlapping file patterns)
9
9
  * @param {string} pattern1 - First pattern
10
10
  * @param {string} pattern2 - Second pattern
11
11
  * @returns {boolean} True if patterns conflict
12
12
  */
13
- declare function patternsConflict(pattern1: string, pattern2: string): boolean;
13
+ export function patternsConflict(pattern1: string, pattern2: string): boolean;
14
14
  /**
15
15
  * Merge existing rules with desired rules, detecting conflicts
16
16
  * @param {Array} existingRules - Parsed existing rules
17
17
  * @param {Array} desiredRules - Desired rules to add
18
18
  * @returns {Object} Result with mergedRules, conflicts, and changes
19
19
  */
20
- declare function mergeGitAttributeRules(existingRules: any[], desiredRules: any[]): any;
20
+ export function mergeGitAttributeRules(existingRules: any[], desiredRules: any[]): any;
21
21
  /**
22
22
  * Format merged rules back into .gitattributes content
23
23
  * @param {Array} rules - Merged rules array
24
24
  * @returns {string} Formatted .gitattributes content
25
25
  */
26
- declare function formatGitAttributes(rules: any[]): string;
26
+ export function formatGitAttributes(rules: any[]): string;
27
27
  /**
28
28
  * Update .gitattributes file with new rules, handling conflicts intelligently
29
29
  * @param {string} gitattributesPath - Path to .gitattributes file
30
30
  * @param {Array} desiredRules - Array of desired rules to add/merge
31
31
  * @returns {Object} Result with success status, conflicts, and changes
32
32
  */
33
- declare function updateGitAttributes(gitattributesPath: string, desiredRules: any[]): any;
34
-
35
- export { formatGitAttributes, mergeGitAttributeRules, parseGitAttributes, patternsConflict, updateGitAttributes };
33
+ export function updateGitAttributes(gitattributesPath: string, desiredRules: any[]): any;
@@ -1,6 +1,6 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
2
  import {
3
3
  require_gitattributes
4
- } from "../chunk-JGR2NW6D.mjs";
5
- import "../chunk-AASHBCRW.mjs";
4
+ } from "../chunk-PDSXF5HY.mjs";
5
+ import "../chunk-QQ4A6DLD.mjs";
6
6
  export default require_gitattributes();
@@ -1,74 +1,307 @@
1
- "use strict";
2
- const path = require("upath");
3
- const fs = require("fs");
4
- const { runGitCommand } = require("./utils.cjs");
5
- const { updateGitAttributes } = require("./gitattributes.js");
6
- /**
7
- * Force LF line endings configuration
8
- * - Sets core.autocrlf = false
9
- * - Sets core.eol = lf
10
- * - Creates/updates .gitattributes with proper line ending rules
11
- */
12
- function forceLfLineEndings() {
13
- console.log("\n=== Configuring LF Line Endings ===");
14
- // Force LF line endings
15
- runGitCommand(["config", "core.autocrlf", "false"], "Disable automatic CRLF conversion");
16
- runGitCommand(["config", "core.eol", "lf"], "Set end-of-line to LF");
17
- // Create or update .gitattributes
18
- const gitattributesPath = path.join(process.cwd(), ".gitattributes");
19
- // Always ensure the universal LF rule is present, even if file exists
20
- if (fs.existsSync(gitattributesPath)) {
21
- let content = fs.readFileSync(gitattributesPath, "utf8");
22
- // Match * text=auto eol=lf with any whitespace (space or tab) between tokens
23
- if (!/^\*\s+text=auto\s+eol=lf/m.test(content)) {
24
- content = `* text=auto eol=lf\n` + content;
25
- fs.writeFileSync(gitattributesPath, content);
1
+ var __getOwnPropNames = Object.getOwnPropertyNames;
2
+ var __esm = (fn, res) => function __init() {
3
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
4
+ };
5
+ var __commonJS = (cb, mod) => function __require() {
6
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
7
+ };
8
+
9
+ // node_modules/tsup/assets/cjs_shims.js
10
+ var init_cjs_shims = __esm({
11
+ "node_modules/tsup/assets/cjs_shims.js"() {
12
+ }
13
+ });
14
+
15
+ // src/git/utils.cjs
16
+ var require_utils = __commonJS({
17
+ "src/git/utils.cjs"(exports2, module2) {
18
+ init_cjs_shims();
19
+ var { execSync, spawnSync } = require("child_process");
20
+ function runGitCommand2(args, description) {
21
+ try {
22
+ console.log(`[i] ${description}`);
23
+ const result = spawnSync("git", args, { encoding: "utf-8" });
24
+ if (result.status !== 0) {
25
+ console.error(`[\u2717] Failed: ${description}`);
26
+ console.error(`Error: ${result.stderr || result.stdout}`);
27
+ return false;
28
+ }
29
+ console.log(`[\u2713] ${description}`);
30
+ return true;
31
+ } catch (error) {
32
+ console.error(`[\u2717] Failed: ${description}`);
33
+ console.error(`Error: ${error.message}`);
34
+ return false;
35
+ }
36
+ }
37
+ function isGitRepository(cwd) {
38
+ const dir = typeof cwd === "string" ? cwd : process.cwd();
39
+ try {
40
+ execSync("git rev-parse --git-dir", { stdio: "pipe", cwd: dir });
41
+ return true;
42
+ } catch {
43
+ return false;
44
+ }
45
+ }
46
+ function runGitCommandOutput(args, description) {
47
+ try {
48
+ console.log(`[i] ${description}`);
49
+ const result = spawnSync("git", args, { encoding: "utf-8" });
50
+ if (result.status !== 0) {
51
+ console.error(`[\u2717] Failed: ${description}`);
52
+ console.error(`Error: ${result.stderr || result.stdout}`);
53
+ return null;
54
+ }
55
+ console.log(`[\u2713] ${description}`);
56
+ return result.stdout.trim();
57
+ } catch (error) {
58
+ console.error(`[\u2717] Failed: ${description}`);
59
+ console.error(`Error: ${error.message}`);
60
+ return null;
61
+ }
62
+ }
63
+ module2.exports = {
64
+ runGitCommand: runGitCommand2,
65
+ runGitCommandOutput,
66
+ isGitRepository
67
+ };
68
+ }
69
+ });
70
+
71
+ // src/git/gitattributes.cjs
72
+ var require_gitattributes = __commonJS({
73
+ "src/git/gitattributes.cjs"(exports2, module2) {
74
+ init_cjs_shims();
75
+ var fs2 = require("fs");
76
+ function parseGitAttributes(gitattributesPath) {
77
+ const rules = [];
78
+ if (!fs2.existsSync(gitattributesPath)) {
79
+ return rules;
80
+ }
81
+ const content = fs2.readFileSync(gitattributesPath, "utf8");
82
+ const lines = content.split("\n");
83
+ lines.forEach((line, index) => {
84
+ const trimmedLine = line.trim();
85
+ if (!trimmedLine || trimmedLine.startsWith("#")) {
86
+ rules.push({
87
+ type: trimmedLine.startsWith("#") ? "comment" : "empty",
88
+ content: line,
89
+ lineNumber: index + 1
90
+ });
91
+ return;
92
+ }
93
+ const parts = trimmedLine.split(/\s+/);
94
+ if (parts.length >= 2) {
95
+ const pattern = parts[0];
96
+ const attributes = parts.slice(1).join(" ");
97
+ rules.push({
98
+ type: "rule",
99
+ pattern,
100
+ attributes,
101
+ content: line,
102
+ lineNumber: index + 1
103
+ });
104
+ } else {
105
+ rules.push({
106
+ type: "invalid",
107
+ content: line,
108
+ lineNumber: index + 1
109
+ });
26
110
  }
111
+ });
112
+ return rules;
27
113
  }
28
- // Define desired rules with priorities
29
- const desiredRules = [
30
- { pattern: "*", attributes: "text=auto eol=lf", priority: 1 },
31
- {
32
- pattern: "*.{cmd,bat,ps1,sh,cmd1,cmd2,bat1,bat2,vbs}",
33
- attributes: "text eol=crlf",
34
- priority: 2
35
- },
36
- {
37
- pattern: "*.{png,jpg,jpeg,gif,ico,svg,bmp,webp,avif,tiff,tif,psd,ai,eps,raw}",
38
- attributes: "binary",
39
- priority: 3
40
- },
41
- {
42
- pattern: "*.{zip,tar,gz,7z,rar,exe,dll,so,bin,jar,war,ear,apk,msi,deb,rpm,iso,img,dmg,pdf,mp3,mp4,mov,avi,mkv,flv,wmv,ogg,webm,wav,aac,m4a,otf,ttf,woff,woff2,eot}",
43
- attributes: "binary",
44
- priority: 3
114
+ function patternsConflict(pattern1, pattern2) {
115
+ if (pattern1 === pattern2) {
116
+ return true;
117
+ }
118
+ if (pattern1 === "*" || pattern2 === "*") {
119
+ return pattern1 !== pattern2;
120
+ }
121
+ const normalize = (p) => p.replace(/\{[^}]+\}/g, "*").replace(/\*+/g, "*");
122
+ const norm1 = normalize(pattern1);
123
+ const norm2 = normalize(pattern2);
124
+ return norm1 === norm2;
125
+ }
126
+ function mergeGitAttributeRules(existingRules, desiredRules) {
127
+ let mergedRules;
128
+ if (existingRules.length === 0) {
129
+ mergedRules = desiredRules.map((desired, idx) => ({
130
+ type: "rule",
131
+ pattern: desired.pattern,
132
+ attributes: desired.attributes,
133
+ content: `${desired.pattern} ${desired.attributes}`,
134
+ lineNumber: idx + 1,
135
+ added: true
136
+ }));
137
+ return {
138
+ mergedRules,
139
+ conflicts: [],
140
+ changes: desiredRules.map((rule) => ({ action: "added", pattern: rule.pattern, attributes: rule.attributes }))
141
+ };
142
+ } else {
143
+ mergedRules = [...existingRules];
144
+ }
145
+ const conflicts = [];
146
+ const changes = [];
147
+ desiredRules.forEach((desired) => {
148
+ const existingIdx = mergedRules.findIndex((r) => r.type === "rule" && r.pattern === desired.pattern);
149
+ if (existingIdx !== -1) {
150
+ const existing = mergedRules[existingIdx];
151
+ if (existing.attributes === desired.attributes) {
152
+ conflicts.push({
153
+ pattern: desired.pattern,
154
+ existing: existing.attributes,
155
+ proposed: desired.attributes,
156
+ action: "kept existing (identical)"
157
+ });
158
+ } else if (desired.priority > (existing.priority || 0)) {
159
+ mergedRules[existingIdx] = {
160
+ type: "rule",
161
+ pattern: desired.pattern,
162
+ attributes: desired.attributes,
163
+ content: `${desired.pattern} ${desired.attributes}`,
164
+ lineNumber: existing.lineNumber,
165
+ replaced: true
166
+ };
167
+ conflicts.push({
168
+ pattern: desired.pattern,
169
+ existing: existing.attributes,
170
+ proposed: desired.attributes,
171
+ action: "replaced (higher priority)"
172
+ });
173
+ changes.push({
174
+ action: "replaced",
175
+ pattern: desired.pattern,
176
+ attributes: desired.attributes,
177
+ oldAttributes: existing.attributes
178
+ });
179
+ } else {
180
+ conflicts.push({
181
+ pattern: desired.pattern,
182
+ existing: existing.attributes,
183
+ proposed: desired.attributes,
184
+ action: "kept existing (lower priority)"
185
+ });
186
+ }
187
+ } else {
188
+ mergedRules.push({
189
+ type: "rule",
190
+ pattern: desired.pattern,
191
+ attributes: desired.attributes,
192
+ content: `${desired.pattern} ${desired.attributes}`,
193
+ lineNumber: mergedRules.length + 1,
194
+ added: true
195
+ });
196
+ changes.push({
197
+ action: "added",
198
+ pattern: desired.pattern,
199
+ attributes: desired.attributes
200
+ });
45
201
  }
46
- ];
47
- // Update .gitattributes using the dedicated module
48
- const result = updateGitAttributes(gitattributesPath, desiredRules);
49
- // Report results
50
- if (result.error) {
51
- console.log(`[✗] Error updating .gitattributes: ${result.error}`);
52
- return;
202
+ });
203
+ return { mergedRules, conflicts, changes };
53
204
  }
54
- // Report conflicts if any
55
- if (result.conflicts.length > 0) {
56
- console.log("\n[!] Detected conflicts in .gitattributes:");
57
- result.conflicts.forEach((conflict) => {
58
- console.log(` ${conflict.pattern}: ${conflict.existing} -> ${conflict.proposed} (${conflict.action})`);
59
- });
205
+ function formatGitAttributes(rules) {
206
+ return rules.map((rule) => {
207
+ if (rule.type === "rule") {
208
+ return `${rule.pattern} ${rule.attributes}`;
209
+ }
210
+ return rule.content;
211
+ }).join("\n") + "\n";
60
212
  }
61
- // Report changes
62
- if (result.success) {
63
- console.log(`[✓] ${result.message}:`);
64
- result.changes.forEach((change) => {
65
- console.log(` ${change.action}: ${change.pattern} ${change.attributes}`);
66
- });
213
+ function updateGitAttributes2(gitattributesPath, desiredRules) {
214
+ try {
215
+ const existingRules = parseGitAttributes(gitattributesPath);
216
+ const { mergedRules, conflicts, changes } = mergeGitAttributeRules(existingRules, desiredRules);
217
+ let success = false;
218
+ if (changes.length > 0) {
219
+ const newContent = formatGitAttributes(mergedRules);
220
+ fs2.writeFileSync(gitattributesPath, newContent);
221
+ success = true;
222
+ }
223
+ return {
224
+ success,
225
+ conflicts,
226
+ changes,
227
+ message: success ? `Updated .gitattributes with ${changes.length} changes` : "No changes needed - all rules already present"
228
+ };
229
+ } catch (error) {
230
+ return {
231
+ success: false,
232
+ error: error.message,
233
+ conflicts: [],
234
+ changes: []
235
+ };
236
+ }
237
+ }
238
+ module2.exports = {
239
+ parseGitAttributes,
240
+ patternsConflict,
241
+ mergeGitAttributeRules,
242
+ formatGitAttributes,
243
+ updateGitAttributes: updateGitAttributes2
244
+ };
245
+ }
246
+ });
247
+
248
+ // src/git/line-endings.cjs
249
+ init_cjs_shims();
250
+ var path = require("upath");
251
+ var fs = require("fs");
252
+ var { runGitCommand } = require_utils();
253
+ var { updateGitAttributes } = require_gitattributes().default;
254
+ function forceLfLineEndings() {
255
+ console.log("\n=== Configuring LF Line Endings ===");
256
+ runGitCommand(["config", "core.autocrlf", "false"], "Disable automatic CRLF conversion");
257
+ runGitCommand(["config", "core.eol", "lf"], "Set end-of-line to LF");
258
+ const gitattributesPath = path.join(process.cwd(), ".gitattributes");
259
+ if (fs.existsSync(gitattributesPath)) {
260
+ let content = fs.readFileSync(gitattributesPath, "utf8");
261
+ if (!/^\*\s+text=auto\s+eol=lf/m.test(content)) {
262
+ content = `* text=auto eol=lf
263
+ ` + content;
264
+ fs.writeFileSync(gitattributesPath, content);
67
265
  }
68
- else {
69
- console.log(`[i] ${result.message}`);
266
+ }
267
+ const desiredRules = [
268
+ { pattern: "*", attributes: "text=auto eol=lf", priority: 1 },
269
+ {
270
+ pattern: "*.{cmd,bat,ps1,sh,cmd1,cmd2,bat1,bat2,vbs}",
271
+ attributes: "text eol=crlf",
272
+ priority: 2
273
+ },
274
+ {
275
+ pattern: "*.{png,jpg,jpeg,gif,ico,svg,bmp,webp,avif,tiff,tif,psd,ai,eps,raw}",
276
+ attributes: "binary",
277
+ priority: 3
278
+ },
279
+ {
280
+ pattern: "*.{zip,tar,gz,7z,rar,exe,dll,so,bin,jar,war,ear,apk,msi,deb,rpm,iso,img,dmg,pdf,mp3,mp4,mov,avi,mkv,flv,wmv,ogg,webm,wav,aac,m4a,otf,ttf,woff,woff2,eot}",
281
+ attributes: "binary",
282
+ priority: 3
70
283
  }
284
+ ];
285
+ const result = updateGitAttributes(gitattributesPath, desiredRules);
286
+ if (result.error) {
287
+ console.log(`[\u2717] Error updating .gitattributes: ${result.error}`);
288
+ return;
289
+ }
290
+ if (result.conflicts.length > 0) {
291
+ console.log("\n[!] Detected conflicts in .gitattributes:");
292
+ result.conflicts.forEach((conflict) => {
293
+ console.log(` ${conflict.pattern}: ${conflict.existing} -> ${conflict.proposed} (${conflict.action})`);
294
+ });
295
+ }
296
+ if (result.success) {
297
+ console.log(`[\u2713] ${result.message}:`);
298
+ result.changes.forEach((change) => {
299
+ console.log(` ${change.action}: ${change.pattern} ${change.attributes}`);
300
+ });
301
+ } else {
302
+ console.log(`[i] ${result.message}`);
303
+ }
71
304
  }
72
305
  module.exports = {
73
- forceLfLineEndings
306
+ forceLfLineEndings
74
307
  };
@@ -1,8 +1,8 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
2
  import {
3
3
  require_line_endings
4
- } from "../chunk-VVEZVNIV.mjs";
5
- import "../chunk-JGR2NW6D.mjs";
6
- import "../chunk-EGSSKVDH.mjs";
7
- import "../chunk-AASHBCRW.mjs";
4
+ } from "../chunk-O6SWBEOQ.mjs";
5
+ import "../chunk-PDSXF5HY.mjs";
6
+ import "../chunk-A3VUZEJK.mjs";
7
+ import "../chunk-QQ4A6DLD.mjs";
8
8
  export default require_line_endings();
@@ -1,42 +1,32 @@
1
- "use strict";
2
- const { execSync } = require("child_process");
3
- /**
4
- * Normalize line endings in existing tracked files
5
- * - Refreshes the git index to detect line ending changes
6
- * - Applies renormalization to all tracked files
7
- */
1
+ // src/git/normalize.cjs
2
+ var { execSync } = require("child_process");
8
3
  function normalizeLineEndings() {
9
- console.log("\n=== Normalizing Existing Files ===");
10
- try {
11
- // Check if there are any tracked files
12
- const result = execSync("git ls-files", { encoding: "utf-8", stdio: "pipe" });
13
- if (!result.trim()) {
14
- console.log("[i] No tracked files to normalize");
15
- return;
16
- }
17
- console.log("[i] Refreshing index to detect line ending changes...");
18
- execSync("git add --renormalize .", { stdio: "pipe" });
19
- // Check if there are changes after normalization
20
- try {
21
- const statusResult = execSync("git status --porcelain", { encoding: "utf-8", stdio: "pipe" });
22
- if (statusResult.trim()) {
23
- console.log("[✓] Line endings normalized for tracked files");
24
- console.log("[i] Files with updated line endings are now staged");
25
- console.log("[i] Run 'git status' to see the changes");
26
- }
27
- else {
28
- console.log("[✓] All files already have correct line endings");
29
- }
30
- }
31
- catch (_a) {
32
- console.log("[✓] Line ending normalization completed");
33
- }
4
+ console.log("\n=== Normalizing Existing Files ===");
5
+ try {
6
+ const result = execSync("git ls-files", { encoding: "utf-8", stdio: "pipe" });
7
+ if (!result.trim()) {
8
+ console.log("[i] No tracked files to normalize");
9
+ return;
34
10
  }
35
- catch (error) {
36
- console.error("[✗] Failed to normalize line endings");
37
- console.error(`Error: ${error.message}`);
11
+ console.log("[i] Refreshing index to detect line ending changes...");
12
+ execSync("git add --renormalize .", { stdio: "pipe" });
13
+ try {
14
+ const statusResult = execSync("git status --porcelain", { encoding: "utf-8", stdio: "pipe" });
15
+ if (statusResult.trim()) {
16
+ console.log("[\u2713] Line endings normalized for tracked files");
17
+ console.log("[i] Files with updated line endings are now staged");
18
+ console.log("[i] Run 'git status' to see the changes");
19
+ } else {
20
+ console.log("[\u2713] All files already have correct line endings");
21
+ }
22
+ } catch {
23
+ console.log("[\u2713] Line ending normalization completed");
38
24
  }
25
+ } catch (error) {
26
+ console.error("[\u2717] Failed to normalize line endings");
27
+ console.error(`Error: ${error.message}`);
28
+ }
39
29
  }
40
30
  module.exports = {
41
- normalizeLineEndings
31
+ normalizeLineEndings
42
32
  };
@@ -1,6 +1,6 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
2
  import {
3
3
  require_normalize
4
- } from "../chunk-YV7DO3YV.mjs";
5
- import "../chunk-AASHBCRW.mjs";
4
+ } from "../chunk-HLGOWBEO.mjs";
5
+ import "../chunk-QQ4A6DLD.mjs";
6
6
  export default require_normalize();
@@ -1,15 +1,81 @@
1
- "use strict";
2
- const { runGitCommand } = require("./utils.cjs");
3
- /**
4
- * Configure git to ignore file permission changes
5
- * - Sets core.filemode = false
6
- * - Sets diff.ignoreSubmodules = dirty
7
- */
1
+ var __getOwnPropNames = Object.getOwnPropertyNames;
2
+ var __esm = (fn, res) => function __init() {
3
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
4
+ };
5
+ var __commonJS = (cb, mod) => function __require() {
6
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
7
+ };
8
+
9
+ // node_modules/tsup/assets/cjs_shims.js
10
+ var init_cjs_shims = __esm({
11
+ "node_modules/tsup/assets/cjs_shims.js"() {
12
+ }
13
+ });
14
+
15
+ // src/git/utils.cjs
16
+ var require_utils = __commonJS({
17
+ "src/git/utils.cjs"(exports2, module2) {
18
+ init_cjs_shims();
19
+ var { execSync, spawnSync } = require("child_process");
20
+ function runGitCommand2(args, description) {
21
+ try {
22
+ console.log(`[i] ${description}`);
23
+ const result = spawnSync("git", args, { encoding: "utf-8" });
24
+ if (result.status !== 0) {
25
+ console.error(`[\u2717] Failed: ${description}`);
26
+ console.error(`Error: ${result.stderr || result.stdout}`);
27
+ return false;
28
+ }
29
+ console.log(`[\u2713] ${description}`);
30
+ return true;
31
+ } catch (error) {
32
+ console.error(`[\u2717] Failed: ${description}`);
33
+ console.error(`Error: ${error.message}`);
34
+ return false;
35
+ }
36
+ }
37
+ function isGitRepository(cwd) {
38
+ const dir = typeof cwd === "string" ? cwd : process.cwd();
39
+ try {
40
+ execSync("git rev-parse --git-dir", { stdio: "pipe", cwd: dir });
41
+ return true;
42
+ } catch {
43
+ return false;
44
+ }
45
+ }
46
+ function runGitCommandOutput(args, description) {
47
+ try {
48
+ console.log(`[i] ${description}`);
49
+ const result = spawnSync("git", args, { encoding: "utf-8" });
50
+ if (result.status !== 0) {
51
+ console.error(`[\u2717] Failed: ${description}`);
52
+ console.error(`Error: ${result.stderr || result.stdout}`);
53
+ return null;
54
+ }
55
+ console.log(`[\u2713] ${description}`);
56
+ return result.stdout.trim();
57
+ } catch (error) {
58
+ console.error(`[\u2717] Failed: ${description}`);
59
+ console.error(`Error: ${error.message}`);
60
+ return null;
61
+ }
62
+ }
63
+ module2.exports = {
64
+ runGitCommand: runGitCommand2,
65
+ runGitCommandOutput,
66
+ isGitRepository
67
+ };
68
+ }
69
+ });
70
+
71
+ // src/git/permissions.cjs
72
+ init_cjs_shims();
73
+ var { runGitCommand } = require_utils();
8
74
  function ignoreFilePermissions() {
9
- console.log("\n=== Configuring File Permissions ===");
10
- runGitCommand(["config", "core.filemode", "false"], "Ignore file permission changes");
11
- runGitCommand(["config", "diff.ignoreSubmodules", "dirty"], "Ignore submodule permission changes");
75
+ console.log("\n=== Configuring File Permissions ===");
76
+ runGitCommand(["config", "core.filemode", "false"], "Ignore file permission changes");
77
+ runGitCommand(["config", "diff.ignoreSubmodules", "dirty"], "Ignore submodule permission changes");
12
78
  }
13
79
  module.exports = {
14
- ignoreFilePermissions
80
+ ignoreFilePermissions
15
81
  };
@@ -1,7 +1,7 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
2
  import {
3
3
  require_permissions
4
- } from "../chunk-ZYAQRPUL.mjs";
5
- import "../chunk-EGSSKVDH.mjs";
6
- import "../chunk-AASHBCRW.mjs";
4
+ } from "../chunk-7YD7IPFF.mjs";
5
+ import "../chunk-A3VUZEJK.mjs";
6
+ import "../chunk-QQ4A6DLD.mjs";
7
7
  export default require_permissions();