@hype-stack/cli 0.3.0 → 0.3.2

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.
@@ -1,16 +1,19 @@
1
1
  import { DEFAULT_THEME as e, THEME_CHOICES as t, THEME_LIST as n, getTheme as r, isThemeName as i } from "./themes.js";
2
2
  import { Command as a } from "commander";
3
3
  import * as o from "@clack/prompts";
4
- import s from "node:fs/promises";
5
- import c from "picocolors";
6
- import { createHash as l, randomBytes as u } from "node:crypto";
7
- import d from "node:http";
8
- import f from "node:os";
9
- import p from "node:path";
10
- import { exec as m, spawn as h } from "node:child_process";
11
- import { downloadTemplate as g } from "giget";
4
+ import { S_BAR as s, S_BAR_END as c, S_CHECKBOX_ACTIVE as l, S_CHECKBOX_INACTIVE as u, S_CHECKBOX_SELECTED as d, S_RADIO_ACTIVE as f, isCancel as p, limitOptions as m, settings as h, symbol as g, symbolBar as _ } from "@clack/prompts";
5
+ import v from "node:fs/promises";
6
+ import y from "picocolors";
7
+ import { createHash as b, randomBytes as x } from "node:crypto";
8
+ import S from "node:http";
9
+ import C from "node:os";
10
+ import w from "node:path";
11
+ import { exec as T, spawn as E } from "node:child_process";
12
+ import { Prompt as D } from "@clack/core";
13
+ import { styleText as O } from "node:util";
14
+ import { downloadTemplate as ee } from "giget";
12
15
  //#region src/constants/constants.ts
