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.
Files changed (253) 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 -105
  33. package/lib/binary-collections.mjs +131 -84
  34. package/lib/changelog.cjs +3 -3
  35. package/lib/changelog.mjs +177 -171
  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 +3 -2
  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.js +51 -0
  91. package/lib/free-chatgpt.mjs +50 -0
  92. package/lib/git/gitattributes.cjs +1 -1
  93. package/lib/git/{gitattributes.d.mts → gitattributes.d.cts} +5 -7
  94. package/lib/git/gitattributes.mjs +2 -2
  95. package/lib/git/line-endings.cjs +297 -64
  96. package/lib/git/line-endings.mjs +4 -4
  97. package/lib/git/normalize.cjs +26 -36
  98. package/lib/git/normalize.mjs +2 -2
  99. package/lib/git/permissions.cjs +77 -11
  100. package/lib/git/permissions.mjs +3 -3
  101. package/lib/git/pull-strategy.cjs +76 -9
  102. package/lib/git/pull-strategy.mjs +3 -3
  103. package/lib/git/user-config.cjs +266 -83
  104. package/lib/git/user-config.mjs +4 -4
  105. package/lib/git/utils.cjs +40 -60
  106. package/lib/git/utils.mjs +2 -2
  107. package/lib/git-diff-cli.cjs +651 -0
  108. package/lib/git-diff-cli.d.ts +1 -0
  109. package/lib/git-diff-cli.js +15 -0
  110. package/lib/git-diff-cli.mjs +16 -0
  111. package/lib/git-diff.cjs +657 -58
  112. package/lib/git-diff.d.ts +38 -83
  113. package/lib/git-diff.js +152 -0
  114. package/lib/git-diff.mjs +23 -85
  115. package/lib/git-fix.cjs +685 -97
  116. package/lib/git-fix.mjs +14 -13
  117. package/lib/git-purge.cjs +3 -3
  118. package/lib/git-purge.d.cts +1 -0
  119. package/lib/git-purge.mjs +43 -37
  120. package/lib/index.cjs +7 -6
  121. package/lib/index.d.ts +1 -1
  122. package/lib/index.js +2 -5
  123. package/lib/index.mjs +4 -4
  124. package/lib/npm-run-series.cjs +3 -3
  125. package/lib/npm-run-series.mjs +42 -36
  126. package/lib/package-resolutions-updater.cjs +5 -5
  127. package/lib/package-resolutions-updater.mjs +266 -309
  128. package/lib/print-directory-tree.cjs +275 -210
  129. package/lib/print-directory-tree.mjs +2 -2
  130. package/lib/ps/connected-domain.cjs +25 -2
  131. package/lib/ps/connected-domain.d.ts +10 -2
  132. package/lib/ps/connected-domain.js +5 -2
  133. package/lib/ps/connected-domain.mjs +8 -4
  134. package/lib/ps/index.cjs +345 -322
  135. package/lib/ps/index.d.mjs +1 -1
  136. package/lib/ps/index.js +1 -1
  137. package/lib/ps/index.mjs +179 -182
  138. package/lib/ps/isWin.cjs +24 -1
  139. package/lib/ps/isWin.d.ts +1 -1
  140. package/lib/ps/isWin.js +3 -1
  141. package/lib/ps/isWin.mjs +8 -4
  142. package/lib/ps/table-parser.cjs +167 -159
  143. package/lib/ps/table-parser.d.ts +5 -0
  144. package/lib/ps/table-parser.js +10 -4
  145. package/lib/ps/table-parser.mjs +9 -5
  146. package/lib/remove-module.cjs +262 -0
  147. package/lib/remove-module.d.mts +1 -0
  148. package/lib/remove-module.mjs +111 -0
  149. package/lib/rmpath.cjs +274 -0
  150. package/lib/rmpath.d.mts +3 -0
  151. package/lib/rmpath.mjs +108 -0
  152. package/lib/submodule-install.cjs +264 -86
  153. package/lib/submodule-install.mjs +51 -3
  154. package/lib/submodule-remove-cli.cjs +103 -0
  155. package/lib/submodule-remove-cli.d.ts +1 -0
  156. package/lib/submodule-remove-cli.js +31 -0
  157. package/lib/submodule-remove-cli.mjs +28 -0
  158. package/lib/submodule-remove.cjs +43 -0
  159. package/lib/submodule-remove.d.cts +2 -0
  160. package/lib/submodule-remove.mjs +6 -0
  161. package/lib/utils/chatgpt.cjs +383 -0
  162. package/lib/utils/chatgpt.d.ts +31 -0
  163. package/lib/utils/chatgpt.js +541 -0
  164. package/lib/utils/chatgpt.mjs +8 -0
  165. package/lib/{utils.cjs → utils/index.cjs} +1 -1
  166. package/lib/{utils.mjs → utils/index.mjs} +2 -2
  167. package/lib/yarn-reinstall.cjs +172 -38
  168. package/lib/yarn-reinstall.mjs +2 -2
  169. package/package.json +91 -71
  170. package/readme.md +43 -69
  171. package/releases/readme.md +36 -0
  172. package/test/README.md +101 -0
  173. package/test/package.json +2 -1
  174. package/test-project/readme.md +26 -0
  175. package/tmp/test-repo/README.md +35 -0
  176. package/tmp/test-repo/package.json +1 -1
  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 -137
  192. package/lib/binary-collections.d.ts +0 -137
  193. package/lib/changelog.d.mts +0 -2
  194. package/lib/changelog.js +0 -226
  195. package/lib/chunk-DPKAJKFO.mjs +0 -171
  196. package/lib/chunk-G3THLIDT.mjs +0 -200
  197. package/lib/chunk-W3ENOM53.mjs +0 -18
  198. package/lib/clean-github-actions-caches.d.mts +0 -169
  199. package/lib/clean-github-actions-caches.d.ts +0 -169
  200. package/lib/del-gradle.d.mts +0 -2
  201. package/lib/del-node-modules.d.mts +0 -2
  202. package/lib/del-ps.d.mts +0 -2
  203. package/lib/del-yarn-caches.d.mts +0 -2
  204. package/lib/find-node-modules-cli.d.mts +0 -1
  205. package/lib/find-node-modules.d.mts +0 -13
  206. package/lib/find-node-modules.js +0 -53
  207. package/lib/git/line-endings.d.mts +0 -83
  208. package/lib/git/line-endings.d.ts +0 -83
  209. package/lib/git/normalize.d.mts +0 -43
  210. package/lib/git/normalize.d.ts +0 -43
  211. package/lib/git/permissions.d.mts +0 -17
  212. package/lib/git/permissions.d.ts +0 -17
  213. package/lib/git/pull-strategy.d.mts +0 -15
  214. package/lib/git/pull-strategy.d.ts +0 -15
  215. package/lib/git/user-config.d.mts +0 -105
  216. package/lib/git/user-config.d.ts +0 -105
  217. package/lib/git/utils.d.mts +0 -69
  218. package/lib/git/utils.d.ts +0 -69
  219. package/lib/git-diff.d.mts +0 -84
  220. package/lib/git-fix.d.mts +0 -141
  221. package/lib/git-fix.d.ts +0 -141
  222. package/lib/git-purge.d.mts +0 -2
  223. package/lib/git-purge.js +0 -59
  224. package/lib/index.d.mts +0 -1
  225. package/lib/npm-run-series.d.mts +0 -1
  226. package/lib/npm-run-series.d.ts +0 -2
  227. package/lib/npm-run-series.js +0 -86
  228. package/lib/package-resolutions-updater.d.ts +0 -352
  229. package/lib/print-directory-tree.d.mts +0 -234
  230. package/lib/print-directory-tree.d.ts +0 -234
  231. package/lib/ps/connected-domain.d.mts +0 -3
  232. package/lib/ps/index.d.d.mts +0 -26
  233. package/lib/ps/index.d.d.ts +0 -26
  234. package/lib/ps/index.d.mts +0 -26
  235. package/lib/ps/isWin.d.mts +0 -3
  236. package/lib/ps/table-parser.d.mts +0 -3
  237. package/lib/submodule-install.d.mts +0 -121
  238. package/lib/submodule-install.d.ts +0 -121
  239. package/lib/utils.d.mts +0 -40
  240. package/lib/utils.js +0 -181
  241. package/lib/yarn-reinstall.d.mts +0 -49
  242. package/lib/yarn-reinstall.d.ts +0 -49
  243. package/src/package-resolutions-updater.mjs +0 -350
  244. package/src/print-directory-tree.cjs +0 -234
  245. package/src/ps/index.js +0 -286
  246. package/src/yarn-reinstall.cjs +0 -49
  247. /package/{bin → binaries}/nodekill +0 -0
  248. /package/{bin → binaries}/nodekill.cmd +0 -0
  249. /package/lib/{binary-collections-config.d.ts → binary-collections-config.d.cts} +0 -0
  250. /package/lib/{changelog.d.ts → changelog.d.cts} +0 -0
  251. /package/lib/{git-purge.d.ts → free-chatgpt.d.ts} +0 -0
  252. /package/lib/{git-diff.d.cts → npm-run-series.d.cts} +0 -0
  253. /package/lib/{utils.d.ts → utils/index.d.cts} +0 -0
