@hype-stack/cli 0.2.2 → 0.2.3

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.
@@ -17,7 +17,7 @@ var m = Object.create, h = Object.defineProperty, g = Object.getOwnPropertyDescr
17
17
  }, S = (e, t, n) => (n = e == null ? {} : m(v(e)), x(t || !e || !e.__esModule ? h(n, "default", {
18
18
  value: e,
19
19
  enumerable: !0
20
- }) : n, e)), C = "0.0.1", w = "gh:BetterTyped/hype-stack", T = "stack.json", E = "/schema/stack.json", D = "https://hype-stack.dev", O = "HYPE_STACK_API_URL", ee = /^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/, k = [
20
+ }) : n, e)), C = "0.0.1", w = "gh:BetterTyped/hype-stack", T = "stack.json", E = "/schema/stack.json", D = "https://api.hype-stack.dev", O = "HYPE_STACK_API_URL", ee = "https://hype-stack.dev", te = /^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/, k = [
21
21
  {
22
22
  value: "cursor",
23
23
  label: "Cursor",
@@ -35,16 +35,16 @@ var m = Object.create, h = Object.defineProperty, g = Object.getOwnPropertyDescr
35
35
  value: "copilot",
36
36
  label: "GitHub Copilot"
37
37
  }
38
- ], A = k.map((e) => e.value), j = ".cursor/rules", te = ".cursor", M = ".agents";
38
+ ], A = k.map((e) => e.value), j = ".cursor/rules", ne = ".cursor", M = ".agents";
39
39
  function N() {
40
40
  let e = process.env.HYPE_STACK_API_URL;
41
- return e ? (ne(e), e.replace(/\/+$/, "")) : D;
41
+ return e ? (re(e), e.replace(/\/+$/, "")) : D;
42
42
  }
43
43
  function P() {
44
44
  let e = process.env.HYPE_STACK_WEB_URL;
45
- return e ? (ne(e), e.replace(/\/+$/, "")) : N();
45
+ return e ? (re(e), e.replace(/\/+$/, "")) : ee;
46
46
  }
