bun-git-hooks 0.1.0

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/dist/index.js ADDED
@@ -0,0 +1,831 @@
1
+ // node:path
2
+ var L = Object.create;
3
+ var h = Object.defineProperty;
4
+ var D = Object.getOwnPropertyDescriptor;
5
+ var T = Object.getOwnPropertyNames;
6
+ var _ = Object.getPrototypeOf;
7
+ var E = Object.prototype.hasOwnProperty;
8
+ var R = (s, e) => () => (e || s((e = { exports: {} }).exports, e), e.exports);
9
+ var N = (s, e, r, t) => {
10
+ if (e && typeof e == "object" || typeof e == "function")
11
+ for (let i of T(e))
12
+ !E.call(s, i) && i !== r && h(s, i, { get: () => e[i], enumerable: !(t = D(e, i)) || t.enumerable });
13
+ return s;
14
+ };
15
+ var j = (s, e, r) => (r = s != null ? L(_(s)) : {}, N(e || !s || !s.__esModule ? h(r, "default", { value: s, enumerable: true }) : r, s));
16
+ var k = R((W, w) => {
17
+ function v(s) {
18
+ if (typeof s != "string")
19
+ throw new TypeError("Path must be a string. Received " + JSON.stringify(s));
20
+ }
21
+ function C(s, e) {
22
+ for (var r = "", t = 0, i = -1, a = 0, n, l = 0;l <= s.length; ++l) {
23
+ if (l < s.length)
24
+ n = s.charCodeAt(l);
25
+ else {
26
+ if (n === 47)
27
+ break;
28
+ n = 47;
29
+ }
30
+ if (n === 47) {
31
+ if (!(i === l - 1 || a === 1))
32
+ if (i !== l - 1 && a === 2) {
33
+ if (r.length < 2 || t !== 2 || r.charCodeAt(r.length - 1) !== 46 || r.charCodeAt(r.length - 2) !== 46) {
34
+ if (r.length > 2) {
35
+ var f = r.lastIndexOf("/");
36
+ if (f !== r.length - 1) {
37
+ f === -1 ? (r = "", t = 0) : (r = r.slice(0, f), t = r.length - 1 - r.lastIndexOf("/")), i = l, a = 0;
38
+ continue;
39
+ }
40
+ } else if (r.length === 2 || r.length === 1) {
41
+ r = "", t = 0, i = l, a = 0;
42
+ continue;
43
+ }
44
+ }
45
+ e && (r.length > 0 ? r += "/.." : r = "..", t = 2);
46
+ } else
47
+ r.length > 0 ? r += "/" + s.slice(i + 1, l) : r = s.slice(i + 1, l), t = l - i - 1;
48
+ i = l, a = 0;
49
+ } else
50
+ n === 46 && a !== -1 ? ++a : a = -1;
51
+ }
52
+ return r;
53
+ }
54
+ function F(s, e) {
55
+ var r = e.dir || e.root, t = e.base || (e.name || "") + (e.ext || "");
56
+ return r ? r === e.root ? r + t : r + s + t : t;
57
+ }
58
+ var m = { resolve: function() {
59
+ for (var e = "", r = false, t, i = arguments.length - 1;i >= -1 && !r; i--) {
60
+ var a;
61
+ i >= 0 ? a = arguments[i] : (t === undefined && (t = process.cwd()), a = t), v(a), a.length !== 0 && (e = a + "/" + e, r = a.charCodeAt(0) === 47);
62
+ }
63
+ return e = C(e, !r), r ? e.length > 0 ? "/" + e : "/" : e.length > 0 ? e : ".";
64
+ }, normalize: function(e) {
65
+ if (v(e), e.length === 0)
66
+ return ".";
67
+ var r = e.charCodeAt(0) === 47, t = e.charCodeAt(e.length - 1) === 47;
68
+ return e = C(e, !r), e.length === 0 && !r && (e = "."), e.length > 0 && t && (e += "/"), r ? "/" + e : e;
69
+ }, isAbsolute: function(e) {
70
+ return v(e), e.length > 0 && e.charCodeAt(0) === 47;
71
+ }, join: function() {
72
+ if (arguments.length === 0)
73
+ return ".";
74
+ for (var e, r = 0;r < arguments.length; ++r) {
75
+ var t = arguments[r];
76
+ v(t), t.length > 0 && (e === undefined ? e = t : e += "/" + t);
77
+ }
78
+ return e === undefined ? "." : m.normalize(e);
79
+ }, relative: function(e, r) {
80
+ if (v(e), v(r), e === r || (e = m.resolve(e), r = m.resolve(r), e === r))
81
+ return "";
82
+ for (var t = 1;t < e.length && e.charCodeAt(t) === 47; ++t)
83
+ ;
84
+ for (var i = e.length, a = i - t, n = 1;n < r.length && r.charCodeAt(n) === 47; ++n)
85
+ ;
86
+ for (var l = r.length, f = l - n, c = a < f ? a : f, d = -1, o = 0;o <= c; ++o) {
87
+ if (o === c) {
88
+ if (f > c) {
89
+ if (r.charCodeAt(n + o) === 47)
90
+ return r.slice(n + o + 1);
91
+ if (o === 0)
92
+ return r.slice(n + o);
93
+ } else
94
+ a > c && (e.charCodeAt(t + o) === 47 ? d = o : o === 0 && (d = 0));
95
+ break;
96
+ }
97
+ var A = e.charCodeAt(t + o), z = r.charCodeAt(n + o);
98
+ if (A !== z)
99
+ break;
100
+ A === 47 && (d = o);
101
+ }
102
+ var b = "";
103
+ for (o = t + d + 1;o <= i; ++o)
104
+ (o === i || e.charCodeAt(o) === 47) && (b.length === 0 ? b += ".." : b += "/..");
105
+ return b.length > 0 ? b + r.slice(n + d) : (n += d, r.charCodeAt(n) === 47 && ++n, r.slice(n));
106
+ }, _makeLong: function(e) {
107
+ return e;
108
+ }, dirname: function(e) {
109
+ if (v(e), e.length === 0)
110
+ return ".";
111
+ for (var r = e.charCodeAt(0), t = r === 47, i = -1, a = true, n = e.length - 1;n >= 1; --n)
112
+ if (r = e.charCodeAt(n), r === 47) {
113
+ if (!a) {
114
+ i = n;
115
+ break;
116
+ }
117
+ } else
118
+ a = false;
119
+ return i === -1 ? t ? "/" : "." : t && i === 1 ? "//" : e.slice(0, i);
120
+ }, basename: function(e, r) {
121
+ if (r !== undefined && typeof r != "string")
122
+ throw new TypeError('"ext" argument must be a string');
123
+ v(e);
124
+ var t = 0, i = -1, a = true, n;
125
+ if (r !== undefined && r.length > 0 && r.length <= e.length) {
126
+ if (r.length === e.length && r === e)
127
+ return "";
128
+ var l = r.length - 1, f = -1;
129
+ for (n = e.length - 1;n >= 0; --n) {
130
+ var c = e.charCodeAt(n);
131
+ if (c === 47) {
132
+ if (!a) {
133
+ t = n + 1;
134
+ break;
135
+ }
136
+ } else
137
+ f === -1 && (a = false, f = n + 1), l >= 0 && (c === r.charCodeAt(l) ? --l === -1 && (i = n) : (l = -1, i = f));
138
+ }
139
+ return t === i ? i = f : i === -1 && (i = e.length), e.slice(t, i);
140
+ } else {
141
+ for (n = e.length - 1;n >= 0; --n)
142
+ if (e.charCodeAt(n) === 47) {
143
+ if (!a) {
144
+ t = n + 1;
145
+ break;
146
+ }
147
+ } else
148
+ i === -1 && (a = false, i = n + 1);
149
+ return i === -1 ? "" : e.slice(t, i);
150
+ }
151
+ }, extname: function(e) {
152
+ v(e);
153
+ for (var r = -1, t = 0, i = -1, a = true, n = 0, l = e.length - 1;l >= 0; --l) {
154
+ var f = e.charCodeAt(l);
155
+ if (f === 47) {
156
+ if (!a) {
157
+ t = l + 1;
158
+ break;
159
+ }
160
+ continue;
161
+ }
162
+ i === -1 && (a = false, i = l + 1), f === 46 ? r === -1 ? r = l : n !== 1 && (n = 1) : r !== -1 && (n = -1);
163
+ }
164
+ return r === -1 || i === -1 || n === 0 || n === 1 && r === i - 1 && r === t + 1 ? "" : e.slice(r, i);
165
+ }, format: function(e) {
166
+ if (e === null || typeof e != "object")
167
+ throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof e);
168
+ return F("/", e);
169
+ }, parse: function(e) {
170
+ v(e);
171
+ var r = { root: "", dir: "", base: "", ext: "", name: "" };
172
+ if (e.length === 0)
173
+ return r;
174
+ var t = e.charCodeAt(0), i = t === 47, a;
175
+ i ? (r.root = "/", a = 1) : a = 0;
176
+ for (var n = -1, l = 0, f = -1, c = true, d = e.length - 1, o = 0;d >= a; --d) {
177
+ if (t = e.charCodeAt(d), t === 47) {
178
+ if (!c) {
179
+ l = d + 1;
180
+ break;
181
+ }
182
+ continue;
183
+ }
184
+ f === -1 && (c = false, f = d + 1), t === 46 ? n === -1 ? n = d : o !== 1 && (o = 1) : n !== -1 && (o = -1);
185
+ }
186
+ return n === -1 || f === -1 || o === 0 || o === 1 && n === f - 1 && n === l + 1 ? f !== -1 && (l === 0 && i ? r.base = r.name = e.slice(1, f) : r.base = r.name = e.slice(l, f)) : (l === 0 && i ? (r.name = e.slice(1, n), r.base = e.slice(1, f)) : (r.name = e.slice(l, n), r.base = e.slice(l, f)), r.ext = e.slice(n, f)), l > 0 ? r.dir = e.slice(0, l - 1) : i && (r.dir = "/"), r;
187
+ }, sep: "/", delimiter: ":", win32: null, posix: null };
188
+ m.posix = m;
189
+ w.exports = m;
190
+ });
191
+ var x = j(k());
192
+ var u = x;
193
+ var J = x;
194
+ var P = function(s) {
195
+ return s;
196
+ };
197
+ var S = function() {
198
+ throw new Error("Not implemented");
199
+ };
200
+ u.parse ??= S;
201
+ J.parse ??= S;
202
+ var g = { resolve: u.resolve.bind(u), normalize: u.normalize.bind(u), isAbsolute: u.isAbsolute.bind(u), join: u.join.bind(u), relative: u.relative.bind(u), toNamespacedPath: P, dirname: u.dirname.bind(u), basename: u.basename.bind(u), extname: u.extname.bind(u), format: u.format.bind(u), parse: u.parse.bind(u), sep: "/", delimiter: ":", win32: undefined, posix: undefined, _makeLong: P };
203
+ var y = { sep: "\\", delimiter: ";", win32: undefined, ...g, posix: g };
204
+ g.win32 = y.win32 = y;
205
+ g.posix = g;
206
+ var q = g;
207
+ var { resolve: B, normalize: G, isAbsolute: H, join: K, relative: Q, toNamespacedPath: U, dirname: V, basename: X, extname: Y, format: Z, parse: $, sep: I, delimiter: O } = g;
208
+
209
+ // node_modules/bunfig/dist/index.js
210
+ var L2 = Object.create;
211
+ var h2 = Object.defineProperty;
212
+ var D2 = Object.getOwnPropertyDescriptor;
213
+ var T2 = Object.getOwnPropertyNames;
214
+ var _2 = Object.getPrototypeOf;
215
+ var E2 = Object.prototype.hasOwnProperty;
216
+ var R2 = (s, e) => () => (e || s((e = { exports: {} }).exports, e), e.exports);
217
+ var N2 = (s, e, r, t) => {
218
+ if (e && typeof e == "object" || typeof e == "function")
219
+ for (let i of T2(e))
220
+ !E2.call(s, i) && i !== r && h2(s, i, { get: () => e[i], enumerable: !(t = D2(e, i)) || t.enumerable });
221
+ return s;
222
+ };
223
+ var j2 = (s, e, r) => (r = s != null ? L2(_2(s)) : {}, N2(e || !s || !s.__esModule ? h2(r, "default", { value: s, enumerable: true }) : r, s));
224
+ var k2 = R2((W, w) => {
225
+ function v(s) {
226
+ if (typeof s != "string")
227
+ throw new TypeError("Path must be a string. Received " + JSON.stringify(s));
228
+ }
229
+ function C(s, e) {
230
+ for (var r = "", t = 0, i = -1, a = 0, n, l = 0;l <= s.length; ++l) {
231
+ if (l < s.length)
232
+ n = s.charCodeAt(l);
233
+ else {
234
+ if (n === 47)
235
+ break;
236
+ n = 47;
237
+ }
238
+ if (n === 47) {
239
+ if (!(i === l - 1 || a === 1))
240
+ if (i !== l - 1 && a === 2) {
241
+ if (r.length < 2 || t !== 2 || r.charCodeAt(r.length - 1) !== 46 || r.charCodeAt(r.length - 2) !== 46) {
242
+ if (r.length > 2) {
243
+ var f = r.lastIndexOf("/");
244
+ if (f !== r.length - 1) {
245
+ f === -1 ? (r = "", t = 0) : (r = r.slice(0, f), t = r.length - 1 - r.lastIndexOf("/")), i = l, a = 0;
246
+ continue;
247
+ }
248
+ } else if (r.length === 2 || r.length === 1) {
249
+ r = "", t = 0, i = l, a = 0;
250
+ continue;
251
+ }
252
+ }
253
+ e && (r.length > 0 ? r += "/.." : r = "..", t = 2);
254
+ } else
255
+ r.length > 0 ? r += "/" + s.slice(i + 1, l) : r = s.slice(i + 1, l), t = l - i - 1;
256
+ i = l, a = 0;
257
+ } else
258
+ n === 46 && a !== -1 ? ++a : a = -1;
259
+ }
260
+ return r;
261
+ }
262
+ function F(s, e) {
263
+ var r = e.dir || e.root, t = e.base || (e.name || "") + (e.ext || "");
264
+ return r ? r === e.root ? r + t : r + s + t : t;
265
+ }
266
+ var m = { resolve: function() {
267
+ for (var e = "", r = false, t, i = arguments.length - 1;i >= -1 && !r; i--) {
268
+ var a;
269
+ i >= 0 ? a = arguments[i] : (t === undefined && (t = process.cwd()), a = t), v(a), a.length !== 0 && (e = a + "/" + e, r = a.charCodeAt(0) === 47);
270
+ }
271
+ return e = C(e, !r), r ? e.length > 0 ? "/" + e : "/" : e.length > 0 ? e : ".";
272
+ }, normalize: function(e) {
273
+ if (v(e), e.length === 0)
274
+ return ".";
275
+ var r = e.charCodeAt(0) === 47, t = e.charCodeAt(e.length - 1) === 47;
276
+ return e = C(e, !r), e.length === 0 && !r && (e = "."), e.length > 0 && t && (e += "/"), r ? "/" + e : e;
277
+ }, isAbsolute: function(e) {
278
+ return v(e), e.length > 0 && e.charCodeAt(0) === 47;
279
+ }, join: function() {
280
+ if (arguments.length === 0)
281
+ return ".";
282
+ for (var e, r = 0;r < arguments.length; ++r) {
283
+ var t = arguments[r];
284
+ v(t), t.length > 0 && (e === undefined ? e = t : e += "/" + t);
285
+ }
286
+ return e === undefined ? "." : m.normalize(e);
287
+ }, relative: function(e, r) {
288
+ if (v(e), v(r), e === r || (e = m.resolve(e), r = m.resolve(r), e === r))
289
+ return "";
290
+ for (var t = 1;t < e.length && e.charCodeAt(t) === 47; ++t)
291
+ ;
292
+ for (var i = e.length, a = i - t, n = 1;n < r.length && r.charCodeAt(n) === 47; ++n)
293
+ ;
294
+ for (var l = r.length, f = l - n, c = a < f ? a : f, d = -1, o = 0;o <= c; ++o) {
295
+ if (o === c) {
296
+ if (f > c) {
297
+ if (r.charCodeAt(n + o) === 47)
298
+ return r.slice(n + o + 1);
299
+ if (o === 0)
300
+ return r.slice(n + o);
301
+ } else
302
+ a > c && (e.charCodeAt(t + o) === 47 ? d = o : o === 0 && (d = 0));
303
+ break;
304
+ }
305
+ var A = e.charCodeAt(t + o), z = r.charCodeAt(n + o);
306
+ if (A !== z)
307
+ break;
308
+ A === 47 && (d = o);
309
+ }
310
+ var b = "";
311
+ for (o = t + d + 1;o <= i; ++o)
312
+ (o === i || e.charCodeAt(o) === 47) && (b.length === 0 ? b += ".." : b += "/..");
313
+ return b.length > 0 ? b + r.slice(n + d) : (n += d, r.charCodeAt(n) === 47 && ++n, r.slice(n));
314
+ }, _makeLong: function(e) {
315
+ return e;
316
+ }, dirname: function(e) {
317
+ if (v(e), e.length === 0)
318
+ return ".";
319
+ for (var r = e.charCodeAt(0), t = r === 47, i = -1, a = true, n = e.length - 1;n >= 1; --n)
320
+ if (r = e.charCodeAt(n), r === 47) {
321
+ if (!a) {
322
+ i = n;
323
+ break;
324
+ }
325
+ } else
326
+ a = false;
327
+ return i === -1 ? t ? "/" : "." : t && i === 1 ? "//" : e.slice(0, i);
328
+ }, basename: function(e, r) {
329
+ if (r !== undefined && typeof r != "string")
330
+ throw new TypeError('"ext" argument must be a string');
331
+ v(e);
332
+ var t = 0, i = -1, a = true, n;
333
+ if (r !== undefined && r.length > 0 && r.length <= e.length) {
334
+ if (r.length === e.length && r === e)
335
+ return "";
336
+ var l = r.length - 1, f = -1;
337
+ for (n = e.length - 1;n >= 0; --n) {
338
+ var c = e.charCodeAt(n);
339
+ if (c === 47) {
340
+ if (!a) {
341
+ t = n + 1;
342
+ break;
343
+ }
344
+ } else
345
+ f === -1 && (a = false, f = n + 1), l >= 0 && (c === r.charCodeAt(l) ? --l === -1 && (i = n) : (l = -1, i = f));
346
+ }
347
+ return t === i ? i = f : i === -1 && (i = e.length), e.slice(t, i);
348
+ } else {
349
+ for (n = e.length - 1;n >= 0; --n)
350
+ if (e.charCodeAt(n) === 47) {
351
+ if (!a) {
352
+ t = n + 1;
353
+ break;
354
+ }
355
+ } else
356
+ i === -1 && (a = false, i = n + 1);
357
+ return i === -1 ? "" : e.slice(t, i);
358
+ }
359
+ }, extname: function(e) {
360
+ v(e);
361
+ for (var r = -1, t = 0, i = -1, a = true, n = 0, l = e.length - 1;l >= 0; --l) {
362
+ var f = e.charCodeAt(l);
363
+ if (f === 47) {
364
+ if (!a) {
365
+ t = l + 1;
366
+ break;
367
+ }
368
+ continue;
369
+ }
370
+ i === -1 && (a = false, i = l + 1), f === 46 ? r === -1 ? r = l : n !== 1 && (n = 1) : r !== -1 && (n = -1);
371
+ }
372
+ return r === -1 || i === -1 || n === 0 || n === 1 && r === i - 1 && r === t + 1 ? "" : e.slice(r, i);
373
+ }, format: function(e) {
374
+ if (e === null || typeof e != "object")
375
+ throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof e);
376
+ return F("/", e);
377
+ }, parse: function(e) {
378
+ v(e);
379
+ var r = { root: "", dir: "", base: "", ext: "", name: "" };
380
+ if (e.length === 0)
381
+ return r;
382
+ var t = e.charCodeAt(0), i = t === 47, a;
383
+ i ? (r.root = "/", a = 1) : a = 0;
384
+ for (var n = -1, l = 0, f = -1, c = true, d = e.length - 1, o = 0;d >= a; --d) {
385
+ if (t = e.charCodeAt(d), t === 47) {
386
+ if (!c) {
387
+ l = d + 1;
388
+ break;
389
+ }
390
+ continue;
391
+ }
392
+ f === -1 && (c = false, f = d + 1), t === 46 ? n === -1 ? n = d : o !== 1 && (o = 1) : n !== -1 && (o = -1);
393
+ }
394
+ return n === -1 || f === -1 || o === 0 || o === 1 && n === f - 1 && n === l + 1 ? f !== -1 && (l === 0 && i ? r.base = r.name = e.slice(1, f) : r.base = r.name = e.slice(l, f)) : (l === 0 && i ? (r.name = e.slice(1, n), r.base = e.slice(1, f)) : (r.name = e.slice(l, n), r.base = e.slice(l, f)), r.ext = e.slice(n, f)), l > 0 ? r.dir = e.slice(0, l - 1) : i && (r.dir = "/"), r;
395
+ }, sep: "/", delimiter: ":", win32: null, posix: null };
396
+ m.posix = m;
397
+ w.exports = m;
398
+ });
399
+ var x2 = j2(k2());
400
+ var u2 = x2;
401
+ var J2 = x2;
402
+ var P2 = function(s) {
403
+ return s;
404
+ };
405
+ var S2 = function() {
406
+ throw new Error("Not implemented");
407
+ };
408
+ u2.parse ??= S2;
409
+ J2.parse ??= S2;
410
+ var g2 = { resolve: u2.resolve.bind(u2), normalize: u2.normalize.bind(u2), isAbsolute: u2.isAbsolute.bind(u2), join: u2.join.bind(u2), relative: u2.relative.bind(u2), toNamespacedPath: P2, dirname: u2.dirname.bind(u2), basename: u2.basename.bind(u2), extname: u2.extname.bind(u2), format: u2.format.bind(u2), parse: u2.parse.bind(u2), sep: "/", delimiter: ":", win32: undefined, posix: undefined, _makeLong: P2 };
411
+ var y2 = { sep: "\\", delimiter: ";", win32: undefined, ...g2, posix: g2 };
412
+ g2.win32 = y2.win32 = y2;
413
+ g2.posix = g2;
414
+ var { resolve: B2, normalize: G2, isAbsolute: H2, join: K2, relative: Q2, toNamespacedPath: U2, dirname: V2, basename: X2, extname: Y2, format: Z2, parse: $2, sep: I2, delimiter: O2 } = g2;
415
+ function deepMerge(target, source) {
416
+ if (Array.isArray(source) && !Array.isArray(target)) {
417
+ return source;
418
+ }
419
+ if (Array.isArray(source) && Array.isArray(target)) {
420
+ return source.map((sourceItem, index) => {
421
+ const targetItem = target[index];
422
+ if (isObject(sourceItem) && isObject(targetItem)) {
423
+ return deepMerge(targetItem, sourceItem);
424
+ }
425
+ return sourceItem;
426
+ });
427
+ }
428
+ if (!isObject(source) || !isObject(target)) {
429
+ return source;
430
+ }
431
+ const merged = { ...target };
432
+ for (const key in source) {
433
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
434
+ const sourceValue = source[key];
435
+ const targetValue = merged[key];
436
+ if (sourceValue === null || sourceValue === undefined) {
437
+ merged[key] = sourceValue;
438
+ } else if (isObject(sourceValue) && isObject(targetValue)) {
439
+ merged[key] = deepMerge(targetValue, sourceValue);
440
+ } else {
441
+ merged[key] = sourceValue;
442
+ }
443
+ }
444
+ }
445
+ return merged;
446
+ }
447
+ function isObject(item) {
448
+ return Boolean(item && typeof item === "object" && !Array.isArray(item));
449
+ }
450
+ async function tryLoadConfig(configPath, defaultConfig) {
451
+ try {
452
+ const importedConfig = await import(configPath);
453
+ const loadedConfig = importedConfig.default || importedConfig;
454
+ return deepMerge(defaultConfig, loadedConfig);
455
+ } catch {
456
+ return null;
457
+ }
458
+ }
459
+ async function loadConfig({
460
+ name,
461
+ cwd,
462
+ defaultConfig,
463
+ endpoint,
464
+ headers = {
465
+ Accept: "application/json",
466
+ "Content-Type": "application/json"
467
+ }
468
+ }) {
469
+ if (typeof window === "undefined") {
470
+ const baseDir = cwd || "../../../";
471
+ const configPaths = [
472
+ `${name}.config`,
473
+ `.${name}.config`,
474
+ name,
475
+ `.${name}`
476
+ ];
477
+ for (const configPath of configPaths) {
478
+ const fullPath = B2(baseDir, configPath);
479
+ const config = await tryLoadConfig(fullPath, defaultConfig);
480
+ if (config !== null) {
481
+ return config;
482
+ }
483
+ }
484
+ console.error("Failed to load client config from any expected location");
485
+ return defaultConfig;
486
+ }
487
+ if (!endpoint) {
488
+ console.warn("An API endpoint is required to load the client config.");
489
+ return defaultConfig;
490
+ }
491
+ try {
492
+ const response = await fetch(endpoint, {
493
+ method: "GET",
494
+ headers
495
+ });
496
+ if (!response.ok) {
497
+ throw new Error(`HTTP error! status: ${response.status}`);
498
+ }
499
+ const loadedConfig = await response.json();
500
+ return deepMerge(defaultConfig, loadedConfig);
501
+ } catch (error) {
502
+ console.error("Failed to load client config:", error);
503
+ return defaultConfig;
504
+ }
505
+ }
506
+
507
+ // src/config.ts
508
+ var __dirname = "/home/runner/work/bun-git-hooks/bun-git-hooks/src";
509
+ var defaultConfig = {
510
+ verbose: true
511
+ };
512
+ var config = await loadConfig({
513
+ name: "git-hooks",
514
+ cwd: B(__dirname, ".."),
515
+ defaultConfig
516
+ });
517
+ // src/git-hooks.ts
518
+ var { default: fs} = (() => ({}));
519
+
520
+ // node:process
521
+ var C = Object.create;
522
+ var T3 = Object.defineProperty;
523
+ var q2 = Object.getOwnPropertyDescriptor;
524
+ var A = Object.getOwnPropertyNames;
525
+ var I3 = Object.getPrototypeOf;
526
+ var Q3 = Object.prototype.hasOwnProperty;
527
+ var S3 = (e, t) => () => (t || e((t = { exports: {} }).exports, t), t.exports);
528
+ var N3 = (e, t) => {
529
+ for (var n in t)
530
+ T3(e, n, { get: t[n], enumerable: true });
531
+ };
532
+ var d = (e, t, n, w) => {
533
+ if (t && typeof t == "object" || typeof t == "function")
534
+ for (let l of A(t))
535
+ !Q3.call(e, l) && l !== n && T3(e, l, { get: () => t[l], enumerable: !(w = q2(t, l)) || w.enumerable });
536
+ return e;
537
+ };
538
+ var h3 = (e, t, n) => (d(e, t, "default"), n && d(n, t, "default"));
539
+ var y3 = (e, t, n) => (n = e != null ? C(I3(e)) : {}, d(t || !e || !e.__esModule ? T3(n, "default", { value: e, enumerable: true }) : n, e));
540
+ var v = S3((B3, E3) => {
541
+ var r = E3.exports = {}, i, u3;
542
+ function p() {
543
+ throw new Error("setTimeout has not been defined");
544
+ }
545
+ function g3() {
546
+ throw new Error("clearTimeout has not been defined");
547
+ }
548
+ (function() {
549
+ try {
550
+ typeof setTimeout == "function" ? i = setTimeout : i = p;
551
+ } catch {
552
+ i = p;
553
+ }
554
+ try {
555
+ typeof clearTimeout == "function" ? u3 = clearTimeout : u3 = g3;
556
+ } catch {
557
+ u3 = g3;
558
+ }
559
+ })();
560
+ function b(e) {
561
+ if (i === setTimeout)
562
+ return setTimeout(e, 0);
563
+ if ((i === p || !i) && setTimeout)
564
+ return i = setTimeout, setTimeout(e, 0);
565
+ try {
566
+ return i(e, 0);
567
+ } catch {
568
+ try {
569
+ return i.call(null, e, 0);
570
+ } catch {
571
+ return i.call(this, e, 0);
572
+ }
573
+ }
574
+ }
575
+ function O3(e) {
576
+ if (u3 === clearTimeout)
577
+ return clearTimeout(e);
578
+ if ((u3 === g3 || !u3) && clearTimeout)
579
+ return u3 = clearTimeout, clearTimeout(e);
580
+ try {
581
+ return u3(e);
582
+ } catch {
583
+ try {
584
+ return u3.call(null, e);
585
+ } catch {
586
+ return u3.call(this, e);
587
+ }
588
+ }
589
+ }
590
+ var o = [], s = false, a, m = -1;
591
+ function U3() {
592
+ !s || !a || (s = false, a.length ? o = a.concat(o) : m = -1, o.length && x3());
593
+ }
594
+ function x3() {
595
+ if (!s) {
596
+ var e = b(U3);
597
+ s = true;
598
+ for (var t = o.length;t; ) {
599
+ for (a = o, o = [];++m < t; )
600
+ a && a[m].run();
601
+ m = -1, t = o.length;
602
+ }
603
+ a = null, s = false, O3(e);
604
+ }
605
+ }
606
+ r.nextTick = function(e) {
607
+ var t = new Array(arguments.length - 1);
608
+ if (arguments.length > 1)
609
+ for (var n = 1;n < arguments.length; n++)
610
+ t[n - 1] = arguments[n];
611
+ o.push(new L3(e, t)), o.length === 1 && !s && b(x3);
612
+ };
613
+ function L3(e, t) {
614
+ this.fun = e, this.array = t;
615
+ }
616
+ L3.prototype.run = function() {
617
+ this.fun.apply(null, this.array);
618
+ };
619
+ r.title = "browser";
620
+ r.browser = true;
621
+ r.env = {};
622
+ r.argv = [];
623
+ r.version = "";
624
+ r.versions = {};
625
+ function c() {
626
+ }
627
+ r.on = c;
628
+ r.addListener = c;
629
+ r.once = c;
630
+ r.off = c;
631
+ r.removeListener = c;
632
+ r.removeAllListeners = c;
633
+ r.emit = c;
634
+ r.prependListener = c;
635
+ r.prependOnceListener = c;
636
+ r.listeners = function(e) {
637
+ return [];
638
+ };
639
+ r.binding = function(e) {
640
+ throw new Error("process.binding is not supported");
641
+ };
642
+ r.cwd = function() {
643
+ return "/";
644
+ };
645
+ r.chdir = function(e) {
646
+ throw new Error("process.chdir is not supported");
647
+ };
648
+ r.umask = function() {
649
+ return 0;
650
+ };
651
+ });
652
+ var f = {};
653
+ N3(f, { default: () => j3 });
654
+ h3(f, y3(v()));
655
+ var j3 = y3(v());
656
+
657
+ // src/git-hooks.ts
658
+ var VALID_GIT_HOOKS = [
659
+ "applypatch-msg",
660
+ "pre-applypatch",
661
+ "post-applypatch",
662
+ "pre-commit",
663
+ "pre-merge-commit",
664
+ "prepare-commit-msg",
665
+ "commit-msg",
666
+ "post-commit",
667
+ "pre-rebase",
668
+ "post-checkout",
669
+ "post-merge",
670
+ "pre-push",
671
+ "pre-receive",
672
+ "update",
673
+ "proc-receive",
674
+ "post-receive",
675
+ "post-update",
676
+ "reference-transaction",
677
+ "push-to-checkout",
678
+ "pre-auto-gc",
679
+ "post-rewrite",
680
+ "sendemail-validate",
681
+ "fsmonitor-watchman",
682
+ "p4-changelist",
683
+ "p4-prepare-changelist",
684
+ "p4-post-changelist",
685
+ "p4-pre-submit",
686
+ "post-index-change"
687
+ ];
688
+ var VALID_OPTIONS = ["preserveUnused"];
689
+ var PREPEND_SCRIPT = `#!/bin/sh
690
+
691
+ if [ "$SKIP_BUN_GIT_HOOKS" = "1" ]; then
692
+ echo "[INFO] SKIP_BUN_GIT_HOOKS is set to 1, skipping hook."
693
+ exit 0
694
+ fi
695
+
696
+ if [ -f "$BUN_GIT_HOOKS_RC" ]; then
697
+ . "$BUN_GIT_HOOKS_RC"
698
+ fi
699
+
700
+ `;
701
+ function getGitProjectRoot(directory = j3.cwd()) {
702
+ if (directory.endsWith(".git")) {
703
+ return q.normalize(directory);
704
+ }
705
+ let start = q.normalize(directory);
706
+ if (!start || start === q.sep || start === ".") {
707
+ return;
708
+ }
709
+ const fullPath = q.join(start, ".git");
710
+ if (fs.existsSync(fullPath)) {
711
+ if (!fs.lstatSync(fullPath).isDirectory()) {
712
+ const content = fs.readFileSync(fullPath, { encoding: "utf-8" });
713
+ const match = /^gitdir: (.*)\s*$/.exec(content);
714
+ if (match) {
715
+ const gitDir = match[1];
716
+ let commonDir = q.join(gitDir, "commondir");
717
+ if (fs.existsSync(commonDir)) {
718
+ commonDir = fs.readFileSync(commonDir, "utf8").trim();
719
+ return q.resolve(gitDir, commonDir);
720
+ }
721
+ return q.normalize(gitDir);
722
+ }
723
+ }
724
+ return q.normalize(fullPath);
725
+ }
726
+ const parentDir = q.dirname(start);
727
+ if (parentDir === start) {
728
+ return;
729
+ }
730
+ return getGitProjectRoot(parentDir);
731
+ }
732
+ function getProjectRootDirectoryFromNodeModules(projectPath) {
733
+ function _arraysAreEqual(a1, a2) {
734
+ return JSON.stringify(a1) === JSON.stringify(a2);
735
+ }
736
+ const projDir = projectPath.split(/[\\/]/);
737
+ const indexOfStoreDir = projDir.indexOf(".store");
738
+ if (indexOfStoreDir > -1) {
739
+ return projDir.slice(0, indexOfStoreDir - 1).join("/");
740
+ }
741
+ if (projDir.length > 3 && _arraysAreEqual(projDir.slice(-3), ["node_modules", ".bin", "bun-git-hooks"])) {
742
+ return projDir.slice(0, -3).join("/");
743
+ }
744
+ if (projDir.length > 2 && _arraysAreEqual(projDir.slice(-2), ["node_modules", "bun-git-hooks"])) {
745
+ return projDir.slice(0, -2).join("/");
746
+ }
747
+ return;
748
+ }
749
+ function checkBunGitHooksInDependencies(projectRootPath) {
750
+ if (typeof projectRootPath !== "string") {
751
+ throw new TypeError("Package json path is not a string!");
752
+ }
753
+ const { packageJsonContent } = _getPackageJson(projectRootPath);
754
+ if ("dependencies" in packageJsonContent && "bun-git-hooks" in packageJsonContent.dependencies) {
755
+ console.warn("[WARN] You should move `bun-git-hooks` to your devDependencies!");
756
+ return true;
757
+ }
758
+ if (!("devDependencies" in packageJsonContent))
759
+ return false;
760
+ return "git-hooks" in packageJsonContent.devDependencies;
761
+ }
762
+ function _getPackageJson(projectPath = j3.cwd()) {
763
+ if (typeof projectPath !== "string") {
764
+ throw new TypeError("projectPath is not a string");
765
+ }
766
+ const targetPackageJson = q.normalize(`${projectPath}/package.json`);
767
+ if (!fs.statSync(targetPackageJson).isFile()) {
768
+ throw new Error("Package.json doesn't exist");
769
+ }
770
+ const packageJsonDataRaw = fs.readFileSync(targetPackageJson, { encoding: "utf-8" });
771
+ return { packageJsonContent: JSON.parse(packageJsonDataRaw), packageJsonPath: targetPackageJson };
772
+ }
773
+ function setHooksFromConfig(projectRootPath = j3.cwd(), options = {}) {
774
+ if (!config) {
775
+ throw new Error("[ERROR] Config was not found! Please add `.git-hooks.config.{ts,js,mjs,cjs,mts,cts,json}` or `git-hooks.config.{ts,js,mjs,cjs,mts,cts,json}` or the `git-hooks` entry in your package.json.\r\nCheck README for details");
776
+ }
777
+ const preserveUnused = Array.isArray(config.preserveUnused) ? config.preserveUnused : config.preserveUnused ? VALID_GIT_HOOKS : [];
778
+ for (const hook of VALID_GIT_HOOKS) {
779
+ if (Object.prototype.hasOwnProperty.call(config, hook)) {
780
+ if (!config[hook]) {
781
+ throw new Error(`[ERROR] Command for ${hook} is not set`);
782
+ }
783
+ _setHook(hook, config[hook], projectRootPath);
784
+ } else if (!preserveUnused.includes(hook)) {
785
+ _removeHook(hook, projectRootPath);
786
+ }
787
+ }
788
+ }
789
+ function _setHook(hook, command, projectRoot = j3.cwd()) {
790
+ const gitRoot = getGitProjectRoot(projectRoot);
791
+ if (!gitRoot) {
792
+ console.info("[INFO] No `.git` root folder found, skipping");
793
+ return;
794
+ }
795
+ const hookCommand = PREPEND_SCRIPT + command;
796
+ const hookDirectory = `${gitRoot}/hooks/`;
797
+ const hookPath = q.normalize(hookDirectory + hook);
798
+ const normalizedHookDirectory = q.normalize(hookDirectory);
799
+ if (!fs.existsSync(normalizedHookDirectory))
800
+ fs.mkdirSync(normalizedHookDirectory);
801
+ fs.writeFileSync(hookPath, hookCommand);
802
+ fs.chmodSync(hookPath, 493);
803
+ console.info(`[INFO] Successfully set the ${hook} with command: ${command}`);
804
+ }
805
+ function removeHooks(projectRoot = j3.cwd(), verbose = false) {
806
+ for (const configEntry of VALID_GIT_HOOKS) {
807
+ _removeHook(configEntry, projectRoot, verbose);
808
+ }
809
+ }
810
+ function _removeHook(hook, projectRoot = j3.cwd(), verbose = false) {
811
+ const gitRoot = getGitProjectRoot(projectRoot);
812
+ const hookPath = q.normalize(`${gitRoot}/hooks/${hook}`);
813
+ if (fs.existsSync(hookPath)) {
814
+ fs.unlinkSync(hookPath);
815
+ }
816
+ if (verbose) {
817
+ console.info(`[INFO] Successfully removed the ${hook} hook`);
818
+ }
819
+ }
820
+ export {
821
+ setHooksFromConfig,
822
+ removeHooks,
823
+ getProjectRootDirectoryFromNodeModules,
824
+ getGitProjectRoot,
825
+ defaultConfig,
826
+ config,
827
+ checkBunGitHooksInDependencies,
828
+ VALID_OPTIONS,
829
+ VALID_GIT_HOOKS,
830
+ PREPEND_SCRIPT
831
+ };