binary-collections 2.0.14 → 2.0.15

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 (145) hide show
  1. package/.opencode/plugins/opencode-request-logger/README.md +44 -0
  2. package/.venv/Lib/site-packages/pyarrow/tests/data/orc/README.md +22 -0
  3. package/docs-src/install-opencode-plugins.md +86 -0
  4. package/docs-src/opencode-cli.md +38 -10
  5. package/lib/binary-collections/config-types.cjs +17 -0
  6. package/lib/binary-collections/config-types.d.ts +12 -0
  7. package/lib/binary-collections/config-types.js +2 -0
  8. package/lib/binary-collections/config-types.mjs +7 -0
  9. package/lib/binary-collections/config.cjs +16 -8
  10. package/lib/binary-collections/config.d.cts +18 -10
  11. package/lib/binary-collections/config.mjs +1 -1
  12. package/lib/binary-collections/findScript.cjs +8 -6
  13. package/lib/binary-collections/findScript.mjs +2 -2
  14. package/lib/binary-collections/listScript.cjs +8 -6
  15. package/lib/binary-collections/listScript.mjs +2 -2
  16. package/lib/binary-collections.cjs +8 -6
  17. package/lib/binary-collections.mjs +3 -3
  18. package/lib/changelog.cjs +142 -4
  19. package/lib/changelog.mjs +9 -5
  20. package/lib/{chunk-SARIXFHP.mjs → chunk-3T6AMFI3.mjs} +16 -8
  21. package/lib/{chunk-3F6EIHYG.mjs → chunk-3ZF2QMDK.mjs} +3 -3
  22. package/lib/chunk-B77D3SR4.mjs +28 -0
  23. package/lib/chunk-BPED62FN.mjs +115 -0
  24. package/lib/{chunk-XI67TI46.mjs → chunk-DHFRWM2W.mjs} +1 -1
  25. package/lib/{chunk-2SJKVOTN.mjs → chunk-DPEE3FBB.mjs} +1 -1
  26. package/lib/{chunk-UYNBNLV5.mjs → chunk-H7AE4IO3.mjs} +1 -1
  27. package/lib/{chunk-YWSLMAQ7.mjs → chunk-KCJYREA2.mjs} +14 -12
  28. package/lib/{chunk-JK3MG2KF.mjs → chunk-NHD4HLSU.mjs} +1 -1
  29. package/lib/{chunk-I3O5ZRYU.mjs → chunk-OWNVMKAA.mjs} +1 -1
  30. package/lib/chunk-SKVF4TMD.mjs +59 -0
  31. package/lib/{chunk-SJYP66BO.mjs → chunk-TDUUOAQD.mjs} +1 -1
  32. package/lib/{chunk-D42YBRZW.mjs → chunk-UAEKSLAX.mjs} +1 -1
  33. package/lib/chunk-V6PTSDW5.mjs +82 -0
  34. package/lib/{chunk-AJ3OIYYP.mjs → chunk-WNUEY6VJ.mjs} +8 -6
  35. package/lib/{chunk-YLV4QATP.mjs → chunk-Z53IUBUN.mjs} +6 -5
  36. package/lib/{chunk-JMUFQSPE.mjs → chunk-Z7RM46Q4.mjs} +1 -1
  37. package/lib/cross-env/index.mjs +3 -3
  38. package/lib/git/git-diff-cli.cjs +16 -8
  39. package/lib/git/git-diff-cli.mjs +3 -3
  40. package/lib/git/git-diff.cjs +16 -8
  41. package/lib/git/git-diff.mjs +3 -3
  42. package/lib/git/git-fix.cjs +16 -8
  43. package/lib/git/git-fix.mjs +2 -2
  44. package/lib/git/user-config.cjs +16 -8
  45. package/lib/git/user-config.mjs +2 -2
  46. package/lib/github-workflows/clean-github-actions-caches-cli.cjs +16 -8
  47. package/lib/github-workflows/clean-github-actions-caches-cli.mjs +2 -2
  48. package/lib/github-workflows/clean-github-actions-caches.cjs +16 -8
  49. package/lib/github-workflows/clean-github-actions-caches.mjs +2 -2
  50. package/lib/github-workflows/get-latest-workflow-status-cli.cjs +16 -8
  51. package/lib/github-workflows/get-latest-workflow-status-cli.mjs +2 -2
  52. package/lib/github-workflows/utils.cjs +16 -8
  53. package/lib/github-workflows/utils.mjs +2 -2
  54. package/lib/github-workflows/workflow-badge-cli.cjs +16 -8
  55. package/lib/github-workflows/workflow-badge-cli.mjs +4 -4
  56. package/lib/node-cache-cleaner-cli.mjs +3 -3
  57. package/lib/opencode/cli/auth-rotate.cjs +343 -28
  58. package/lib/opencode/cli/auth-rotate.d.ts +3 -1
  59. package/lib/opencode/cli/auth-rotate.js +10 -15
  60. package/lib/opencode/cli/auth-rotate.mjs +6 -2
  61. package/lib/opencode/cli/auth-rotate.runner.cjs +454 -0
  62. package/lib/opencode/cli/auth-rotate.runner.d.ts +1 -0
  63. package/lib/opencode/cli/auth-rotate.runner.js +8 -0
  64. package/lib/opencode/cli/auth-rotate.runner.mjs +21 -0
  65. package/lib/opencode/install-opencode-plugins-cli.cjs +82 -0
  66. package/lib/opencode/install-opencode-plugins-cli.d.ts +1 -0
  67. package/lib/opencode/install-opencode-plugins-cli.js +78 -0
  68. package/lib/opencode/install-opencode-plugins-cli.mjs +65 -0
  69. package/lib/opencode/utils/check-api.cjs +332 -18
  70. package/lib/opencode/utils/check-api.d.ts +5 -1
  71. package/lib/opencode/utils/check-api.js +101 -15
  72. package/lib/opencode/utils/check-api.mjs +5 -1
  73. package/lib/opencode/utils/check-api.runner.cjs +0 -0
  74. package/lib/opencode/utils/check-api.runner.d.ts +0 -0
  75. package/lib/opencode/utils/check-api.runner.js +1 -0
  76. package/lib/opencode/utils/check-api.runner.mjs +7 -0
  77. package/lib/opencode-cli.cjs +352 -29
  78. package/lib/opencode-cli.js +3 -2
  79. package/lib/opencode-cli.mjs +11 -6
  80. package/lib/package-resolutions-updater-cli.cjs +16 -8
  81. package/lib/package-resolutions-updater-cli.mjs +2 -2
  82. package/lib/package-resolutions-updater.cjs +16 -8
  83. package/lib/package-resolutions-updater.mjs +2 -2
  84. package/lib/print-directory-tree.cjs +16 -8
  85. package/lib/print-directory-tree.mjs +1 -1
  86. package/lib/print-tarball-tree-cli.cjs +305 -0
  87. package/lib/print-tarball-tree-cli.d.mts +2 -0
  88. package/lib/print-tarball-tree-cli.mjs +54 -0
  89. package/lib/print-tarball-tree.cjs +43 -216
  90. package/lib/print-tarball-tree.d.mts +4 -1
  91. package/lib/print-tarball-tree.mjs +12 -66
  92. package/lib/rmpath-cli.cjs +16 -8
  93. package/lib/rmpath-cli.mjs +2 -2
  94. package/lib/rmpath.cjs +16 -8
  95. package/lib/rmpath.mjs +2 -2
  96. package/lib/run-by-checksum/hash.cjs +45 -67
  97. package/lib/run-by-checksum/{hash.d.ts → hash.d.cts} +9 -2
  98. package/lib/run-by-checksum/hash.mjs +3 -7
  99. package/lib/run-by-checksum/run.cjs +95 -58
  100. package/lib/run-by-checksum/run.js +3 -3
  101. package/lib/run-by-checksum/run.mjs +2 -2
  102. package/lib/run-by-checksum-cli.cjs +96 -74
  103. package/lib/run-by-checksum-cli.mjs +2 -2
  104. package/lib/submodule-install.cjs +16 -8
  105. package/lib/submodule-install.mjs +1 -1
  106. package/lib/submodule-remove-cli.cjs +16 -8
  107. package/lib/submodule-remove-cli.mjs +2 -2
  108. package/lib/submodule-remove.cjs +16 -8
  109. package/lib/submodule-remove.mjs +2 -2
  110. package/lib/utils/isDebug.cjs +13 -0
  111. package/lib/utils/isDebug.d.cts +9 -0
  112. package/lib/utils/isDebug.mjs +6 -0
  113. package/package.json +9 -7
  114. package/readme.md +63 -0
  115. package/releases/readme.md +1 -1
  116. package/lib/chunk-546KAIYT.mjs +0 -113
  117. package/lib/chunk-5WAOOOGZ.mjs +0 -77
  118. package/lib/chunk-72XTQ3CK.mjs +0 -45
  119. package/lib/chunk-7Q6YEUQF.mjs +0 -246
  120. package/lib/chunk-AQZ7LMFS.mjs +0 -100
  121. package/lib/chunk-BDCMTOZI.mjs +0 -246
  122. package/lib/chunk-BEUM4LH4.mjs +0 -184
  123. package/lib/chunk-BO4TZS4Q.mjs +0 -246
  124. package/lib/chunk-BZWVHODJ.mjs +0 -62
  125. package/lib/chunk-CM3IC5YC.mjs +0 -226
  126. package/lib/chunk-FR3DMHJC.mjs +0 -146
  127. package/lib/chunk-H44UWUFY.mjs +0 -105
  128. package/lib/chunk-JVMLKHD2.mjs +0 -62
  129. package/lib/chunk-KAT2JNLZ.mjs +0 -146
  130. package/lib/chunk-KRCPFWIF.mjs +0 -193
  131. package/lib/chunk-LVSPEFU2.mjs +0 -86
  132. package/lib/chunk-MCCMMZSM.mjs +0 -60
  133. package/lib/chunk-MGPYPKIE.mjs +0 -109
  134. package/lib/chunk-OA2RKEY3.mjs +0 -162
  135. package/lib/chunk-PAZH45HS.mjs +0 -41
  136. package/lib/chunk-QZMGBDSA.mjs +0 -32
  137. package/lib/chunk-RDGDLSPD.mjs +0 -76
  138. package/lib/chunk-RKPIBGKE.mjs +0 -61
  139. package/lib/chunk-SWUAEY4H.mjs +0 -44
  140. package/lib/chunk-UAIF5VIA.mjs +0 -89
  141. package/lib/chunk-UHPFLJXH.mjs +0 -227
  142. package/lib/chunk-WOC4FZ6F.mjs +0 -164
  143. package/lib/chunk-WSHVPGNM.mjs +0 -44
  144. package/lib/run-by-checksum/hash.js +0 -119
  145. package/readme.html +0 -784