13
- var _ = "0.0.1", v = "gh:BetterTyped/hype-stack", y = "stack.json", b = "/schema/stack.json", x = "https://api.hype-stack.dev", S = "HYPE_STACK_API_URL", C = "https://www.hype-stack.dev", w = /^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/, T = [
16
+ var k = "0.0.1", te = "gh:BetterTyped/hype-stack", ne = "stack.json", re = "/schema/stack.json", A = "https://api.hype-stack.dev", j = "HYPE_STACK_API_URL", ie = "https://www.hype-stack.dev", M = /^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/, ae = [
14
17
  {
15
18
  value: "cursor",
16
19
  label: "Cursor",
@@ -28,109 +31,109 @@ var _ = "0.0.1", v = "gh:BetterTyped/hype-stack", y = "stack.json", b = "/schema
28
31
  value: "copilot",
29
32
  label: "GitHub Copilot"
30
33
  }
31
- ], E = T.map((e) => e.value), D = ".cursor/rules", O = ".cursor", ee = ".agents";
32
- function k() {
34
+ ], oe = ae.map((e) => e.value), se = ".cursor/rules", ce = ".cursor", le = ".agents";
35
+ function N() {
33
36
  let e = process.env.HYPE_STACK_API_URL;
34
- return e ? (te(e), e.replace(/\/+$/, "")) : x;
37
+ return e ? (ue(e), e.replace(/\/+$/, "")) : A;
35
38
  }
36
- function A() {
39
+ function P() {
37
40
  let e = process.env.HYPE_STACK_WEB_URL;
38
- return e ? (te(e), e.replace(/\/+$/, "")) : C;
41
+ return e ? (ue(e), e.replace(/\/+$/, "")) : ie;
39
42
  }
40
- function te(e) {
43
+ function ue(e) {
41
44
  try {
42
45
  let t = new URL(e);
43
- if (!t.protocol.startsWith("http")) throw Error(`${S} must use http or https protocol, got "${t.protocol}"`);
46
+ if (!t.protocol.startsWith("http")) throw Error(`${j} must use http or https protocol, got "${t.protocol}"`);
44
47
  } catch (t) {
45
- throw t instanceof TypeError ? Error(`${S} is not a valid URL: "${e}"`, { cause: t }) : t;
48
+ throw t instanceof TypeError ? Error(`${j} is not a valid URL: "${e}"`, { cause: t }) : t;
46
49
  }
47
50
  }
48
- function j() {
49
- return `${k()}${b}`;
51
+ function de() {
52
+ return `${N()}${re}`;
50
53
  }
51
54
  //#endregion
52
55
  //#region src/ui/theme.ts
53
- var M = (e) => `\x1b[38;5;208m${e}\x1b[39m`, N = (e) => `\x1b[38;5;214m${e}\x1b[39m`, P = (e) => `\x1b[38;5;220m${e}\x1b[39m`, F = (e) => `\x1b[38;5;33m${e}\x1b[39m`, I = (e) => `\x1b[38;5;39m${e}\x1b[39m`, ne = (e) => `\x1b[38;5;81m${e}\x1b[39m`, re = {
54
- orange: M,
55
- orangeBright: N,
56
- amber: P,
57
- deepBlue: F,
56
+ var fe = (e) => `\x1b[38;5;208m${e}\x1b[39m`, pe = (e) => `\x1b[38;5;214m${e}\x1b[39m`, F = (e) => `\x1b[38;5;220m${e}\x1b[39m`, me = (e) => `\x1b[38;5;33m${e}\x1b[39m`, I = (e) => `\x1b[38;5;39m${e}\x1b[39m`, he = (e) => `\x1b[38;5;81m${e}\x1b[39m`, ge = {
57
+ orange: fe,
58
+ orangeBright: pe,
59
+ amber: F,
60
+ deepBlue: me,
58
61
  skyBlue: I,
59
- lightBlue: ne
62
+ lightBlue: he
60
63
  }, L = {
61
- brand: (e) => M(e),
62
- brandBold: (e) => c.bold(M(e)),
64
+ brand: (e) => fe(e),
65
+ brandBold: (e) => y.bold(fe(e)),
63
66
  accent: (e) => I(e),
64
- accentBold: (e) => c.bold(I(e)),
65
- success: (e) => c.green(e),
66
- error: (e) => c.red(e),
67
- warning: (e) => c.yellow(e),
68
- muted: (e) => c.dim(e),
69
- bold: (e) => c.bold(e),
70
- highlight: (e) => c.bold(c.white(e)),
71
- path: (e) => c.underline(I(e)),
72
- command: (e) => c.bold(P(e)),
73
- label: (e) => c.dim(c.bold(e))
67
+ accentBold: (e) => y.bold(I(e)),
68
+ success: (e) => y.green(e),
69
+ error: (e) => y.red(e),
70
+ warning: (e) => y.yellow(e),
71
+ muted: (e) => y.dim(e),
72
+ bold: (e) => y.bold(e),
73
+ highlight: (e) => y.bold(y.white(e)),
74
+ path: (e) => y.underline(I(e)),
75
+ command: (e) => y.bold(F(e)),
76
+ label: (e) => y.dim(y.bold(e))
74
77
  };
75
- function ie(e, t = e) {
78
+ function _e(e, t = e) {
76
79
  return `\x1b]8;;${e}\x07${I(t)}\x1b]8;;\x07`;
77
80
  }
78
81
  var R = {
79
- arrow: M("›"),
82
+ arrow: fe("›"),
80
83
  bullet: L.muted("·"),
81
84
  dash: L.muted("─"),
82
85
  corner: L.muted("╰"),
83
86
  pipe: L.muted("│"),
84
87
  dot: L.muted("•"),
85
- spark: P("✦"),
86
- sparkSmall: N("✧"),
87
- bolt: P("⚡")
88
- }, ae = [
89
- P,
90
- P,
91
- N,
92
- M,
88
+ spark: F("✦"),
89
+ sparkSmall: pe("✧"),
90
+ bolt: F("⚡")
91
+ }, ve = [
93
92
  F,
93
+ F,
94
+ pe,
95
+ fe,
96
+ me,
94
97
  I,
95
- ne,
96
- ne
98
+ he,
99
+ he
97
100
  ];
98
- function oe(e) {
101
+ function ye(e) {
99
102
  let t = [...e], n = t.length;
100
103
  return t.map((e, t) => {
101
104
  if (e === " " || e === "\n") return e;
102
105
  let r = t / Math.max(n - 1, 1);
103
- return ae[Math.min(Math.floor(r * ae.length), ae.length - 1)](e);
106
+ return ve[Math.min(Math.floor(r * ve.length), ve.length - 1)](e);
104
107
  }).join("");
105
108
  }
106
- function se(e, t, n) {
109
+ function be(e, t, n) {
107
110
  return Math.round(e + (t - e) * n);
108
111
  }
109
- function ce(e, t) {
112
+ function xe(e, t) {
110
113
  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);
111
114
  return e.map((e, t) => [...e].map((e, s) => {
112
115
  if (e === " ") return e;
113
116
  let c = s / Math.max(a - 1, 1), l = t / o, u = Math.min((c + l * i) / (1 + i), 1);
114
- return `\x1b[38;2;${se(n[0], r[0], u)};${se(n[1], r[1], u)};${se(n[2], r[2], u)}m${e}\x1b[39m`;
117
+ return `\x1b[38;2;${be(n[0], r[0], u)};${be(n[1], r[1], u)};${be(n[2], r[2], u)}m${e}\x1b[39m`;
115
118
  }).join(""));
116
119
  }
117
120
  //#endregion
118
121
  //#region src/core/license.ts
119
- function le(e) {
120
- return `${A()}/packs/${e}`;
122
+ function Se(e) {
123
+ return `${P()}/packs/${e}`;
121
124
  }
122
125
  //#endregion
123
126
  //#region ../../node_modules/.pnpm/@hyper-fetch+core@8.1.1/node_modules/@hyper-fetch/core/dist/index.mjs
124
- var ue = Object.create, de = Object.defineProperty, fe = Object.getOwnPropertyDescriptor, pe = Object.getOwnPropertyNames, me = Object.getPrototypeOf, he = Object.prototype.hasOwnProperty, ge = (e, t) => () => (t || e((t = { exports: {} }).exports, t), t.exports), _e = (e, t, n, r) => {
125
- if (t && typeof t == "object" || typeof t == "function") for (var i = pe(t), a = 0, o = i.length, s; a < o; a++) s = i[a], !he.call(e, s) && s !== n && de(e, s, {
127
+ var Ce = Object.create, we = Object.defineProperty, Te = Object.getOwnPropertyDescriptor, Ee = Object.getOwnPropertyNames, De = Object.getPrototypeOf, Oe = Object.prototype.hasOwnProperty, ke = (e, t) => () => (t || e((t = { exports: {} }).exports, t), t.exports), Ae = (e, t, n, r) => {
128
+ if (t && typeof t == "object" || typeof t == "function") for (var i = Ee(t), a = 0, o = i.length, s; a < o; a++) s = i[a], !Oe.call(e, s) && s !== n && we(e, s, {
126
129
  get: ((e) => t[e]).bind(null, s),
127
- enumerable: !(r = fe(t, s)) || r.enumerable
130
+ enumerable: !(r = Te(t, s)) || r.enumerable
128
131
  });
129
132
  return e;
130
- }, ve = (e, t, n) => (n = e == null ? {} : ue(me(e)), _e(t || !e || !e.__esModule ? de(n, "default", {
133
+ }, je = (e, t, n) => (n = e == null ? {} : Ce(De(e)), Ae(t || !e || !e.__esModule ? we(n, "default", {
131
134
  value: e,
132
135
  enumerable: !0
133
- }) : n, e)), ye = (e) => `${e.queryKey}_${Date.now().toString(36)}_${Math.random().toString(36).substring(2)}`, be = /* @__PURE__ */ ve((/* @__PURE__ */ ge(((e, t) => {
136
+ }) : n, e)), Me = (e) => `${e.queryKey}_${Date.now().toString(36)}_${Math.random().toString(36).substring(2)}`, Ne = /* @__PURE__ */ je((/* @__PURE__ */ ke(((e, t) => {
134
137
  var n = typeof Reflect == "object" ? Reflect : null, r = n && typeof n.apply == "function" ? n.apply : function(e, t, n) {
135
138
  return Function.prototype.apply.call(e, t, n);
136
139
  }, i = n && typeof n.ownKeys == "function" ? n.ownKeys : Object.getOwnPropertySymbols ? function(e) {
@@ -305,7 +308,7 @@ var ue = Object.create, de = Object.defineProperty, fe = Object.getOwnPropertyDe
305
308
  });
306
309
  else throw TypeError("The \"emitter\" argument must be of type EventEmitter. Received type " + typeof e);
307
310
  }
308
- })))()), xe = (e) => `listen_${String(e)}`, Se = class extends be.default {
311
+ })))()), Pe = (e) => `listen_${String(e)}`, Fe = class extends Ne.default {
309
312
  emitCallbacks = [];
310
313
  constructor(e) {
311
314
  super(e);
@@ -317,23 +320,23 @@ var ue = Object.create, de = Object.defineProperty, fe = Object.getOwnPropertyDe
317
320
  onEmit = (e) => (this.emitCallbacks?.push(e), () => {
318
321
  this.emitCallbacks = this.emitCallbacks?.filter((t) => t !== e);
319
322
  });
320
- onListener = (e, t) => (super.on(xe(e), t), () => {
321
- super.off(xe(e), t);
323
+ onListener = (e, t) => (super.on(Pe(e), t), () => {
324
+ super.off(Pe(e), t);
322
325
  });
323
- on = (e, t) => (super.on(e, t), super.emit(xe(e), super.listeners(e).length), this);
324
- off = (e, t) => (super.off(e, t), super.emit(xe(e), super.listeners(e).length), this);
326
+ on = (e, t) => (super.on(e, t), super.emit(Pe(e), super.listeners(e).length), this);
327
+ off = (e, t) => (super.off(e, t), super.emit(Pe(e), super.listeners(e).length), this);
325
328
  addListener = this.on;
326
329
  removeListener = this.off;
327
- }, Ce = class {
328
- emitter = new Se();
329
- events = Oe(this.emitter);
330
+ }, Ie = class {
331
+ emitter = new Fe();
332
+ events = Ve(this.emitter);
330
333
  isBrowser;
331
334
  isOnline;
332
335
  isFocused;
333
336
  constructor(e) {
334
337
  this.options = e, this.emitter?.setMaxListeners(1e3);
335
338
  let { initiallyFocused: t = B.initiallyFocused, initiallyOnline: n = B.initiallyOnline } = this.options || B;
336
- this.setInitialFocus(t), this.setInitialOnline(n), this.isBrowser = Te();
339
+ this.setInitialFocus(t), this.setInitialOnline(n), this.isBrowser = Re();
337
340
  }
338
341
  initialize = () => {
339
342
  let { focusEvent: e = B.focusEvent, onlineEvent: t = B.onlineEvent } = this.options || B;
@@ -351,21 +354,21 @@ var ue = Object.create, de = Object.defineProperty, fe = Object.getOwnPropertyDe
351
354
  setOnline = (e) => {
352
355
  this.isOnline = e, e ? this.events.emitOnline() : this.events.emitOffline();
353
356
  };
354
- }, we = () => {
357
+ }, Le = () => {
355
358
  try {
356
359
  return !!(window && window.addEventListener);
357
360
  } catch {
358
361
  /* istanbul ignore next */
359
362
  return !1;
360
363
  }
361
- }, Te = () => {
364
+ }, Re = () => {
362
365
  try {
363
- return !!(we() && window.document && window.document.addEventListener);
366
+ return !!(Le() && window.document && window.document.addEventListener);
364
367
  } catch {
365
368
  /* istanbul ignore next */
366
369
  return !1;
367
370
  }
368
- }, Ee = (e, t, n) => we() ? (window.addEventListener(e, t, n), () => window.removeEventListener(e, t, n)) : () => null, De = (e, t, n) => Te() ? (window.document.addEventListener(e, t, n), () => window.document.removeEventListener(e, t, n)) : () => null, Oe = (e) => ({
371
+ }, ze = (e, t, n) => Le() ? (window.addEventListener(e, t, n), () => window.removeEventListener(e, t, n)) : () => null, Be = (e, t, n) => Re() ? (window.document.addEventListener(e, t, n), () => window.document.removeEventListener(e, t, n)) : () => null, Ve = (e) => ({
369
372
  emitFocus: () => {
370
373
  e.emit(z.FOCUS);
371
374
  },
@@ -388,14 +391,14 @@ var ue = Object.create, de = Object.defineProperty, fe = Object.getOwnPropertyDe
388
391
  initiallyFocused: !0,
389
392
  initiallyOnline: !0,
390
393
  focusEvent: (e) => {
391
- De("visibilitychange", () => e(!0)), Ee("focus", () => e(!0)), Ee("blur", () => e(!1));
394
+ Be("visibilitychange", () => e(!0)), ze("focus", () => e(!0)), ze("blur", () => e(!1));
392
395
  },
393
396
  onlineEvent: (e) => {
394
- Ee("online", () => e(!0)), Ee("offline", () => e(!1));
397
+ ze("online", () => e(!0)), ze("offline", () => e(!1));
395
398
  }
396
- }, ke = class {
397
- emitter = new Se();
398
- events = at(this.emitter);
399
+ }, He = class {
400
+ emitter = new Fe();
401
+ events = vt(this.emitter);
399
402
  constructor() {
400
403
  this.emitter?.setMaxListeners(1e3);
401
404
  }
@@ -432,71 +435,71 @@ var ue = Object.create, de = Object.defineProperty, fe = Object.getOwnPropertyDe
432
435
  });
433
436
  });
434
437
  };
435
- }, Ae = () => "loading-event-any", je = (e) => `${e}-loading-event`, Me = (e) => `${e}-loading-cache-event`, Ne = (e) => `${e}-loading-event-by-id`, Pe = () => "remove-event-any", Fe = (e) => `${e}-remove-event`, Ie = (e) => `${e}-remove-event-by-id`, Le = () => "request-abort-any", Re = (e) => `${e}-request-abort`, ze = (e) => `${e}-request-abort-by-id`, Be = () => "response-any", Ve = (e) => `${e}-response`, He = (e) => `${e}-response-by-id`, Ue = () => "request-start-any", We = (e) => `${e}-request-start`, Ge = (e) => `${e}-request-start-by-id`, Ke = () => "response-start-any", qe = (e) => `${e}-response-start`, Je = (e) => `${e}-response-start-by-id`, Ye = () => "request-progress-any", Xe = (e) => `${e}-request-progress`, Ze = (e) => `${e}-request-progress-by-id`, Qe = () => "response-progress-any", $e = (e) => `${e}-response-progress`, et = (e) => `${e}-response-progress-by-id`, tt = () => "request-deduplicated-any", nt = (e) => `${e}-query-request-deduplicated`, rt = (e) => `${e}-cache-request-deduplicated`, it = (e) => `${e}-request-deduplicated-by-id`, at = (e) => ({
438
+ }, Ue = () => "loading-event-any", We = (e) => `${e}-loading-event`, Ge = (e) => `${e}-loading-cache-event`, Ke = (e) => `${e}-loading-event-by-id`, qe = () => "remove-event-any", Je = (e) => `${e}-remove-event`, Ye = (e) => `${e}-remove-event-by-id`, Xe = () => "request-abort-any", Ze = (e) => `${e}-request-abort`, Qe = (e) => `${e}-request-abort-by-id`, $e = () => "response-any", et = (e) => `${e}-response`, tt = (e) => `${e}-response-by-id`, nt = () => "request-start-any", rt = (e) => `${e}-request-start`, it = (e) => `${e}-request-start-by-id`, at = () => "response-start-any", ot = (e) => `${e}-response-start`, st = (e) => `${e}-response-start-by-id`, ct = () => "request-progress-any", lt = (e) => `${e}-request-progress`, ut = (e) => `${e}-request-progress-by-id`, dt = () => "response-progress-any", ft = (e) => `${e}-response-progress`, pt = (e) => `${e}-response-progress-by-id`, mt = () => "request-deduplicated-any", ht = (e) => `${e}-query-request-deduplicated`, gt = (e) => `${e}-cache-request-deduplicated`, _t = (e) => `${e}-request-deduplicated-by-id`, vt = (e) => ({
436
439
  emitDeduplicated: (t, n = !1) => {
437
- e.emit(tt(), t, n), e.emit(it(t.requestId), t, n), e.emit(rt(t.request.cacheKey), t, n), e.emit(nt(t.request.queryKey), t, n);
440
+ e.emit(mt(), t, n), e.emit(_t(t.requestId), t, n), e.emit(gt(t.request.cacheKey), t, n), e.emit(ht(t.request.queryKey), t, n);
438
441
  },
439
442
  emitLoading: (t, n = !1) => {
440
- e.emit(Ae(), t, n), e.emit(Ne(t.requestId), t, n), e.emit(Me(t.request.cacheKey), t, n), e.emit(je(t.request.queryKey), t, n);
443
+ e.emit(Ue(), t, n), e.emit(Ke(t.requestId), t, n), e.emit(Ge(t.request.cacheKey), t, n), e.emit(We(t.request.queryKey), t, n);
441
444
  },
442
445
  emitRequestStart: (t, n = !1) => {
443
- e.emit(Ue(), t, n), e.emit(Ge(t.requestId), t, n), e.emit(We(t.request.queryKey), t, n);
446
+ e.emit(nt(), t, n), e.emit(it(t.requestId), t, n), e.emit(rt(t.request.queryKey), t, n);
444
447
  },
445
448
  emitResponseStart: (t, n = !1) => {
446
- e.emit(Ke(), t, n), e.emit(Je(t.requestId), t, n), e.emit(qe(t.request.queryKey), t, n);
449
+ e.emit(at(), t, n), e.emit(st(t.requestId), t, n), e.emit(ot(t.request.queryKey), t, n);
447
450
  },
448
451
  emitUploadProgress: (t, n = !1) => {
449
- e.emit(Ye(), t, n), e.emit(Ze(t.requestId), t, n), e.emit(Xe(t.request.queryKey), t, n);
452
+ e.emit(ct(), t, n), e.emit(ut(t.requestId), t, n), e.emit(lt(t.request.queryKey), t, n);
450
453
  },
451
454
  emitDownloadProgress: (t, n = !1) => {
452
- e.emit(Qe(), t, n), e.emit(et(t.requestId), t, n), e.emit($e(t.request.queryKey), t, n);
455
+ e.emit(dt(), t, n), e.emit(pt(t.requestId), t, n), e.emit(ft(t.request.queryKey), t, n);
453
456
  },
454
457
  emitResponse: (t, n = !1) => {
455
- e.emit(Be(), t, n), e.emit(He(t.requestId), t, n), e.emit(Ve(t.request.cacheKey), t, n);
458
+ e.emit($e(), t, n), e.emit(tt(t.requestId), t, n), e.emit(et(t.request.cacheKey), t, n);
456
459
  },
457
460
  emitAbort: (t, n = !1) => {
458
- e.emit(Le(), t, n), e.emit(ze(t.requestId), t, n), e.emit(Re(t.request.abortKey), t, n);
461
+ e.emit(Xe(), t, n), e.emit(Qe(t.requestId), t, n), e.emit(Ze(t.request.abortKey), t, n);
459
462
  },
460
463
  emitRemove: (t, n = !1) => {
461
- e.emit(Pe(), t, n), e.emit(Ie(t.requestId), t, n), e.emit(Fe(t.request.queryKey), t, n);
464
+ e.emit(qe(), t, n), e.emit(Ye(t.requestId), t, n), e.emit(Je(t.request.queryKey), t, n);
462
465
  },
463
- onDeduplicated: (t) => (e.on(tt(), t), () => e.removeListener(tt(), t)),
464
- onDeduplicatedByQueue: (t, n) => (e.on(nt(t), n), () => e.removeListener(nt(t), n)),
465
- onDeduplicatedByCache: (t, n) => (e.on(rt(t), n), () => e.removeListener(rt(t), n)),
466
- onDeduplicatedById: (t, n) => (e.on(it(t), n), () => e.removeListener(it(t), n)),
467
- onLoading: (t) => (e.on(Ae(), t), () => e.removeListener(Ae(), t)),
468
- onLoadingByQueue: (t, n) => (e.on(je(t), n), () => e.removeListener(je(t), n)),
469
- onLoadingByCache: (t, n) => (e.on(Me(t), n), () => e.removeListener(Me(t), n)),
470
- onLoadingById: (t, n) => (e.on(Ne(t), n), () => e.removeListener(Ne(t), n)),
471
- onRequestStart: (t) => (e.on(Ue(), t), () => e.removeListener(Ue(), t)),
472
- onRequestStartByQueue: (t, n) => (e.on(We(t), n), () => e.removeListener(We(t), n)),
473
- onRequestStartById: (t, n) => (e.on(Ge(t), n), () => e.removeListener(Ge(t), n)),
474
- onResponseStart: (t) => (e.on(Ke(), t), () => e.removeListener(Ke(), t)),
475
- onResponseStartByQueue: (t, n) => (e.on(qe(t), n), () => e.removeListener(qe(t), n)),
476
- onResponseStartById: (t, n) => (e.on(Je(t), n), () => e.removeListener(Je(t), n)),
477
- onUploadProgress: (t) => (e.on(Ye(), t), () => e.removeListener(Ye(), t)),
478
- onUploadProgressByQueue: (t, n) => (e.on(Xe(t), n), () => e.removeListener(Xe(t), n)),
479
- onUploadProgressById: (t, n) => (e.on(Ze(t), n), () => e.removeListener(Ze(t), n)),
480
- onDownloadProgress: (t) => (e.on(Qe(), t), () => e.removeListener(Qe(), t)),
481
- onDownloadProgressByQueue: (t, n) => (e.on($e(t), n), () => e.removeListener($e(t), n)),
482
- onDownloadProgressById: (t, n) => (e.on(et(t), n), () => e.removeListener(et(t), n)),
483
- onResponse: (t) => (e.on(Be(), t), () => e.removeListener(Be(), t)),
484
- onResponseByCache: (t, n) => (e.on(Ve(t), n), () => e.removeListener(Ve(t), n)),
485
- onResponseById: (t, n) => (e.on(He(t), n), () => e.removeListener(He(t), n)),
486
- onAbort: (t) => (e.on(Le(), t), () => e.removeListener(Le(), t)),
487
- onAbortByKey: (t, n) => (e.on(Re(t), n), () => e.removeListener(Re(t), n)),
488
- onAbortById: (t, n) => (e.on(ze(t), n), () => e.removeListener(ze(t), n)),
489
- onRemove: (t) => (e.on(Pe(), t), () => e.removeListener(Pe(), t)),
490
- onRemoveByQueue: (t, n) => (e.on(Fe(t), n), () => e.removeListener(Fe(t), n)),
491
- onRemoveById: (t, n) => (e.on(Ie(t), n), () => e.removeListener(Ie(t), n))
492
- }), ot = class {
466
+ onDeduplicated: (t) => (e.on(mt(), t), () => e.removeListener(mt(), t)),
467
+ onDeduplicatedByQueue: (t, n) => (e.on(ht(t), n), () => e.removeListener(ht(t), n)),
468
+ onDeduplicatedByCache: (t, n) => (e.on(gt(t), n), () => e.removeListener(gt(t), n)),
469
+ onDeduplicatedById: (t, n) => (e.on(_t(t), n), () => e.removeListener(_t(t), n)),
470
+ onLoading: (t) => (e.on(Ue(), t), () => e.removeListener(Ue(), t)),
471
+ onLoadingByQueue: (t, n) => (e.on(We(t), n), () => e.removeListener(We(t), n)),
472
+ onLoadingByCache: (t, n) => (e.on(Ge(t), n), () => e.removeListener(Ge(t), n)),
473
+ onLoadingById: (t, n) => (e.on(Ke(t), n), () => e.removeListener(Ke(t), n)),
474
+ onRequestStart: (t) => (e.on(nt(), t), () => e.removeListener(nt(), t)),
475
+ onRequestStartByQueue: (t, n) => (e.on(rt(t), n), () => e.removeListener(rt(t), n)),
476
+ onRequestStartById: (t, n) => (e.on(it(t), n), () => e.removeListener(it(t), n)),
477
+ onResponseStart: (t) => (e.on(at(), t), () => e.removeListener(at(), t)),
478
+ onResponseStartByQueue: (t, n) => (e.on(ot(t), n), () => e.removeListener(ot(t), n)),
479
+ onResponseStartById: (t, n) => (e.on(st(t), n), () => e.removeListener(st(t), n)),
480
+ onUploadProgress: (t) => (e.on(ct(), t), () => e.removeListener(ct(), t)),
481
+ onUploadProgressByQueue: (t, n) => (e.on(lt(t), n), () => e.removeListener(lt(t), n)),
482
+ onUploadProgressById: (t, n) => (e.on(ut(t), n), () => e.removeListener(ut(t), n)),
483
+ onDownloadProgress: (t) => (e.on(dt(), t), () => e.removeListener(dt(), t)),
484
+ onDownloadProgressByQueue: (t, n) => (e.on(ft(t), n), () => e.removeListener(ft(t), n)),
485
+ onDownloadProgressById: (t, n) => (e.on(pt(t), n), () => e.removeListener(pt(t), n)),
486
+ onResponse: (t) => (e.on($e(), t), () => e.removeListener($e(), t)),
487
+ onResponseByCache: (t, n) => (e.on(et(t), n), () => e.removeListener(et(t), n)),
488
+ onResponseById: (t, n) => (e.on(tt(t), n), () => e.removeListener(tt(t), n)),
489
+ onAbort: (t) => (e.on(Xe(), t), () => e.removeListener(Xe(), t)),
490
+ onAbortByKey: (t, n) => (e.on(Ze(t), n), () => e.removeListener(Ze(t), n)),
491
+ onAbortById: (t, n) => (e.on(Qe(t), n), () => e.removeListener(Qe(t), n)),
492
+ onRemove: (t) => (e.on(qe(), t), () => e.removeListener(qe(), t)),
493
+ onRemoveByQueue: (t, n) => (e.on(Je(t), n), () => e.removeListener(Je(t), n)),
494
+ onRemoveById: (t, n) => (e.on(Ye(t), n), () => e.removeListener(Ye(t), n))
495
+ }), yt = class {
493
496
  logger;
494
497
  level;
495
498
  modules;
496
- emitter = new be.default();
499
+ emitter = new Ne.default();
497
500
  client;
498
501
  constructor(e) {
499
- this.options = e, this.emitter?.setMaxListeners(1e3), this.logger = this.options?.logger || lt, this.level = this.options?.level || "warning", this.modules = this.options?.modules;
502
+ this.options = e, this.emitter?.setMaxListeners(1e3), this.logger = this.options?.logger || St, this.level = this.options?.level || "warning", this.modules = this.options?.modules;
500
503
  }
501
504
  setSeverity = (e) => {
502
505
  this.level = e;
@@ -527,58 +530,58 @@ var ue = Object.create, de = Object.defineProperty, fe = Object.getOwnPropertyDe
527
530
  })
528
531
  });
529
532
  log = (e) => {
530
- this.client.debug && (ut.indexOf(this.level) <= ut.indexOf(e.level) || this.modules && !this.modules.includes(e.module) || this.logger(e));
533
+ this.client.debug && (Ct.indexOf(this.level) <= Ct.indexOf(e.level) || this.modules && !this.modules.includes(e.module) || this.logger(e));
531
534
  };
532
- }, st = () => `${(/* @__PURE__ */ new Date()).toLocaleTimeString()}`, ct = (e) => e.type === "request" || e.type === "response" ? `${e.extra.request.endpoint}` : `[${e.module}]`, lt = (e) => {
533
- let t = ft[e.level], n = pt[e.level], r = `%c[${st()}]%c${e.title}%c${ct(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;`;
535
+ }, bt = () => `${(/* @__PURE__ */ new Date()).toLocaleTimeString()}`, xt = (e) => e.type === "request" || e.type === "response" ? `${e.extra.request.endpoint}` : `[${e.module}]`, St = (e) => {
536
+ let t = Tt[e.level], n = Et[e.level], r = `%c[${bt()}]%c${e.title}%c${xt(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;`;
534
537
  e.extra && Object.keys(e.extra)?.length ? (console.groupCollapsed(r, i, a, o), console.log(e.extra), console.groupEnd()) : console.log(r, t);
535
- }, ut = [
538
+ }, Ct = [
536
539
  "error",
537
540
  "warning",
538
541
  "info",
539
542
  "debug"
540
- ], dt = "padding:2px 5px;", ft = {
541
- error: `${dt};background:#db252520;`,
542
- warning: `${dt};background:#e1941e20;`,
543
- info: `${dt};background:#1e74e120;`,
544
- debug: `${dt};background:#00000020;`
545
- }, pt = {
543
+ ], wt = "padding:2px 5px;", Tt = {
544
+ error: `${wt};background:#db252520;`,
545
+ warning: `${wt};background:#e1941e20;`,
546
+ info: `${wt};background:#1e74e120;`,
547
+ debug: `${wt};background:#00000020;`
548
+ }, Et = {
546
549
  error: "color:#ff3737;",
547
550
  warning: "color:#ffc107;",
548
551
  info: "color:#34a8ff;",
549
552
  debug: "color:#cccccc;"
550
- }, mt = class extends Error {
553
+ }, Dt = class extends Error {
551
554
  constructor() {
552
555
  super("Request timeout"), this.name = "TimeoutError";
553
556
  }
554
- }, ht = class extends Error {
557
+ }, Ot = class extends Error {
555
558
  constructor() {
556
559
  super("Request aborted"), this.name = "AbortError";
557
560
  }
558
- }, gt = class extends Error {
561
+ }, kt = class extends Error {
559
562
  constructor() {
560
563
  super("Request deleted"), this.name = "DeletedError";
561
564
  }
562
- }, _t = class extends Error {
565
+ }, V = class extends Error {
563
566
  description;
564
567
  constructor(e) {
565
568
  super("Request processing error"), this.description = e, this.name = "RequestProcessingError";
566
569
  }
567
- }, vt = class extends Error {
570
+ }, At = class extends Error {
568
571
  description;
569
572
  constructor(e) {
570
573
  super("Unexpected error"), this.description = e, this.name = "UnexpectedError";
571
574
  }
572
- }, V = (e) => e === "timeout" ? new mt() : e === "abort" ? new ht() : e === "deleted" ? new gt() : e === "processing" ? new _t() : new vt(), yt = (e) => {
575
+ }, H = (e) => e === "timeout" ? new Dt() : e === "abort" ? new Ot() : e === "deleted" ? new kt() : e === "processing" ? new V() : new At(), jt = (e) => {
573
576
  try {
574
577
  return JSON.stringify(e);
575
578
  } catch {
576
579
  return "";
577
580
  }
578
- }, bt = (e) => {
579
- let t = we() && e.payload instanceof FormData, n = typeof e.payload == "object" && e.payload !== null, r = {};
581
+ }, Mt = (e) => {
582
+ let t = Le() && e.payload instanceof FormData, n = typeof e.payload == "object" && e.payload !== null, r = {};
580
583
  return !t && n && (r["Content-Type"] = "application/json"), Object.assign(r, e.headers), r;
581
- }, xt = (e) => we() && e instanceof FormData ? e : yt(e), St = [
584
+ }, Nt = (e) => Le() && e instanceof FormData ? e : jt(e), Pt = [
582
585
  "onBeforeSent",
583
586
  "onRequestStart",
584
587
  "onResponseStart",
@@ -587,7 +590,7 @@ var ue = Object.create, de = Object.defineProperty, fe = Object.getOwnPropertyDe
587
590
  "onResponse",
588
591
  "onRemove"
589
592
  ];
590
- function Ct(e) {
593
+ function Ft(e) {
591
594
  let t = {
592
595
  onBeforeSent: [],
593
596
  onRequestStart: [],
@@ -597,7 +600,7 @@ function Ct(e) {
597
600
  onResponse: [],
598
601
  onRemove: []
599
602
  };
600
- e && St.forEach((n) => {
603
+ e && Pt.forEach((n) => {
601
604
  t[n] = [...e[n]];
602
605
  });
603
606
  let n = (e) => (n) => (t[e].push(n), () => {
@@ -619,15 +622,15 @@ function Ct(e) {
619
622
  },
620
623
  __snapshot() {
621
624
  let e = {};
622
- return St.forEach((n) => {
625
+ return Pt.forEach((n) => {
623
626
  e[n] = [...t[n]];
624
627
  }), e;
625
628
  }
626
629
  };
627
630
  }
628
- var wt = /* @__PURE__ */ function(e) {
631
+ var It = /* @__PURE__ */ function(e) {
629
632
  return e.GET = "GET", e.POST = "POST", e.PUT = "PUT", e.PATCH = "PATCH", e.DELETE = "DELETE", e;
630
- }({}), H = (e, t) => t ? `${t}__${e}` : e, Tt = (e) => {
633
+ }({}), U = (e, t) => t ? `${t}__${e}` : e, Lt = (e) => {
631
634
  try {
632
635
  if (typeof e == "string") return e;
633
636
  if (e == null) return "";
@@ -637,13 +640,13 @@ var wt = /* @__PURE__ */ function(e) {
637
640
  } catch {
638
641
  return "";
639
642
  }
640
- }, Et = ({ loaded: e, total: t }) => !e || !t ? 0 : Number((e * 100 / t).toFixed(0)), Dt = (e, t, { total: n, loaded: r }) => {
643
+ }, Rt = ({ loaded: e, total: t }) => !e || !t ? 0 : Number((e * 100 / t).toFixed(0)), zt = (e, t, { total: n, loaded: r }) => {
641
644
  let i = r / (t - +e || 1), a = Math.max(n, r), o = a - r, s = i ? o / i : null;
642
645
  return {
643
646
  timeLeft: a === r ? 0 : s,
644
647
  sizeLeft: o
645
648
  };
646
- }, Ot = (e, t, n) => {
649
+ }, Bt = (e, t, n) => {
647
650
  let { total: r, loaded: i } = n;
648
651
  if (Number.isNaN(r) || Number.isNaN(i)) return {
649
652
  progress: 0,
@@ -653,23 +656,23 @@ var wt = /* @__PURE__ */ function(e) {
653
656
  loaded: 0,
654
657
  startTimestamp: +e
655
658
  };
656
- let { timeLeft: a, sizeLeft: o } = Dt(e, t, n);
659
+ let { timeLeft: a, sizeLeft: o } = zt(e, t, n);
657
660
  return {
658
- progress: Et(n),
661
+ progress: Rt(n),
659
662
  timeLeft: a,
660
663
  sizeLeft: o,
661
664
  total: r,
662
665
  loaded: i,
663
666
  startTimestamp: +e
664
667
  };
665
- }, kt = (e) => `${e.method}_${e.requestOptions.endpoint}_${e.cancelable}`, At = (e, t) => `${Tt(e.method)}_${t ? e.requestOptions.endpoint : Tt(e.endpoint)}_${t ? "" : Tt(e.queryParams)}`, jt = (e, t = "auto") => {
666
- let { fetchDispatcher: n, submitDispatcher: r } = e.client, i = e.method === wt.GET, a = t === "auto" && i || t === "fetch";
668
+ }, Vt = (e) => `${e.method}_${e.requestOptions.endpoint}_${e.cancelable}`, Ht = (e, t) => `${Lt(e.method)}_${t ? e.requestOptions.endpoint : Lt(e.endpoint)}_${t ? "" : Lt(e.queryParams)}`, Ut = (e, t = "auto") => {
669
+ let { fetchDispatcher: n, submitDispatcher: r } = e.client, i = e.method === It.GET, a = t === "auto" && i || t === "fetch";
667
670
  return [a ? n : r, a];
668
- }, Mt = async (e, t) => {
671
+ }, Wt = async (e, t) => {
669
672
  let n = e.unstable_responseMapper?.(t);
670
673
  return n instanceof Promise ? await n : n || t;
671
- }, Nt = async (e, t) => {
672
- let { client: n } = e, { requestManager: r } = n, [i] = jt(e, t?.dispatcherType), a;
674
+ }, Gt = async (e, t) => {
675
+ let { client: n } = e, { requestManager: r } = n, [i] = Ut(e, t?.dispatcherType), a;
673
676
  if (e.optimistic) try {
674
677
  a = await e.optimistic({
675
678
  request: e,
@@ -745,7 +748,7 @@ var wt = /* @__PURE__ */ function(e) {
745
748
  data: null,
746
749
  status: null,
747
750
  success: !1,
748
- error: V("deleted"),
751
+ error: H("deleted"),
749
752
  extra: e.client.adapter.defaultExtra,
750
753
  requestTimestamp: +/* @__PURE__ */ new Date(),
751
754
  responseTimestamp: +/* @__PURE__ */ new Date()
@@ -756,9 +759,9 @@ var wt = /* @__PURE__ */ function(e) {
756
759
  u(), d(), f(), p(), m(), h();
757
760
  }
758
761
  });
759
- }, Pt = /* @__PURE__ */ function(e) {
762
+ }, Kt = /* @__PURE__ */ function(e) {
760
763
  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;
761
- }({}), Ft = class e {
764
+ }({}), qt = class e {
762
765
  endpoint;
763
766
  headers;
764
767
  auth;
@@ -782,7 +785,7 @@ var wt = /* @__PURE__ */ function(e) {
782
785
  deduplicate;
783
786
  deduplicateTime;
784
787
  scope;
785
- $hooks = Ct();
788
+ $hooks = Ft();
786
789
  isMockerEnabled = !1;
787
790
  unstable_mock;
788
791
  unstable_payloadMapper;
@@ -799,7 +802,7 @@ var wt = /* @__PURE__ */ function(e) {
799
802
  updatedQueryKey;
800
803
  constructor(e, t, n) {
801
804
  this.client = e, this.requestOptions = t, this.initialRequestConfiguration = n;
802
- 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 = Pt.MIN * 5, cache: f = !0, staleTime: p = Pt.MIN * 5, queued: m = !1, offline: h = !0, abortKey: g, cacheKey: _, queryKey: v, deduplicate: y = !1, deduplicateTime: b = null } = {
805
+ 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 = Kt.MIN * 5, cache: f = !0, staleTime: p = Kt.MIN * 5, queued: m = !1, offline: h = !0, abortKey: g, cacheKey: _, queryKey: v, deduplicate: y = !1, deduplicateTime: b = null } = {
803
806
  ...this.client.adapter.unstable_getRequestDefaults?.(t),
804
807
  ...t
805
808
  };
@@ -909,11 +912,11 @@ var wt = /* @__PURE__ */ function(e) {
909
912
  payload: t?.payload || this.payload,
910
913
  params: t?.params || this.params
911
914
  }, r = new e(this.client, this.requestOptions, n);
912
- 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 = Ct(this.$hooks.__snapshot()), r;
915
+ 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 = Ft(this.$hooks.__snapshot()), r;
913
916
  }
914
917
  abort = () => {
915
918
  let { requestManager: e } = this.client;
916
- return e.abortByKey(H(this.abortKey, this.scope)), this.clone();
919
+ return e.abortByKey(U(this.abortKey, this.scope)), this.clone();
917
920
  };
918
921
  dehydrate = (e) => {
919
922
  let { response: t, override: n = !0 } = e || {};
@@ -928,7 +931,7 @@ var wt = /* @__PURE__ */ function(e) {
928
931
  cache: !0,
929
932
  response: t
930
933
  };
931
- let r = this.client.cache.get(H(this.cacheKey, this.scope));
934
+ let r = this.client.cache.get(U(this.cacheKey, this.scope));
932
935
  if (r) return {
933
936
  override: n,
934
937
  cacheTime: this.cacheTime,
@@ -950,7 +953,7 @@ var wt = /* @__PURE__ */ function(e) {
950
953
  };
951
954
  };
952
955
  read() {
953
- let e = this.client.cache.get(H(this.cacheKey, this.scope));
956
+ let e = this.client.cache.get(U(this.cacheKey, this.scope));
954
957
  if (e) return {
955
958
  data: e.data,
956
959
  error: e.error,
@@ -962,7 +965,7 @@ var wt = /* @__PURE__ */ function(e) {
962
965
  };
963
966
  }
964
967
  exec = async (e) => {
965
- let { adapter: t, requestManager: n } = this.client, r = this.clone(e), i = this.client.unstable_requestIdMapper(this), a = H(this.abortKey, this.scope);
968
+ let { adapter: t, requestManager: n } = this.client, r = this.clone(e), i = this.client.unstable_requestIdMapper(this), a = U(this.abortKey, this.scope);
966
969
  n.addAbortController(a, i);
967
970
  let o = await t.fetch(r, i);
968
971
  return n.removeAbortController(a, i), r.unstable_responseMapper ? r.unstable_responseMapper(o) : o;
@@ -972,17 +975,17 @@ var wt = /* @__PURE__ */ function(e) {
972
975
  ...e,
973
976
  cachePolicy: void 0
974
977
  };
975
- if (n === "network-only") return Nt(i, a);
978
+ if (n === "network-only") return Gt(i, a);
976
979
  let o = i.read();
977
- if (n === "cache-first") return o ? Mt(i, o) : Nt(i, a);
980
+ if (n === "cache-first") return o ? Wt(i, o) : Gt(i, a);
978
981
  if (o) {
979
- let e = await Mt(i, o);
980
- return Nt(i, a), e;
982
+ let e = await Wt(i, o);
983
+ return Gt(i, a), e;
981
984
  }
982
- return Nt(i, a);
985
+ return Gt(i, a);
983
986
  };
984
987
  static fromJSON = (t, n) => new e(t, n.requestOptions, n);
985
- }, It = async ({ request: e, requestId: t, resolve: n, onStartTime: r, internalErrorMapping: i }) => {
988
+ }, Jt = async ({ request: e, requestId: t, resolve: n, onStartTime: r, internalErrorMapping: i }) => {
986
989
  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;
987
990
  c.debug({
988
991
  title: "Running middleware callbacks",
@@ -992,7 +995,7 @@ var wt = /* @__PURE__ */ function(e) {
992
995
  requestId: t
993
996
  }
994
997
  }), d = await d.client.unstable_modifyRequest(d), d.auth && (d = await d.client.unstable_modifyAuth(d)), d.unstable_requestMapper && (d = await d.unstable_requestMapper(d, t));
995
- let { client: g, abortKey: _ } = d, v = H(_, d.scope), y = d.payload;
998
+ let { client: g, abortKey: _ } = d, v = U(_, d.scope), y = d.payload;
996
999
  d.unstable_payloadMapper ? y = await d.unstable_payloadMapper(d.payload) : s && (y = await s(y));
997
1000
  let b = d.options, x = +/* @__PURE__ */ new Date();
998
1001
  r(x);
@@ -1001,14 +1004,14 @@ var wt = /* @__PURE__ */ function(e) {
1001
1004
  let n = Number(t.total || 0), r = Number(t.loaded || 0);
1002
1005
  return Math.max(n, r, e);
1003
1006
  }, T = (e, n, r) => {
1004
- let i = Ot(new Date(e), new Date(n), r);
1007
+ let i = Bt(new Date(e), new Date(n), r);
1005
1008
  m !== 100 && (m = i.total, a.events.emitUploadProgress({
1006
1009
  ...i,
1007
1010
  requestId: t,
1008
1011
  request: d
1009
1012
  }));
1010
1013
  }, E = (e, n, r) => {
1011
- let i = Ot(new Date(e), new Date(n), r);
1014
+ let i = Bt(new Date(e), new Date(n), r);
1012
1015
  h !== 100 && (h = i.total, a.events.emitDownloadProgress({
1013
1016
  ...i,
1014
1017
  requestId: t,
@@ -1054,7 +1057,7 @@ var wt = /* @__PURE__ */ function(e) {
1054
1057
  total: f,
1055
1058
  loaded: f
1056
1059
  }), e;
1057
- }, A = (e) => {
1060
+ }, te = (e) => {
1058
1061
  u = +/* @__PURE__ */ new Date(), p = w(p, e);
1059
1062
  let n = {
1060
1063
  total: p,
@@ -1064,21 +1067,21 @@ var wt = /* @__PURE__ */ function(e) {
1064
1067
  requestId: t,
1065
1068
  request: d
1066
1069
  }), u;
1067
- }, te = (e) => {
1070
+ }, ne = (e) => {
1068
1071
  u ||= +/* @__PURE__ */ new Date();
1069
1072
  let t = +/* @__PURE__ */ new Date();
1070
1073
  return p = w(p, e), E(u, t, {
1071
1074
  total: e.total || p,
1072
1075
  loaded: e.loaded || 0
1073
1076
  }), t;
1074
- }, j = () => {
1077
+ }, re = () => {
1075
1078
  u ||= +/* @__PURE__ */ new Date();
1076
1079
  let e = +/* @__PURE__ */ new Date();
1077
1080
  return E(u, e, {
1078
1081
  total: p,
1079
1082
  loaded: p
1080
1083
  }), e;
1081
- }, M = async ({ data: e, error: r, status: i, extra: a }) => {
1084
+ }, A = async ({ data: e, error: r, status: i, extra: a }) => {
1082
1085
  let o = {
1083
1086
  data: e,
1084
1087
  error: r ?? null,
@@ -1103,50 +1106,50 @@ var wt = /* @__PURE__ */ function(e) {
1103
1106
  response: o
1104
1107
  }
1105
1108
  }), o;
1106
- }, N = Lt({
1109
+ }, j = Yt({
1107
1110
  request: d,
1108
1111
  requestId: t,
1109
1112
  startTime: x,
1110
1113
  logger: c,
1111
1114
  resolve: n
1112
- }), P = ({ status: e, extra: n }) => (c.error({
1115
+ }), ie = ({ status: e, extra: n }) => (c.error({
1113
1116
  title: "Abort error",
1114
1117
  type: "request",
1115
1118
  extra: {
1116
1119
  request: d,
1117
1120
  requestId: t
1118
1121
  }
1119
- }), N({
1120
- error: i(V("abort")),
1122
+ }), j({
1123
+ error: i(H("abort")),
1121
1124
  status: e,
1122
1125
  extra: n
1123
- })), F = ({ status: e, extra: n }) => (c.error({
1126
+ })), M = ({ status: e, extra: n }) => (c.error({
1124
1127
  title: "Timeout error",
1125
1128
  type: "request",
1126
1129
  extra: {
1127
1130
  request: d,
1128
1131
  requestId: t
1129
1132
  }
1130
- }), N({
1131
- error: V("timeout"),
1133
+ }), j({
1134
+ error: H("timeout"),
1132
1135
  status: e,
1133
1136
  extra: n
1134
- })), I = ({ status: e, extra: n }) => (c.error({
1137
+ })), ae = ({ status: e, extra: n }) => (c.error({
1135
1138
  title: "Unexpected error",
1136
1139
  type: "request",
1137
1140
  extra: {
1138
1141
  request: d,
1139
1142
  requestId: t
1140
1143
  }
1141
- }), N({
1142
- error: V(),
1144
+ }), j({
1145
+ error: H(),
1143
1146
  status: e,
1144
1147
  extra: n
1145
- })), ne = () => a.getAbortController(v, t), re = ({ status: e, extra: n, onAbort: r = () => {} }) => {
1146
- let i = ne();
1147
- if (!i) throw new _t("Controller is not found");
1148
+ })), oe = () => a.getAbortController(v, t), se = ({ status: e, extra: n, onAbort: r = () => {} }) => {
1149
+ let i = oe();
1150
+ if (!i) throw new V("Controller is not found");
1148
1151
  let o = () => {
1149
- P({
1152
+ ie({
1150
1153
  status: e,
1151
1154
  extra: n
1152
1155
  }), r(), a.events.emitAbort({
@@ -1166,36 +1169,36 @@ var wt = /* @__PURE__ */ function(e) {
1166
1169
  adapterOptions: b
1167
1170
  }
1168
1171
  });
1169
- let L = e.client.adapter.unstable_queryParamsMapper(d.queryParams), ie = e.client.adapter.unstable_endpointMapper(d.endpoint), R = e.client.adapter.unstable_headerMapper(d), { url: ae } = e.client;
1172
+ let ce = e.client.adapter.unstable_queryParamsMapper(d.queryParams), le = e.client.adapter.unstable_endpointMapper(d.endpoint), N = e.client.adapter.unstable_headerMapper(d), { url: P } = e.client;
1170
1173
  return {
1171
1174
  request: d,
1172
1175
  requestId: t,
1173
- url: ae,
1174
- endpoint: ie,
1175
- queryParams: L,
1176
+ url: P,
1177
+ endpoint: le,
1178
+ queryParams: ce,
1176
1179
  payload: y,
1177
- headers: R,
1180
+ headers: N,
1178
1181
  adapter: e.client.adapter,
1179
1182
  adapterOptions: b,
1180
- getAbortController: ne,
1183
+ getAbortController: oe,
1181
1184
  getRequestStartTimestamp: S,
1182
1185
  getResponseStartTimestamp: C,
1183
- createAbortListener: re,
1186
+ createAbortListener: se,
1184
1187
  onBeforeRequest: D,
1185
1188
  onRequestStart: O,
1186
1189
  onRequestProgress: ee,
1187
1190
  onRequestEnd: k,
1188
- onResponseStart: A,
1189
- onResponseProgress: te,
1190
- onResponseEnd: j,
1191
- onSuccess: M,
1192
- onAbortError: P,
1193
- onTimeoutError: F,
1194
- onUnexpectedError: I,
1195
- onError: N
1191
+ onResponseStart: te,
1192
+ onResponseProgress: ne,
1193
+ onResponseEnd: re,
1194
+ onSuccess: A,
1195
+ onAbortError: ie,
1196
+ onTimeoutError: M,
1197
+ onUnexpectedError: ae,
1198
+ onError: j
1196
1199
  };
1197
1200
  };
1198
- function Lt({ request: e, requestId: t, startTime: n, resolve: r, logger: i }) {
1201
+ function Yt({ request: e, requestId: t, startTime: n, resolve: r, logger: i }) {
1199
1202
  let { client: a } = e;
1200
1203
  return async ({ error: o, status: s, extra: c }) => {
1201
1204
  let l = {
@@ -1224,8 +1227,8 @@ function Lt({ request: e, requestId: t, startTime: n, resolve: r, logger: i }) {
1224
1227
  }), l;
1225
1228
  };
1226
1229
  }
1227
- var Rt = 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 }) => {
1228
- if (!e.unstable_mock) throw new _t("Mock should be defined when calling mocker");
1230
+ var Xt = 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 }) => {
1231
+ if (!e.unstable_mock) throw new V("Mock should be defined when calling mocker");
1229
1232
  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({
1230
1233
  request: e,
1231
1234
  requestId: t
@@ -1269,7 +1272,7 @@ var Rt = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1269
1272
  status: C,
1270
1273
  extra: T
1271
1274
  }), h || r();
1272
- }, zt = (e) => e, Bt = class {
1275
+ }, Zt = (e) => e, Qt = class {
1273
1276
  unstable_fetcher;
1274
1277
  name;
1275
1278
  defaultMethod;
@@ -1291,10 +1294,10 @@ var Rt = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1291
1294
  initialize = (e) => (this.logger = e.loggerManager.initialize(e, "Adapter"), this.initialized = !0, this.client = e, this.unstable_onInitializeCallback?.({ client: e }), this);
1292
1295
  onInitialize = (e) => (this.unstable_onInitializeCallback = e, this);
1293
1296
  unstable_internalErrorMapping = (e) => e;
1294
- unstable_headerMapper = bt;
1295
- unstable_payloadMapper = xt;
1296
- unstable_endpointMapper = zt;
1297
- unstable_queryParamsMapper = zt;
1297
+ unstable_headerMapper = Mt;
1298
+ unstable_payloadMapper = Nt;
1299
+ unstable_endpointMapper = Zt;
1300
+ unstable_queryParamsMapper = Zt;
1298
1301
  unstable_getAdapterDefaults;
1299
1302
  unstable_getRequestDefaults;
1300
1303
  unstable_devtoolsEndpointGetter = (e) => e;
@@ -1318,14 +1321,14 @@ var Rt = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1318
1321
  async fetch(e, t) {
1319
1322
  let n, r = async (r) => {
1320
1323
  try {
1321
- if (!this.initialized) throw new _t(`Adapter ${this.options.name} is not initialized`);
1322
- if (!this.unstable_fetcher) throw new _t(`Fetcher for ${this.options.name} adapter is not set`);
1324
+ if (!this.initialized) throw new V(`Adapter ${this.options.name} is not initialized`);
1325
+ if (!this.unstable_fetcher) throw new V(`Fetcher for ${this.options.name} adapter is not set`);
1323
1326
  this.client.triggerPlugins("onAdapterFetch", {
1324
1327
  adapter: this,
1325
1328
  request: e,
1326
1329
  requestId: t
1327
1330
  });
1328
- let i = await It({
1331
+ let i = await Jt({
1329
1332
  request: e,
1330
1333
  requestId: t,
1331
1334
  resolve: r,
@@ -1334,9 +1337,9 @@ var Rt = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1334
1337
  n = e;
1335
1338
  }
1336
1339
  });
1337
- return e.unstable_mock && e.isMockerEnabled && e.client.isMockerEnabled ? await Rt(i) : this.unstable_fetcher(i);
1340
+ return e.unstable_mock && e.isMockerEnabled && e.client.isMockerEnabled ? await Xt(i) : this.unstable_fetcher(i);
1338
1341
  } catch (i) {
1339
- return Lt({
1342
+ return Yt({
1340
1343
  request: e,
1341
1344
  requestId: t,
1342
1345
  startTime: n || Date.now(),
@@ -1353,66 +1356,66 @@ var Rt = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1353
1356
  r(e);
1354
1357
  });
1355
1358
  }
1356
- }, Vt = (e) => {
1359
+ }, $t = (e) => {
1357
1360
  try {
1358
1361
  return JSON.parse(e);
1359
1362
  } catch {
1360
1363
  return e;
1361
1364
  }
1362
- }, Ht = (e) => e ? Vt(e) : V(), Ut = (e) => (t) => {
1365
+ }, en = (e) => e ? $t(e) : H(), tn = (e) => (t) => {
1363
1366
  let { skipNull: n, skipEmptyString: r } = e;
1364
1367
  return !(r && t === void 0 || r && t === "" || n && t === null);
1365
- }, U = (e, { encode: t, strict: n }) => t && n ? encodeURIComponent(e).replace(/[!'()*]/g, (e) => `%${e.charCodeAt(0).toString(16).toUpperCase()}`) : t ? encodeURIComponent(e) : e, Wt = (e, t, n) => {
1366
- let r = !Ut(n)(t);
1367
- return !e || r ? "" : `${U(e, n)}=${U(t instanceof Date ? n.dateParser?.(t) || t.toISOString() : typeof t == "object" && !Array.isArray(t) ? n.objectParser?.(t) || JSON.stringify(t) : String(t), n)}`;
1368
- }, Gt = (e, t, n) => {
1368
+ }, W = (e, { encode: t, strict: n }) => t && n ? encodeURIComponent(e).replace(/[!'()*]/g, (e) => `%${e.charCodeAt(0).toString(16).toUpperCase()}`) : t ? encodeURIComponent(e) : e, nn = (e, t, n) => {
1369
+ let r = !tn(n)(t);
1370
+ return !e || r ? "" : `${W(e, n)}=${W(t instanceof Date ? n.dateParser?.(t) || t.toISOString() : typeof t == "object" && !Array.isArray(t) ? n.objectParser?.(t) || JSON.stringify(t) : String(t), n)}`;
1371
+ }, rn = (e, t, n) => {
1369
1372
  let { arrayFormat: r, arraySeparator: i } = n;
1370
- return t.filter(Ut(n)).reduce((t, a, o) => {
1373
+ return t.filter(tn(n)).reduce((t, a, o) => {
1371
1374
  switch (r) {
1372
1375
  case "index": {
1373
- let r = `${U(e, n)}[${U(String(o), n)}]=`;
1374
- t.push(`${r}${U(String(a), n)}`);
1376
+ let r = `${W(e, n)}[${W(String(o), n)}]=`;
1377
+ t.push(`${r}${W(String(a), n)}`);
1375
1378
  break;
1376
1379
  }
1377
1380
  case "bracket": {
1378
- let r = `${U(e, n)}[]=`;
1379
- t.push(`${r}${U(String(a), n)}`);
1381
+ let r = `${W(e, n)}[]=`;
1382
+ t.push(`${r}${W(String(a), n)}`);
1380
1383
  break;
1381
1384
  }
1382
1385
  case "comma": {
1383
- let r = !t.length && `${U(e, n)}=` || "";
1384
- return [[...t, `${r}${U(String(a), n)}`].join(",")];
1386
+ let r = !t.length && `${W(e, n)}=` || "";
1387
+ return [[...t, `${r}${W(String(a), n)}`].join(",")];
1385
1388
  }
1386
1389
  case "separator": {
1387
- let r = !t.length && `${U(e, n)}=` || "";
1388
- return [[...t, `${r}${U(String(a), n)}`].join(i || "|")];
1390
+ let r = !t.length && `${W(e, n)}=` || "";
1391
+ return [[...t, `${r}${W(String(a), n)}`].join(i || "|")];
1389
1392
  }
1390
1393
  case "bracket-separator": {
1391
- let r = !t.length && `${U(e, n)}[]=` || "";
1392
- return [[...t, `${r}${U(String(a), n)}`].join(i || "|")];
1394
+ let r = !t.length && `${W(e, n)}[]=` || "";
1395
+ return [[...t, `${r}${W(String(a), n)}`].join(i || "|")];
1393
1396
  }
1394
1397
  default: {
1395
- let r = `${U(e, n)}=`;
1396
- t.push(`${r}${U(String(a), n)}`);
1398
+ let r = `${W(e, n)}=`;
1399
+ t.push(`${r}${W(String(a), n)}`);
1397
1400
  }
1398
1401
  }
1399
1402
  return t;
1400
1403
  }, []).join("&");
1401
- }, Kt = (e, t = xn) => {
1404
+ }, an = (e, t = Nn) => {
1402
1405
  if (!e || !Object.keys(e).length) return "";
1403
1406
  if (typeof e == "string") return e[0] === "?" ? e : `?${e}`;
1404
- let n = Object.entries(e).map(([e, n]) => Array.isArray(n) ? Gt(e, n, t) : Wt(e, n, t)).filter(Boolean).join("&");
1407
+ let n = Object.entries(e).map(([e, n]) => Array.isArray(n) ? rn(e, n, t) : nn(e, n, t)).filter(Boolean).join("&");
1405
1408
  return n ? `?${n}` : "";
1406
- }, qt = Pt.SEC * 5, W = { headers: {} }, Jt = () => new Bt({
1409
+ }, on = Kt.SEC * 5, G = { headers: {} }, sn = () => new Qt({
1407
1410
  name: "http",
1408
- defaultMethod: wt.GET,
1409
- defaultExtra: W,
1411
+ defaultMethod: It.GET,
1412
+ defaultExtra: G,
1410
1413
  systemErrorStatus: 0,
1411
- systemErrorExtra: W
1412
- }).setQueryParamsMapper(Kt).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 }) => {
1413
- let { method: g, client: _, endpoint: v, queryParams: y } = e, b = y ? Kt(y) : "", x = `${_.url}${v}${b}`, S = l(), { timeout: C = qt, streaming: w = !1, ...T } = t || {}, E = !1, D, O = c({
1414
+ systemErrorExtra: G
1415
+ }).setQueryParamsMapper(an).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 }) => {
1416
+ let { method: g, client: _, endpoint: v, queryParams: y } = e, b = y ? an(y) : "", x = `${_.url}${v}${b}`, S = l(), { timeout: C = on, streaming: w = !1, ...T } = t || {}, E = !1, D, O = c({
1414
1417
  status: 0,
1415
- extra: W
1418
+ extra: G
1416
1419
  });
1417
1420
  C > 0 && S && (D = setTimeout(() => {
1418
1421
  E = !0, O(), S.abort();
@@ -1444,7 +1447,7 @@ var Rt = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1444
1447
  status: l,
1445
1448
  extra: c
1446
1449
  }) : i({
1447
- error: Ht(await t.text()),
1450
+ error: en(await t.text()),
1448
1451
  status: l,
1449
1452
  extra: c
1450
1453
  });
@@ -1465,11 +1468,11 @@ var Rt = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1465
1468
  e = new TextDecoder().decode(o);
1466
1469
  } else e = await t.text();
1467
1470
  a(), O(), t.ok ? h({
1468
- data: Vt(e),
1471
+ data: $t(e),
1469
1472
  status: l,
1470
1473
  extra: c
1471
1474
  }) : i({
1472
- error: Ht(e),
1475
+ error: en(e),
1473
1476
  status: l,
1474
1477
  extra: c
1475
1478
  });
@@ -1478,18 +1481,18 @@ var Rt = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1478
1481
  if (D && clearTimeout(D), O(), S?.signal?.aborted) {
1479
1482
  E && o({
1480
1483
  status: 0,
1481
- extra: W
1484
+ extra: G
1482
1485
  });
1483
1486
  return;
1484
1487
  }
1485
1488
  i({
1486
1489
  error: e,
1487
1490
  status: 0,
1488
- extra: W
1491
+ extra: G
1489
1492
  });
1490
1493
  }
1491
- }), Yt = () => Jt(), Xt = class {
1492
- emitter = new Se();
1494
+ }), cn = () => sn(), ln = class {
1495
+ emitter = new Fe();
1493
1496
  events;
1494
1497
  storage;
1495
1498
  lazyStorage;
@@ -1500,7 +1503,7 @@ var Rt = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1500
1503
  constructor(e) {
1501
1504
  this.options = e;
1502
1505
  let { storage: t = /* @__PURE__ */ new Map(), lazyStorage: n, version: r = "0.0.1" } = e ?? {};
1503
- this.emitter?.setMaxListeners(1e3), this.events = an(this.emitter), this.storage = t, this.version = r, this.lazyStorage = n;
1506
+ this.emitter?.setMaxListeners(1e3), this.events = _n(this.emitter), this.storage = t, this.version = r, this.lazyStorage = n;
1504
1507
  }
1505
1508
  initialize = (e) => (this.client = e, this.logger = e.loggerManager.initialize(e, "Cache"), e.appManager.events.onOnline(() => {
1506
1509
  [...this.storage.keys()].forEach(this.scheduleGarbageCollector);
@@ -1514,7 +1517,7 @@ var Rt = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1514
1517
  response: t
1515
1518
  }
1516
1519
  });
1517
- let { cacheKey: n, cache: r, staleTime: i, cacheTime: a, scope: o } = e, s = H(n, o), c = this.storage.get(s), l = typeof t == "function" ? t(c || null) : t, u = Zt(c, l), d = {
1520
+ let { cacheKey: n, cache: r, staleTime: i, cacheTime: a, scope: o } = e, s = U(n, o), c = this.storage.get(s), l = typeof t == "function" ? t(c || null) : t, u = un(c, l), d = {
1518
1521
  ...u,
1519
1522
  scope: o,
1520
1523
  staleTime: i,
@@ -1560,7 +1563,7 @@ var Rt = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1560
1563
  partialResponse: t
1561
1564
  }
1562
1565
  });
1563
- let { cacheKey: n, scope: r } = e, i = H(n, r), a = this.storage.get(i), o = typeof t == "function" ? t(a || null) : t;
1566
+ let { cacheKey: n, scope: r } = e, i = U(n, r), a = this.storage.get(i), o = typeof t == "function" ? t(a || null) : t;
1564
1567
  a && this.set(e, {
1565
1568
  ...a,
1566
1569
  ...o
@@ -1598,7 +1601,7 @@ var Rt = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1598
1601
  cacheKey: t
1599
1602
  }), this.events.emitInvalidation(t);
1600
1603
  };
1601
- e instanceof Ft ? n(H(e.cacheKey, e.scope), e.cacheKey) : typeof e == "string" ? n(e) : t.length && t.forEach((t) => {
1604
+ e instanceof qt ? n(U(e.cacheKey, e.scope), e.cacheKey) : typeof e == "string" ? n(e) : t.length && t.forEach((t) => {
1602
1605
  e.test(t) && n(t);
1603
1606
  });
1604
1607
  };
@@ -1653,49 +1656,49 @@ var Rt = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1653
1656
  clear = async () => {
1654
1657
  this.garbageCollectors.forEach((e) => clearTimeout(e)), this.storage.clear();
1655
1658
  };
1656
- }, Zt = (e, t) => {
1659
+ }, un = (e, t) => {
1657
1660
  let { data: n, success: r } = t, i = !r && e ? e.data : null, a = n || i;
1658
1661
  return {
1659
1662
  ...t,
1660
1663
  data: a
1661
1664
  };
1662
- }, Qt = () => "invalidate", $t = (e) => `${e}_invalidate`, en = () => "delete", tn = (e) => `${e}_delete`, nn = (e) => `${e}_cache`, rn = () => "cache", an = (e) => ({
1665
+ }, dn = () => "invalidate", fn = (e) => `${e}_invalidate`, pn = () => "delete", mn = (e) => `${e}_delete`, hn = (e) => `${e}_cache`, gn = () => "cache", _n = (e) => ({
1663
1666
  emitCacheData: (t, n = !1) => {
1664
- e.emit(rn(), t, n), e.emit(nn(t.cacheKey), t, n);
1667
+ e.emit(gn(), t, n), e.emit(hn(t.cacheKey), t, n);
1665
1668
  },
1666
1669
  emitInvalidation: (t, n = !1) => {
1667
- e.emit(Qt(), t, n), e.emit($t(t), n);
1670
+ e.emit(dn(), t, n), e.emit(fn(t), n);
1668
1671
  },
1669
1672
  emitDelete: (t, n = !1) => {
1670
- e.emit(en(), t, n), e.emit(tn(t), n);
1673
+ e.emit(pn(), t, n), e.emit(mn(t), n);
1671
1674
  },
1672
- onData: (t) => (e.on(rn(), t), () => e.removeListener(rn(), t)),
1673
- onDataByKey: (t, n) => (e.on(nn(t), n), () => e.removeListener(nn(t), n)),
1674
- onInvalidate: (t) => (e.on(Qt(), t), () => e.removeListener(Qt(), t)),
1675
- onInvalidateByKey: (t, n) => (e.on($t(t), n), () => e.removeListener($t(t), n)),
1676
- onDelete: (t) => (e.on(en(), t), () => e.removeListener(en(), t)),
1677
- onDeleteByKey: (t, n) => (e.on(tn(t), n), () => e.removeListener(tn(t), n))
1678
- }), G = /* @__PURE__ */ function(e) {
1675
+ onData: (t) => (e.on(gn(), t), () => e.removeListener(gn(), t)),
1676
+ onDataByKey: (t, n) => (e.on(hn(t), n), () => e.removeListener(hn(t), n)),
1677
+ onInvalidate: (t) => (e.on(dn(), t), () => e.removeListener(dn(), t)),
1678
+ onInvalidateByKey: (t, n) => (e.on(fn(t), n), () => e.removeListener(fn(t), n)),
1679
+ onDelete: (t) => (e.on(pn(), t), () => e.removeListener(pn(), t)),
1680
+ onDeleteByKey: (t, n) => (e.on(mn(t), n), () => e.removeListener(mn(t), n))
1681
+ }), K = /* @__PURE__ */ function(e) {
1679
1682
  return e.ONE_BY_ONE = "one-by-one", e.ALL_AT_ONCE = "all-at-once", e.PREVIOUS_CANCELED = "previous-canceled", e.DEDUPLICATED = "deduplicated", e;
1680
- }({}), on = (e) => ({
1683
+ }({}), vn = (e) => ({
1681
1684
  emitDrained: (t, n) => {
1682
- e.emit(cn(), t, n), e.emit(ln(t.queryKey), t, n);
1685
+ e.emit(bn(), t, n), e.emit(xn(t.queryKey), t, n);
1683
1686
  },
1684
1687
  emitQueueStatusChanged: (t, n) => {
1685
- e.emit(un(), t, n), e.emit(dn(t.queryKey), t, n);
1688
+ e.emit(Sn(), t, n), e.emit(Cn(t.queryKey), t, n);
1686
1689
  },
1687
1690
  emitQueueChanged: (t, n) => {
1688
- e.emit(fn(), t, n), e.emit(pn(t.queryKey), t, n);
1691
+ e.emit(wn(), t, n), e.emit(Tn(t.queryKey), t, n);
1689
1692
  },
1690
- onDrained: (t) => (e.on(cn(), t), () => e.removeListener(cn(), t)),
1691
- onDrainedByKey: (t, n) => (e.on(ln(t), n), () => e.removeListener(ln(t), n)),
1692
- onQueueStatusChange: (t) => (e.on(un(), t), () => e.removeListener(un(), t)),
1693
- onQueueStatusChangeByKey: (t, n) => (e.on(dn(t), n), () => e.removeListener(dn(t), n)),
1694
- onQueueChange: (t) => (e.on(fn(), t), () => e.removeListener(fn(), t)),
1695
- onQueueChangeByKey: (t, n) => (e.on(pn(t), n), () => e.removeListener(pn(t), n))
1696
- }), sn = class {
1697
- emitter = new Se();
1698
- events = on(this.emitter);
1693
+ onDrained: (t) => (e.on(bn(), t), () => e.removeListener(bn(), t)),
1694
+ onDrainedByKey: (t, n) => (e.on(xn(t), n), () => e.removeListener(xn(t), n)),
1695
+ onQueueStatusChange: (t) => (e.on(Sn(), t), () => e.removeListener(Sn(), t)),
1696
+ onQueueStatusChangeByKey: (t, n) => (e.on(Cn(t), n), () => e.removeListener(Cn(t), n)),
1697
+ onQueueChange: (t) => (e.on(wn(), t), () => e.removeListener(wn(), t)),
1698
+ onQueueChangeByKey: (t, n) => (e.on(Tn(t), n), () => e.removeListener(Tn(t), n))
1699
+ }), yn = class {
1700
+ emitter = new Fe();
1701
+ events = vn(this.emitter);
1699
1702
  storage = /* @__PURE__ */ new Map();
1700
1703
  requestCount = /* @__PURE__ */ new Map();
1701
1704
  runningRequests = /* @__PURE__ */ new Map();
@@ -1704,7 +1707,7 @@ var Rt = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1704
1707
  constructor(e) {
1705
1708
  this.options = e, this.emitter?.setMaxListeners(1e3), this.options?.storage && (this.storage = this.options.storage);
1706
1709
  }
1707
- isRequestJSON = (e) => !(e instanceof Ft);
1710
+ isRequestJSON = (e) => !(e instanceof qt);
1708
1711
  initialize = (e) => (this.client = e, this.logger = e.loggerManager.initialize(e, "Dispatcher"), this.client.appManager.events.onOnline(() => {
1709
1712
  this.flush();
1710
1713
  }), this);
@@ -1828,14 +1831,14 @@ var Rt = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1828
1831
  hasRunningRequest = (e, t) => !!this.getRunningRequests(e).find((e) => e.requestId === t);
1829
1832
  cancelRunningRequests = (e) => {
1830
1833
  this.runningRequests.get(e)?.forEach((e) => {
1831
- let t = H(e.request.abortKey, e.request.scope);
1834
+ let t = U(e.request.abortKey, e.request.scope);
1832
1835
  this.client.requestManager.abortByRequestId(t, e.requestId);
1833
1836
  }), this.deleteRunningRequests(e);
1834
1837
  };
1835
1838
  cancelRunningRequest = (e, t) => {
1836
1839
  let n = this.getRunningRequests(e).filter((e) => {
1837
1840
  if (e.requestId === t) {
1838
- let t = H(e.request.abortKey, e.request.scope);
1841
+ let t = U(e.request.abortKey, e.request.scope);
1839
1842
  return this.client.requestManager.abortByRequestId(t, e.requestId), !1;
1840
1843
  }
1841
1844
  return !0;
@@ -1863,7 +1866,7 @@ var Rt = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1863
1866
  resolved: !1
1864
1867
  });
1865
1868
  add = (e) => {
1866
- let t = H(e.queryKey, e.scope), n = this.createStorageItem(e), { requestId: r } = n, [i] = this.getQueue(t).requests.slice(-1), a = gn(e, i);
1869
+ let t = U(e.queryKey, e.scope), n = this.createStorageItem(e), { requestId: r } = n, [i] = this.getQueue(t).requests.slice(-1), a = On(e, i);
1867
1870
  switch (this.logger.debug({
1868
1871
  title: "Adding request to queue",
1869
1872
  type: "system",
@@ -1873,9 +1876,9 @@ var Rt = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1873
1876
  requestId: r
1874
1877
  }
1875
1878
  }), a) {
1876
- case G.ONE_BY_ONE: return this.addQueueItem(t, n), this.flushQueue(t), r;
1877
- case G.PREVIOUS_CANCELED: return this.cancelRunningRequests(t), this.clearQueue(t), this.addQueueItem(t, n), this.flushQueue(t), r;
1878
- case G.DEDUPLICATED: return this.client.requestManager.events.emitDeduplicated({
1879
+ case K.ONE_BY_ONE: return this.addQueueItem(t, n), this.flushQueue(t), r;
1880
+ case K.PREVIOUS_CANCELED: return this.cancelRunningRequests(t), this.clearQueue(t), this.addQueueItem(t, n), this.flushQueue(t), r;
1881
+ case K.DEDUPLICATED: return this.client.requestManager.events.emitDeduplicated({
1879
1882
  request: i.request,
1880
1883
  requestId: r,
1881
1884
  deduplicatedRequest: e
@@ -1917,7 +1920,7 @@ var Rt = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1917
1920
  requestId: n
1918
1921
  }
1919
1922
  });
1920
- let { retry: r, retryTime: i, queryKey: a, abortKey: o, offline: s, scope: c } = t, l = H(a, c), u = H(o, c), { adapter: d, requestManager: f, cache: p, appManager: m } = this.client, h = mn(e.retries, r), g = !m.isOnline && s, _ = this.hasRunningRequest(l, n), v = e.stopped;
1923
+ let { retry: r, retryTime: i, queryKey: a, abortKey: o, offline: s, scope: c } = t, l = U(a, c), u = U(o, c), { adapter: d, requestManager: f, cache: p, appManager: m } = this.client, h = En(e.retries, r), g = !m.isOnline && s, _ = this.hasRunningRequest(l, n), v = e.stopped;
1921
1924
  if (g || _ || v) return this.logger.warning({
1922
1925
  title: "Unable to perform request",
1923
1926
  type: "system",
@@ -1937,7 +1940,7 @@ var Rt = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
1937
1940
  }), this.incrementQueueRequestCount(l), f.addAbortController(u, n);
1938
1941
  let b = await d.fetch(t, n);
1939
1942
  e.resolved = !0, f.removeAbortController(u, n);
1940
- let x = !m.isOnline, S = V("abort").message === b.error?.message, C = !this.hasRunningRequest(l, n) || S;
1943
+ let x = !m.isOnline, S = H("abort").message === b.error?.message, C = !this.hasRunningRequest(l, n) || S;
1941
1944
  this.deleteRunningRequest(l, n);
1942
1945
  let w = b.success || !h || !t.retryOnError || t.retryOnError(b), T = !b.success && h && w && !C && !x, E = {
1943
1946
  isCanceled: C,
@@ -2051,26 +2054,26 @@ var Rt = async ({ request: e, requestId: t, onError: n, onResponseEnd: r, onTime
2051
2054
  }
2052
2055
  }), this.delete(l, n, u));
2053
2056
  };
2054
- }, cn = () => "drained-event", ln = (e) => `${e}-drained-event`, un = () => "status-event", dn = (e) => `${e}-status-event`, fn = () => "change-event", pn = (e) => `${e}-change-event`, mn = (e, t) => !!(t && e < t), hn = (e, t) => e.deduplicateTime ? +/* @__PURE__ */ new Date() - t.timestamp <= e.deduplicateTime : !0, gn = (e, t) => {
2055
- let { queued: n, cancelable: r, deduplicate: i } = e, a = t ? hn(e, t) : !1;
2056
- return n ? G.ONE_BY_ONE : r ? G.PREVIOUS_CANCELED : a && i ? G.DEDUPLICATED : G.ALL_AT_ONCE;
2057
+ }, bn = () => "drained-event", xn = (e) => `${e}-drained-event`, Sn = () => "status-event", Cn = (e) => `${e}-status-event`, wn = () => "change-event", Tn = (e) => `${e}-change-event`, En = (e, t) => !!(t && e < t), Dn = (e, t) => e.deduplicateTime ? +/* @__PURE__ */ new Date() - t.timestamp <= e.deduplicateTime : !0, On = (e, t) => {
2058
+ let { queued: n, cancelable: r, deduplicate: i } = e, a = t ? Dn(e, t) : !1;
2059
+ return n ? K.ONE_BY_ONE : r ? K.PREVIOUS_CANCELED : a && i ? K.DEDUPLICATED : K.ALL_AT_ONCE;
2057
2060
  };
2058
- function _n(e) {
2061
+ function kn(e) {
2059
2062
  return e === "client" || e === "server" ? e : typeof window < "u" && typeof document < "u" ? "client" : "server";
2060
2063
  }
2061
- var vn = async (e, t) => {
2064
+ var An = async (e, t) => {
2062
2065
  let n = t;
2063
2066
  if (!t.requestOptions.disableRequestInterceptors) {
2064
2067
  for (let r of e) if (n = await r(t), !n) throw Error("Request modifier must return request");
2065
2068
  }
2066
2069
  return n;
2067
- }, yn = async (e, t, n) => {
2070
+ }, jn = async (e, t, n) => {
2068
2071
  let r = t;
2069
2072
  if (!n.requestOptions.disableResponseInterceptors) {
2070
2073
  for (let i of e) if (r = await i(t, n), !r) throw Error("Response modifier must return data");
2071
2074
  }
2072
2075
  return r;
2073
- }, bn = class {
2076
+ }, Mn = class {
2074
2077
  url;
2075
2078
  mode;
2076
2079
  debug;
@@ -2079,8 +2082,8 @@ var vn = async (e, t) => {
2079
2082
  unstable_onResponseCallbacks = [];
2080
2083
  unstable_onAuthCallbacks = [];
2081
2084
  unstable_onRequestCallbacks = [];
2082
- loggerManager = new ot();
2083
- requestManager = new ke();
2085
+ loggerManager = new yt();
2086
+ requestManager = new He();
2084
2087
  appManager;
2085
2088
  adapter;
2086
2089
  cache;
@@ -2088,15 +2091,15 @@ var vn = async (e, t) => {
2088
2091
  submitDispatcher;
2089
2092
  isMockerEnabled = !0;
2090
2093
  plugins = [];
2091
- unstable_abortKeyMapper = kt;
2092
- unstable_cacheKeyMapper = At;
2093
- unstable_queryKeyMapper = At;
2094
- unstable_requestIdMapper = ye;
2094
+ unstable_abortKeyMapper = Vt;
2095
+ unstable_cacheKeyMapper = Ht;
2096
+ unstable_queryKeyMapper = Ht;
2097
+ unstable_requestIdMapper = Me;
2095
2098
  logger = this.loggerManager.initialize(this, "Client");
2096
2099
  constructor(e) {
2097
2100
  this.options = e;
2098
2101
  let { url: t, appManager: n, cache: r, fetchDispatcher: i, submitDispatcher: a, mode: o } = this.options;
2099
- this.url = t, this.mode = _n(o), this.adapter = Yt(), this.appManager = n?.() || new Ce(), this.cache = r?.() || new Xt(), this.fetchDispatcher = i?.() || new sn(), this.submitDispatcher = a?.() || new sn(), this.adapter.initialize(this), this.appManager.initialize(), this.cache.initialize(this), this.fetchDispatcher.initialize(this), this.submitDispatcher.initialize(this);
2102
+ this.url = t, this.mode = kn(o), this.adapter = cn(), this.appManager = n?.() || new Ie(), this.cache = r?.() || new ln(), this.fetchDispatcher = i?.() || new yn(), this.submitDispatcher = a?.() || new yn(), this.adapter.initialize(this), this.appManager.initialize(), this.cache.initialize(this), this.fetchDispatcher.initialize(this), this.submitDispatcher.initialize(this);
2100
2103
  }
2101
2104
  setDebug = (e) => (this.debug = e, this);
2102
2105
  setLogLevel = (e) => (this.loggerManager.setSeverity(e), this);
@@ -2125,15 +2128,15 @@ var vn = async (e, t) => {
2125
2128
  setCacheKeyMapper = (e) => (this.unstable_cacheKeyMapper = e, this);
2126
2129
  setQueryKeyMapper = (e) => (this.unstable_queryKeyMapper = e, this);
2127
2130
  setRequestIdMapper = (e) => (this.unstable_requestIdMapper = e, this);
2128
- unstable_modifyAuth = async (e) => vn(this.unstable_onAuthCallbacks, e);
2129
- unstable_modifyRequest = async (e) => vn(this.unstable_onRequestCallbacks, e);
2130
- unstable_modifyErrorResponse = async (e, t) => yn(this.unstable_onErrorCallbacks, e, t);
2131
- unstable_modifySuccessResponse = async (e, t) => yn(this.unstable_onSuccessCallbacks, e, t);
2132
- unstable_modifyResponse = async (e, t) => yn(this.unstable_onResponseCallbacks, e, t);
2133
- fromJSON = (e) => Ft.fromJSON(this, e);
2131
+ unstable_modifyAuth = async (e) => An(this.unstable_onAuthCallbacks, e);
2132
+ unstable_modifyRequest = async (e) => An(this.unstable_onRequestCallbacks, e);
2133
+ unstable_modifyErrorResponse = async (e, t) => jn(this.unstable_onErrorCallbacks, e, t);
2134
+ unstable_modifySuccessResponse = async (e, t) => jn(this.unstable_onSuccessCallbacks, e, t);
2135
+ unstable_modifyResponse = async (e, t) => jn(this.unstable_onResponseCallbacks, e, t);
2136
+ fromJSON = (e) => qt.fromJSON(this, e);
2134
2137
  clear = () => {
2135
2138
  let { appManager: e, cache: t, fetchDispatcher: n, submitDispatcher: r } = this.options;
2136
- 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 Xt(), this.appManager = e?.() || new Ce(), this.fetchDispatcher = n?.() || new sn(), this.submitDispatcher = r?.() || new sn(), this.appManager.initialize(), this.cache.initialize(this), this.fetchDispatcher.initialize(this), this.submitDispatcher.initialize(this);
2139
+ 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 ln(), this.appManager = e?.() || new Ie(), this.fetchDispatcher = n?.() || new yn(), this.submitDispatcher = r?.() || new yn(), this.appManager.initialize(), this.cache.initialize(this), this.fetchDispatcher.initialize(this), this.submitDispatcher.initialize(this);
2137
2140
  };
2138
2141
  hydrate = (e, t) => {
2139
2142
  e?.forEach((e) => {
@@ -2150,8 +2153,8 @@ var vn = async (e, t) => {
2150
2153
  ...a,
2151
2154
  ...t
2152
2155
  };
2153
- if (!s.override && this.cache.get(H(n, r))) return;
2154
- let c = Vt(i);
2156
+ if (!s.override && this.cache.get(U(n, r))) return;
2157
+ let c = $t(i);
2155
2158
  this.cache.set({
2156
2159
  ...s,
2157
2160
  cacheKey: n,
@@ -2163,10 +2166,10 @@ var vn = async (e, t) => {
2163
2166
  let t = this.adapter.unstable_endpointMapper(e.endpoint), n = {
2164
2167
  ...e,
2165
2168
  endpoint: String(t)
2166
- }, r = new Ft(this, n);
2169
+ }, r = new qt(this, n);
2167
2170
  return this.plugins.forEach((e) => e.trigger("onRequestCreate", { request: r })), r;
2168
2171
  };
2169
- }, xn = {
2172
+ }, Nn = {
2170
2173
  strict: !0,
2171
2174
  encode: !0,
2172
2175
  arrayFormat: "bracket",
@@ -2175,101 +2178,101 @@ var vn = async (e, t) => {
2175
2178
  skipNull: !0,
2176
2179
  skipEmptyString: !0
2177
2180
  };
2178
- function Sn(e) {
2179
- return new bn(e);
2181
+ function Pn(e) {
2182
+ return new Mn(e);
2180
2183
  }
2181
2184
  //#endregion
2182
2185
  //#region src/core/client.ts
2183
- var K = Sn({ url: k() });
2186
+ var q = Pn({ url: N() });
2184
2187
  //#endregion
2185
2188
  //#region src/core/auth-api.ts
2186
- async function Cn(e) {
2187
- let { data: t, success: n } = await K.createRequest()({
2189
+ async function Fn(e) {
2190
+ let { data: t, success: n } = await q.createRequest()({
2188
2191
  endpoint: "/auth/cli/whoami",
2189
2192
  method: "GET"
2190
2193
  }).setHeaders({ Authorization: `Bearer ${e}` }).send();
2191
2194
  return !n || !t ? null : t;
2192
2195
  }
2193
- async function wn(e) {
2194
- await K.createRequest()({
2196
+ async function In(e) {
2197
+ await q.createRequest()({
2195
2198
  endpoint: "/auth/cli/token",
2196
2199
  method: "DELETE"
2197
2200
  }).setHeaders({ Authorization: `Bearer ${e}` }).send();
2198
2201
  }
2199
2202
  //#endregion
2200
2203
  //#region src/core/auth-store.ts
2201
- var Tn = 1, En = "hype-stack", Dn = "auth.json";
2202
- function On() {
2204
+ var Ln = 1, Rn = "hype-stack", zn = "auth.json";
2205
+ function Bn() {
2203
2206
  let e = process.env.HYPE_STACK_CONFIG_DIR;
2204
- if (e) return p.join(e, En);
2205
- let t = f.homedir();
2207
+ if (e) return w.join(e, Rn);
2208
+ let t = C.homedir();
2206
2209
  if (process.platform === "win32") {
2207
- let e = process.env.APPDATA ?? p.join(t, "AppData", "Roaming");
2208
- return p.join(e, En);
2210
+ let e = process.env.APPDATA ?? w.join(t, "AppData", "Roaming");
2211
+ return w.join(e, Rn);
2209
2212
  }
2210
- if (process.platform === "darwin") return p.join(t, "Library", "Application Support", En);
2211
- let n = process.env.XDG_CONFIG_HOME ?? p.join(t, ".config");
2212
- return p.join(n, En);
2213
+ if (process.platform === "darwin") return w.join(t, "Library", "Application Support", Rn);
2214
+ let n = process.env.XDG_CONFIG_HOME ?? w.join(t, ".config");
2215
+ return w.join(n, Rn);
2213
2216
  }
2214
- function kn() {
2215
- return p.join(On(), Dn);
2217
+ function Vn() {
2218
+ return w.join(Bn(), zn);
2216
2219
  }
2217
- async function An() {
2218
- let e = await s.readFile(kn(), "utf-8").catch(() => null);
2220
+ async function Hn() {
2221
+ let e = await v.readFile(Vn(), "utf-8").catch(() => null);
2219
2222
  if (!e) return {
2220
- version: Tn,
2223
+ version: Ln,
2221
2224
  tokens: {}
2222
2225
  };
2223
2226
  let t = JSON.parse(e);
2224
2227
  return {
2225
- version: t.version ?? Tn,
2228
+ version: t.version ?? Ln,
2226
2229
  tokens: t.tokens ?? {}
2227
2230
  };
2228
2231
  }
2229
- async function jn(e) {
2230
- let t = On();
2231
- await s.mkdir(t, { recursive: !0 }), await s.writeFile(kn(), `${JSON.stringify(e, null, 2)}\n`, { mode: 384 });
2232
+ async function Un(e) {
2233
+ let t = Bn();
2234
+ await v.mkdir(t, { recursive: !0 }), await v.writeFile(Vn(), `${JSON.stringify(e, null, 2)}\n`, { mode: 384 });
2232
2235
  }
2233
- async function Mn(e) {
2234
- return (await An()).tokens[e] ?? null;
2236
+ async function Wn(e) {
2237
+ return (await Hn()).tokens[e] ?? null;
2235
2238
  }
2236
- async function Nn(e, t) {
2237
- let n = await An();
2238
- n.tokens[e] = t, await jn(n);
2239
+ async function Gn(e, t) {
2240
+ let n = await Hn();
2241
+ n.tokens[e] = t, await Un(n);
2239
2242
  }
2240
- async function Pn(e) {
2241
- let t = await An();
2242
- e in t.tokens && (delete t.tokens[e], await jn(t));
2243
+ async function Kn(e) {
2244
+ let t = await Hn();
2245
+ e in t.tokens && (delete t.tokens[e], await Un(t));
2243
2246
  }
2244
2247
  //#endregion
2245
2248
  //#region src/core/device.ts
2246
- function Fn() {
2247
- let e = f.networkInterfaces();
2249
+ function qn() {
2250
+ let e = C.networkInterfaces();
2248
2251
  for (let t of Object.values(e)) if (t) {
2249
2252
  for (let e of t) if (!e.internal && e.mac !== "00:00:00:00:00:00") return e.mac;
2250
2253
  }
2251
2254
  return "unknown";
2252
2255
  }
2253
- function In() {
2254
- let e = `${Fn()}:${f.hostname()}:${f.platform()}:${f.arch()}`;
2255
- return l("sha256").update(e).digest("hex").slice(0, 16);
2256
+ function Jn() {
2257
+ let e = `${qn()}:${C.hostname()}:${C.platform()}:${C.arch()}`;
2258
+ return b("sha256").update(e).digest("hex").slice(0, 16);
2256
2259
  }
2257
- function Ln() {
2258
- return `hype-stack/${_} ${f.platform()} ${f.arch()} node/${process.version.slice(1)}`;
2260
+ function Yn() {
2261
+ return `hype-stack/${k} ${C.platform()} ${C.arch()} node/${process.version.slice(1)}`;
2259
2262
  }
2260
2263
  //#endregion
2261
2264
  //#region src/core/open-browser.ts
2262
- function Rn(e) {
2263
- m(process.platform === "darwin" ? `open "${e}"` : process.platform === "win32" ? `start "" "${e}"` : `xdg-open "${e}"`);
2265
+ function Xn(e) {
2266
+ T(process.platform === "darwin" ? `open "${e}"` : process.platform === "win32" ? `start "" "${e}"` : `xdg-open "${e}"`);
2264
2267
  }
2265
2268
  //#endregion
2266
2269
  //#region src/core/login.ts
2267
- var zn = 300 * 1e3, Bn = (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>`;
2268
- async function Vn(e = {}) {
2269
- let t = u(16).toString("hex"), n = k(), r = d.createServer(), i = await new Promise((n, i) => {
2270
+ var Zn = 300 * 1e3, Qn = (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>`;
2271
+ async function $n(e = {}) {
2272
+ let t = x(16).toString("hex"), n = N(), r = S.createServer(), i = await new Promise((n, i) => {
2270
2273
  let a = setTimeout(() => {
2271
2274
  o(), i(/* @__PURE__ */ Error("Login timed out. Run `npx @hype-stack/cli login` again."));
2272
- }, zn);
2275
+ }, Zn);
2273
2276
  function o() {
2274
2277
  clearTimeout(a), r.close(), r.closeAllConnections?.();
2275
2278
  }
@@ -2283,7 +2286,7 @@ async function Vn(e = {}) {
2283
2286
  r.writeHead(200, {
2284
2287
  "Content-Type": "text/html",
2285
2288
  Connection: "close"
2286
- }), r.end(Bn(e));
2289
+ }), r.end(Qn(e));
2287
2290
  };
2288
2291
  if (a.searchParams.get("state") !== t) {
2289
2292
  s("Login failed."), o(), i(/* @__PURE__ */ Error("Login failed: state mismatch. Run `npx @hype-stack/cli login` again."));
@@ -2298,24 +2301,24 @@ async function Vn(e = {}) {
2298
2301
  }), r.on("error", (e) => {
2299
2302
  o(), i(e);
2300
2303
  }), r.listen(0, "127.0.0.1", () => {
2301
- let { port: n } = r.address(), i = encodeURIComponent(Ln()), a = `${A()}/cli/authorize?port=${n}&state=${t}&label=${i}`;
2302
- e.onUrl?.(a), Rn(a);
2304
+ let { port: n } = r.address(), i = encodeURIComponent(Yn()), a = `${P()}/cli/authorize?port=${n}&state=${t}&label=${i}`;
2305
+ e.onUrl?.(a), Xn(a);
2303
2306
  });
2304
- }), a = await Cn(i).catch(() => null), o = {
2307
+ }), a = await Fn(i).catch(() => null), o = {
2305
2308
  token: i,
2306
2309
  email: a?.email,
2307
2310
  organizationId: a?.organizationId
2308
2311
  };
2309
- return await Nn(n, o), o;
2312
+ return await Gn(n, o), o;
2310
2313
  }
2311
2314
  //#endregion
2312
2315
  //#region src/core/access-prompts.ts
2313
- async function Hn() {
2316
+ async function er() {
2314
2317
  let e = await o.confirm({ message: "Log in to install packs your organization owns? (opens your browser)" });
2315
2318
  if (o.isCancel(e) || !e) return null;
2316
2319
  o.log.step("Opening your browser to sign in...");
2317
2320
  try {
2318
- let e = await Vn({ onUrl: (e) => {
2321
+ let e = await $n({ onUrl: (e) => {
2319
2322
  o.log.info(`If your browser didn't open, visit:\n ${L.path(e)}`);
2320
2323
  } });
2321
2324
  return o.log.success(e.email ? `Logged in as ${e.email}` : "Logged in"), e.token;
@@ -2323,7 +2326,7 @@ async function Hn() {
2323
2326
  return o.log.error(e instanceof Error ? e.message : String(e)), null;
2324
2327
  }
2325
2328
  }
2326
- async function Un(e) {
2329
+ async function tr(e) {
2327
2330
  if (e.length === 0) return;
2328
2331
  o.note([
2329
2332
  "These packs need a purchase before they can be installed:",
@@ -2335,7 +2338,7 @@ async function Un(e) {
2335
2338
  o.log.info(L.muted("Run 'npx @hype-stack/cli login' after purchasing, then 'npx @hype-stack/cli compose' again."));
2336
2339
  return;
2337
2340
  }
2338
- for (let t of e) Rn(le(t.name));
2341
+ for (let t of e) Xn(Se(t.name));
2339
2342
  o.log.info([
2340
2343
  L.muted("After purchasing, run:"),
2341
2344
  ` ${L.highlight("npx @hype-stack/cli login")} ${L.muted("Save your access")}`,
@@ -2344,9 +2347,9 @@ async function Un(e) {
2344
2347
  }
2345
2348
  //#endregion
2346
2349
  //#region src/utils/exec.ts
2347
- function q(e, t, n) {
2350
+ function J(e, t, n) {
2348
2351
  return new Promise((r, i) => {
2349
- let a = h(e, t, {
2352
+ let a = E(e, t, {
2350
2353
  cwd: n.cwd,
2351
2354
  stdio: [
2352
2355
  "ignore",
@@ -2377,52 +2380,52 @@ function q(e, t, n) {
2377
2380
  }
2378
2381
  //#endregion
2379
2382
  //#region src/utils/fs.ts
2380
- async function J(e) {
2381
- return (await s.stat(e).catch(() => null))?.isDirectory() ?? !1;
2383
+ async function nr(e) {
2384
+ return (await v.stat(e).catch(() => null))?.isDirectory() ?? !1;
2382
2385
  }
2383
2386
  async function Y(e) {
2384
- return (await s.stat(e).catch(() => null))?.isFile() ?? !1;
2387
+ return (await v.stat(e).catch(() => null))?.isFile() ?? !1;
2385
2388
  }
2386
- async function Wn(e) {
2387
- return (await s.readdir(e).catch(() => [])).length === 0;
2389
+ async function rr(e) {
2390
+ return (await v.readdir(e).catch(() => [])).length === 0;
2388
2391
  }
2389
- async function Gn(e) {
2390
- let t = await s.readFile(e, "utf-8").catch(() => null);
2392
+ async function ir(e) {
2393
+ let t = await v.readFile(e, "utf-8").catch(() => null);
2391
2394
  return t ? JSON.parse(t) : null;
2392
2395
  }
2393
- async function Kn(e, t) {
2394
- await s.writeFile(e, JSON.stringify(t, null, 2) + "\n", "utf-8");
2396
+ async function ar(e, t) {
2397
+ await v.writeFile(e, JSON.stringify(t, null, 2) + "\n", "utf-8");
2395
2398
  }
2396
- async function qn(e) {
2399
+ async function or(e) {
2397
2400
  let t = {};
2398
- if (!await J(e)) return t;
2399
- let n = await s.readdir(e, { withFileTypes: !0 });
2400
- for (let r of n) r.isDirectory() && await Y(p.join(e, r.name, "package.json")) && (t[r.name] = p.relative(p.dirname(e), p.join(e, r.name)));
2401
+ if (!await nr(e)) return t;
2402
+ let n = await v.readdir(e, { withFileTypes: !0 });
2403
+ for (let r of n) r.isDirectory() && await Y(w.join(e, r.name, "package.json")) && (t[r.name] = w.relative(w.dirname(e), w.join(e, r.name)));
2401
2404
  return t;
2402
2405
  }
2403
- async function Jn(e) {
2404
- await s.rm(e, {
2406
+ async function sr(e) {
2407
+ await v.rm(e, {
2405
2408
  recursive: !0,
2406
2409
  force: !0
2407
2410
  });
2408
2411
  }
2409
- function Yn(e, t) {
2410
- return p.basename(e) === t ? e : p.join(e, t);
2412
+ function cr(e, t) {
2413
+ return w.basename(e) === t ? e : w.join(e, t);
2411
2414
  }
2412
2415
  //#endregion
2413
2416
  //#region src/core/codegen.ts
2414
- function Xn(e) {
2417
+ function lr(e) {
2415
2418
  o.log.info(L.muted("Run database setup yourself when ready:")), o.note([
2416
2419
  `${L.command(`cd ${e}`)}`,
2417
2420
  `${L.command("pnpm exec prisma generate")} ${L.muted("(regenerate the Prisma client)")}`,
2418
2421
  `${L.command("pnpm exec prisma migrate dev")} ${L.muted("(create + apply tables for new packs)")}`
2419
2422
  ].join("\n"), "Database Setup");
2420
2423
  }
2421
- async function Zn(e) {
2422
- let { projectRoot: t, paths: n, skipPrompts: r, runCommand: i = q } = e, a = n.backend.root, s = p.join(t, a);
2423
- if (!await Y(p.join(s, "package.json"))) return;
2424
+ async function ur(e) {
2425
+ let { projectRoot: t, paths: n, skipPrompts: r, runCommand: i = J } = e, a = n.backend.root, s = w.join(t, a);
2426
+ if (!await Y(w.join(s, "package.json"))) return;
2424
2427
  if (r) {
2425
- Xn(a);
2428
+ lr(a);
2426
2429
  return;
2427
2430
  }
2428
2431
  let c = await o.confirm({
@@ -2430,7 +2433,7 @@ async function Zn(e) {
2430
2433
  initialValue: !0
2431
2434
  });
2432
2435
  if (o.isCancel(c) || !c) {
2433
- Xn(a);
2436
+ lr(a);
2434
2437
  return;
2435
2438
  }
2436
2439
  let l = o.spinner();
@@ -2439,7 +2442,7 @@ async function Zn(e) {
2439
2442
  "prisma",
2440
2443
  "generate"
2441
2444
  ], { cwd: s })).exitCode !== 0) {
2442
- l.stop(L.warning("Prisma client generation failed")), Xn(a);
2445
+ l.stop(L.warning("Prisma client generation failed")), lr(a);
2443
2446
  return;
2444
2447
  }
2445
2448
  l.stop(L.success("Prisma client generated"));
@@ -2452,30 +2455,30 @@ async function Zn(e) {
2452
2455
  "--name",
2453
2456
  "add-packs"
2454
2457
  ], { cwd: s })).exitCode !== 0) {
2455
- u.stop(L.warning("Database migration failed (is your database running?)")), Xn(a);
2458
+ u.stop(L.warning("Database migration failed (is your database running?)")), lr(a);
2456
2459
  return;
2457
2460
  }
2458
2461
  u.stop(L.success("Database schema applied"));
2459
2462
  }
2460
2463
  //#endregion
2461
2464
  //#region src/core/stack-config.ts
2462
- async function Qn(e) {
2463
- return Gn(p.join(e, y));
2465
+ async function dr(e) {
2466
+ return ir(w.join(e, ne));
2464
2467
  }
2465
- async function $n(e) {
2466
- return Y(p.join(e, y));
2468
+ async function fr(e) {
2469
+ return Y(w.join(e, ne));
2467
2470
  }
2468
- async function er(e, t) {
2469
- await Kn(p.join(e, y), t);
2471
+ async function pr(e, t) {
2472
+ await ar(w.join(e, ne), t);
2470
2473
  }
2471
- async function tr(e) {
2472
- let t = p.join(e, "apps"), n = p.join(e, "packages"), [r, i] = await Promise.all([qn(t), qn(n)]);
2474
+ async function mr(e) {
2475
+ let t = w.join(e, "apps"), n = w.join(e, "packages"), [r, i] = await Promise.all([or(t), or(n)]);
2473
2476
  return {
2474
2477
  apps: r,
2475
2478
  packages: i
2476
2479
  };
2477
2480
  }
2478
- function nr(e) {
2481
+ function hr(e) {
2479
2482
  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";
2480
2483
  return {
2481
2484
  backend: {
@@ -2509,20 +2512,20 @@ function nr(e) {
2509
2512
  }
2510
2513
  };
2511
2514
  }
2512
- function rr(e, t) {
2515
+ function gr(e, t) {
2513
2516
  return {
2514
- $schema: j(),
2517
+ $schema: de(),
2515
2518
  version: 1,
2516
2519
  name: e,
2517
2520
  apps: t.apps,
2518
2521
  packages: t.packages,
2519
- paths: nr(t),
2522
+ paths: hr(t),
2520
2523
  installedPacks: [],
2521
2524
  licenseKey: null
2522
2525
  };
2523
2526
  }
2524
- async function ir(e) {
2525
- let t = p.join(e, "package.json"), n = p.join(e, "apps"), [r, i] = await Promise.all([Y(t), J(n)]);
2527
+ async function _r(e) {
2528
+ let t = w.join(e, "package.json"), n = w.join(e, "apps"), [r, i] = await Promise.all([Y(t), nr(n)]);
2526
2529
  return r && i;
2527
2530
  }
2528
2531
  function X(e, t) {
@@ -2536,8 +2539,8 @@ function X(e, t) {
2536
2539
  }
2537
2540
  //#endregion
2538
2541
  //#region src/core/registry.ts
2539
- async function ar(e) {
2540
- let { data: t, error: n, status: r } = await K.createRequest()({
2542
+ async function vr(e) {
2543
+ let { data: t, error: n, status: r } = await q.createRequest()({
2541
2544
  endpoint: `/packs/${encodeURIComponent(e)}/manifest`,
2542
2545
  method: "GET"
2543
2546
  }).send();
@@ -2545,13 +2548,13 @@ async function ar(e) {
2545
2548
  if (n || !t) throw Error(`Failed to load manifest for "${e}": ${String(n)}`);
2546
2549
  return t;
2547
2550
  }
2548
- async function or(e, t = {}) {
2549
- let n = K.createRequest()({
2551
+ async function yr(e, t = {}) {
2552
+ let n = q.createRequest()({
2550
2553
  endpoint: `/packs/${encodeURIComponent(e)}/download`,
2551
2554
  method: "POST"
2552
2555
  }), r = {
2553
- "X-Device-Id": In(),
2554
- "X-Client-Info": Ln()
2556
+ "X-Device-Id": Jn(),
2557
+ "X-Client-Info": Yn()
2555
2558
  };
2556
2559
  t.token && (r.Authorization = `Bearer ${t.token}`);
2557
2560
  let { data: i, error: a, success: o } = await n.setPayload({ key: t.licenseKey ?? void 0 }).setHeaders(r).send();
@@ -2562,34 +2565,34 @@ async function or(e, t = {}) {
2562
2565
  packs: i.packs ?? [],
2563
2566
  expiresAt: i.expiresAt ?? null
2564
2567
  };
2565
- let c = await s.mkdtemp(p.join(f.tmpdir(), `hype-stack-pack-${e}-`));
2568
+ let s = await v.mkdtemp(w.join(C.tmpdir(), `hype-stack-pack-${e}-`));
2566
2569
  return await Promise.all(i.files.map(async (e) => {
2567
- let t = p.join(c, ...e.path.split("/"));
2568
- await s.mkdir(p.dirname(t), { recursive: !0 }), await s.writeFile(t, Buffer.from(e.content, "base64"));
2570
+ let t = w.join(s, ...e.path.split("/"));
2571
+ await v.mkdir(w.dirname(t), { recursive: !0 }), await v.writeFile(t, Buffer.from(e.content, "base64"));
2569
2572
  })), {
2570
2573
  status: "ok",
2571
- packDir: c
2574
+ packDir: s
2572
2575
  };
2573
2576
  }
2574
- function sr(e, t, n) {
2577
+ function br(e, t, n) {
2575
2578
  let r = X(e, t);
2576
- return p.resolve(n, r);
2579
+ return w.resolve(n, r);
2577
2580
  }
2578
- function cr(e, t) {
2579
- return p.join(t, e);
2581
+ function xr(e, t) {
2582
+ return w.join(t, e);
2580
2583
  }
2581
- var lr = K.createRequest()({
2584
+ var Sr = q.createRequest()({
2582
2585
  endpoint: "/packs/list",
2583
2586
  method: "GET"
2584
2587
  });
2585
- async function ur() {
2586
- let { data: e, error: t } = await lr.send();
2588
+ async function Cr() {
2589
+ let { data: e, error: t } = await Sr.send();
2587
2590
  if (t || !e) throw Error(`Failed to fetch pack list: ${String(t)}`);
2588
2591
  return e.packs;
2589
2592
  }
2590
- async function dr(e, t = {}) {
2593
+ async function wr(e, t = {}) {
2591
2594
  if (e.length === 0) return {};
2592
- let n = K.createRequest()({
2595
+ let n = q.createRequest()({
2593
2596
  endpoint: "/packs/authorize",
2594
2597
  method: "POST"
2595
2598
  }), r = {};
@@ -2603,35 +2606,35 @@ async function dr(e, t = {}) {
2603
2606
  }
2604
2607
  //#endregion
2605
2608
  //#region src/core/codemods.ts
2606
- var fr = "@hype-stack/";
2607
- function pr(e, t) {
2609
+ var Tr = "@hype-stack/";
2610
+ function Er(e, t) {
2608
2611
  return X(e === "admin" ? "{{admin.root}}" : "{{frontend.root}}", t);
2609
2612
  }
2610
- async function mr(e, t, n) {
2611
- let r = X("{{backend.root}}", t), i = p.resolve(n, r, "src/config/env/env.config.ts"), a = p.resolve(n, r, ".env.example"), o = p.resolve(n, r, ".env.test");
2613
+ async function Dr(e, t, n) {
2614
+ let r = X("{{backend.root}}", t), i = w.resolve(n, r, "src/config/env/env.config.ts"), a = w.resolve(n, r, ".env.example"), o = w.resolve(n, r, ".env.test");
2612
2615
  if (await Y(i)) {
2613
- let t = await s.readFile(i, "utf-8");
2614
- for (let n of e) t.includes(`from "${n.from}"`) || (t = hr(t, n), t = gr(t, n));
2615
- await s.writeFile(i, t, "utf-8");
2616
+ let t = await v.readFile(i, "utf-8");
2617
+ for (let n of e) t.includes(`from "${n.from}"`) || (t = Or(t, n), t = kr(t, n));
2618
+ await v.writeFile(i, t, "utf-8");
2616
2619
  }
2617
2620
  if (await Y(a)) {
2618
- let t = await s.readFile(a, "utf-8");
2619
- for (let n of e) t = _r(t, n);
2620
- await s.writeFile(a, t, "utf-8");
2621
+ let t = await v.readFile(a, "utf-8");
2622
+ for (let n of e) t = Ar(t, n);
2623
+ await v.writeFile(a, t, "utf-8");
2621
2624
  }
2622
2625
  if (await Y(o)) {
2623
- let t = await s.readFile(o, "utf-8");
2624
- for (let n of e) t = vr(t, n);
2625
- await s.writeFile(o, t, "utf-8");
2626
+ let t = await v.readFile(o, "utf-8");
2627
+ for (let n of e) t = jr(t, n);
2628
+ await v.writeFile(o, t, "utf-8");
2626
2629
  }
2627
2630
  }
2628
- function hr(e, t) {
2631
+ function Or(e, t) {
2629
2632
  let n = `import { ${t.import} } from "${t.from}";`, r = e.lastIndexOf("import ");
2630
2633
  if (r === -1) return n + "\n" + e;
2631
2634
  let i = e.indexOf("\n", e.indexOf(";", r));
2632
2635
  return i === -1 ? e + "\n" + n : e.slice(0, i + 1) + n + "\n" + e.slice(i + 1);
2633
2636
  }
2634
- function gr(e, t) {
2637
+ function kr(e, t) {
2635
2638
  let n = `.extend(${t.import}.shape)`;
2636
2639
  if (e.includes(n)) return e;
2637
2640
  let r = e.indexOf("export const envSchema = z.object({");
@@ -2646,27 +2649,27 @@ function gr(e, t) {
2646
2649
  let o = a + 2;
2647
2650
  return e.slice(0, o) + n + e.slice(o);
2648
2651
  }
2649
- function _r(e, t) {
2652
+ function Ar(e, t) {
2650
2653
  for (let n of Object.keys(t.envExample.vars)) if (e.includes(`${n}=`)) return e;
2651
2654
  let n = [];
2652
2655
  n.push(""), n.push(`# ${t.envExample.section}`);
2653
2656
  for (let [e, r] of Object.entries(t.envExample.vars)) n.push(`${e}=${r}`);
2654
2657
  return e.trimEnd() + "\n" + n.join("\n") + "\n";
2655
2658
  }
2656
- function vr(e, t) {
2659
+ function jr(e, t) {
2657
2660
  for (let n of Object.keys(t.envTest)) if (e.includes(`${n}=`)) return e;
2658
2661
  let n = [""];
2659
2662
  for (let [e, r] of Object.entries(t.envTest)) n.push(`${e}=${r}`);
2660
2663
  return e.trimEnd() + "\n" + n.join("\n") + "\n";
2661
2664
  }
2662
- async function yr(e, t, n) {
2663
- let r = p.resolve(n, X("{{backend.routes}}", t), "index.ts");
2665
+ async function Mr(e, t, n) {
2666
+ let r = w.resolve(n, X("{{backend.routes}}", t), "index.ts");
2664
2667
  if (!await Y(r)) return;
2665
- let i = await s.readFile(r, "utf-8");
2666
- for (let t of e) i.includes(`from "${t.from}"`) || (i = br(i, t), i = xr(i, t));
2667
- await s.writeFile(r, i, "utf-8");
2668
+ let i = await v.readFile(r, "utf-8");
2669
+ for (let t of e) i.includes(`from "${t.from}"`) || (i = Nr(i, t), i = Pr(i, t));
2670
+ await v.writeFile(r, i, "utf-8");
2668
2671
  }
2669
- function br(e, t) {
2672
+ function Nr(e, t) {
2670
2673
  let n = `import { ${t.import} } from "${t.from}";`, r = e.lastIndexOf("from \"./");
2671
2674
  if (r !== -1) {
2672
2675
  let t = e.indexOf("\n", r);
@@ -2675,7 +2678,7 @@ function br(e, t) {
2675
2678
  let i = e.indexOf("export const registerRoutes");
2676
2679
  return i === -1 ? e : e.slice(0, i) + n + "\n\n" + e.slice(i);
2677
2680
  }
2678
- function xr(e, t) {
2681
+ function Pr(e, t) {
2679
2682
  let n = `.route("${t.prefix}", ${t.import})`, r = e.match(/\.route\([^)]+\);/g);
2680
2683
  if (r) {
2681
2684
  let t = r[r.length - 1], i = e.lastIndexOf(t) + t.length - 1;
@@ -2683,14 +2686,14 @@ function xr(e, t) {
2683
2686
  }
2684
2687
  return e.replace("return app;", `return app\n ${n};`);
2685
2688
  }
2686
- async function Sr(e, t, n) {
2687
- let r = p.resolve(n, X("{{backend.root}}", t), "src/context.ts");
2689
+ async function Fr(e, t, n) {
2690
+ let r = w.resolve(n, X("{{backend.root}}", t), "src/context.ts");
2688
2691
  if (!await Y(r)) return;
2689
- let i = await s.readFile(r, "utf-8");
2690
- for (let t of e) i.includes(`export let ${t.export}`) || (i = Cr(i, t), i = wr(i, t), i = Tr(i, t), i = Dr(i, t));
2691
- await s.writeFile(r, i, "utf-8");
2692
+ let i = await v.readFile(r, "utf-8");
2693
+ for (let t of e) i.includes(`export let ${t.export}`) || (i = Ir(i, t), i = Lr(i, t), i = Rr(i, t), i = Br(i, t));
2694
+ await v.writeFile(r, i, "utf-8");
2692
2695
  }
2693
- function Cr(e, t) {
2696
+ function Ir(e, t) {
2694
2697
  let n = `import { ${t.typeImport.name} } from "${t.typeImport.from}";`;
2695
2698
  if (e.includes(`from "${t.typeImport.from}"`)) return e;
2696
2699
  let r = e.lastIndexOf("import ");
@@ -2698,7 +2701,7 @@ function Cr(e, t) {
2698
2701
  let i = e.indexOf("\n", e.indexOf(";", r));
2699
2702
  return i === -1 ? e + "\n" + n : e.slice(0, i + 1) + n + "\n" + e.slice(i + 1);
2700
2703
  }
2701
- function wr(e, t) {
2704
+ function Lr(e, t) {
2702
2705
  let n = `export let ${t.export}: ${t.type};`, r = e.lastIndexOf("export let ");
2703
2706
  if (r === -1) {
2704
2707
  let t = e.indexOf("export const setupContext");
@@ -2707,15 +2710,15 @@ function wr(e, t) {
2707
2710
  let i = e.indexOf("\n", r);
2708
2711
  return i === -1 ? e + "\n" + n : e.slice(0, i + 1) + n + "\n" + e.slice(i + 1);
2709
2712
  }
2710
- function Tr(e, t) {
2713
+ function Rr(e, t) {
2711
2714
  let n = ` ${t.export} = ${t.init};`, r = e.match(/export const setupContext\s*=\s*async\s*\([^)]*\)\s*=>\s*\{/);
2712
2715
  if (!r) return e;
2713
2716
  let i = e.indexOf("{", e.indexOf(r[0]));
2714
2717
  if (i === -1) return e;
2715
- let a = Er(e, i);
2718
+ let a = zr(e, i);
2716
2719
  return a === -1 ? e : e.slice(0, a) + n + "\n" + e.slice(a);
2717
2720
  }
2718
- function Er(e, t) {
2721
+ function zr(e, t) {
2719
2722
  let n = 0;
2720
2723
  for (let r = t; r < e.length; r++) {
2721
2724
  let t = e[r];
@@ -2724,20 +2727,20 @@ function Er(e, t) {
2724
2727
  }
2725
2728
  return -1;
2726
2729
  }
2727
- function Dr(e, t) {
2730
+ function Br(e, t) {
2728
2731
  let n = ` ${t.export}: ${t.type};`, r = e.indexOf("export type ContextVariables = {");
2729
2732
  if (r === -1) return e;
2730
2733
  let i = e.indexOf("};", r);
2731
2734
  return i === -1 ? e : e.slice(0, i) + n + "\n" + e.slice(i);
2732
2735
  }
2733
- async function Or(e, t, n) {
2734
- let r = p.resolve(n, X("{{enums.src}}", t), "index.ts");
2736
+ async function Vr(e, t, n) {
2737
+ let r = w.resolve(n, X("{{enums.src}}", t), "index.ts");
2735
2738
  if (!await Y(r)) return;
2736
- let i = await s.readFile(r, "utf-8");
2737
- for (let t of e) i.includes(`from "${t.from}"`) || (i = kr(i, t));
2738
- await s.writeFile(r, i, "utf-8");
2739
+ let i = await v.readFile(r, "utf-8");
2740
+ for (let t of e) i.includes(`from "${t.from}"`) || (i = Hr(i, t));
2741
+ await v.writeFile(r, i, "utf-8");
2739
2742
  }
2740
- function kr(e, t) {
2743
+ function Hr(e, t) {
2741
2744
  let n = `export * from "${t.from}";`, r = e.lastIndexOf("export * from");
2742
2745
  if (r !== -1) {
2743
2746
  let t = e.indexOf("\n", r);
@@ -2745,14 +2748,14 @@ function kr(e, t) {
2745
2748
  }
2746
2749
  return e.trim() === "" ? n + "\n" : e.trimEnd() + "\n" + n + "\n";
2747
2750
  }
2748
- async function Ar(e, t, n) {
2749
- let r = X("{{backend.root}}", t), i = p.resolve(n, r, "src/sockets/index.ts");
2751
+ async function Ur(e, t, n) {
2752
+ let r = X("{{backend.root}}", t), i = w.resolve(n, r, "src/sockets/index.ts");
2750
2753
  if (!await Y(i)) return;
2751
- let a = await s.readFile(i, "utf-8");
2752
- for (let t of e) a.includes(`from "${t.from}"`) || (a = jr(a, t), a = Mr(a, t));
2753
- await Y(p.resolve(n, r, "src/libs/websocket/ws-authenticate.ts")) && (a = Nr(a)), await s.writeFile(i, a, "utf-8");
2754
+ let a = await v.readFile(i, "utf-8");
2755
+ for (let t of e) a.includes(`from "${t.from}"`) || (a = Wr(a, t), a = Gr(a, t));
2756
+ await Y(w.resolve(n, r, "src/libs/websocket/ws-authenticate.ts")) && (a = Kr(a)), await v.writeFile(i, a, "utf-8");
2754
2757
  }
2755
- function jr(e, t) {
2758
+ function Wr(e, t) {
2756
2759
  let n = `import { ${t.import} } from "${t.from}";`, r = e.lastIndexOf("from \"./");
2757
2760
  if (r !== -1) {
2758
2761
  let t = e.indexOf("\n", r);
@@ -2761,7 +2764,7 @@ function jr(e, t) {
2761
2764
  let i = e.indexOf("const sockets");
2762
2765
  return i === -1 ? e : e.slice(0, i) + n + "\n\n" + e.slice(i);
2763
2766
  }
2764
- function Mr(e, t) {
2767
+ function Gr(e, t) {
2765
2768
  let n = `.socket("${t.prefix}", ${t.import})`, r = e.indexOf("const sockets");
2766
2769
  if (r === -1) return e;
2767
2770
  let i = e.indexOf("new SocketRouter", r);
@@ -2775,7 +2778,7 @@ function Mr(e, t) {
2775
2778
  }
2776
2779
  return e;
2777
2780
  }
2778
- function Nr(e) {
2781
+ function Kr(e) {
2779
2782
  if (e.includes("wsAuthenticate")) return e;
2780
2783
  let t = e.indexOf("from \"@backend/libs/websocket/socket-router\""), n = e;
2781
2784
  if (t !== -1) {
@@ -2784,14 +2787,14 @@ function Nr(e) {
2784
2787
  }
2785
2788
  return n.replace("new SocketRouter()", "new SocketRouter({ authenticate: wsAuthenticate })");
2786
2789
  }
2787
- async function Pr(e, t, n) {
2788
- let r = X("{{frontend.root}}", t), i = p.resolve(n, r, "src/api/sdk.ts");
2790
+ async function qr(e, t, n) {
2791
+ let r = X("{{frontend.root}}", t), i = w.resolve(n, r, "src/api/sdk.ts");
2789
2792
  if (!await Y(i)) return;
2790
- let a = await s.readFile(i, "utf-8");
2791
- for (let t of e) a.includes(`.$configure(${t.import})`) || (a = Fr(a, t), a = Ir(a, t));
2792
- await s.writeFile(i, a, "utf-8");
2793
+ let a = await v.readFile(i, "utf-8");
2794
+ for (let t of e) a.includes(`.$configure(${t.import})`) || (a = Jr(a, t), a = Yr(a, t));
2795
+ await v.writeFile(i, a, "utf-8");
2793
2796
  }
2794
- function Fr(e, t) {
2797
+ function Jr(e, t) {
2795
2798
  let n = `import { ${t.import} } from "${t.from}";`;
2796
2799
  if (e.includes(n)) return e;
2797
2800
  let r = e.lastIndexOf("from \"./");
@@ -2802,57 +2805,57 @@ function Fr(e, t) {
2802
2805
  let i = e.indexOf("export const sdk");
2803
2806
  return i === -1 ? e : e.slice(0, i) + n + "\n\n" + e.slice(i);
2804
2807
  }
2805
- function Ir(e, t) {
2808
+ function Yr(e, t) {
2806
2809
  let n = `.$configure(${t.import})`, r = e.indexOf("export const sdk");
2807
2810
  if (r === -1) return e;
2808
2811
  let i = e.indexOf(";", r);
2809
2812
  return i === -1 ? e : e.slice(0, i) + "\n " + n + e.slice(i);
2810
2813
  }
2811
- async function Lr(e, t, n) {
2812
- let r = p.resolve(n, X("{{backend.utils}}", t), "frontend-url/frontend-url.ts");
2814
+ async function Xr(e, t, n) {
2815
+ let r = w.resolve(n, X("{{backend.utils}}", t), "frontend-url/frontend-url.ts");
2813
2816
  if (!await Y(r)) return;
2814
- let i = await s.readFile(r, "utf-8");
2815
- for (let t of e) i.includes(`"${t.path}"`) || (i = Rr(i, t));
2816
- await s.writeFile(r, i, "utf-8");
2817
+ let i = await v.readFile(r, "utf-8");
2818
+ for (let t of e) i.includes(`"${t.path}"`) || (i = Zr(i, t));
2819
+ await v.writeFile(r, i, "utf-8");
2817
2820
  }
2818
- function Rr(e, t) {
2821
+ function Zr(e, t) {
2819
2822
  let n = ` "${t.path}": ${t.search};`, r = e.indexOf("type RouteDefinitions = {");
2820
2823
  if (r === -1) return e;
2821
2824
  let i = e.indexOf("};", r);
2822
2825
  return i === -1 ? e : e.slice(0, i) + n + "\n" + e.slice(i);
2823
2826
  }
2824
- var zr = "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", Br = {
2827
+ var Qr = "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", $r = {
2825
2828
  primary: "primaryNav",
2826
2829
  secondary: "secondaryNav",
2827
2830
  tertiary: "tertiaryNav",
2828
2831
  settings: "settingsNav"
2829
2832
  };
2830
- async function Vr(e) {
2831
- let { entries: t, paths: n, projectRoot: r, slot: i = "frontend" } = e, a = pr(i, n), o = p.resolve(r, a, "src/constants/nav.constants.ts"), c;
2832
- await Y(o) ? c = await s.readFile(o, "utf-8") : (await s.mkdir(p.dirname(o), { recursive: !0 }), c = zr);
2833
- for (let e of t) c.includes(`label: "${e.label}"`) || (c = Wr(c, e));
2834
- for (let e of t.toReversed()) c.includes(`label: "${e.label}"`) || (c = Kr(c, e));
2835
- await s.writeFile(o, c, "utf-8");
2836
- }
2837
- async function Hr(e) {
2838
- let { postLoginRedirect: t, paths: n, projectRoot: r, slot: i = "frontend" } = e, a = pr(i, n), o = p.resolve(r, a, "src/features/auth/constants/auth.constants.ts");
2833
+ async function ei(e) {
2834
+ let { entries: t, paths: n, projectRoot: r, slot: i = "frontend" } = e, a = Er(i, n), o = w.resolve(r, a, "src/constants/nav.constants.ts"), s;
2835
+ await Y(o) ? s = await v.readFile(o, "utf-8") : (await v.mkdir(w.dirname(o), { recursive: !0 }), s = Qr);
2836
+ for (let e of t) s.includes(`label: "${e.label}"`) || (s = ri(s, e));
2837
+ for (let e of t.toReversed()) s.includes(`label: "${e.label}"`) || (s = ai(s, e));
2838
+ await v.writeFile(o, s, "utf-8");
2839
+ }
2840
+ async function ti(e) {
2841
+ let { postLoginRedirect: t, paths: n, projectRoot: r, slot: i = "frontend" } = e, a = Er(i, n), o = w.resolve(r, a, "src/features/auth/constants/auth.constants.ts");
2839
2842
  if (!await Y(o)) return;
2840
- let c = await s.readFile(o, "utf-8"), l = /export const POST_LOGIN_REDIRECT_PATH = "[^"]*";/;
2841
- if (!l.test(c)) return;
2842
- let u = c.replace(l, `export const POST_LOGIN_REDIRECT_PATH = "${t}";`);
2843
- await s.writeFile(o, u, "utf-8");
2843
+ let s = await v.readFile(o, "utf-8"), c = /export const POST_LOGIN_REDIRECT_PATH = "[^"]*";/;
2844
+ if (!c.test(s)) return;
2845
+ let l = s.replace(c, `export const POST_LOGIN_REDIRECT_PATH = "${t}";`);
2846
+ await v.writeFile(o, l, "utf-8");
2844
2847
  }
2845
- function Ur(e) {
2848
+ function ni(e) {
2846
2849
  let t = [e.icon];
2847
2850
  if (e.items) for (let n of e.items) t.includes(n.icon) || t.push(n.icon);
2848
2851
  return t;
2849
2852
  }
2850
- function Wr(e, t) {
2851
- let n = Ur(t), r = e;
2852
- for (let e of n) r = Gr(r, e);
2853
+ function ri(e, t) {
2854
+ let n = ni(t), r = e;
2855
+ for (let e of n) r = ii(r, e);
2853
2856
  return r;
2854
2857
  }
2855
- function Gr(e, t) {
2858
+ function ii(e, t) {
2856
2859
  let n = e.match(/import \{([^}]+)\} from "lucide-react";/);
2857
2860
  if (!n) return e;
2858
2861
  let r = n[1].split(",").map((e) => e.trim()).filter(Boolean);
@@ -2860,21 +2863,21 @@ function Gr(e, t) {
2860
2863
  let i = r.findIndex((e) => e.startsWith("type "));
2861
2864
  return i === -1 ? r.push(t) : r.splice(i, 0, t), e.replace(n[0], `import { ${r.join(", ")} } from "lucide-react";`);
2862
2865
  }
2863
- function Kr(e, t) {
2864
- let n = Br[t.group];
2866
+ function ai(e, t) {
2867
+ let n = $r[t.group];
2865
2868
  if (!n) return e;
2866
- let r = Jr(t), i = RegExp(`export const ${n}: NavEntry\\[\\] = \\[`), a = e.match(i);
2869
+ let r = si(t), i = RegExp(`export const ${n}: NavEntry\\[\\] = \\[`), a = e.match(i);
2867
2870
  if (!a) return e;
2868
- let o = e.indexOf(a[0]) + a[0].length, s = qr(e, o - 1);
2871
+ let o = e.indexOf(a[0]) + a[0].length, s = oi(e, o - 1);
2869
2872
  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);
2870
2873
  }
2871
- function qr(e, t) {
2874
+ function oi(e, t) {
2872
2875
  let n = 0;
2873
2876
  for (let r = t; r < e.length; r++) if (e[r] === "[") n++;
2874
2877
  else if (e[r] === "]" && (n--, n === 0)) return r;
2875
2878
  return -1;
2876
2879
  }
2877
- function Jr(e) {
2880
+ function si(e) {
2878
2881
  let t = [];
2879
2882
  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) {
2880
2883
  t.push(" items: [");
@@ -2890,14 +2893,14 @@ function Jr(e) {
2890
2893
  } else t.push(" items: [],");
2891
2894
  return t.push(" },"), t.join("\n");
2892
2895
  }
2893
- async function Yr(e, t, n) {
2894
- let r = X("{{backend.features}}", t), i = p.resolve(n, r, "organizations/modules/setup-organization/steps/index.ts");
2896
+ async function ci(e, t, n) {
2897
+ let r = X("{{backend.features}}", t), i = w.resolve(n, r, "organizations/modules/setup-organization/steps/index.ts");
2895
2898
  if (!await Y(i)) return;
2896
- let a = await s.readFile(i, "utf-8");
2897
- for (let t of e) a.includes(`from "${t.from}"`) || (a = Xr(a, t), a = Zr(a, t));
2898
- await s.writeFile(i, a, "utf-8");
2899
+ let a = await v.readFile(i, "utf-8");
2900
+ for (let t of e) a.includes(`from "${t.from}"`) || (a = li(a, t), a = ui(a, t));
2901
+ await v.writeFile(i, a, "utf-8");
2899
2902
  }
2900
- function Xr(e, t) {
2903
+ function li(e, t) {
2901
2904
  let n = `import { ${t.import} } from "${t.from}";`, r = e.lastIndexOf("import ");
2902
2905
  if (r !== -1) {
2903
2906
  let t = e.indexOf("\n", e.indexOf(";", r));
@@ -2905,38 +2908,38 @@ function Xr(e, t) {
2905
2908
  }
2906
2909
  return e.indexOf("type "), n + "\n\n" + e;
2907
2910
  }
2908
- function Zr(e, t) {
2911
+ function ui(e, t) {
2909
2912
  let n = ` { id: "${t.id}", execute: (ctx) => ${t.import}(ctx) },`, r = e.match(/export const steps:\s*Step\[\]\s*=\s*\[/);
2910
2913
  if (!r) return e;
2911
- let i = e.indexOf(r[0]) + r[0].length, a = Qr(e, i - 1);
2914
+ let i = e.indexOf(r[0]) + r[0].length, a = di(e, i - 1);
2912
2915
  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);
2913
2916
  }
2914
- function Qr(e, t) {
2917
+ function di(e, t) {
2915
2918
  let n = 0;
2916
2919
  for (let r = t; r < e.length; r++) if (e[r] === "[") n++;
2917
2920
  else if (e[r] === "]" && (n--, n === 0)) return r;
2918
2921
  return -1;
2919
2922
  }
2920
- var $r = "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";
2921
- async function ei(e) {
2922
- await ni({
2923
+ var fi = "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";
2924
+ async function pi(e) {
2925
+ await hi({
2923
2926
  ...e,
2924
2927
  arrayName: "navbarActions"
2925
2928
  });
2926
2929
  }
2927
- async function ti(e) {
2928
- await ni({
2930
+ async function mi(e) {
2931
+ await hi({
2929
2932
  ...e,
2930
2933
  arrayName: "userMenuActions"
2931
2934
  });
2932
2935
  }
2933
- async function ni({ actions: e, arrayName: t, paths: n, projectRoot: r, slot: i }) {
2934
- let a = pr(i, n), o = p.resolve(r, a, "src/constants/navbar-actions.tsx"), c;
2935
- await Y(o) ? c = await s.readFile(o, "utf-8") : (await s.mkdir(p.dirname(o), { recursive: !0 }), c = $r);
2936
- for (let n of e) c = ri(c, n), c = ii(c, n, t);
2937
- await s.writeFile(o, c, "utf-8");
2936
+ async function hi({ actions: e, arrayName: t, paths: n, projectRoot: r, slot: i }) {
2937
+ let a = Er(i, n), o = w.resolve(r, a, "src/constants/navbar-actions.tsx"), s;
2938
+ await Y(o) ? s = await v.readFile(o, "utf-8") : (await v.mkdir(w.dirname(o), { recursive: !0 }), s = fi);
2939
+ for (let n of e) s = gi(s, n), s = _i(s, n, t);
2940
+ await v.writeFile(o, s, "utf-8");
2938
2941
  }
2939
- function ri(e, t) {
2942
+ function gi(e, t) {
2940
2943
  let n = `import { ${t.import} } from "${t.from}";`;
2941
2944
  if (e.includes(n)) return e;
2942
2945
  let r = e.lastIndexOf("import ");
@@ -2944,38 +2947,38 @@ function ri(e, t) {
2944
2947
  let i = e.indexOf("\n", r);
2945
2948
  return i === -1 ? e + "\n" + n : e.slice(0, i + 1) + n + "\n" + e.slice(i + 1);
2946
2949
  }
2947
- function ii(e, t, n) {
2950
+ function _i(e, t, n) {
2948
2951
  let r = e.match(RegExp(`export const ${n}:\\s*NavbarAction\\[\\]\\s*=\\s*\\[`));
2949
2952
  if (!r) return e;
2950
- let i = e.indexOf(r[0]) + r[0].length, a = ai(e, i - 1);
2953
+ let i = e.indexOf(r[0]) + r[0].length, a = vi(e, i - 1);
2951
2954
  if (a === -1) return e;
2952
2955
  let o = e.slice(i, a);
2953
2956
  if (o.includes(`id: "${t.id}"`)) return e;
2954
2957
  let s = ` { id: "${t.id}", component: ${t.import} },`;
2955
2958
  return o.trim() === "" ? e.slice(0, a) + "\n" + s + "\n" + e.slice(a) : e.slice(0, a) + s + "\n" + e.slice(a);
2956
2959
  }
2957
- function ai(e, t) {
2960
+ function vi(e, t) {
2958
2961
  let n = 0;
2959
2962
  for (let r = t; r < e.length; r++) if (e[r] === "[") n++;
2960
2963
  else if (e[r] === "]" && (n--, n === 0)) return r;
2961
2964
  return -1;
2962
2965
  }
2963
- var oi = new Set([
2966
+ var yi = new Set([
2964
2967
  ".ts",
2965
2968
  ".tsx",
2966
2969
  ".js",
2967
2970
  ".jsx"
2968
2971
  ]);
2969
- async function si(e) {
2972
+ async function bi(e) {
2970
2973
  let { files: t, paths: n, projectRoot: r, projectName: i } = e;
2971
2974
  if (i === "hype-stack") return;
2972
2975
  let a = `@${i}/`;
2973
2976
  await Promise.all(t.map(async (e) => {
2974
- let t = sr(e.target, n, r), i = await s.stat(t).catch(() => null);
2975
- i?.isDirectory() ? await ui(t, a) : i?.isFile() && oi.has(p.extname(t)) && await di(t, a);
2977
+ let t = br(e.target, n, r), i = await v.stat(t).catch(() => null);
2978
+ i?.isDirectory() ? await Ci(t, a) : i?.isFile() && yi.has(w.extname(t)) && await wi(t, a);
2976
2979
  }));
2977
2980
  }
2978
- var ci = new Set([
2981
+ var xi = new Set([
2979
2982
  ".git",
2980
2983
  "node_modules",
2981
2984
  "dist",
@@ -2984,104 +2987,104 @@ var ci = new Set([
2984
2987
  ".next",
2985
2988
  "coverage"
2986
2989
  ]);
2987
- async function li(e, t) {
2988
- t !== "hype-stack" && await ui(e, `@${t}/`);
2990
+ async function Si(e, t) {
2991
+ t !== "hype-stack" && await Ci(e, `@${t}/`);
2989
2992
  }
2990
- async function ui(e, t) {
2991
- let n = await s.readdir(e, { withFileTypes: !0 });
2993
+ async function Ci(e, t) {
2994
+ let n = await v.readdir(e, { withFileTypes: !0 });
2992
2995
  await Promise.all(n.map(async (n) => {
2993
- let r = p.join(e, n.name);
2996
+ let r = w.join(e, n.name);
2994
2997
  if (n.isDirectory()) {
2995
- if (ci.has(n.name)) return;
2996
- await ui(r, t);
2997
- } else n.isFile() && oi.has(p.extname(n.name)) && await di(r, t);
2998
+ if (xi.has(n.name)) return;
2999
+ await Ci(r, t);
3000
+ } else n.isFile() && yi.has(w.extname(n.name)) && await wi(r, t);
2998
3001
  }));
2999
3002
  }
3000
- async function di(e, t) {
3001
- let n = await s.readFile(e, "utf-8");
3002
- if (!n.includes(fr)) return;
3003
- let r = n.replaceAll(fr, t);
3004
- await s.writeFile(e, r, "utf-8");
3003
+ async function wi(e, t) {
3004
+ let n = await v.readFile(e, "utf-8");
3005
+ if (!n.includes(Tr)) return;
3006
+ let r = n.replaceAll(Tr, t);
3007
+ await v.writeFile(e, r, "utf-8");
3005
3008
  }
3006
3009
  //#endregion
3007
3010
  //#region src/core/installer.ts
3008
- function fi(e, t) {
3011
+ function Ti(e, t) {
3009
3012
  return e.slot ? t ? t.includes(e.slot) : e.slot === "frontend" : !0;
3010
3013
  }
3011
- async function pi(e, t) {
3012
- if ((await s.stat(e)).isDirectory()) {
3013
- await s.mkdir(t, { recursive: !0 });
3014
- let n = await s.readdir(e, { withFileTypes: !0 });
3015
- for (let r of n) await pi(p.join(e, r.name), p.join(t, r.name));
3016
- } else await s.mkdir(p.dirname(t), { recursive: !0 }), await s.copyFile(e, t);
3014
+ async function Ei(e, t) {
3015
+ if ((await v.stat(e)).isDirectory()) {
3016
+ await v.mkdir(t, { recursive: !0 });
3017
+ let n = await v.readdir(e, { withFileTypes: !0 });
3018
+ for (let r of n) await Ei(w.join(e, r.name), w.join(t, r.name));
3019
+ } else await v.mkdir(w.dirname(t), { recursive: !0 }), await v.copyFile(e, t);
3017
3020
  }
3018
- async function mi(e) {
3019
- let { file: t, packDir: n, paths: r, projectRoot: i } = e, a = cr(t.source, n), o = sr(t.target, r, i);
3021
+ async function Di(e) {
3022
+ let { file: t, packDir: n, paths: r, projectRoot: i } = e, a = xr(t.source, n), o = br(t.target, r, i);
3020
3023
  return {
3021
3024
  sourcePath: a,
3022
3025
  targetPath: o,
3023
- sourceExists: await Y(a) || await J(a),
3024
- targetExists: await Y(o) || await J(o)
3026
+ sourceExists: await Y(a) || await nr(a),
3027
+ targetExists: await Y(o) || await nr(o)
3025
3028
  };
3026
3029
  }
3027
- async function hi(e) {
3028
- let { file: t, packDir: n, paths: r, projectRoot: i } = e, { sourcePath: a, targetPath: o, sourceExists: c, targetExists: l } = await mi({
3030
+ async function Oi(e) {
3031
+ let { file: t, packDir: n, paths: r, projectRoot: i } = e, { sourcePath: a, targetPath: o, sourceExists: s, targetExists: c } = await Di({
3029
3032
  file: t,
3030
3033
  packDir: n,
3031
3034
  paths: r,
3032
3035
  projectRoot: i
3033
3036
  });
3034
- if (!c) return `${t.source}: Source not found (${a})`;
3037
+ if (!s) return `${t.source}: Source not found (${a})`;
3035
3038
  switch (t.strategy) {
3036
3039
  case "create":
3037
3040
  case "skip-if-exists":
3038
3041
  case "override": return null;
3039
- case "merge": return !l || !t.marker || (await s.readFile(o, "utf-8")).includes(t.marker) ? null : `${t.target}: Marker "${t.marker}" not found`;
3042
+ case "merge": return !c || !t.marker || (await v.readFile(o, "utf-8")).includes(t.marker) ? null : `${t.target}: Marker "${t.marker}" not found`;
3040
3043
  default: return `${t.target}: Unknown strategy: ${String(t.strategy)}`;
3041
3044
  }
3042
3045
  }
3043
- async function gi(e) {
3044
- let { file: t, packDir: n, paths: r, projectRoot: i, force: a, overwrite: o } = e, { sourcePath: c, targetPath: l, sourceExists: u, targetExists: d } = await mi({
3046
+ async function ki(e) {
3047
+ let { file: t, packDir: n, paths: r, projectRoot: i, force: a, overwrite: o } = e, { sourcePath: s, targetPath: c, sourceExists: l, targetExists: u } = await Di({
3045
3048
  file: t,
3046
3049
  packDir: n,
3047
3050
  paths: r,
3048
3051
  projectRoot: i
3049
3052
  });
3050
- if (!u) return {
3053
+ if (!l) return {
3051
3054
  status: "error",
3052
3055
  path: t.source,
3053
3056
  reason: "Source not found"
3054
3057
  };
3055
3058
  switch (t.strategy) {
3056
3059
  case "create": {
3057
- let e = a || (o?.has(l) ?? !1);
3058
- return d && !e ? {
3060
+ let e = a || (o?.has(c) ?? !1);
3061
+ return u && !e ? {
3059
3062
  status: "skipped",
3060
3063
  path: t.target,
3061
3064
  reason: "Already exists"
3062
- } : (await pi(c, l), {
3065
+ } : (await Ei(s, c), {
3063
3066
  status: "installed",
3064
3067
  path: t.target
3065
3068
  });
3066
3069
  }
3067
- case "skip-if-exists": return d ? {
3070
+ case "skip-if-exists": return u ? {
3068
3071
  status: "skipped",
3069
3072
  path: t.target,
3070
3073
  reason: "Already exists (skip-if-exists)"
3071
- } : (await pi(c, l), {
3074
+ } : (await Ei(s, c), {
3072
3075
  status: "installed",
3073
3076
  path: t.target
3074
3077
  });
3075
- case "override": return await pi(c, l), {
3078
+ case "override": return await Ei(s, c), {
3076
3079
  status: "installed",
3077
3080
  path: t.target
3078
3081
  };
3079
3082
  case "merge": {
3080
- if (!d) return await pi(c, l), {
3083
+ if (!u) return await Ei(s, c), {
3081
3084
  status: "installed",
3082
3085
  path: t.target
3083
3086
  };
3084
- let e = await s.readFile(c, "utf-8"), n = await s.readFile(l, "utf-8");
3087
+ let e = await v.readFile(s, "utf-8"), n = await v.readFile(c, "utf-8");
3085
3088
  if (t.marker) {
3086
3089
  let r = n.indexOf(t.marker);
3087
3090
  if (r === -1) return {
@@ -3090,10 +3093,10 @@ async function gi(e) {
3090
3093
  reason: `Marker "${t.marker}" not found`
3091
3094
  };
3092
3095
  let i = n.slice(0, r) + e + n.slice(r);
3093
- await s.writeFile(l, i);
3096
+ await v.writeFile(c, i);
3094
3097
  } else {
3095
3098
  let t = n + "\n" + e;
3096
- await s.writeFile(l, t);
3099
+ await v.writeFile(c, t);
3097
3100
  }
3098
3101
  return {
3099
3102
  status: "installed",
@@ -3107,15 +3110,15 @@ async function gi(e) {
3107
3110
  };
3108
3111
  }
3109
3112
  }
3110
- async function _i(e) {
3113
+ async function Ai(e) {
3111
3114
  let { packs: t, config: n, projectRoot: r, slotsByPack: i } = e, a = n.paths;
3112
3115
  if (!a) throw Error("stack.json is missing 'paths' configuration. Run 'npx @hype-stack/cli init' to set it up.");
3113
3116
  let o = [], s = /* @__PURE__ */ new Set();
3114
3117
  for (let e of t) {
3115
3118
  let t = i?.get(e.manifest.name);
3116
3119
  for (let n of e.manifest.files) {
3117
- if (n.strategy !== "create" || !fi(n, t)) continue;
3118
- let { targetPath: i, targetExists: c } = await mi({
3120
+ if (n.strategy !== "create" || !Ti(n, t)) continue;
3121
+ let { targetPath: i, targetExists: c } = await Di({
3119
3122
  file: n,
3120
3123
  packDir: e.packDir,
3121
3124
  paths: a,
@@ -3130,13 +3133,13 @@ async function _i(e) {
3130
3133
  }
3131
3134
  return o;
3132
3135
  }
3133
- async function vi(e) {
3136
+ async function ji(e) {
3134
3137
  let { manifest: t, config: n, projectRoot: r, force: i, packDir: a, slots: o } = e, s = n.paths;
3135
3138
  if (!s) throw Error("stack.json is missing 'paths' configuration. Run 'npx @hype-stack/cli init' to set it up.");
3136
3139
  let c = [];
3137
3140
  for (let e of t.files) {
3138
- if (!fi(e, o)) continue;
3139
- let t = await hi({
3141
+ if (!Ti(e, o)) continue;
3142
+ let t = await Oi({
3140
3143
  file: e,
3141
3144
  packDir: a,
3142
3145
  paths: s,
@@ -3147,16 +3150,16 @@ async function vi(e) {
3147
3150
  }
3148
3151
  return c;
3149
3152
  }
3150
- async function yi(e) {
3153
+ async function Mi(e) {
3151
3154
  let { manifest: t, config: n, projectRoot: r, force: i, overwrite: a, packDir: o, slots: s } = e, c = n.paths;
3152
3155
  if (!c) throw Error("stack.json is missing 'paths' configuration. Run 'npx @hype-stack/cli init' to set it up.");
3153
3156
  let l = {
3154
3157
  installed: [],
3155
3158
  skipped: [],
3156
3159
  errors: []
3157
- }, u = t.files.filter((e) => fi(e, s));
3160
+ }, u = t.files.filter((e) => Ti(e, s));
3158
3161
  for (let e of u) {
3159
- let t = await gi({
3162
+ let t = await ki({
3160
3163
  file: e,
3161
3164
  packDir: o,
3162
3165
  paths: c,
@@ -3176,40 +3179,40 @@ async function yi(e) {
3176
3179
  break;
3177
3180
  }
3178
3181
  }
3179
- await si({
3182
+ await bi({
3180
3183
  files: u,
3181
3184
  paths: c,
3182
3185
  projectRoot: r,
3183
3186
  projectName: n.name
3184
- }), t.env && t.env.length > 0 && await mr(t.env, c, r), t.routes && t.routes.length > 0 && await yr(t.routes, c, r), t.context && t.context.length > 0 && await Sr(t.context, c, r), t.sockets && t.sockets.length > 0 && await Ar(t.sockets, c, r), t.sdkConfigurations && t.sdkConfigurations.length > 0 && await Pr(t.sdkConfigurations, c, r), t.enums && t.enums.length > 0 && await Or(t.enums, c, r), t.frontendRoutes && t.frontendRoutes.length > 0 && await Lr(t.frontendRoutes, c, r);
3187
+ }), t.env && t.env.length > 0 && await Dr(t.env, c, r), t.routes && t.routes.length > 0 && await Mr(t.routes, c, r), t.context && t.context.length > 0 && await Fr(t.context, c, r), t.sockets && t.sockets.length > 0 && await Ur(t.sockets, c, r), t.sdkConfigurations && t.sdkConfigurations.length > 0 && await qr(t.sdkConfigurations, c, r), t.enums && t.enums.length > 0 && await Vr(t.enums, c, r), t.frontendRoutes && t.frontendRoutes.length > 0 && await Xr(t.frontendRoutes, c, r);
3185
3188
  let d = s && s.length > 0 ? s : ["frontend"];
3186
- for (let e of d) t.nav && t.nav.length > 0 && await Vr({
3189
+ for (let e of d) t.nav && t.nav.length > 0 && await ei({
3187
3190
  entries: t.nav,
3188
3191
  paths: c,
3189
3192
  projectRoot: r,
3190
3193
  slot: e
3191
- }), t.navbarActions && t.navbarActions.length > 0 && await ei({
3194
+ }), t.navbarActions && t.navbarActions.length > 0 && await pi({
3192
3195
  actions: t.navbarActions,
3193
3196
  paths: c,
3194
3197
  projectRoot: r,
3195
3198
  slot: e
3196
- }), t.userMenuActions && t.userMenuActions.length > 0 && await ti({
3199
+ }), t.userMenuActions && t.userMenuActions.length > 0 && await mi({
3197
3200
  actions: t.userMenuActions,
3198
3201
  paths: c,
3199
3202
  projectRoot: r,
3200
3203
  slot: e
3201
3204
  });
3202
- return t.onboardingSteps && t.onboardingSteps.length > 0 && await Yr(t.onboardingSteps, c, r), t.postLoginRedirect && await Hr({
3205
+ return t.onboardingSteps && t.onboardingSteps.length > 0 && await ci(t.onboardingSteps, c, r), t.postLoginRedirect && await ti({
3203
3206
  postLoginRedirect: t.postLoginRedirect,
3204
3207
  paths: c,
3205
3208
  projectRoot: r,
3206
3209
  slot: d[0]
3207
3210
  }), l;
3208
3211
  }
3209
- async function bi(e) {
3212
+ async function Ni(e) {
3210
3213
  let { packs: t, config: n, projectRoot: r, force: i, overwrite: a, slotsByPack: o } = e, s = [];
3211
3214
  for (let e of t) {
3212
- let t = o?.get(e.manifest.name), a = await vi({
3215
+ let t = o?.get(e.manifest.name), a = await ji({
3213
3216
  manifest: e.manifest,
3214
3217
  config: n,
3215
3218
  projectRoot: r,
@@ -3229,7 +3232,7 @@ async function bi(e) {
3229
3232
  };
3230
3233
  let c = [], l = [], u = [], d = [], f = n;
3231
3234
  for (let e of t) {
3232
- let t = o?.get(e.manifest.name), n = await yi({
3235
+ let t = o?.get(e.manifest.name), n = await Mi({
3233
3236
  manifest: e.manifest,
3234
3237
  config: f,
3235
3238
  projectRoot: r,
@@ -3238,7 +3241,7 @@ async function bi(e) {
3238
3241
  packDir: e.packDir,
3239
3242
  slots: t
3240
3243
  });
3241
- c.push(...n.installed), l.push(...n.skipped), u.push(...n.errors), f = await xi(f, e.manifest.name, r), d.push(e.manifest.name);
3244
+ c.push(...n.installed), l.push(...n.skipped), u.push(...n.errors), f = await Pi(f, e.manifest.name, r), d.push(e.manifest.name);
3242
3245
  }
3243
3246
  return {
3244
3247
  installed: c,
@@ -3249,19 +3252,19 @@ async function bi(e) {
3249
3252
  config: f
3250
3253
  };
3251
3254
  }
3252
- async function xi(e, t, n) {
3255
+ async function Pi(e, t, n) {
3253
3256
  let r = {
3254
3257
  ...e,
3255
3258
  installedPacks: [...e.installedPacks ?? [], t]
3256
3259
  };
3257
- return await er(n, r), r;
3260
+ return await pr(n, r), r;
3258
3261
  }
3259
- async function Si(e) {
3262
+ async function Fi(e) {
3260
3263
  let { manifest: t, config: n, projectRoot: r, templateDir: i } = e, a = n.paths;
3261
3264
  if (!a) throw Error("stack.json is missing 'paths' configuration. Run 'npx @hype-stack/cli init' to set it up.");
3262
3265
  let o = [], s = [];
3263
3266
  for (let e of t.files) {
3264
- let t = await gi({
3267
+ let t = await ki({
3265
3268
  file: e,
3266
3269
  packDir: i,
3267
3270
  paths: a,
@@ -3279,11 +3282,11 @@ async function Si(e) {
3279
3282
  case "skipped": break;
3280
3283
  }
3281
3284
  }
3282
- return t.frontendRoutes && t.frontendRoutes.length > 0 && await Lr(t.frontendRoutes, a, r), t.nav && t.nav.length > 0 && await Vr({
3285
+ return t.frontendRoutes && t.frontendRoutes.length > 0 && await Xr(t.frontendRoutes, a, r), t.nav && t.nav.length > 0 && await ei({
3283
3286
  entries: t.nav,
3284
3287
  paths: a,
3285
3288
  projectRoot: r
3286
- }), t.postLoginRedirect && await Hr({
3289
+ }), t.postLoginRedirect && await ti({
3287
3290
  postLoginRedirect: t.postLoginRedirect,
3288
3291
  paths: a,
3289
3292
  projectRoot: r
@@ -3294,28 +3297,28 @@ async function Si(e) {
3294
3297
  }
3295
3298
  //#endregion
3296
3299
  //#region src/core/pack-categories.ts
3297
- var Ci = [
3300
+ var Ii = [
3298
3301
  "starter",
3299
3302
  "layout",
3300
3303
  "feature"
3301
- ], wi = {
3304
+ ], Li = {
3302
3305
  starter: "Starter",
3303
3306
  layout: "Layout",
3304
3307
  feature: "Features"
3305
- }, Ti = new Set(["starter", "layout"]), Ei = "layout-basic";
3306
- function Di(e, t = {}) {
3308
+ }, Ri = new Set(["starter", "layout"]), zi = "layout-basic";
3309
+ function Bi(e, t = {}) {
3307
3310
  let n = [];
3308
- for (let r of Ci) {
3311
+ for (let r of Ii) {
3309
3312
  let i = e.filter((e) => e.category === r);
3310
3313
  if (i.length === 0) continue;
3311
- let a = Ti.has(r) ? "single" : "multiple";
3314
+ let a = Ri.has(r) ? "single" : "multiple";
3312
3315
  if (r === "layout") {
3313
- n.push(Oi("frontend", i)), t.adminAvailable && n.push(Oi("admin", i));
3316
+ n.push(Vi("frontend", i)), t.adminAvailable && n.push(Vi("admin", i));
3314
3317
  continue;
3315
3318
  }
3316
3319
  n.push({
3317
3320
  category: r,
3318
- label: wi[r],
3321
+ label: Li[r],
3319
3322
  mode: a,
3320
3323
  packs: i,
3321
3324
  preselect: null
@@ -3323,20 +3326,105 @@ function Di(e, t = {}) {
3323
3326
  }
3324
3327
  return n;
3325
3328
  }
3326
- function Oi(e, t) {
3327
- let n = t.some((e) => e.name === Ei);
3329
+ function Vi(e, t) {
3330
+ let n = t.some((e) => e.name === zi);
3328
3331
  return {
3329
3332
  category: "layout",
3330
3333
  label: e === "admin" ? "Admin Layout" : "Layout",
3331
3334
  mode: "single",
3332
3335
  packs: t,
3333
- preselect: n ? Ei : null,
3336
+ preselect: n ? zi : null,
3334
3337
  slot: e
3335
3338
  };
3336
3339
  }
3337
3340
  //#endregion
3341
+ //#region src/ui/logger.ts
3342
+ function Hi(e) {
3343
+ o.note(e.map((e) => `${R.arrow} ${e}`).join("\n"), "Next steps");
3344
+ }
3345
+ function Z() {
3346
+ o.cancel(L.muted("Operation cancelled.")), process.exit(0);
3347
+ }
3348
+ //#endregion
3349
+ //#region src/core/post-setup.ts
3350
+ async function Ui() {
3351
+ return (await J("docker", ["info"], { cwd: process.cwd() })).exitCode === 0;
3352
+ }
3353
+ async function Wi(e) {
3354
+ return Y(`${e}/apps/backend/.env`);
3355
+ }
3356
+ async function Gi(e, t, n) {
3357
+ let r = n ? `Start services with ${L.command("docker compose up -d")}?` : `Docker is not running. Start services with ${L.command("docker compose up -d")}?`, i = t ? !0 : await o.confirm({
3358
+ message: r,
3359
+ initialValue: !0
3360
+ });
3361
+ if (o.isCancel(i) && Z(), !i) return o.log.info(L.muted("Skipping Docker services and database migrations.")), !1;
3362
+ let a = o.spinner();
3363
+ return a.start("Starting Docker services..."), (await J("docker", [
3364
+ "compose",
3365
+ "up",
3366
+ "-d"
3367
+ ], { cwd: `${e}/apps/backend` })).exitCode === 0 ? (a.stop(L.success("Docker services started")), !0) : (a.stop(L.warning("Failed to start Docker services")), o.log.warn(L.muted("Run `docker compose up -d` in apps/backend manually to start services.")), o.log.info(L.muted("Skipping database migrations.")), !1);
3368
+ }
3369
+ async function Ki(e, t = 15, n = 2e3) {
3370
+ for (let r = 0; r < t; r++) {
3371
+ if ((await J("docker", [
3372
+ "compose",
3373
+ "exec",
3374
+ "-T",
3375
+ "postgres",
3376
+ "pg_isready",
3377
+ "-U",
3378
+ "postgres"
3379
+ ], { cwd: `${e}/apps/backend` })).exitCode === 0) return !0;
3380
+ await new Promise((e) => setTimeout(e, n));
3381
+ }
3382
+ return !1;
3383
+ }
3384
+ async function qi(e, t, n = {}) {
3385
+ if (!await Wi(e)) {
3386
+ o.log.warn(`${L.path(".env")} not found in ${L.path("apps/backend")}. Skipping Docker and migrations - configure it first.`);
3387
+ return;
3388
+ }
3389
+ if (!await Gi(e, t, await Ui())) return;
3390
+ let r = o.spinner();
3391
+ if (r.start("Waiting for Postgres to be ready..."), !await Ki(e, n.postgresMaxAttempts ?? 15, n.postgresCheckIntervalMs ?? 2e3)) {
3392
+ r.stop(L.warning("Postgres health check timed out")), o.log.warn(L.muted("Run migrations manually once Postgres is ready: pnpm --filter @internal/backend migration:latest"));
3393
+ return;
3394
+ }
3395
+ r.stop(L.success("Postgres is ready"));
3396
+ let i = t ? !0 : await o.confirm({
3397
+ message: `Run database migrations with ${L.command("prisma migrate deploy")}?`,
3398
+ initialValue: !0
3399
+ });
3400
+ if (o.isCancel(i) && Z(), !i) {
3401
+ o.log.info(L.muted("Skipping database migrations."));
3402
+ return;
3403
+ }
3404
+ let a = o.spinner();
3405
+ if (a.start("Running database migrations..."), (await J("pnpm", [
3406
+ "--filter",
3407
+ "@internal/backend",
3408
+ "migration:latest"
3409
+ ], { cwd: e })).exitCode !== 0) {
3410
+ a.stop(L.warning("Migrations failed")), o.log.warn(L.muted("Run `pnpm --filter @internal/backend migration:latest` manually to apply migrations."));
3411
+ return;
3412
+ }
3413
+ a.stop(L.success("Database migrations applied"));
3414
+ let s = o.spinner();
3415
+ if (s.start("Generating Prisma client..."), (await J("pnpm", [
3416
+ "--filter",
3417
+ "@internal/backend",
3418
+ "generate"
3419
+ ], { cwd: e })).exitCode !== 0) {
3420
+ s.stop(L.warning("Prisma client generation failed")), o.log.warn(L.muted("Run `pnpm --filter @internal/backend generate` manually."));
3421
+ return;
3422
+ }
3423
+ s.stop(L.success("Prisma client generated"));
3424
+ }
3425
+ //#endregion
3338
3426
  //#region src/core/resolve.ts
3339
- function ki(e) {
3427
+ function Ji(e) {
3340
3428
  let t = /* @__PURE__ */ new Map();
3341
3429
  for (let n of e) t.set(n.name, {
3342
3430
  name: n.name,
@@ -3344,7 +3432,7 @@ function ki(e) {
3344
3432
  });
3345
3433
  return t;
3346
3434
  }
3347
- function Ai(e, t, n = /* @__PURE__ */ new Set()) {
3435
+ function Yi(e, t, n = /* @__PURE__ */ new Set()) {
3348
3436
  let r = /* @__PURE__ */ new Set();
3349
3437
  function i(e) {
3350
3438
  if (n.has(e)) return [];
@@ -3358,10 +3446,10 @@ function Ai(e, t, n = /* @__PURE__ */ new Set()) {
3358
3446
  }
3359
3447
  return i(e);
3360
3448
  }
3361
- function ji(e, t, n = []) {
3449
+ function Xi(e, t, n = []) {
3362
3450
  let r = new Set(n), i = new Set(n), a = [];
3363
3451
  for (let n of e) {
3364
- let e = Ai(n, t, new Set(i));
3452
+ let e = Yi(n, t, new Set(i));
3365
3453
  for (let t of e) i.has(t) || (i.add(t), a.push(t));
3366
3454
  }
3367
3455
  return {
@@ -3369,7 +3457,7 @@ function ji(e, t, n = []) {
3369
3457
  alreadyInstalled: e.filter((e) => r.has(e))
3370
3458
  };
3371
3459
  }
3372
- function Mi(e) {
3460
+ function Zi(e) {
3373
3461
  let { order: t, graph: n, isLocked: r, installed: i = [] } = e, a = new Set(i), o = /* @__PURE__ */ new Set();
3374
3462
  for (let e of t) {
3375
3463
  let t = n.get(e)?.dependencies.some((e) => !a.has(e) && o.has(e)) ?? !1;
@@ -3382,7 +3470,7 @@ function Mi(e) {
3382
3470
  }
3383
3471
  //#endregion
3384
3472
  //#region src/core/variants.ts
3385
- function Ni(e, t = {}) {
3473
+ function Qi(e, t = {}) {
3386
3474
  let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
3387
3475
  for (let i of e) {
3388
3476
  let e = t[i.family] ?? i.default;
@@ -3394,14 +3482,14 @@ function Ni(e, t = {}) {
3394
3482
  familyOf: r
3395
3483
  };
3396
3484
  }
3397
- function Pi(e, t, n) {
3485
+ function $i(e, t, n) {
3398
3486
  return [...e.map((e) => n.chosen.get(e.family) ?? e.default), ...t];
3399
3487
  }
3400
- function Fi(e, t) {
3488
+ function ea(e, t) {
3401
3489
  let n = t.familyOf.get(e);
3402
3490
  return n ? t.chosen.get(n) ?? e : e;
3403
3491
  }
3404
- function Ii(e, t) {
3492
+ function ta(e, t) {
3405
3493
  let n = /* @__PURE__ */ new Map();
3406
3494
  for (let t of e) t.family && n.set(t.name, t.family);
3407
3495
  let r = new Set(t), i = /* @__PURE__ */ new Map();
@@ -3417,73 +3505,174 @@ function Ii(e, t) {
3417
3505
  familyOf: n
3418
3506
  };
3419
3507
  }
3420
- function Li(e, t) {
3508
+ function na(e, t) {
3421
3509
  return e.map((e) => ({
3422
3510
  ...e,
3423
- dependencies: e.dependencies.map((e) => Fi(e, t))
3511
+ dependencies: e.dependencies.map((e) => ea(e, t))
3424
3512
  }));
3425
3513
  }
3426
3514
  //#endregion
3427
3515
  //#region src/ui/banner.ts
3428
- var Ri = [
3516
+ var ra = [
3429
3517
  " ██╗ ██╗ ██╗ ██╗ ██████╗ ███████╗",
3430
3518
  " ██║ ██║ ╚██╗ ██╔╝ ██╔══██╗ ██╔════╝",
3431
3519
  " ███████║ ╚████╔╝ ██████╔╝ █████╗ ",
3432
3520
  " ██╔══██║ ╚██╔╝ ██╔═══╝ ██╔══╝ ",
3433
3521
  " ██║ ██║ ██║ ██║ ███████╗",
3434
3522
  " ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝"
3435
- ], zi = [
3523
+ ], ia = [
3436
3524
  " ███████╗ ████████╗ █████╗ ██████╗ ██╗ ██╗",
3437
3525
  " ██╔════╝ ╚══██╔══╝ ██╔══██╗ ██╔════╝ ██║ ██╔╝",
3438
3526
  " ███████╗ ██║ ███████║ ██║ █████╔╝ ",
3439
3527
  " ╚════██║ ██║ ██╔══██║ ██║ ██╔═██╗ ",
3440
3528
  " ███████║ ██║ ██║ ██║ ╚██████╗ ██║ ██╗",
3441
3529
  " ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝"
3442
- ], Bi = [
3530
+ ], aa = [
3443
3531
  253,
3444
3532
  176,
3445
3533
  21
3446
- ], Vi = [
3534
+ ], oa = [
3447
3535
  245,
3448
3536
  76,
3449
3537
  2
3450
- ], Hi = 5, Ui = [
3538
+ ], sa = 5, ca = [
3451
3539
  17,
3452
3540
  103,
3453
3541
  248
3454
- ], Wi = [
3542
+ ], la = [
3455
3543
  42,
3456
3544
  160,
3457
3545
  250
3458
- ], Gi = .2;
3459
- function Ki() {
3546
+ ], ua = .2;
3547
+ function da() {
3460
3548
  console.log();
3461
- for (let e of ce(Ri, {
3462
- start: Bi,
3463
- end: Vi,
3464
- angle: Hi
3465
- })) console.log(c.bold(e));
3466
- for (let e of ce(zi, {
3467
- start: Ui,
3468
- end: Wi,
3469
- angle: Gi
3470
- })) console.log(c.bold(e));
3471
- console.log(), console.log(` ${R.spark} ${c.dim("v" + _)} ${c.dim("·")} ${oe("Ship web + desktop apps from one codebase")}`), console.log();
3472
- }
3473
- function qi() {
3474
- console.log(), console.log(` ${R.bolt} ${re.orange("Hype")}${re.skyBlue("Stack")} ${c.dim("v" + _)}`), console.log();
3549
+ for (let e of xe(ra, {
3550
+ start: aa,
3551
+ end: oa,
3552
+ angle: sa
3553
+ })) console.log(y.bold(e));
3554
+ for (let e of xe(ia, {
3555
+ start: ca,
3556
+ end: la,
3557
+ angle: ua
3558
+ })) console.log(y.bold(e));
3559
+ console.log(), console.log(` ${R.spark} ${y.dim("v" + k)} ${y.dim("·")} ${ye("Ship web + desktop apps from one codebase")}`), console.log();
3560
+ }
3561
+ function fa() {
3562
+ console.log(), console.log(` ${R.bolt} ${ge.orange("Hype")}${ge.skyBlue("Stack")} ${y.dim("v" + k)}`), console.log();
3475
3563
  }
3476
3564
  //#endregion
3477
- //#region src/ui/logger.ts
3478
- function Ji(e) {
3479
- o.note(e.map((e) => `${R.arrow} ${e}`).join("\n"), "Next steps");
3480
- }
3481
- function Z() {
3482
- o.cancel(L.muted("Operation cancelled.")), process.exit(0);
3565
+ //#region src/ui/pack-multiselect.ts
3566
+ var pa = class extends D {
3567
+ options;
3568
+ cursor = 0;
3569
+ selected;
3570
+ required;
3571
+ continueLabel;
3572
+ maxItems;
3573
+ message;
3574
+ constructor(e) {
3575
+ let { message: t, options: n, initialValues: r, required: i, continueLabel: a, maxItems: o, input: s, output: c, signal: l } = e;
3576
+ super({
3577
+ input: s,
3578
+ output: c,
3579
+ signal: l,
3580
+ validate: (e) => {
3581
+ if (i && (e === void 0 || e.length === 0)) return "Select at least one pack, or highlight Continue to install none.";
3582
+ },
3583
+ render() {
3584
+ return this.renderFrame();
3585
+ }
3586
+ }, !1), this.options = n, this.message = t, this.required = i ?? !1, this.continueLabel = a ?? "Continue", this.maxItems = o, this.selected = new Set(r ?? []), this.value = [...this.selected], this.on("cursor", (e) => {
3587
+ switch (e) {
3588
+ case "up":
3589
+ case "left":
3590
+ this.move(-1);
3591
+ break;
3592
+ case "down":
3593
+ case "right":
3594
+ this.move(1);
3595
+ break;
3596
+ case "space":
3597
+ this.toggleCurrent();
3598
+ break;
3599
+ }
3600
+ }), this.on("key", (e, t) => this.handleKey(e, t));
3601
+ }
3602
+ get rowCount() {
3603
+ return this.options.length + 1;
3604
+ }
3605
+ get atContinue() {
3606
+ return this.cursor >= this.options.length;
3607
+ }
3608
+ _shouldSubmit() {
3609
+ return this.atContinue;
3610
+ }
3611
+ move(e) {
3612
+ let t = this.rowCount;
3613
+ this.cursor = (this.cursor + e + t) % t;
3614
+ }
3615
+ toggleCurrent() {
3616
+ if (this.atContinue) return;
3617
+ let e = this.options[this.cursor];
3618
+ !e || e.disabled || (this.selected.has(e.value) ? this.selected.delete(e.value) : this.selected.add(e.value), this.value = [...this.selected]);
3619
+ }
3620
+ toggleAll() {
3621
+ let e = this.options.filter((e) => !e.disabled).map((e) => e.value), t = e.every((e) => this.selected.has(e));
3622
+ this.selected = t ? /* @__PURE__ */ new Set() : new Set(e), this.value = [...this.selected];
3623
+ }
3624
+ handleKey(e, t) {
3625
+ if (t?.name === "return") {
3626
+ this.atContinue || this.toggleCurrent();
3627
+ return;
3628
+ }
3629
+ e === "a" && this.toggleAll();
3630
+ }
3631
+ renderFrame() {
3632
+ let e = h.withGuide, t = g(this.state), n = _(this.state), r = e ? `${n} ` : "", i = e ? O("cyan", c) : "", a = `${e ? `${O("gray", s)}\n` : ""}${t} ${this.message}\n`, o = (e, t) => {
3633
+ let n = e.label ?? String(e.value);
3634
+ if (e.disabled) return `${O("gray", u)} ${O(["strikethrough", "gray"], n)}`;
3635
+ let r = this.selected.has(e.value) ? O("green", d) : t ? O("cyan", l) : O("dim", u);
3636
+ return `${t ? `${O("green", f)} ` : " "}${r} ${t ? n : O("dim", n)}${t && e.hint ? ` ${O("dim", `(${e.hint})`)}` : ""}`;
3637
+ }, p = () => {
3638
+ let e = this.atContinue;
3639
+ return `${e ? `${O("green", f)} ` : " "}${O(e ? "cyan" : "dim", this.continueLabel)}${e ? O("dim", " (enter to install)") : ""}`;
3640
+ };
3641
+ switch (this.state) {
3642
+ case "submit": {
3643
+ let t = this.options.filter((e) => this.selected.has(e.value)).map((e) => e.label ?? String(e.value)).join(O("dim", ", ")) || O("dim", "none");
3644
+ return `${a}${e ? O("gray", s) : ""} ${O("dim", t)}`;
3645
+ }
3646
+ case "cancel": {
3647
+ let t = this.options.filter((e) => this.selected.has(e.value)).map((e) => e.label ?? String(e.value)).join(O("dim", ", "));
3648
+ return t.trim() === "" ? `${a}${e ? O("gray", s) : ""}` : `${a}${e ? O("gray", s) : ""} ${O(["strikethrough", "dim"], t)}`;
3649
+ }
3650
+ default: {
3651
+ let t = m({
3652
+ cursor: Math.min(this.cursor, this.options.length - 1),
3653
+ options: this.options,
3654
+ style: (e, t) => o(e, t),
3655
+ output: this.output,
3656
+ maxItems: this.maxItems,
3657
+ columnPadding: e ? 3 : 0,
3658
+ rowPadding: a.split("\n").length + (e ? 4 : 3)
3659
+ }).map((e) => `${r}${e}`), n = `${O("dim", "↑/↓ move · enter/space toggle · a all · enter on Continue to install")}`, s = [
3660
+ ...t,
3661
+ `${r}${p()}`,
3662
+ `${r}${n}`,
3663
+ i
3664
+ ];
3665
+ return this.state === "error" && s.push(`${r}${O("yellow", this.error)}`), `${a}${s.join("\n")}\n`;
3666
+ }
3667
+ }
3668
+ }
3669
+ };
3670
+ function ma(e) {
3671
+ return new pa(e).prompt();
3483
3672
  }
3484
3673
  //#endregion
3485
3674
  //#region src/core/apply-theme.ts
3486
- function Yi(e, t) {
3675
+ function ha(e, t) {
3487
3676
  let n = e.indexOf(t);
3488
3677
  if (n === -1) return null;
3489
3678
  let r = e.indexOf("{", n);
@@ -3498,47 +3687,47 @@ function Yi(e, t) {
3498
3687
  bodyEnd: a - 1
3499
3688
  } : null;
3500
3689
  }
3501
- function Xi(e, t) {
3690
+ function ga(e, t) {
3502
3691
  let n = e;
3503
3692
  for (let [e, r] of Object.entries(t)) {
3504
- let t = RegExp(`(^[ \\t]*--${Zi(e)}[ \\t]*:[ \\t]*)([^;\\n]*);`, "m");
3693
+ let t = RegExp(`(^[ \\t]*--${_a(e)}[ \\t]*:[ \\t]*)([^;\\n]*);`, "m");
3505
3694
  n = n.replace(t, (e, t) => `${t}${r};`);
3506
3695
  }
3507
3696
  return n;
3508
3697
  }
3509
- function Zi(e) {
3698
+ function _a(e) {
3510
3699
  return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
3511
3700
  }
3512
- function Qi(e, t) {
3513
- let n = Yi(e, ":root"), r = Yi(e, ".dark"), i = e;
3701
+ function va(e, t) {
3702
+ let n = ha(e, ":root"), r = ha(e, ".dark"), i = e;
3514
3703
  if (n) {
3515
3704
  let e = i.slice(0, n.bodyStart), r = i.slice(n.bodyStart, n.bodyEnd), a = i.slice(n.bodyEnd);
3516
- i = e + Xi(r, t.light) + a;
3705
+ i = e + ga(r, t.light) + a;
3517
3706
  }
3518
3707
  if (r) {
3519
- let e = Yi(i, ".dark");
3708
+ let e = ha(i, ".dark");
3520
3709
  if (e) {
3521
3710
  let n = i.slice(0, e.bodyStart), r = i.slice(e.bodyStart, e.bodyEnd), a = i.slice(e.bodyEnd);
3522
- i = n + Xi(r, t.dark) + a;
3711
+ i = n + ga(r, t.dark) + a;
3523
3712
  }
3524
3713
  }
3525
3714
  return i;
3526
3715
  }
3527
- var $i = "assets/styles.css";
3528
- async function ea(e, t) {
3529
- let n = p.resolve(e, $i), r;
3716
+ var ya = "assets/styles.css";
3717
+ async function ba(e, t) {
3718
+ let n = w.resolve(e, ya), r;
3530
3719
  try {
3531
- r = await s.readFile(n, "utf-8");
3720
+ r = await v.readFile(n, "utf-8");
3532
3721
  } catch {
3533
3722
  return !1;
3534
3723
  }
3535
- let i = Qi(r, t);
3536
- return i === r || await s.writeFile(n, i, "utf-8"), !0;
3724
+ let i = va(r, t);
3725
+ return i === r || await v.writeFile(n, i, "utf-8"), !0;
3537
3726
  }
3538
3727
  //#endregion
3539
3728
  //#region src/core/clone.ts
3540
- async function ta(e) {
3541
- let t = await g(v, {
3729
+ async function xa(e) {
3730
+ let t = await ee(te, {
3542
3731
  dir: e,
3543
3732
  force: !0
3544
3733
  });
@@ -3549,7 +3738,7 @@ async function ta(e) {
3549
3738
  }
3550
3739
  //#endregion
3551
3740
  //#region src/core/editor-config.ts
3552
- function na(e) {
3741
+ function Sa(e) {
3553
3742
  let t = {
3554
3743
  globs: [],
3555
3744
  alwaysApply: !1
@@ -3584,10 +3773,10 @@ function na(e) {
3584
3773
  content: i
3585
3774
  };
3586
3775
  }
3587
- function ra(e) {
3776
+ function Ca(e) {
3588
3777
  return e.frontmatter.globs.length > 0 ? `---\npaths:\n${e.frontmatter.globs.map((e) => ` - "${e}"`).join("\n")}\n---\n\n${e.content}` : e.content;
3589
3778
  }
3590
- function ia(e) {
3779
+ function wa(e) {
3591
3780
  let t;
3592
3781
  t = e.frontmatter.alwaysApply ? "always_on" : e.frontmatter.globs.length > 0 ? "glob" : "model_decision";
3593
3782
  let n = [`trigger: ${t}`];
@@ -3597,30 +3786,30 @@ function ia(e) {
3597
3786
  }
3598
3787
  return e.frontmatter.description && n.push(`description: ${e.frontmatter.description}`), `---\n${n.join("\n")}\n---\n\n${e.content}`;
3599
3788
  }
3600
- function aa(e) {
3789
+ function Ta(e) {
3601
3790
  return e.frontmatter.globs.length > 0 ? `---\napplyTo: "${e.frontmatter.globs.join(", ")}"\n---\n\n${e.content}` : e.content;
3602
3791
  }
3603
- var oa = {
3792
+ var Ea = {
3604
3793
  claude: {
3605
3794
  rulesDir: ".claude/rules",
3606
3795
  extension: ".md",
3607
- convert: ra
3796
+ convert: Ca
3608
3797
  },
3609
3798
  windsurf: {
3610
3799
  rulesDir: ".windsurf/rules",
3611
3800
  extension: ".md",
3612
- convert: ia
3801
+ convert: wa
3613
3802
  },
3614
3803
  copilot: {
3615
3804
  rulesDir: ".github/instructions",
3616
3805
  extension: ".instructions.md",
3617
- convert: aa
3806
+ convert: Ta
3618
3807
  }
3619
3808
  };
3620
- async function sa(e) {
3621
- let t = p.join(e, D), n = (await s.readdir(t, { withFileTypes: !0 }).catch(() => [])).filter((e) => e.isFile() && e.name.endsWith(".mdc"));
3809
+ async function Da(e) {
3810
+ let t = w.join(e, se), n = (await v.readdir(t, { withFileTypes: !0 }).catch(() => [])).filter((e) => e.isFile() && e.name.endsWith(".mdc"));
3622
3811
  return await Promise.all(n.map(async (e) => {
3623
- let n = p.join(t, e.name), { frontmatter: r, content: i } = na(await s.readFile(n, "utf-8"));
3812
+ let n = w.join(t, e.name), { frontmatter: r, content: i } = Sa(await v.readFile(n, "utf-8"));
3624
3813
  return {
3625
3814
  frontmatter: r,
3626
3815
  content: i,
@@ -3628,44 +3817,44 @@ async function sa(e) {
3628
3817
  };
3629
3818
  }));
3630
3819
  }
3631
- async function ca(e, t) {
3820
+ async function Oa(e, t) {
3632
3821
  if (t === "cursor") return;
3633
- let n = oa[t], r = await sa(e), i = p.join(e, n.rulesDir);
3634
- await s.mkdir(i, { recursive: !0 }), await Promise.all(r.map((e) => {
3822
+ let n = Ea[t], r = await Da(e), i = w.join(e, n.rulesDir);
3823
+ await v.mkdir(i, { recursive: !0 }), await Promise.all(r.map((e) => {
3635
3824
  let t = n.convert(e), r = e.filename.replace(/\.mdc$/, n.extension);
3636
- return s.writeFile(p.join(i, r), t, "utf-8");
3637
- })), await Jn(p.join(e, O)), await Jn(p.join(e, ee));
3825
+ return v.writeFile(w.join(i, r), t, "utf-8");
3826
+ })), await sr(w.join(e, ce)), await sr(w.join(e, le));
3638
3827
  }
3639
3828
  //#endregion
3640
3829
  //#region src/core/env-files.ts
3641
- var la = [
3830
+ var ka = [
3642
3831
  "apps",
3643
3832
  "packages",
3644
3833
  "libs",
3645
3834
  "shared"
3646
3835
  ];
3647
- async function ua(e) {
3648
- let t = await da(e);
3836
+ async function Aa(e) {
3837
+ let t = await ja(e);
3649
3838
  return (await Promise.all(t.map(async (t) => {
3650
- let n = p.join(p.dirname(t), ".env");
3651
- return await Y(n) ? null : (await s.copyFile(t, n), p.relative(e, n));
3839
+ let n = w.join(w.dirname(t), ".env");
3840
+ return await Y(n) ? null : (await v.copyFile(t, n), w.relative(e, n));
3652
3841
  }))).filter((e) => e !== null).sort();
3653
3842
  }
3654
- async function da(e) {
3655
- let t = [p.join(e, ".env.example")], n = await Promise.all(la.map(async (t) => {
3656
- let n = p.join(e, t);
3657
- return (await s.readdir(n, { withFileTypes: !0 }).catch(() => [])).filter((e) => e.isDirectory()).map((e) => p.join(n, e.name, ".env.example"));
3843
+ async function ja(e) {
3844
+ let t = [w.join(e, ".env.example")], n = await Promise.all(ka.map(async (t) => {
3845
+ let n = w.join(e, t);
3846
+ return (await v.readdir(n, { withFileTypes: !0 }).catch(() => [])).filter((e) => e.isDirectory()).map((e) => w.join(n, e.name, ".env.example"));
3658
3847
  }));
3659
3848
  return t.push(...n.flat()), (await Promise.all(t.map(async (e) => await Y(e) ? e : null))).filter((e) => e !== null);
3660
3849
  }
3661
3850
  //#endregion
3662
3851
  //#region src/core/post-clone.ts
3663
- var Q = "@hype-stack/", fa = "hype-stack";
3664
- async function pa(e) {
3665
- await Jn(p.join(e, ".git"));
3852
+ var Q = "@hype-stack/", Ma = "hype-stack";
3853
+ async function Na(e) {
3854
+ await sr(w.join(e, ".git"));
3666
3855
  }
3667
- async function ma(e) {
3668
- await q("git", ["init"], { cwd: e }), await q("git", ["add", "."], { cwd: e }), await q("git", [
3856
+ async function Pa(e) {
3857
+ await J("git", ["init"], { cwd: e }), await J("git", ["add", "."], { cwd: e }), await J("git", [
3669
3858
  "-c",
3670
3859
  "user.name=Hype Stack CLI",
3671
3860
  "-c",
@@ -3675,22 +3864,48 @@ async function ma(e) {
3675
3864
  "Initial commit from Hype Stack CLI"
3676
3865
  ], { cwd: e });
3677
3866
  }
3678
- async function ha(e, t) {
3679
- let n = `@${t}/`, r = await ya(e);
3867
+ async function Fa(e, t) {
3868
+ let n = `@${t}/`, r = await Ua(e);
3680
3869
  for (let e of r) {
3681
- let t = await Gn(e);
3870
+ let t = await ir(e);
3682
3871
  if (!t) continue;
3683
3872
  let r = !1;
3684
- t.name?.startsWith(Q) && (t.name = t.name.replace(Q, n), r = !0), ga(t.dependencies, n) && (r = !0), ga(t.devDependencies, n) && (r = !0), t.nx && _a(t.nx, n) && (r = !0);
3685
- let i = await s.readFile(e, "utf-8");
3873
+ t.name?.startsWith(Q) && (t.name = t.name.replace(Q, n), r = !0), Ba(t.dependencies, n) && (r = !0), Ba(t.devDependencies, n) && (r = !0), t.nx && Va(t.nx, n) && (r = !0);
3874
+ let i = await v.readFile(e, "utf-8");
3686
3875
  if (i.includes(Q)) {
3687
3876
  let t = i.replaceAll(Q, n);
3688
- await s.writeFile(e, t, "utf-8");
3689
- } else r && await Kn(e, t);
3877
+ await v.writeFile(e, t, "utf-8");
3878
+ } else r && await ar(e, t);
3690
3879
  }
3691
- await li(e, t), await va(e, t);
3880
+ await Si(e, t), await Ra(e, t), await Ha(e, t);
3692
3881
  }
3693
- function ga(e, t) {
3882
+ var Ia = new Set([
3883
+ ".git",
3884
+ "node_modules",
3885
+ "dist",
3886
+ "build",
3887
+ ".nx",
3888
+ ".next",
3889
+ "coverage"
3890
+ ]), La = /^(docker-compose|compose)(\.[\w.-]+)?\.ya?ml$/;
3891
+ async function Ra(e, t) {
3892
+ if (t === Ma) return;
3893
+ let n = await za(e);
3894
+ await Promise.all(n.map(async (e) => {
3895
+ let n = await v.readFile(e, "utf-8").catch(() => null);
3896
+ if (!n || !/^name:[ \t]*hype-stack/m.test(n)) return;
3897
+ let r = n.replace(/^(name:[ \t]*)hype-stack/gm, `$1${t}`);
3898
+ await v.writeFile(e, r, "utf-8");
3899
+ }));
3900
+ }
3901
+ async function za(e) {
3902
+ let t = await v.readdir(e, { withFileTypes: !0 }).catch(() => []);
3903
+ return (await Promise.all(t.map(async (t) => {
3904
+ let n = w.join(e, t.name);
3905
+ return t.isDirectory() ? Ia.has(t.name) ? [] : za(n) : t.isFile() && La.test(t.name) ? [n] : [];
3906
+ }))).flat();
3907
+ }
3908
+ function Ba(e, t) {
3694
3909
  if (!e) return !1;
3695
3910
  let n = !1;
3696
3911
  for (let r of Object.keys(e)) if (r.startsWith(Q)) {
@@ -3699,7 +3914,7 @@ function ga(e, t) {
3699
3914
  }
3700
3915
  return n;
3701
3916
  }
3702
- function _a(e, t) {
3917
+ function Va(e, t) {
3703
3918
  if (!e) return !1;
3704
3919
  let n = !1;
3705
3920
  if (e.implicitDependencies &&= e.implicitDependencies.map((e) => e.startsWith(Q) ? (n = !0, e.replace(Q, t)) : e), e.targets) {
@@ -3707,110 +3922,33 @@ function _a(e, t) {
3707
3922
  }
3708
3923
  return n;
3709
3924
  }
3710
- async function va(e, t) {
3711
- let n = p.join(e, "packages/enums/src/app/index.ts"), r = await s.readFile(n, "utf-8").catch(() => null);
3925
+ async function Ha(e, t) {
3926
+ let n = w.join(e, "packages/enums/src/app/index.ts"), r = await v.readFile(n, "utf-8").catch(() => null);
3712
3927
  if (!r) return;
3713
- let i = t.split("-").map((e) => e.charAt(0).toUpperCase() + e.slice(1)).join(" "), a = r.replaceAll(`id: "${fa}"`, `id: "${t}"`).replaceAll(`name: "${fa}"`, `name: "${t}"`).replace(/name: "Hype Stack"/, `name: "${i}"`).replace(/description: ".*?"/, `description: "${i} application"`);
3714
- await s.writeFile(n, a, "utf-8");
3928
+ let i = t.split("-").map((e) => e.charAt(0).toUpperCase() + e.slice(1)).join(" "), a = r.replaceAll(`id: "${Ma}"`, `id: "${t}"`).replaceAll(`name: "${Ma}"`, `name: "${t}"`).replace(/name: "Hype Stack"/, `name: "${i}"`).replace(/description: ".*?"/, `description: "${i} application"`);
3929
+ await v.writeFile(n, a, "utf-8");
3715
3930
  }
3716
- async function ya(e) {
3717
- let t = [], n = p.join(e, "package.json");
3718
- (await s.stat(n).catch(() => null))?.isFile() && t.push(n);
3931
+ async function Ua(e) {
3932
+ let t = [], n = w.join(e, "package.json");
3933
+ (await v.stat(n).catch(() => null))?.isFile() && t.push(n);
3719
3934
  for (let n of [
3720
3935
  "apps",
3721
3936
  "packages",
3722
3937
  "libs",
3723
3938
  "shared"
3724
3939
  ]) {
3725
- let r = p.join(e, n), i = await s.readdir(r, { withFileTypes: !0 }).catch(() => []);
3940
+ let r = w.join(e, n), i = await v.readdir(r, { withFileTypes: !0 }).catch(() => []);
3726
3941
  for (let e of i) {
3727
3942
  if (!e.isDirectory()) continue;
3728
- let n = p.join(r, e.name, "package.json");
3729
- (await s.stat(n).catch(() => null))?.isFile() && t.push(n);
3943
+ let n = w.join(r, e.name, "package.json");
3944
+ (await v.stat(n).catch(() => null))?.isFile() && t.push(n);
3730
3945
  }
3731
3946
  }
3732
3947
  return t;
3733
3948
  }
3734
3949
  //#endregion
3735
- //#region src/core/post-setup.ts
3736
- async function ba() {
3737
- return (await q("docker", ["info"], { cwd: process.cwd() })).exitCode === 0;
3738
- }
3739
- async function xa(e) {
3740
- return Y(`${e}/apps/backend/.env`);
3741
- }
3742
- async function Sa(e, t, n) {
3743
- let r = n ? `Start services with ${L.command("docker compose up -d")}?` : `Docker is not running. Start services with ${L.command("docker compose up -d")}?`, i = t ? !0 : await o.confirm({
3744
- message: r,
3745
- initialValue: !0
3746
- });
3747
- if (o.isCancel(i) && Z(), !i) return o.log.info(L.muted("Skipping Docker services and database migrations.")), !1;
3748
- let a = o.spinner();
3749
- return a.start("Starting Docker services..."), (await q("docker", [
3750
- "compose",
3751
- "up",
3752
- "-d"
3753
- ], { cwd: `${e}/apps/backend` })).exitCode === 0 ? (a.stop(L.success("Docker services started")), !0) : (a.stop(L.warning("Failed to start Docker services")), o.log.warn(L.muted("Run `docker compose up -d` in apps/backend manually to start services.")), o.log.info(L.muted("Skipping database migrations.")), !1);
3754
- }
3755
- async function Ca(e, t = 15, n = 2e3) {
3756
- for (let r = 0; r < t; r++) {
3757
- if ((await q("docker", [
3758
- "compose",
3759
- "exec",
3760
- "-T",
3761
- "postgres",
3762
- "pg_isready",
3763
- "-U",
3764
- "postgres"
3765
- ], { cwd: `${e}/apps/backend` })).exitCode === 0) return !0;
3766
- await new Promise((e) => setTimeout(e, n));
3767
- }
3768
- return !1;
3769
- }
3770
- async function wa(e, t, n = {}) {
3771
- if (!await xa(e)) {
3772
- o.log.warn(`${L.path(".env")} not found in ${L.path("apps/backend")}. Skipping Docker and migrations - configure it first.`);
3773
- return;
3774
- }
3775
- if (!await Sa(e, t, await ba())) return;
3776
- let r = o.spinner();
3777
- if (r.start("Waiting for Postgres to be ready..."), !await Ca(e, n.postgresMaxAttempts ?? 15, n.postgresCheckIntervalMs ?? 2e3)) {
3778
- r.stop(L.warning("Postgres health check timed out")), o.log.warn(L.muted("Run migrations manually once Postgres is ready: pnpm --filter @internal/backend migration:latest"));
3779
- return;
3780
- }
3781
- r.stop(L.success("Postgres is ready"));
3782
- let i = t ? !0 : await o.confirm({
3783
- message: `Run database migrations with ${L.command("prisma migrate deploy")}?`,
3784
- initialValue: !0
3785
- });
3786
- if (o.isCancel(i) && Z(), !i) {
3787
- o.log.info(L.muted("Skipping database migrations."));
3788
- return;
3789
- }
3790
- let a = o.spinner();
3791
- if (a.start("Running database migrations..."), (await q("pnpm", [
3792
- "--filter",
3793
- "@internal/backend",
3794
- "migration:latest"
3795
- ], { cwd: e })).exitCode !== 0) {
3796
- a.stop(L.warning("Migrations failed")), o.log.warn(L.muted("Run `pnpm --filter @internal/backend migration:latest` manually to apply migrations."));
3797
- return;
3798
- }
3799
- a.stop(L.success("Database migrations applied"));
3800
- let s = o.spinner();
3801
- if (s.start("Generating Prisma client..."), (await q("pnpm", [
3802
- "--filter",
3803
- "@internal/backend",
3804
- "generate"
3805
- ], { cwd: e })).exitCode !== 0) {
3806
- s.stop(L.warning("Prisma client generation failed")), o.log.warn(L.muted("Run `pnpm --filter @internal/backend generate` manually."));
3807
- return;
3808
- }
3809
- s.stop(L.success("Prisma client generated"));
3810
- }
3811
- //#endregion
3812
3950
  //#region src/core/readme.ts
3813
- var Ta = {
3951
+ var Wa = {
3814
3952
  cursor: {
3815
3953
  label: "Cursor",
3816
3954
  rulesDir: ".cursor/rules"
@@ -3827,24 +3965,24 @@ var Ta = {
3827
3965
  label: "GitHub Copilot",
3828
3966
  rulesDir: ".github/instructions"
3829
3967
  }
3830
- }, Ea = {
3968
+ }, Ga = {
3831
3969
  backend: "Hono API server (Postgres, Prisma, Kysely, Valkey cache, WorkOS auth)",
3832
3970
  frontend: "React + Vite app talking to the backend through the typed HyperFetch SDK"
3833
- }, Da = {
3971
+ }, Ka = {
3834
3972
  enums: "Shared enums and app config used across apps",
3835
3973
  cli: "Project tooling and code generators"
3836
3974
  };
3837
- function Oa(e) {
3975
+ function qa(e) {
3838
3976
  return e.split(/[-_]/).filter(Boolean).map((e) => e.charAt(0).toUpperCase() + e.slice(1)).join(" ");
3839
3977
  }
3840
- function ka(e, t) {
3978
+ function Ja(e, t) {
3841
3979
  return Object.entries(e).toSorted(([e], [t]) => e.localeCompare(t)).map(([e, n]) => {
3842
3980
  let r = t[e];
3843
3981
  return r ? `- \`${n}\` - ${r}` : `- \`${n}\``;
3844
3982
  });
3845
3983
  }
3846
- function Aa(e) {
3847
- let { projectName: t, editor: n, workspace: r } = e, i = Oa(t), a = Ta[n], o = !!r.apps.backend, s = ka(r.apps, Ea), c = ka(r.packages, Da), l = [];
3984
+ function Ya(e) {
3985
+ let { projectName: t, editor: n, workspace: r } = e, i = qa(t), a = Wa[n], o = !!r.apps.backend, s = Ja(r.apps, Ga), c = Ja(r.packages, Ka), l = [];
3848
3986
  s.length > 0 && l.push(...s), c.length > 0 && l.push(...c), l.push("- `stack.json` - Hype Stack workspace config (apps, paths, installed packs)");
3849
3987
  let u = [];
3850
3988
  u.push(`# ${i}`), u.push([
@@ -3952,19 +4090,19 @@ function Aa(e) {
3952
4090
  "stays useful."
3953
4091
  ].join("\n")), u.join("\n\n") + "\n";
3954
4092
  }
3955
- async function ja(e, t) {
3956
- let n = p.join(e, "README.md");
3957
- await s.writeFile(n, Aa(t), "utf-8");
4093
+ async function Xa(e, t) {
4094
+ let n = w.join(e, "README.md");
4095
+ await v.writeFile(n, Ya(t), "utf-8");
3958
4096
  }
3959
4097
  //#endregion
3960
4098
  //#region src/core/tracking.ts
3961
- async function Ma(e) {
4099
+ async function Za(e) {
3962
4100
  try {
3963
4101
  let t = {
3964
- "X-Device-Id": In(),
3965
- "X-Client-Info": Ln()
3966
- }, n = await Mn(k()).catch(() => null);
3967
- n?.token && (t.Authorization = `Bearer ${n.token}`), await K.createRequest()({
4102
+ "X-Device-Id": Jn(),
4103
+ "X-Client-Info": Yn()
4104
+ }, n = await Wn(N()).catch(() => null);
4105
+ n?.token && (t.Authorization = `Bearer ${n.token}`), await q.createRequest()({
3968
4106
  endpoint: "/cli/track",
3969
4107
  method: "POST"
3970
4108
  }).setPayload({ event: e }).setHeaders(t).send();
@@ -3972,7 +4110,7 @@ async function Ma(e) {
3972
4110
  }
3973
4111
  //#endregion
3974
4112
  //#region src/ui/swatch.ts
3975
- function Na(e) {
4113
+ function Qa(e) {
3976
4114
  let t = e.trim().match(/^oklch\(([^)]+)\)$/i);
3977
4115
  if (!t) return null;
3978
4116
  let n = t[1].trim().split(/\s+/);
@@ -3991,61 +4129,61 @@ function Na(e) {
3991
4129
  h: a
3992
4130
  };
3993
4131
  }
3994
- function Pa(e) {
4132
+ function $a(e) {
3995
4133
  return Math.min(255, Math.max(0, Math.round(e)));
3996
4134
  }
3997
- function Fa(e) {
4135
+ function eo(e) {
3998
4136
  return e <= .0031308 ? 12.92 * e : 1.055 * e ** (1 / 2.4) - .055;
3999
4137
  }
4000
- function Ia({ l: e, c: t, h: n }) {
4138
+ function to({ l: e, c: t, h: n }) {
4001
4139
  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;
4002
4140
  return [
4003
- Pa(Fa(f) * 255),
4004
- Pa(Fa(p) * 255),
4005
- Pa(Fa(m) * 255)
4141
+ $a(eo(f) * 255),
4142
+ $a(eo(p) * 255),
4143
+ $a(eo(m) * 255)
4006
4144
  ];
4007
4145
  }
4008
- var La = "\x1B[49m";
4009
- function Ra(e, t) {
4146
+ var no = "\x1B[49m";
4147
+ function ro(e, t) {
4010
4148
  let n = e[t];
4011
- if (!n) return c.dim(" ");
4012
- let r = Na(n);
4013
- if (!r) return c.dim(" ");
4014
- let [i, a, o] = Ia(r);
4015
- return `\x1b[48;2;${i};${a};${o}m ${La}`;
4149
+ if (!n) return y.dim(" ");
4150
+ let r = Qa(n);
4151
+ if (!r) return y.dim(" ");
4152
+ let [i, a, o] = to(r);
4153
+ return `\x1b[48;2;${i};${a};${o}m ${no}`;
4016
4154
  }
4017
- var za = [
4155
+ var io = [
4018
4156
  "primary",
4019
4157
  "secondary",
4020
4158
  "accent"
4021
4159
  ];
4022
- function Ba(e) {
4023
- return za.map((t) => Ra(e, t)).join("");
4160
+ function ao(e) {
4161
+ return io.map((t) => ro(e, t)).join("");
4024
4162
  }
4025
- function Va(e) {
4026
- return `${Ba(e.light)} ${c.dim("·")} ${Ba(e.dark)}`;
4163
+ function oo(e) {
4164
+ return `${ao(e.light)} ${y.dim("·")} ${ao(e.dark)}`;
4027
4165
  }
4028
4166
  //#endregion
4029
4167
  //#region src/utils/validate.ts
4030
- function Ha(e) {
4168
+ function so(e) {
4031
4169
  if (!e.trim()) return "Project name cannot be empty";
4032
- if (!w.test(e)) return "Project name must be lowercase, alphanumeric, and may contain hyphens, dots, or underscores";
4170
+ if (!M.test(e)) return "Project name must be lowercase, alphanumeric, and may contain hyphens, dots, or underscores";
4033
4171
  if (e.length > 214) return "Project name is too long (max 214 characters)";
4034
4172
  }
4035
4173
  //#endregion
4036
4174
  //#region src/commands/create.ts
4037
- async function Ua(a) {
4038
- Ki(), o.intro(L.brandBold("Create a new Hype Stack project"));
4175
+ async function co(a) {
4176
+ da(), o.intro(L.brandBold("Create a new Hype Stack project"));
4039
4177
  let s = a.yes === !0, c;
4040
4178
  if (s && a.name) {
4041
- let e = Ha(a.name);
4179
+ let e = so(a.name);
4042
4180
  e && (o.log.error(e), Z()), c = a.name;
4043
4181
  } else {
4044
4182
  let e = await o.text({
4045
4183
  message: "What is your project named?",
4046
4184
  placeholder: "my-app",
4047
4185
  initialValue: a.name ?? "",
4048
- validate: (e) => Ha(e ?? "")
4186
+ validate: (e) => so(e ?? "")
4049
4187
  });
4050
4188
  o.isCancel(e) && Z(), c = e;
4051
4189
  }
@@ -4063,17 +4201,17 @@ async function Ua(a) {
4063
4201
  });
4064
4202
  o.isCancel(t) && Z(), e = t;
4065
4203
  }
4066
- l = Yn(e, c);
4204
+ l = cr(e, c);
4067
4205
  }
4068
- let u = p.resolve(l);
4206
+ let u = w.resolve(l);
4069
4207
  s || o.note(L.path(u), "Project will be created at");
4070
- let d = a.editor && E.includes(a.editor) ? a.editor : null, f;
4208
+ let d = a.editor && oe.includes(a.editor) ? a.editor : null, f;
4071
4209
  if (d) f = d;
4072
4210
  else if (s) f = "cursor";
4073
4211
  else {
4074
4212
  let e = await o.select({
4075
4213
  message: "Which code editor do you use?",
4076
- options: T.map((e) => ({
4214
+ options: ae.map((e) => ({
4077
4215
  value: e.value,
4078
4216
  label: e.label,
4079
4217
  hint: "hint" in e ? e.hint : void 0
@@ -4082,75 +4220,80 @@ async function Ua(a) {
4082
4220
  });
4083
4221
  o.isCancel(e) && Z(), f = e;
4084
4222
  }
4085
- let m = a.theme !== void 0 && i(a.theme), h;
4086
- if (m) h = a.theme;
4087
- else if (s) h = e;
4223
+ let p = a.theme !== void 0 && i(a.theme), m;
4224
+ if (p) m = a.theme;
4225
+ else if (s) m = e;
4088
4226
  else {
4089
4227
  let t = await o.select({
4090
4228
  message: "Pick a color theme",
4091
4229
  options: n.map((e) => ({
4092
4230
  value: e.name,
4093
- label: `${Va(e)} ${e.label}`
4231
+ label: `${oo(e)} ${e.label}`
4094
4232
  })),
4095
4233
  initialValue: e
4096
4234
  });
4097
- o.isCancel(t) && Z(), h = t;
4235
+ o.isCancel(t) && Z(), m = t;
4098
4236
  }
4099
4237
  if (!s) {
4100
- let e = T.find((e) => e.value === f)?.label ?? f, n = t.find((e) => e.value === h)?.label ?? h, r = await o.confirm({ message: `Create ${L.highlight(c)} in ${L.path(u)} with ${L.highlight(e)} config and the ${L.highlight(n)} theme?` });
4238
+ let e = ae.find((e) => e.value === f)?.label ?? f, n = t.find((e) => e.value === m)?.label ?? m, r = await o.confirm({ message: `Create ${L.highlight(c)} in ${L.path(u)} with ${L.highlight(e)} config and the ${L.highlight(n)} theme?` });
4101
4239
  (o.isCancel(r) || !r) && Z();
4102
4240
  }
4103
- if (await J(u) && !await Wn(u)) {
4241
+ if (await nr(u) && !await rr(u)) {
4104
4242
  let e = await o.confirm({
4105
4243
  message: `Directory ${L.path(u)} is not empty. Continue anyway?`,
4106
4244
  initialValue: !1
4107
4245
  });
4108
4246
  (o.isCancel(e) || !e) && Z();
4109
4247
  }
4248
+ let h = o.spinner();
4249
+ h.start("Cloning Hype Stack template..."), await xa(u), h.stop(L.success("Template cloned"));
4110
4250
  let g = o.spinner();
4111
- g.start("Cloning Hype Stack template..."), await ta(u), g.stop(L.success("Template cloned"));
4112
- let _ = o.spinner();
4113
- _.start("Setting up project..."), await pa(u), await ha(u, c), await ca(u, f);
4114
- let v = await tr(u), y = rr(c, v);
4115
- await er(u, y), await ja(u, {
4251
+ g.start("Setting up project..."), await Na(u), await Fa(u, c), await Oa(u, f);
4252
+ let _ = await mr(u), v = gr(c, _);
4253
+ await pr(u, v), await Xa(u, {
4116
4254
  projectName: c,
4117
4255
  editor: f,
4118
- workspace: v
4119
- }), i(h) && (await ea(p.resolve(u, y.paths?.frontend.root ?? "apps/frontend"), r(h)) || o.log.warn(L.muted(`Could not find ${L.path("assets/styles.css")} to apply the ${h} theme`))), _.stop(L.success("Project configured"));
4256
+ workspace: _
4257
+ }), i(m) && (await ba(w.resolve(u, v.paths?.frontend.root ?? "apps/frontend"), r(m)) || o.log.warn(L.muted(`Could not find ${L.path("assets/styles.css")} to apply the ${m} theme`))), g.stop(L.success("Project configured"));
4258
+ let y = o.spinner();
4259
+ y.start("Installing dependencies..."), (await J("pnpm", ["install"], { cwd: u })).exitCode === 0 ? y.stop(L.success("Dependencies installed")) : (y.stop(L.warning("Dependencies installed with warnings")), o.log.warn(L.muted("You may need to run `pnpm install` manually to resolve issues.")));
4120
4260
  let b = o.spinner();
4121
- b.start("Installing dependencies..."), (await q("pnpm", ["install"], { cwd: u })).exitCode === 0 ? b.stop(L.success("Dependencies installed")) : (b.stop(L.warning("Dependencies installed with warnings")), o.log.warn(L.muted("You may need to run `pnpm install` manually to resolve issues.")));
4261
+ b.start("Initializing git repository..."), await Pa(u), b.stop(L.success("Git repository initialized with clean history"));
4122
4262
  let x = o.spinner();
4123
- x.start("Initializing git repository..."), await ma(u), x.stop(L.success("Git repository initialized with clean history"));
4124
- let S = o.spinner();
4125
- S.start("Creating .env files from examples...");
4126
- let C = await ua(u);
4127
- if (C.length > 0) {
4128
- let e = C.length;
4129
- S.stop(L.success(`Created ${e} .env file${e === 1 ? "" : "s"} from examples`));
4130
- } else S.stop(L.muted("No .env.example files to copy"));
4263
+ x.start("Creating .env files from examples...");
4264
+ let S = await Aa(u);
4265
+ if (S.length > 0) {
4266
+ let e = S.length;
4267
+ x.stop(L.success(`Created ${e} .env file${e === 1 ? "" : "s"} from examples`));
4268
+ } else x.stop(L.muted("No .env.example files to copy"));
4131
4269
  o.log.success(`${L.brandBold("Hype Stack")} project ${L.highlight(c)} is ready!`);
4132
- let w = p.relative(process.cwd(), u) || ".", D = [`${L.command(`cd ${w}`)}`];
4133
- C.length > 0 ? D.push(`Review your ${L.path(".env")} files and fill in any secrets`) : D.push(`Copy ${L.path(".env.example")} to ${L.path(".env")} and configure`), Ji(D);
4134
- let O = a.setup !== !1 && (s || await o.confirm({
4135
- message: "Would you like to start Docker services and run database migrations now?",
4136
- initialValue: !0
4137
- }));
4138
- return o.isCancel(O) && Z(), O ? await wa(u, s) : (o.log.info(L.muted("You can start services later:")), Ji([
4139
- `${L.command("docker compose up -d")} ${L.muted("(in apps/backend - start Postgres, Valkey, RustFS)")}`,
4140
- `${L.command("pnpm --filter @internal/backend migration:latest")} ${L.muted("(apply migrations)")}`,
4141
- `${L.command("pnpm run generate")} ${L.muted("(generate Prisma client)")}`
4142
- ])), Ji([`${L.command("pnpm dev")} ${L.muted("(start frontend + backend)")}`]), await Ma("project_create"), o.outro(L.muted("Happy building!")), u;
4270
+ let C = w.relative(process.cwd(), u) || ".", T = [`${L.command(`cd ${C}`)}`];
4271
+ S.length > 0 ? T.push(`Review your ${L.path(".env")} files and fill in any secrets`) : T.push(`Copy ${L.path(".env.example")} to ${L.path(".env")} and configure`), Hi(T);
4272
+ let E = a.setup === !1;
4273
+ if (a.deferSetup) o.log.info(L.muted("Docker and migrations will run after your packs are installed."));
4274
+ else {
4275
+ let e = !E && (s || await o.confirm({
4276
+ message: "Would you like to start Docker services and run database migrations now?",
4277
+ initialValue: !0
4278
+ }));
4279
+ o.isCancel(e) && Z(), e ? await qi(u, s) : (o.log.info(L.muted("You can start services later:")), Hi([
4280
+ `${L.command("docker compose up -d")} ${L.muted("(in apps/backend - start Postgres, Valkey, RustFS)")}`,
4281
+ `${L.command("pnpm --filter @internal/backend migration:latest")} ${L.muted("(apply migrations)")}`,
4282
+ `${L.command("pnpm run generate")} ${L.muted("(generate Prisma client)")}`
4283
+ ])), Hi([`${L.command("pnpm dev")} ${L.muted("(start frontend + backend)")}`]);
4284
+ }
4285
+ return await Za("project_create"), o.outro(L.muted("Happy building!")), u;
4143
4286
  }
4144
4287
  //#endregion
4145
4288
  //#region src/commands/init.ts
4146
- async function Wa(e) {
4289
+ async function lo(e) {
4147
4290
  let t = e.cwd ?? process.cwd(), n = e.silent ?? !1;
4148
- if (n || (qi(), o.intro(L.brandBold("Initialize Hype Stack configuration"))), !await ir(t)) {
4291
+ if (n || (fa(), o.intro(L.brandBold("Initialize Hype Stack configuration"))), !await _r(t)) {
4149
4292
  o.log.error(`This doesn't look like a Hype Stack project. ${L.muted("Expected apps/ directory and package.json")}`), o.outro(L.muted(`Run ${L.command("npx @hype-stack/cli create")} to scaffold a new project.`));
4150
4293
  return;
4151
4294
  }
4152
- if (await $n(t)) {
4153
- let e = await Qn(t);
4295
+ if (await fr(t)) {
4296
+ let e = await dr(t);
4154
4297
  if (e && !n) {
4155
4298
  o.log.info(`Found existing ${L.path("stack.json")} for project ${L.highlight(e.name)}`);
4156
4299
  let t = await o.confirm({
@@ -4163,7 +4306,7 @@ async function Wa(e) {
4163
4306
  }
4164
4307
  }
4165
4308
  }
4166
- let r = await tr(t);
4309
+ let r = await mr(t);
4167
4310
  if (!n) {
4168
4311
  let e = Object.entries(r.apps), t = Object.entries(r.packages);
4169
4312
  if (e.length > 0) {
@@ -4176,7 +4319,7 @@ async function Wa(e) {
4176
4319
  }
4177
4320
  e.length === 0 && t.length === 0 && o.log.warn("No apps or packages detected in the workspace.");
4178
4321
  }
4179
- let i = (await Gn(p.join(t, "package.json")))?.name?.replace(/^@/, "").replace(/\/source$/, "") ?? "my-app", a = i;
4322
+ let i = (await ir(w.join(t, "package.json")))?.name?.replace(/^@/, "").replace(/\/source$/, "") ?? "my-app", a = i;
4180
4323
  if (!n) {
4181
4324
  let e = await o.text({
4182
4325
  message: "Project name for stack.json?",
@@ -4185,15 +4328,21 @@ async function Wa(e) {
4185
4328
  });
4186
4329
  o.isCancel(e) && Z(), a = e;
4187
4330
  }
4188
- await er(t, rr(a, r)), n || (o.log.success(`${L.path("stack.json")} written successfully`), o.outro(L.muted("Your project is mapped and ready for Hype Stack CLI commands.")));
4331
+ await pr(t, gr(a, r)), n || (o.log.success(`${L.path("stack.json")} written successfully`), o.outro(L.muted("Your project is mapped and ready for Hype Stack CLI commands.")));
4189
4332
  }
4190
- async function Ga(e, t = {}) {
4191
- if (await $n(e)) return e;
4192
- let n = t.runInit ?? ((e) => Wa({
4333
+ async function uo(e, t = {}) {
4334
+ if (await fr(e)) return {
4335
+ projectRoot: e,
4336
+ scaffolded: !1
4337
+ };
4338
+ let n = t.runInit ?? ((e) => lo({
4193
4339
  cwd: e,
4194
4340
  silent: !0
4195
- })), r = t.runCreate ?? ((e) => Ua({ parentDirectory: e }));
4196
- if (await ir(e)) {
4341
+ })), r = t.runCreate ?? ((e) => co({
4342
+ parentDirectory: e,
4343
+ deferSetup: !0
4344
+ }));
4345
+ if (await _r(e)) {
4197
4346
  o.log.warn(`No ${L.path("stack.json")} found in ${L.path(e)}.`);
4198
4347
  let t = await o.confirm({
4199
4348
  message: `Create ${L.path("stack.json")} now?`,
@@ -4201,8 +4350,11 @@ async function Ga(e, t = {}) {
4201
4350
  });
4202
4351
  if (o.isCancel(t) || !t) return null;
4203
4352
  await n(e);
4204
- let r = await $n(e);
4205
- return r && o.log.success(`${L.path("stack.json")} created`), r ? e : null;
4353
+ let r = await fr(e);
4354
+ return r && o.log.success(`${L.path("stack.json")} created`), r ? {
4355
+ projectRoot: e,
4356
+ scaffolded: !1
4357
+ } : null;
4206
4358
  }
4207
4359
  o.log.warn(`This doesn't look like a Hype Stack project, and there's no ${L.path("stack.json")} here.`);
4208
4360
  let i = await o.confirm({
@@ -4216,11 +4368,14 @@ async function Ga(e, t = {}) {
4216
4368
  });
4217
4369
  if (o.isCancel(a) || !a) return null;
4218
4370
  let s = await r(e);
4219
- return await $n(s) ? s : null;
4371
+ return await fr(s) ? {
4372
+ projectRoot: s,
4373
+ scaffolded: !0
4374
+ } : null;
4220
4375
  }
4221
4376
  //#endregion
4222
4377
  //#region src/core/npm-deps.ts
4223
- function Ka(e, t) {
4378
+ function fo(e, t) {
4224
4379
  let n = [], r = [];
4225
4380
  if (!e) return {
4226
4381
  errors: n,
@@ -4251,7 +4406,7 @@ function Ka(e, t) {
4251
4406
  operations: r
4252
4407
  };
4253
4408
  }
4254
- function qa(e) {
4409
+ function po(e) {
4255
4410
  let t = {};
4256
4411
  for (let n of e) if (n) for (let [e, r] of Object.entries(n)) t[e] = {
4257
4412
  ...t[e],
@@ -4259,15 +4414,15 @@ function qa(e) {
4259
4414
  };
4260
4415
  return t;
4261
4416
  }
4262
- async function Ja(e, t, n = q) {
4417
+ async function mo(e, t, n = J) {
4263
4418
  let r = [];
4264
4419
  for (let i of e) {
4265
- let e = p.join(t, i.relativeDir);
4266
- if (!await Y(p.join(e, "package.json"))) {
4420
+ let e = w.join(t, i.relativeDir);
4421
+ if (!await Y(w.join(e, "package.json"))) {
4267
4422
  r.push(`Cannot install npm dependencies under "${i.relativeDir}": package.json not found.`);
4268
4423
  continue;
4269
4424
  }
4270
- let a = p.normalize(i.relativeDir), o;
4425
+ let a = w.normalize(i.relativeDir), o;
4271
4426
  try {
4272
4427
  o = await n("pnpm", [
4273
4428
  "add",
@@ -4295,22 +4450,22 @@ async function Ja(e, t, n = q) {
4295
4450
  function $(e) {
4296
4451
  return e instanceof Error ? e.message : String(e);
4297
4452
  }
4298
- async function Ya(e, t, n) {
4453
+ async function ho(e, t, n) {
4299
4454
  let r = e.filter((e) => e.tier === "paid" && !t.has(e.name)).map((e) => e.name);
4300
- return r.length === 0 ? {} : dr(r, n).catch(() => ({}));
4455
+ return r.length === 0 ? {} : wr(r, n).catch(() => ({}));
4301
4456
  }
4302
- function Xa(e, t) {
4457
+ function go(e, t) {
4303
4458
  return e === "free" ? L.success("free") : e === "owned" ? L.accent("owned") : `${L.highlight(`$${t}`)} ${L.muted("locked")}`;
4304
4459
  }
4305
- async function Za(e, t, n) {
4460
+ async function _o(e, t, n) {
4306
4461
  let r = e.filter((e) => t(e)), i = e.filter((e) => !t(e));
4307
- 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 Un(r.map((e) => n.get(e)).filter((e) => e !== void 0).map((e) => ({
4462
+ 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 tr(r.map((e) => n.get(e)).filter((e) => e !== void 0).map((e) => ({
4308
4463
  name: e.name,
4309
4464
  displayName: e.displayName,
4310
4465
  price: e.price
4311
4466
  })));
4312
4467
  }
4313
- function Qa(e, t) {
4468
+ function vo(e, t) {
4314
4469
  let n = e.map((e, n) => {
4315
4470
  let r = t.get(e), i = r ? r.displayName : e;
4316
4471
  return ` ${L.muted(`${n + 1}.`)} ${L.brand(i)}`;
@@ -4321,10 +4476,10 @@ function Qa(e, t) {
4321
4476
  ...n
4322
4477
  ].join("\n"), "Install Plan");
4323
4478
  }
4324
- async function $a(e, t) {
4479
+ async function yo(e, t) {
4325
4480
  let n = [];
4326
4481
  for (let r of e) {
4327
- let e = await ar(r), i = await or(r, t);
4482
+ let e = await vr(r), i = await yr(r, t);
4328
4483
  if (i.status === "denied") throw Error(`Access to "${r}" was denied (${i.reason}). Try 'npx @hype-stack/cli login' or check your license.`);
4329
4484
  n.push({
4330
4485
  manifest: e,
@@ -4333,25 +4488,25 @@ async function $a(e, t) {
4333
4488
  }
4334
4489
  return n;
4335
4490
  }
4336
- async function eo(e) {
4337
- let { prepared: t, paths: n, cwd: r, spinner: i } = e, a = Ka(qa(t.map((e) => e.manifest.dependencies_npm)), n);
4491
+ async function bo(e) {
4492
+ let { prepared: t, paths: n, cwd: r, spinner: i } = e, a = fo(po(t.map((e) => e.manifest.dependencies_npm)), n);
4338
4493
  if (a.errors.length > 0) {
4339
4494
  for (let e of a.errors) o.log.error(e);
4340
4495
  return;
4341
4496
  }
4342
4497
  if (a.operations.length === 0) return;
4343
4498
  i.start("Installing npm dependencies...");
4344
- let s = await Ja(a.operations, r);
4499
+ let s = await mo(a.operations, r);
4345
4500
  if (i.stop(s.ok ? "npm dependencies installed" : "npm dependency installation failed"), !s.ok) for (let e of s.errors) o.log.error(e);
4346
4501
  }
4347
- function to(e) {
4502
+ function xo(e) {
4348
4503
  let t = e.flatMap((e) => e.manifest.postInstall ?? []), n = [...new Set(t)];
4349
4504
  n.length !== 0 && o.note(n.map((e) => ` ${L.muted("→")} ${e}`).join("\n"), "Next Steps");
4350
4505
  }
4351
- async function no(e) {
4506
+ async function So(e) {
4352
4507
  let { prepared: t, config: n, cwd: r, force: i, yes: a, slotsByPack: s } = e, c = /* @__PURE__ */ new Set();
4353
4508
  if (i) return c;
4354
- let l = await _i({
4509
+ let l = await Ai({
4355
4510
  packs: t,
4356
4511
  config: n,
4357
4512
  projectRoot: r,
@@ -4361,7 +4516,7 @@ async function no(e) {
4361
4516
  if (a) return o.log.warning(`${l.length} existing file${l.length === 1 ? "" : "s"} kept. Pass ${L.command("--force")} to overwrite.`), c;
4362
4517
  o.log.warning(`${l.length} file${l.length === 1 ? "" : "s"} already exist in your project.`);
4363
4518
  for (let e of l) {
4364
- let t = p.relative(r, e.targetPath) || e.target, n = await o.confirm({
4519
+ let t = w.relative(r, e.targetPath) || e.target, n = await o.confirm({
4365
4520
  message: `Overwrite ${L.path(t)}? ${L.muted(`(${e.packName})`)}`,
4366
4521
  initialValue: !1
4367
4522
  });
@@ -4371,152 +4526,152 @@ async function no(e) {
4371
4526
  }
4372
4527
  //#endregion
4373
4528
  //#region src/commands/compose.ts
4374
- async function ro(e = {}) {
4529
+ async function Co(e = {}) {
4375
4530
  let t = e.cwd ?? process.cwd();
4376
- qi();
4377
- let n = await Ga(t), r;
4531
+ fa();
4532
+ let n = await uo(t), r = n?.projectRoot ?? null, i = n?.scaffolded ?? !1, a;
4378
4533
  try {
4379
- r = await Qn(n ?? t);
4534
+ a = await dr(r ?? t);
4380
4535
  } catch (e) {
4381
4536
  o.cancel(`Could not parse ${L.path("stack.json")}: ${$(e)} Run 'npx @hype-stack/cli init' to regenerate it.`), process.exit(1);
4382
4537
  }
4383
- r || (o.cancel(n ? `Could not read ${L.path("stack.json")}. Run 'npx @hype-stack/cli init' to regenerate it, then run 'npx @hype-stack/cli compose' again.` : `No ${L.path("stack.json")}. Run 'npx @hype-stack/cli init' first, then 'npx @hype-stack/cli compose'.`), process.exit(1)), r.paths || (o.cancel(`${L.path("stack.json")} is missing ${L.path("paths")}. Run 'npx @hype-stack/cli init' again to regenerate it.`), process.exit(1));
4384
- let i = n ?? t;
4538
+ a || (o.cancel(r ? `Could not read ${L.path("stack.json")}. Run 'npx @hype-stack/cli init' to regenerate it, then run 'npx @hype-stack/cli compose' again.` : `No ${L.path("stack.json")}. Run 'npx @hype-stack/cli init' first, then 'npx @hype-stack/cli compose'.`), process.exit(1)), a.paths || (o.cancel(`${L.path("stack.json")} is missing ${L.path("paths")}. Run 'npx @hype-stack/cli init' again to regenerate it.`), process.exit(1));
4539
+ let s = r ?? t;
4385
4540
  o.intro(L.brandBold("Compose your stack"));
4386
- let a = o.spinner();
4387
- a.start("Loading packs...");
4388
- let c;
4541
+ let c = o.spinner();
4542
+ c.start("Loading packs...");
4543
+ let l;
4389
4544
  try {
4390
- c = await ur();
4545
+ l = await Cr();
4391
4546
  } catch (e) {
4392
- a.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
- a.stop("Packs loaded");
4395
- 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 Mn(k()))?.token ?? null, m = await Ya(c, u, {
4396
- token: p,
4397
- key: f
4398
- }), h = (e) => {
4399
- let t = d.get(e);
4400
- return !t || t.tier === "free" ? "free" : m[e]?.owned ? "owned" : "locked";
4401
- }, g = (e) => !u.has(e) && h(e) === "locked", _ = await io({
4402
- packs: c,
4403
- installedSet: u,
4404
- stateOf: h,
4547
+ c.stop("Failed to load packs"), o.cancel(`Could not reach Hype Stack. Check your connection and try again.\n${$(e)}`), process.exit(1);
4548
+ }
4549
+ c.stop("Packs loaded");
4550
+ let u = a.installedPacks ?? [], d = new Set(u), f = new Map(l.map((e) => [e.name, e])), p = e.licenseKey ?? a.licenseKey ?? null, m = (await Wn(N()))?.token ?? null, h = await ho(l, d, {
4551
+ token: m,
4552
+ key: p
4553
+ }), g = (e) => {
4554
+ let t = f.get(e);
4555
+ return !t || t.tier === "free" ? "free" : h[e]?.owned ? "owned" : "locked";
4556
+ }, _ = (e) => !d.has(e) && g(e) === "locked", y = await wo({
4557
+ packs: l,
4558
+ installedSet: d,
4559
+ stateOf: g,
4405
4560
  options: e,
4406
- adminAvailable: !!r.apps.admin
4561
+ adminAvailable: !!a.apps.admin
4407
4562
  });
4408
- if (_ === null && (o.cancel("Cancelled."), process.exit(0)), _.length === 0) {
4563
+ if (y === null && (o.cancel("Cancelled."), process.exit(0)), y.length === 0) {
4409
4564
  o.outro(L.muted("No packs selected. Nothing to do."));
4410
4565
  return;
4411
4566
  }
4412
- let v = so(_), y = co(_), b = Ii(c, v), x = ki(Li(c, b)), S;
4567
+ let b = Do(y), x = Oo(y), S = ta(l, b), C = Ji(na(l, S)), w;
4413
4568
  try {
4414
- S = ji(v, x, l);
4569
+ w = Xi(b, C, u);
4415
4570
  } catch (e) {
4416
4571
  o.cancel($(e)), process.exit(1);
4417
4572
  }
4418
- if (S.order.length === 0) {
4419
- o.note(`${S.alreadyInstalled.join(", ")} already installed.`, "Nothing to do"), o.outro(L.muted("Your selection is already part of the project."));
4573
+ if (w.order.length === 0) {
4574
+ o.note(`${w.alreadyInstalled.join(", ")} already installed.`, "Nothing to do"), o.outro(L.muted("Your selection is already part of the project."));
4420
4575
  return;
4421
4576
  }
4422
- let C = Mi({
4423
- order: S.order,
4424
- graph: x,
4425
- isLocked: g,
4426
- installed: l
4577
+ let T = Zi({
4578
+ order: w.order,
4579
+ graph: C,
4580
+ isLocked: _,
4581
+ installed: u
4427
4582
  });
4428
- if (C.blocked.length > 0 && !p && !f) {
4429
- let e = await Hn();
4430
- e && (p = e, m = await Ya(c, u, {
4431
- token: p,
4432
- key: f
4433
- }), C = Mi({
4434
- order: S.order,
4435
- graph: x,
4436
- isLocked: g,
4437
- installed: l
4583
+ if (T.blocked.length > 0 && !m && !p) {
4584
+ let e = await er();
4585
+ e && (m = e, h = await ho(l, d, {
4586
+ token: m,
4587
+ key: p
4588
+ }), T = Zi({
4589
+ order: w.order,
4590
+ graph: C,
4591
+ isLocked: _,
4592
+ installed: u
4438
4593
  }));
4439
4594
  }
4440
- if (C.blocked.length > 0 && await Za(C.blocked, g, d), C.installable.length === 0) {
4595
+ if (T.blocked.length > 0 && await _o(T.blocked, _, f), T.installable.length === 0) {
4441
4596
  o.outro(L.muted("Nothing left to install once locked packs are removed."));
4442
4597
  return;
4443
4598
  }
4444
- if (Qa(C.installable, d), !e.yes) {
4445
- let e = await o.confirm({ message: `Install ${C.installable.length} pack${C.installable.length === 1 ? "" : "s"}?` });
4599
+ if (vo(T.installable, f), !e.yes) {
4600
+ let e = await o.confirm({ message: `Install ${T.installable.length} pack${T.installable.length === 1 ? "" : "s"}?` });
4446
4601
  (o.isCancel(e) || !e) && (o.cancel("Installation cancelled."), process.exit(0));
4447
4602
  }
4448
- a.start("Downloading packs...");
4449
- let w;
4603
+ c.start("Downloading packs...");
4604
+ let E;
4450
4605
  try {
4451
- w = await $a(C.installable, {
4452
- token: p,
4453
- key: f
4606
+ E = await yo(T.installable, {
4607
+ token: m,
4608
+ key: p
4454
4609
  });
4455
4610
  } catch (e) {
4456
- a.stop("Download failed"), o.cancel($(e)), process.exit(1);
4611
+ c.stop("Download failed"), o.cancel($(e)), process.exit(1);
4457
4612
  }
4458
- a.stop(`Downloaded ${w.length} pack${w.length === 1 ? "" : "s"}`);
4459
- let T = await no({
4460
- prepared: w,
4461
- config: r,
4462
- cwd: i,
4613
+ c.stop(`Downloaded ${E.length} pack${E.length === 1 ? "" : "s"}`);
4614
+ let D = await So({
4615
+ prepared: E,
4616
+ config: a,
4617
+ cwd: s,
4463
4618
  force: e.force ?? !1,
4464
4619
  yes: e.yes ?? !1,
4465
- slotsByPack: y
4620
+ slotsByPack: x
4466
4621
  });
4467
4622
  try {
4468
- a.start("Installing pack files...");
4469
- let t = await bi({
4470
- packs: w,
4471
- config: r,
4472
- projectRoot: i,
4623
+ c.start("Installing pack files...");
4624
+ let t = await Ni({
4625
+ packs: E,
4626
+ config: a,
4627
+ projectRoot: s,
4473
4628
  force: e.force ?? !1,
4474
- overwrite: T,
4475
- slotsByPack: y
4629
+ overwrite: D,
4630
+ slotsByPack: x
4476
4631
  });
4477
4632
  if (t.aborted) {
4478
- a.stop("Installation aborted");
4633
+ c.stop("Installation aborted");
4479
4634
  for (let e of t.errors) o.log.error(e);
4480
4635
  o.cancel("No files were written. Fix the errors above (or pass --force for existing files) and try again."), process.exit(1);
4481
4636
  }
4482
- a.stop("Files installed"), t.installed.length > 0 && o.log.success(`${L.highlight(String(t.installed.length))} files installed`), t.skipped.length > 0 && o.log.warning(`${t.skipped.length} files skipped (use --force to overwrite)`);
4637
+ c.stop("Files installed"), t.installed.length > 0 && o.log.success(`${L.highlight(String(t.installed.length))} files installed`), t.skipped.length > 0 && o.log.warning(`${t.skipped.length} files skipped (use --force to overwrite)`);
4483
4638
  for (let e of t.errors) o.log.error(e);
4484
- await eo({
4485
- prepared: w,
4486
- paths: r.paths,
4487
- cwd: i,
4488
- spinner: a
4489
- }), await Zn({
4490
- projectRoot: i,
4491
- paths: r.paths,
4639
+ await bo({
4640
+ prepared: E,
4641
+ paths: a.paths,
4642
+ cwd: s,
4643
+ spinner: c
4644
+ }), i && await qi(s, e.yes ?? !1), await ur({
4645
+ projectRoot: s,
4646
+ paths: a.paths,
4492
4647
  skipPrompts: e.yes ?? !1
4493
- }), to(w), o.outro(L.brand(`Installed ${t.appliedPacks.join(", ")}.`));
4648
+ }), xo(E), o.outro(L.brand(`Installed ${t.appliedPacks.join(", ")}.`));
4494
4649
  } finally {
4495
- await Promise.all(w.map((e) => s.rm(e.packDir, {
4650
+ await Promise.all(E.map((e) => v.rm(e.packDir, {
4496
4651
  recursive: !0,
4497
4652
  force: !0
4498
4653
  })));
4499
4654
  }
4500
4655
  }
4501
- async function io(e) {
4656
+ async function wo(e) {
4502
4657
  let { packs: t, installedSet: n, stateOf: r, options: i, adminAvailable: a } = e;
4503
4658
  if (i.packs && i.packs.length > 0) {
4504
- let e = i.packs.map(oo), n = e.filter((e) => !t.some((t) => t.name === e.name));
4659
+ let e = i.packs.map(Eo), n = e.filter((e) => !t.some((t) => t.name === e.name));
4505
4660
  return n.length > 0 && (o.cancel(`Unknown pack${n.length === 1 ? "" : "s"}: ${n.map((e) => e.name).join(", ")}`), process.exit(1)), e;
4506
4661
  }
4507
4662
  let s = t.filter((e) => n.has(e.name));
4508
4663
  s.length > 0 && o.note(s.map((e) => ` ${L.muted("✓")} ${e.displayName}`).join("\n"), "Already Installed");
4509
4664
  let c = t.filter((e) => !n.has(e.name));
4510
4665
  if (c.length === 0) return o.outro(L.muted("Every available pack is already installed.")), [];
4511
- let l = A();
4512
- o.note(c.map((e) => ` ${R.arrow} ${L.highlight(e.displayName)} ${ie(`${l}/packs/${e.name}`)}`).join("\n"), "Browse packs");
4513
- let u = Di(c, { adminAvailable: a }), d = [];
4666
+ let l = P();
4667
+ o.note(c.map((e) => ` ${R.arrow} ${L.highlight(e.displayName)} ${_e(`${l}/packs/${e.name}`)}`).join("\n"), "Browse packs");
4668
+ let u = Bi(c, { adminAvailable: a }), d = [];
4514
4669
  for (let e of u) {
4515
4670
  let t = e.packs.map((e) => {
4516
4671
  let t = r(e.name);
4517
4672
  return {
4518
4673
  value: e.name,
4519
- label: `${e.displayName} ${Xa(t, e.price)}`,
4674
+ label: `${e.displayName} ${go(t, e.price)}`,
4520
4675
  hint: e.description
4521
4676
  };
4522
4677
  });
@@ -4533,30 +4688,30 @@ async function io(e) {
4533
4688
  });
4534
4689
  continue;
4535
4690
  }
4536
- let n = await o.multiselect({
4691
+ let n = await ma({
4537
4692
  message: `Select ${e.label.toLowerCase()} to add (optional)`,
4538
4693
  options: t,
4539
4694
  required: !1
4540
4695
  });
4541
- if (o.isCancel(n)) return null;
4696
+ if (p(n)) return null;
4542
4697
  for (let e of n) d.push({ name: e });
4543
4698
  }
4544
4699
  return d;
4545
4700
  }
4546
- var ao = /@(frontend|admin)$/;
4547
- function oo(e) {
4548
- let t = e.match(ao);
4701
+ var To = /@(frontend|admin)$/;
4702
+ function Eo(e) {
4703
+ let t = e.match(To);
4549
4704
  return t ? {
4550
4705
  name: e.slice(0, -t[0].length),
4551
4706
  slot: t[1]
4552
4707
  } : { name: e };
4553
4708
  }
4554
- function so(e) {
4709
+ function Do(e) {
4555
4710
  let t = /* @__PURE__ */ new Set(), n = [];
4556
4711
  for (let r of e) t.has(r.name) || (t.add(r.name), n.push(r.name));
4557
4712
  return n;
4558
4713
  }
4559
- function co(e) {
4714
+ function Oo(e) {
4560
4715
  let t = /* @__PURE__ */ new Map();
4561
4716
  for (let n of e) {
4562
4717
  if (!n.slot) continue;
@@ -4567,11 +4722,11 @@ function co(e) {
4567
4722
  }
4568
4723
  //#endregion
4569
4724
  //#region src/commands/login.ts
4570
- async function lo() {
4571
- qi(), o.intro(L.brandBold("Log in to Hype Stack")), o.log.step("Opening your browser to sign in...");
4725
+ async function ko() {
4726
+ fa(), o.intro(L.brandBold("Log in to Hype Stack")), o.log.step("Opening your browser to sign in...");
4572
4727
  let e;
4573
4728
  try {
4574
- e = await Vn({ onUrl: (e) => {
4729
+ e = await $n({ onUrl: (e) => {
4575
4730
  o.log.info(`If your browser didn't open, visit:\n ${L.path(e)}`);
4576
4731
  } });
4577
4732
  } catch (e) {
@@ -4581,28 +4736,28 @@ async function lo() {
4581
4736
  }
4582
4737
  //#endregion
4583
4738
  //#region src/commands/logout.ts
4584
- async function uo() {
4585
- qi(), o.intro(L.brandBold("Log out of Hype Stack"));
4586
- let e = k(), t = await Mn(e);
4739
+ async function Ao() {
4740
+ fa(), o.intro(L.brandBold("Log out of Hype Stack"));
4741
+ let e = N(), t = await Wn(e);
4587
4742
  if (!t) {
4588
4743
  o.outro(L.muted("You're not logged in."));
4589
4744
  return;
4590
4745
  }
4591
- await wn(t.token).catch(() => null), await Pn(e), o.outro(L.brand("Logged out."));
4746
+ await In(t.token).catch(() => null), await Kn(e), o.outro(L.brand("Logged out."));
4592
4747
  }
4593
4748
  //#endregion
4594
4749
  //#region src/core/templates.ts
4595
- var fo = K.createRequest()({
4750
+ var jo = q.createRequest()({
4596
4751
  endpoint: "/templates/list",
4597
4752
  method: "GET"
4598
4753
  });
4599
- async function po() {
4600
- let { data: e, error: t } = await fo.send();
4754
+ async function Mo() {
4755
+ let { data: e, error: t } = await jo.send();
4601
4756
  if (t || !e) throw Error(`Failed to fetch template list: ${String(t)}`);
4602
4757
  return e.templates;
4603
4758
  }
4604
- async function mo(e) {
4605
- let { data: t, error: n, status: r } = await K.createRequest()({
4759
+ async function No(e) {
4760
+ let { data: t, error: n, status: r } = await q.createRequest()({
4606
4761
  endpoint: `/templates/${encodeURIComponent(e)}/manifest`,
4607
4762
  method: "GET"
4608
4763
  }).send();
@@ -4610,13 +4765,13 @@ async function mo(e) {
4610
4765
  if (n || !t) throw Error(`Failed to load manifest for template "${e}": ${String(n)}`);
4611
4766
  return t;
4612
4767
  }
4613
- async function ho(e, t = {}) {
4614
- let n = K.createRequest()({
4768
+ async function Po(e, t = {}) {
4769
+ let n = q.createRequest()({
4615
4770
  endpoint: `/templates/${encodeURIComponent(e)}/download`,
4616
4771
  method: "POST"
4617
4772
  }), r = {
4618
- "X-Device-Id": In(),
4619
- "X-Client-Info": Ln()
4773
+ "X-Device-Id": Jn(),
4774
+ "X-Client-Info": Yn()
4620
4775
  };
4621
4776
  t.token && (r.Authorization = `Bearer ${t.token}`);
4622
4777
  let { data: i, error: a, success: o } = await n.setPayload({ key: t.licenseKey ?? void 0 }).setHeaders(r).send();
@@ -4627,51 +4782,51 @@ async function ho(e, t = {}) {
4627
4782
  packs: i.packs ?? [],
4628
4783
  expiresAt: i.expiresAt ?? null
4629
4784
  };
4630
- let c = await s.mkdtemp(p.join(f.tmpdir(), `hype-stack-template-${e}-`));
4785
+ let s = await v.mkdtemp(w.join(C.tmpdir(), `hype-stack-template-${e}-`));
4631
4786
  return await Promise.all(i.files.map(async (e) => {
4632
- let t = p.join(c, ...e.path.split("/"));
4633
- await s.mkdir(p.dirname(t), { recursive: !0 }), await s.writeFile(t, Buffer.from(e.content, "base64"));
4787
+ let t = w.join(s, ...e.path.split("/"));
4788
+ await v.mkdir(w.dirname(t), { recursive: !0 }), await v.writeFile(t, Buffer.from(e.content, "base64"));
4634
4789
  })), {
4635
4790
  status: "ok",
4636
- templateDir: c
4791
+ templateDir: s
4637
4792
  };
4638
4793
  }
4639
4794
  //#endregion
4640
4795
  //#region src/commands/template.ts
4641
- async function go(e = {}) {
4796
+ async function Fo(e = {}) {
4642
4797
  let t = e.cwd ?? process.cwd();
4643
- qi();
4644
- let n = await Ga(t), a;
4798
+ fa();
4799
+ let n = await uo(t), a = n?.projectRoot ?? null, s = n?.scaffolded ?? !1, c;
4645
4800
  try {
4646
- a = await Qn(n ?? t);
4801
+ c = await dr(a ?? t);
4647
4802
  } catch (e) {
4648
4803
  o.cancel(`Could not parse ${L.path("stack.json")}: ${$(e)} Run 'npx @hype-stack/cli init' to regenerate it.`), process.exit(1);
4649
4804
  }
4650
- a || (o.cancel(n ? `Could not read ${L.path("stack.json")}. Run 'npx @hype-stack/cli init' to regenerate it, then run 'npx @hype-stack/cli template' again.` : `No ${L.path("stack.json")}. Run 'npx @hype-stack/cli init' first, then 'npx @hype-stack/cli template'.`), process.exit(1)), a.paths || (o.cancel(`${L.path("stack.json")} is missing ${L.path("paths")}. Run 'npx @hype-stack/cli init' again to regenerate it.`), process.exit(1));
4651
- let c = n ?? t;
4805
+ c || (o.cancel(a ? `Could not read ${L.path("stack.json")}. Run 'npx @hype-stack/cli init' to regenerate it, then run 'npx @hype-stack/cli template' again.` : `No ${L.path("stack.json")}. Run 'npx @hype-stack/cli init' first, then 'npx @hype-stack/cli template'.`), process.exit(1)), c.paths || (o.cancel(`${L.path("stack.json")} is missing ${L.path("paths")}. Run 'npx @hype-stack/cli init' again to regenerate it.`), process.exit(1));
4806
+ let l = a ?? t;
4652
4807
  o.intro(L.brandBold("Install a template"));
4653
- let l = o.spinner();
4654
- l.start("Loading packs...");
4655
- let u;
4808
+ let u = o.spinner();
4809
+ u.start("Loading packs...");
4810
+ let d;
4656
4811
  try {
4657
- u = await ur();
4812
+ d = await Cr();
4658
4813
  } catch (e) {
4659
- l.stop("Failed to load packs"), o.cancel(`Could not reach Hype Stack. Check your connection and try again.\n${$(e)}`), process.exit(1);
4814
+ u.stop("Failed to load packs"), o.cancel(`Could not reach Hype Stack. Check your connection and try again.\n${$(e)}`), process.exit(1);
4660
4815
  }
4661
- l.stop("Packs loaded");
4662
- let d = a.installedPacks ?? [], f = new Set(d), m = new Map(u.map((e) => [e.name, e])), h = e.licenseKey ?? a.licenseKey ?? null, g = (await Mn(k()))?.token ?? null;
4663
- l.start("Loading templates...");
4816
+ u.stop("Packs loaded");
4817
+ let f = c.installedPacks ?? [], p = new Set(f), m = new Map(d.map((e) => [e.name, e])), h = e.licenseKey ?? c.licenseKey ?? null, g = (await Wn(N()))?.token ?? null;
4818
+ u.start("Loading templates...");
4664
4819
  let _;
4665
4820
  try {
4666
- _ = await po();
4821
+ _ = await Mo();
4667
4822
  } catch (e) {
4668
- l.stop("Failed to load templates"), o.cancel(`Could not reach Hype Stack. Check your connection and try again.\n${$(e)}`), process.exit(1);
4823
+ u.stop("Failed to load templates"), o.cancel(`Could not reach Hype Stack. Check your connection and try again.\n${$(e)}`), process.exit(1);
4669
4824
  }
4670
- let v = e.templateId;
4671
- if (!v) {
4672
- e.yes && (l.stop("Template id required"), o.cancel("Pass a template id with `npx @hype-stack/cli 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");
4673
- let t = A();
4674
- o.note(_.map((e) => ` ${R.arrow} ${L.highlight(e.name)} ${ie(`${t}/templates/${e.id}`)}`).join("\n"), "Browse templates");
4825
+ let y = e.templateId;
4826
+ if (!y) {
4827
+ e.yes && (u.stop("Template id required"), o.cancel("Pass a template id with `npx @hype-stack/cli template <id>` (required in --yes mode)."), process.exit(1)), _.length === 0 && (u.stop("No templates available"), o.cancel("No templates are available yet. Check back later."), process.exit(1)), u.stop("Templates loaded");
4828
+ let t = P();
4829
+ o.note(_.map((e) => ` ${R.arrow} ${L.highlight(e.name)} ${_e(`${t}/templates/${e.id}`)}`).join("\n"), "Browse templates");
4675
4830
  let n = await o.select({
4676
4831
  message: "Choose a template",
4677
4832
  options: _.map((e) => ({
@@ -4680,130 +4835,130 @@ async function go(e = {}) {
4680
4835
  hint: e.description
4681
4836
  }))
4682
4837
  });
4683
- o.isCancel(n) && (o.cancel("Cancelled."), process.exit(0)), v = n;
4684
- }
4685
- let y = _.find((e) => e.id === v);
4686
- 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}`);
4687
- let b = await _o(y, e.variants, e.yes ?? !1), x = Ni(y.slots, b), S = Pi(y.slots, y.packs, x), C = await vo({
4688
- packs: u,
4689
- templatePacks: S,
4690
- installedSet: f,
4838
+ o.isCancel(n) && (o.cancel("Cancelled."), process.exit(0)), y = n;
4839
+ }
4840
+ let b = _.find((e) => e.id === y);
4841
+ b || (u.stop("Template not found"), o.cancel(`Template "${y}" not found. Available: ${_.map((e) => e.id).join(", ") || "(none)"}`), process.exit(1)), u.stop(`Template: ${b.name}`);
4842
+ let x = await Io(b, e.variants, e.yes ?? !1), S = Qi(b.slots, x), C = $i(b.slots, b.packs, S), T = await Lo({
4843
+ packs: d,
4844
+ templatePacks: C,
4845
+ installedSet: p,
4691
4846
  options: e
4692
- }), w = [...S, ...C.filter((e) => !S.includes(e))], T = w.filter((e) => !m.has(e));
4693
- T.length > 0 && (o.cancel(`Unknown pack${T.length === 1 ? "" : "s"}: ${T.join(", ")}`), process.exit(1));
4694
- let E = Li(u, x), D = ki(E), O;
4847
+ }), E = [...C, ...T.filter((e) => !C.includes(e))], D = E.filter((e) => !m.has(e));
4848
+ D.length > 0 && (o.cancel(`Unknown pack${D.length === 1 ? "" : "s"}: ${D.join(", ")}`), process.exit(1));
4849
+ let O = na(d, S), ee = Ji(O), k;
4695
4850
  try {
4696
- O = ji(w, D, d);
4851
+ k = Xi(E, ee, f);
4697
4852
  } catch (e) {
4698
4853
  o.cancel($(e)), process.exit(1);
4699
4854
  }
4700
- if (O.order.length === 0) {
4855
+ if (k.order.length === 0) {
4701
4856
  o.outro(L.muted("Every pack in this template is already installed."));
4702
4857
  return;
4703
4858
  }
4704
- let ee = await Ya(E, f, {
4859
+ let te = await ho(O, p, {
4705
4860
  token: g,
4706
4861
  key: h
4707
- }), te = (e) => {
4862
+ }), ne = (e) => {
4708
4863
  let t = m.get(e);
4709
- return !t || t.tier === "free" ? "free" : ee[e]?.owned ? "owned" : "locked";
4710
- }, j = (e) => !f.has(e) && te(e) === "locked", M = Mi({
4711
- order: O.order,
4712
- graph: D,
4713
- isLocked: j,
4714
- installed: d
4864
+ return !t || t.tier === "free" ? "free" : te[e]?.owned ? "owned" : "locked";
4865
+ }, re = (e) => !p.has(e) && ne(e) === "locked", A = Zi({
4866
+ order: k.order,
4867
+ graph: ee,
4868
+ isLocked: re,
4869
+ installed: f
4715
4870
  });
4716
- if (M.blocked.length > 0 && !g && !h) {
4717
- let e = await Hn();
4718
- e && (g = e, ee = await Ya(E, f, {
4871
+ if (A.blocked.length > 0 && !g && !h) {
4872
+ let e = await er();
4873
+ e && (g = e, te = await ho(O, p, {
4719
4874
  token: g,
4720
4875
  key: h
4721
- }), M = Mi({
4722
- order: O.order,
4723
- graph: D,
4724
- isLocked: j,
4725
- installed: d
4876
+ }), A = Zi({
4877
+ order: k.order,
4878
+ graph: ee,
4879
+ isLocked: re,
4880
+ installed: f
4726
4881
  }));
4727
4882
  }
4728
- if (M.blocked.length > 0 && await Za(M.blocked, j, m), M.installable.length === 0) {
4883
+ if (A.blocked.length > 0 && await _o(A.blocked, re, m), A.installable.length === 0) {
4729
4884
  o.outro(L.muted("Nothing left to install once locked packs are removed."));
4730
4885
  return;
4731
4886
  }
4732
- if (Qa(M.installable, m), !e.yes) {
4733
- let e = await o.confirm({ message: `Install template ${L.brandBold(y.name)} (${M.installable.length} pack${M.installable.length === 1 ? "" : "s"})?` });
4887
+ if (vo(A.installable, m), !e.yes) {
4888
+ let e = await o.confirm({ message: `Install template ${L.brandBold(b.name)} (${A.installable.length} pack${A.installable.length === 1 ? "" : "s"})?` });
4734
4889
  (o.isCancel(e) || !e) && (o.cancel("Installation cancelled."), process.exit(0));
4735
4890
  }
4736
- l.start("Downloading packs...");
4737
- let N;
4891
+ u.start("Downloading packs...");
4892
+ let j;
4738
4893
  try {
4739
- N = await $a(M.installable, {
4894
+ j = await yo(A.installable, {
4740
4895
  token: g,
4741
4896
  key: h
4742
4897
  });
4743
4898
  } catch (e) {
4744
- l.stop("Download failed"), o.cancel($(e)), process.exit(1);
4899
+ u.stop("Download failed"), o.cancel($(e)), process.exit(1);
4745
4900
  }
4746
- l.stop(`Downloaded ${N.length} pack${N.length === 1 ? "" : "s"}`);
4747
- let P = await no({
4748
- prepared: N,
4749
- config: a,
4750
- cwd: c,
4901
+ u.stop(`Downloaded ${j.length} pack${j.length === 1 ? "" : "s"}`);
4902
+ let ie = await So({
4903
+ prepared: j,
4904
+ config: c,
4905
+ cwd: l,
4751
4906
  force: e.force ?? !1,
4752
4907
  yes: e.yes ?? !1
4753
- }), F = null;
4908
+ }), M = null;
4754
4909
  try {
4755
- l.start("Installing pack files...");
4756
- let t = await bi({
4757
- packs: N,
4758
- config: a,
4759
- projectRoot: c,
4910
+ u.start("Installing pack files...");
4911
+ let t = await Ni({
4912
+ packs: j,
4913
+ config: c,
4914
+ projectRoot: l,
4760
4915
  force: e.force ?? !1,
4761
- overwrite: P
4916
+ overwrite: ie
4762
4917
  });
4763
4918
  if (t.aborted) {
4764
- l.stop("Installation aborted");
4919
+ u.stop("Installation aborted");
4765
4920
  for (let e of t.errors) o.log.error(e);
4766
4921
  o.cancel("No files were written. Fix the errors above (or pass --force for existing files) and try again."), process.exit(1);
4767
4922
  }
4768
- l.stop("Files installed"), t.installed.length > 0 && o.log.success(`${L.highlight(String(t.installed.length))} files installed`), t.skipped.length > 0 && o.log.warning(`${t.skipped.length} files skipped (use --force to overwrite)`);
4923
+ u.stop("Files installed"), t.installed.length > 0 && o.log.success(`${L.highlight(String(t.installed.length))} files installed`), t.skipped.length > 0 && o.log.warning(`${t.skipped.length} files skipped (use --force to overwrite)`);
4769
4924
  for (let e of t.errors) o.log.error(e);
4770
- l.start("Applying template overrides...");
4771
- let n = await mo(y.id), s = await ho(y.id, {
4925
+ u.start("Applying template overrides...");
4926
+ let n = await No(b.id), a = await Po(b.id, {
4772
4927
  token: g,
4773
4928
  licenseKey: h
4774
4929
  });
4775
- s.status === "denied" && (l.stop("Template download denied"), o.cancel(`Access to template "${y.id}" was denied (${s.reason}). Try 'npx @hype-stack/cli login' or check your license.`), process.exit(1)), F = s.templateDir;
4776
- let u = await Si({
4930
+ a.status === "denied" && (u.stop("Template download denied"), o.cancel(`Access to template "${b.id}" was denied (${a.reason}). Try 'npx @hype-stack/cli login' or check your license.`), process.exit(1)), M = a.templateDir;
4931
+ let d = await Fi({
4777
4932
  manifest: n,
4778
- config: a,
4779
- projectRoot: c,
4780
- templateDir: F
4933
+ config: c,
4934
+ projectRoot: l,
4935
+ templateDir: M
4781
4936
  });
4782
- l.stop("Template overrides applied"), u.installed.length > 0 && o.log.success(`${u.installed.length} template file${u.installed.length === 1 ? "" : "s"} applied`);
4783
- for (let e of u.errors) o.log.error(e);
4784
- let d = n.theme ?? "zinc-mono";
4785
- i(d) && (await ea(p.resolve(c, a.paths?.frontend.root ?? "apps/frontend"), r(d)) ? o.log.success(`Applied the ${r(d).label} theme`) : o.log.warning(L.muted(`Could not find ${L.path("assets/styles.css")} to apply the theme`))), await yo({
4786
- prepared: N,
4937
+ u.stop("Template overrides applied"), d.installed.length > 0 && o.log.success(`${d.installed.length} template file${d.installed.length === 1 ? "" : "s"} applied`);
4938
+ for (let e of d.errors) o.log.error(e);
4939
+ let f = n.theme ?? "zinc-mono";
4940
+ i(f) && (await ba(w.resolve(l, c.paths?.frontend.root ?? "apps/frontend"), r(f)) ? o.log.success(`Applied the ${r(f).label} theme`) : o.log.warning(L.muted(`Could not find ${L.path("assets/styles.css")} to apply the theme`))), await Ro({
4941
+ prepared: j,
4787
4942
  templateNpm: n.dependencies_npm,
4788
- paths: a.paths,
4789
- cwd: c,
4790
- spinner: l
4791
- }), await Zn({
4792
- projectRoot: c,
4793
- paths: a.paths,
4943
+ paths: c.paths,
4944
+ cwd: l,
4945
+ spinner: u
4946
+ }), s && await qi(l, e.yes ?? !1), await ur({
4947
+ projectRoot: l,
4948
+ paths: c.paths,
4794
4949
  skipPrompts: e.yes ?? !1
4795
- }), to(N), n.postInstall && n.postInstall.length > 0 && o.note(n.postInstall.map((e) => ` ${L.muted("→")} ${e}`).join("\n"), "Template Next Steps"), o.outro(L.brand(`Installed template ${y.name}.`));
4950
+ }), xo(j), n.postInstall && n.postInstall.length > 0 && o.note(n.postInstall.map((e) => ` ${L.muted("→")} ${e}`).join("\n"), "Template Next Steps"), o.outro(L.brand(`Installed template ${b.name}.`));
4796
4951
  } finally {
4797
- await Promise.all(N.map((e) => s.rm(e.packDir, {
4952
+ await Promise.all(j.map((e) => v.rm(e.packDir, {
4798
4953
  recursive: !0,
4799
4954
  force: !0
4800
- }))), F && await s.rm(F, {
4955
+ }))), M && await v.rm(M, {
4801
4956
  recursive: !0,
4802
4957
  force: !0
4803
4958
  });
4804
4959
  }
4805
4960
  }
4806
- async function _o(e, t, n) {
4961
+ async function Io(e, t, n) {
4807
4962
  let r = {};
4808
4963
  for (let i of e.slots) {
4809
4964
  if (t?.[i.family]) {
@@ -4827,7 +4982,7 @@ async function _o(e, t, n) {
4827
4982
  }
4828
4983
  return r;
4829
4984
  }
4830
- async function vo(e) {
4985
+ async function Lo(e) {
4831
4986
  let { packs: t, templatePacks: n, installedSet: r, options: i } = e, a = new Set(n);
4832
4987
  if (i.packs && i.packs.length > 0) {
4833
4988
  let e = i.packs.filter((e) => !t.some((t) => t.name === e));
@@ -4836,9 +4991,9 @@ async function vo(e) {
4836
4991
  if (i.yes) return [];
4837
4992
  let s = t.filter((e) => e.category === "feature" && !a.has(e.name) && !r.has(e.name));
4838
4993
  if (s.length === 0) return [];
4839
- let c = A();
4840
- o.note(s.map((e) => ` ${R.arrow} ${L.highlight(e.displayName)} ${ie(`${c}/packs/${e.name}`)}`).join("\n"), "Browse packs");
4841
- let l = await o.multiselect({
4994
+ let c = P();
4995
+ o.note(s.map((e) => ` ${R.arrow} ${L.highlight(e.displayName)} ${_e(`${c}/packs/${e.name}`)}`).join("\n"), "Browse packs");
4996
+ let l = await ma({
4842
4997
  message: "Add extra packs on top of the template (optional)",
4843
4998
  options: s.map((e) => ({
4844
4999
  value: e.name,
@@ -4847,27 +5002,27 @@ async function vo(e) {
4847
5002
  })),
4848
5003
  required: !1
4849
5004
  });
4850
- return o.isCancel(l) && (o.cancel("Cancelled."), process.exit(0)), l;
5005
+ return p(l) && (o.cancel("Cancelled."), process.exit(0)), l;
4851
5006
  }
4852
- async function yo(e) {
4853
- let { prepared: t, templateNpm: n, paths: r, cwd: i, spinner: a } = e, s = qa(t.map((e) => e.manifest.dependencies_npm)), c = Ka(n ? qa([s, n]) : s, r);
5007
+ async function Ro(e) {
5008
+ let { prepared: t, templateNpm: n, paths: r, cwd: i, spinner: a } = e, s = po(t.map((e) => e.manifest.dependencies_npm)), c = fo(n ? po([s, n]) : s, r);
4854
5009
  if (c.errors.length > 0) {
4855
5010
  for (let e of c.errors) o.log.error(e);
4856
5011
  return;
4857
5012
  }
4858
5013
  if (c.operations.length === 0) return;
4859
5014
  a.start("Installing npm dependencies...");
4860
- let l = await Ja(c.operations, i);
5015
+ let l = await mo(c.operations, i);
4861
5016
  if (a.stop(l.ok ? "npm dependencies installed" : "npm dependency installation failed"), !l.ok) for (let e of l.errors) o.log.error(e);
4862
5017
  }
4863
5018
  //#endregion
4864
5019
  //#region src/cli.ts
4865
- function bo(e) {
5020
+ function zo(e) {
4866
5021
  if (!e) return;
4867
5022
  let t = e.split(",").map((e) => e.trim()).filter((e) => e.length > 0);
4868
5023
  return t.length > 0 ? t : void 0;
4869
5024
  }
4870
- function xo(e) {
5025
+ function Bo(e) {
4871
5026
  if (!e) return;
4872
5027
  let t = {};
4873
5028
  for (let n of e.split(",")) {
@@ -4876,10 +5031,10 @@ function xo(e) {
4876
5031
  }
4877
5032
  return Object.keys(t).length > 0 ? t : void 0;
4878
5033
  }
4879
- function So() {
5034
+ function Vo() {
4880
5035
  let e = new a();
4881
- return e.name("hype-stack").description("Build with Hype Stack -- templates, components, modules, and more").version(_, "-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) => {
4882
- await Ua({
5036
+ return e.name("hype-stack").description("Build with Hype Stack -- templates, components, modules, and more").version(k, "-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) => {
5037
+ await co({
4883
5038
  name: e.name,
4884
5039
  directory: e.directory,
4885
5040
  install: e.install,
@@ -4889,32 +5044,32 @@ function So() {
4889
5044
  setup: e.setup
4890
5045
  });
4891
5046
  }), e.command("init").description("Initialize stack.json in the current project").action(async () => {
4892
- await Wa({});
5047
+ await lo({});
4893
5048
  }), 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) => {
4894
- await ro({
4895
- packs: bo(e.packs),
5049
+ await Co({
5050
+ packs: zo(e.packs),
4896
5051
  force: e.force,
4897
5052
  yes: e.yes,
4898
5053
  licenseKey: e.key ?? e.licenseKey,
4899
5054
  cwd: e.cwd
4900
5055
  });
4901
5056
  }), 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) => {
4902
- await go({
5057
+ await Fo({
4903
5058
  templateId: e,
4904
- variants: xo(t.variants),
4905
- packs: bo(t.packs),
5059
+ variants: Bo(t.variants),
5060
+ packs: zo(t.packs),
4906
5061
  force: t.force,
4907
5062
  yes: t.yes,
4908
5063
  licenseKey: t.key ?? t.licenseKey,
4909
5064
  cwd: t.cwd
4910
5065
  });
4911
5066
  }), e.command("login").description("Log in via your browser to install packs your organization owns").action(async () => {
4912
- await lo();
5067
+ await ko();
4913
5068
  }), e.command("logout").description("Log out and remove the saved CLI token").action(async () => {
4914
- await uo();
5069
+ await Ao();
4915
5070
  }), e.command("auth").description("Alias for `login`").action(async () => {
4916
- await lo();
5071
+ await ko();
4917
5072
  }), e;
4918
5073
  }
4919
5074
  //#endregion
4920
- export { Ga as a, ro as i, uo as n, Wa as o, lo as r, Ua as s, So as t };
5075
+ export { uo as a, Co as i, Ao as n, lo as o, ko as r, co as s, Vo as t };