binary-collections 2.0.10 → 2.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.puppeterrc.cjs +25 -0
- package/binaries/binary-executor.cjs +138 -3
- package/binaries/clean-nodemodule.cjs +138 -3
- package/binaries/clean-nodemodules.cjs +138 -3
- package/binaries/dev.cjs +138 -3
- package/binaries/empty.cjs +138 -3
- package/binaries/git-reduce-size.cjs +138 -3
- package/binaries/javakill.cjs +138 -3
- package/binaries/kill-night-crows.bat +7 -0
- package/binaries/kill-night-crows.ps1 +172 -0
- package/binaries/kill-process.cjs +138 -3
- package/binaries/nodekill.cjs +138 -3
- package/binaries/prod.cjs +138 -3
- package/binaries/py +111 -0
- package/binaries/py.cjs +178 -0
- package/binaries/py.cmd +49 -0
- package/binaries/rmfind.cjs +138 -3
- package/binaries/rmx.cjs +138 -3
- package/binaries/submodule-token.cjs +138 -3
- package/binaries/test-cjs +10 -0
- package/binaries/test-cjs.cjs +178 -0
- package/binaries/test-cjs.cmd +11 -0
- package/binaries/yarn-clean +32 -0
- package/binaries/yarn-clean.cjs +178 -0
- package/binaries/yarn-clean.cmd +30 -0
- package/binaries/yarn-clean.py +148 -0
- package/lib/binary-collections-config.cjs +1 -1
- package/lib/binary-collections-config.mjs +1 -1
- package/lib/binary-collections.cjs +167 -106
- package/lib/binary-collections.mjs +108 -94
- package/lib/changelog.cjs +61 -13
- package/lib/changelog.mjs +1 -1
- package/lib/{chunk-AI4CVPJ7.mjs → chunk-2CBJCW7E.mjs} +4 -4
- package/lib/chunk-34IQDTLZ.mjs +27 -0
- package/lib/chunk-3HFFECCI.mjs +27 -0
- package/lib/{chunk-SBNDSKG5.mjs → chunk-4UHL4WVN.mjs} +1 -1
- package/lib/chunk-7XTEJHOE.mjs +193 -0
- package/lib/chunk-AJDD5DZM.mjs +109 -0
- package/lib/chunk-BZWVHODJ.mjs +62 -0
- package/lib/{chunk-BEZKJ25G.mjs → chunk-FCDQGYBF.mjs} +5 -9
- package/lib/chunk-GEYA2USY.mjs +207 -0
- package/lib/chunk-ID2WBTE2.mjs +80 -0
- package/lib/chunk-JXFOHKDM.mjs +239 -0
- package/lib/{chunk-DI5MDPSN.mjs → chunk-N436BNBK.mjs} +192 -64
- package/lib/chunk-NCXAP7AA.mjs +31 -0
- package/lib/chunk-PDN26I7O.mjs +188 -0
- package/lib/{chunk-E6FDDAOO.mjs → chunk-RWLXRTYP.mjs} +1 -1
- package/lib/{chunk-BDCHCWHD.mjs → chunk-TOIVAQF7.mjs} +4 -4
- package/lib/chunk-V5SKYJUB.mjs +136 -0
- package/lib/{chunk-HMRMTYZM.mjs → chunk-WSRETQCA.mjs} +21 -2
- package/lib/chunk-XA3SNBPA.mjs +184 -0
- package/lib/chunk-YYLIQQKF.mjs +31 -0
- package/lib/{chunk-V3N3JEUF.mjs → chunk-Z6JLYU2J.mjs} +60 -13
- package/lib/{chunk-O6SWBEOQ.mjs → chunk-ZDMWBSYF.mjs} +2 -2
- package/lib/clean-github-actions-caches.cjs +63 -15
- package/lib/clean-github-actions-caches.mjs +3 -3
- package/lib/del-gradle.cjs +61 -13
- package/lib/del-gradle.js +1 -0
- package/lib/del-gradle.mjs +1 -1
- package/lib/del-node-modules.cjs +143 -148
- package/lib/del-node-modules.js +210 -14
- package/lib/del-node-modules.mjs +148 -17
- package/lib/del-ps.cjs +61 -13
- package/lib/del-ps.js +1 -0
- package/lib/del-ps.mjs +1 -1
- package/lib/del-yarn-caches.cjs +61 -13
- package/lib/del-yarn-caches.mjs +1 -1
- package/lib/find-node-modules-cli.js +1 -0
- package/lib/free-chatgpt.cjs +253 -47
- package/lib/free-chatgpt.mjs +2 -2
- package/lib/git/gitattributes.cjs +1 -0
- package/lib/git/gitattributes.d.cts +7 -2
- package/lib/git/gitattributes.mjs +1 -1
- package/lib/git/line-endings.cjs +2 -1
- package/lib/git/line-endings.mjs +2 -2
- package/lib/git/undo-commit-cli.cjs +110 -0
- package/lib/git/undo-commit-cli.d.ts +1 -0
- package/lib/git/undo-commit-cli.js +4 -0
- package/lib/git/undo-commit-cli.mjs +14 -0
- package/lib/git/undo-commit.cjs +81 -0
- package/lib/git/undo-commit.d.cts +1 -0
- package/lib/git/undo-commit.mjs +7 -0
- package/lib/git/undo-staged-cli.cjs +110 -0
- package/lib/git/undo-staged-cli.d.ts +1 -0
- package/lib/git/undo-staged-cli.js +4 -0
- package/lib/git/undo-staged-cli.mjs +14 -0
- package/lib/git/undo-staged.cjs +81 -0
- package/lib/git/undo-staged.d.cts +1 -0
- package/lib/git/undo-staged.mjs +7 -0
- package/lib/git/user-config.cjs +61 -14
- package/lib/git/user-config.mjs +2 -2
- package/lib/git-diff-cli.cjs +255 -49
- package/lib/git-diff-cli.d.ts +1 -0
- package/lib/git-diff-cli.js +1 -0
- package/lib/git-diff-cli.mjs +5 -4
- package/lib/git-diff.cjs +254 -49
- package/lib/git-diff.mjs +4 -4
- package/lib/git-fix.cjs +64 -16
- package/lib/git-fix.mjs +10 -10
- package/lib/git-purge.cjs +61 -13
- package/lib/git-purge.mjs +1 -1
- package/lib/kill-night-crows.cjs +87 -0
- package/lib/kill-night-crows.d.mts +1 -0
- package/lib/kill-night-crows.mjs +65 -0
- package/lib/npm-run-series.cjs +60 -13
- package/lib/npm-run-series.mjs +1 -1
- package/lib/package-resolutions-updater-cli.cjs +560 -0
- package/lib/package-resolutions-updater-cli.d.mts +1 -0
- package/lib/package-resolutions-updater-cli.mjs +124 -0
- package/lib/package-resolutions-updater.cjs +174 -154
- package/lib/package-resolutions-updater.d.mts +32 -1
- package/lib/package-resolutions-updater.mjs +16 -294
- package/lib/php-cs-fixer-staged.cjs +105 -0
- package/lib/php-cs-fixer-staged.d.cts +2 -0
- package/lib/php-cs-fixer-staged.mjs +117 -0
- package/lib/print-directory-tree.cjs +62 -14
- package/lib/print-directory-tree.mjs +2 -2
- package/lib/ps/connected-domain.d.ts +1 -1
- package/lib/ps/index.js +1 -0
- package/lib/remove-module.cjs +61 -13
- package/lib/remove-module.mjs +1 -1
- package/lib/rmpath.cjs +63 -15
- package/lib/rmpath.mjs +2 -2
- package/lib/submodule-install.cjs +62 -15
- package/lib/submodule-install.mjs +3 -3
- package/lib/submodule-remove-cli.cjs +5 -1
- package/lib/submodule-remove-cli.mjs +1 -1
- package/lib/submodule-remove.cjs +4 -1
- package/lib/submodule-remove.mjs +1 -1
- package/lib/utils/chatgpt.cjs +192 -34
- package/lib/utils/chatgpt.js +210 -43
- package/lib/utils/chatgpt.mjs +1 -1
- package/lib/utils/findEnvFiles.cjs +107 -0
- package/lib/utils/findEnvFiles.d.ts +8 -0
- package/lib/utils/findEnvFiles.js +121 -0
- package/lib/utils/findEnvFiles.mjs +8 -0
- package/lib/utils/findWorkspaceRoot.cjs +70 -0
- package/lib/utils/findWorkspaceRoot.d.ts +9 -0
- package/lib/utils/findWorkspaceRoot.js +57 -0
- package/lib/utils/findWorkspaceRoot.mjs +40 -0
- package/lib/utils/index.cjs +60 -13
- package/lib/utils/index.mjs +1 -1
- package/lib/utils/isGithubTokenValid.cjs +64 -0
- package/lib/utils/isGithubTokenValid.d.ts +7 -0
- package/lib/utils/isGithubTokenValid.js +48 -0
- package/lib/utils/isGithubTokenValid.mjs +36 -0
- package/lib/yarn-reinstall.cjs +61 -13
- package/lib/yarn-reinstall.mjs +1 -1
- package/package.json +107 -93
- package/readme.md +33 -34
- package/releases/readme.md +1 -1
- package/requirements.txt +1 -0
- package/lib/chunk-4EWQC6GZ.mjs +0 -382
- package/lib/chunk-4ZI7BQKQ.mjs +0 -381
- package/lib/chunk-5J2BEPY5.mjs +0 -83
- package/lib/chunk-AGZYRDC2.mjs +0 -323
- package/lib/chunk-HN52G2YL.mjs +0 -305
- package/lib/chunk-HO6GHCOB.mjs +0 -385
- package/lib/chunk-LEM5OMRP.mjs +0 -384
- package/lib/chunk-RCP7DHVY.mjs +0 -190
- package/lib/chunk-U6SO4QEV.mjs +0 -320
- package/lib/chunk-XD6BJK6Q.mjs +0 -351
- package/lib/chunk-YXSFGA2D.mjs +0 -383
- package/lib/git/gitattributes.d.ts +0 -33
- package/lib/git/gitattributes.js +0 -223
|
@@ -60,31 +60,78 @@ var require_utils = __commonJS({
|
|
|
60
60
|
}
|
|
61
61
|
module.exports.getArgs = getArgs;
|
|
62
62
|
function del(fullPath) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
63
|
+
try {
|
|
64
|
+
if (!fs.existsSync(fullPath)) return;
|
|
65
|
+
const stat = fs.lstatSync(fullPath);
|
|
66
|
+
if (stat.isSymbolicLink()) {
|
|
67
|
+
try {
|
|
68
|
+
fs.unlinkSync(fullPath);
|
|
69
|
+
console.log("deleted symlink", fullPath);
|
|
70
|
+
} catch (e) {
|
|
71
|
+
console.log("failed delete symlink", fullPath, e && e.message);
|
|
72
|
+
}
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (stat.isDirectory()) {
|
|
76
|
+
const subdir = fs.readdirSync(fullPath).map((dirPath) => path.resolve(fullPath, dirPath));
|
|
77
|
+
for (let i = 0; i < subdir.length; i++) {
|
|
78
|
+
del(subdir[i]);
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
fs.rmdirSync(fullPath);
|
|
82
|
+
console.log("deleted", fullPath);
|
|
83
|
+
} catch (e) {
|
|
84
|
+
try {
|
|
85
|
+
fs.rmSync(fullPath, { recursive: true, force: true, retryDelay: 7e3 });
|
|
86
|
+
console.log("deleted", fullPath);
|
|
87
|
+
} catch (ee) {
|
|
88
|
+
console.log("failed delete", fullPath, ee && ee.message);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return;
|
|
67
92
|
}
|
|
68
|
-
} else {
|
|
69
93
|
try {
|
|
70
|
-
fs.
|
|
94
|
+
fs.unlinkSync(fullPath);
|
|
71
95
|
console.log("deleted", fullPath);
|
|
72
|
-
} catch (
|
|
73
|
-
|
|
96
|
+
} catch (e) {
|
|
97
|
+
try {
|
|
98
|
+
fs.rmSync(fullPath, { recursive: true, force: true, retryDelay: 7e3 });
|
|
99
|
+
console.log("deleted", fullPath);
|
|
100
|
+
} catch (ee) {
|
|
101
|
+
console.log("failed delete", fullPath, ee && ee.message);
|
|
102
|
+
}
|
|
74
103
|
}
|
|
104
|
+
} catch (err) {
|
|
105
|
+
console.log("failed delete", fullPath, err && err.message);
|
|
75
106
|
}
|
|
76
107
|
}
|
|
77
108
|
module.exports.del = del;
|
|
78
109
|
function delStream(globStream) {
|
|
79
110
|
globStream.stream().on("data", (result) => {
|
|
80
111
|
const fullPath = path.resolve(process.cwd(), result);
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
112
|
+
try {
|
|
113
|
+
if (fs.existsSync(fullPath)) {
|
|
114
|
+
const stat = fs.lstatSync(fullPath);
|
|
115
|
+
if (stat.isSymbolicLink()) {
|
|
116
|
+
try {
|
|
117
|
+
fs.unlinkSync(fullPath);
|
|
118
|
+
console.log("deleted symlink", fullPath);
|
|
119
|
+
} catch (e) {
|
|
120
|
+
console.log("failed delete symlink", fullPath, e && e.message);
|
|
121
|
+
}
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
if (stat.isDirectory()) {
|
|
125
|
+
const subdir = fs.readdirSync(fullPath).map((dirPath) => path.resolve(fullPath, dirPath));
|
|
126
|
+
for (let i = 0; i < subdir.length; i++) {
|
|
127
|
+
del(subdir[i]);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
85
130
|
}
|
|
131
|
+
del(fullPath);
|
|
132
|
+
} catch (err) {
|
|
133
|
+
console.log("failed processing", fullPath, err && err.message);
|
|
86
134
|
}
|
|
87
|
-
del(fullPath);
|
|
88
135
|
});
|
|
89
136
|
}
|
|
90
137
|
module.exports.delStream = delStream;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
require_gitattributes
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-PDN26I7O.mjs";
|
|
5
5
|
import {
|
|
6
6
|
require_utils
|
|
7
7
|
} from "./chunk-A3VUZEJK.mjs";
|
|
@@ -18,7 +18,7 @@ var require_line_endings = __commonJS({
|
|
|
18
18
|
var path = __require("upath");
|
|
19
19
|
var fs = __require("fs");
|
|
20
20
|
var { runGitCommand } = require_utils();
|
|
21
|
-
var { updateGitAttributes } = require_gitattributes()
|
|
21
|
+
var { updateGitAttributes } = require_gitattributes();
|
|
22
22
|
function forceLfLineEndings() {
|
|
23
23
|
console.log("\n=== Configuring LF Line Endings ===");
|
|
24
24
|
runGitCommand(["config", "core.autocrlf", "false"], "Disable automatic CRLF conversion");
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
1
2
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
2
3
|
var __esm = (fn, res) => function __init() {
|
|
3
4
|
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
@@ -67,31 +68,78 @@ var require_utils = __commonJS({
|
|
|
67
68
|
}
|
|
68
69
|
module2.exports.getArgs = getArgs;
|
|
69
70
|
function del(fullPath) {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
try {
|
|
72
|
+
if (!fs2.existsSync(fullPath)) return;
|
|
73
|
+
const stat = fs2.lstatSync(fullPath);
|
|
74
|
+
if (stat.isSymbolicLink()) {
|
|
75
|
+
try {
|
|
76
|
+
fs2.unlinkSync(fullPath);
|
|
77
|
+
console.log("deleted symlink", fullPath);
|
|
78
|
+
} catch (e) {
|
|
79
|
+
console.log("failed delete symlink", fullPath, e && e.message);
|
|
80
|
+
}
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (stat.isDirectory()) {
|
|
84
|
+
const subdir = fs2.readdirSync(fullPath).map((dirPath) => path2.resolve(fullPath, dirPath));
|
|
85
|
+
for (let i = 0; i < subdir.length; i++) {
|
|
86
|
+
del(subdir[i]);
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
fs2.rmdirSync(fullPath);
|
|
90
|
+
console.log("deleted", fullPath);
|
|
91
|
+
} catch (e) {
|
|
92
|
+
try {
|
|
93
|
+
fs2.rmSync(fullPath, { recursive: true, force: true, retryDelay: 7e3 });
|
|
94
|
+
console.log("deleted", fullPath);
|
|
95
|
+
} catch (ee) {
|
|
96
|
+
console.log("failed delete", fullPath, ee && ee.message);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return;
|
|
74
100
|
}
|
|
75
|
-
} else {
|
|
76
101
|
try {
|
|
77
|
-
fs2.
|
|
102
|
+
fs2.unlinkSync(fullPath);
|
|
78
103
|
console.log("deleted", fullPath);
|
|
79
|
-
} catch (
|
|
80
|
-
|
|
104
|
+
} catch (e) {
|
|
105
|
+
try {
|
|
106
|
+
fs2.rmSync(fullPath, { recursive: true, force: true, retryDelay: 7e3 });
|
|
107
|
+
console.log("deleted", fullPath);
|
|
108
|
+
} catch (ee) {
|
|
109
|
+
console.log("failed delete", fullPath, ee && ee.message);
|
|
110
|
+
}
|
|
81
111
|
}
|
|
112
|
+
} catch (err) {
|
|
113
|
+
console.log("failed delete", fullPath, err && err.message);
|
|
82
114
|
}
|
|
83
115
|
}
|
|
84
116
|
module2.exports.del = del;
|
|
85
117
|
function delStream(globStream) {
|
|
86
118
|
globStream.stream().on("data", (result) => {
|
|
87
119
|
const fullPath = path2.resolve(process.cwd(), result);
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
120
|
+
try {
|
|
121
|
+
if (fs2.existsSync(fullPath)) {
|
|
122
|
+
const stat = fs2.lstatSync(fullPath);
|
|
123
|
+
if (stat.isSymbolicLink()) {
|
|
124
|
+
try {
|
|
125
|
+
fs2.unlinkSync(fullPath);
|
|
126
|
+
console.log("deleted symlink", fullPath);
|
|
127
|
+
} catch (e) {
|
|
128
|
+
console.log("failed delete symlink", fullPath, e && e.message);
|
|
129
|
+
}
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
if (stat.isDirectory()) {
|
|
133
|
+
const subdir = fs2.readdirSync(fullPath).map((dirPath) => path2.resolve(fullPath, dirPath));
|
|
134
|
+
for (let i = 0; i < subdir.length; i++) {
|
|
135
|
+
del(subdir[i]);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
92
138
|
}
|
|
139
|
+
del(fullPath);
|
|
140
|
+
} catch (err) {
|
|
141
|
+
console.log("failed processing", fullPath, err && err.message);
|
|
93
142
|
}
|
|
94
|
-
del(fullPath);
|
|
95
143
|
});
|
|
96
144
|
}
|
|
97
145
|
module2.exports.delStream = delStream;
|
|
@@ -146,11 +194,11 @@ var fs = require("fs");
|
|
|
146
194
|
var projectDir = process.cwd();
|
|
147
195
|
var envPath = path.join(projectDir, ".env");
|
|
148
196
|
if (fs.existsSync(envPath)) {
|
|
149
|
-
require("dotenv").config({ path: envPath });
|
|
197
|
+
require("dotenv").config({ path: envPath, quiet: true });
|
|
150
198
|
} else {
|
|
151
199
|
console.warn(`.env file not found at ${envPath}`);
|
|
152
200
|
}
|
|
153
|
-
require("dotenv").config({ path: path.join(process.cwd(), ".env") });
|
|
201
|
+
require("dotenv").config({ path: path.join(process.cwd(), ".env"), quiet: true });
|
|
154
202
|
var ACCESS_TOKEN = process.env.GITHUB_TOKEN || process.env.ACCESS_TOKEN;
|
|
155
203
|
if (!ACCESS_TOKEN) {
|
|
156
204
|
throw new Error(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
require_utils
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-Z6JLYU2J.mjs";
|
|
5
5
|
import {
|
|
6
6
|
__commonJS,
|
|
7
7
|
__require,
|
|
@@ -19,11 +19,11 @@ var require_clean_github_actions_caches = __commonJS({
|
|
|
19
19
|
var projectDir = process.cwd();
|
|
20
20
|
var envPath = path.join(projectDir, ".env");
|
|
21
21
|
if (fs.existsSync(envPath)) {
|
|
22
|
-
__require("dotenv").config({ path: envPath });
|
|
22
|
+
__require("dotenv").config({ path: envPath, quiet: true });
|
|
23
23
|
} else {
|
|
24
24
|
console.warn(`.env file not found at ${envPath}`);
|
|
25
25
|
}
|
|
26
|
-
__require("dotenv").config({ path: path.join(process.cwd(), ".env") });
|
|
26
|
+
__require("dotenv").config({ path: path.join(process.cwd(), ".env"), quiet: true });
|
|
27
27
|
var ACCESS_TOKEN = process.env.GITHUB_TOKEN || process.env.ACCESS_TOKEN;
|
|
28
28
|
if (!ACCESS_TOKEN) {
|
|
29
29
|
throw new Error(
|
package/lib/del-gradle.cjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
1
2
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
2
3
|
var __esm = (fn, res) => function __init() {
|
|
3
4
|
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
@@ -67,31 +68,78 @@ var require_utils = __commonJS({
|
|
|
67
68
|
}
|
|
68
69
|
module2.exports.getArgs = getArgs;
|
|
69
70
|
function del2(fullPath) {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
try {
|
|
72
|
+
if (!fs.existsSync(fullPath)) return;
|
|
73
|
+
const stat = fs.lstatSync(fullPath);
|
|
74
|
+
if (stat.isSymbolicLink()) {
|
|
75
|
+
try {
|
|
76
|
+
fs.unlinkSync(fullPath);
|
|
77
|
+
console.log("deleted symlink", fullPath);
|
|
78
|
+
} catch (e) {
|
|
79
|
+
console.log("failed delete symlink", fullPath, e && e.message);
|
|
80
|
+
}
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (stat.isDirectory()) {
|
|
84
|
+
const subdir = fs.readdirSync(fullPath).map((dirPath) => path2.resolve(fullPath, dirPath));
|
|
85
|
+
for (let i = 0; i < subdir.length; i++) {
|
|
86
|
+
del2(subdir[i]);
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
fs.rmdirSync(fullPath);
|
|
90
|
+
console.log("deleted", fullPath);
|
|
91
|
+
} catch (e) {
|
|
92
|
+
try {
|
|
93
|
+
fs.rmSync(fullPath, { recursive: true, force: true, retryDelay: 7e3 });
|
|
94
|
+
console.log("deleted", fullPath);
|
|
95
|
+
} catch (ee) {
|
|
96
|
+
console.log("failed delete", fullPath, ee && ee.message);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return;
|
|
74
100
|
}
|
|
75
|
-
} else {
|
|
76
101
|
try {
|
|
77
|
-
fs.
|
|
102
|
+
fs.unlinkSync(fullPath);
|
|
78
103
|
console.log("deleted", fullPath);
|
|
79
|
-
} catch (
|
|
80
|
-
|
|
104
|
+
} catch (e) {
|
|
105
|
+
try {
|
|
106
|
+
fs.rmSync(fullPath, { recursive: true, force: true, retryDelay: 7e3 });
|
|
107
|
+
console.log("deleted", fullPath);
|
|
108
|
+
} catch (ee) {
|
|
109
|
+
console.log("failed delete", fullPath, ee && ee.message);
|
|
110
|
+
}
|
|
81
111
|
}
|
|
112
|
+
} catch (err) {
|
|
113
|
+
console.log("failed delete", fullPath, err && err.message);
|
|
82
114
|
}
|
|
83
115
|
}
|
|
84
116
|
module2.exports.del = del2;
|
|
85
117
|
function delStream(globStream2) {
|
|
86
118
|
globStream2.stream().on("data", (result) => {
|
|
87
119
|
const fullPath = path2.resolve(process.cwd(), result);
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
120
|
+
try {
|
|
121
|
+
if (fs.existsSync(fullPath)) {
|
|
122
|
+
const stat = fs.lstatSync(fullPath);
|
|
123
|
+
if (stat.isSymbolicLink()) {
|
|
124
|
+
try {
|
|
125
|
+
fs.unlinkSync(fullPath);
|
|
126
|
+
console.log("deleted symlink", fullPath);
|
|
127
|
+
} catch (e) {
|
|
128
|
+
console.log("failed delete symlink", fullPath, e && e.message);
|
|
129
|
+
}
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
if (stat.isDirectory()) {
|
|
133
|
+
const subdir = fs.readdirSync(fullPath).map((dirPath) => path2.resolve(fullPath, dirPath));
|
|
134
|
+
for (let i = 0; i < subdir.length; i++) {
|
|
135
|
+
del2(subdir[i]);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
92
138
|
}
|
|
139
|
+
del2(fullPath);
|
|
140
|
+
} catch (err) {
|
|
141
|
+
console.log("failed processing", fullPath, err && err.message);
|
|
93
142
|
}
|
|
94
|
-
del2(fullPath);
|
|
95
143
|
});
|
|
96
144
|
}
|
|
97
145
|
module2.exports.delStream = delStream;
|
package/lib/del-gradle.js
CHANGED
package/lib/del-gradle.mjs
CHANGED
package/lib/del-node-modules.cjs
CHANGED
|
@@ -1,156 +1,151 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// src/del-node-modules.js
|
|
3
|
+
var fs = require("fs");
|
|
4
|
+
var fsp = fs.promises;
|
|
5
|
+
var path = require("path");
|
|
6
|
+
var os = require("os");
|
|
7
|
+
var minimist = require("minimist");
|
|
8
|
+
var argv = minimist(process.argv.slice(2), {
|
|
9
|
+
boolean: ["force", "help"],
|
|
10
|
+
alias: { h: "help", f: "force", c: "concurrent" },
|
|
11
|
+
default: { force: false, concurrent: 2 }
|
|
13
12
|
});
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
if (
|
|
60
|
-
|
|
13
|
+
if (argv.help) {
|
|
14
|
+
console.log(`Usage: clean-node [--force] [-c|--concurrent N]
|
|
15
|
+
By default runs in dry-run mode. Use --force to actually delete.
|
|
16
|
+
Use -c/--concurrent to set concurrent removals (default 2).`);
|
|
17
|
+
process.exit(0);
|
|
18
|
+
}
|
|
19
|
+
var DRY_RUN = !argv.force;
|
|
20
|
+
var defaultConcurrency = Math.max(2, os.cpus().length || 2);
|
|
21
|
+
var CONCURRENCY = Math.max(1, Number(argv.concurrent || argv.c || defaultConcurrency));
|
|
22
|
+
var customChars = "@.";
|
|
23
|
+
var vowels = "aeiouAEIOU";
|
|
24
|
+
var alnum = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
|
25
|
+
var combined = alnum + vowels + customChars;
|
|
26
|
+
var ROOT = process.cwd();
|
|
27
|
+
async function isSymlinkAsync(p) {
|
|
28
|
+
try {
|
|
29
|
+
return (await fsp.lstat(p)).isSymbolicLink();
|
|
30
|
+
} catch {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
async function removeAsync(target) {
|
|
35
|
+
if (await isSymlinkAsync(target)) {
|
|
36
|
+
console.log("Skipping symlink", target);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (DRY_RUN) {
|
|
40
|
+
console.log("Would remove", target);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
await fsp.rm(target, { recursive: true, force: true });
|
|
45
|
+
console.log("Deleting", target);
|
|
46
|
+
} catch (e) {
|
|
47
|
+
console.error("Failed:", target, e.message);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function runWithConcurrency(tasks, concurrency) {
|
|
51
|
+
return new Promise((resolve, reject) => {
|
|
52
|
+
let i = 0;
|
|
53
|
+
let active = 0;
|
|
54
|
+
let done = 0;
|
|
55
|
+
const total = tasks.length;
|
|
56
|
+
if (total === 0) return resolve();
|
|
57
|
+
function next() {
|
|
58
|
+
if (done === total) return resolve();
|
|
59
|
+
while (active < concurrency && i < total) {
|
|
60
|
+
const idx = i++;
|
|
61
|
+
active++;
|
|
62
|
+
Promise.resolve().then(() => tasks[idx]()).then(() => {
|
|
63
|
+
active--;
|
|
64
|
+
done++;
|
|
65
|
+
next();
|
|
66
|
+
}).catch((err) => reject(err));
|
|
61
67
|
}
|
|
62
|
-
return fullPath;
|
|
63
|
-
}
|
|
64
|
-
module2.exports.joinPathPreserveDriveLetter = joinPathPreserveDriveLetter;
|
|
65
|
-
function getArgs() {
|
|
66
|
-
return argv;
|
|
67
68
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
69
|
+
next();
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
function walk(dir, callback, { skipNodeModulesChildren = false } = {}) {
|
|
73
|
+
let entries;
|
|
74
|
+
try {
|
|
75
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
76
|
+
} catch {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
for (const entry of entries) {
|
|
80
|
+
const fullPath = path.join(dir, entry.name);
|
|
81
|
+
if (entry.isSymbolicLink()) continue;
|
|
82
|
+
if (skipNodeModulesChildren && dir.includes("node_modules")) continue;
|
|
83
|
+
callback(fullPath, entry);
|
|
84
|
+
if (entry.isDirectory()) {
|
|
85
|
+
if (skipNodeModulesChildren && entry.name === "node_modules") {
|
|
86
|
+
continue;
|
|
82
87
|
}
|
|
88
|
+
walk(fullPath, callback, { skipNodeModulesChildren });
|
|
83
89
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
async function processNodeModules(dir) {
|
|
93
|
+
console.log("Found:", dir);
|
|
94
|
+
let items;
|
|
95
|
+
try {
|
|
96
|
+
items = fs.readdirSync(dir, { withFileTypes: true });
|
|
97
|
+
} catch {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
const targets = items.filter((entry) => entry.name.length && combined.includes(entry.name[0]));
|
|
101
|
+
const tasks = targets.map((entry) => async () => {
|
|
102
|
+
const name = entry.name;
|
|
103
|
+
const target = path.join(dir, name);
|
|
104
|
+
if (entry.isSymbolicLink && entry.isSymbolicLink()) {
|
|
105
|
+
console.log("Skipping symlink", target);
|
|
106
|
+
return;
|
|
96
107
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
const part = parts[i];
|
|
108
|
-
if (i === parts.length - 1) {
|
|
109
|
-
current[part] = null;
|
|
110
|
-
} else {
|
|
111
|
-
current[part] = current[part] || {};
|
|
112
|
-
current = current[part];
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
function printNode(node, prefix = "", parentPath = "") {
|
|
117
|
-
const keys = Object.keys(node).sort();
|
|
118
|
-
let lines = [];
|
|
119
|
-
keys.forEach((key, idx) => {
|
|
120
|
-
const isLast = idx === keys.length - 1;
|
|
121
|
-
const branch = isLast ? "\u2514\u2500\u2500 " : "\u251C\u2500\u2500 ";
|
|
122
|
-
const currentPath = parentPath ? parentPath + "/" + key : key;
|
|
123
|
-
if (node[key] === null) {
|
|
124
|
-
lines.push(prefix + branch + key + " [" + (hashMap[currentPath] || "") + "]");
|
|
125
|
-
} else {
|
|
126
|
-
lines.push(prefix + branch + key + "/");
|
|
127
|
-
lines = lines.concat(printNode(node[key], prefix + (isLast ? " " : "\u2502 "), currentPath));
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
return lines;
|
|
131
|
-
}
|
|
132
|
-
return printNode(tree, "", "").join("\n");
|
|
108
|
+
await removeAsync(target);
|
|
109
|
+
});
|
|
110
|
+
await runWithConcurrency(tasks, CONCURRENCY);
|
|
111
|
+
await removeAsync(dir);
|
|
112
|
+
}
|
|
113
|
+
async function main() {
|
|
114
|
+
const nodeModulesDirs = [];
|
|
115
|
+
walk(ROOT, (fullPath, entry) => {
|
|
116
|
+
if (entry.isDirectory() && entry.name === "node_modules") {
|
|
117
|
+
nodeModulesDirs.push(fullPath);
|
|
133
118
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
119
|
+
});
|
|
120
|
+
for (const dir of nodeModulesDirs) {
|
|
121
|
+
await processNodeModules(dir);
|
|
137
122
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
123
|
+
const packageLocks = [];
|
|
124
|
+
const yarnLocks = [];
|
|
125
|
+
const yarnCaches = [];
|
|
126
|
+
walk(
|
|
127
|
+
ROOT,
|
|
128
|
+
(fullPath, entry) => {
|
|
129
|
+
const base = path.basename(fullPath);
|
|
130
|
+
if (base === "package-lock.json") packageLocks.push(fullPath);
|
|
131
|
+
if (base === "yarn.lock") yarnLocks.push(fullPath);
|
|
132
|
+
if (entry.isDirectory() && fullPath.endsWith(path.join(".yarn", "cache"))) yarnCaches.push(fullPath);
|
|
133
|
+
},
|
|
134
|
+
{ skipNodeModulesChildren: true }
|
|
135
|
+
);
|
|
136
|
+
if (DRY_RUN) {
|
|
137
|
+
console.log("Would remove package-lock.json files:");
|
|
138
|
+
for (const p of packageLocks) console.log(p);
|
|
139
|
+
console.log("Would remove yarn.lock files:");
|
|
140
|
+
for (const p of yarnLocks) console.log(p);
|
|
141
|
+
console.log("Would remove .yarn/cache directories:");
|
|
142
|
+
for (const p of yarnCaches) console.log(p);
|
|
143
|
+
} else {
|
|
144
|
+
const allTasks = [];
|
|
145
|
+
allTasks.push(...packageLocks.map((p) => async () => removeAsync(p)));
|
|
146
|
+
allTasks.push(...yarnLocks.map((p) => async () => removeAsync(p)));
|
|
147
|
+
allTasks.push(...yarnCaches.map((p) => async () => removeAsync(p)));
|
|
148
|
+
await runWithConcurrency(allTasks, CONCURRENCY);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
main();
|