@@ -0,0 +1,13 @@
1
+ // src/utils/isDebug.cjs
2
+ function isDebug() {
3
+ if (globalThis.DEBUG !== void 0) {
4
+ if (typeof globalThis.DEBUG === "boolean") {
5
+ return globalThis.DEBUG;
6
+ }
7
+ return globalThis.DEBUG === "true" || globalThis.DEBUG === "1";
8
+ }
9
+ return process.env.DEBUG === "true" || process.env.NODE_ENV === "development" || process.env.DEBUG === "1";
10
+ }
11
+ module.exports = isDebug;
12
+ module.exports.default = isDebug;
13
+ module.exports.isDebug = isDebug;
@@ -0,0 +1,9 @@
1
+ export = isDebug;
2
+ /**
3
+ * @description Check if the application is running in debug mode.
4
+ * @returns {boolean}
5
+ */
6
+ declare function isDebug(): boolean;
7
+ declare namespace isDebug {
8
+ export { isDebug as default, isDebug };
9
+ }
@@ -0,0 +1,6 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import {
3
+ require_isDebug
4
+ } from "../chunk-B77D3SR4.mjs";
5
+ import "../chunk-QQ4A6DLD.mjs";
6
+ export default require_isDebug();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "binary-collections",
3
- "version": "2.0.14",
3
+ "version": "2.0.15",
4
4
  "description": "Utility to clean any programming caches and more",
