binary-collections 2.0.9 → 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.
- package/binaries/binary-executor.cjs +43 -0
- package/{bin → binaries}/clean-nodemodule +0 -0
- package/binaries/clean-nodemodule.cjs +43 -0
- package/binaries/clean-nodemodule.cmd +4 -0
- package/{bin → binaries}/clean-nodemodules +0 -0
- package/binaries/clean-nodemodules.cjs +43 -0
- package/binaries/clean-nodemodules.cmd +5 -0
- package/{bin → binaries}/dev +0 -0
- package/binaries/dev.cjs +43 -0
- package/{bin → binaries}/empty +0 -0
- package/binaries/empty.cjs +43 -0
- package/{bin → binaries}/git-reduce-size +0 -0
- package/binaries/git-reduce-size.cjs +43 -0
- package/binaries/javakill.cjs +43 -0
- package/{bin → binaries}/javakill.cmd +0 -0
- package/{bin → binaries}/kill-process +0 -0
- package/binaries/kill-process.cjs +43 -0
- package/binaries/nodekill.cjs +43 -0
- package/{bin → binaries}/nodekill.ps1 +0 -0
- package/{bin → binaries}/prod +0 -0
- package/binaries/prod.cjs +43 -0
- package/{bin → binaries}/rmfind +0 -0
- package/binaries/rmfind.cjs +43 -0
- package/{bin → binaries}/rmx +0 -0
- package/binaries/rmx.cjs +43 -0
- package/{bin → binaries}/submodule-token +0 -0
- package/binaries/submodule-token.cjs +43 -0
- package/docs-src/clean-github-actions-caches.md +26 -0
- package/docs-src/free-chatgpt.md +26 -0
- package/lib/binary-collections-config.cjs +3 -2
- package/lib/binary-collections-config.mjs +2 -2
- package/lib/binary-collections.cjs +452 -105
- package/lib/binary-collections.mjs +131 -84
- package/lib/changelog.cjs +3 -3
- package/lib/changelog.mjs +177 -171
- package/lib/chunk-4EWQC6GZ.mjs +382 -0
- package/lib/chunk-4ZI7BQKQ.mjs +381 -0
- package/lib/chunk-5J2BEPY5.mjs +83 -0
- package/lib/{chunk-4BYBVEYC.mjs → chunk-66PAU5PS.mjs} +5 -4
- package/lib/chunk-6HHJRKFB.mjs +59 -0
- package/lib/chunk-6S4NXESK.mjs +26 -0
- package/lib/{chunk-ZYAQRPUL.mjs → chunk-7YD7IPFF.mjs} +2 -2
- package/lib/{chunk-SH3L6HHV.mjs → chunk-A2JQXI5Z.mjs} +2 -2
- package/lib/{chunk-EGSSKVDH.mjs → chunk-A3VUZEJK.mjs} +1 -1
- package/lib/chunk-AGZYRDC2.mjs +323 -0
- package/lib/{chunk-VVEZVNIV.mjs → chunk-AI4CVPJ7.mjs} +6 -6
- package/lib/chunk-BDCHCWHD.mjs +136 -0
- package/lib/chunk-BEZKJ25G.mjs +140 -0
- package/lib/chunk-DI5MDPSN.mjs +386 -0
- package/lib/{chunk-ONIBBBQ3.mjs → chunk-E6FDDAOO.mjs} +4 -3
- package/lib/chunk-FKI7IEB5.mjs +172 -0
- package/lib/chunk-GJTGHXRA.mjs +356 -0
- package/lib/{chunk-YV7DO3YV.mjs → chunk-HLGOWBEO.mjs} +1 -1
- package/lib/chunk-HMRMTYZM.mjs +40 -0
- package/lib/chunk-HN52G2YL.mjs +305 -0
- package/lib/chunk-HO6GHCOB.mjs +385 -0
- package/lib/chunk-LEM5OMRP.mjs +384 -0
- package/lib/{chunk-YX5U7XDR.mjs → chunk-M3YIYRHT.mjs} +6 -5
- package/lib/chunk-O6SWBEOQ.mjs +81 -0
- package/lib/{chunk-JGR2NW6D.mjs → chunk-PDSXF5HY.mjs} +3 -3
- package/lib/{chunk-AASHBCRW.mjs → chunk-QQ4A6DLD.mjs} +8 -0
- package/lib/chunk-RCP7DHVY.mjs +190 -0
- package/lib/chunk-SBNDSKG5.mjs +136 -0
- package/lib/chunk-U6SO4QEV.mjs +320 -0
- package/lib/{chunk-APBWENF6.mjs → chunk-V3N3JEUF.mjs} +3 -3
- package/lib/chunk-XD6BJK6Q.mjs +351 -0
- package/lib/chunk-XVBFFVCJ.mjs +209 -0
- package/lib/chunk-YXSFGA2D.mjs +383 -0
- package/lib/clean-github-actions-caches.cjs +243 -148
- package/lib/clean-github-actions-caches.mjs +3 -2
- package/lib/del-gradle.cjs +2 -2
- package/lib/del-gradle.js +1 -1
- package/lib/del-gradle.mjs +2 -2
- package/lib/del-node-modules.cjs +2 -2
- package/lib/del-node-modules.js +1 -1
- package/lib/del-node-modules.mjs +2 -2
- package/lib/del-ps.cjs +29 -8
- package/lib/del-ps.js +2 -2
- package/lib/del-ps.mjs +7 -5
- package/lib/del-yarn-caches.cjs +26 -5
- package/lib/del-yarn-caches.js +38 -3
- package/lib/del-yarn-caches.mjs +6 -6
- package/lib/find-node-modules-cli.cjs +5 -4
- package/lib/find-node-modules-cli.js +1 -1
- package/lib/find-node-modules-cli.mjs +2 -2
- package/lib/find-node-modules.cjs +4 -3
- package/lib/{find-node-modules.d.ts → find-node-modules.d.cts} +1 -1
- package/lib/find-node-modules.mjs +2 -2
- package/lib/free-chatgpt.cjs +548 -0
- package/lib/free-chatgpt.js +51 -0
- package/lib/free-chatgpt.mjs +50 -0
- package/lib/git/gitattributes.cjs +1 -1
- package/lib/git/{gitattributes.d.mts → gitattributes.d.cts} +5 -7
- package/lib/git/gitattributes.mjs +2 -2
- package/lib/git/line-endings.cjs +297 -64
- package/lib/git/line-endings.mjs +4 -4
- package/lib/git/normalize.cjs +26 -36
- package/lib/git/normalize.mjs +2 -2
- package/lib/git/permissions.cjs +77 -11
- package/lib/git/permissions.mjs +3 -3
- package/lib/git/pull-strategy.cjs +76 -9
- package/lib/git/pull-strategy.mjs +3 -3
- package/lib/git/user-config.cjs +266 -83
- package/lib/git/user-config.mjs +4 -4
- package/lib/git/utils.cjs +40 -60
- package/lib/git/utils.mjs +2 -2
- package/lib/git-diff-cli.cjs +651 -0
- package/lib/git-diff-cli.d.ts +1 -0
- package/lib/git-diff-cli.js +15 -0
- package/lib/git-diff-cli.mjs +16 -0
- package/lib/git-diff.cjs +657 -58
- package/lib/git-diff.d.ts +38 -83
- package/lib/git-diff.js +152 -0
- package/lib/git-diff.mjs +23 -85
- package/lib/git-fix.cjs +685 -97
- package/lib/git-fix.mjs +14 -13
- package/lib/git-purge.cjs +3 -3
- package/lib/git-purge.d.cts +1 -0
- package/lib/git-purge.mjs +43 -37
- package/lib/index.cjs +7 -6
- package/lib/index.d.ts +1 -1
- package/lib/index.js +2 -5
- package/lib/index.mjs +4 -4
- package/lib/npm-run-series.cjs +3 -3
- package/lib/npm-run-series.mjs +42 -36
- package/lib/package-resolutions-updater.cjs +5 -5
- package/lib/package-resolutions-updater.mjs +266 -309
- package/lib/print-directory-tree.cjs +275 -210
- package/lib/print-directory-tree.mjs +2 -2
- package/lib/ps/connected-domain.cjs +25 -2
- package/lib/ps/connected-domain.d.ts +10 -2
- package/lib/ps/connected-domain.js +5 -2
- package/lib/ps/connected-domain.mjs +8 -4
- package/lib/ps/index.cjs +345 -322
- package/lib/ps/index.d.mjs +1 -1
- package/lib/ps/index.js +1 -1
- package/lib/ps/index.mjs +179 -182
- package/lib/ps/isWin.cjs +24 -1
- package/lib/ps/isWin.d.ts +1 -1
- package/lib/ps/isWin.js +3 -1
- package/lib/ps/isWin.mjs +8 -4
- package/lib/ps/table-parser.cjs +167 -159
- package/lib/ps/table-parser.d.ts +5 -0
- package/lib/ps/table-parser.js +10 -4
- package/lib/ps/table-parser.mjs +9 -5
- package/lib/remove-module.cjs +262 -0
- package/lib/remove-module.d.mts +1 -0
- package/lib/remove-module.mjs +111 -0
- package/lib/rmpath.cjs +274 -0
- package/lib/rmpath.d.mts +3 -0
- package/lib/rmpath.mjs +108 -0
- package/lib/submodule-install.cjs +264 -86
- package/lib/submodule-install.mjs +51 -3
- package/lib/submodule-remove-cli.cjs +103 -0
- package/lib/submodule-remove-cli.d.ts +1 -0
- package/lib/submodule-remove-cli.js +31 -0
- package/lib/submodule-remove-cli.mjs +28 -0
- package/lib/submodule-remove.cjs +43 -0
- package/lib/submodule-remove.d.cts +2 -0
- package/lib/submodule-remove.mjs +6 -0
- package/lib/utils/chatgpt.cjs +383 -0
- package/lib/utils/chatgpt.d.ts +31 -0
- package/lib/utils/chatgpt.js +541 -0
- package/lib/utils/chatgpt.mjs +8 -0
- package/lib/{utils.cjs → utils/index.cjs} +1 -1
- package/lib/{utils.mjs → utils/index.mjs} +2 -2
- package/lib/yarn-reinstall.cjs +172 -38
- package/lib/yarn-reinstall.mjs +2 -2
- package/package.json +91 -71
- package/readme.md +43 -69
- package/releases/readme.md +36 -0
- package/test/README.md +101 -0
- package/test/package.json +2 -1
- package/test-project/readme.md +26 -0
- package/tmp/test-repo/README.md +35 -0
- package/tmp/test-repo/package.json +1 -1
- package/tmp/typedoc/readme.md +320 -0
- package/bin/bash-dummy +0 -56
- package/bin/bash-dummy.cmd +0 -25
- package/bin/dir-tree.cmd +0 -7
- package/bin/git-diff +0 -4
- package/bin/git-diff.cmd +0 -7
- package/bin/git-fix +0 -36
- package/bin/git-fix.cmd +0 -7
- package/bin/rmpath +0 -70
- package/bin/submodule-install.txt +0 -118
- package/bin/submodule-remove +0 -46
- package/bin/submodule.txt +0 -172
- package/lib/binary-collections-config.d.mts +0 -18
- package/lib/binary-collections-config.js +0 -39
- package/lib/binary-collections.d.mts +0 -137
- package/lib/binary-collections.d.ts +0 -137
- package/lib/changelog.d.mts +0 -2
- package/lib/changelog.js +0 -226
- package/lib/chunk-DPKAJKFO.mjs +0 -171
- package/lib/chunk-G3THLIDT.mjs +0 -200
- package/lib/chunk-W3ENOM53.mjs +0 -18
- package/lib/clean-github-actions-caches.d.mts +0 -169
- package/lib/clean-github-actions-caches.d.ts +0 -169
- package/lib/del-gradle.d.mts +0 -2
- package/lib/del-node-modules.d.mts +0 -2
- package/lib/del-ps.d.mts +0 -2
- package/lib/del-yarn-caches.d.mts +0 -2
- package/lib/find-node-modules-cli.d.mts +0 -1
- package/lib/find-node-modules.d.mts +0 -13
- package/lib/find-node-modules.js +0 -53
- package/lib/git/line-endings.d.mts +0 -83
- package/lib/git/line-endings.d.ts +0 -83
- package/lib/git/normalize.d.mts +0 -43
- package/lib/git/normalize.d.ts +0 -43
- package/lib/git/permissions.d.mts +0 -17
- package/lib/git/permissions.d.ts +0 -17
- package/lib/git/pull-strategy.d.mts +0 -15
- package/lib/git/pull-strategy.d.ts +0 -15
- package/lib/git/user-config.d.mts +0 -105
- package/lib/git/user-config.d.ts +0 -105
- package/lib/git/utils.d.mts +0 -69
- package/lib/git/utils.d.ts +0 -69
- package/lib/git-diff.d.mts +0 -84
- package/lib/git-fix.d.mts +0 -141
- package/lib/git-fix.d.ts +0 -141
- package/lib/git-purge.d.mts +0 -2
- package/lib/git-purge.js +0 -59
- package/lib/index.d.mts +0 -1
- package/lib/npm-run-series.d.mts +0 -1
- package/lib/npm-run-series.d.ts +0 -2
- package/lib/npm-run-series.js +0 -86
- package/lib/package-resolutions-updater.d.ts +0 -352
- package/lib/print-directory-tree.d.mts +0 -234
- package/lib/print-directory-tree.d.ts +0 -234
- package/lib/ps/connected-domain.d.mts +0 -3
- package/lib/ps/index.d.d.mts +0 -26
- package/lib/ps/index.d.d.ts +0 -26
- package/lib/ps/index.d.mts +0 -26
- package/lib/ps/isWin.d.mts +0 -3
- package/lib/ps/table-parser.d.mts +0 -3
- package/lib/submodule-install.d.mts +0 -121
- package/lib/submodule-install.d.ts +0 -121
- package/lib/utils.d.mts +0 -40
- package/lib/utils.js +0 -181
- package/lib/yarn-reinstall.d.mts +0 -49
- package/lib/yarn-reinstall.d.ts +0 -49
- package/src/package-resolutions-updater.mjs +0 -350
- package/src/print-directory-tree.cjs +0 -234
- package/src/ps/index.js +0 -286
- package/src/yarn-reinstall.cjs +0 -49
- /package/{bin → binaries}/nodekill +0 -0
- /package/{bin → binaries}/nodekill.cmd +0 -0
- /package/lib/{binary-collections-config.d.ts → binary-collections-config.d.cts} +0 -0
- /package/lib/{changelog.d.ts → changelog.d.cts} +0 -0
- /package/lib/{git-purge.d.ts → free-chatgpt.d.ts} +0 -0
- /package/lib/{git-diff.d.cts → npm-run-series.d.cts} +0 -0
- /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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-PDSXF5HY.mjs";
|
|
5
|
+
import "../chunk-QQ4A6DLD.mjs";
|
|
6
6
|
export default require_gitattributes();
|
package/lib/git/line-endings.cjs
CHANGED
|
@@ -1,74 +1,307 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
-
|
|
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
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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
|
-
|
|
69
|
-
|
|
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
|
-
|
|
306
|
+
forceLfLineEndings
|
|
74
307
|
};
|
package/lib/git/line-endings.mjs
CHANGED
|
@@ -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-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
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();
|
package/lib/git/normalize.cjs
CHANGED
|
@@ -1,42 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
|
|
31
|
+
normalizeLineEndings
|
|
42
32
|
};
|
package/lib/git/normalize.mjs
CHANGED
|
@@ -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-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-HLGOWBEO.mjs";
|
|
5
|
+
import "../chunk-QQ4A6DLD.mjs";
|
|
6
6
|
export default require_normalize();
|
package/lib/git/permissions.cjs
CHANGED
|
@@ -1,15 +1,81 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
80
|
+
ignoreFilePermissions
|
|
15
81
|
};
|
package/lib/git/permissions.mjs
CHANGED
|
@@ -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-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-7YD7IPFF.mjs";
|
|
5
|
+
import "../chunk-A3VUZEJK.mjs";
|
|
6
|
+
import "../chunk-QQ4A6DLD.mjs";
|
|
7
7
|
export default require_permissions();
|