47
- function ne(e) {
47
+ function re(e) {
48
48
  try {
49
49
  let t = new URL(e);
50
50
  if (!t.protocol.startsWith("http")) throw Error(`${O} must use http or https protocol, got "${t.protocol}"`);
@@ -52,18 +52,18 @@ function ne(e) {
52
52
  throw t instanceof TypeError ? Error(`${O} is not a valid URL: "${e}"`, { cause: t }) : t;
53
53
  }
54
54
  }
55
- function re() {
55
+ function ie() {
56
56
  return `${N()}${E}`;
57
57
  }
58
58
  //#endregion
59
59
  //#region src/ui/theme.ts
60
- var F = (e) => `\x1b[38;5;208m${e}\x1b[39m`, ie = (e) => `\x1b[38;5;214m${e}\x1b[39m`, I = (e) => `\x1b[38;5;220m${e}\x1b[39m`, ae = (e) => `\x1b[38;5;33m${e}\x1b[39m`, L = (e) => `\x1b[38;5;39m${e}\x1b[39m`, oe = (e) => `\x1b[38;5;81m${e}\x1b[39m`, se = {
60
+ var F = (e) => `\x1b[38;5;208m${e}\x1b[39m`, ae = (e) => `\x1b[38;5;214m${e}\x1b[39m`, I = (e) => `\x1b[38;5;220m${e}\x1b[39m`, oe = (e) => `\x1b[38;5;33m${e}\x1b[39m`, L = (e) => `\x1b[38;5;39m${e}\x1b[39m`, se = (e) => `\x1b[38;5;81m${e}\x1b[39m`, ce = {
61
61
  orange: F,
62
- orangeBright: ie,
62
+ orangeBright: ae,
63
63
  amber: I,
64
- deepBlue: ae,
64
+ deepBlue: oe,
65
65
  skyBlue: L,
66
- lightBlue: oe
66
+ lightBlue: se
67
67
  }, R = {
68
68
  brand: (e) => F(e),
69
69
  brandBold: (e) => c.bold(F(e)),
@@ -79,7 +79,7 @@ var F = (e) => `\x1b[38;5;208m${e}\x1b[39m`, ie = (e) => `\x1b[38;5;214m${e}\x1b
79
79
  command: (e) => c.bold(I(e)),
80
80
  label: (e) => c.dim(c.bold(e))
81
81
  };
82
- function ce(e, t = e) {
82
+ function le(e, t = e) {
83
83
  return `\x1b]8;;${e}\x07${L(t)}\x1b]8;;\x07`;
84
84
  }
85
85
  var z = {
@@ -90,56 +90,56 @@ var z = {
90
90
  pipe: R.muted("│"),
91
91
  dot: R.muted("•"),
92
92
  spark: I("✦"),
93
- sparkSmall: ie("✧"),
93
+ sparkSmall: ae("✧"),
94
94
  bolt: I("⚡")
95
- }, le = [
95
+ }, ue = [
96
96
  I,
97
97
  I,
98
- ie,
99
- F,
100
98
  ae,
101
- L,
99
+ F,
102
100
  oe,
103
- oe
101
+ L,
102
+ se,
103
+ se
104
104
  ];
105
- function ue(e) {
105
+ function de(e) {
106
106
  let t = [...e], n = t.length;
107
107
  return t.map((e, t) => {
108
108
  if (e === " " || e === "\n") return e;
109
109
  let r = t / Math.max(n - 1, 1);
110
- return le[Math.min(Math.floor(r * le.length), le.length - 1)](e);
110
+ return ue[Math.min(Math.floor(r * ue.length), ue.length - 1)](e);
111
111
  }).join("");
112
112
  }
113
- function de(e, t, n) {
113
+ function fe(e, t, n) {
114
114
  return Math.round(e + (t - e) * n);
115
115
  }
116
- function fe(e, t) {
116
+ function pe(e, t) {
117
117
  let { start: n, end: r, angle: i = 1 } = t, a = Math.max(...e.map((e) => e.length), 1), o = Math.max(e.length - 1, 1);
118
118
  return e.map((e, t) => [...e].map((e, s) => {
119
119
  if (e === " ") return e;
120
120
  let c = s / Math.max(a - 1, 1), l = t / o, u = Math.min((c + l * i) / (1 + i), 1);
121
- return `\x1b[38;2;${de(n[0], r[0], u)};${de(n[1], r[1], u)};${de(n[2], r[2], u)}m${e}\x1b[39m`;
121
+ return `\x1b[38;2;${fe(n[0], r[0], u)};${fe(n[1], r[1], u)};${fe(n[2], r[2], u)}m${e}\x1b[39m`;
122
122
  }).join(""));
123
123
  }
124
124
  //#endregion
125
125
  //#region src/core/license.ts
126
- function pe(e) {
126
+ function me(e) {
127
127
  return `${P()}/packs/${e}`;
128
128
  }
129
129
  //#endregion
130
130
  //#region ../../node_modules/.pnpm/@hyper-fetch+core@8.1.1/node_modules/@hyper-fetch/core/dist/index.mjs
131
- var me = /* @__PURE__ */ S((/* @__PURE__ */ b(((e, t) => {
131
+ var he = /* @__PURE__ */ S((/* @__PURE__ */ b(((e, t) => {
132
132
  t.exports = {};
133
- })))(), 1), he = Object.create, ge = Object.defineProperty, _e = Object.getOwnPropertyDescriptor, ve = Object.getOwnPropertyNames, ye = Object.getPrototypeOf, be = Object.prototype.hasOwnProperty, xe = (e, t) => () => (t || e((t = { exports: {} }).exports, t), t.exports), Se = (e, t, n, r) => {
134
- if (t && typeof t == "object" || typeof t == "function") for (var i = ve(t), a = 0, o = i.length, s; a < o; a++) s = i[a], !be.call(e, s) && s !== n && ge(e, s, {
133
+ })))(), 1), ge = Object.create, _e = Object.defineProperty, ve = Object.getOwnPropertyDescriptor, ye = Object.getOwnPropertyNames, be = Object.getPrototypeOf, xe = Object.prototype.hasOwnProperty, Se = (e, t) => () => (t || e((t = { exports: {} }).exports, t), t.exports), Ce = (e, t, n, r) => {
134
+ if (t && typeof t == "object" || typeof t == "function") for (var i = ye(t), a = 0, o = i.length, s; a < o; a++) s = i[a], !xe.call(e, s) && s !== n && _e(e, s, {
135
135
  get: ((e) => t[e]).bind(null, s),
136
- enumerable: !(r = _e(t, s)) || r.enumerable
136
+ enumerable: !(r = ve(t, s)) || r.enumerable
137
137
  });
138
138
  return e;
139
- }, Ce = (e, t, n) => (n = e == null ? {} : he(ye(e)), Se(t || !e || !e.__esModule ? ge(n, "default", {
139
+ }, we = (e, t, n) => (n = e == null ? {} : ge(be(e)), Ce(t || !e || !e.__esModule ? _e(n, "default", {
140
140
  value: e,
141
141
  enumerable: !0
142
- }) : n, e)), we = (e) => `${e.queryKey}_${Date.now().toString(36)}_${Math.random().toString(36).substring(2)}`, Te = /* @__PURE__ */ Ce((/* @__PURE__ */ xe(((e, t) => {
142
+ }) : n, e)), Te = (e) => `${e.queryKey}_${Date.now().toString(36)}_${Math.random().toString(36).substring(2)}`, Ee = /* @__PURE__ */ we((/* @__PURE__ */ Se(((e, t) => {
143
143
  var n = typeof Reflect == "object" ? Reflect : null, r = n && typeof n.apply == "function" ? n.apply : function(e, t, n) {
144
144
  return Function.prototype.apply.call(e, t, n);
145
145
  }, i = n && typeof n.ownKeys == "function" ? n.ownKeys : Object.getOwnPropertySymbols ? function(e) {
@@ -314,7 +314,7 @@ var me = /* @__PURE__ */ S((/* @__PURE__ */ b(((e, t) => {
314
314
  });
315
315
  else throw TypeError("The \"emitter\" argument must be of type EventEmitter. Received type " + typeof e);
316
316
  }
317
- })))()), Ee = (e) => `listen_${String(e)}`, De = class extends Te.default {
317
+ })))()), De = (e) => `listen_${String(e)}`, Oe = class extends Ee.default {
318
318
  emitCallbacks = [];
319
319
  constructor(e) {
320
320
  super(e);
@@ -326,23 +326,23 @@ var me = /* @__PURE__ */ S((/* @__PURE__ */ b(((e, t) => {
326
326
  onEmit = (e) => (this.emitCallbacks?.push(e), () => {
327
327
  this.emitCallbacks = this.emitCallbacks?.filter((t) => t !== e);
328
328
  });
329
- onListener = (e, t) => (super.on(Ee(e), t), () => {
330
- super.off(Ee(e), t);
329
+ onListener = (e, t) => (super.on(De(e), t), () => {
330
+ super.off(De(e), t);
331
331
  });
332
- on = (e, t) => (super.on(e, t), super.emit(Ee(e), super.listeners(e).length), this);
333
- off = (e, t) => (super.off(e, t), super.emit(Ee(e), super.listeners(e).length), this);
332
+ on = (e, t) => (super.on(e, t), super.emit(De(e), super.listeners(e).length), this);
333
+ off = (e, t) => (super.off(e, t), super.emit(De(e), super.listeners(e).length), this);
334
334
  addListener = this.on;
335
335
  removeListener = this.off;
336
- }, Oe = class {
337
- emitter = new De();
338
- events = Ne(this.emitter);
336
+ }, ke = class {
337
+ emitter = new Oe();
338
+ events = Pe(this.emitter);
339
339
  isBrowser;
340
340
  isOnline;
341
341
  isFocused;
342
342
  constructor(e) {
343
343
  this.options = e, this.emitter?.setMaxListeners(1e3);
344
344
  let { initiallyFocused: t = V.initiallyFocused, initiallyOnline: n = V.initiallyOnline } = this.options || V;
345
- this.setInitialFocus(t), this.setInitialOnline(n), this.isBrowser = Ae();
345
+ this.setInitialFocus(t), this.setInitialOnline(n), this.isBrowser = je();
346
346
  }
347
347
  initialize = () => {
348
348
  let { focusEvent: e = V.focusEvent, onlineEvent: t = V.onlineEvent } = this.options || V;
@@ -360,21 +360,21 @@ var me = /* @__PURE__ */ S((/* @__PURE__ */ b(((e, t) => {
360
360
  setOnline = (e) => {
361
361
  this.isOnline = e, e ? this.events.emitOnline() : this.events.emitOffline();
362
362
  };
363
- }, ke = () => {
363
+ }, Ae = () => {
364
364
  try {
365
365
  return !!(window && window.addEventListener);
366
366
  } catch {
367
367
  /* istanbul ignore next */
368
368
  return !1;
369
369
  }
370
- }, Ae = () => {
370
+ }, je = () => {
371
371
  try {
372
- return !!(ke() && window.document && window.document.addEventListener);
372
+ return !!(Ae() && window.document && window.document.addEventListener);
373
373
  } catch {
374
374
  /* istanbul ignore next */
375
375
  return !1;
376
376
  }
377
- }, je = (e, t, n) => ke() ? (window.addEventListener(e, t, n), () => window.removeEventListener(e, t, n)) : () => null, Me = (e, t, n) => Ae() ? (window.document.addEventListener(e, t, n), () => window.document.removeEventListener(e, t, n)) : () => null, Ne = (e) => ({
377
+ }, Me = (e, t, n) => Ae() ? (window.addEventListener(e, t, n), () => window.removeEventListener(e, t, n)) : () => null, Ne = (e, t, n) => je() ? (window.document.addEventListener(e, t, n), () => window.document.removeEventListener(e, t, n)) : () => null, Pe = (e) => ({
378
378
  emitFocus: () => {
379
379
  e.emit(B.FOCUS);
380
380
  },
@@ -397,14 +397,14 @@ var me = /* @__PURE__ */ S((/* @__PURE__ */ b(((e, t) => {
397
397
  initiallyFocused: !0,
398
398
  initiallyOnline: !0,
399
399
  focusEvent: (e) => {
400
- Me("visibilitychange", () => e(!0)), je("focus", () => e(!0)), je("blur", () => e(!1));
400
+ Ne("visibilitychange", () => e(!0)), Me("focus", () => e(!0)), Me("blur", () => e(!1));
401
401
  },
402
402
  onlineEvent: (e) => {
403
- je("online", () => e(!0)), je("offline", () => e(!1));
403
+ Me("online", () => e(!0)), Me("offline", () => e(!1));
404
404
  }
405
- }, Pe = class {
406
- emitter = new De();
407
- events = ut(this.emitter);
405
+ }, Fe = class {
406
+ emitter = new Oe();
407
+ events = dt(this.emitter);
408
408
  constructor() {
409
409
  this.emitter?.setMaxListeners(1e3);
410
410
  }
@@ -441,71 +441,71 @@ var me = /* @__PURE__ */ S((/* @__PURE__ */ b(((e, t) => {
441
441
  });
442
442
  });
443
443
  };
444
- }, Fe = () => "loading-event-any", Ie = (e) => `${e}-loading-event`, Le = (e) => `${e}-loading-cache-event`, Re = (e) => `${e}-loading-event-by-id`, ze = () => "remove-event-any", Be = (e) => `${e}-remove-event`, Ve = (e) => `${e}-remove-event-by-id`, He = () => "request-abort-any", Ue = (e) => `${e}-request-abort`, We = (e) => `${e}-request-abort-by-id`, Ge = () => "response-any", Ke = (e) => `${e}-response`, qe = (e) => `${e}-response-by-id`, Je = () => "request-start-any", Ye = (e) => `${e}-request-start`, Xe = (e) => `${e}-request-start-by-id`, Ze = () => "response-start-any", Qe = (e) => `${e}-response-start`, $e = (e) => `${e}-response-start-by-id`, et = () => "request-progress-any", tt = (e) => `${e}-request-progress`, nt = (e) => `${e}-request-progress-by-id`, rt = () => "response-progress-any", it = (e) => `${e}-response-progress`, at = (e) => `${e}-response-progress-by-id`, ot = () => "request-deduplicated-any", st = (e) => `${e}-query-request-deduplicated`, ct = (e) => `${e}-cache-request-deduplicated`, lt = (e) => `${e}-request-deduplicated-by-id`, ut = (e) => ({
444
+ }, Ie = () => "loading-event-any", Le = (e) => `${e}-loading-event`, Re = (e) => `${e}-loading-cache-event`, ze = (e) => `${e}-loading-event-by-id`, Be = () => "remove-event-any", Ve = (e) => `${e}-remove-event`, He = (e) => `${e}-remove-event-by-id`, Ue = () => "request-abort-any", We = (e) => `${e}-request-abort`, Ge = (e) => `${e}-request-abort-by-id`, Ke = () => "response-any", qe = (e) => `${e}-response`, Je = (e) => `${e}-response-by-id`, Ye = () => "request-start-any", Xe = (e) => `${e}-request-start`, Ze = (e) => `${e}-request-start-by-id`, Qe = () => "response-start-any", $e = (e) => `${e}-response-start`, et = (e) => `${e}-response-start-by-id`, tt = () => "request-progress-any", nt = (e) => `${e}-request-progress`, rt = (e) => `${e}-request-progress-by-id`, it = () => "response-progress-any", at = (e) => `${e}-response-progress`, ot = (e) => `${e}-response-progress-by-id`, st = () => "request-deduplicated-any", ct = (e) => `${e}-query-request-deduplicated`, lt = (e) => `${e}-cache-request-deduplicated`, ut = (e) => `${e}-request-deduplicated-by-id`, dt = (e) => ({
445
445
  emitDeduplicated: (t, n = !1) => {
446
- e.emit(ot(), t, n), e.emit(lt(t.requestId), t, n), e.emit(ct(t.request.cacheKey), t, n), e.emit(st(t.request.queryKey), t, n);
446
+ e.emit(st(), t, n), e.emit(ut(t.requestId), t, n), e.emit(lt(t.request.cacheKey), t, n), e.emit(ct(t.request.queryKey), t, n);
447
447
  },
448
448
  emitLoading: (t, n = !1) => {
449
- e.emit(Fe(), t, n), e.emit(Re(t.requestId), t, n), e.emit(Le(t.request.cacheKey), t, n), e.emit(Ie(t.request.queryKey), t, n);
449
+ e.emit(Ie(), t, n), e.emit(ze(t.requestId), t, n), e.emit(Re(t.request.cacheKey), t, n), e.emit(Le(t.request.queryKey), t, n);
450
450
  },
451
451
  emitRequestStart: (t, n = !1) => {
452
- e.emit(Je(), t, n), e.emit(Xe(t.requestId), t, n), e.emit(Ye(t.request.queryKey), t, n);
452
+ e.emit(Ye(), t, n), e.emit(Ze(t.requestId), t, n), e.emit(Xe(t.request.queryKey), t, n);
453
453
  },
454
454
  emitResponseStart: (t, n = !1) => {
455
- e.emit(Ze(), t, n), e.emit($e(t.requestId), t, n), e.emit(Qe(t.request.queryKey), t, n);
455
+ e.emit(Qe(), t, n), e.emit(et(t.requestId), t, n), e.emit($e(t.request.queryKey), t, n);
456
456
  },
457
457
  emitUploadProgress: (t, n = !1) => {
458
- e.emit(et(), t, n), e.emit(nt(t.requestId), t, n), e.emit(tt(t.request.queryKey), t, n);
458
+ e.emit(tt(), t, n), e.emit(rt(t.requestId), t, n), e.emit(nt(t.request.queryKey), t, n);
459
459
  },
460
460
  emitDownloadProgress: (t, n = !1) => {
461
- e.emit(rt(), t, n), e.emit(at(t.requestId), t, n), e.emit(it(t.request.queryKey), t, n);
461
+ e.emit(it(), t, n), e.emit(ot(t.requestId), t, n), e.emit(at(t.request.queryKey), t, n);
462
462
  },
463
463
  emitResponse: (t, n = !1) => {
464
- e.emit(Ge(), t, n), e.emit(qe(t.requestId), t, n), e.emit(Ke(t.request.cacheKey), t, n);
464
+ e.emit(Ke(), t, n), e.emit(Je(t.requestId), t, n), e.emit(qe(t.request.cacheKey), t, n);
465
465
  },
466
466
  emitAbort: (t, n = !1) => {
467
- e.emit(He(), t, n), e.emit(We(t.requestId), t, n), e.emit(Ue(t.request.abortKey), t, n);
467
+ e.emit(Ue(), t, n), e.emit(Ge(t.requestId), t, n), e.emit(We(t.request.abortKey), t, n);
468
468
  },
469
469
  emitRemove: (t, n = !1) => {
470
- e.emit(ze(), t, n), e.emit(Ve(t.requestId), t, n), e.emit(Be(t.request.queryKey), t, n);
470
+ e.emit(Be(), t, n), e.emit(He(t.requestId), t, n), e.emit(Ve(t.request.queryKey), t, n);
471
471
  },
472
- onDeduplicated: (t) => (e.on(ot(), t), () => e.removeListener(ot(), t)),
473
- onDeduplicatedByQueue: (t, n) => (e.on(st(t), n), () => e.removeListener(st(t), n)),
474
- onDeduplicatedByCache: (t, n) => (e.on(ct(t), n), () => e.removeListener(ct(t), n)),
475
- onDeduplicatedById: (t, n) => (e.on(lt(t), n), () => e.removeListener(lt(t), n)),
476
- onLoading: (t) => (e.on(Fe(), t), () => e.removeListener(Fe(), t)),
477
- onLoadingByQueue: (t, n) => (e.on(Ie(t), n), () => e.removeListener(Ie(t), n)),
478
- onLoadingByCache: (t, n) => (e.on(Le(t), n), () => e.removeListener(Le(t), n)),
479
- onLoadingById: (t, n) => (e.on(Re(t), n), () => e.removeListener(Re(t), n)),
480
- onRequestStart: (t) => (e.on(Je(), t), () => e.removeListener(Je(), t)),
481
- onRequestStartByQueue: (t, n) => (e.on(Ye(t), n), () => e.removeListener(Ye(t), n)),
482
- onRequestStartById: (t, n) => (e.on(Xe(t), n), () => e.removeListener(Xe(t), n)),
483
- onResponseStart: (t) => (e.on(Ze(), t), () => e.removeListener(Ze(), t)),
484
- onResponseStartByQueue: (t, n) => (e.on(Qe(t), n), () => e.removeListener(Qe(t), n)),
485
- onResponseStartById: (t, n) => (e.on($e(t), n), () => e.removeListener($e(t), n)),
486
- onUploadProgress: (t) => (e.on(et(), t), () => e.removeListener(et(), t)),
487
- onUploadProgressByQueue: (t, n) => (e.on(tt(t), n), () => e.removeListener(tt(t), n)),
488
- onUploadProgressById: (t, n) => (e.on(nt(t), n), () => e.removeListener(nt(t), n)),
489
- onDownloadProgress: (t) => (e.on(rt(), t), () => e.removeListener(rt(), t)),
490
- onDownloadProgressByQueue: (t, n) => (e.on(it(t), n), () => e.removeListener(it(t), n)),
491
- onDownloadProgressById: (t, n) => (e.on(at(t), n), () => e.removeListener(at(t), n)),
492
- onResponse: (t) => (e.on(Ge(), t), () => e.removeListener(Ge(), t)),
493
- onResponseByCache: (t, n) => (e.on(Ke(t), n), () => e.removeListener(Ke(t), n)),
494
- onResponseById: (t, n) => (e.on(qe(t), n), () => e.removeListener(qe(t), n)),
495
- onAbort: (t) => (e.on(He(), t), () => e.removeListener(He(), t)),
496
- onAbortByKey: (t, n) => (e.on(Ue(t), n), () => e.removeListener(Ue(t), n)),
497
- onAbortById: (t, n) => (e.on(We(t), n), () => e.removeListener(We(t), n)),
498
- onRemove: (t) => (e.on(ze(), t), () => e.removeListener(ze(), t)),
499
- onRemoveByQueue: (t, n) => (e.on(Be(t), n), () => e.removeListener(Be(t), n)),
500
- onRemoveById: (t, n) => (e.on(Ve(t), n), () => e.removeListener(Ve(t), n))
501
- }), dt = class {
472
+ onDeduplicated: (t) => (e.on(st(), t), () => e.removeListener(st(), t)),
473
+ onDeduplicatedByQueue: (t, n) => (e.on(ct(t), n), () => e.removeListener(ct(t), n)),
474
+ onDeduplicatedByCache: (t, n) => (e.on(lt(t), n), () => e.removeListener(lt(t), n)),
475
+ onDeduplicatedById: (t, n) => (e.on(ut(t), n), () => e.removeListener(ut(t), n)),
476
+ onLoading: (t) => (e.on(Ie(), t), () => e.removeListener(Ie(), t)),
477
+ onLoadingByQueue: (t, n) => (e.on(Le(t), n), () => e.removeListener(Le(t), n)),
478
+ onLoadingByCache: (t, n) => (e.on(Re(t), n), () => e.removeListener(Re(t), n)),
479
+ onLoadingById: (t, n) => (e.on(ze(t), n), () => e.removeListener(ze(t), n)),
480
+ onRequestStart: (t) => (e.on(Ye(), t), () => e.removeListener(Ye(), t)),
481
+ onRequestStartByQueue: (t, n) => (e.on(Xe(t), n), () => e.removeListener(Xe(t), n)),
482
+ onRequestStartById: (t, n) => (e.on(Ze(t), n), () => e.removeListener(Ze(t), n)),
483
+ onResponseStart: (t) => (e.on(Qe(), t), () => e.removeListener(Qe(), t)),
484
+ onResponseStartByQueue: (t, n) => (e.on($e(t), n), () => e.removeListener($e(t), n)),
485
+ onResponseStartById: (t, n) => (e.on(et(t), n), () => e.removeListener(et(t), n)),
486
+ onUploadProgress: (t) => (e.on(tt(), t), () => e.removeListener(tt(), t)),
487
+ onUploadProgressByQueue: (t, n) => (e.on(nt(t), n), () => e.removeListener(nt(t), n)),
488
+ onUploadProgressById: (t, n) => (e.on(rt(t), n), () => e.removeListener(rt(t), n)),
489
+ onDownloadProgress: (t) => (e.on(it(), t), () => e.removeListener(it(), t)),
490
+ onDownloadProgressByQueue: (t, n) => (e.on(at(t), n), () => e.removeListener(at(t), n)),
491
+ onDownloadProgressById: (t, n) => (e.on(ot(t), n), () => e.removeListener(ot(t), n)),
492
+ onResponse: (t) => (e.on(Ke(), t), () => e.removeListener(Ke(), t)),
493
+ onResponseByCache: (t, n) => (e.on(qe(t), n), () => e.removeListener(qe(t), n)),
494
+ onResponseById: (t, n) => (e.on(Je(t), n), () => e.removeListener(Je(t), n)),
495
+ onAbort: (t) => (e.on(Ue(), t), () => e.removeListener(Ue(), t)),
496
+ onAbortByKey: (t, n) => (e.on(We(t), n), () => e.removeListener(We(t), n)),
497
+ onAbortById: (t, n) => (e.on(Ge(t), n), () => e.removeListener(Ge(t), n)),
498
+ onRemove: (t) => (e.on(Be(), t), () => e.removeListener(Be(), t)),
499
+ onRemoveByQueue: (t, n) => (e.on(Ve(t), n), () => e.removeListener(Ve(t), n)),
500
+ onRemoveById: (t, n) => (e.on(He(t), n), () => e.removeListener(He(t), n))
501
+ }), ft = class {
502
502
  logger;
503
503
  level;
504
504
  modules;
505
- emitter = new Te.default();
505
+ emitter = new Ee.default();
506
506
  client;
507
507
  constructor(e) {
508
- this.options = e, this.emitter?.setMaxListeners(1e3), this.logger = this.options?.logger || mt, this.level = this.options?.level || "warning", this.modules = this.options?.modules;
508
+ this.options = e, this.emitter?.setMaxListeners(1e3), this.logger = this.options?.logger || ht, this.level = this.options?.level || "warning", this.modules = this.options?.modules;
509
509
  }
510
510
  setSeverity = (e) => {
511
511
  this.level = e;
@@ -536,35 +536,35 @@ var me = /* @__PURE__ */ S((/* @__PURE__ */ b(((e, t) => {
536
536
  })
537
537
  });
538
538
  log = (e) => {
539
- this.client.debug && (ht.indexOf(this.level) <= ht.indexOf(e.level) || this.modules && !this.modules.includes(e.module) || this.logger(e));
539
+ this.client.debug && (gt.indexOf(this.level) <= gt.indexOf(e.level) || this.modules && !this.modules.includes(e.module) || this.logger(e));
540
540
  };
541
- }, ft = () => `${(/* @__PURE__ */ new Date()).toLocaleTimeString()}`, pt = (e) => e.type === "request" || e.type === "response" ? `${e.extra.request.endpoint}` : `[${e.module}]`, mt = (e) => {
542
- let t = _t[e.level], n = vt[e.level], r = `%c[${ft()}]%c${e.title}%c${pt(e)}`, i = `${t}${n}font-weight:600;border-radius: 4px 0 0 4px;`, a = `${t}${n}font-weight:600;`, o = `${t}font-weight:normal;border-radius: 0 4px 4px 0;`;
541
+ }, pt = () => `${(/* @__PURE__ */ new Date()).toLocaleTimeString()}`, mt = (e) => e.type === "request" || e.type === "response" ? `${e.extra.request.endpoint}` : `[${e.module}]`, ht = (e) => {
542
+ let t = vt[e.level], n = yt[e.level], r = `%c[${pt()}]%c${e.title}%c${mt(e)}`, i = `${t}${n}font-weight:600;border-radius: 4px 0 0 4px;`, a = `${t}${n}font-weight:600;`, o = `${t}font-weight:normal;border-radius: 0 4px 4px 0;`;
543
543
  e.extra && Object.keys(e.extra)?.length ? (console.groupCollapsed(r, i, a, o), console.log(e.extra), console.groupEnd()) : console.log(r, t);
544
- }, ht = [
544
+ }, gt = [
545
545
  "error",
546
546
  "warning",
547
547
  "info",
548
548
  "debug"
549
- ], gt = "padding:2px 5px;", _t = {
550
- error: `${gt};background:#db252520;`,
551
- warning: `${gt};background:#e1941e20;`,
552
- info: `${gt};background:#1e74e120;`,
553
- debug: `${gt};background:#00000020;`
554
- }, vt = {
549
+ ], _t = "padding:2px 5px;", vt = {
550
+ error: `${_t};background:#db252520;`,
551
+ warning: `${_t};background:#e1941e20;`,
552
+ info: `${_t};background:#1e74e120;`,
553
+ debug: `${_t};background:#00000020;`
554
+ }, yt = {
555
555
  error: "color:#ff3737;",
556
556
  warning: "color:#ffc107;",
557
557
  info: "color:#34a8ff;",
558
558
  debug: "color:#cccccc;"
559
- }, yt = class extends Error {
559
+ }, bt = class extends Error {
560
560
  constructor() {
561
561
  super("Request timeout"), this.name = "TimeoutError";
562
562
  }
563
- }, bt = class extends Error {
563
+ }, xt = class extends Error {
564
564
  constructor() {
565
565
  super("Request aborted"), this.name = "AbortError";
566
566
  }
567
- }, xt = class extends Error {
567
+ }, St = class extends Error {
568
568
  constructor() {
569
569
  super("Request deleted"), this.name = "DeletedError";
570
570
  }
@@ -573,21 +573,21 @@ var me = /* @__PURE__ */ S((/* @__PURE__ */ b(((e, t) => {
573
573
  constructor(e) {
574
574
  super("Request processing error"), this.description = e, this.name = "RequestProcessingError";
575
575
  }
576
- }, St = class extends Error {
576
+ }, Ct = class extends Error {
577
577
  description;
578
578
  constructor(e) {
579
579
  super("Unexpected error"), this.description = e, this.name = "UnexpectedError";
580
580
  }
581
- }, U = (e) => e === "timeout" ? new yt() : e === "abort" ? new bt() : e === "deleted" ? new xt() : e === "processing" ? new H() : new St(), Ct = (e) => {
581
+ }, U = (e) => e === "timeout" ? new bt() : e === "abort" ? new xt() : e === "deleted" ? new St() : e === "processing" ? new H() : new Ct(), wt = (e) => {
582
582
  try {
583
583
  return JSON.stringify(e);
584
584
  } catch {
585
585
  return "";
586
586
  }
587
- }, wt = (e) => {
588
- let t = ke() && e.payload instanceof FormData, n = typeof e.payload == "object" && e.payload !== null, r = {};
587
+ }, Tt = (e) => {
588
+ let t = Ae() && e.payload instanceof FormData, n = typeof e.payload == "object" && e.payload !== null, r = {};
589
589
  return !t && n && (r["Content-Type"] = "application/json"), Object.assign(r, e.headers), r;
590
- }, Tt = (e) => ke() && e instanceof FormData ? e : Ct(e), Et = [
590
+ }, Et = (e) => Ae() && e instanceof FormData ? e : wt(e), Dt = [
591
591
  "onBeforeSent",
592
592
  "onRequestStart",
593
593
  "onResponseStart",
@@ -596,7 +596,7 @@ var me = /* @__PURE__ */ S((/* @__PURE__ */ b(((e, t) => {
596
596
  "onResponse",
597
597
  "onRemove"
598
598
  ];
599
- function Dt(e) {
599
+ function Ot(e) {
600
600
  let t = {
601
601
  onBeforeSent: [],
602
602
  onRequestStart: [],
@@ -606,7 +606,7 @@ function Dt(e) {
606
606
  onResponse: [],
607
607
  onRemove: []
608
608
  };
609
- e && Et.forEach((n) => {
609
+ e && Dt.forEach((n) => {
610
610
  t[n] = [...e[n]];
611
611
  });
612
612
  let n = (e) => (n) => (t[e].push(n), () => {
@@ -628,15 +628,15 @@ function Dt(e) {
628
628
  },
629
629
  __snapshot() {
630
630
  let e = {};
631
- return Et.forEach((n) => {
631
+ return Dt.forEach((n) => {
632
632
  e[n] = [...t[n]];
633
633
  }), e;
634
634
  }
635
635
  };
636
636
  }
637
- var Ot = /* @__PURE__ */ function(e) {
637
+ var kt = /* @__PURE__ */ function(e) {
638
638
  return e.GET = "GET", e.POST = "POST", e.PUT = "PUT", e.PATCH = "PATCH", e.DELETE = "DELETE", e;
639
- }({}), W = (e, t) => t ? `${t}__${e}` : e, kt = (e) => {
639
+ }({}), W = (e, t) => t ? `${t}__${e}` : e, At = (e) => {
640
640
  try {
641
641
  if (typeof e == "string") return e;
642
642
  if (e == null) return "";
@@ -646,13 +646,13 @@ var Ot = /* @__PURE__ */ function(e) {
646
646
  } catch {
647
647
  return "";
648
648
  }
649
- }, At = ({ loaded: e, total: t }) => !e || !t ? 0 : Number((e * 100 / t).toFixed(0)), jt = (e, t, { total: n, loaded: r }) => {
649
+ }, jt = ({ loaded: e, total: t }) => !e || !t ? 0 : Number((e * 100 / t).toFixed(0)), Mt = (e, t, { total: n, loaded: r }) => {
650
650
  let i = r / (t - +e || 1), a = Math.max(n, r), o = a - r, s = i ? o / i : null;
651
651
  return {
652
652
  timeLeft: a === r ? 0 : s,
653
653
  sizeLeft: o
654
654
  };
655
- }, Mt = (e, t, n) => {
655
+ }, Nt = (e, t, n) => {
656
656
  let { total: r, loaded: i } = n;
657
657
  if (Number.isNaN(r) || Number.isNaN(i)) return {
658
658
  progress: 0,
@@ -662,23 +662,23 @@ var Ot = /* @__PURE__ */ function(e) {
662
662
  loaded: 0,
663
663
  startTimestamp: +e
664
664
  };
665
- let { timeLeft: a, sizeLeft: o } = jt(e, t, n);
665
+ let { timeLeft: a, sizeLeft: o } = Mt(e, t, n);
666
666
  return {
667
- progress: At(n),
667
+ progress: jt(n),
668
668
  timeLeft: a,
669
669
  sizeLeft: o,
670
670
  total: r,
671
671
  loaded: i,
672
672
  startTimestamp: +e
673
673
  };
674
- }, Nt = (e) => `${e.method}_${e.requestOptions.endpoint}_${e.cancelable}`, Pt = (e, t) => `${kt(e.method)}_${t ? e.requestOptions.endpoint : kt(e.endpoint)}_${t ? "" : kt(e.queryParams)}`, Ft = (e, t = "auto") => {
675
- let { fetchDispatcher: n, submitDispatcher: r } = e.client, i = e.method === Ot.GET, a = t === "auto" && i || t === "fetch";
674
+ }, Pt = (e) => `${e.method}_${e.requestOptions.endpoint}_${e.cancelable}`, Ft = (e, t) => `${At(e.method)}_${t ? e.requestOptions.endpoint : At(e.endpoint)}_${t ? "" : At(e.queryParams)}`, It = (e, t = "auto") => {
675
+ let { fetchDispatcher: n, submitDispatcher: r } = e.client, i = e.method === kt.GET, a = t === "auto" && i || t === "fetch";
676
676
  return [a ? n : r, a];
677
- }, It = async (e, t) => {
677
+ }, Lt = async (e, t) => {
678
678
  let n = e.unstable_responseMapper?.(t);
679
679
  return n instanceof Promise ? await n : n || t;
680
- }, Lt = async (e, t) => {
681
- let { client: n } = e, { requestManager: r } = n, [i] = Ft(e, t?.dispatcherType), a;
680
+ }, Rt = async (e, t) => {
681
+ let { client: n } = e, { requestManager: r } = n, [i] = It(e, t?.dispatcherType), a;
682
682
  if (e.optimistic) try {
683
683
  a = await e.optimistic({
684
684
  request: e,
@@ -765,9 +765,9 @@ var Ot = /* @__PURE__ */ function(e) {
765
765
  u(), d(), f(), p(), m(), h();
766
766
  }
767
767
  });
768
- }, Rt = /* @__PURE__ */ function(e) {
768
+ }, zt = /* @__PURE__ */ function(e) {
769
769
  return e[e.SEC = 1e3] = "SEC", e[e.MIN = 6e4] = "MIN", e[e.HOUR = 36e5] = "HOUR", e[e.DAY = 864e5] = "DAY", e[e.WEEK = 6048e5] = "WEEK", e[e.MONTH_30 = 2592e6] = "MONTH_30", e[e.MONTH_31 = 26784e5] = "MONTH_31", e[e.YEAR = 31536e6] = "YEAR", e[e.YEAR_LEAP = 316224e5] = "YEAR_LEAP", e;
770
- }({}), zt = class e {
770
+ }({}), Bt = class e {
771
771
  endpoint;
772
772
  headers;
773
773
  auth;
@@ -791,7 +791,7 @@ var Ot = /* @__PURE__ */ function(e) {
791
791
  deduplicate;
792
792
  deduplicateTime;
793
793
  scope;
794
- $hooks = Dt();
794
+ $hooks = Ot();
795
795
  isMockerEnabled = !1;
796
796
  unstable_mock;
797
797
  unstable_payloadMapper;
@@ -808,7 +808,7 @@ var Ot = /* @__PURE__ */ function(e) {
808
808
  updatedQueryKey;
809
809
  constructor(e, t, n) {
810
810
  this.client = e, this.requestOptions = t, this.initialRequestConfiguration = n;
811
- let { endpoint: r, headers: i, auth: a = !0, method: o = e.adapter.defaultMethod, options: s, cancelable: c = !1, retry: l = 0, retryTime: u = 500, cacheTime: d = Rt.MIN * 5, cache: f = !0, staleTime: p = Rt.MIN * 5, queued: m = !1, offline: h = !0, abortKey: g, cacheKey: _, queryKey: v, deduplicate: y = !1, deduplicateTime: b = null } = {
811
+ let { endpoint: r, headers: i, auth: a = !0, method: o = e.adapter.defaultMethod, options: s, cancelable: c = !1, retry: l = 0, retryTime: u = 500, cacheTime: d = zt.MIN * 5, cache: f = !0, staleTime: p = zt.MIN * 5, queued: m = !1, offline: h = !0, abortKey: g, cacheKey: _, queryKey: v, deduplicate: y = !1, deduplicateTime: b = null } = {
812
812
  ...this.client.adapter.unstable_getRequestDefaults?.(t),
813
813
  ...t
814
814
  };
@@ -918,7 +918,7 @@ var Ot = /* @__PURE__ */ function(e) {
918
918
  payload: t?.payload || this.payload,
919
919
  params: t?.params || this.params
920
920
  }, r = new e(this.client, this.requestOptions, n);
921
- return r.unstable_payloadMapper = this.unstable_payloadMapper, r.unstable_responseMapper = this.unstable_responseMapper, r.unstable_requestMapper = this.unstable_requestMapper, r.retryOnError = this.retryOnError, r.unstable_mock = this.unstable_mock, r.isMockerEnabled = this.isMockerEnabled, r.optimistic = this.optimistic, r.$hooks = Dt(this.$hooks.__snapshot()), r;
921
+ return r.unstable_payloadMapper = this.unstable_payloadMapper, r.unstable_responseMapper = this.unstable_responseMapper, r.unstable_requestMapper = this.unstable_requestMapper, r.retryOnError = this.retryOnError, r.unstable_mock = this.unstable_mock, r.isMockerEnabled = this.isMockerEnabled, r.optimistic = this.optimistic, r.$hooks = Ot(this.$hooks.__snapshot()), r;
922
922
  }
923
923
  abort = () => {
924
924
  let { requestManager: e } = this.client;
@@ -981,17 +981,17 @@ var Ot = /* @__PURE__ */ function(e) {
981
981
  ...e,
982
982
  cachePolicy: void 0
983
983
  };
984
- if (n === "network-only") return Lt(i, a);
984
+ if (n === "network-only") return Rt(i, a);
985
985
  let o = i.read();
986
- if (n === "cache-first") return o ? It(i, o) : Lt(i, a);
986
+ if (n === "cache-first") return o ? Lt(i, o) : Rt(i, a);
987
987
  if (o) {
988
- let e = await It(i, o);
989
- return Lt(i, a), e;
988
+ let e = await Lt(i, o);
989
+ return Rt(i, a), e;
990
990
  }
991
- return Lt(i, a);
991
+ return Rt(i, a);
992
992
  };
993
993
  static fromJSON = (t, n) => new e(t, n.requestOptions, n);
994
- }, Bt = async ({ request: e, requestId: t, resolve: n, onStartTime: r, internalErrorMapping: i }) => {
994
+ }, Vt = async ({ request: e, requestId: t, resolve: n, onStartTime: r, internalErrorMapping: i }) => {
995
995
  let { requestManager: a, loggerManager: o } = e.client, { unstable_payloadMapper: s } = e.client.adapter, c = o.initialize(e.client, "Adapter"), l = null, u = null, d = e, f = 1, p = 1, m = 0, h = 0;
996
996
  c.debug({
997
997
  title: "Running middleware callbacks",
@@ -1010,14 +1010,14 @@ var Ot = /* @__PURE__ */ function(e) {
1010
1010
  let n = Number(t.total || 0), r = Number(t.loaded || 0);
1011
1011
  return Math.max(n, r, e);
1012
1012
  }, T = (e, n, r) => {
1013
- let i = Mt(new Date(e), new Date(n), r);
1013
+ let i = Nt(new Date(e), new Date(n), r);
1014
1014
  m !== 100 && (m = i.total, a.events.emitUploadProgress({
1015
1015
  ...i,
1016
1016
  requestId: t,
1017
1017
  request: d
1018
1018
  }));
1019
1019
  }, E = (e, n, r) => {
1020
- let i = Mt(new Date(e), new Date(n), r);
1020
+ let i = Nt(new Date(e), new Date(n), r);
1021
1021
  h !== 100 && (h = i.total, a.events.emitDownloadProgress({
1022
1022
  ...i,
1023
1023
  requestId: t,
@@ -1056,14 +1056,14 @@ var Ot = /* @__PURE__ */ function(e) {
1056
1056
  total: f,
1057
1057
  loaded: e.loaded || 0
1058
1058
  }), t;
1059
- }, k = () => {
1059
+ }, te = () => {
1060
1060
  l ||= +/* @__PURE__ */ new Date();
1061
1061
  let e = +/* @__PURE__ */ new Date();
1062
1062
  return T(l, e, {
1063
1063
  total: f,
1064
1064
  loaded: f
1065
1065
  }), e;
1066
- }, A = (e) => {
1066
+ }, k = (e) => {
1067
1067
  u = +/* @__PURE__ */ new Date(), p = w(p, e);
1068
1068
  let n = {
1069
1069
  total: p,
@@ -1073,21 +1073,21 @@ var Ot = /* @__PURE__ */ function(e) {
1073
1073
  requestId: t,
1074
1074
  request: d
1075
1075
  }), u;
1076
- }, j = (e) => {
1076
+ }, A = (e) => {
1077
1077
  u ||= +/* @__PURE__ */ new Date();
1078
1078
  let t = +/* @__PURE__ */ new Date();
1079
1079
  return p = w(p, e), E(u, t, {
1080
1080
  total: e.total || p,
1081
1081
  loaded: e.loaded || 0
1082
1082
  }), t;
1083
- }, te = () => {
1083
+ }, j = () => {
1084
1084
  u ||= +/* @__PURE__ */ new Date();
1085
1085
  let e = +/* @__PURE__ */ new Date();
1086
1086
  return E(u, e, {
1087
1087
  total: p,
1088
1088
  loaded: p
1089
1089
  }), e;
1090
- }, M = async ({ data: e, error: r, status: i, extra: a }) => {
1090
+ }, ne = async ({ data: e, error: r, status: i, extra: a }) => {
1091
1091
  let o = {
1092
1092
  data: e,
1093
1093
  error: r ?? null,
@@ -1112,31 +1112,31 @@ var Ot = /* @__PURE__ */ function(e) {
1112
1112
  response: o
1113
1113
  }
1114
1114
  }), o;
1115
- }, N = Vt({
1115
+ }, M = Ht({
1116
1116
  request: d,
1117
1117
  requestId: t,
1118
1118
  startTime: x,
1119
1119
  logger: c,
1120
1120
  resolve: n
1121
- }), P = ({ status: e, extra: n }) => (c.error({
1121
+ }), N = ({ status: e, extra: n }) => (c.error({
1122
1122
  title: "Abort error",
1123
1123
  type: "request",
1124
1124
  extra: {
1125
1125
  request: d,
1126
1126
  requestId: t
1127
1127
  }
1128
- }), N({
1128
+ }), M({
1129
1129
  error: i(U("abort")),
1130
1130
  status: e,
1131
1131
  extra: n
1132
- })), ne = ({ status: e, extra: n }) => (c.error({
1132
+ })), P = ({ status: e, extra: n }) => (c.error({
1133
1133
  title: "Timeout error",
1134
1134
  type: "request",
1135
1135
  extra: {
1136
1136
  request: d,
1137
1137
  requestId: t
1138
1138
  }
1139
- }), N({
1139
+ }), M({
1140
1140
  error: U("timeout"),
1141
1141
  status: e,
1142
1142
  extra: n
@@ -1147,15 +1147,15 @@ var Ot = /* @__PURE__ */ function(e) {
1147
1147
  request: d,
1148
1148
  requestId: t
1149
1149
  }
1150
- }), N({
1150
+ }), M({
1151
1151
  error: U(),
1152
1152
  status: e,
1153
1153
  extra: n
1154
- })), F = () => a.getAbortController(v, t), ie = ({ status: e, extra: n, onAbort: r = () => {} }) => {
1155
- let i = F();
1154
+ })), ie = () => a.getAbortController(v, t), F = ({ status: e, extra: n, onAbort: r = () => {} }) => {
1155
+ let i = ie();
1156
1156
  if (!i) throw new H("Controller is not found");
1157
1157
  let o = () => {
1158
- P({
1158
+ N({
1159
1159
  status: e,
1160
1160
  extra: n
1161
1161
  }), r(), a.events.emitAbort({
@@ -1175,36 +1175,36 @@ var Ot = /* @__PURE__ */ function(e) {
1175
1175
  adapterOptions: b
1176
1176
  }
1177
1177
  });
1178
- let I = e.client.adapter.unstable_queryParamsMapper(d.queryParams), ae = e.client.adapter.unstable_endpointMapper(d.endpoint), L = e.client.adapter.unstable_headerMapper(d), { url: oe } = e.client;
1178
+ let ae = e.client.adapter.unstable_queryParamsMapper(d.queryParams), I = e.client.adapter.unstable_endpointMapper(d.endpoint), oe = e.client.adapter.unstable_headerMapper(d), { url: L } = e.client;
1179
1179
  return {
1180
1180
  request: d,
1181
1181
  requestId: t,
1182
- url: oe,
1183
- endpoint: ae,
1184
- queryParams: I,
1182
+ url: L,
1183
+ endpoint: I,
1184
+ queryParams: ae,
1185
1185
  payload: y,
1186
- headers: L,
1186
+ headers: oe,
1187
1187
  adapter: e.client.adapter,
1188
1188
  adapterOptions: b,
1189
- getAbortController: F,
1189
+ getAbortController: ie,
1190
1190
  getRequestStartTimestamp: S,
1191
1191
  getResponseStartTimestamp: C,
1192
- createAbortListener: ie,
1192
+ createAbortListener: F,
1193
1193
  onBeforeRequest: D,
1194
1194
  onRequestStart: O,
1195
1195
  onRequestProgress: ee,
1196
- onRequestEnd: k,
1197
- onResponseStart: A,
1198
- onResponseProgress: j,
1199
- onResponseEnd: te,
1200
- onSuccess: M,
1201
- onAbortError: P,
1202
- onTimeoutError: ne,
1196
+ onRequestEnd: te,
1197
+ onResponseStart: k,
1198
+ onResponseProgress: A,
1199
+ onResponseEnd: j,
1200
+ onSuccess: ne,
1201
+ onAbortError: N,
1202
+ onTimeoutError: P,
1203
1203
  onUnexpectedError: re,
1204
- onError: N
1204
+ onError: M
1205
1205
  };
1206
1206
  };
1207
- function Vt({ request: e, requestId: t, startTime: n, resolve: r, logger: i }) {
1207
+ function Ht({ request: e, requestId: t, startTime: n, resolve: r, logger: i }) {
1208
1208
  let { client: a } = e;
1209
1209
  return async ({ error: o, status: s, extra: c }) => {
1210
1210
  let l = {
@@ -1233,7 +1233,7 @@ function Vt({ request: e, requestId: t, startTime: n, resolve: r, logger: i }) {
1233
1233
  }), l;
1234
1234
  };
1235
1235
  }
1236
- var Ht = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTimeoutError: i, onRequestEnd: a, createAbortListener: o, onResponseProgress: s, onRequestProgress: c, onResponseStart: l, onBeforeRequest: u, onRequestStart: d, onSuccess: f, onAbortError: p, adapter: m }) => {
1236
+ var Ut = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTimeoutError: i, onRequestEnd: a, createAbortListener: o, onResponseProgress: s, onRequestProgress: c, onResponseStart: l, onBeforeRequest: u, onRequestStart: d, onSuccess: f, onAbortError: p, adapter: m }) => {
1237
1237
  if (!e.unstable_mock) throw new H("Mock should be defined when calling mocker");
1238
1238
  let h = !1, { requestTime: g = 20, responseTime: _ = 20, totalUploaded: v = 1e3, totalDownloaded: y = 1e3, timeout: b } = e.unstable_mock.config, { data: x, error: S, status: C, success: w = !0, extra: T = e.client.adapter.defaultExtra } = await e.unstable_mock.fn({
1239
1239
  request: e,
@@ -1278,7 +1278,7 @@ var Ht = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1278
1278
  status: C,
1279
1279
  extra: T
1280
1280
  }), h || r();
1281
- }, Ut = (e) => e, Wt = class {
1281
+ }, Wt = (e) => e, Gt = class {
1282
1282
  unstable_fetcher;
1283
1283
  name;
1284
1284
  defaultMethod;
@@ -1300,10 +1300,10 @@ var Ht = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1300
1300
  initialize = (e) => (this.logger = e.loggerManager.initialize(e, "Adapter"), this.initialized = !0, this.client = e, this.unstable_onInitializeCallback?.({ client: e }), this);
1301
1301
  onInitialize = (e) => (this.unstable_onInitializeCallback = e, this);
1302
1302
  unstable_internalErrorMapping = (e) => e;
1303
- unstable_headerMapper = wt;
1304
- unstable_payloadMapper = Tt;
1305
- unstable_endpointMapper = Ut;
1306
- unstable_queryParamsMapper = Ut;
1303
+ unstable_headerMapper = Tt;
1304
+ unstable_payloadMapper = Et;
1305
+ unstable_endpointMapper = Wt;
1306
+ unstable_queryParamsMapper = Wt;
1307
1307
  unstable_getAdapterDefaults;
1308
1308
  unstable_getRequestDefaults;
1309
1309
  unstable_devtoolsEndpointGetter = (e) => e;
@@ -1334,7 +1334,7 @@ var Ht = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1334
1334
  request: e,
1335
1335
  requestId: t
1336
1336
  });
1337
- let i = await Bt({
1337
+ let i = await Vt({
1338
1338
  request: e,
1339
1339
  requestId: t,
1340
1340
  resolve: r,
@@ -1343,9 +1343,9 @@ var Ht = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1343
1343
  n = e;
1344
1344
  }
1345
1345
  });
1346
- return e.unstable_mock && e.isMockerEnabled && e.client.isMockerEnabled ? await Ht(i) : this.unstable_fetcher(i);
1346
+ return e.unstable_mock && e.isMockerEnabled && e.client.isMockerEnabled ? await Ut(i) : this.unstable_fetcher(i);
1347
1347
  } catch (i) {
1348
- return Vt({
1348
+ return Ht({
1349
1349
  request: e,
1350
1350
  requestId: t,
1351
1351
  startTime: n || Date.now(),
@@ -1362,21 +1362,21 @@ var Ht = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1362
1362
  r(e);
1363
1363
  });
1364
1364
  }
1365
- }, Gt = (e) => {
1365
+ }, Kt = (e) => {
1366
1366
  try {
1367
1367
  return JSON.parse(e);
1368
1368
  } catch {
1369
1369
  return e;
1370
1370
  }
1371
- }, Kt = (e) => e ? Gt(e) : U(), qt = (e) => (t) => {
1371
+ }, qt = (e) => e ? Kt(e) : U(), Jt = (e) => (t) => {
1372
1372
  let { skipNull: n, skipEmptyString: r } = e;
1373
1373
  return !(r && t === void 0 || r && t === "" || n && t === null);
1374
- }, G = (e, { encode: t, strict: n }) => t && n ? encodeURIComponent(e).replace(/[!'()*]/g, (e) => `%${e.charCodeAt(0).toString(16).toUpperCase()}`) : t ? encodeURIComponent(e) : e, Jt = (e, t, n) => {
1375
- let r = !qt(n)(t);
1374
+ }, G = (e, { encode: t, strict: n }) => t && n ? encodeURIComponent(e).replace(/[!'()*]/g, (e) => `%${e.charCodeAt(0).toString(16).toUpperCase()}`) : t ? encodeURIComponent(e) : e, Yt = (e, t, n) => {
1375
+ let r = !Jt(n)(t);
1376
1376
  return !e || r ? "" : `${G(e, n)}=${G(t instanceof Date ? n.dateParser?.(t) || t.toISOString() : typeof t == "object" && !Array.isArray(t) ? n.objectParser?.(t) || JSON.stringify(t) : String(t), n)}`;
1377
- }, Yt = (e, t, n) => {
1377
+ }, Xt = (e, t, n) => {
1378
1378
  let { arrayFormat: r, arraySeparator: i } = n;
1379
- return t.filter(qt(n)).reduce((t, a, o) => {
1379
+ return t.filter(Jt(n)).reduce((t, a, o) => {
1380
1380
  switch (r) {
1381
1381
  case "index": {
1382
1382
  let r = `${G(e, n)}[${G(String(o), n)}]=`;
@@ -1407,21 +1407,21 @@ var Ht = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1407
1407
  }
1408
1408
  return t;
1409
1409
  }, []).join("&");
1410
- }, Xt = (e, t = En) => {
1410
+ }, Zt = (e, t = Dn) => {
1411
1411
  if (!e || !Object.keys(e).length) return "";
1412
1412
  if (typeof e == "string") return e[0] === "?" ? e : `?${e}`;
1413
- let n = Object.entries(e).map(([e, n]) => Array.isArray(n) ? Yt(e, n, t) : Jt(e, n, t)).filter(Boolean).join("&");
1413
+ let n = Object.entries(e).map(([e, n]) => Array.isArray(n) ? Xt(e, n, t) : Yt(e, n, t)).filter(Boolean).join("&");
1414
1414
  return n ? `?${n}` : "";
1415
- }, Zt = Rt.SEC * 5, Qt = { headers: {} }, $t = () => new Wt({
1415
+ }, Qt = zt.SEC * 5, $t = { headers: {} }, en = () => new Gt({
1416
1416
  name: "http",
1417
- defaultMethod: Ot.GET,
1418
- defaultExtra: Qt,
1417
+ defaultMethod: kt.GET,
1418
+ defaultExtra: $t,
1419
1419
  systemErrorStatus: 0,
1420
- systemErrorExtra: Qt
1421
- }).setQueryParamsMapper(Xt).setFetcher(async ({ request: e, adapterOptions: t, headers: n, payload: r, onError: i, onResponseEnd: a, onTimeoutError: o, onRequestEnd: s, createAbortListener: c, getAbortController: l, onResponseProgress: u, onResponseStart: d, onBeforeRequest: f, onRequestStart: p, onRequestProgress: m, onSuccess: h }) => {
1422
- let { method: g, client: _, endpoint: v, queryParams: y } = e, b = y ? Xt(y) : "", x = `${_.url}${v}${b}`, S = l(), { timeout: C = Zt, streaming: w = !1, ...T } = t || {}, E = !1, D, O = c({
1420
+ systemErrorExtra: $t
1421
+ }).setQueryParamsMapper(Zt).setFetcher(async ({ request: e, adapterOptions: t, headers: n, payload: r, onError: i, onResponseEnd: a, onTimeoutError: o, onRequestEnd: s, createAbortListener: c, getAbortController: l, onResponseProgress: u, onResponseStart: d, onBeforeRequest: f, onRequestStart: p, onRequestProgress: m, onSuccess: h }) => {
1422
+ let { method: g, client: _, endpoint: v, queryParams: y } = e, b = y ? Zt(y) : "", x = `${_.url}${v}${b}`, S = l(), { timeout: C = Qt, streaming: w = !1, ...T } = t || {}, E = !1, D, O = c({
1423
1423
  status: 0,
1424
- extra: Qt
1424
+ extra: $t
1425
1425
  });
1426
1426
  C > 0 && S && (D = setTimeout(() => {
1427
1427
  E = !0, O(), S.abort();
@@ -1453,7 +1453,7 @@ var Ht = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1453
1453
  status: l,
1454
1454
  extra: c
1455
1455
  }) : i({
1456
- error: Kt(await t.text()),
1456
+ error: qt(await t.text()),
1457
1457
  status: l,
1458
1458
  extra: c
1459
1459
  });
@@ -1474,11 +1474,11 @@ var Ht = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1474
1474
  e = new TextDecoder().decode(o);
1475
1475
  } else e = await t.text();
1476
1476
  a(), O(), t.ok ? h({
1477
- data: Gt(e),
1477
+ data: Kt(e),
1478
1478
  status: l,
1479
1479
  extra: c
1480
1480
  }) : i({
1481
- error: Kt(e),
1481
+ error: qt(e),
1482
1482
  status: l,
1483
1483
  extra: c
1484
1484
  });
@@ -1487,18 +1487,18 @@ var Ht = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1487
1487
  if (D && clearTimeout(D), O(), S?.signal?.aborted) {
1488
1488
  E && o({
1489
1489
  status: 0,
1490
- extra: Qt
1490
+ extra: $t
1491
1491
  });
1492
1492
  return;
1493
1493
  }
1494
1494
  i({
1495
1495
  error: e,
1496
1496
  status: 0,
1497
- extra: Qt
1497
+ extra: $t
1498
1498
  });
1499
1499
  }
1500
- }), en = () => $t(), tn = class {
1501
- emitter = new De();
1500
+ }), tn = () => en(), nn = class {
1501
+ emitter = new Oe();
1502
1502
  events;
1503
1503
  storage;
1504
1504
  lazyStorage;
@@ -1509,7 +1509,7 @@ var Ht = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1509
1509
  constructor(e) {
1510
1510
  this.options = e;
1511
1511
  let { storage: t = /* @__PURE__ */ new Map(), lazyStorage: n, version: r = "0.0.1" } = e ?? {};
1512
- this.emitter?.setMaxListeners(1e3), this.events = un(this.emitter), this.storage = t, this.version = r, this.lazyStorage = n;
1512
+ this.emitter?.setMaxListeners(1e3), this.events = dn(this.emitter), this.storage = t, this.version = r, this.lazyStorage = n;
1513
1513
  }
1514
1514
  initialize = (e) => (this.client = e, this.logger = e.loggerManager.initialize(e, "Cache"), e.appManager.events.onOnline(() => {
1515
1515
  [...this.storage.keys()].forEach(this.scheduleGarbageCollector);
@@ -1523,7 +1523,7 @@ var Ht = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1523
1523
  response: t
1524
1524
  }
1525
1525
  });
1526
- let { cacheKey: n, cache: r, staleTime: i, cacheTime: a, scope: o } = e, s = W(n, o), c = this.storage.get(s), l = typeof t == "function" ? t(c || null) : t, u = nn(c, l), d = {
1526
+ let { cacheKey: n, cache: r, staleTime: i, cacheTime: a, scope: o } = e, s = W(n, o), c = this.storage.get(s), l = typeof t == "function" ? t(c || null) : t, u = rn(c, l), d = {
1527
1527
  ...u,
1528
1528
  scope: o,
1529
1529
  staleTime: i,
@@ -1607,7 +1607,7 @@ var Ht = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1607
1607
  cacheKey: t
1608
1608
  }), this.events.emitInvalidation(t);
1609
1609
  };
1610
- e instanceof zt ? n(W(e.cacheKey, e.scope), e.cacheKey) : typeof e == "string" ? n(e) : t.length && t.forEach((t) => {
1610
+ e instanceof Bt ? n(W(e.cacheKey, e.scope), e.cacheKey) : typeof e == "string" ? n(e) : t.length && t.forEach((t) => {
1611
1611
  e.test(t) && n(t);
1612
1612
  });
1613
1613
  };
@@ -1662,49 +1662,49 @@ var Ht = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1662
1662
  clear = async () => {
1663
1663
  this.garbageCollectors.forEach((e) => clearTimeout(e)), this.storage.clear();
1664
1664
  };
1665
- }, nn = (e, t) => {
1665
+ }, rn = (e, t) => {
1666
1666
  let { data: n, success: r } = t, i = !r && e ? e.data : null, a = n || i;
1667
1667
  return {
1668
1668
  ...t,
1669
1669
  data: a
1670
1670
  };
1671
- }, rn = () => "invalidate", an = (e) => `${e}_invalidate`, on = () => "delete", sn = (e) => `${e}_delete`, cn = (e) => `${e}_cache`, ln = () => "cache", un = (e) => ({
1671
+ }, an = () => "invalidate", on = (e) => `${e}_invalidate`, sn = () => "delete", cn = (e) => `${e}_delete`, ln = (e) => `${e}_cache`, un = () => "cache", dn = (e) => ({
1672
1672
  emitCacheData: (t, n = !1) => {
1673
- e.emit(ln(), t, n), e.emit(cn(t.cacheKey), t, n);
1673
+ e.emit(un(), t, n), e.emit(ln(t.cacheKey), t, n);
1674
1674
  },
1675
1675
  emitInvalidation: (t, n = !1) => {
1676
- e.emit(rn(), t, n), e.emit(an(t), n);
1676
+ e.emit(an(), t, n), e.emit(on(t), n);
1677
1677
  },
1678
1678
  emitDelete: (t, n = !1) => {
1679
- e.emit(on(), t, n), e.emit(sn(t), n);
1679
+ e.emit(sn(), t, n), e.emit(cn(t), n);
1680
1680
  },
1681
- onData: (t) => (e.on(ln(), t), () => e.removeListener(ln(), t)),
1682
- onDataByKey: (t, n) => (e.on(cn(t), n), () => e.removeListener(cn(t), n)),
1683
- onInvalidate: (t) => (e.on(rn(), t), () => e.removeListener(rn(), t)),
1684
- onInvalidateByKey: (t, n) => (e.on(an(t), n), () => e.removeListener(an(t), n)),
1685
- onDelete: (t) => (e.on(on(), t), () => e.removeListener(on(), t)),
1686
- onDeleteByKey: (t, n) => (e.on(sn(t), n), () => e.removeListener(sn(t), n))
1681
+ onData: (t) => (e.on(un(), t), () => e.removeListener(un(), t)),
1682
+ onDataByKey: (t, n) => (e.on(ln(t), n), () => e.removeListener(ln(t), n)),
1683
+ onInvalidate: (t) => (e.on(an(), t), () => e.removeListener(an(), t)),
1684
+ onInvalidateByKey: (t, n) => (e.on(on(t), n), () => e.removeListener(on(t), n)),
1685
+ onDelete: (t) => (e.on(sn(), t), () => e.removeListener(sn(), t)),
1686
+ onDeleteByKey: (t, n) => (e.on(cn(t), n), () => e.removeListener(cn(t), n))
1687
1687
  }), K = /* @__PURE__ */ function(e) {
1688
1688
  return e.ONE_BY_ONE = "one-by-one", e.ALL_AT_ONCE = "all-at-once", e.PREVIOUS_CANCELED = "previous-canceled", e.DEDUPLICATED = "deduplicated", e;
1689
- }({}), dn = (e) => ({
1689
+ }({}), fn = (e) => ({
1690
1690
  emitDrained: (t, n) => {
1691
- e.emit(pn(), t, n), e.emit(mn(t.queryKey), t, n);
1691
+ e.emit(mn(), t, n), e.emit(hn(t.queryKey), t, n);
1692
1692
  },
1693
1693
  emitQueueStatusChanged: (t, n) => {
1694
- e.emit(hn(), t, n), e.emit(gn(t.queryKey), t, n);
1694
+ e.emit(gn(), t, n), e.emit(_n(t.queryKey), t, n);
1695
1695
  },
1696
1696
  emitQueueChanged: (t, n) => {
1697
- e.emit(_n(), t, n), e.emit(vn(t.queryKey), t, n);
1697
+ e.emit(vn(), t, n), e.emit(yn(t.queryKey), t, n);
1698
1698
  },
1699
- onDrained: (t) => (e.on(pn(), t), () => e.removeListener(pn(), t)),
1700
- onDrainedByKey: (t, n) => (e.on(mn(t), n), () => e.removeListener(mn(t), n)),
1701
- onQueueStatusChange: (t) => (e.on(hn(), t), () => e.removeListener(hn(), t)),
1702
- onQueueStatusChangeByKey: (t, n) => (e.on(gn(t), n), () => e.removeListener(gn(t), n)),
1703
- onQueueChange: (t) => (e.on(_n(), t), () => e.removeListener(_n(), t)),
1704
- onQueueChangeByKey: (t, n) => (e.on(vn(t), n), () => e.removeListener(vn(t), n))
1705
- }), fn = class {
1706
- emitter = new De();
1707
- events = dn(this.emitter);
1699
+ onDrained: (t) => (e.on(mn(), t), () => e.removeListener(mn(), t)),
1700
+ onDrainedByKey: (t, n) => (e.on(hn(t), n), () => e.removeListener(hn(t), n)),
1701
+ onQueueStatusChange: (t) => (e.on(gn(), t), () => e.removeListener(gn(), t)),
1702
+ onQueueStatusChangeByKey: (t, n) => (e.on(_n(t), n), () => e.removeListener(_n(t), n)),
1703
+ onQueueChange: (t) => (e.on(vn(), t), () => e.removeListener(vn(), t)),
1704
+ onQueueChangeByKey: (t, n) => (e.on(yn(t), n), () => e.removeListener(yn(t), n))
1705
+ }), pn = class {
1706
+ emitter = new Oe();
1707
+ events = fn(this.emitter);
1708
1708
  storage = /* @__PURE__ */ new Map();
1709
1709
  requestCount = /* @__PURE__ */ new Map();
1710
1710
  runningRequests = /* @__PURE__ */ new Map();
@@ -1713,7 +1713,7 @@ var Ht = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1713
1713
  constructor(e) {
1714
1714
  this.options = e, this.emitter?.setMaxListeners(1e3), this.options?.storage && (this.storage = this.options.storage);
1715
1715
  }
1716
- isRequestJSON = (e) => !(e instanceof zt);
1716
+ isRequestJSON = (e) => !(e instanceof Bt);
1717
1717
  initialize = (e) => (this.client = e, this.logger = e.loggerManager.initialize(e, "Dispatcher"), this.client.appManager.events.onOnline(() => {
1718
1718
  this.flush();
1719
1719
  }), this);
@@ -1872,7 +1872,7 @@ var Ht = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1872
1872
  resolved: !1
1873
1873
  });
1874
1874
  add = (e) => {
1875
- let t = W(e.queryKey, e.scope), n = this.createStorageItem(e), { requestId: r } = n, [i] = this.getQueue(t).requests.slice(-1), a = xn(e, i);
1875
+ let t = W(e.queryKey, e.scope), n = this.createStorageItem(e), { requestId: r } = n, [i] = this.getQueue(t).requests.slice(-1), a = Sn(e, i);
1876
1876
  switch (this.logger.debug({
1877
1877
  title: "Adding request to queue",
1878
1878
  type: "system",
@@ -1926,7 +1926,7 @@ var Ht = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1926
1926
  requestId: n
1927
1927
  }
1928
1928
  });
1929
- let { retry: r, retryTime: i, queryKey: a, abortKey: o, offline: s, scope: c } = t, l = W(a, c), u = W(o, c), { adapter: d, requestManager: f, cache: p, appManager: m } = this.client, h = yn(e.retries, r), g = !m.isOnline && s, _ = this.hasRunningRequest(l, n), v = e.stopped;
1929
+ let { retry: r, retryTime: i, queryKey: a, abortKey: o, offline: s, scope: c } = t, l = W(a, c), u = W(o, c), { adapter: d, requestManager: f, cache: p, appManager: m } = this.client, h = bn(e.retries, r), g = !m.isOnline && s, _ = this.hasRunningRequest(l, n), v = e.stopped;
1930
1930
  if (g || _ || v) return this.logger.warning({
1931
1931
  title: "Unable to perform request",
1932
1932
  type: "system",
@@ -2060,26 +2060,26 @@ var Ht = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
2060
2060
  }
2061
2061
  }), this.delete(l, n, u));
2062
2062
  };
2063
- }, pn = () => "drained-event", mn = (e) => `${e}-drained-event`, hn = () => "status-event", gn = (e) => `${e}-status-event`, _n = () => "change-event", vn = (e) => `${e}-change-event`, yn = (e, t) => !!(t && e < t), bn = (e, t) => e.deduplicateTime ? +/* @__PURE__ */ new Date() - t.timestamp <= e.deduplicateTime : !0, xn = (e, t) => {
2064
- let { queued: n, cancelable: r, deduplicate: i } = e, a = t ? bn(e, t) : !1;
2063
+ }, mn = () => "drained-event", hn = (e) => `${e}-drained-event`, gn = () => "status-event", _n = (e) => `${e}-status-event`, vn = () => "change-event", yn = (e) => `${e}-change-event`, bn = (e, t) => !!(t && e < t), xn = (e, t) => e.deduplicateTime ? +/* @__PURE__ */ new Date() - t.timestamp <= e.deduplicateTime : !0, Sn = (e, t) => {
2064
+ let { queued: n, cancelable: r, deduplicate: i } = e, a = t ? xn(e, t) : !1;
2065
2065
  return n ? K.ONE_BY_ONE : r ? K.PREVIOUS_CANCELED : a && i ? K.DEDUPLICATED : K.ALL_AT_ONCE;
2066
2066
  };
2067
- function Sn(e) {
2067
+ function Cn(e) {
2068
2068
  return e === "client" || e === "server" ? e : typeof window < "u" && typeof document < "u" ? "client" : "server";
2069
2069
  }
2070
- var Cn = async (e, t) => {
2070
+ var wn = async (e, t) => {
2071
2071
  let n = t;
2072
2072
  if (!t.requestOptions.disableRequestInterceptors) {
2073
2073
  for (let r of e) if (n = await r(t), !n) throw Error("Request modifier must return request");
2074
2074
  }
2075
2075
  return n;
2076
- }, wn = async (e, t, n) => {
2076
+ }, Tn = async (e, t, n) => {
2077
2077
  let r = t;
2078
2078
  if (!n.requestOptions.disableResponseInterceptors) {
2079
2079
  for (let i of e) if (r = await i(t, n), !r) throw Error("Response modifier must return data");
2080
2080
  }
2081
2081
  return r;
2082
- }, Tn = class {
2082
+ }, En = class {
2083
2083
  url;
2084
2084
  mode;
2085
2085
  debug;
@@ -2088,8 +2088,8 @@ var Cn = async (e, t) => {
2088
2088
  unstable_onResponseCallbacks = [];
2089
2089
  unstable_onAuthCallbacks = [];
2090
2090
  unstable_onRequestCallbacks = [];
2091
- loggerManager = new dt();
2092
- requestManager = new Pe();
2091
+ loggerManager = new ft();
2092
+ requestManager = new Fe();
2093
2093
  appManager;
2094
2094
  adapter;
2095
2095
  cache;
@@ -2097,15 +2097,15 @@ var Cn = async (e, t) => {
2097
2097
  submitDispatcher;
2098
2098
  isMockerEnabled = !0;
2099
2099
  plugins = [];
2100
- unstable_abortKeyMapper = Nt;
2101
- unstable_cacheKeyMapper = Pt;
2102
- unstable_queryKeyMapper = Pt;
2103
- unstable_requestIdMapper = we;
2100
+ unstable_abortKeyMapper = Pt;
2101
+ unstable_cacheKeyMapper = Ft;
2102
+ unstable_queryKeyMapper = Ft;
2103
+ unstable_requestIdMapper = Te;
2104
2104
  logger = this.loggerManager.initialize(this, "Client");
2105
2105
  constructor(e) {
2106
2106
  this.options = e;
2107
2107
  let { url: t, appManager: n, cache: r, fetchDispatcher: i, submitDispatcher: a, mode: o } = this.options;
2108
- this.url = t, this.mode = Sn(o), this.adapter = en(), this.appManager = n?.() || new Oe(), this.cache = r?.() || new tn(), this.fetchDispatcher = i?.() || new fn(), this.submitDispatcher = a?.() || new fn(), this.adapter.initialize(this), this.appManager.initialize(), this.cache.initialize(this), this.fetchDispatcher.initialize(this), this.submitDispatcher.initialize(this);
2108
+ this.url = t, this.mode = Cn(o), this.adapter = tn(), this.appManager = n?.() || new ke(), this.cache = r?.() || new nn(), this.fetchDispatcher = i?.() || new pn(), this.submitDispatcher = a?.() || new pn(), this.adapter.initialize(this), this.appManager.initialize(), this.cache.initialize(this), this.fetchDispatcher.initialize(this), this.submitDispatcher.initialize(this);
2109
2109
  }
2110
2110
  setDebug = (e) => (this.debug = e, this);
2111
2111
  setLogLevel = (e) => (this.loggerManager.setSeverity(e), this);
@@ -2134,15 +2134,15 @@ var Cn = async (e, t) => {
2134
2134
  setCacheKeyMapper = (e) => (this.unstable_cacheKeyMapper = e, this);
2135
2135
  setQueryKeyMapper = (e) => (this.unstable_queryKeyMapper = e, this);
2136
2136
  setRequestIdMapper = (e) => (this.unstable_requestIdMapper = e, this);
2137
- unstable_modifyAuth = async (e) => Cn(this.unstable_onAuthCallbacks, e);
2138
- unstable_modifyRequest = async (e) => Cn(this.unstable_onRequestCallbacks, e);
2139
- unstable_modifyErrorResponse = async (e, t) => wn(this.unstable_onErrorCallbacks, e, t);
2140
- unstable_modifySuccessResponse = async (e, t) => wn(this.unstable_onSuccessCallbacks, e, t);
2141
- unstable_modifyResponse = async (e, t) => wn(this.unstable_onResponseCallbacks, e, t);
2142
- fromJSON = (e) => zt.fromJSON(this, e);
2137
+ unstable_modifyAuth = async (e) => wn(this.unstable_onAuthCallbacks, e);
2138
+ unstable_modifyRequest = async (e) => wn(this.unstable_onRequestCallbacks, e);
2139
+ unstable_modifyErrorResponse = async (e, t) => Tn(this.unstable_onErrorCallbacks, e, t);
2140
+ unstable_modifySuccessResponse = async (e, t) => Tn(this.unstable_onSuccessCallbacks, e, t);
2141
+ unstable_modifyResponse = async (e, t) => Tn(this.unstable_onResponseCallbacks, e, t);
2142
+ fromJSON = (e) => Bt.fromJSON(this, e);
2143
2143
  clear = () => {
2144
2144
  let { appManager: e, cache: t, fetchDispatcher: n, submitDispatcher: r } = this.options;
2145
- this.requestManager.abortControllers.clear(), this.fetchDispatcher.clear(), this.submitDispatcher.clear(), this.cache.clear(), this.requestManager.emitter.removeAllListeners(), this.fetchDispatcher.emitter.removeAllListeners(), this.submitDispatcher.emitter.removeAllListeners(), this.cache.emitter.removeAllListeners(), this.cache = t?.() || new tn(), this.appManager = e?.() || new Oe(), this.fetchDispatcher = n?.() || new fn(), this.submitDispatcher = r?.() || new fn(), this.appManager.initialize(), this.cache.initialize(this), this.fetchDispatcher.initialize(this), this.submitDispatcher.initialize(this);
2145
+ this.requestManager.abortControllers.clear(), this.fetchDispatcher.clear(), this.submitDispatcher.clear(), this.cache.clear(), this.requestManager.emitter.removeAllListeners(), this.fetchDispatcher.emitter.removeAllListeners(), this.submitDispatcher.emitter.removeAllListeners(), this.cache.emitter.removeAllListeners(), this.cache = t?.() || new nn(), this.appManager = e?.() || new ke(), this.fetchDispatcher = n?.() || new pn(), this.submitDispatcher = r?.() || new pn(), this.appManager.initialize(), this.cache.initialize(this), this.fetchDispatcher.initialize(this), this.submitDispatcher.initialize(this);
2146
2146
  };
2147
2147
  hydrate = (e, t) => {
2148
2148
  e?.forEach((e) => {
@@ -2160,7 +2160,7 @@ var Cn = async (e, t) => {
2160
2160
  ...t
2161
2161
  };
2162
2162
  if (!s.override && this.cache.get(W(n, r))) return;
2163
- let c = Gt(i);
2163
+ let c = Kt(i);
2164
2164
  this.cache.set({
2165
2165
  ...s,
2166
2166
  cacheKey: n,
@@ -2172,10 +2172,10 @@ var Cn = async (e, t) => {
2172
2172
  let t = this.adapter.unstable_endpointMapper(e.endpoint), n = {
2173
2173
  ...e,
2174
2174
  endpoint: String(t)
2175
- }, r = new zt(this, n);
2175
+ }, r = new Bt(this, n);
2176
2176
  return this.plugins.forEach((e) => e.trigger("onRequestCreate", { request: r })), r;
2177
2177
  };
2178
- }, En = {
2178
+ }, Dn = {
2179
2179
  strict: !0,
2180
2180
  encode: !0,
2181
2181
  arrayFormat: "bracket",
@@ -2184,22 +2184,22 @@ var Cn = async (e, t) => {
2184
2184
  skipNull: !0,
2185
2185
  skipEmptyString: !0
2186
2186
  };
2187
- function Dn(e) {
2188
- return new Tn(e);
2187
+ function On(e) {
2188
+ return new En(e);
2189
2189
  }
2190
2190
  //#endregion
2191
2191
  //#region src/core/client.ts
2192
- var q = Dn({ url: N() });
2192
+ var q = On({ url: N() });
2193
2193
  //#endregion
2194
2194
  //#region src/core/auth-api.ts
2195
- async function On(e) {
2195
+ async function kn(e) {
2196
2196
  let { data: t, success: n } = await q.createRequest()({
2197
2197
  endpoint: "/auth/cli/whoami",
2198
2198
  method: "GET"
2199
2199
  }).setHeaders({ Authorization: `Bearer ${e}` }).send();
2200
2200
  return !n || !t ? null : t;
2201
2201
  }
2202
- async function kn(e) {
2202
+ async function An(e) {
2203
2203
  await q.createRequest()({
2204
2204
  endpoint: "/auth/cli/token",
2205
2205
  method: "DELETE"
@@ -2207,78 +2207,78 @@ async function kn(e) {
2207
2207
  }
2208
2208
  //#endregion
2209
2209
  //#region src/core/auth-store.ts
2210
- var An = 1, jn = "hype-stack", Mn = "auth.json";
2211
- function Nn() {
2210
+ var jn = 1, Mn = "hype-stack", Nn = "auth.json";
2211
+ function Pn() {
2212
2212
  let e = process.env.HYPE_STACK_CONFIG_DIR;
2213
- if (e) return u.join(e, jn);
2213
+ if (e) return u.join(e, Mn);
2214
2214
  let t = l.homedir();
2215
2215
  if (process.platform === "win32") {
2216
2216
  let e = process.env.APPDATA ?? u.join(t, "AppData", "Roaming");
2217
- return u.join(e, jn);
2217
+ return u.join(e, Mn);
2218
2218
  }
2219
- if (process.platform === "darwin") return u.join(t, "Library", "Application Support", jn);
2219
+ if (process.platform === "darwin") return u.join(t, "Library", "Application Support", Mn);
2220
2220
  let n = process.env.XDG_CONFIG_HOME ?? u.join(t, ".config");
2221
- return u.join(n, jn);
2221
+ return u.join(n, Mn);
2222
2222
  }
2223
- function Pn() {
2224
- return u.join(Nn(), Mn);
2223
+ function Fn() {
2224
+ return u.join(Pn(), Nn);
2225
2225
  }
2226
- async function Fn() {
2227
- let e = await s.readFile(Pn(), "utf-8").catch(() => null);
2226
+ async function In() {
2227
+ let e = await s.readFile(Fn(), "utf-8").catch(() => null);
2228
2228
  if (!e) return {
2229
- version: An,
2229
+ version: jn,
2230
2230
  tokens: {}
2231
2231
  };
2232
2232
  let t = JSON.parse(e);
2233
2233
  return {
2234
- version: t.version ?? An,
2234
+ version: t.version ?? jn,
2235
2235
  tokens: t.tokens ?? {}
2236
2236
  };
2237
2237
  }
2238
- async function In(e) {
2239
- let t = Nn();
2240
- await s.mkdir(t, { recursive: !0 }), await s.writeFile(Pn(), `${JSON.stringify(e, null, 2)}\n`, { mode: 384 });
2241
- }
2242
2238
  async function Ln(e) {
2243
- return (await Fn()).tokens[e] ?? null;
2239
+ let t = Pn();
2240
+ await s.mkdir(t, { recursive: !0 }), await s.writeFile(Fn(), `${JSON.stringify(e, null, 2)}\n`, { mode: 384 });
2241
+ }
2242
+ async function Rn(e) {
2243
+ return (await In()).tokens[e] ?? null;
2244
2244
  }
2245
- async function Rn(e, t) {
2246
- let n = await Fn();
2247
- n.tokens[e] = t, await In(n);
2245
+ async function zn(e, t) {
2246
+ let n = await In();
2247
+ n.tokens[e] = t, await Ln(n);
2248
2248
  }
2249
- async function zn(e) {
2250
- let t = await Fn();
2251
- e in t.tokens && (delete t.tokens[e], await In(t));
2249
+ async function Bn(e) {
2250
+ let t = await In();
2251
+ e in t.tokens && (delete t.tokens[e], await Ln(t));
2252
2252
  }
2253
2253
  //#endregion
2254
2254
  //#region src/core/device.ts
2255
- function Bn() {
2255
+ function Vn() {
2256
2256
  let e = l.networkInterfaces();
2257
2257
  for (let t of Object.values(e)) if (t) {
2258
2258
  for (let e of t) if (!e.internal && e.mac !== "00:00:00:00:00:00") return e.mac;
2259
2259
  }
2260
2260
  return "unknown";
2261
2261
  }
2262
- function Vn() {
2263
- let e = `${Bn()}:${l.hostname()}:${l.platform()}:${l.arch()}`;
2264
- return (0, me.createHash)("sha256").update(e).digest("hex").slice(0, 16);
2265
- }
2266
2262
  function Hn() {
2263
+ let e = `${Vn()}:${l.hostname()}:${l.platform()}:${l.arch()}`;
2264
+ return (0, he.createHash)("sha256").update(e).digest("hex").slice(0, 16);
2265
+ }
2266
+ function Un() {
2267
2267
  return `hype-stack/${C} ${l.platform()} ${l.arch()} node/${process.version.slice(1)}`;
2268
2268
  }
2269
2269
  //#endregion
2270
2270
  //#region src/core/open-browser.ts
2271
- function Un(e) {
2271
+ function Wn(e) {
2272
2272
  d(process.platform === "darwin" ? `open "${e}"` : process.platform === "win32" ? `start "" "${e}"` : `xdg-open "${e}"`);
2273
2273
  }
2274
2274
  //#endregion
2275
2275
  //#region src/core/login.ts
2276
- var Wn = 300 * 1e3, Gn = (e) => `<!doctype html><html><head><meta charset="utf-8"><title>Hype Stack CLI</title></head><body style="font-family:system-ui,sans-serif;text-align:center;padding-top:4rem;color:#111"><h2>${e}</h2><p>You can close this tab and return to your terminal.</p></body></html>`;
2277
- async function Kn(e = {}) {
2278
- let t = (0, me.randomBytes)(16).toString("hex"), n = N(), r = me.default.createServer(), i = await new Promise((n, i) => {
2276
+ var Gn = 300 * 1e3, Kn = (e) => `<!doctype html><html><head><meta charset="utf-8"><title>Hype Stack CLI</title></head><body style="font-family:system-ui,sans-serif;text-align:center;padding-top:4rem;color:#111"><h2>${e}</h2><p>You can close this tab and return to your terminal.</p></body></html>`;
2277
+ async function qn(e = {}) {
2278
+ let t = (0, he.randomBytes)(16).toString("hex"), n = N(), r = he.default.createServer(), i = await new Promise((n, i) => {
2279
2279
  let a = setTimeout(() => {
2280
2280
  o(), i(/* @__PURE__ */ Error("Login timed out. Run `hype-stack login` again."));
2281
- }, Wn);
2281
+ }, Gn);
2282
2282
  function o() {
2283
2283
  clearTimeout(a), r.close(), r.closeAllConnections?.();
2284
2284
  }
@@ -2292,7 +2292,7 @@ async function Kn(e = {}) {
2292
2292
  r.writeHead(200, {
2293
2293
  "Content-Type": "text/html",
2294
2294
  Connection: "close"
2295
- }), r.end(Gn(e));
2295
+ }), r.end(Kn(e));
2296
2296
  };
2297
2297
  if (a.searchParams.get("state") !== t) {
2298
2298
  s("Login failed."), o(), i(/* @__PURE__ */ Error("Login failed: state mismatch. Run `hype-stack login` again."));
@@ -2307,24 +2307,24 @@ async function Kn(e = {}) {
2307
2307
  }), r.on("error", (e) => {
2308
2308
  o(), i(e);
2309
2309
  }), r.listen(0, "127.0.0.1", () => {
2310
- let { port: n } = r.address(), i = encodeURIComponent(Hn()), a = `${P()}/cli/authorize?port=${n}&state=${t}&label=${i}`;
2311
- e.onUrl?.(a), Un(a);
2310
+ let { port: n } = r.address(), i = encodeURIComponent(Un()), a = `${P()}/cli/authorize?port=${n}&state=${t}&label=${i}`;
2311
+ e.onUrl?.(a), Wn(a);
2312
2312
  });
2313
- }), a = await On(i).catch(() => null), o = {
2313
+ }), a = await kn(i).catch(() => null), o = {
2314
2314
  token: i,
2315
2315
  email: a?.email,
2316
2316
  organizationId: a?.organizationId
2317
2317
  };
2318
- return await Rn(n, o), o;
2318
+ return await zn(n, o), o;
2319
2319
  }
2320
2320
  //#endregion
2321
2321
  //#region src/core/access-prompts.ts
2322
- async function qn() {
2322
+ async function Jn() {
2323
2323
  let e = await o.confirm({ message: "Log in to install packs your organization owns? (opens your browser)" });
2324
2324
  if (o.isCancel(e) || !e) return null;
2325
2325
  o.log.step("Opening your browser to sign in...");
2326
2326
  try {
2327
- let e = await Kn({ onUrl: (e) => {
2327
+ let e = await qn({ onUrl: (e) => {
2328
2328
  o.log.info(`If your browser didn't open, visit:\n ${R.path(e)}`);
2329
2329
  } });
2330
2330
  return o.log.success(e.email ? `Logged in as ${e.email}` : "Logged in"), e.token;
@@ -2332,7 +2332,7 @@ async function qn() {
2332
2332
  return o.log.error(e instanceof Error ? e.message : String(e)), null;
2333
2333
  }
2334
2334
  }
2335
- async function Jn(e) {
2335
+ async function Yn(e) {
2336
2336
  if (e.length === 0) return;
2337
2337
  o.note([
2338
2338
  "These packs need a purchase before they can be installed:",
@@ -2344,7 +2344,7 @@ async function Jn(e) {
2344
2344
  o.log.info(R.muted("Run 'hype-stack login' after purchasing, then 'hype-stack compose' again."));
2345
2345
  return;
2346
2346
  }
2347
- for (let t of e) Un(pe(t.name));
2347
+ for (let t of e) Wn(me(t.name));
2348
2348
  o.log.info([
2349
2349
  R.muted("After purchasing, run:"),
2350
2350
  ` ${R.highlight("hype-stack login")} ${R.muted("Save your access")}`,
@@ -2386,52 +2386,52 @@ function J(e, t, n) {
2386
2386
  }
2387
2387
  //#endregion
2388
2388
  //#region src/utils/fs.ts
2389
- async function Yn(e) {
2389
+ async function Xn(e) {
2390
2390
  return (await s.stat(e).catch(() => null))?.isDirectory() ?? !1;
2391
2391
  }
2392
2392
  async function Y(e) {
2393
2393
  return (await s.stat(e).catch(() => null))?.isFile() ?? !1;
2394
2394
  }
2395
- async function Xn(e) {
2395
+ async function Zn(e) {
2396
2396
  return (await s.readdir(e).catch(() => [])).length === 0;
2397
2397
  }
2398
- async function Zn(e) {
2398
+ async function Qn(e) {
2399
2399
  let t = await s.readFile(e, "utf-8").catch(() => null);
2400
2400
  return t ? JSON.parse(t) : null;
2401
2401
  }
2402
- async function Qn(e, t) {
2402
+ async function $n(e, t) {
2403
2403
  await s.writeFile(e, JSON.stringify(t, null, 2) + "\n", "utf-8");
2404
2404
  }
2405
- async function $n(e) {
2405
+ async function er(e) {
2406
2406
  let t = {};
2407
- if (!await Yn(e)) return t;
2407
+ if (!await Xn(e)) return t;
2408
2408
  let n = await s.readdir(e, { withFileTypes: !0 });
2409
2409
  for (let r of n) r.isDirectory() && await Y(u.join(e, r.name, "package.json")) && (t[r.name] = u.relative(u.dirname(e), u.join(e, r.name)));
2410
2410
  return t;
2411
2411
  }
2412
- async function er(e) {
2412
+ async function tr(e) {
2413
2413
  await s.rm(e, {
2414
2414
  recursive: !0,
2415
2415
  force: !0
2416
2416
  });
2417
2417
  }
2418
- function tr(e, t) {
2418
+ function nr(e, t) {
2419
2419
  return u.basename(e) === t ? e : u.join(e, t);
2420
2420
  }
2421
2421
  //#endregion
2422
2422
  //#region src/core/codegen.ts
2423
- function nr(e) {
2423
+ function rr(e) {
2424
2424
  o.log.info(R.muted("Run database setup yourself when ready:")), o.note([
2425
2425
  `${R.command(`cd ${e}`)}`,
2426
2426
  `${R.command("pnpm exec prisma generate")} ${R.muted("(regenerate the Prisma client)")}`,
2427
2427
  `${R.command("pnpm exec prisma migrate dev")} ${R.muted("(create + apply tables for new packs)")}`
2428
2428
  ].join("\n"), "Database Setup");
2429
2429
  }
2430
- async function rr(e) {
2430
+ async function ir(e) {
2431
2431
  let { projectRoot: t, paths: n, skipPrompts: r, runCommand: i = J } = e, a = n.backend.root, s = u.join(t, a);
2432
2432
  if (!await Y(u.join(s, "package.json"))) return;
2433
2433
  if (r) {
2434
- nr(a);
2434
+ rr(a);
2435
2435
  return;
2436
2436
  }
2437
2437
  let c = await o.confirm({
@@ -2439,7 +2439,7 @@ async function rr(e) {
2439
2439
  initialValue: !0
2440
2440
  });
2441
2441
  if (o.isCancel(c) || !c) {
2442
- nr(a);
2442
+ rr(a);
2443
2443
  return;
2444
2444
  }
2445
2445
  let l = o.spinner();
@@ -2448,7 +2448,7 @@ async function rr(e) {
2448
2448
  "prisma",
2449
2449
  "generate"
2450
2450
  ], { cwd: s })).exitCode !== 0) {
2451
- l.stop(R.warning("Prisma client generation failed")), nr(a);
2451
+ l.stop(R.warning("Prisma client generation failed")), rr(a);
2452
2452
  return;
2453
2453
  }
2454
2454
  l.stop(R.success("Prisma client generated"));
@@ -2461,30 +2461,30 @@ async function rr(e) {
2461
2461
  "--name",
2462
2462
  "add-packs"
2463
2463
  ], { cwd: s })).exitCode !== 0) {
2464
- d.stop(R.warning("Database migration failed (is your database running?)")), nr(a);
2464
+ d.stop(R.warning("Database migration failed (is your database running?)")), rr(a);
2465
2465
  return;
2466
2466
  }
2467
2467
  d.stop(R.success("Database schema applied"));
2468
2468
  }
2469
2469
  //#endregion
2470
2470
  //#region src/core/stack-config.ts
2471
- async function ir(e) {
2472
- return Zn(u.join(e, T));
2473
- }
2474
2471
  async function ar(e) {
2472
+ return Qn(u.join(e, T));
2473
+ }
2474
+ async function or(e) {
2475
2475
  return Y(u.join(e, T));
2476
2476
  }
2477
- async function or(e, t) {
2478
- await Qn(u.join(e, T), t);
2477
+ async function sr(e, t) {
2478
+ await $n(u.join(e, T), t);
2479
2479
  }
2480
- async function sr(e) {
2481
- let t = u.join(e, "apps"), n = u.join(e, "packages"), [r, i] = await Promise.all([$n(t), $n(n)]);
2480
+ async function cr(e) {
2481
+ let t = u.join(e, "apps"), n = u.join(e, "packages"), [r, i] = await Promise.all([er(t), er(n)]);
2482
2482
  return {
2483
2483
  apps: r,
2484
2484
  packages: i
2485
2485
  };
2486
2486
  }
2487
- function cr(e) {
2487
+ function lr(e) {
2488
2488
  let t = e.apps.backend ?? "apps/backend", n = e.apps.frontend ?? "apps/frontend", r = e.apps.admin ?? "apps/admin", i = e.packages.enums ?? "packages/enums";
2489
2489
  return {
2490
2490
  backend: {
@@ -2518,20 +2518,20 @@ function cr(e) {
2518
2518
  }
2519
2519
  };
2520
2520
  }
2521
- function lr(e, t) {
2521
+ function ur(e, t) {
2522
2522
  return {
2523
- $schema: re(),
2523
+ $schema: ie(),
2524
2524
  version: 1,
2525
2525
  name: e,
2526
2526
  apps: t.apps,
2527
2527
  packages: t.packages,
2528
- paths: cr(t),
2528
+ paths: lr(t),
2529
2529
  installedPacks: [],
2530
2530
  licenseKey: null
2531
2531
  };
2532
2532
  }
2533
- async function ur(e) {
2534
- let t = u.join(e, "package.json"), n = u.join(e, "apps"), [r, i] = await Promise.all([Y(t), Yn(n)]);
2533
+ async function dr(e) {
2534
+ let t = u.join(e, "package.json"), n = u.join(e, "apps"), [r, i] = await Promise.all([Y(t), Xn(n)]);
2535
2535
  return r && i;
2536
2536
  }
2537
2537
  function X(e, t) {
@@ -2545,7 +2545,7 @@ function X(e, t) {
2545
2545
  }
2546
2546
  //#endregion
2547
2547
  //#region src/core/registry.ts
2548
- async function dr(e) {
2548
+ async function fr(e) {
2549
2549
  let { data: t, error: n, status: r } = await q.createRequest()({
2550
2550
  endpoint: `/packs/${encodeURIComponent(e)}/manifest`,
2551
2551
  method: "GET"
@@ -2554,13 +2554,13 @@ async function dr(e) {
2554
2554
  if (n || !t) throw Error(`Failed to load manifest for "${e}": ${String(n)}`);
2555
2555
  return t;
2556
2556
  }
2557
- async function fr(e, t = {}) {
2557
+ async function pr(e, t = {}) {
2558
2558
  let n = q.createRequest()({
2559
2559
  endpoint: `/packs/${encodeURIComponent(e)}/download`,
2560
2560
  method: "POST"
2561
2561
  }), r = {
2562
- "X-Device-Id": Vn(),
2563
- "X-Client-Info": Hn()
2562
+ "X-Device-Id": Hn(),
2563
+ "X-Client-Info": Un()
2564
2564
  };
2565
2565
  t.token && (r.Authorization = `Bearer ${t.token}`);
2566
2566
  let { data: i, error: a, success: o } = await n.setPayload({ key: t.licenseKey ?? void 0 }).setHeaders(r).send();
@@ -2580,23 +2580,23 @@ async function fr(e, t = {}) {
2580
2580
  packDir: c
2581
2581
  };
2582
2582
  }
2583
- function pr(e, t, n) {
2583
+ function mr(e, t, n) {
2584
2584
  let r = X(e, t);
2585
2585
  return u.resolve(n, r);
2586
2586
  }
2587
- function mr(e, t) {
2587
+ function hr(e, t) {
2588
2588
  return u.join(t, e);
2589
2589
  }
2590
- var hr = q.createRequest()({
2590
+ var gr = q.createRequest()({
2591
2591
  endpoint: "/packs/list",
2592
2592
  method: "GET"
2593
2593
  });
2594
- async function gr() {
2595
- let { data: e, error: t } = await hr.send();
2594
+ async function _r() {
2595
+ let { data: e, error: t } = await gr.send();
2596
2596
  if (t || !e) throw Error(`Failed to fetch pack list: ${String(t)}`);
2597
2597
  return e.packs;
2598
2598
  }
2599
- async function _r(e, t = {}) {
2599
+ async function vr(e, t = {}) {
2600
2600
  if (e.length === 0) return {};
2601
2601
  let n = q.createRequest()({
2602
2602
  endpoint: "/packs/authorize",
@@ -2612,35 +2612,35 @@ async function _r(e, t = {}) {
2612
2612
  }
2613
2613
  //#endregion
2614
2614
  //#region src/core/codemods.ts
2615
- var vr = "@hype-stack/";
2616
- function yr(e, t) {
2615
+ var yr = "@hype-stack/";
2616
+ function br(e, t) {
2617
2617
  return X(e === "admin" ? "{{admin.root}}" : "{{frontend.root}}", t);
2618
2618
  }
2619
- async function br(e, t, n) {
2619
+ async function xr(e, t, n) {
2620
2620
  let r = X("{{backend.root}}", t), i = u.resolve(n, r, "src/config/env/env.config.ts"), a = u.resolve(n, r, ".env.example"), o = u.resolve(n, r, ".env.test");
2621
2621
  if (await Y(i)) {
2622
2622
  let t = await s.readFile(i, "utf-8");
2623
- for (let n of e) t.includes(`from "${n.from}"`) || (t = xr(t, n), t = Sr(t, n));
2623
+ for (let n of e) t.includes(`from "${n.from}"`) || (t = Sr(t, n), t = Cr(t, n));
2624
2624
  await s.writeFile(i, t, "utf-8");
2625
2625
  }
2626
2626
  if (await Y(a)) {
2627
2627
  let t = await s.readFile(a, "utf-8");
2628
- for (let n of e) t = Cr(t, n);
2628
+ for (let n of e) t = wr(t, n);
2629
2629
  await s.writeFile(a, t, "utf-8");
2630
2630
  }
2631
2631
  if (await Y(o)) {
2632
2632
  let t = await s.readFile(o, "utf-8");
2633
- for (let n of e) t = wr(t, n);
2633
+ for (let n of e) t = Tr(t, n);
2634
2634
  await s.writeFile(o, t, "utf-8");
2635
2635
  }
2636
2636
  }
2637
- function xr(e, t) {
2637
+ function Sr(e, t) {
2638
2638
  let n = `import { ${t.import} } from "${t.from}";`, r = e.lastIndexOf("import ");
2639
2639
  if (r === -1) return n + "\n" + e;
2640
2640
  let i = e.indexOf("\n", e.indexOf(";", r));
2641
2641
  return i === -1 ? e + "\n" + n : e.slice(0, i + 1) + n + "\n" + e.slice(i + 1);
2642
2642
  }
2643
- function Sr(e, t) {
2643
+ function Cr(e, t) {
2644
2644
  let n = `.extend(${t.import}.shape)`;
2645
2645
  if (e.includes(n)) return e;
2646
2646
  let r = e.indexOf("export const envSchema = z.object({");
@@ -2655,27 +2655,27 @@ function Sr(e, t) {
2655
2655
  let o = a + 2;
2656
2656
  return e.slice(0, o) + n + e.slice(o);
2657
2657
  }
2658
- function Cr(e, t) {
2658
+ function wr(e, t) {
2659
2659
  for (let n of Object.keys(t.envExample.vars)) if (e.includes(`${n}=`)) return e;
2660
2660
  let n = [];
2661
2661
  n.push(""), n.push(`# ${t.envExample.section}`);
2662
2662
  for (let [e, r] of Object.entries(t.envExample.vars)) n.push(`${e}=${r}`);
2663
2663
  return e.trimEnd() + "\n" + n.join("\n") + "\n";
2664
2664
  }
2665
- function wr(e, t) {
2665
+ function Tr(e, t) {
2666
2666
  for (let n of Object.keys(t.envTest)) if (e.includes(`${n}=`)) return e;
2667
2667
  let n = [""];
2668
2668
  for (let [e, r] of Object.entries(t.envTest)) n.push(`${e}=${r}`);
2669
2669
  return e.trimEnd() + "\n" + n.join("\n") + "\n";
2670
2670
  }
2671
- async function Tr(e, t, n) {
2671
+ async function Er(e, t, n) {
2672
2672
  let r = u.resolve(n, X("{{backend.routes}}", t), "index.ts");
2673
2673
  if (!await Y(r)) return;
2674
2674
  let i = await s.readFile(r, "utf-8");
2675
- for (let t of e) i.includes(`from "${t.from}"`) || (i = Er(i, t), i = Dr(i, t));
2675
+ for (let t of e) i.includes(`from "${t.from}"`) || (i = Dr(i, t), i = Or(i, t));
2676
2676
  await s.writeFile(r, i, "utf-8");
2677
2677
  }
2678
- function Er(e, t) {
2678
+ function Dr(e, t) {
2679
2679
  let n = `import { ${t.import} } from "${t.from}";`, r = e.lastIndexOf("from \"./");
2680
2680
  if (r !== -1) {
2681
2681
  let t = e.indexOf("\n", r);
@@ -2684,7 +2684,7 @@ function Er(e, t) {
2684
2684
  let i = e.indexOf("export const registerRoutes");
2685
2685
  return i === -1 ? e : e.slice(0, i) + n + "\n\n" + e.slice(i);
2686
2686
  }
2687
- function Dr(e, t) {
2687
+ function Or(e, t) {
2688
2688
  let n = `.route("${t.prefix}", ${t.import})`, r = e.match(/\.route\([^)]+\);/g);
2689
2689
  if (r) {
2690
2690
  let t = r[r.length - 1], i = e.lastIndexOf(t) + t.length - 1;
@@ -2692,14 +2692,14 @@ function Dr(e, t) {
2692
2692
  }
2693
2693
  return e.replace("return app;", `return app\n ${n};`);
2694
2694
  }
2695
- async function Or(e, t, n) {
2695
+ async function kr(e, t, n) {
2696
2696
  let r = u.resolve(n, X("{{backend.root}}", t), "src/context.ts");
2697
2697
  if (!await Y(r)) return;
2698
2698
  let i = await s.readFile(r, "utf-8");
2699
- for (let t of e) i.includes(`export let ${t.export}`) || (i = kr(i, t), i = Ar(i, t), i = jr(i, t), i = Nr(i, t));
2699
+ for (let t of e) i.includes(`export let ${t.export}`) || (i = Ar(i, t), i = jr(i, t), i = Mr(i, t), i = Pr(i, t));
2700
2700
  await s.writeFile(r, i, "utf-8");
2701
2701
  }
2702
- function kr(e, t) {
2702
+ function Ar(e, t) {
2703
2703
  let n = `import { ${t.typeImport.name} } from "${t.typeImport.from}";`;
2704
2704
  if (e.includes(`from "${t.typeImport.from}"`)) return e;
2705
2705
  let r = e.lastIndexOf("import ");
@@ -2707,7 +2707,7 @@ function kr(e, t) {
2707
2707
  let i = e.indexOf("\n", e.indexOf(";", r));
2708
2708
  return i === -1 ? e + "\n" + n : e.slice(0, i + 1) + n + "\n" + e.slice(i + 1);
2709
2709
  }
2710
- function Ar(e, t) {
2710
+ function jr(e, t) {
2711
2711
  let n = `export let ${t.export}: ${t.type};`, r = e.lastIndexOf("export let ");
2712
2712
  if (r === -1) {
2713
2713
  let t = e.indexOf("export const setupContext");
@@ -2716,15 +2716,15 @@ function Ar(e, t) {
2716
2716
  let i = e.indexOf("\n", r);
2717
2717
  return i === -1 ? e + "\n" + n : e.slice(0, i + 1) + n + "\n" + e.slice(i + 1);
2718
2718
  }
2719
- function jr(e, t) {
2719
+ function Mr(e, t) {
2720
2720
  let n = ` ${t.export} = ${t.init};`, r = e.match(/export const setupContext\s*=\s*async\s*\([^)]*\)\s*=>\s*\{/);
2721
2721
  if (!r) return e;
2722
2722
  let i = e.indexOf("{", e.indexOf(r[0]));
2723
2723
  if (i === -1) return e;
2724
- let a = Mr(e, i);
2724
+ let a = Nr(e, i);
2725
2725
  return a === -1 ? e : e.slice(0, a) + n + "\n" + e.slice(a);
2726
2726
  }
2727
- function Mr(e, t) {
2727
+ function Nr(e, t) {
2728
2728
  let n = 0;
2729
2729
  for (let r = t; r < e.length; r++) {
2730
2730
  let t = e[r];
@@ -2733,20 +2733,20 @@ function Mr(e, t) {
2733
2733
  }
2734
2734
  return -1;
2735
2735
  }
2736
- function Nr(e, t) {
2736
+ function Pr(e, t) {
2737
2737
  let n = ` ${t.export}: ${t.type};`, r = e.indexOf("export type ContextVariables = {");
2738
2738
  if (r === -1) return e;
2739
2739
  let i = e.indexOf("};", r);
2740
2740
  return i === -1 ? e : e.slice(0, i) + n + "\n" + e.slice(i);
2741
2741
  }
2742
- async function Pr(e, t, n) {
2742
+ async function Fr(e, t, n) {
2743
2743
  let r = u.resolve(n, X("{{enums.src}}", t), "index.ts");
2744
2744
  if (!await Y(r)) return;
2745
2745
  let i = await s.readFile(r, "utf-8");
2746
- for (let t of e) i.includes(`from "${t.from}"`) || (i = Fr(i, t));
2746
+ for (let t of e) i.includes(`from "${t.from}"`) || (i = Ir(i, t));
2747
2747
  await s.writeFile(r, i, "utf-8");
2748
2748
  }
2749
- function Fr(e, t) {
2749
+ function Ir(e, t) {
2750
2750
  let n = `export * from "${t.from}";`, r = e.lastIndexOf("export * from");
2751
2751
  if (r !== -1) {
2752
2752
  let t = e.indexOf("\n", r);
@@ -2754,14 +2754,14 @@ function Fr(e, t) {
2754
2754
  }
2755
2755
  return e.trim() === "" ? n + "\n" : e.trimEnd() + "\n" + n + "\n";
2756
2756
  }
2757
- async function Ir(e, t, n) {
2757
+ async function Lr(e, t, n) {
2758
2758
  let r = X("{{backend.root}}", t), i = u.resolve(n, r, "src/sockets/index.ts");
2759
2759
  if (!await Y(i)) return;
2760
2760
  let a = await s.readFile(i, "utf-8");
2761
- for (let t of e) a.includes(`from "${t.from}"`) || (a = Lr(a, t), a = Rr(a, t));
2762
- await Y(u.resolve(n, r, "src/libs/websocket/ws-authenticate.ts")) && (a = zr(a)), await s.writeFile(i, a, "utf-8");
2761
+ for (let t of e) a.includes(`from "${t.from}"`) || (a = Rr(a, t), a = zr(a, t));
2762
+ await Y(u.resolve(n, r, "src/libs/websocket/ws-authenticate.ts")) && (a = Br(a)), await s.writeFile(i, a, "utf-8");
2763
2763
  }
2764
- function Lr(e, t) {
2764
+ function Rr(e, t) {
2765
2765
  let n = `import { ${t.import} } from "${t.from}";`, r = e.lastIndexOf("from \"./");
2766
2766
  if (r !== -1) {
2767
2767
  let t = e.indexOf("\n", r);
@@ -2770,7 +2770,7 @@ function Lr(e, t) {
2770
2770
  let i = e.indexOf("const sockets");
2771
2771
  return i === -1 ? e : e.slice(0, i) + n + "\n\n" + e.slice(i);
2772
2772
  }
2773
- function Rr(e, t) {
2773
+ function zr(e, t) {
2774
2774
  let n = `.socket("${t.prefix}", ${t.import})`, r = e.indexOf("const sockets");
2775
2775
  if (r === -1) return e;
2776
2776
  let i = e.indexOf("new SocketRouter", r);
@@ -2784,7 +2784,7 @@ function Rr(e, t) {
2784
2784
  }
2785
2785
  return e;
2786
2786
  }
2787
- function zr(e) {
2787
+ function Br(e) {
2788
2788
  if (e.includes("wsAuthenticate")) return e;
2789
2789
  let t = e.indexOf("from \"@backend/libs/websocket/socket-router\""), n = e;
2790
2790
  if (t !== -1) {
@@ -2793,14 +2793,14 @@ function zr(e) {
2793
2793
  }
2794
2794
  return n.replace("new SocketRouter()", "new SocketRouter({ authenticate: wsAuthenticate })");
2795
2795
  }
2796
- async function Br(e, t, n) {
2796
+ async function Vr(e, t, n) {
2797
2797
  let r = X("{{frontend.root}}", t), i = u.resolve(n, r, "src/api/sdk.ts");
2798
2798
  if (!await Y(i)) return;
2799
2799
  let a = await s.readFile(i, "utf-8");
2800
- for (let t of e) a.includes(`.$configure(${t.import})`) || (a = Vr(a, t), a = Hr(a, t));
2800
+ for (let t of e) a.includes(`.$configure(${t.import})`) || (a = Hr(a, t), a = Ur(a, t));
2801
2801
  await s.writeFile(i, a, "utf-8");
2802
2802
  }
2803
- function Vr(e, t) {
2803
+ function Hr(e, t) {
2804
2804
  let n = `import { ${t.import} } from "${t.from}";`;
2805
2805
  if (e.includes(n)) return e;
2806
2806
  let r = e.lastIndexOf("from \"./");
@@ -2811,57 +2811,57 @@ function Vr(e, t) {
2811
2811
  let i = e.indexOf("export const sdk");
2812
2812
  return i === -1 ? e : e.slice(0, i) + n + "\n\n" + e.slice(i);
2813
2813
  }
2814
- function Hr(e, t) {
2814
+ function Ur(e, t) {
2815
2815
  let n = `.$configure(${t.import})`, r = e.indexOf("export const sdk");
2816
2816
  if (r === -1) return e;
2817
2817
  let i = e.indexOf(";", r);
2818
2818
  return i === -1 ? e : e.slice(0, i) + "\n " + n + e.slice(i);
2819
2819
  }
2820
- async function Ur(e, t, n) {
2820
+ async function Wr(e, t, n) {
2821
2821
  let r = u.resolve(n, X("{{backend.utils}}", t), "frontend-url/frontend-url.ts");
2822
2822
  if (!await Y(r)) return;
2823
2823
  let i = await s.readFile(r, "utf-8");
2824
- for (let t of e) i.includes(`"${t.path}"`) || (i = Wr(i, t));
2824
+ for (let t of e) i.includes(`"${t.path}"`) || (i = Gr(i, t));
2825
2825
  await s.writeFile(r, i, "utf-8");
2826
2826
  }
2827
- function Wr(e, t) {
2827
+ function Gr(e, t) {
2828
2828
  let n = ` "${t.path}": ${t.search};`, r = e.indexOf("type RouteDefinitions = {");
2829
2829
  if (r === -1) return e;
2830
2830
  let i = e.indexOf("};", r);
2831
2831
  return i === -1 ? e : e.slice(0, i) + n + "\n" + e.slice(i);
2832
2832
  }
2833
- var Gr = "import { type LucideIcon } from \"lucide-react\";\n\n/* -------------------------------------------------------------------------------------------------\n * Types\n * -----------------------------------------------------------------------------------------------*/\n\nexport type NavItem = {\n label: string;\n icon: LucideIcon;\n to: string;\n params?: Record<string, string>;\n};\n\nexport type NavSection = {\n label: string;\n icon: LucideIcon;\n items: NavItem[];\n};\n\nexport type NavSectionLink = NavSection & { to: string; params?: Record<string, string> };\n\nexport type NavEntry = NavSection | NavSectionLink;\n\n/* -------------------------------------------------------------------------------------------------\n * Navigation\n * -----------------------------------------------------------------------------------------------*/\n\nexport const primaryNav: NavEntry[] = [];\n\nexport const secondaryNav: NavEntry[] = [];\n\nexport const tertiaryNav: NavEntry[] = [];\n\nexport const settingsNav: NavEntry[] = [];\n", Kr = {
2833
+ var Kr = "import { type LucideIcon } from \"lucide-react\";\n\n/* -------------------------------------------------------------------------------------------------\n * Types\n * -----------------------------------------------------------------------------------------------*/\n\nexport type NavItem = {\n label: string;\n icon: LucideIcon;\n to: string;\n params?: Record<string, string>;\n};\n\nexport type NavSection = {\n label: string;\n icon: LucideIcon;\n items: NavItem[];\n};\n\nexport type NavSectionLink = NavSection & { to: string; params?: Record<string, string> };\n\nexport type NavEntry = NavSection | NavSectionLink;\n\n/* -------------------------------------------------------------------------------------------------\n * Navigation\n * -----------------------------------------------------------------------------------------------*/\n\nexport const primaryNav: NavEntry[] = [];\n\nexport const secondaryNav: NavEntry[] = [];\n\nexport const tertiaryNav: NavEntry[] = [];\n\nexport const settingsNav: NavEntry[] = [];\n", qr = {
2834
2834
  primary: "primaryNav",
2835
2835
  secondary: "secondaryNav",
2836
2836
  tertiary: "tertiaryNav",
2837
2837
  settings: "settingsNav"
2838
2838
  };
2839
- async function qr(e) {
2840
- let { entries: t, paths: n, projectRoot: r, slot: i = "frontend" } = e, a = yr(i, n), o = u.resolve(r, a, "src/constants/nav.constants.ts"), c;
2841
- await Y(o) ? c = await s.readFile(o, "utf-8") : (await s.mkdir(u.dirname(o), { recursive: !0 }), c = Gr);
2842
- for (let e of t) c.includes(`label: "${e.label}"`) || (c = Xr(c, e));
2843
- for (let e of t.toReversed()) c.includes(`label: "${e.label}"`) || (c = Qr(c, e));
2839
+ async function Jr(e) {
2840
+ let { entries: t, paths: n, projectRoot: r, slot: i = "frontend" } = e, a = br(i, n), o = u.resolve(r, a, "src/constants/nav.constants.ts"), c;
2841
+ await Y(o) ? c = await s.readFile(o, "utf-8") : (await s.mkdir(u.dirname(o), { recursive: !0 }), c = Kr);
2842
+ for (let e of t) c.includes(`label: "${e.label}"`) || (c = Zr(c, e));
2843
+ for (let e of t.toReversed()) c.includes(`label: "${e.label}"`) || (c = $r(c, e));
2844
2844
  await s.writeFile(o, c, "utf-8");
2845
2845
  }
2846
- async function Jr(e) {
2847
- let { postLoginRedirect: t, paths: n, projectRoot: r, slot: i = "frontend" } = e, a = yr(i, n), o = u.resolve(r, a, "src/features/auth/constants/auth.constants.ts");
2846
+ async function Yr(e) {
2847
+ let { postLoginRedirect: t, paths: n, projectRoot: r, slot: i = "frontend" } = e, a = br(i, n), o = u.resolve(r, a, "src/features/auth/constants/auth.constants.ts");
2848
2848
  if (!await Y(o)) return;
2849
2849
  let c = await s.readFile(o, "utf-8"), l = /export const POST_LOGIN_REDIRECT_PATH = "[^"]*";/;
2850
2850
  if (!l.test(c)) return;
2851
2851
  let d = c.replace(l, `export const POST_LOGIN_REDIRECT_PATH = "${t}";`);
2852
2852
  await s.writeFile(o, d, "utf-8");
2853
2853
  }
2854
- function Yr(e) {
2854
+ function Xr(e) {
2855
2855
  let t = [e.icon];
2856
2856
  if (e.items) for (let n of e.items) t.includes(n.icon) || t.push(n.icon);
2857
2857
  return t;
2858
2858
  }
2859
- function Xr(e, t) {
2860
- let n = Yr(t), r = e;
2861
- for (let e of n) r = Zr(r, e);
2859
+ function Zr(e, t) {
2860
+ let n = Xr(t), r = e;
2861
+ for (let e of n) r = Qr(r, e);
2862
2862
  return r;
2863
2863
  }
2864
- function Zr(e, t) {
2864
+ function Qr(e, t) {
2865
2865
  let n = e.match(/import \{([^}]+)\} from "lucide-react";/);
2866
2866
  if (!n) return e;
2867
2867
  let r = n[1].split(",").map((e) => e.trim()).filter(Boolean);
@@ -2869,21 +2869,21 @@ function Zr(e, t) {
2869
2869
  let i = r.findIndex((e) => e.startsWith("type "));
2870
2870
  return i === -1 ? r.push(t) : r.splice(i, 0, t), e.replace(n[0], `import { ${r.join(", ")} } from "lucide-react";`);
2871
2871
  }
2872
- function Qr(e, t) {
2873
- let n = Kr[t.group];
2872
+ function $r(e, t) {
2873
+ let n = qr[t.group];
2874
2874
  if (!n) return e;
2875
- let r = ei(t), i = RegExp(`export const ${n}: NavEntry\\[\\] = \\[`), a = e.match(i);
2875
+ let r = ti(t), i = RegExp(`export const ${n}: NavEntry\\[\\] = \\[`), a = e.match(i);
2876
2876
  if (!a) return e;
2877
- let o = e.indexOf(a[0]) + a[0].length, s = $r(e, o - 1);
2877
+ let o = e.indexOf(a[0]) + a[0].length, s = ei(e, o - 1);
2878
2878
  return s === -1 ? e : e.slice(o, s).trim() === "" ? e.slice(0, o) + "\n" + r + "\n" + e.slice(o) : e.slice(0, o) + "\n" + r + e.slice(o);
2879
2879
  }
2880
- function $r(e, t) {
2880
+ function ei(e, t) {
2881
2881
  let n = 0;
2882
2882
  for (let r = t; r < e.length; r++) if (e[r] === "[") n++;
2883
2883
  else if (e[r] === "]" && (n--, n === 0)) return r;
2884
2884
  return -1;
2885
2885
  }
2886
- function ei(e) {
2886
+ function ti(e) {
2887
2887
  let t = [];
2888
2888
  if (t.push(" {"), t.push(` label: "${e.label}",`), t.push(` icon: ${e.icon},`), e.to && t.push(` to: "${e.to}",`), e.params && t.push(` params: ${e.params},`), e.items && e.items.length > 0) {
2889
2889
  t.push(" items: [");
@@ -2899,14 +2899,14 @@ function ei(e) {
2899
2899
  } else t.push(" items: [],");
2900
2900
  return t.push(" },"), t.join("\n");
2901
2901
  }
2902
- async function ti(e, t, n) {
2902
+ async function ni(e, t, n) {
2903
2903
  let r = X("{{backend.features}}", t), i = u.resolve(n, r, "organizations/modules/setup-organization/steps/index.ts");
2904
2904
  if (!await Y(i)) return;
2905
2905
  let a = await s.readFile(i, "utf-8");
2906
- for (let t of e) a.includes(`from "${t.from}"`) || (a = ni(a, t), a = ri(a, t));
2906
+ for (let t of e) a.includes(`from "${t.from}"`) || (a = ri(a, t), a = ii(a, t));
2907
2907
  await s.writeFile(i, a, "utf-8");
2908
2908
  }
2909
- function ni(e, t) {
2909
+ function ri(e, t) {
2910
2910
  let n = `import { ${t.import} } from "${t.from}";`, r = e.lastIndexOf("import ");
2911
2911
  if (r !== -1) {
2912
2912
  let t = e.indexOf("\n", e.indexOf(";", r));
@@ -2914,38 +2914,38 @@ function ni(e, t) {
2914
2914
  }
2915
2915
  return e.indexOf("type "), n + "\n\n" + e;
2916
2916
  }
2917
- function ri(e, t) {
2917
+ function ii(e, t) {
2918
2918
  let n = ` { id: "${t.id}", execute: (ctx) => ${t.import}(ctx) },`, r = e.match(/export const steps:\s*Step\[\]\s*=\s*\[/);
2919
2919
  if (!r) return e;
2920
- let i = e.indexOf(r[0]) + r[0].length, a = ii(e, i - 1);
2920
+ let i = e.indexOf(r[0]) + r[0].length, a = ai(e, i - 1);
2921
2921
  return a === -1 ? e : e.slice(i, a).trim() === "" ? e.slice(0, a) + "\n" + n + "\n" + e.slice(a) : e.slice(0, a) + n + "\n" + e.slice(a);
2922
2922
  }
2923
- function ii(e, t) {
2923
+ function ai(e, t) {
2924
2924
  let n = 0;
2925
2925
  for (let r = t; r < e.length; r++) if (e[r] === "[") n++;
2926
2926
  else if (e[r] === "]" && (n--, n === 0)) return r;
2927
2927
  return -1;
2928
2928
  }
2929
- var ai = "import { type ComponentType } from \"react\";\n\nexport type NavbarAction = {\n id: string;\n component: ComponentType;\n};\n\nexport const navbarActions: NavbarAction[] = [];\n\nexport const userMenuActions: NavbarAction[] = [];\n";
2930
- async function oi(e) {
2931
- await ci({
2929
+ var oi = "import { type ComponentType } from \"react\";\n\nexport type NavbarAction = {\n id: string;\n component: ComponentType;\n};\n\nexport const navbarActions: NavbarAction[] = [];\n\nexport const userMenuActions: NavbarAction[] = [];\n";
2930
+ async function si(e) {
2931
+ await li({
2932
2932
  ...e,
2933
2933
  arrayName: "navbarActions"
2934
2934
  });
2935
2935
  }
2936
- async function si(e) {
2937
- await ci({
2936
+ async function ci(e) {
2937
+ await li({
2938
2938
  ...e,
2939
2939
  arrayName: "userMenuActions"
2940
2940
  });
2941
2941
  }
2942
- async function ci({ actions: e, arrayName: t, paths: n, projectRoot: r, slot: i }) {
2943
- let a = yr(i, n), o = u.resolve(r, a, "src/constants/navbar-actions.tsx"), c;
2944
- await Y(o) ? c = await s.readFile(o, "utf-8") : (await s.mkdir(u.dirname(o), { recursive: !0 }), c = ai);
2945
- for (let n of e) c = li(c, n), c = ui(c, n, t);
2942
+ async function li({ actions: e, arrayName: t, paths: n, projectRoot: r, slot: i }) {
2943
+ let a = br(i, n), o = u.resolve(r, a, "src/constants/navbar-actions.tsx"), c;
2944
+ await Y(o) ? c = await s.readFile(o, "utf-8") : (await s.mkdir(u.dirname(o), { recursive: !0 }), c = oi);
2945
+ for (let n of e) c = ui(c, n), c = di(c, n, t);
2946
2946
  await s.writeFile(o, c, "utf-8");
2947
2947
  }
2948
- function li(e, t) {
2948
+ function ui(e, t) {
2949
2949
  let n = `import { ${t.import} } from "${t.from}";`;
2950
2950
  if (e.includes(n)) return e;
2951
2951
  let r = e.lastIndexOf("import ");
@@ -2953,38 +2953,38 @@ function li(e, t) {
2953
2953
  let i = e.indexOf("\n", r);
2954
2954
  return i === -1 ? e + "\n" + n : e.slice(0, i + 1) + n + "\n" + e.slice(i + 1);
2955
2955
  }
2956
- function ui(e, t, n) {
2956
+ function di(e, t, n) {
2957
2957
  let r = e.match(RegExp(`export const ${n}:\\s*NavbarAction\\[\\]\\s*=\\s*\\[`));
2958
2958
  if (!r) return e;
2959
- let i = e.indexOf(r[0]) + r[0].length, a = di(e, i - 1);
2959
+ let i = e.indexOf(r[0]) + r[0].length, a = fi(e, i - 1);
2960
2960
  if (a === -1) return e;
2961
2961
  let o = e.slice(i, a);
2962
2962
  if (o.includes(`id: "${t.id}"`)) return e;
2963
2963
  let s = ` { id: "${t.id}", component: ${t.import} },`;
2964
2964
  return o.trim() === "" ? e.slice(0, a) + "\n" + s + "\n" + e.slice(a) : e.slice(0, a) + s + "\n" + e.slice(a);
2965
2965
  }
2966
- function di(e, t) {
2966
+ function fi(e, t) {
2967
2967
  let n = 0;
2968
2968
  for (let r = t; r < e.length; r++) if (e[r] === "[") n++;
2969
2969
  else if (e[r] === "]" && (n--, n === 0)) return r;
2970
2970
  return -1;
2971
2971
  }
2972
- var fi = new Set([
2972
+ var pi = new Set([
2973
2973
  ".ts",
2974
2974
  ".tsx",
2975
2975
  ".js",
2976
2976
  ".jsx"
2977
2977
  ]);
2978
- async function pi(e) {
2978
+ async function mi(e) {
2979
2979
  let { files: t, paths: n, projectRoot: r, projectName: i } = e;
2980
2980
  if (i === "hype-stack") return;
2981
2981
  let a = `@${i}/`;
2982
2982
  await Promise.all(t.map(async (e) => {
2983
- let t = pr(e.target, n, r), i = await s.stat(t).catch(() => null);
2984
- i?.isDirectory() ? await gi(t, a) : i?.isFile() && fi.has(u.extname(t)) && await _i(t, a);
2983
+ let t = mr(e.target, n, r), i = await s.stat(t).catch(() => null);
2984
+ i?.isDirectory() ? await _i(t, a) : i?.isFile() && pi.has(u.extname(t)) && await vi(t, a);
2985
2985
  }));
2986
2986
  }
2987
- var mi = new Set([
2987
+ var hi = new Set([
2988
2988
  ".git",
2989
2989
  "node_modules",
2990
2990
  "dist",
@@ -2993,48 +2993,48 @@ var mi = new Set([
2993
2993
  ".next",
2994
2994
  "coverage"
2995
2995
  ]);
2996
- async function hi(e, t) {
2997
- t !== "hype-stack" && await gi(e, `@${t}/`);
2998
- }
2999
2996
  async function gi(e, t) {
2997
+ t !== "hype-stack" && await _i(e, `@${t}/`);
2998
+ }
2999
+ async function _i(e, t) {
3000
3000
  let n = await s.readdir(e, { withFileTypes: !0 });
3001
3001
  await Promise.all(n.map(async (n) => {
3002
3002
  let r = u.join(e, n.name);
3003
3003
  if (n.isDirectory()) {
3004
- if (mi.has(n.name)) return;
3005
- await gi(r, t);
3006
- } else n.isFile() && fi.has(u.extname(n.name)) && await _i(r, t);
3004
+ if (hi.has(n.name)) return;
3005
+ await _i(r, t);
3006
+ } else n.isFile() && pi.has(u.extname(n.name)) && await vi(r, t);
3007
3007
  }));
3008
3008
  }
3009
- async function _i(e, t) {
3009
+ async function vi(e, t) {
3010
3010
  let n = await s.readFile(e, "utf-8");
3011
- if (!n.includes(vr)) return;
3012
- let r = n.replaceAll(vr, t);
3011
+ if (!n.includes(yr)) return;
3012
+ let r = n.replaceAll(yr, t);
3013
3013
  await s.writeFile(e, r, "utf-8");
3014
3014
  }
3015
3015
  //#endregion
3016
3016
  //#region src/core/installer.ts
3017
- function vi(e, t) {
3017
+ function yi(e, t) {
3018
3018
  return e.slot ? t ? t.includes(e.slot) : e.slot === "frontend" : !0;
3019
3019
  }
3020
- async function yi(e, t) {
3020
+ async function bi(e, t) {
3021
3021
  if ((await s.stat(e)).isDirectory()) {
3022
3022
  await s.mkdir(t, { recursive: !0 });
3023
3023
  let n = await s.readdir(e, { withFileTypes: !0 });
3024
- for (let r of n) await yi(u.join(e, r.name), u.join(t, r.name));
3024
+ for (let r of n) await bi(u.join(e, r.name), u.join(t, r.name));
3025
3025
  } else await s.mkdir(u.dirname(t), { recursive: !0 }), await s.copyFile(e, t);
3026
3026
  }
3027
- async function bi(e) {
3028
- let { file: t, packDir: n, paths: r, projectRoot: i } = e, a = mr(t.source, n), o = pr(t.target, r, i);
3027
+ async function xi(e) {
3028
+ let { file: t, packDir: n, paths: r, projectRoot: i } = e, a = hr(t.source, n), o = mr(t.target, r, i);
3029
3029
  return {
3030
3030
  sourcePath: a,
3031
3031
  targetPath: o,
3032
- sourceExists: await Y(a) || await Yn(a),
3033
- targetExists: await Y(o) || await Yn(o)
3032
+ sourceExists: await Y(a) || await Xn(a),
3033
+ targetExists: await Y(o) || await Xn(o)
3034
3034
  };
3035
3035
  }
3036
- async function xi(e) {
3037
- let { file: t, packDir: n, paths: r, projectRoot: i } = e, { sourcePath: a, targetPath: o, sourceExists: c, targetExists: l } = await bi({
3036
+ async function Si(e) {
3037
+ let { file: t, packDir: n, paths: r, projectRoot: i } = e, { sourcePath: a, targetPath: o, sourceExists: c, targetExists: l } = await xi({
3038
3038
  file: t,
3039
3039
  packDir: n,
3040
3040
  paths: r,
@@ -3049,8 +3049,8 @@ async function xi(e) {
3049
3049
  default: return `${t.target}: Unknown strategy: ${String(t.strategy)}`;
3050
3050
  }
3051
3051
  }
3052
- async function Si(e) {
3053
- let { file: t, packDir: n, paths: r, projectRoot: i, force: a, overwrite: o } = e, { sourcePath: c, targetPath: l, sourceExists: u, targetExists: d } = await bi({
3052
+ async function Ci(e) {
3053
+ let { file: t, packDir: n, paths: r, projectRoot: i, force: a, overwrite: o } = e, { sourcePath: c, targetPath: l, sourceExists: u, targetExists: d } = await xi({
3054
3054
  file: t,
3055
3055
  packDir: n,
3056
3056
  paths: r,
@@ -3068,7 +3068,7 @@ async function Si(e) {
3068
3068
  status: "skipped",
3069
3069
  path: t.target,
3070
3070
  reason: "Already exists"
3071
- } : (await yi(c, l), {
3071
+ } : (await bi(c, l), {
3072
3072
  status: "installed",
3073
3073
  path: t.target
3074
3074
  });
@@ -3077,16 +3077,16 @@ async function Si(e) {
3077
3077
  status: "skipped",
3078
3078
  path: t.target,
3079
3079
  reason: "Already exists (skip-if-exists)"
3080
- } : (await yi(c, l), {
3080
+ } : (await bi(c, l), {
3081
3081
  status: "installed",
3082
3082
  path: t.target
3083
3083
  });
3084
- case "override": return await yi(c, l), {
3084
+ case "override": return await bi(c, l), {
3085
3085
  status: "installed",
3086
3086
  path: t.target
3087
3087
  };
3088
3088
  case "merge": {
3089
- if (!d) return await yi(c, l), {
3089
+ if (!d) return await bi(c, l), {
3090
3090
  status: "installed",
3091
3091
  path: t.target
3092
3092
  };
@@ -3116,15 +3116,15 @@ async function Si(e) {
3116
3116
  };
3117
3117
  }
3118
3118
  }
3119
- async function Ci(e) {
3119
+ async function wi(e) {
3120
3120
  let { packs: t, config: n, projectRoot: r, slotsByPack: i } = e, a = n.paths;
3121
3121
  if (!a) throw Error("stack.json is missing 'paths' configuration. Run 'hype-stack init' to set it up.");
3122
3122
  let o = [], s = /* @__PURE__ */ new Set();
3123
3123
  for (let e of t) {
3124
3124
  let t = i?.get(e.manifest.name);
3125
3125
  for (let n of e.manifest.files) {
3126
- if (n.strategy !== "create" || !vi(n, t)) continue;
3127
- let { targetPath: i, targetExists: c } = await bi({
3126
+ if (n.strategy !== "create" || !yi(n, t)) continue;
3127
+ let { targetPath: i, targetExists: c } = await xi({
3128
3128
  file: n,
3129
3129
  packDir: e.packDir,
3130
3130
  paths: a,
@@ -3139,13 +3139,13 @@ async function Ci(e) {
3139
3139
  }
3140
3140
  return o;
3141
3141
  }
3142
- async function wi(e) {
3142
+ async function Ti(e) {
3143
3143
  let { manifest: t, config: n, projectRoot: r, force: i, packDir: a, slots: o } = e, s = n.paths;
3144
3144
  if (!s) throw Error("stack.json is missing 'paths' configuration. Run 'hype-stack init' to set it up.");
3145
3145
  let c = [];
3146
3146
  for (let e of t.files) {
3147
- if (!vi(e, o)) continue;
3148
- let t = await xi({
3147
+ if (!yi(e, o)) continue;
3148
+ let t = await Si({
3149
3149
  file: e,
3150
3150
  packDir: a,
3151
3151
  paths: s,
@@ -3156,16 +3156,16 @@ async function wi(e) {
3156
3156
  }
3157
3157
  return c;
3158
3158
  }
3159
- async function Ti(e) {
3159
+ async function Ei(e) {
3160
3160
  let { manifest: t, config: n, projectRoot: r, force: i, overwrite: a, packDir: o, slots: s } = e, c = n.paths;
3161
3161
  if (!c) throw Error("stack.json is missing 'paths' configuration. Run 'hype-stack init' to set it up.");
3162
3162
  let l = {
3163
3163
  installed: [],
3164
3164
  skipped: [],
3165
3165
  errors: []
3166
- }, u = t.files.filter((e) => vi(e, s));
3166
+ }, u = t.files.filter((e) => yi(e, s));
3167
3167
  for (let e of u) {
3168
- let t = await Si({
3168
+ let t = await Ci({
3169
3169
  file: e,
3170
3170
  packDir: o,
3171
3171
  paths: c,
@@ -3185,40 +3185,40 @@ async function Ti(e) {
3185
3185
  break;
3186
3186
  }
3187
3187
  }
3188
- await pi({
3188
+ await mi({
3189
3189
  files: u,
3190
3190
  paths: c,
3191
3191
  projectRoot: r,
3192
3192
  projectName: n.name
3193
- }), t.env && t.env.length > 0 && await br(t.env, c, r), t.routes && t.routes.length > 0 && await Tr(t.routes, c, r), t.context && t.context.length > 0 && await Or(t.context, c, r), t.sockets && t.sockets.length > 0 && await Ir(t.sockets, c, r), t.sdkConfigurations && t.sdkConfigurations.length > 0 && await Br(t.sdkConfigurations, c, r), t.enums && t.enums.length > 0 && await Pr(t.enums, c, r), t.frontendRoutes && t.frontendRoutes.length > 0 && await Ur(t.frontendRoutes, c, r);
3193
+ }), t.env && t.env.length > 0 && await xr(t.env, c, r), t.routes && t.routes.length > 0 && await Er(t.routes, c, r), t.context && t.context.length > 0 && await kr(t.context, c, r), t.sockets && t.sockets.length > 0 && await Lr(t.sockets, c, r), t.sdkConfigurations && t.sdkConfigurations.length > 0 && await Vr(t.sdkConfigurations, c, r), t.enums && t.enums.length > 0 && await Fr(t.enums, c, r), t.frontendRoutes && t.frontendRoutes.length > 0 && await Wr(t.frontendRoutes, c, r);
3194
3194
  let d = s && s.length > 0 ? s : ["frontend"];
3195
- for (let e of d) t.nav && t.nav.length > 0 && await qr({
3195
+ for (let e of d) t.nav && t.nav.length > 0 && await Jr({
3196
3196
  entries: t.nav,
3197
3197
  paths: c,
3198
3198
  projectRoot: r,
3199
3199
  slot: e
3200
- }), t.navbarActions && t.navbarActions.length > 0 && await oi({
3200
+ }), t.navbarActions && t.navbarActions.length > 0 && await si({
3201
3201
  actions: t.navbarActions,
3202
3202
  paths: c,
3203
3203
  projectRoot: r,
3204
3204
  slot: e
3205
- }), t.userMenuActions && t.userMenuActions.length > 0 && await si({
3205
+ }), t.userMenuActions && t.userMenuActions.length > 0 && await ci({
3206
3206
  actions: t.userMenuActions,
3207
3207
  paths: c,
3208
3208
  projectRoot: r,
3209
3209
  slot: e
3210
3210
  });
3211
- return t.onboardingSteps && t.onboardingSteps.length > 0 && await ti(t.onboardingSteps, c, r), t.postLoginRedirect && await Jr({
3211
+ return t.onboardingSteps && t.onboardingSteps.length > 0 && await ni(t.onboardingSteps, c, r), t.postLoginRedirect && await Yr({
3212
3212
  postLoginRedirect: t.postLoginRedirect,
3213
3213
  paths: c,
3214
3214
  projectRoot: r,
3215
3215
  slot: d[0]
3216
3216
  }), l;
3217
3217
  }
3218
- async function Ei(e) {
3218
+ async function Di(e) {
3219
3219
  let { packs: t, config: n, projectRoot: r, force: i, overwrite: a, slotsByPack: o } = e, s = [];
3220
3220
  for (let e of t) {
3221
- let t = o?.get(e.manifest.name), a = await wi({
3221
+ let t = o?.get(e.manifest.name), a = await Ti({
3222
3222
  manifest: e.manifest,
3223
3223
  config: n,
3224
3224
  projectRoot: r,
@@ -3238,7 +3238,7 @@ async function Ei(e) {
3238
3238
  };
3239
3239
  let c = [], l = [], u = [], d = [], f = n;
3240
3240
  for (let e of t) {
3241
- let t = o?.get(e.manifest.name), n = await Ti({
3241
+ let t = o?.get(e.manifest.name), n = await Ei({
3242
3242
  manifest: e.manifest,
3243
3243
  config: f,
3244
3244
  projectRoot: r,
@@ -3247,7 +3247,7 @@ async function Ei(e) {
3247
3247
  packDir: e.packDir,
3248
3248
  slots: t
3249
3249
  });
3250
- c.push(...n.installed), l.push(...n.skipped), u.push(...n.errors), f = await Di(f, e.manifest.name, r), d.push(e.manifest.name);
3250
+ c.push(...n.installed), l.push(...n.skipped), u.push(...n.errors), f = await Oi(f, e.manifest.name, r), d.push(e.manifest.name);
3251
3251
  }
3252
3252
  return {
3253
3253
  installed: c,
@@ -3258,19 +3258,19 @@ async function Ei(e) {
3258
3258
  config: f
3259
3259
  };
3260
3260
  }
3261
- async function Di(e, t, n) {
3261
+ async function Oi(e, t, n) {
3262
3262
  let r = {
3263
3263
  ...e,
3264
3264
  installedPacks: [...e.installedPacks ?? [], t]
3265
3265
  };
3266
- return await or(n, r), r;
3266
+ return await sr(n, r), r;
3267
3267
  }
3268
- async function Oi(e) {
3268
+ async function ki(e) {
3269
3269
  let { manifest: t, config: n, projectRoot: r, templateDir: i } = e, a = n.paths;
3270
3270
  if (!a) throw Error("stack.json is missing 'paths' configuration. Run 'hype-stack init' to set it up.");
3271
3271
  let o = [], s = [];
3272
3272
  for (let e of t.files) {
3273
- let t = await Si({
3273
+ let t = await Ci({
3274
3274
  file: e,
3275
3275
  packDir: i,
3276
3276
  paths: a,
@@ -3288,11 +3288,11 @@ async function Oi(e) {
3288
3288
  case "skipped": break;
3289
3289
  }
3290
3290
  }
3291
- return t.frontendRoutes && t.frontendRoutes.length > 0 && await Ur(t.frontendRoutes, a, r), t.nav && t.nav.length > 0 && await qr({
3291
+ return t.frontendRoutes && t.frontendRoutes.length > 0 && await Wr(t.frontendRoutes, a, r), t.nav && t.nav.length > 0 && await Jr({
3292
3292
  entries: t.nav,
3293
3293
  paths: a,
3294
3294
  projectRoot: r
3295
- }), t.postLoginRedirect && await Jr({
3295
+ }), t.postLoginRedirect && await Yr({
3296
3296
  postLoginRedirect: t.postLoginRedirect,
3297
3297
  paths: a,
3298
3298
  projectRoot: r
@@ -3303,28 +3303,28 @@ async function Oi(e) {
3303
3303
  }
3304
3304
  //#endregion
3305
3305
  //#region src/core/pack-categories.ts
3306
- var ki = [
3306
+ var Ai = [
3307
3307
  "starter",
3308
3308
  "layout",
3309
3309
  "feature"
3310
- ], Ai = {
3310
+ ], ji = {
3311
3311
  starter: "Starter",
3312
3312
  layout: "Layout",
3313
3313
  feature: "Features"
3314
- }, ji = new Set(["starter", "layout"]), Mi = "layout-basic";
3315
- function Ni(e, t = {}) {
3314
+ }, Mi = new Set(["starter", "layout"]), Ni = "layout-basic";
3315
+ function Pi(e, t = {}) {
3316
3316
  let n = [];
3317
- for (let r of ki) {
3317
+ for (let r of Ai) {
3318
3318
  let i = e.filter((e) => e.category === r);
3319
3319
  if (i.length === 0) continue;
3320
- let a = ji.has(r) ? "single" : "multiple";
3320
+ let a = Mi.has(r) ? "single" : "multiple";
3321
3321
  if (r === "layout") {
3322
- n.push(Pi("frontend", i)), t.adminAvailable && n.push(Pi("admin", i));
3322
+ n.push(Fi("frontend", i)), t.adminAvailable && n.push(Fi("admin", i));
3323
3323
  continue;
3324
3324
  }
3325
3325
  n.push({
3326
3326
  category: r,
3327
- label: Ai[r],
3327
+ label: ji[r],
3328
3328
  mode: a,
3329
3329
  packs: i,
3330
3330
  preselect: null
@@ -3332,20 +3332,20 @@ function Ni(e, t = {}) {
3332
3332
  }
3333
3333
  return n;
3334
3334
  }
3335
- function Pi(e, t) {
3336
- let n = t.some((e) => e.name === Mi);
3335
+ function Fi(e, t) {
3336
+ let n = t.some((e) => e.name === Ni);
3337
3337
  return {
3338
3338
  category: "layout",
3339
3339
  label: e === "admin" ? "Admin Layout" : "Layout",
3340
3340
  mode: "single",
3341
3341
  packs: t,
3342
- preselect: n ? Mi : null,
3342
+ preselect: n ? Ni : null,
3343
3343
  slot: e
3344
3344
  };
3345
3345
  }
3346
3346
  //#endregion
3347
3347
  //#region src/core/resolve.ts
3348
- function Fi(e) {
3348
+ function Ii(e) {
3349
3349
  let t = /* @__PURE__ */ new Map();
3350
3350
  for (let n of e) t.set(n.name, {
3351
3351
  name: n.name,
@@ -3353,7 +3353,7 @@ function Fi(e) {
3353
3353
  });
3354
3354
  return t;
3355
3355
  }
3356
- function Ii(e, t, n = /* @__PURE__ */ new Set()) {
3356
+ function Li(e, t, n = /* @__PURE__ */ new Set()) {
3357
3357
  let r = /* @__PURE__ */ new Set();
3358
3358
  function i(e) {
3359
3359
  if (n.has(e)) return [];
@@ -3367,10 +3367,10 @@ function Ii(e, t, n = /* @__PURE__ */ new Set()) {
3367
3367
  }
3368
3368
  return i(e);
3369
3369
  }
3370
- function Li(e, t, n = []) {
3370
+ function Ri(e, t, n = []) {
3371
3371
  let r = new Set(n), i = new Set(n), a = [];
3372
3372
  for (let n of e) {
3373
- let e = Ii(n, t, new Set(i));
3373
+ let e = Li(n, t, new Set(i));
3374
3374
  for (let t of e) i.has(t) || (i.add(t), a.push(t));
3375
3375
  }
3376
3376
  return {
@@ -3378,7 +3378,7 @@ function Li(e, t, n = []) {
3378
3378
  alreadyInstalled: e.filter((e) => r.has(e))
3379
3379
  };
3380
3380
  }
3381
- function Ri(e) {
3381
+ function zi(e) {
3382
3382
  let { order: t, graph: n, isLocked: r, installed: i = [] } = e, a = new Set(i), o = /* @__PURE__ */ new Set();
3383
3383
  for (let e of t) {
3384
3384
  let t = n.get(e)?.dependencies.some((e) => !a.has(e) && o.has(e)) ?? !1;
@@ -3391,7 +3391,7 @@ function Ri(e) {
3391
3391
  }
3392
3392
  //#endregion
3393
3393
  //#region src/core/variants.ts
3394
- function zi(e, t = {}) {
3394
+ function Bi(e, t = {}) {
3395
3395
  let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
3396
3396
  for (let i of e) {
3397
3397
  let e = t[i.family] ?? i.default;
@@ -3403,14 +3403,14 @@ function zi(e, t = {}) {
3403
3403
  familyOf: r
3404
3404
  };
3405
3405
  }
3406
- function Bi(e, t, n) {
3406
+ function Vi(e, t, n) {
3407
3407
  return [...e.map((e) => n.chosen.get(e.family) ?? e.default), ...t];
3408
3408
  }
3409
- function Vi(e, t) {
3409
+ function Hi(e, t) {
3410
3410
  let n = t.familyOf.get(e);
3411
3411
  return n ? t.chosen.get(n) ?? e : e;
3412
3412
  }
3413
- function Hi(e, t) {
3413
+ function Ui(e, t) {
3414
3414
  let n = /* @__PURE__ */ new Map();
3415
3415
  for (let t of e) t.family && n.set(t.name, t.family);
3416
3416
  let r = new Set(t), i = /* @__PURE__ */ new Map();
@@ -3426,83 +3426,71 @@ function Hi(e, t) {
3426
3426
  familyOf: n
3427
3427
  };
3428
3428
  }
3429
- function Ui(e, t) {
3429
+ function Wi(e, t) {
3430
3430
  return e.map((e) => ({
3431
3431
  ...e,
3432
- dependencies: e.dependencies.map((e) => Vi(e, t))
3432
+ dependencies: e.dependencies.map((e) => Hi(e, t))
3433
3433
  }));
3434
3434
  }
3435
3435
  //#endregion
3436
3436
  //#region src/ui/banner.ts
3437
- var Wi = [
3437
+ var Gi = [
3438
3438
  " ██╗ ██╗ ██╗ ██╗ ██████╗ ███████╗",
3439
3439
  " ██║ ██║ ╚██╗ ██╔╝ ██╔══██╗ ██╔════╝",
3440
3440
  " ███████║ ╚████╔╝ ██████╔╝ █████╗ ",
3441
3441
  " ██╔══██║ ╚██╔╝ ██╔═══╝ ██╔══╝ ",
3442
3442
  " ██║ ██║ ██║ ██║ ███████╗",
3443
3443
  " ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝"
3444
- ], Gi = [
3444
+ ], Ki = [
3445
3445
  " ███████╗ ████████╗ █████╗ ██████╗ ██╗ ██╗",
3446
3446
  " ██╔════╝ ╚══██╔══╝ ██╔══██╗ ██╔════╝ ██║ ██╔╝",
3447
3447
  " ███████╗ ██║ ███████║ ██║ █████╔╝ ",
3448
3448
  " ╚════██║ ██║ ██╔══██║ ██║ ██╔═██╗ ",
3449
3449
  " ███████║ ██║ ██║ ██║ ╚██████╗ ██║ ██╗",
3450
3450
  " ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝"
3451
- ], Ki = [
3451
+ ], qi = [
3452
3452
  253,
3453
3453
  176,
3454
3454
  21
3455
- ], qi = [
3455
+ ], Ji = [
3456
3456
  245,
3457
3457
  76,
3458
3458
  2
3459
- ], Ji = 5, Yi = [
3459
+ ], Yi = 5, Xi = [
3460
3460
  17,
3461
3461
  103,
3462
3462
  248
3463
- ], Xi = [
3463
+ ], Zi = [
3464
3464
  42,
3465
3465
  160,
3466
3466
  250
3467
- ], Zi = .2;
3468
- function Qi() {
3467
+ ], Qi = .2;
3468
+ function $i() {
3469
3469
  console.log();
3470
- for (let e of fe(Wi, {
3471
- start: Ki,
3472
- end: qi,
3473
- angle: Ji
3470
+ for (let e of pe(Gi, {
3471
+ start: qi,
3472
+ end: Ji,
3473
+ angle: Yi
3474
3474
  })) console.log(c.bold(e));
3475
- for (let e of fe(Gi, {
3476
- start: Yi,
3477
- end: Xi,
3478
- angle: Zi
3475
+ for (let e of pe(Ki, {
3476
+ start: Xi,
3477
+ end: Zi,
3478
+ angle: Qi
3479
3479
  })) console.log(c.bold(e));
3480
- console.log(), console.log(` ${z.spark} ${c.dim("v" + C)} ${c.dim("·")} ${ue("Ship web + desktop apps from one codebase")}`), console.log();
3480
+ console.log(), console.log(` ${z.spark} ${c.dim("v" + C)} ${c.dim("·")} ${de("Ship web + desktop apps from one codebase")}`), console.log();
3481
3481
  }
3482
- function $i() {
3483
- console.log(), console.log(` ${z.bolt} ${se.orange("Hype")}${se.skyBlue("Stack")} ${c.dim("v" + C)}`), console.log();
3482
+ function ea() {
3483
+ console.log(), console.log(` ${z.bolt} ${ce.orange("Hype")}${ce.skyBlue("Stack")} ${c.dim("v" + C)}`), console.log();
3484
3484
  }
3485
3485
  //#endregion
3486
3486
  //#region src/ui/logger.ts
3487
- function ea(e) {
3487
+ function ta(e) {
3488
3488
  o.note(e.map((e) => `${z.arrow} ${e}`).join("\n"), "Next steps");
3489
3489
  }
3490
3490
  function Z() {
3491
3491
  o.cancel(R.muted("Operation cancelled.")), process.exit(0);
3492
3492
  }
3493
3493
  //#endregion
3494
- //#region src/core/clone.ts
3495
- async function ta(e) {
3496
- let t = await p(w, {
3497
- dir: e,
3498
- force: !0
3499
- });
3500
- return {
3501
- dir: t.dir,
3502
- source: t.source
3503
- };
3504
- }
3505
- //#endregion
3506
3494
  //#region src/core/apply-theme.ts
3507
3495
  function na(e, t) {
3508
3496
  let n = e.indexOf(t);
@@ -3557,8 +3545,20 @@ async function sa(e, t) {
3557
3545
  return i === r || await s.writeFile(n, i, "utf-8"), !0;
3558
3546
  }
3559
3547
  //#endregion
3548
+ //#region src/core/clone.ts
3549
+ async function ca(e) {
3550
+ let t = await p(w, {
3551
+ dir: e,
3552
+ force: !0
3553
+ });
3554
+ return {
3555
+ dir: t.dir,
3556
+ source: t.source
3557
+ };
3558
+ }
3559
+ //#endregion
3560
3560
  //#region src/core/editor-config.ts
3561
- function ca(e) {
3561
+ function la(e) {
3562
3562
  let t = {
3563
3563
  globs: [],
3564
3564
  alwaysApply: !1
@@ -3593,10 +3593,10 @@ function ca(e) {
3593
3593
  content: i
3594
3594
  };
3595
3595
  }
3596
- function la(e) {
3596
+ function ua(e) {
3597
3597
  return e.frontmatter.globs.length > 0 ? `---\npaths:\n${e.frontmatter.globs.map((e) => ` - "${e}"`).join("\n")}\n---\n\n${e.content}` : e.content;
3598
3598
  }
3599
- function ua(e) {
3599
+ function da(e) {
3600
3600
  let t;
3601
3601
  t = e.frontmatter.alwaysApply ? "always_on" : e.frontmatter.globs.length > 0 ? "glob" : "model_decision";
3602
3602
  let n = [`trigger: ${t}`];
@@ -3606,30 +3606,30 @@ function ua(e) {
3606
3606
  }
3607
3607
  return e.frontmatter.description && n.push(`description: ${e.frontmatter.description}`), `---\n${n.join("\n")}\n---\n\n${e.content}`;
3608
3608
  }
3609
- function da(e) {
3609
+ function fa(e) {
3610
3610
  return e.frontmatter.globs.length > 0 ? `---\napplyTo: "${e.frontmatter.globs.join(", ")}"\n---\n\n${e.content}` : e.content;
3611
3611
  }
3612
- var fa = {
3612
+ var pa = {
3613
3613
  claude: {
3614
3614
  rulesDir: ".claude/rules",
3615
3615
  extension: ".md",
3616
- convert: la
3616
+ convert: ua
3617
3617
  },
3618
3618
  windsurf: {
3619
3619
  rulesDir: ".windsurf/rules",
3620
3620
  extension: ".md",
3621
- convert: ua
3621
+ convert: da
3622
3622
  },
3623
3623
  copilot: {
3624
3624
  rulesDir: ".github/instructions",
3625
3625
  extension: ".instructions.md",
3626
- convert: da
3626
+ convert: fa
3627
3627
  }
3628
3628
  };
3629
- async function pa(e) {
3629
+ async function ma(e) {
3630
3630
  let t = u.join(e, j), n = (await s.readdir(t, { withFileTypes: !0 }).catch(() => [])).filter((e) => e.isFile() && e.name.endsWith(".mdc"));
3631
3631
  return await Promise.all(n.map(async (e) => {
3632
- let n = u.join(t, e.name), { frontmatter: r, content: i } = ca(await s.readFile(n, "utf-8"));
3632
+ let n = u.join(t, e.name), { frontmatter: r, content: i } = la(await s.readFile(n, "utf-8"));
3633
3633
  return {
3634
3634
  frontmatter: r,
3635
3635
  content: i,
@@ -3637,31 +3637,31 @@ async function pa(e) {
3637
3637
  };
3638
3638
  }));
3639
3639
  }
3640
- async function ma(e, t) {
3640
+ async function ha(e, t) {
3641
3641
  if (t === "cursor") return;
3642
- let n = fa[t], r = await pa(e), i = u.join(e, n.rulesDir);
3642
+ let n = pa[t], r = await ma(e), i = u.join(e, n.rulesDir);
3643
3643
  await s.mkdir(i, { recursive: !0 }), await Promise.all(r.map((e) => {
3644
3644
  let t = n.convert(e), r = e.filename.replace(/\.mdc$/, n.extension);
3645
3645
  return s.writeFile(u.join(i, r), t, "utf-8");
3646
- })), await er(u.join(e, te)), await er(u.join(e, M));
3646
+ })), await tr(u.join(e, ne)), await tr(u.join(e, M));
3647
3647
  }
3648
3648
  //#endregion
3649
3649
  //#region src/core/env-files.ts
3650
- var ha = [
3650
+ var ga = [
3651
3651
  "apps",
3652
3652
  "packages",
3653
3653
  "libs",
3654
3654
  "shared"
3655
3655
  ];
3656
- async function ga(e) {
3657
- let t = await _a(e);
3656
+ async function _a(e) {
3657
+ let t = await va(e);
3658
3658
  return (await Promise.all(t.map(async (t) => {
3659
3659
  let n = u.join(u.dirname(t), ".env");
3660
3660
  return await Y(n) ? null : (await s.copyFile(t, n), u.relative(e, n));
3661
3661
  }))).filter((e) => e !== null).sort();
3662
3662
  }
3663
- async function _a(e) {
3664
- let t = [u.join(e, ".env.example")], n = await Promise.all(ha.map(async (t) => {
3663
+ async function va(e) {
3664
+ let t = [u.join(e, ".env.example")], n = await Promise.all(ga.map(async (t) => {
3665
3665
  let n = u.join(e, t);
3666
3666
  return (await s.readdir(n, { withFileTypes: !0 }).catch(() => [])).filter((e) => e.isDirectory()).map((e) => u.join(n, e.name, ".env.example"));
3667
3667
  }));
@@ -3669,11 +3669,11 @@ async function _a(e) {
3669
3669
  }
3670
3670
  //#endregion
3671
3671
  //#region src/core/post-clone.ts
3672
- var Q = "@hype-stack/", va = "hype-stack";
3673
- async function ya(e) {
3674
- await er(u.join(e, ".git"));
3675
- }
3672
+ var Q = "@hype-stack/", ya = "hype-stack";
3676
3673
  async function ba(e) {
3674
+ await tr(u.join(e, ".git"));
3675
+ }
3676
+ async function xa(e) {
3677
3677
  await J("git", ["init"], { cwd: e }), await J("git", ["add", "."], { cwd: e }), await J("git", [
3678
3678
  "-c",
3679
3679
  "user.name=Hype Stack CLI",
@@ -3684,22 +3684,22 @@ async function ba(e) {
3684
3684
  "Initial commit from Hype Stack CLI"
3685
3685
  ], { cwd: e });
3686
3686
  }
3687
- async function xa(e, t) {
3688
- let n = `@${t}/`, r = await Ta(e);
3687
+ async function Sa(e, t) {
3688
+ let n = `@${t}/`, r = await Ea(e);
3689
3689
  for (let e of r) {
3690
- let t = await Zn(e);
3690
+ let t = await Qn(e);
3691
3691
  if (!t) continue;
3692
3692
  let r = !1;
3693
- t.name?.startsWith(Q) && (t.name = t.name.replace(Q, n), r = !0), Sa(t.dependencies, n) && (r = !0), Sa(t.devDependencies, n) && (r = !0), t.nx && Ca(t.nx, n) && (r = !0);
3693
+ t.name?.startsWith(Q) && (t.name = t.name.replace(Q, n), r = !0), Ca(t.dependencies, n) && (r = !0), Ca(t.devDependencies, n) && (r = !0), t.nx && wa(t.nx, n) && (r = !0);
3694
3694
  let i = await s.readFile(e, "utf-8");
3695
3695
  if (i.includes(Q)) {
3696
3696
  let t = i.replaceAll(Q, n);
3697
3697
  await s.writeFile(e, t, "utf-8");
3698
- } else r && await Qn(e, t);
3698
+ } else r && await $n(e, t);
3699
3699
  }
3700
- await hi(e, t), await wa(e, t);
3700
+ await gi(e, t), await Ta(e, t);
3701
3701
  }
3702
- function Sa(e, t) {
3702
+ function Ca(e, t) {
3703
3703
  if (!e) return !1;
3704
3704
  let n = !1;
3705
3705
  for (let r of Object.keys(e)) if (r.startsWith(Q)) {
@@ -3708,7 +3708,7 @@ function Sa(e, t) {
3708
3708
  }
3709
3709
  return n;
3710
3710
  }
3711
- function Ca(e, t) {
3711
+ function wa(e, t) {
3712
3712
  if (!e) return !1;
3713
3713
  let n = !1;
3714
3714
  if (e.implicitDependencies &&= e.implicitDependencies.map((e) => e.startsWith(Q) ? (n = !0, e.replace(Q, t)) : e), e.targets) {
@@ -3716,13 +3716,13 @@ function Ca(e, t) {
3716
3716
  }
3717
3717
  return n;
3718
3718
  }
3719
- async function wa(e, t) {
3719
+ async function Ta(e, t) {
3720
3720
  let n = u.join(e, "packages/enums/src/app/index.ts"), r = await s.readFile(n, "utf-8").catch(() => null);
3721
3721
  if (!r) return;
3722
- let i = t.split("-").map((e) => e.charAt(0).toUpperCase() + e.slice(1)).join(" "), a = r.replaceAll(`id: "${va}"`, `id: "${t}"`).replaceAll(`name: "${va}"`, `name: "${t}"`).replace(/name: "Hype Stack"/, `name: "${i}"`).replace(/description: ".*?"/, `description: "${i} application"`);
3722
+ let i = t.split("-").map((e) => e.charAt(0).toUpperCase() + e.slice(1)).join(" "), a = r.replaceAll(`id: "${ya}"`, `id: "${t}"`).replaceAll(`name: "${ya}"`, `name: "${t}"`).replace(/name: "Hype Stack"/, `name: "${i}"`).replace(/description: ".*?"/, `description: "${i} application"`);
3723
3723
  await s.writeFile(n, a, "utf-8");
3724
3724
  }
3725
- async function Ta(e) {
3725
+ async function Ea(e) {
3726
3726
  let t = [], n = u.join(e, "package.json");
3727
3727
  (await s.stat(n).catch(() => null))?.isFile() && t.push(n);
3728
3728
  for (let n of [
@@ -3742,13 +3742,13 @@ async function Ta(e) {
3742
3742
  }
3743
3743
  //#endregion
3744
3744
  //#region src/core/post-setup.ts
3745
- async function Ea() {
3745
+ async function Da() {
3746
3746
  return (await J("docker", ["info"], { cwd: process.cwd() })).exitCode === 0;
3747
3747
  }
3748
- async function Da(e) {
3748
+ async function Oa(e) {
3749
3749
  return Y(`${e}/apps/backend/.env`);
3750
3750
  }
3751
- async function Oa(e, t, n) {
3751
+ async function ka(e, t, n) {
3752
3752
  let r = n ? `Start services with ${R.command("docker compose up -d")}?` : `Docker is not running. Start services with ${R.command("docker compose up -d")}?`, i = t ? !0 : await o.confirm({
3753
3753
  message: r,
3754
3754
  initialValue: !0
@@ -3761,7 +3761,7 @@ async function Oa(e, t, n) {
3761
3761
  "-d"
3762
3762
  ], { cwd: `${e}/apps/backend` })).exitCode === 0 ? (a.stop(R.success("Docker services started")), !0) : (a.stop(R.warning("Failed to start Docker services")), o.log.warn(R.muted("Run `docker compose up -d` in apps/backend manually to start services.")), o.log.info(R.muted("Skipping database migrations.")), !1);
3763
3763
  }
3764
- async function ka(e, t = 15, n = 2e3) {
3764
+ async function Aa(e, t = 15, n = 2e3) {
3765
3765
  for (let r = 0; r < t; r++) {
3766
3766
  if ((await J("docker", [
3767
3767
  "compose",
@@ -3776,14 +3776,14 @@ async function ka(e, t = 15, n = 2e3) {
3776
3776
  }
3777
3777
  return !1;
3778
3778
  }
3779
- async function Aa(e, t, n = {}) {
3780
- if (!await Da(e)) {
3779
+ async function ja(e, t, n = {}) {
3780
+ if (!await Oa(e)) {
3781
3781
  o.log.warn(`${R.path(".env")} not found in ${R.path("apps/backend")}. Skipping Docker and migrations - configure it first.`);
3782
3782
  return;
3783
3783
  }
3784
- if (!await Oa(e, t, await Ea())) return;
3784
+ if (!await ka(e, t, await Da())) return;
3785
3785
  let r = o.spinner();
3786
- if (r.start("Waiting for Postgres to be ready..."), !await ka(e, n.postgresMaxAttempts ?? 15, n.postgresCheckIntervalMs ?? 2e3)) {
3786
+ if (r.start("Waiting for Postgres to be ready..."), !await Aa(e, n.postgresMaxAttempts ?? 15, n.postgresCheckIntervalMs ?? 2e3)) {
3787
3787
  r.stop(R.warning("Postgres health check timed out")), o.log.warn(R.muted("Run migrations manually once Postgres is ready: pnpm --filter @internal/backend migration:latest"));
3788
3788
  return;
3789
3789
  }
@@ -3819,7 +3819,7 @@ async function Aa(e, t, n = {}) {
3819
3819
  }
3820
3820
  //#endregion
3821
3821
  //#region src/core/readme.ts
3822
- var ja = {
3822
+ var Ma = {
3823
3823
  cursor: {
3824
3824
  label: "Cursor",
3825
3825
  rulesDir: ".cursor/rules"
@@ -3836,24 +3836,24 @@ var ja = {
3836
3836
  label: "GitHub Copilot",
3837
3837
  rulesDir: ".github/instructions"
3838
3838
  }
3839
- }, Ma = {
3839
+ }, Na = {
3840
3840
  backend: "Hono API server (Postgres, Prisma, Kysely, Valkey cache, WorkOS auth)",
3841
3841
  frontend: "React + Vite app talking to the backend through the typed HyperFetch SDK"
3842
- }, Na = {
3842
+ }, Pa = {
3843
3843
  enums: "Shared enums and app config used across apps",
3844
3844
  cli: "Project tooling and code generators"
3845
3845
  };
3846
- function Pa(e) {
3846
+ function Fa(e) {
3847
3847
  return e.split(/[-_]/).filter(Boolean).map((e) => e.charAt(0).toUpperCase() + e.slice(1)).join(" ");
3848
3848
  }
3849
- function Fa(e, t) {
3849
+ function Ia(e, t) {
3850
3850
  return Object.entries(e).toSorted(([e], [t]) => e.localeCompare(t)).map(([e, n]) => {
3851
3851
  let r = t[e];
3852
3852
  return r ? `- \`${n}\` - ${r}` : `- \`${n}\``;
3853
3853
  });
3854
3854
  }
3855
- function Ia(e) {
3856
- let { projectName: t, editor: n, workspace: r } = e, i = Pa(t), a = ja[n], o = !!r.apps.backend, s = Fa(r.apps, Ma), c = Fa(r.packages, Na), l = [];
3855
+ function La(e) {
3856
+ let { projectName: t, editor: n, workspace: r } = e, i = Fa(t), a = Ma[n], o = !!r.apps.backend, s = Ia(r.apps, Na), c = Ia(r.packages, Pa), l = [];
3857
3857
  s.length > 0 && l.push(...s), c.length > 0 && l.push(...c), l.push("- `stack.json` - Hype Stack workspace config (apps, paths, installed packs)");
3858
3858
  let u = [];
3859
3859
  u.push(`# ${i}`), u.push([
@@ -3961,18 +3961,18 @@ function Ia(e) {
3961
3961
  "stays useful."
3962
3962
  ].join("\n")), u.join("\n\n") + "\n";
3963
3963
  }
3964
- async function La(e, t) {
3964
+ async function Ra(e, t) {
3965
3965
  let n = u.join(e, "README.md");
3966
- await s.writeFile(n, Ia(t), "utf-8");
3966
+ await s.writeFile(n, La(t), "utf-8");
3967
3967
  }
3968
3968
  //#endregion
3969
3969
  //#region src/core/tracking.ts
3970
- async function Ra(e) {
3970
+ async function za(e) {
3971
3971
  try {
3972
3972
  let t = {
3973
- "X-Device-Id": Vn(),
3974
- "X-Client-Info": Hn()
3975
- }, n = await Ln(N()).catch(() => null);
3973
+ "X-Device-Id": Hn(),
3974
+ "X-Client-Info": Un()
3975
+ }, n = await Rn(N()).catch(() => null);
3976
3976
  n?.token && (t.Authorization = `Bearer ${n.token}`), await q.createRequest()({
3977
3977
  endpoint: "/cli/track",
3978
3978
  method: "POST"
@@ -3981,7 +3981,7 @@ async function Ra(e) {
3981
3981
  }
3982
3982
  //#endregion
3983
3983
  //#region src/ui/swatch.ts
3984
- function za(e) {
3984
+ function Ba(e) {
3985
3985
  let t = e.trim().match(/^oklch\(([^)]+)\)$/i);
3986
3986
  if (!t) return null;
3987
3987
  let n = t[1].trim().split(/\s+/);
@@ -4000,78 +4000,85 @@ function za(e) {
4000
4000
  h: a
4001
4001
  };
4002
4002
  }
4003
- function Ba(e) {
4003
+ function Va(e) {
4004
4004
  return Math.min(255, Math.max(0, Math.round(e)));
4005
4005
  }
4006
- function Va(e) {
4006
+ function Ha(e) {
4007
4007
  return e <= .0031308 ? 12.92 * e : 1.055 * e ** (1 / 2.4) - .055;
4008
4008
  }
4009
- function Ha({ l: e, c: t, h: n }) {
4009
+ function Ua({ l: e, c: t, h: n }) {
4010
4010
  let r = n * Math.PI / 180, i = t * Math.cos(r), a = t * Math.sin(r), o = e + .3963377774 * i + .2158037573 * a, s = e - .1055613458 * i - .0638541728 * a, c = e - .0894841775 * i - 1.291485548 * a, l = o ** 3, u = s ** 3, d = c ** 3, f = 4.0767416621 * l - 3.3077115913 * u + .2309699292 * d, p = -1.2684380042 * l + 2.6097570613 * u - .3413193965 * d, m = -.0041960863 * l - .7034186147 * u + 1.7076146937 * d;
4011
4011
  return [
4012
- Ba(Va(f) * 255),
4013
- Ba(Va(p) * 255),
4014
- Ba(Va(m) * 255)
4012
+ Va(Ha(f) * 255),
4013
+ Va(Ha(p) * 255),
4014
+ Va(Ha(m) * 255)
4015
4015
  ];
4016
4016
  }
4017
- var Ua = "\x1B[49m";
4018
- function Wa(e, t) {
4017
+ var Wa = "\x1B[49m";
4018
+ function Ga(e, t) {
4019
4019
  let n = e[t];
4020
4020
  if (!n) return c.dim(" ");
4021
- let r = za(n);
4021
+ let r = Ba(n);
4022
4022
  if (!r) return c.dim(" ");
4023
- let [i, a, o] = Ha(r);
4024
- return `\x1b[48;2;${i};${a};${o}m ${Ua}`;
4023
+ let [i, a, o] = Ua(r);
4024
+ return `\x1b[48;2;${i};${a};${o}m ${Wa}`;
4025
4025
  }
4026
- var Ga = [
4026
+ var Ka = [
4027
4027
  "primary",
4028
4028
  "secondary",
4029
4029
  "accent"
4030
4030
  ];
4031
- function Ka(e) {
4032
- return Ga.map((t) => Wa(e, t)).join("");
4033
- }
4034
4031
  function qa(e) {
4035
- return `${Ka(e.light)} ${c.dim("·")} ${Ka(e.dark)}`;
4032
+ return Ka.map((t) => Ga(e, t)).join("");
4033
+ }
4034
+ function Ja(e) {
4035
+ return `${qa(e.light)} ${c.dim("·")} ${qa(e.dark)}`;
4036
4036
  }
4037
4037
  //#endregion
4038
4038
  //#region src/utils/validate.ts
4039
- function Ja(e) {
4039
+ function Ya(e) {
4040
4040
  if (!e.trim()) return "Project name cannot be empty";
4041
- if (!ee.test(e)) return "Project name must be lowercase, alphanumeric, and may contain hyphens, dots, or underscores";
4041
+ if (!te.test(e)) return "Project name must be lowercase, alphanumeric, and may contain hyphens, dots, or underscores";
4042
4042
  if (e.length > 214) return "Project name is too long (max 214 characters)";
4043
4043
  }
4044
4044
  //#endregion
4045
4045
  //#region src/commands/create.ts
4046
- async function Ya(a) {
4047
- Qi(), o.intro(R.brandBold("Create a new Hype Stack project"));
4046
+ async function Xa(a) {
4047
+ $i(), o.intro(R.brandBold("Create a new Hype Stack project"));
4048
4048
  let s = a.yes === !0, c;
4049
4049
  if (s && a.name) {
4050
- let e = Ja(a.name);
4050
+ let e = Ya(a.name);
4051
4051
  e && (o.log.error(e), Z()), c = a.name;
4052
4052
  } else {
4053
4053
  let e = await o.text({
4054
4054
  message: "What is your project named?",
4055
4055
  placeholder: "my-app",
4056
4056
  initialValue: a.name ?? "",
4057
- validate: (e) => Ja(e ?? "")
4057
+ validate: (e) => Ya(e ?? "")
4058
4058
  });
4059
4059
  o.isCancel(e) && Z(), c = e;
4060
4060
  }
4061
4061
  let l;
4062
- if (s) l = a.directory ?? `./${c}`;
4062
+ if (a.directory !== void 0) l = a.directory;
4063
4063
  else {
4064
- let e = await o.text({
4065
- message: "Where should we create it?",
4066
- placeholder: `./${c}`,
4067
- initialValue: a.directory ?? `./${c}`
4068
- });
4069
- o.isCancel(e) && Z(), l = e;
4064
+ let e;
4065
+ if (a.parentDirectory !== void 0) e = a.parentDirectory;
4066
+ else if (s) e = ".";
4067
+ else {
4068
+ let t = await o.text({
4069
+ message: "Where should we create it? (parent folder, the project gets its own subfolder inside)",
4070
+ placeholder: ".",
4071
+ initialValue: "."
4072
+ });
4073
+ o.isCancel(t) && Z(), e = t;
4074
+ }
4075
+ l = nr(e, c);
4070
4076
  }
4071
- a.directory === void 0 && (l = tr(l, c));
4072
- let d = a.editor && A.includes(a.editor) ? a.editor : null, f;
4073
- if (d) f = d;
4074
- else if (s) f = "cursor";
4077
+ let d = u.resolve(l);
4078
+ s || o.note(R.path(d), "Project will be created at");
4079
+ let f = a.editor && A.includes(a.editor) ? a.editor : null, p;
4080
+ if (f) p = f;
4081
+ else if (s) p = "cursor";
4075
4082
  else {
4076
4083
  let e = await o.select({
4077
4084
  message: "Which code editor do you use?",
@@ -4082,79 +4089,77 @@ async function Ya(a) {
4082
4089
  })),
4083
4090
  initialValue: "cursor"
4084
4091
  });
4085
- o.isCancel(e) && Z(), f = e;
4092
+ o.isCancel(e) && Z(), p = e;
4086
4093
  }
4087
- let p = a.theme !== void 0 && i(a.theme), m;
4088
- if (p) m = a.theme;
4089
- else if (s) m = e;
4094
+ let m = a.theme !== void 0 && i(a.theme), h;
4095
+ if (m) h = a.theme;
4096
+ else if (s) h = e;
4090
4097
  else {
4091
4098
  let t = await o.select({
4092
4099
  message: "Pick a color theme",
4093
4100
  options: n.map((e) => ({
4094
4101
  value: e.name,
4095
- label: `${qa(e)} ${e.label}`,
4096
- hint: e.hint
4102
+ label: `${Ja(e)} ${e.label}`
4097
4103
  })),
4098
4104
  initialValue: e
4099
4105
  });
4100
- o.isCancel(t) && Z(), m = t;
4106
+ o.isCancel(t) && Z(), h = t;
4101
4107
  }
4102
4108
  if (!s) {
4103
- let e = k.find((e) => e.value === f)?.label ?? f, n = t.find((e) => e.value === m)?.label ?? m, r = await o.confirm({ message: `Create ${R.highlight(c)} in ${R.path(l)} with ${R.highlight(e)} config and the ${R.highlight(n)} theme?` });
4109
+ let e = k.find((e) => e.value === p)?.label ?? p, n = t.find((e) => e.value === h)?.label ?? h, r = await o.confirm({ message: `Create ${R.highlight(c)} in ${R.path(d)} with ${R.highlight(e)} config and the ${R.highlight(n)} theme?` });
4104
4110
  (o.isCancel(r) || !r) && Z();
4105
4111
  }
4106
- let h = u.resolve(l);
4107
- if (await Yn(h) && !await Xn(h)) {
4112
+ if (await Xn(d) && !await Zn(d)) {
4108
4113
  let e = await o.confirm({
4109
- message: `Directory ${R.path(h)} is not empty. Continue anyway?`,
4114
+ message: `Directory ${R.path(d)} is not empty. Continue anyway?`,
4110
4115
  initialValue: !1
4111
4116
  });
4112
4117
  (o.isCancel(e) || !e) && Z();
4113
4118
  }
4114
4119
  let g = o.spinner();
4115
- g.start("Cloning Hype Stack template..."), await ta(h), g.stop(R.success("Template cloned"));
4120
+ g.start("Cloning Hype Stack template..."), await ca(d), g.stop(R.success("Template cloned"));
4116
4121
  let _ = o.spinner();
4117
- _.start("Setting up project..."), await ya(h), await xa(h, c), await ma(h, f);
4118
- let v = await sr(h), y = lr(c, v);
4119
- await or(h, y), await La(h, {
4122
+ _.start("Setting up project..."), await ba(d), await Sa(d, c), await ha(d, p);
4123
+ let v = await cr(d), y = ur(c, v);
4124
+ await sr(d, y), await Ra(d, {
4120
4125
  projectName: c,
4121
- editor: f,
4126
+ editor: p,
4122
4127
  workspace: v
4123
- }), i(m) && (await sa(u.resolve(h, y.paths?.frontend.root ?? "apps/frontend"), r(m)) || o.log.warn(R.muted(`Could not find ${R.path("assets/styles.css")} to apply the ${m} theme`))), _.stop(R.success("Project configured"));
4128
+ }), i(h) && (await sa(u.resolve(d, y.paths?.frontend.root ?? "apps/frontend"), r(h)) || o.log.warn(R.muted(`Could not find ${R.path("assets/styles.css")} to apply the ${h} theme`))), _.stop(R.success("Project configured"));
4124
4129
  let b = o.spinner();
4125
- b.start("Installing dependencies..."), (await J("pnpm", ["install"], { cwd: h })).exitCode === 0 ? b.stop(R.success("Dependencies installed")) : (b.stop(R.warning("Dependencies installed with warnings")), o.log.warn(R.muted("You may need to run `pnpm install` manually to resolve issues.")));
4130
+ b.start("Installing dependencies..."), (await J("pnpm", ["install"], { cwd: d })).exitCode === 0 ? b.stop(R.success("Dependencies installed")) : (b.stop(R.warning("Dependencies installed with warnings")), o.log.warn(R.muted("You may need to run `pnpm install` manually to resolve issues.")));
4126
4131
  let x = o.spinner();
4127
- x.start("Initializing git repository..."), await ba(h), x.stop(R.success("Git repository initialized with clean history"));
4132
+ x.start("Initializing git repository..."), await xa(d), x.stop(R.success("Git repository initialized with clean history"));
4128
4133
  let S = o.spinner();
4129
4134
  S.start("Creating .env files from examples...");
4130
- let C = await ga(h);
4135
+ let C = await _a(d);
4131
4136
  if (C.length > 0) {
4132
4137
  let e = C.length;
4133
4138
  S.stop(R.success(`Created ${e} .env file${e === 1 ? "" : "s"} from examples`));
4134
4139
  } else S.stop(R.muted("No .env.example files to copy"));
4135
4140
  o.log.success(`${R.brandBold("Hype Stack")} project ${R.highlight(c)} is ready!`);
4136
- let w = u.relative(process.cwd(), h) || ".", T = [`${R.command(`cd ${w}`)}`];
4137
- C.length > 0 ? T.push(`Review your ${R.path(".env")} files and fill in any secrets`) : T.push(`Copy ${R.path(".env.example")} to ${R.path(".env")} and configure`), ea(T);
4141
+ let w = u.relative(process.cwd(), d) || ".", T = [`${R.command(`cd ${w}`)}`];
4142
+ C.length > 0 ? T.push(`Review your ${R.path(".env")} files and fill in any secrets`) : T.push(`Copy ${R.path(".env.example")} to ${R.path(".env")} and configure`), ta(T);
4138
4143
  let E = a.setup !== !1 && (s || await o.confirm({
4139
4144
  message: "Would you like to start Docker services and run database migrations now?",
4140
4145
  initialValue: !0
4141
4146
  }));
4142
- o.isCancel(E) && Z(), E ? await Aa(h, s) : (o.log.info(R.muted("You can start services later:")), ea([
4147
+ return o.isCancel(E) && Z(), E ? await ja(d, s) : (o.log.info(R.muted("You can start services later:")), ta([
4143
4148
  `${R.command("docker compose up -d")} ${R.muted("(in apps/backend - start Postgres, Valkey, RustFS)")}`,
4144
4149
  `${R.command("pnpm --filter @internal/backend migration:latest")} ${R.muted("(apply migrations)")}`,
4145
4150
  `${R.command("pnpm run generate")} ${R.muted("(generate Prisma client)")}`
4146
- ])), ea([`${R.command("pnpm dev")} ${R.muted("(start frontend + backend)")}`]), await Ra("project_create"), o.outro(R.muted("Happy building!"));
4151
+ ])), ta([`${R.command("pnpm dev")} ${R.muted("(start frontend + backend)")}`]), await za("project_create"), o.outro(R.muted("Happy building!")), d;
4147
4152
  }
4148
4153
  //#endregion
4149
4154
  //#region src/commands/init.ts
4150
- async function Xa(e) {
4155
+ async function Za(e) {
4151
4156
  let t = e.cwd ?? process.cwd(), n = e.silent ?? !1;
4152
- if (n || ($i(), o.intro(R.brandBold("Initialize Hype Stack configuration"))), !await ur(t)) {
4157
+ if (n || (ea(), o.intro(R.brandBold("Initialize Hype Stack configuration"))), !await dr(t)) {
4153
4158
  o.log.error(`This doesn't look like a Hype Stack project. ${R.muted("Expected apps/ directory and package.json")}`), o.outro(R.muted(`Run ${R.command("hype-stack create")} to scaffold a new project.`));
4154
4159
  return;
4155
4160
  }
4156
- if (await ar(t)) {
4157
- let e = await ir(t);
4161
+ if (await or(t)) {
4162
+ let e = await ar(t);
4158
4163
  if (e && !n) {
4159
4164
  o.log.info(`Found existing ${R.path("stack.json")} for project ${R.highlight(e.name)}`);
4160
4165
  let t = await o.confirm({
@@ -4167,7 +4172,7 @@ async function Xa(e) {
4167
4172
  }
4168
4173
  }
4169
4174
  }
4170
- let r = await sr(t);
4175
+ let r = await cr(t);
4171
4176
  if (!n) {
4172
4177
  let e = Object.entries(r.apps), t = Object.entries(r.packages);
4173
4178
  if (e.length > 0) {
@@ -4180,7 +4185,7 @@ async function Xa(e) {
4180
4185
  }
4181
4186
  e.length === 0 && t.length === 0 && o.log.warn("No apps or packages detected in the workspace.");
4182
4187
  }
4183
- let i = (await Zn(u.join(t, "package.json")))?.name?.replace(/^@/, "").replace(/\/source$/, "") ?? "my-app", a = i;
4188
+ let i = (await Qn(u.join(t, "package.json")))?.name?.replace(/^@/, "").replace(/\/source$/, "") ?? "my-app", a = i;
4184
4189
  if (!n) {
4185
4190
  let e = await o.text({
4186
4191
  message: "Project name for stack.json?",
@@ -4189,40 +4194,42 @@ async function Xa(e) {
4189
4194
  });
4190
4195
  o.isCancel(e) && Z(), a = e;
4191
4196
  }
4192
- await or(t, lr(a, r)), n || (o.log.success(`${R.path("stack.json")} written successfully`), o.outro(R.muted("Your project is mapped and ready for Hype Stack CLI commands.")));
4197
+ await sr(t, ur(a, r)), n || (o.log.success(`${R.path("stack.json")} written successfully`), o.outro(R.muted("Your project is mapped and ready for Hype Stack CLI commands.")));
4193
4198
  }
4194
- async function Za(e, t = {}) {
4195
- if (await ar(e)) return !0;
4196
- let n = t.runInit ?? ((e) => Xa({
4199
+ async function Qa(e, t = {}) {
4200
+ if (await or(e)) return e;
4201
+ let n = t.runInit ?? ((e) => Za({
4197
4202
  cwd: e,
4198
4203
  silent: !0
4199
- })), r = t.runCreate ?? ((e) => Ya({ directory: e }));
4200
- if (await ur(e)) {
4204
+ })), r = t.runCreate ?? ((e) => Xa({ parentDirectory: e }));
4205
+ if (await dr(e)) {
4201
4206
  o.log.warn(`No ${R.path("stack.json")} found in ${R.path(e)}.`);
4202
4207
  let t = await o.confirm({
4203
4208
  message: `Create ${R.path("stack.json")} now?`,
4204
4209
  initialValue: !0
4205
4210
  });
4206
- if (o.isCancel(t) || !t) return !1;
4211
+ if (o.isCancel(t) || !t) return null;
4207
4212
  await n(e);
4208
- let r = await ar(e);
4209
- return r && o.log.success(`${R.path("stack.json")} created`), r;
4213
+ let r = await or(e);
4214
+ return r && o.log.success(`${R.path("stack.json")} created`), r ? e : null;
4210
4215
  }
4211
4216
  o.log.warn(`This doesn't look like a Hype Stack project, and there's no ${R.path("stack.json")} here.`);
4212
4217
  let i = await o.confirm({
4213
4218
  message: `Is ${R.path(e)} where you want to work?`,
4214
4219
  initialValue: !0
4215
4220
  });
4216
- if (o.isCancel(i) || !i) return !1;
4221
+ if (o.isCancel(i) || !i) return null;
4217
4222
  let a = await o.confirm({
4218
4223
  message: "Create a new Hype Stack project here?",
4219
4224
  initialValue: !0
4220
4225
  });
4221
- return o.isCancel(a) || !a ? !1 : (await r(e), await ar(e));
4226
+ if (o.isCancel(a) || !a) return null;
4227
+ let s = await r(e);
4228
+ return await or(s) ? s : null;
4222
4229
  }
4223
4230
  //#endregion
4224
4231
  //#region src/core/npm-deps.ts
4225
- function Qa(e, t) {
4232
+ function $a(e, t) {
4226
4233
  let n = [], r = [];
4227
4234
  if (!e) return {
4228
4235
  errors: n,
@@ -4253,7 +4260,7 @@ function Qa(e, t) {
4253
4260
  operations: r
4254
4261
  };
4255
4262
  }
4256
- function $a(e) {
4263
+ function eo(e) {
4257
4264
  let t = {};
4258
4265
  for (let n of e) if (n) for (let [e, r] of Object.entries(n)) t[e] = {
4259
4266
  ...t[e],
@@ -4261,7 +4268,7 @@ function $a(e) {
4261
4268
  };
4262
4269
  return t;
4263
4270
  }
4264
- async function eo(e, t, n = J) {
4271
+ async function to(e, t, n = J) {
4265
4272
  let r = [];
4266
4273
  for (let i of e) {
4267
4274
  let e = u.join(t, i.relativeDir);
@@ -4297,22 +4304,22 @@ async function eo(e, t, n = J) {
4297
4304
  function $(e) {
4298
4305
  return e instanceof Error ? e.message : String(e);
4299
4306
  }
4300
- async function to(e, t, n) {
4307
+ async function no(e, t, n) {
4301
4308
  let r = e.filter((e) => e.tier === "paid" && !t.has(e.name)).map((e) => e.name);
4302
- return r.length === 0 ? {} : _r(r, n).catch(() => ({}));
4309
+ return r.length === 0 ? {} : vr(r, n).catch(() => ({}));
4303
4310
  }
4304
- function no(e, t) {
4311
+ function ro(e, t) {
4305
4312
  return e === "free" ? R.success("free") : e === "owned" ? R.accent("owned") : `${R.highlight(`$${t}`)} ${R.muted("locked")}`;
4306
4313
  }
4307
- async function ro(e, t, n) {
4314
+ async function io(e, t, n) {
4308
4315
  let r = e.filter((e) => t(e)), i = e.filter((e) => !t(e));
4309
- i.length > 0 && o.log.warning(`Skipping ${i.join(", ")} because ${i.length === 1 ? "it depends" : "they depend"} on a pack you don't own yet.`), await Jn(r.map((e) => n.get(e)).filter((e) => e !== void 0).map((e) => ({
4316
+ i.length > 0 && o.log.warning(`Skipping ${i.join(", ")} because ${i.length === 1 ? "it depends" : "they depend"} on a pack you don't own yet.`), await Yn(r.map((e) => n.get(e)).filter((e) => e !== void 0).map((e) => ({
4310
4317
  name: e.name,
4311
4318
  displayName: e.displayName,
4312
4319
  price: e.price
4313
4320
  })));
4314
4321
  }
4315
- function io(e, t) {
4322
+ function ao(e, t) {
4316
4323
  let n = e.map((e, n) => {
4317
4324
  let r = t.get(e), i = r ? r.displayName : e;
4318
4325
  return ` ${R.muted(`${n + 1}.`)} ${R.brand(i)}`;
@@ -4323,10 +4330,10 @@ function io(e, t) {
4323
4330
  ...n
4324
4331
  ].join("\n"), "Install Plan");
4325
4332
  }
4326
- async function ao(e, t) {
4333
+ async function oo(e, t) {
4327
4334
  let n = [];
4328
4335
  for (let r of e) {
4329
- let e = await dr(r), i = await fr(r, t);
4336
+ let e = await fr(r), i = await pr(r, t);
4330
4337
  if (i.status === "denied") throw Error(`Access to "${r}" was denied (${i.reason}). Try 'hype-stack login' or check your license.`);
4331
4338
  n.push({
4332
4339
  manifest: e,
@@ -4335,25 +4342,25 @@ async function ao(e, t) {
4335
4342
  }
4336
4343
  return n;
4337
4344
  }
4338
- async function oo(e) {
4339
- let { prepared: t, paths: n, cwd: r, spinner: i } = e, a = Qa($a(t.map((e) => e.manifest.dependencies_npm)), n);
4345
+ async function so(e) {
4346
+ let { prepared: t, paths: n, cwd: r, spinner: i } = e, a = $a(eo(t.map((e) => e.manifest.dependencies_npm)), n);
4340
4347
  if (a.errors.length > 0) {
4341
4348
  for (let e of a.errors) o.log.error(e);
4342
4349
  return;
4343
4350
  }
4344
4351
  if (a.operations.length === 0) return;
4345
4352
  i.start("Installing npm dependencies...");
4346
- let s = await eo(a.operations, r);
4353
+ let s = await to(a.operations, r);
4347
4354
  if (i.stop(s.ok ? "npm dependencies installed" : "npm dependency installation failed"), !s.ok) for (let e of s.errors) o.log.error(e);
4348
4355
  }
4349
- function so(e) {
4356
+ function co(e) {
4350
4357
  let t = e.flatMap((e) => e.manifest.postInstall ?? []), n = [...new Set(t)];
4351
4358
  n.length !== 0 && o.note(n.map((e) => ` ${R.muted("→")} ${e}`).join("\n"), "Next Steps");
4352
4359
  }
4353
- async function co(e) {
4360
+ async function lo(e) {
4354
4361
  let { prepared: t, config: n, cwd: r, force: i, yes: a, slotsByPack: s } = e, c = /* @__PURE__ */ new Set();
4355
4362
  if (i) return c;
4356
- let l = await Ci({
4363
+ let l = await wi({
4357
4364
  packs: t,
4358
4365
  config: n,
4359
4366
  projectRoot: r,
@@ -4373,135 +4380,137 @@ async function co(e) {
4373
4380
  }
4374
4381
  //#endregion
4375
4382
  //#region src/commands/compose.ts
4376
- async function lo(e = {}) {
4383
+ async function uo(e = {}) {
4377
4384
  let t = e.cwd ?? process.cwd();
4378
- $i();
4379
- let n = await Za(t), r;
4385
+ ea();
4386
+ let n = await Qa(t), r;
4380
4387
  try {
4381
- r = await ir(t);
4388
+ r = await ar(n ?? t);
4382
4389
  } catch (e) {
4383
4390
  o.cancel(`Could not parse ${R.path("stack.json")}: ${$(e)} Run 'hype-stack init' to regenerate it.`), process.exit(1);
4384
4391
  }
4385
- r || (o.cancel(n ? `Could not read ${R.path("stack.json")}. Run 'hype-stack init' to regenerate it, then run 'hype-stack compose' again.` : `No ${R.path("stack.json")}. Run 'hype-stack init' first, then 'hype-stack compose'.`), process.exit(1)), r.paths || (o.cancel(`${R.path("stack.json")} is missing ${R.path("paths")}. Run 'hype-stack init' again to regenerate it.`), process.exit(1)), o.intro(R.brandBold("Compose your stack"));
4386
- let i = o.spinner();
4387
- i.start("Loading packs...");
4388
- let a;
4392
+ r || (o.cancel(n ? `Could not read ${R.path("stack.json")}. Run 'hype-stack init' to regenerate it, then run 'hype-stack compose' again.` : `No ${R.path("stack.json")}. Run 'hype-stack init' first, then 'hype-stack compose'.`), process.exit(1)), r.paths || (o.cancel(`${R.path("stack.json")} is missing ${R.path("paths")}. Run 'hype-stack init' again to regenerate it.`), process.exit(1));
4393
+ let i = n ?? t;
4394
+ o.intro(R.brandBold("Compose your stack"));
4395
+ let a = o.spinner();
4396
+ a.start("Loading packs...");
4397
+ let c;
4389
4398
  try {
4390
- a = await gr();
4399
+ c = await _r();
4391
4400
  } catch (e) {
4392
- i.stop("Failed to load packs"), o.cancel(`Could not reach Hype Stack. Check your connection and try again.\n${$(e)}`), process.exit(1);
4393
- }
4394
- i.stop("Packs loaded");
4395
- let c = r.installedPacks ?? [], l = new Set(c), u = new Map(a.map((e) => [e.name, e])), d = e.licenseKey ?? r.licenseKey ?? null, f = (await Ln(N()))?.token ?? null, p = await to(a, l, {
4396
- token: f,
4397
- key: d
4398
- }), m = (e) => {
4399
- let t = u.get(e);
4400
- return !t || t.tier === "free" ? "free" : p[e]?.owned ? "owned" : "locked";
4401
- }, h = (e) => !l.has(e) && m(e) === "locked", g = await uo({
4402
- packs: a,
4403
- installedSet: l,
4404
- stateOf: m,
4401
+ a.stop("Failed to load packs"), o.cancel(`Could not reach Hype Stack. Check your connection and try again.\n${$(e)}`), process.exit(1);
4402
+ }
4403
+ a.stop("Packs loaded");
4404
+ let l = r.installedPacks ?? [], u = new Set(l), d = new Map(c.map((e) => [e.name, e])), f = e.licenseKey ?? r.licenseKey ?? null, p = (await Rn(N()))?.token ?? null, m = await no(c, u, {
4405
+ token: p,
4406
+ key: f
4407
+ }), h = (e) => {
4408
+ let t = d.get(e);
4409
+ return !t || t.tier === "free" ? "free" : m[e]?.owned ? "owned" : "locked";
4410
+ }, g = (e) => !u.has(e) && h(e) === "locked", _ = await fo({
4411
+ packs: c,
4412
+ installedSet: u,
4413
+ stateOf: h,
4405
4414
  options: e,
4406
4415
  adminAvailable: !!r.apps.admin
4407
4416
  });
4408
- if (g === null && (o.cancel("Cancelled."), process.exit(0)), g.length === 0) {
4417
+ if (_ === null && (o.cancel("Cancelled."), process.exit(0)), _.length === 0) {
4409
4418
  o.outro(R.muted("No packs selected. Nothing to do."));
4410
4419
  return;
4411
4420
  }
4412
- let _ = mo(g), v = ho(g), y = Hi(a, _), b = Fi(Ui(a, y)), x;
4421
+ let v = ho(_), y = go(_), b = Ui(c, v), x = Ii(Wi(c, b)), S;
4413
4422
  try {
4414
- x = Li(_, b, c);
4423
+ S = Ri(v, x, l);
4415
4424
  } catch (e) {
4416
4425
  o.cancel($(e)), process.exit(1);
4417
4426
  }
4418
- if (x.order.length === 0) {
4419
- o.note(`${x.alreadyInstalled.join(", ")} already installed.`, "Nothing to do"), o.outro(R.muted("Your selection is already part of the project."));
4427
+ if (S.order.length === 0) {
4428
+ o.note(`${S.alreadyInstalled.join(", ")} already installed.`, "Nothing to do"), o.outro(R.muted("Your selection is already part of the project."));
4420
4429
  return;
4421
4430
  }
4422
- let S = Ri({
4423
- order: x.order,
4424
- graph: b,
4425
- isLocked: h,
4426
- installed: c
4431
+ let C = zi({
4432
+ order: S.order,
4433
+ graph: x,
4434
+ isLocked: g,
4435
+ installed: l
4427
4436
  });
4428
- if (S.blocked.length > 0 && !f && !d) {
4429
- let e = await qn();
4430
- e && (f = e, p = await to(a, l, {
4431
- token: f,
4432
- key: d
4433
- }), S = Ri({
4434
- order: x.order,
4435
- graph: b,
4436
- isLocked: h,
4437
- installed: c
4437
+ if (C.blocked.length > 0 && !p && !f) {
4438
+ let e = await Jn();
4439
+ e && (p = e, m = await no(c, u, {
4440
+ token: p,
4441
+ key: f
4442
+ }), C = zi({
4443
+ order: S.order,
4444
+ graph: x,
4445
+ isLocked: g,
4446
+ installed: l
4438
4447
  }));
4439
4448
  }
4440
- if (S.blocked.length > 0 && await ro(S.blocked, h, u), S.installable.length === 0) {
4449
+ if (C.blocked.length > 0 && await io(C.blocked, g, d), C.installable.length === 0) {
4441
4450
  o.outro(R.muted("Nothing left to install once locked packs are removed."));
4442
4451
  return;
4443
4452
  }
4444
- if (io(S.installable, u), !e.yes) {
4445
- let e = await o.confirm({ message: `Install ${S.installable.length} pack${S.installable.length === 1 ? "" : "s"}?` });
4453
+ if (ao(C.installable, d), !e.yes) {
4454
+ let e = await o.confirm({ message: `Install ${C.installable.length} pack${C.installable.length === 1 ? "" : "s"}?` });
4446
4455
  (o.isCancel(e) || !e) && (o.cancel("Installation cancelled."), process.exit(0));
4447
4456
  }
4448
- i.start("Downloading packs...");
4449
- let C;
4457
+ a.start("Downloading packs...");
4458
+ let w;
4450
4459
  try {
4451
- C = await ao(S.installable, {
4452
- token: f,
4453
- key: d
4460
+ w = await oo(C.installable, {
4461
+ token: p,
4462
+ key: f
4454
4463
  });
4455
4464
  } catch (e) {
4456
- i.stop("Download failed"), o.cancel($(e)), process.exit(1);
4465
+ a.stop("Download failed"), o.cancel($(e)), process.exit(1);
4457
4466
  }
4458
- i.stop(`Downloaded ${C.length} pack${C.length === 1 ? "" : "s"}`);
4459
- let w = await co({
4460
- prepared: C,
4467
+ a.stop(`Downloaded ${w.length} pack${w.length === 1 ? "" : "s"}`);
4468
+ let T = await lo({
4469
+ prepared: w,
4461
4470
  config: r,
4462
- cwd: t,
4471
+ cwd: i,
4463
4472
  force: e.force ?? !1,
4464
4473
  yes: e.yes ?? !1,
4465
- slotsByPack: v
4474
+ slotsByPack: y
4466
4475
  });
4467
4476
  try {
4468
- i.start("Installing pack files...");
4469
- let n = await Ei({
4470
- packs: C,
4477
+ a.start("Installing pack files...");
4478
+ let t = await Di({
4479
+ packs: w,
4471
4480
  config: r,
4472
- projectRoot: t,
4481
+ projectRoot: i,
4473
4482
  force: e.force ?? !1,
4474
- overwrite: w,
4475
- slotsByPack: v
4483
+ overwrite: T,
4484
+ slotsByPack: y
4476
4485
  });
4477
- if (n.aborted) {
4478
- i.stop("Installation aborted");
4479
- for (let e of n.errors) o.log.error(e);
4486
+ if (t.aborted) {
4487
+ a.stop("Installation aborted");
4488
+ for (let e of t.errors) o.log.error(e);
4480
4489
  o.cancel("No files were written. Fix the errors above (or pass --force for existing files) and try again."), process.exit(1);
4481
4490
  }
4482
- i.stop("Files installed"), n.installed.length > 0 && o.log.success(`${R.highlight(String(n.installed.length))} files installed`), n.skipped.length > 0 && o.log.warning(`${n.skipped.length} files skipped (use --force to overwrite)`);
4483
- for (let e of n.errors) o.log.error(e);
4484
- await oo({
4485
- prepared: C,
4491
+ a.stop("Files installed"), t.installed.length > 0 && o.log.success(`${R.highlight(String(t.installed.length))} files installed`), t.skipped.length > 0 && o.log.warning(`${t.skipped.length} files skipped (use --force to overwrite)`);
4492
+ for (let e of t.errors) o.log.error(e);
4493
+ await so({
4494
+ prepared: w,
4486
4495
  paths: r.paths,
4487
- cwd: t,
4488
- spinner: i
4489
- }), await rr({
4490
- projectRoot: t,
4496
+ cwd: i,
4497
+ spinner: a
4498
+ }), await ir({
4499
+ projectRoot: i,
4491
4500
  paths: r.paths,
4492
4501
  skipPrompts: e.yes ?? !1
4493
- }), so(C), o.outro(R.brand(`Installed ${n.appliedPacks.join(", ")}.`));
4502
+ }), co(w), o.outro(R.brand(`Installed ${t.appliedPacks.join(", ")}.`));
4494
4503
  } finally {
4495
- await Promise.all(C.map((e) => s.rm(e.packDir, {
4504
+ await Promise.all(w.map((e) => s.rm(e.packDir, {
4496
4505
  recursive: !0,
4497
4506
  force: !0
4498
4507
  })));
4499
4508
  }
4500
4509
  }
4501
- async function uo(e) {
4510
+ async function fo(e) {
4502
4511
  let { packs: t, installedSet: n, stateOf: r, options: i, adminAvailable: a } = e;
4503
4512
  if (i.packs && i.packs.length > 0) {
4504
- let e = i.packs.map(po), n = e.filter((e) => !t.some((t) => t.name === e.name));
4513
+ let e = i.packs.map(mo), n = e.filter((e) => !t.some((t) => t.name === e.name));
4505
4514
  return n.length > 0 && (o.cancel(`Unknown pack${n.length === 1 ? "" : "s"}: ${n.map((e) => e.name).join(", ")}`), process.exit(1)), e;
4506
4515
  }
4507
4516
  let s = t.filter((e) => n.has(e.name));
@@ -4509,14 +4518,14 @@ async function uo(e) {
4509
4518
  let c = t.filter((e) => !n.has(e.name));
4510
4519
  if (c.length === 0) return o.outro(R.muted("Every available pack is already installed.")), [];
4511
4520
  let l = P();
4512
- o.note(c.map((e) => ` ${z.arrow} ${R.highlight(e.displayName)} ${ce(`${l}/packs/${e.name}`)}`).join("\n"), "Browse packs");
4513
- let u = Ni(c, { adminAvailable: a }), d = [];
4521
+ o.note(c.map((e) => ` ${z.arrow} ${R.highlight(e.displayName)} ${le(`${l}/packs/${e.name}`)}`).join("\n"), "Browse packs");
4522
+ let u = Pi(c, { adminAvailable: a }), d = [];
4514
4523
  for (let e of u) {
4515
4524
  let t = e.packs.map((e) => {
4516
4525
  let t = r(e.name);
4517
4526
  return {
4518
4527
  value: e.name,
4519
- label: `${e.displayName} ${no(t, e.price)}`,
4528
+ label: `${e.displayName} ${ro(t, e.price)}`,
4520
4529
  hint: e.description
4521
4530
  };
4522
4531
  });
@@ -4543,20 +4552,20 @@ async function uo(e) {
4543
4552
  }
4544
4553
  return d;
4545
4554
  }
4546
- var fo = /@(frontend|admin)$/;
4547
- function po(e) {
4548
- let t = e.match(fo);
4555
+ var po = /@(frontend|admin)$/;
4556
+ function mo(e) {
4557
+ let t = e.match(po);
4549
4558
  return t ? {
4550
4559
  name: e.slice(0, -t[0].length),
4551
4560
  slot: t[1]
4552
4561
  } : { name: e };
4553
4562
  }
4554
- function mo(e) {
4563
+ function ho(e) {
4555
4564
  let t = /* @__PURE__ */ new Set(), n = [];
4556
4565
  for (let r of e) t.has(r.name) || (t.add(r.name), n.push(r.name));
4557
4566
  return n;
4558
4567
  }
4559
- function ho(e) {
4568
+ function go(e) {
4560
4569
  let t = /* @__PURE__ */ new Map();
4561
4570
  for (let n of e) {
4562
4571
  if (!n.slot) continue;
@@ -4567,11 +4576,11 @@ function ho(e) {
4567
4576
  }
4568
4577
  //#endregion
4569
4578
  //#region src/commands/login.ts
4570
- async function go() {
4571
- $i(), o.intro(R.brandBold("Log in to Hype Stack")), o.log.step("Opening your browser to sign in...");
4579
+ async function _o() {
4580
+ ea(), o.intro(R.brandBold("Log in to Hype Stack")), o.log.step("Opening your browser to sign in...");
4572
4581
  let e;
4573
4582
  try {
4574
- e = await Kn({ onUrl: (e) => {
4583
+ e = await qn({ onUrl: (e) => {
4575
4584
  o.log.info(`If your browser didn't open, visit:\n ${R.path(e)}`);
4576
4585
  } });
4577
4586
  } catch (e) {
@@ -4581,27 +4590,27 @@ async function go() {
4581
4590
  }
4582
4591
  //#endregion
4583
4592
  //#region src/commands/logout.ts
4584
- async function _o() {
4585
- $i(), o.intro(R.brandBold("Log out of Hype Stack"));
4586
- let e = N(), t = await Ln(e);
4593
+ async function vo() {
4594
+ ea(), o.intro(R.brandBold("Log out of Hype Stack"));
4595
+ let e = N(), t = await Rn(e);
4587
4596
  if (!t) {
4588
4597
  o.outro(R.muted("You're not logged in."));
4589
4598
  return;
4590
4599
  }
4591
- await kn(t.token).catch(() => null), await zn(e), o.outro(R.brand("Logged out."));
4600
+ await An(t.token).catch(() => null), await Bn(e), o.outro(R.brand("Logged out."));
4592
4601
  }
4593
4602
  //#endregion
4594
4603
  //#region src/core/templates.ts
4595
- var vo = q.createRequest()({
4604
+ var yo = q.createRequest()({
4596
4605
  endpoint: "/templates/list",
4597
4606
  method: "GET"
4598
4607
  });
4599
- async function yo() {
4600
- let { data: e, error: t } = await vo.send();
4608
+ async function bo() {
4609
+ let { data: e, error: t } = await yo.send();
4601
4610
  if (t || !e) throw Error(`Failed to fetch template list: ${String(t)}`);
4602
4611
  return e.templates;
4603
4612
  }
4604
- async function bo(e) {
4613
+ async function xo(e) {
4605
4614
  let { data: t, error: n, status: r } = await q.createRequest()({
4606
4615
  endpoint: `/templates/${encodeURIComponent(e)}/manifest`,
4607
4616
  method: "GET"
@@ -4610,13 +4619,13 @@ async function bo(e) {
4610
4619
  if (n || !t) throw Error(`Failed to load manifest for template "${e}": ${String(n)}`);
4611
4620
  return t;
4612
4621
  }
4613
- async function xo(e, t = {}) {
4622
+ async function So(e, t = {}) {
4614
4623
  let n = q.createRequest()({
4615
4624
  endpoint: `/templates/${encodeURIComponent(e)}/download`,
4616
4625
  method: "POST"
4617
4626
  }), r = {
4618
- "X-Device-Id": Vn(),
4619
- "X-Client-Info": Hn()
4627
+ "X-Device-Id": Hn(),
4628
+ "X-Client-Info": Un()
4620
4629
  };
4621
4630
  t.token && (r.Authorization = `Bearer ${t.token}`);
4622
4631
  let { data: i, error: a, success: o } = await n.setPayload({ key: t.licenseKey ?? void 0 }).setHeaders(r).send();
@@ -4638,159 +4647,161 @@ async function xo(e, t = {}) {
4638
4647
  }
4639
4648
  //#endregion
4640
4649
  //#region src/commands/template.ts
4641
- async function So(e = {}) {
4650
+ async function Co(e = {}) {
4642
4651
  let t = e.cwd ?? process.cwd();
4643
- $i();
4644
- let n = await Za(t), a;
4652
+ ea();
4653
+ let n = await Qa(t), a;
4645
4654
  try {
4646
- a = await ir(t);
4655
+ a = await ar(n ?? t);
4647
4656
  } catch (e) {
4648
4657
  o.cancel(`Could not parse ${R.path("stack.json")}: ${$(e)} Run 'hype-stack init' to regenerate it.`), process.exit(1);
4649
4658
  }
4650
- a || (o.cancel(n ? `Could not read ${R.path("stack.json")}. Run 'hype-stack init' to regenerate it, then run 'hype-stack template' again.` : `No ${R.path("stack.json")}. Run 'hype-stack init' first, then 'hype-stack template'.`), process.exit(1)), a.paths || (o.cancel(`${R.path("stack.json")} is missing ${R.path("paths")}. Run 'hype-stack init' again to regenerate it.`), process.exit(1)), o.intro(R.brandBold("Install a template"));
4651
- let c = o.spinner();
4652
- c.start("Loading packs...");
4653
- let l;
4659
+ a || (o.cancel(n ? `Could not read ${R.path("stack.json")}. Run 'hype-stack init' to regenerate it, then run 'hype-stack template' again.` : `No ${R.path("stack.json")}. Run 'hype-stack init' first, then 'hype-stack template'.`), process.exit(1)), a.paths || (o.cancel(`${R.path("stack.json")} is missing ${R.path("paths")}. Run 'hype-stack init' again to regenerate it.`), process.exit(1));
4660
+ let c = n ?? t;
4661
+ o.intro(R.brandBold("Install a template"));
4662
+ let l = o.spinner();
4663
+ l.start("Loading packs...");
4664
+ let d;
4654
4665
  try {
4655
- l = await gr();
4666
+ d = await _r();
4656
4667
  } catch (e) {
4657
- c.stop("Failed to load packs"), o.cancel(`Could not reach Hype Stack. Check your connection and try again.\n${$(e)}`), process.exit(1);
4668
+ l.stop("Failed to load packs"), o.cancel(`Could not reach Hype Stack. Check your connection and try again.\n${$(e)}`), process.exit(1);
4658
4669
  }
4659
- c.stop("Packs loaded");
4660
- let d = a.installedPacks ?? [], f = new Set(d), p = new Map(l.map((e) => [e.name, e])), m = e.licenseKey ?? a.licenseKey ?? null, h = (await Ln(N()))?.token ?? null;
4661
- c.start("Loading templates...");
4662
- let g;
4670
+ l.stop("Packs loaded");
4671
+ let f = a.installedPacks ?? [], p = new Set(f), m = new Map(d.map((e) => [e.name, e])), h = e.licenseKey ?? a.licenseKey ?? null, g = (await Rn(N()))?.token ?? null;
4672
+ l.start("Loading templates...");
4673
+ let _;
4663
4674
  try {
4664
- g = await yo();
4675
+ _ = await bo();
4665
4676
  } catch (e) {
4666
- c.stop("Failed to load templates"), o.cancel(`Could not reach Hype Stack. Check your connection and try again.\n${$(e)}`), process.exit(1);
4677
+ l.stop("Failed to load templates"), o.cancel(`Could not reach Hype Stack. Check your connection and try again.\n${$(e)}`), process.exit(1);
4667
4678
  }
4668
- let _ = e.templateId;
4669
- if (!_) {
4670
- e.yes && (c.stop("Template id required"), o.cancel("Pass a template id with `hype-stack template <id>` (required in --yes mode)."), process.exit(1)), g.length === 0 && (c.stop("No templates available"), o.cancel("No templates are available yet. Check back later."), process.exit(1)), c.stop("Templates loaded");
4679
+ let v = e.templateId;
4680
+ if (!v) {
4681
+ e.yes && (l.stop("Template id required"), o.cancel("Pass a template id with `hype-stack template <id>` (required in --yes mode)."), process.exit(1)), _.length === 0 && (l.stop("No templates available"), o.cancel("No templates are available yet. Check back later."), process.exit(1)), l.stop("Templates loaded");
4671
4682
  let t = P();
4672
- o.note(g.map((e) => ` ${z.arrow} ${R.highlight(e.name)} ${ce(`${t}/templates/${e.id}`)}`).join("\n"), "Browse templates");
4683
+ o.note(_.map((e) => ` ${z.arrow} ${R.highlight(e.name)} ${le(`${t}/templates/${e.id}`)}`).join("\n"), "Browse templates");
4673
4684
  let n = await o.select({
4674
4685
  message: "Choose a template",
4675
- options: g.map((e) => ({
4686
+ options: _.map((e) => ({
4676
4687
  value: e.id,
4677
4688
  label: e.name,
4678
4689
  hint: e.description
4679
4690
  }))
4680
4691
  });
4681
- o.isCancel(n) && (o.cancel("Cancelled."), process.exit(0)), _ = n;
4682
- }
4683
- let v = g.find((e) => e.id === _);
4684
- v || (c.stop("Template not found"), o.cancel(`Template "${_}" not found. Available: ${g.map((e) => e.id).join(", ") || "(none)"}`), process.exit(1)), c.stop(`Template: ${v.name}`);
4685
- let y = await Co(v, e.variants, e.yes ?? !1), b = zi(v.slots, y), x = Bi(v.slots, v.packs, b), S = await wo({
4686
- packs: l,
4687
- templatePacks: x,
4688
- installedSet: f,
4692
+ o.isCancel(n) && (o.cancel("Cancelled."), process.exit(0)), v = n;
4693
+ }
4694
+ let y = _.find((e) => e.id === v);
4695
+ y || (l.stop("Template not found"), o.cancel(`Template "${v}" not found. Available: ${_.map((e) => e.id).join(", ") || "(none)"}`), process.exit(1)), l.stop(`Template: ${y.name}`);
4696
+ let b = await wo(y, e.variants, e.yes ?? !1), x = Bi(y.slots, b), S = Vi(y.slots, y.packs, x), C = await To({
4697
+ packs: d,
4698
+ templatePacks: S,
4699
+ installedSet: p,
4689
4700
  options: e
4690
- }), C = [...x, ...S.filter((e) => !x.includes(e))], w = C.filter((e) => !p.has(e));
4691
- w.length > 0 && (o.cancel(`Unknown pack${w.length === 1 ? "" : "s"}: ${w.join(", ")}`), process.exit(1));
4692
- let T = Ui(l, b), E = Fi(T), D;
4701
+ }), w = [...S, ...C.filter((e) => !S.includes(e))], T = w.filter((e) => !m.has(e));
4702
+ T.length > 0 && (o.cancel(`Unknown pack${T.length === 1 ? "" : "s"}: ${T.join(", ")}`), process.exit(1));
4703
+ let E = Wi(d, x), D = Ii(E), O;
4693
4704
  try {
4694
- D = Li(C, E, d);
4705
+ O = Ri(w, D, f);
4695
4706
  } catch (e) {
4696
4707
  o.cancel($(e)), process.exit(1);
4697
4708
  }
4698
- if (D.order.length === 0) {
4709
+ if (O.order.length === 0) {
4699
4710
  o.outro(R.muted("Every pack in this template is already installed."));
4700
4711
  return;
4701
4712
  }
4702
- let O = await to(T, f, {
4703
- token: h,
4704
- key: m
4705
- }), ee = (e) => {
4706
- let t = p.get(e);
4707
- return !t || t.tier === "free" ? "free" : O[e]?.owned ? "owned" : "locked";
4708
- }, k = (e) => !f.has(e) && ee(e) === "locked", A = Ri({
4709
- order: D.order,
4710
- graph: E,
4713
+ let ee = await no(E, p, {
4714
+ token: g,
4715
+ key: h
4716
+ }), te = (e) => {
4717
+ let t = m.get(e);
4718
+ return !t || t.tier === "free" ? "free" : ee[e]?.owned ? "owned" : "locked";
4719
+ }, k = (e) => !p.has(e) && te(e) === "locked", A = zi({
4720
+ order: O.order,
4721
+ graph: D,
4711
4722
  isLocked: k,
4712
- installed: d
4723
+ installed: f
4713
4724
  });
4714
- if (A.blocked.length > 0 && !h && !m) {
4715
- let e = await qn();
4716
- e && (h = e, O = await to(T, f, {
4717
- token: h,
4718
- key: m
4719
- }), A = Ri({
4720
- order: D.order,
4721
- graph: E,
4725
+ if (A.blocked.length > 0 && !g && !h) {
4726
+ let e = await Jn();
4727
+ e && (g = e, ee = await no(E, p, {
4728
+ token: g,
4729
+ key: h
4730
+ }), A = zi({
4731
+ order: O.order,
4732
+ graph: D,
4722
4733
  isLocked: k,
4723
- installed: d
4734
+ installed: f
4724
4735
  }));
4725
4736
  }
4726
- if (A.blocked.length > 0 && await ro(A.blocked, k, p), A.installable.length === 0) {
4737
+ if (A.blocked.length > 0 && await io(A.blocked, k, m), A.installable.length === 0) {
4727
4738
  o.outro(R.muted("Nothing left to install once locked packs are removed."));
4728
4739
  return;
4729
4740
  }
4730
- if (io(A.installable, p), !e.yes) {
4731
- let e = await o.confirm({ message: `Install template ${R.brandBold(v.name)} (${A.installable.length} pack${A.installable.length === 1 ? "" : "s"})?` });
4741
+ if (ao(A.installable, m), !e.yes) {
4742
+ let e = await o.confirm({ message: `Install template ${R.brandBold(y.name)} (${A.installable.length} pack${A.installable.length === 1 ? "" : "s"})?` });
4732
4743
  (o.isCancel(e) || !e) && (o.cancel("Installation cancelled."), process.exit(0));
4733
4744
  }
4734
- c.start("Downloading packs...");
4745
+ l.start("Downloading packs...");
4735
4746
  let j;
4736
4747
  try {
4737
- j = await ao(A.installable, {
4738
- token: h,
4739
- key: m
4748
+ j = await oo(A.installable, {
4749
+ token: g,
4750
+ key: h
4740
4751
  });
4741
4752
  } catch (e) {
4742
- c.stop("Download failed"), o.cancel($(e)), process.exit(1);
4753
+ l.stop("Download failed"), o.cancel($(e)), process.exit(1);
4743
4754
  }
4744
- c.stop(`Downloaded ${j.length} pack${j.length === 1 ? "" : "s"}`);
4745
- let te = await co({
4755
+ l.stop(`Downloaded ${j.length} pack${j.length === 1 ? "" : "s"}`);
4756
+ let ne = await lo({
4746
4757
  prepared: j,
4747
4758
  config: a,
4748
- cwd: t,
4759
+ cwd: c,
4749
4760
  force: e.force ?? !1,
4750
4761
  yes: e.yes ?? !1
4751
4762
  }), M = null;
4752
4763
  try {
4753
- c.start("Installing pack files...");
4754
- let n = await Ei({
4764
+ l.start("Installing pack files...");
4765
+ let t = await Di({
4755
4766
  packs: j,
4756
4767
  config: a,
4757
- projectRoot: t,
4768
+ projectRoot: c,
4758
4769
  force: e.force ?? !1,
4759
- overwrite: te
4770
+ overwrite: ne
4760
4771
  });
4761
- if (n.aborted) {
4762
- c.stop("Installation aborted");
4763
- for (let e of n.errors) o.log.error(e);
4772
+ if (t.aborted) {
4773
+ l.stop("Installation aborted");
4774
+ for (let e of t.errors) o.log.error(e);
4764
4775
  o.cancel("No files were written. Fix the errors above (or pass --force for existing files) and try again."), process.exit(1);
4765
4776
  }
4766
- c.stop("Files installed"), n.installed.length > 0 && o.log.success(`${R.highlight(String(n.installed.length))} files installed`), n.skipped.length > 0 && o.log.warning(`${n.skipped.length} files skipped (use --force to overwrite)`);
4767
- for (let e of n.errors) o.log.error(e);
4768
- c.start("Applying template overrides...");
4769
- let s = await bo(v.id), l = await xo(v.id, {
4770
- token: h,
4771
- licenseKey: m
4777
+ l.stop("Files installed"), t.installed.length > 0 && o.log.success(`${R.highlight(String(t.installed.length))} files installed`), t.skipped.length > 0 && o.log.warning(`${t.skipped.length} files skipped (use --force to overwrite)`);
4778
+ for (let e of t.errors) o.log.error(e);
4779
+ l.start("Applying template overrides...");
4780
+ let n = await xo(y.id), s = await So(y.id, {
4781
+ token: g,
4782
+ licenseKey: h
4772
4783
  });
4773
- l.status === "denied" && (c.stop("Template download denied"), o.cancel(`Access to template "${v.id}" was denied (${l.reason}). Try 'hype-stack login' or check your license.`), process.exit(1)), M = l.templateDir;
4774
- let d = await Oi({
4775
- manifest: s,
4784
+ s.status === "denied" && (l.stop("Template download denied"), o.cancel(`Access to template "${y.id}" was denied (${s.reason}). Try 'hype-stack login' or check your license.`), process.exit(1)), M = s.templateDir;
4785
+ let d = await ki({
4786
+ manifest: n,
4776
4787
  config: a,
4777
- projectRoot: t,
4788
+ projectRoot: c,
4778
4789
  templateDir: M
4779
4790
  });
4780
- c.stop("Template overrides applied"), d.installed.length > 0 && o.log.success(`${d.installed.length} template file${d.installed.length === 1 ? "" : "s"} applied`);
4791
+ l.stop("Template overrides applied"), d.installed.length > 0 && o.log.success(`${d.installed.length} template file${d.installed.length === 1 ? "" : "s"} applied`);
4781
4792
  for (let e of d.errors) o.log.error(e);
4782
- let f = s.theme ?? "zinc-mono";
4783
- i(f) && (await sa(u.resolve(t, a.paths?.frontend.root ?? "apps/frontend"), r(f)) ? o.log.success(`Applied the ${r(f).label} theme`) : o.log.warning(R.muted(`Could not find ${R.path("assets/styles.css")} to apply the theme`))), await To({
4793
+ let f = n.theme ?? "zinc-mono";
4794
+ i(f) && (await sa(u.resolve(c, a.paths?.frontend.root ?? "apps/frontend"), r(f)) ? o.log.success(`Applied the ${r(f).label} theme`) : o.log.warning(R.muted(`Could not find ${R.path("assets/styles.css")} to apply the theme`))), await Eo({
4784
4795
  prepared: j,
4785
- templateNpm: s.dependencies_npm,
4796
+ templateNpm: n.dependencies_npm,
4786
4797
  paths: a.paths,
4787
- cwd: t,
4788
- spinner: c
4789
- }), await rr({
4790
- projectRoot: t,
4798
+ cwd: c,
4799
+ spinner: l
4800
+ }), await ir({
4801
+ projectRoot: c,
4791
4802
  paths: a.paths,
4792
4803
  skipPrompts: e.yes ?? !1
4793
- }), so(j), s.postInstall && s.postInstall.length > 0 && o.note(s.postInstall.map((e) => ` ${R.muted("→")} ${e}`).join("\n"), "Template Next Steps"), o.outro(R.brand(`Installed template ${v.name}.`));
4804
+ }), co(j), n.postInstall && n.postInstall.length > 0 && o.note(n.postInstall.map((e) => ` ${R.muted("→")} ${e}`).join("\n"), "Template Next Steps"), o.outro(R.brand(`Installed template ${y.name}.`));
4794
4805
  } finally {
4795
4806
  await Promise.all(j.map((e) => s.rm(e.packDir, {
4796
4807
  recursive: !0,
@@ -4801,7 +4812,7 @@ async function So(e = {}) {
4801
4812
  });
4802
4813
  }
4803
4814
  }
4804
- async function Co(e, t, n) {
4815
+ async function wo(e, t, n) {
4805
4816
  let r = {};
4806
4817
  for (let i of e.slots) {
4807
4818
  if (t?.[i.family]) {
@@ -4825,7 +4836,7 @@ async function Co(e, t, n) {
4825
4836
  }
4826
4837
  return r;
4827
4838
  }
4828
- async function wo(e) {
4839
+ async function To(e) {
4829
4840
  let { packs: t, templatePacks: n, installedSet: r, options: i } = e, a = new Set(n);
4830
4841
  if (i.packs && i.packs.length > 0) {
4831
4842
  let e = i.packs.filter((e) => !t.some((t) => t.name === e));
@@ -4835,7 +4846,7 @@ async function wo(e) {
4835
4846
  let s = t.filter((e) => e.category === "feature" && !a.has(e.name) && !r.has(e.name));
4836
4847
  if (s.length === 0) return [];
4837
4848
  let c = P();
4838
- o.note(s.map((e) => ` ${z.arrow} ${R.highlight(e.displayName)} ${ce(`${c}/packs/${e.name}`)}`).join("\n"), "Browse packs");
4849
+ o.note(s.map((e) => ` ${z.arrow} ${R.highlight(e.displayName)} ${le(`${c}/packs/${e.name}`)}`).join("\n"), "Browse packs");
4839
4850
  let l = await o.multiselect({
4840
4851
  message: "Add extra packs on top of the template (optional)",
4841
4852
  options: s.map((e) => ({
@@ -4847,25 +4858,25 @@ async function wo(e) {
4847
4858
  });
4848
4859
  return o.isCancel(l) && (o.cancel("Cancelled."), process.exit(0)), l;
4849
4860
  }
4850
- async function To(e) {
4851
- let { prepared: t, templateNpm: n, paths: r, cwd: i, spinner: a } = e, s = $a(t.map((e) => e.manifest.dependencies_npm)), c = Qa(n ? $a([s, n]) : s, r);
4861
+ async function Eo(e) {
4862
+ let { prepared: t, templateNpm: n, paths: r, cwd: i, spinner: a } = e, s = eo(t.map((e) => e.manifest.dependencies_npm)), c = $a(n ? eo([s, n]) : s, r);
4852
4863
  if (c.errors.length > 0) {
4853
4864
  for (let e of c.errors) o.log.error(e);
4854
4865
  return;
4855
4866
  }
4856
4867
  if (c.operations.length === 0) return;
4857
4868
  a.start("Installing npm dependencies...");
4858
- let l = await eo(c.operations, i);
4869
+ let l = await to(c.operations, i);
4859
4870
  if (a.stop(l.ok ? "npm dependencies installed" : "npm dependency installation failed"), !l.ok) for (let e of l.errors) o.log.error(e);
4860
4871
  }
4861
4872
  //#endregion
4862
4873
  //#region src/cli.ts
4863
- function Eo(e) {
4874
+ function Do(e) {
4864
4875
  if (!e) return;
4865
4876
  let t = e.split(",").map((e) => e.trim()).filter((e) => e.length > 0);
4866
4877
  return t.length > 0 ? t : void 0;
4867
4878
  }
4868
- function Do(e) {
4879
+ function Oo(e) {
4869
4880
  if (!e) return;
4870
4881
  let t = {};
4871
4882
  for (let n of e.split(",")) {
@@ -4874,10 +4885,10 @@ function Do(e) {
4874
4885
  }
4875
4886
  return Object.keys(t).length > 0 ? t : void 0;
4876
4887
  }
4877
- function Oo() {
4888
+ function ko() {
4878
4889
  let e = new a();
4879
4890
  return e.name("hype-stack").description("Build with Hype Stack -- templates, components, modules, and more").version(C, "-v, --version"), e.command("create").description("Create a new Hype Stack project").option("-n, --name <name>", "Project name").option("-d, --directory <path>", "Target directory").option("-e, --editor <editor>", "Code editor (cursor, claude, windsurf, copilot)").option("-t, --theme <theme>", "Color theme (default, slate, rose, emerald, violet, amber, ocean, zinc-mono, crimson, midnight)").option("--no-install", "Skip dependency installation").option("--no-setup", "Skip Docker services and database migrations after create").option("-y, --yes", "Skip confirmation prompts (requires --name)").action(async (e) => {
4880
- await Ya({
4891
+ await Xa({
4881
4892
  name: e.name,
4882
4893
  directory: e.directory,
4883
4894
  install: e.install,
@@ -4887,32 +4898,32 @@ function Oo() {
4887
4898
  setup: e.setup
4888
4899
  });
4889
4900
  }), e.command("init").description("Initialize stack.json in the current project").action(async () => {
4890
- await Xa({});
4901
+ await Za({});
4891
4902
  }), e.command("compose").description("Choose feature packs to add to your project").option("--packs <list>", "Comma-separated pack names (non-interactive). Append @frontend or @admin to a layout pack to target that app shell, e.g. layout-basic@frontend,layout-native-app-shell@admin").option("--force", "Overwrite existing files").option("-y, --yes", "Skip confirmation prompts").option("-k, --key <key>", "License key").option("--license-key <key>", "License key (alias for --key)").option("--cwd <path>", "Working directory").action(async (e) => {
4892
- await lo({
4893
- packs: Eo(e.packs),
4903
+ await uo({
4904
+ packs: Do(e.packs),
4894
4905
  force: e.force,
4895
4906
  yes: e.yes,
4896
4907
  licenseKey: e.key ?? e.licenseKey,
4897
4908
  cwd: e.cwd
4898
4909
  });
4899
4910
  }), e.command("template").description("Install a template by id, with starter/layout variant swaps and extra packs on top").argument("[id]", "Template id (omit to pick interactively)").option("--variants <map>", "Preselect slot variants, e.g. starter-saas=starter-saas-better-auth,layout=layout-basic").option("--packs <list>", "Extra packs to add on top of the template (comma-separated)").option("--force", "Overwrite existing files").option("-y, --yes", "Skip confirmation prompts (requires <id>)").option("-k, --key <key>", "License key").option("--license-key <key>", "License key (alias for --key)").option("--cwd <path>", "Working directory").action(async (e, t) => {
4900
- await So({
4911
+ await Co({
4901
4912
  templateId: e,
4902
- variants: Do(t.variants),
4903
- packs: Eo(t.packs),
4913
+ variants: Oo(t.variants),
4914
+ packs: Do(t.packs),
4904
4915
  force: t.force,
4905
4916
  yes: t.yes,
4906
4917
  licenseKey: t.key ?? t.licenseKey,
4907
4918
  cwd: t.cwd
4908
4919
  });
4909
4920
  }), e.command("login").description("Log in via your browser to install packs your organization owns").action(async () => {
4910
- await go();
4911
- }), e.command("logout").description("Log out and remove the saved CLI token").action(async () => {
4912
4921
  await _o();
4922
+ }), e.command("logout").description("Log out and remove the saved CLI token").action(async () => {
4923
+ await vo();
4913
4924
  }), e.command("auth").description("Alias for `login`").action(async () => {
4914
- await go();
4925
+ await _o();
4915
4926
  }), e;
4916
4927
  }
4917
4928
  //#endregion
4918
- export { Za as a, lo as i, _o as n, Xa as o, go as r, Ya as s, Oo as t };
4929
+ export { Qa as a, uo as i, vo as n, Za as o, _o as r, Xa as s, ko as t };