5
5
  "keywords": [
6
6
  "cache",
@@ -60,7 +60,8 @@
60
60
  "update:ncu": "npx npm-check-updates -u --enginesNode --root -x jest -x @types/jest -x babel-jest -x @babel/core -x @babel/preset-env -x @babel/preset-typescript -x ts-jest -x eslint -x @eslint/eslintrc -x @eslint/js -x @typescript-eslint/eslint-plugin -x @typescript-eslint/parser -x eslint-config-prettier -x eslint-plugin-prettier -x typescript-eslint -x prettier -x typescript -x ts-node -x @yarnpkg/core",
61
61
  "update:packer": "curl -L https://github.com/dimaslanjaka/nodejs-package-types/raw/main/packer.js > packer.cjs",
62
62
  "serve": "php -S 0.0.0.0:8490",
63
- "upload": "node scripts/upload-backend.mjs"
63
+ "upload": "node scripts/upload-backend.mjs",
64
+ "mkdocs-serve": "mkdocs serve -a \"0.0.0.0:5173\" --livereload"
64
65
  },
65
66
  "repository": {
66
67
  "type": "git",
@@ -71,6 +72,7 @@
71
72
  "ansi-colors": "^4.1.3",
72
73
  "axios": "^1.16.1",
73
74
  "better-sqlite3": "^12.10.0",
75
+ "cosmiconfig": "^9.0.1",
74
76
  "cross-spawn": "https://github.com/dimaslanjaka/node-cross-spawn/raw/78b09a1f799430fb251c1b438ec56ce7957674f4/release/cross-spawn.tgz",
75
77
  "crypto-js": "^4.2.0",
76
78
  "dotenv": "^17.4.2",
@@ -80,6 +82,7 @@
80
82
  "minimatch": "^10.2.5",
81
83
  "minimist": "^1.2.8",
82
84
  "openai": "^6.41.0",
85
+ "proxy-agent": "^8.0.1",
83
86
  "ps-node": "^0.1.6",
84
87
  "puppeteer": "^25.0.4",
85
88
  "puppeteer-extra": "^3.3.6",
@@ -89,8 +92,7 @@
89
92
  "upath": "^3.0.7",
90
93
  "which": "^7.0.0",
91
94
  "yaml": "^2.9.0",
92
- "yarn": "^1.22.22",
93
- "zlib": "^1.0.5"
95
+ "yarn": "^1.22.22"
94
96
  },
95
97
  "devDependencies": {
96
98
  "@babel/core": "^7.29.0",
@@ -146,7 +148,7 @@
146
148
  "cross-spawn": "https://github.com/dimaslanjaka/node-cross-spawn/raw/eb82c8e0e60ce425fdf6e89cd53f4391bb8c77cd/release/cross-spawn.tgz",
147
149
  "git-command-helper": "https://github.com/dimaslanjaka/git-command-helper/raw/7a28dad83c17abfc4b6ccd2b7327c39ff67adfe5/release/git-command-helper.tgz",
148
150
  "sbg-utility": "https://github.com/dimaslanjaka/static-blog-generator/raw/44e5c7b79b4e60f8c2d34857c27b8ce677d7493e/packages/sbg-utility/release/sbg-utility.tgz",
149
- "@dimaslanjaka/eslint-base-config": "https://github.com/dimaslanjaka/eslint-base-config/raw/9741b4feac89f303ea585e3ecac2b0e768434135/release/dimaslanjaka-eslint-base-config.tgz"
151
+ "@dimaslanjaka/eslint-base-config": "https://github.com/dimaslanjaka/eslint-base-config/raw/822b872f18985462f0da358579cd6493472a2ee0/release/dimaslanjaka-eslint-base-config.tgz"
150
152
  },