@@ -1,169 +0,0 @@
1
- const axios = require("axios");
2
- const { parseGitRemotes } = require("./utils");
3
- const path = require("upath");
4
- const fs = require("fs");
5
- const projectDir = process.cwd();
6
- const envPath = path.join(projectDir, ".env");
7
-
8
- // Load the .env file using dotenv
9
- if (fs.existsSync(envPath)) {
10
- require("dotenv").config({ path: envPath });
11
- } else {
12
- console.warn(`.env file not found at ${envPath}`);
13
- }
14
-
15
- // delete caches leaving single last cache based on creation date
16
-
17
- const ACCESS_TOKEN = process.env.GITHUB_TOKEN || process.env.ACCESS_TOKEN;
18
-
19
- if (!ACCESS_TOKEN) {
20
- throw new Error(
21
- "Access token is not provided. Please set ACCESS_TOKEN or GITHUB_TOKEN in your environment variables."
22
- );
23
- }
24
-
25
- /**
26
- * Deletes a GitHub Actions cache.
27
- * @param {string} GH_REPO - The GitHub repository in the format "owner/repo".
28
- * @param {string} cacheId - The ID of the cache to delete.
29
- * @returns {Promise} - A promise that resolves on success and rejects on error.
30
- */
31
- function deleteGitHubActionsCache(GH_REPO, cacheId) {
32
- return new Promise((resolve, reject) => {
33
- const url = `https://api.github.com/repos/${GH_REPO}/actions/caches/${cacheId}`;
34
- const token = ACCESS_TOKEN;
35
-
36
- if (!token) {
37
- return reject(new Error("Access token is not provided"));
38
- }
39
-
40
- axios
41
- .delete(url, {
42
- headers: {
43
- Authorization: `token ${token}`,
44
- Accept: "application/vnd.github.v3+json"
45
- }
46
- })
47
- .then((response) => {
48
- console.log(`Cache (${cacheId}) deleted successfully`, response.data);
49
- resolve(response.data); // Resolve with the response data
50
- })
51
- .catch((error) => {
52
- console.error("Error deleting cache:", error.response?.data || error.message || "Unknown error");
53
- reject(error); // Reject with the error
54
- });
55
- });
56
- }
57
-
58
- /**
59
- * list github actions caches
60
- * @param {string} GH_REPO
61
- * @returns {Promise<Record<string, Record<string, any>[]>>}
62
- */
63
- function get_caches(GH_REPO) {
64
- const url = `https://api.github.com/repos/${GH_REPO}/actions/caches`;
65
-
66
- return new Promise((resolve, reject) => {
67
- axios
68
- .get(url, {
69
- headers: {
70
- Accept: "application/vnd.github.v3+json",
71
- Authorization: `token ${ACCESS_TOKEN}`
72
- }
73
- })
74
- .then((response) => {
75
- /**
76
- * @type {Record<string, any>[]}
77
- */
78
- const data = response.data.actions_caches;
79
- // resolve(response.data);
80
- /**
81
- * extract the prefix from the key
82
- * @param {string} key
83
- * @returns
84
- */
85
- const getPrefix = (key) => {
86
- const split = key.split(/[-_]/);
87
- if (split.length == 3) {
88
- return `${split[0]}-${split[1]}`;
89
- } else if (split.length > 3) {
90
- return `${split[0]}-${split[1]}-${split[2]}`;
91
- }
92
- return split[0];
93
- };
94
-
95
- // Group by prefix
96
- const grouped = data.reduce(
97
- /**
98
- * @param {Record<string, Record<string, any>[]>} acc
99
- * @param {Record<string, any>} item
100
- * @returns {Record<string, Record<string, any>[]>}
101
- */
102
- (acc, item) => {
103
- const prefix = getPrefix(item.key);
104
-
105
- if (!acc[prefix]) {
106
- acc[prefix] = [];
107
- }
108
-
109
- acc[prefix].push(item);
110
-
111
- return acc;
112
- },
113
- {}
114
- );
115
-
116
- // Convert the grouped object into an array of arrays
117
- // const result = Object.values(grouped);
118
- resolve(grouped);
119
- })
120
- .catch((error) => {
121
- console.error("Error fetching data:", error);
122
- reject(error); // Reject the promise with the error
123
- });
124
- });
125
- }
126
-
127
- /**
128
- * Deletes old GitHub Actions caches for the current repository (origin remote),
129
- * keeping only the most recent cache for each prefix (based on creation date).
130
- * Retrieves caches, groups by prefix, sorts by creation date, and deletes all but the latest.
131
- */
132
- (async () => {
133
- try {
134
- const remotes = await parseGitRemotes();
135
- const GH_REPO = remotes.origin;
136
- const caches = await get_caches(GH_REPO);
137
-
138
- for (const key in caches) {
139
- if (Object.hasOwnProperty.call(caches, key)) {
140
- const items = caches[key]
141
- .sort((a, b) => new Date(b.created_at) - new Date(a.created_at))
142
- .map((item) => ({
143
- ...item,
144
- human_readable_date: new Date(item.created_at).toLocaleString()
145
- }));
146
-
147
- if (items.length > 1) {
148
- const ids = items.map((o) => o.id);
149
- ids.shift(); // keep the most recent cache
150
- if (ids.length > 0) {
151
- for (const id of ids) {
152
- try {
153
- await deleteGitHubActionsCache(GH_REPO, id);
154
- } catch (err) {
155
- console.error(`Error deleting cache ${id}:`, err);
156
- }
157
- }
158
- } else {
159
- console.log(`cache prefix ${key} no cache left`);
160
- }
161
- } else {
162
- console.log(`cache prefix ${key} only have 1 cache`);
163
- }
164
- }
165
- }
166
- } catch (e) {
167
- console.error(`Error: ${e}`);
168
- }
169
- })();
@@ -1,169 +0,0 @@
1
- const axios = require("axios");
2
- const { parseGitRemotes } = require("./utils");
3
- const path = require("upath");
4
- const fs = require("fs");
5
- const projectDir = process.cwd();
6
- const envPath = path.join(projectDir, ".env");
7
-
8
- // Load the .env file using dotenv
9
- if (fs.existsSync(envPath)) {
10
- require("dotenv").config({ path: envPath });
11
- } else {
12
- console.warn(`.env file not found at ${envPath}`);
13
- }
14
-
15
- // delete caches leaving single last cache based on creation date
16
-
17
- const ACCESS_TOKEN = process.env.GITHUB_TOKEN || process.env.ACCESS_TOKEN;
18
-
19
- if (!ACCESS_TOKEN) {
20
- throw new Error(
21
- "Access token is not provided. Please set ACCESS_TOKEN or GITHUB_TOKEN in your environment variables."
22
- );
23
- }
24
-
25
- /**
26
- * Deletes a GitHub Actions cache.
27
- * @param {string} GH_REPO - The GitHub repository in the format "owner/repo".
28
- * @param {string} cacheId - The ID of the cache to delete.
29
- * @returns {Promise} - A promise that resolves on success and rejects on error.
30
- */
31
- function deleteGitHubActionsCache(GH_REPO, cacheId) {
32
- return new Promise((resolve, reject) => {
33
- const url = `https://api.github.com/repos/${GH_REPO}/actions/caches/${cacheId}`;
34
- const token = ACCESS_TOKEN;
35
-
36
- if (!token) {
37
- return reject(new Error("Access token is not provided"));
38
- }
39
-
40
- axios
41
- .delete(url, {
42
- headers: {
43
- Authorization: `token ${token}`,
44
- Accept: "application/vnd.github.v3+json"
45
- }
46
- })
47
- .then((response) => {
48
- console.log(`Cache (${cacheId}) deleted successfully`, response.data);
49
- resolve(response.data); // Resolve with the response data
50
- })
51
- .catch((error) => {
52
- console.error("Error deleting cache:", error.response?.data || error.message || "Unknown error");
53
- reject(error); // Reject with the error
54
- });
55
- });
56
- }
57
-
58
- /**
59
- * list github actions caches
60
- * @param {string} GH_REPO
61
- * @returns {Promise<Record<string, Record<string, any>[]>>}
62
- */
63
- function get_caches(GH_REPO) {
64
- const url = `https://api.github.com/repos/${GH_REPO}/actions/caches`;
65
-
66
- return new Promise((resolve, reject) => {
67
- axios
68
- .get(url, {
69
- headers: {
70
- Accept: "application/vnd.github.v3+json",
71
- Authorization: `token ${ACCESS_TOKEN}`
72
- }
73
- })
74
- .then((response) => {
75
- /**
76
- * @type {Record<string, any>[]}
77
- */
78
- const data = response.data.actions_caches;
79
- // resolve(response.data);
80
- /**
81
- * extract the prefix from the key
82
- * @param {string} key
83
- * @returns
84
- */
85
- const getPrefix = (key) => {
86
- const split = key.split(/[-_]/);
87
- if (split.length == 3) {
88
- return `${split[0]}-${split[1]}`;
89
- } else if (split.length > 3) {
90
- return `${split[0]}-${split[1]}-${split[2]}`;
91
- }
92
- return split[0];
93
- };
94
-
95
- // Group by prefix
96
- const grouped = data.reduce(
97
- /**
98
- * @param {Record<string, Record<string, any>[]>} acc
99
- * @param {Record<string, any>} item
100
- * @returns {Record<string, Record<string, any>[]>}
101
- */
102
- (acc, item) => {
103
- const prefix = getPrefix(item.key);
104
-
105
- if (!acc[prefix]) {
106
- acc[prefix] = [];
107
- }
108
-
109
- acc[prefix].push(item);
110
-
111
- return acc;
112
- },
113
- {}
114
- );
115
-
116
- // Convert the grouped object into an array of arrays
117
- // const result = Object.values(grouped);
118
- resolve(grouped);
119
- })
120
- .catch((error) => {
121
- console.error("Error fetching data:", error);
122
- reject(error); // Reject the promise with the error
123
- });
124
- });
125
- }
126
-
127
- /**
128
- * Deletes old GitHub Actions caches for the current repository (origin remote),
129
- * keeping only the most recent cache for each prefix (based on creation date).
130
- * Retrieves caches, groups by prefix, sorts by creation date, and deletes all but the latest.
131
- */
132
- (async () => {
133
- try {
134
- const remotes = await parseGitRemotes();
135
- const GH_REPO = remotes.origin;
136
- const caches = await get_caches(GH_REPO);
137
-
138
- for (const key in caches) {
139
- if (Object.hasOwnProperty.call(caches, key)) {
140
- const items = caches[key]
141
- .sort((a, b) => new Date(b.created_at) - new Date(a.created_at))
142
- .map((item) => ({
143
- ...item,
144
- human_readable_date: new Date(item.created_at).toLocaleString()
145
- }));
146
-
147
- if (items.length > 1) {
148
- const ids = items.map((o) => o.id);
149
- ids.shift(); // keep the most recent cache
150
- if (ids.length > 0) {
151
- for (const id of ids) {
152
- try {
153
- await deleteGitHubActionsCache(GH_REPO, id);
154
- } catch (err) {
155
- console.error(`Error deleting cache ${id}:`, err);
156
- }
157
- }
158
- } else {
159
- console.log(`cache prefix ${key} no cache left`);
160
- }
161
- } else {
162
- console.log(`cache prefix ${key} only have 1 cache`);
163
- }
164
- }
165
- }
166
- } catch (e) {
167
- console.error(`Error: ${e}`);
168
- }
169
- })();
@@ -1,2 +0,0 @@
1
-
2
- export { }
@@ -1,2 +0,0 @@
1
-
2
- export { }
package/lib/del-ps.d.mts DELETED
@@ -1,2 +0,0 @@
1
-
2
- export { }
@@ -1,2 +0,0 @@
1
-
2
- export { }
@@ -1 +0,0 @@
1
- #!/usr/bin/env node
@@ -1,13 +0,0 @@
1
- /**
2
- * Asynchronously finds all "node_modules" directories within the given directory.
3
- *
4
- * @param {string} [dir=process.cwd()] - The directory to start the search from. Defaults to the current working directory.
5
- * @param {function} [callback=null] - Optional callback function that gets called with each found "node_modules" path.
6
- * @returns {Promise<string[]>} - A promise that resolves to an array of full paths to "node_modules" directories.
7
- */
8
- declare function findNodeModules(dir?: string, callback?: Function): Promise<string[]>;
9
- declare namespace findNodeModules {
10
- export { findNodeModules as default };
11
- }
12
-
13
- export { findNodeModules as default };
@@ -1,53 +0,0 @@
1
- const glob = require("glob");
2
- const path = require("path");
3
- /**
4
- * Asynchronously finds all "node_modules" directories within the given directory.
5
- *
6
- * @param {string} [dir=process.cwd()] - The directory to start the search from. Defaults to the current working directory.
7
- * @param {function} [callback=null] - Optional callback function that gets called with each found "node_modules" path.
8
- * @returns {Promise<string[]>} - A promise that resolves to an array of full paths to "node_modules" directories.
9
- */
10
- function findNodeModules(dir = process.cwd(), callback = null) {
11
- const finalDir = typeof dir === "string" ? dir : process.cwd();
12
- return new Promise((resolve, reject) => {
13
- const results = [];
14
- const g3 = new glob.Glob("**/node_modules", {
15
- withFileTypes: false,
16
- cwd: finalDir,
17
- ignore: ["**/.git*", "**/vendor/**"]
18
- });
19
- const stream = g3.stream();
20
- stream.on("data", (result) => {
21
- const fullPath = path.resolve(finalDir, result);
22
- if (typeof callback === "function") {
23
- try {
24
- callback(fullPath); // Safely invoke callback
25
- }
26
- catch (err) {
27
- console.error("findNodeModules callback error:", err);
28
- }
29
- }
30
- results.push(fullPath);
31
- });
32
- stream.on("error", (err) => reject(err)); // Handle errors
33
- stream.on("end", () => {
34
- if (results.length === 0) {
35
- console.log("No node_modules directories found.");
36
- }
37
- resolve(results); // Resolve the full array when the stream ends
38
- });
39
- });
40
- }
41
- // Support both CommonJS and ESM usage
42
- if (typeof module !== "undefined" && require.main === module) {
43
- findNodeModules(null, console.log)
44
- .then((dirs) => {
45
- console.log(`Found ${dirs.length} node_modules directories.`);
46
- })
47
- .catch((err) => {
48
- console.error("Error finding node_modules directories:", err);
49
- });
50
- }
51
- // ESM export support
52
- module.exports = findNodeModules;
53
- module.exports.default = findNodeModules;
@@ -1,83 +0,0 @@
1
- const path = require("upath");
2
- const fs = require("fs");
3
- const { runGitCommand } = require("./utils.cjs");
4
- const { updateGitAttributes } = require("./gitattributes.js");
5
-
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
-
15
- // Force LF line endings
16
- runGitCommand(["config", "core.autocrlf", "false"], "Disable automatic CRLF conversion");
17
- runGitCommand(["config", "core.eol", "lf"], "Set end-of-line to LF");
18
-
19
- // Create or update .gitattributes
20
- const gitattributesPath = path.join(process.cwd(), ".gitattributes");
21
-
22
- // Always ensure the universal LF rule is present, even if file exists
23
- if (fs.existsSync(gitattributesPath)) {
24
- let content = fs.readFileSync(gitattributesPath, "utf8");
25
- // Match * text=auto eol=lf with any whitespace (space or tab) between tokens
26
- if (!/^\*\s+text=auto\s+eol=lf/m.test(content)) {
27
- content = `* text=auto eol=lf\n` + content;
28
- fs.writeFileSync(gitattributesPath, content);
29
- }
30
- }
31
-
32
- // Define desired rules with priorities
33
- const desiredRules = [
34
- { pattern: "*", attributes: "text=auto eol=lf", priority: 1 },
35
- {
36
- pattern: "*.{cmd,bat,ps1,sh,cmd1,cmd2,bat1,bat2,vbs}",
37
- attributes: "text eol=crlf",
38
- priority: 2
39
- },
40
- {
41
- pattern: "*.{png,jpg,jpeg,gif,ico,svg,bmp,webp,avif,tiff,tif,psd,ai,eps,raw}",
42
- attributes: "binary",
43
- priority: 3
44
- },
45
- {
46
- pattern:
47
- "*.{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}",
48
- attributes: "binary",
49
- priority: 3
50
- }
51
- ];
52
-
53
- // Update .gitattributes using the dedicated module
54
- const result = updateGitAttributes(gitattributesPath, desiredRules);
55
-
56
- // Report results
57
- if (result.error) {
58
- console.log(`[✗] Error updating .gitattributes: ${result.error}`);
59
- return;
60
- }
61
-
62
- // Report conflicts if any
63
- if (result.conflicts.length > 0) {
64
- console.log("\n[!] Detected conflicts in .gitattributes:");
65
- result.conflicts.forEach((conflict) => {
66
- console.log(` ${conflict.pattern}: ${conflict.existing} -> ${conflict.proposed} (${conflict.action})`);
67
- });
68
- }
69
-
70
- // Report changes
71
- if (result.success) {
72
- console.log(`[✓] ${result.message}:`);
73
- result.changes.forEach((change) => {
74
- console.log(` ${change.action}: ${change.pattern} ${change.attributes}`);
75
- });
76
- } else {
77
- console.log(`[i] ${result.message}`);
78
- }
79
- }
80
-
81
- module.exports = {
82
- forceLfLineEndings
83
- };
@@ -1,83 +0,0 @@
1
- const path = require("upath");
2
- const fs = require("fs");
3
- const { runGitCommand } = require("./utils.cjs");
4
- const { updateGitAttributes } = require("./gitattributes.js");
5
-
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
-
15
- // Force LF line endings
16
- runGitCommand(["config", "core.autocrlf", "false"], "Disable automatic CRLF conversion");
17
- runGitCommand(["config", "core.eol", "lf"], "Set end-of-line to LF");
18
-
19
- // Create or update .gitattributes
20
- const gitattributesPath = path.join(process.cwd(), ".gitattributes");
21
-
22
- // Always ensure the universal LF rule is present, even if file exists
23
- if (fs.existsSync(gitattributesPath)) {
24
- let content = fs.readFileSync(gitattributesPath, "utf8");
25
- // Match * text=auto eol=lf with any whitespace (space or tab) between tokens
26
- if (!/^\*\s+text=auto\s+eol=lf/m.test(content)) {
27
- content = `* text=auto eol=lf\n` + content;
28
- fs.writeFileSync(gitattributesPath, content);
29
- }
30
- }
31
-
32
- // Define desired rules with priorities
33
- const desiredRules = [
34
- { pattern: "*", attributes: "text=auto eol=lf", priority: 1 },
35
- {
36
- pattern: "*.{cmd,bat,ps1,sh,cmd1,cmd2,bat1,bat2,vbs}",
37
- attributes: "text eol=crlf",
38
- priority: 2
39
- },
40
- {
41
- pattern: "*.{png,jpg,jpeg,gif,ico,svg,bmp,webp,avif,tiff,tif,psd,ai,eps,raw}",
42
- attributes: "binary",
43
- priority: 3
44
- },
45
- {
46
- pattern:
47
- "*.{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}",
48
- attributes: "binary",
49
- priority: 3
50
- }
51
- ];
52
-
53
- // Update .gitattributes using the dedicated module
54
- const result = updateGitAttributes(gitattributesPath, desiredRules);
55
-
56
- // Report results
57
- if (result.error) {
58
- console.log(`[✗] Error updating .gitattributes: ${result.error}`);
59
- return;
60
- }
61
-
62
- // Report conflicts if any
63
- if (result.conflicts.length > 0) {
64
- console.log("\n[!] Detected conflicts in .gitattributes:");
65
- result.conflicts.forEach((conflict) => {
66
- console.log(` ${conflict.pattern}: ${conflict.existing} -> ${conflict.proposed} (${conflict.action})`);
67
- });
68
- }
69
-
70
- // Report changes
71
- if (result.success) {
72
- console.log(`[✓] ${result.message}:`);
73
- result.changes.forEach((change) => {
74
- console.log(` ${change.action}: ${change.pattern} ${change.attributes}`);
75
- });
76
- } else {
77
- console.log(`[i] ${result.message}`);
78
- }
79
- }
80
-
81
- module.exports = {
82
- forceLfLineEndings
83
- };
@@ -1,43 +0,0 @@
1
- const { execSync } = require("child_process");
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
- */
8
- function normalizeLineEndings() {
9
- console.log("\n=== Normalizing Existing Files ===");
10
-
11
- try {
12
- // Check if there are any tracked files
13
- const result = execSync("git ls-files", { encoding: "utf-8", stdio: "pipe" });
14
- if (!result.trim()) {
15
- console.log("[i] No tracked files to normalize");
16
- return;
17
- }
18
-
19
- console.log("[i] Refreshing index to detect line ending changes...");
20
- execSync("git add --renormalize .", { stdio: "pipe" });
21
-
22
- // Check if there are changes after normalization
23
- try {
24
- const statusResult = execSync("git status --porcelain", { encoding: "utf-8", stdio: "pipe" });
25
- if (statusResult.trim()) {
26
- console.log("[✓] Line endings normalized for tracked files");
27
- console.log("[i] Files with updated line endings are now staged");
28
- console.log("[i] Run 'git status' to see the changes");
29
- } else {
30
- console.log("[✓] All files already have correct line endings");
31
- }
32
- } catch {
33
- console.log("[✓] Line ending normalization completed");
34
- }
35
- } catch (error) {
36
- console.error("[✗] Failed to normalize line endings");
37
- console.error(`Error: ${error.message}`);
38
- }
39
- }
40
-
41
- module.exports = {
42
- normalizeLineEndings
43
- };
@@ -1,43 +0,0 @@
1
- const { execSync } = require("child_process");
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
- */
8
- function normalizeLineEndings() {
9
- console.log("\n=== Normalizing Existing Files ===");
10
-
11
- try {
12
- // Check if there are any tracked files
13
- const result = execSync("git ls-files", { encoding: "utf-8", stdio: "pipe" });
14
- if (!result.trim()) {
15
- console.log("[i] No tracked files to normalize");
16
- return;
17
- }
18
-
19
- console.log("[i] Refreshing index to detect line ending changes...");
20
- execSync("git add --renormalize .", { stdio: "pipe" });
21
-
22
- // Check if there are changes after normalization
23
- try {
24
- const statusResult = execSync("git status --porcelain", { encoding: "utf-8", stdio: "pipe" });
25
- if (statusResult.trim()) {
26
- console.log("[✓] Line endings normalized for tracked files");
27
- console.log("[i] Files with updated line endings are now staged");
28
- console.log("[i] Run 'git status' to see the changes");
29
- } else {
30
- console.log("[✓] All files already have correct line endings");
31
- }
32
- } catch {
33
- console.log("[✓] Line ending normalization completed");
34
- }
35
- } catch (error) {
36
- console.error("[✗] Failed to normalize line endings");
37
- console.error(`Error: ${error.message}`);
38
- }
39
- }
40
-
41
- module.exports = {
42
- normalizeLineEndings
43
- };