151
153
  "bin": {
152
154
  "actions-badge": "lib/github-workflows/workflow-badge-cli.cjs",
@@ -219,7 +221,7 @@
219
221
  "pkg-res-updater": "lib/package-resolutions-updater-cli.cjs",
220
222
  "pkg-resolutions-updater": "lib/package-resolutions-updater-cli.cjs",
221
223
  "print-directory-tree": "lib/print-directory-tree.cjs",
222
- "print-tarball-tree": "lib/print-tarball-tree.cjs",
224
+ "print-tarball-tree": "lib/print-tarball-tree-cli.cjs",
223
225
  "print-tree": "lib/print-directory-tree.cjs",
224
226
  "prod": "binaries/prod.cjs",
225
227
  "py": "binaries/py.cjs",
@@ -240,7 +242,7 @@
240
242
  "submodule-remove": "lib/submodule-remove-cli.cjs",
241
243
  "submodule-token": "binaries/submodule-token.cjs",
242
244
  "tarball-packer": "lib/node-package-packer-cli.cjs",
243
- "tarball-tree": "lib/print-tarball-tree.cjs",
245
+ "tarball-tree": "lib/print-tarball-tree-cli.cjs",
244
246
  "test-cjs": "binaries/test-cjs.cjs",
245
247
  "test-esm": "binaries/test-esm.cjs",
246
248
  "undo-commit": "lib/git/undo-commit.cjs",
package/readme.md CHANGED
@@ -91,6 +91,69 @@ For development or manual setup.
91
91
  git clone -b master https://github.com/dimaslanjaka/bin bin
92
92
  ```
93
93
 
94
+ ## Configuration
95
+
96
+ Binary Collections supports project-level configuration via a `binary-collections.config` file in your project root. Only the name `binary-collections.config` is supported — no `.rc`, JSON, or YAML variants.
97
+
98
+ ### Supported Extensions
99
+
100
+ | Extension | Module System |
101
+ |-----------|---------------|
102
+ | `.js` | ESM (project must have `"type": "module"` in `package.json`) |
103
+ | `.cjs` | CommonJS (always works) |
104
+ | `.mjs` | ESM (always works) |
105
+
106
+ ### Boilerplate Config
107
+
108
+ A ready-to-use example is provided in the project root:
109
+
110
+ ```
111
+ binary-collections.config-example.js
112
+ ```
113
+
114
+ Copy and rename it to start configuring:
115
+
116
+ ```bash
117
+ cp binary-collections.config-example.js binary-collections.config.js
118
+ ```
119
+
120
+ ### Example — CJS Config (`binary-collections.config.cjs`)
121
+
122
+ ```js
123
+ module.exports = {
124
+ tempDir: './.my-cache'
125
+ };
126
+ ```
127
+
128
+ ### Example — ESM Config (`binary-collections.config.mjs`)
129
+
130
+ ```js
131
+ export default {
132
+ tempDir: './.my-cache'
133
+ };
134
+ ```
135
+
136
+ ### Example — `package.json`
137
+
138
+ Add a `binary-collections` property to your `package.json`:
139
+
140
+ ```json
141
+ {
142
+ "name": "my-project",
143
+ "binary-collections": {
144
+ "tempDir": "./.my-cache"
145
+ }
146
+ }
147
+ ```
148
+
149
+ ### Configurable Properties
150
+
151
+ | Property | Type | Description |
152
+ |----------|------|-------------|
153
+ | `tempDir` | `string` | Base directory for temporary files |
154
+ | `githubToken` | `string` | GitHub API token override |
155
+ | `opencode.keys` | `Array<{name, key}>` | OpenCode API keys for `auth rotate` and other commands |
156
+
94
157
  ## VSCode Integration
95
158
 
96
159
  To make these tools available directly in your VSCode terminal, create or update `.vscode/settings.json`:
@@ -2,7 +2,7 @@
2
2
  ## Releases
3
3
  | version | tarball url |
4
4
  | :--- | :--- |
5
- | latest | https://github.com/dimaslanjaka/bin/raw/397929d/releases/bin.tgz |
5
+ | latest | https://github.com/dimaslanjaka/bin/raw/53834fc/releases/bin.tgz |
6
6
  | latest | https://github.com/dimaslanjaka/bin/raw/master/releases/bin.tgz |
7
7
 
8
8
  use this tarball with `resolutions`:
@@ -1,113 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import {
3
- require_utils as require_utils2
4
- } from "./chunk-A3VUZEJK.mjs";
5
- import {
6
- require_config
7
- } from "./chunk-SARIXFHP.mjs";
8
- import {
9
- require_utils
10
- } from "./chunk-6RK5UCTP.mjs";
11
- import {
12
- __commonJS,
13
- __require,
14
- init_esm_shims
15
- } from "./chunk-QQ4A6DLD.mjs";
16
-
17
- // src/git/user-config.cjs
18
- var require_user_config = __commonJS({
19
- "src/git/user-config.cjs"(exports, module) {
20
- init_esm_shims();
21
- var { loadDotenv } = require_config();
22
- var gch = __require("git-command-helper");
23
- var { runGitCommand, runGitCommandOutput } = require_utils2();
24
- var { getArgs } = require_utils();
25
- loadDotenv();
26
- function configureGitUser(cliUser = null, cliEmail = null, options = {}) {
27
- console.log("\n=== Configuring Git User ===");
28
- let username, email;
29
- if (cliUser && cliEmail) {
30
- username = cliUser.trim();
31
- email = cliEmail.trim();
32
- console.log("[i] Using CLI-provided user configuration");
33
- } else {
34
- username = process.env.GITHUB_USER ? process.env.GITHUB_USER.trim() : void 0;
35
- email = process.env.GITHUB_EMAIL ? process.env.GITHUB_EMAIL.trim() : void 0;
36
- if (username || email) {
37
- console.log("[i] Using environment variable user configuration");
38
- }
39
- }
40
- if (!username && !email) {
41
- console.log("[i] No Git user configuration needed (no CLI args or environment variables set)");
42
- return;
43
- }
44
- if (username) {
45
- const success = runGitCommand(["config", "user.name", username], `Set Git username to "${username}"`);
46
- if (!success) {
47
- console.log("[i] Failed to set Git username, but continuing...");
48
- }
49
- } else {
50
- console.log("[i] No username provided, skipping username configuration");
51
- }
52
- if (email) {
53
- const success = runGitCommand(["config", "user.email", email], `Set Git email to "${email}"`);
54
- if (!success) {
55
- console.log("[i] Failed to set Git email, but continuing...");
56
- }
57
- } else {
58
- console.log("[i] No email provided, skipping email configuration");
59
- }
60
- if (username || email) {
61
- console.log("[\u2713] Git user configuration completed");
62
- }
63
- if (username) {
64
- const remoteUrl = runGitCommandOutput(["remote", "get-url", "origin"], "Fetching remote URL for verification");
65
- if (remoteUrl) {
66
- console.log(`[i] Remote URL: ${remoteUrl}`);
67
- const parsedUrl = gch.parseGitHubUrl(remoteUrl);
68
- if (parsedUrl && parsedUrl.owner && username && parsedUrl.owner.toLowerCase() !== username.toLowerCase()) {
69
- console.warn(
70
- `
71
- [!] The GitHub remote owner ("${parsedUrl.owner}") does not match the configured username ("${username}").`
72
- );
73
- console.warn(`[!] If this is not intentional, consider updating the remote URL to use your username.`);
74
- console.warn(`[!] Example: git remote set-url origin https://github.com/${username}/<repo>.git
75
- `);
76
- const args = getArgs();
77
- const updateRemote = options.updateRemote || args["update-remote"] === true;
78
- if (updateRemote) {
79
- let newUrl = remoteUrl;
80
- if (/^https:\/\//.test(remoteUrl)) {
81
- newUrl = remoteUrl.replace(/https:\/\/(?:[^@]+@)?github.com/, `https://${username}@github.com`);
82
- } else if (/^git@github.com:/.test(remoteUrl)) {
83
- console.warn(
84
- `[!] For SSH remotes, set your SSH config or use HTTPS with username if you want to change authentication user.`
85
- );
86
- return;
87
- }
88
- if (newUrl !== remoteUrl) {
89
- const updated = runGitCommand(["remote", "set-url", "origin", newUrl], `Set origin to ${newUrl}`);
90
- if (updated) {
91
- console.log(`[\u2713] Remote URL updated to: ${newUrl}`);
92
- } else {
93
- console.warn(`[!] Failed to update remote URL. Please update it manually if needed.`);
94
- }
95
- } else {
96
- console.log(`[i] Remote URL does not use HTTPS or already contains the username.`);
97
- }
98
- } else {
99
- console.log(`[i] Remote URL not changed. Use --update-remote to update automatically.`);
100
- }
101
- }
102
- }
103
- }
104
- }
105
- module.exports = {
106
- configureGitUser
107
- };
108
- }
109
- });
110
-
111
- export {
112
- require_user_config
113
- };
@@ -1,77 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import {
3
- require_config
4
- } from "./chunk-SWUAEY4H.mjs";
5
- import {
6
- __toESM,
7
- init_esm_shims
8
- } from "./chunk-QQ4A6DLD.mjs";
9
-
10
- // src/rmpath.mjs
11
- init_esm_shims();
12
- var import_config = __toESM(require_config(), 1);
13
- import fs from "fs-extra";
14
- import * as glob from "glob";
15
- import path from "upath";
16
- import { fileURLToPath } from "url";
17
- var __filename = fileURLToPath(import.meta.url);
18
- var __dirname = path.dirname(__filename);
19
- (0, import_config.loadDotenv)();
20
- var deletePatterns = [];
21
- function resolveDeletePatterns(targetPath) {
22
- if (fs.existsSync(targetPath) && fs.lstatSync(targetPath).isFile()) {
23
- deletePatterns.push(targetPath);
24
- return;
25
- }
26
- const vowels = ["a", "i", "u", "e", "o", "A", "I", "U", "E", "O"];
27
- const letters = [];
28
- for (let i = 97; i <= 122; i++) letters.push(String.fromCharCode(i));
29
- for (let i = 65; i <= 90; i++) letters.push(String.fromCharCode(i));
30
- for (const letter of letters) {
31
- for (const vowel of vowels) {
32
- deletePatterns.push(
33
- `.${letter}*`,
34
- `@${letter}*`,
35
- `${letter}*`,
36
- `@${letter}${vowel}*`,
37
- `.${letter}${vowel}*`,
38
- `${letter}${vowel}*`
39
- );
40
- }
41
- }
42
- }
43
- async function deleteMatchingFiles(baseDir) {
44
- for (const pattern of deletePatterns) {
45
- if (fs.existsSync(pattern)) {
46
- fs.rmSync(pattern, { recursive: true, force: true });
47
- continue;
48
- }
49
- const matches = glob.sync(path.join(baseDir, pattern), { dot: true, nocase: true });
50
- for (const fpath of matches) {
51
- try {
52
- console.log(`deleting ${fpath}`);
53
- fs.rmSync(fpath, { recursive: true, force: true });
54
- } catch (_e) {
55
- console.error(`cannot delete ${fpath}`);
56
- }
57
- }
58
- }
59
- }
60
- async function deleteMainScript(targetPath) {
61
- if (!fs.existsSync(targetPath)) {
62
- targetPath = path.resolve(process.cwd(), targetPath);
63
- }
64
- resolveDeletePatterns(targetPath);
65
- await deleteMatchingFiles(targetPath);
66
- console.log(`cleaning ${targetPath}`);
67
- try {
68
- fs.rmSync(targetPath, { recursive: true, force: true });
69
- } catch (_e) {
70
- }
71
- }
72
-
73
- export {
74
- resolveDeletePatterns,
75
- deleteMatchingFiles,
76
- deleteMainScript
77
- };
@@ -1,45 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import {
3
- require_utils
4
- } from "./chunk-FR3DMHJC.mjs";
5
- import {
6
- __toESM,
7
- init_esm_shims
8
- } from "./chunk-QQ4A6DLD.mjs";
9
-
10
- // src/github-workflows/get-latest-workflow-status.mjs
11
- init_esm_shims();
12
- var import_utils = __toESM(require_utils(), 1);
13
- function printReport(run, jobs) {
14
- var _a;
15
- console.log("\n==============================");
16
- console.log("\u{1F680} Latest Workflow Run");
17
- console.log("==============================");
18
- console.log(`Name : ${run.name}`);
19
- console.log(`Status : ${run.status}`);
20
- console.log(`Conclusion: ${run.conclusion}`);
21
- console.log(`Branch : ${run.head_branch}`);
22
- console.log(`Run ID : ${run.id}`);
23
- console.log(`URL : ${run.html_url}`);
24
- console.log("\n==============================");
25
- console.log("\u{1F9E9} Jobs & Steps");
26
- console.log("==============================\n");
27
- for (const job of jobs) {
28
- console.log(`\u{1F9F1} Job: ${job.name}`);
29
- console.log(` Status: ${job.status} | Conclusion: ${job.conclusion}`);
30
- if (!((_a = job.steps) == null ? void 0 : _a.length)) {
31
- console.log(" (no steps found)\n");
32
- continue;
33
- }
34
- for (const step of job.steps) {
35
- const icon = step.conclusion === "success" ? "\u2705" : step.conclusion === "failure" ? "\u274C" : step.conclusion === "skipped" ? "\u23ED\uFE0F" : "\u26AA";
36
- console.log(` ${icon} ${step.name} -> ${step.conclusion} (${step.status})`);
37
- }
38
- console.log("");
39
- }
40
- }
41
-
42
- export {
43
- import_utils,
44
- printReport
45
- };
@@ -1,246 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import {
3
- require_config
4
- } from "./chunk-PAZH45HS.mjs";
5
- import {
6
- runChatGpt
7
- } from "./chunk-GAGABICI.mjs";
8
- import {
9
- require_utils
10
- } from "./chunk-6RK5UCTP.mjs";
11
- import {
12
- __toESM,
13
- init_esm_shims
14
- } from "./chunk-QQ4A6DLD.mjs";
15
-
16
- // src/git/git-diff.js
17
- init_esm_shims();
18
- var import_config = __toESM(require_config(), 1);
19
- import ansiColors from "ansi-colors";
20
- import { execSync } from "child_process";
21
- import fs from "fs-extra";
22
- import { md5, writefile } from "sbg-utility";
23
- import path from "upath";
24
- import { fileURLToPath } from "url";
25
- var import_utils = __toESM(require_utils(), 1);
26
- var __filename = fileURLToPath(import.meta.url);
27
- var __dirname = path.dirname(__filename);
28
- var args = (0, import_utils.getArgs)();
29
- var positional = args._ || [];
30
- var FILENAME = md5((positional[0] || "default") + JSON.stringify(args));
31
- var DIFF_OUTPUT = (0, import_config.getTempPath)(`git-diff/${FILENAME}.txt`);
32
- var GPT_DIFF_OUTPUT = (0, import_config.getTempPath)(`git-diff/gpt-${FILENAME}.txt`);
33
- var CACHE_DIR = path.dirname(DIFF_OUTPUT);
34
- var DIFF_OUTPUT_RELATIVE = path.relative(process.cwd(), DIFF_OUTPUT);
35
- var GPT_DIFF_OUTPUT_RELATIVE = path.relative(process.cwd(), GPT_DIFF_OUTPUT);
36
- fs.ensureDirSync(CACHE_DIR, { mode: 493 });
37
- function showHelp() {
38
- console.log("\u{1F4CB} Git Diff Helper");
39
- console.log("Usage:");
40
- console.log(" git-diff FILE Show staged diff of specified file");
41
- console.log(" git-diff --staged-only Show staged diff of all files");
42
- console.log(" git-diff -s | -S Same as --staged-only");
43
- console.log(" git-diff --unstaged FILE Show unstaged diff of specified file");
44
- console.log(" git-diff --unstaged Show unstaged diff of all files");
45
- console.log(" git-diff -u Same as --unstaged");
46
- console.log(" git-diff --ai Run ChatGPT automation for commit message");
47
- console.log(" git-diff --help | -h Show this help message");
48
- console.log("");
49
- console.log(`\u{1F4BE} Output is saved to: ${DIFF_OUTPUT_RELATIVE}`);
50
- console.log(`\u{1F916} GPT prompt is saved to: ${GPT_DIFF_OUTPUT_RELATIVE}`);
51
- process.exit(0);
52
- }
53
- function runGitDiff(command, successMessage, errorMessage) {
54
- try {
55
- console.log(`\u2139\uFE0F Running command: ${command}`);
56
- const result = execSync(command, {
57
- encoding: "utf8",
58
- maxBuffer: 1024 * 1024 * 10
59
- // 10MB buffer to handle large diffs
60
- });
61
- if (!result || result.trim() === "") {
62
- console.log(`\u2139\uFE0F No changes found for the specified criteria`);
63
- writefile(DIFF_OUTPUT, "# No changes found\n");
64
- console.log(`\u2705 Empty diff saved to "${DIFF_OUTPUT_RELATIVE}"`);
65
- return false;
66
- }
67
- writefile(DIFF_OUTPUT, result);
68
- writefile(
69
- GPT_DIFF_OUTPUT,
70
- `Hello!
71
- Can you create a conventional commit message by diff content below:
72
-
73
- \`\`\`${result}
74
- \`\`\`
75
-
76
- Give me result as codeblock with language "text" only.
77
-
78
- Thank you!`
79
- );
80
- console.log(`\u2705 ${successMessage}`);
81
- console.log(`\u{1F4BE} GPT diff prompt saved to "${ansiColors.green(GPT_DIFF_OUTPUT_RELATIVE)}"`);
82
- return true;
83
- } catch (error) {
84
- console.error(`\u274C ${errorMessage}`);
85
- console.error(`\u274C Command: ${command}`);
86
- console.error(`\u274C Error: ${error.message}`);
87
- if (error.message.includes("not a git repository")) {
88
- console.error("\u274C Make sure you are in a git repository");
89
- }
90
- process.exit(1);
91
- }
92
- }
93
- function getUntrackedDiff() {
94
- try {
95
- const untrackedStr = execSync("git ls-files --others --exclude-standard", {
96
- encoding: "utf8",
97
- maxBuffer: 1024 * 1024 * 10
98
- }).trim();
99
- if (!untrackedStr) return "";
100
- const untrackedFiles = untrackedStr.split("\n").filter(function(f) {
101
- return f;
102
- });
103
- if (untrackedFiles.length === 0) return "";
104
- var result = "\n# Untracked files:\n";
105
- for (var i = 0; i < untrackedFiles.length; i++) {
106
- var file = untrackedFiles[i];
107
- if (!fs.existsSync(file)) continue;
108
- var stat = fs.statSync(file);
109
- if (!stat.isFile()) continue;
110
- var content;
111
- try {
112
- content = fs.readFileSync(file, "utf8");
113
- } catch (_a) {
114
- continue;
115
- }
116
- var lines = content.split("\n");
117
- if (lines.length > 0 && lines[lines.length - 1] === "") {
118
- lines.pop();
119
- }
120
- result += "diff --git a/" + file + " b/" + file + "\n";
121
- result += "new file mode 100644\n";
122
- result += "index 0000000..0000000\n";
123
- result += "--- /dev/null\n";
124
- result += "+++ b/" + file + "\n";
125
- result += "@@ -0,0 +1," + (lines.length || 0) + " @@\n";
126
- for (var j = 0; j < lines.length; j++) {
127
- result += "+" + lines[j] + "\n";
128
- }
129
- }
130
- return result;
131
- } catch (_b) {
132
- return "";
133
- }
134
- }
135
- function fileHasChanges(file, mode) {
136
- const command = mode === "staged" ? `git diff --cached --quiet -- "${file}"` : `git diff --quiet -- "${file}"`;
137
- try {
138
- execSync(command, { stdio: "ignore" });
139
- return false;
140
- } catch (error) {
141
- if (error.status === 1) {
142
- return true;
143
- }
144
- throw error;
145
- }
146
- }
147
- async function mainGitDiff() {
148
- if (args.help || args.h) {
149
- showHelp();
150
- }
151
- const useUnstaged = args.unstaged || args.u;
152
- const fileFromFlag = typeof args.unstaged === "string" ? args.unstaged : typeof args.u === "string" ? args.u : null;
153
- let hasDiff = false;
154
- if (args["staged-only"] || args.s || args.S) {
155
- hasDiff = runGitDiff(
156
- "git --no-pager diff --staged",
157
- `Full staged diff saved to "${ansiColors.green(DIFF_OUTPUT_RELATIVE)}"`,
158
- "Failed to save staged diff"
159
- );
160
- } else {
161
- const file = positional[0] || fileFromFlag;
162
- if (!file) {
163
- const fullDiffModeLabel = useUnstaged ? "unstaged" : "unstaged";
164
- hasDiff = runGitDiff(
165
- "git --no-pager diff",
166
- `Full ${fullDiffModeLabel} diff saved to "${ansiColors.green(DIFF_OUTPUT_RELATIVE)}"`,
167
- "Failed to save all diff's"
168
- );
169
- const untrackedDiff = getUntrackedDiff();
170
- if (untrackedDiff) {
171
- const UNTRACKED_DIFF_OUTPUT = (0, import_config.getTempPath)(`git-diff/untracked-${FILENAME}.txt`);
172
- const UNTRACKED_GPT_DIFF_OUTPUT = (0, import_config.getTempPath)(`git-diff/gpt-untracked-${FILENAME}.txt`);
173
- const UNTRACKED_DIFF_OUTPUT_RELATIVE = path.relative(process.cwd(), UNTRACKED_DIFF_OUTPUT);
174
- writefile(UNTRACKED_DIFF_OUTPUT, untrackedDiff);
175
- writefile(
176
- UNTRACKED_GPT_DIFF_OUTPUT,
177
- `Hello!
178
- Can you create a conventional commit message by diff content below:
179
-
180
- \`\`\`${untrackedDiff}
181
- \`\`\`
182
-
183
- Give me result as codeblock with language "text" only.
184
-
185
- Thank you!`
186
- );
187
- console.log(`\u2705 Untracked file diff saved to "${ansiColors.green(UNTRACKED_DIFF_OUTPUT_RELATIVE)}"`);
188
- console.log(
189
- `\u{1F4BE} AI diff prompt saved to "${ansiColors.green(path.relative(process.cwd(), UNTRACKED_GPT_DIFF_OUTPUT))}"`
190
- );
191
- hasDiff = true;
192
- }
193
- } else {
194
- let fileDiffMode = useUnstaged ? "unstaged" : "staged";
195
- if (!useUnstaged && !fileHasChanges(file, "staged") && fileHasChanges(file, "unstaged")) {
196
- fileDiffMode = "unstaged";
197
- }
198
- hasDiff = runGitDiff(
199
- fileDiffMode === "unstaged" ? `git --no-pager diff -- "${file}"` : `git --no-pager diff --cached -- "${file}"`,
200
- `${fileDiffMode[0].toUpperCase() + fileDiffMode.slice(1)} diff of "${file}" saved to "${ansiColors.green(
201
- DIFF_OUTPUT_RELATIVE
202
- )}"`,
203
- `Failed to generate ${fileDiffMode} diff for "${file}"`
204
- );
205
- }
206
- }
207
- if (hasDiff) {
208
- const opencodePrompt = [
209
- "",
210
- "\u{1F916} OpenCode Prompt Helper",
211
- "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",
212
- "",
213
- "\u{1F4C4} App Prompt:",
214
- ` Generate a conventional commit message from diff file: ${DIFF_OUTPUT}`,
215
- "",
216
- "\u{1F4BB} CLI Command:",
217
- ` opencode run "Generate a conventional commit message from diff file ${DIFF_OUTPUT}"`,
218
- ""
219
- ];
220
- const opencodePromptPath = (0, import_config.getTempPath)(`git-diff/opencode-${FILENAME}.txt`);
221
- writefile(opencodePromptPath, opencodePrompt.join("\n"));
222
- console.log(`\u2705 OpenCode prompt saved to "${ansiColors.green(path.relative(process.cwd(), opencodePromptPath))}"`);
223
- }
224
- if (args.ai) {
225
- try {
226
- await runChatGpt({ headless: true, questionFile: GPT_DIFF_OUTPUT });
227
- } catch (error) {
228
- console.error("\u274C Error running ChatGPT:", error.message);
229
- console.error("\u{1F4A1} Try running with visible browser mode or check if Chrome is installed");
230
- }
231
- } else {
232
- console.log("\u{1F4A1} Use --ai flag to generate commit message with ChatGPT");
233
- }
234
- }
235
- var git_diff_default = runGitDiff;
236
-
237
- export {
238
- DIFF_OUTPUT,
239
- GPT_DIFF_OUTPUT,
240
- CACHE_DIR,
241
- DIFF_OUTPUT_RELATIVE,
242
- GPT_DIFF_OUTPUT_RELATIVE,
243
- runGitDiff,
244
- mainGitDiff,
245
- git_diff_default
246
- };