@hype-stack/cli 0.3.0 → 0.3.1

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", A = "gh:BetterTyped/hype-stack", j = "stack.json", M = "/schema/stack.json", te = "https://api.hype-stack.dev", N = "HYPE_STACK_API_URL", ne = "https://www.hype-stack.dev", re = /^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/, ie = [
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
+ ], ae = ie.map((e) => e.value), oe = ".cursor/rules", se = ".cursor", ce = ".agents";
35
+ function P() {
33
36
  let e = process.env.HYPE_STACK_API_URL;
34
- return e ? (te(e), e.replace(/\/+$/, "")) : x;
37
+ return e ? (le(e), e.replace(/\/+$/, "")) : te;
35
38
  }
36
- function A() {
39
+ function F() {
37
40
  let e = process.env.HYPE_STACK_WEB_URL;
38
- return e ? (te(e), e.replace(/\/+$/, "")) : C;
41
+ return e ? (le(e), e.replace(/\/+$/, "")) : ne;
39
42
  }
40
- function te(e) {
43
+ function le(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(`${N} 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(`${N} is not a valid URL: "${e}"`, { cause: t }) : t;
46
49
  }
47
50
  }
48
- function j() {
49
- return `${k()}${b}`;
51
+ function ue() {
52
+ return `${P()}${M}`;
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,
58
- skyBlue: I,
59
- lightBlue: ne
60
- }, L = {
61
- brand: (e) => M(e),
62
- brandBold: (e) => c.bold(M(e)),
63
- 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))
56
+ var de = (e) => `\x1b[38;5;208m${e}\x1b[39m`, fe = (e) => `\x1b[38;5;214m${e}\x1b[39m`, I = (e) => `\x1b[38;5;220m${e}\x1b[39m`, pe = (e) => `\x1b[38;5;33m${e}\x1b[39m`, L = (e) => `\x1b[38;5;39m${e}\x1b[39m`, me = (e) => `\x1b[38;5;81m${e}\x1b[39m`, he = {
57
+ orange: de,
58
+ orangeBright: fe,
59
+ amber: I,
60
+ deepBlue: pe,
61
+ skyBlue: L,
62
+ lightBlue: me
63
+ }, R = {
64
+ brand: (e) => de(e),
65
+ brandBold: (e) => y.bold(de(e)),
66
+ accent: (e) => L(e),
67
+ accentBold: (e) => y.bold(L(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(L(e)),
75
+ command: (e) => y.bold(I(e)),
76
+ label: (e) => y.dim(y.bold(e))
74
77
  };
75
- function ie(e, t = e) {
76
- return `\x1b]8;;${e}\x07${I(t)}\x1b]8;;\x07`;
77
- }
78
- var R = {
79
- arrow: M("›"),
80
- bullet: L.muted("·"),
81
- dash: L.muted("─"),
82
- corner: L.muted("╰"),
83
- pipe: L.muted("│"),
84
- dot: L.muted("•"),
85
- spark: P("✦"),
86
- sparkSmall: N("✧"),
87
- bolt: P("⚡")
88
- }, ae = [
89
- P,
90
- P,
91
- N,
92
- M,
93
- F,
78
+ function ge(e, t = e) {
79
+ return `\x1b]8;;${e}\x07${L(t)}\x1b]8;;\x07`;
80
+ }
81
+ var z = {
82
+ arrow: de("›"),
83
+ bullet: R.muted("·"),
84
+ dash: R.muted("─"),
85
+ corner: R.muted("╰"),
86
+ pipe: R.muted("│"),
87
+ dot: R.muted("•"),
88
+ spark: I("✦"),
89
+ sparkSmall: fe("✧"),
90
+ bolt: I("⚡")
91
+ }, _e = [
92
+ I,
94
93
  I,
95
- ne,
96
- ne
94
+ fe,
95
+ de,
96
+ pe,
97
+ L,
98
+ me,
99
+ me
97
100
  ];
98
- function oe(e) {
101
+ function ve(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 _e[Math.min(Math.floor(r * _e.length), _e.length - 1)](e);
104
107
  }).join("");
105
108
  }
106
- function se(e, t, n) {
109
+ function ye(e, t, n) {
107
110
  return Math.round(e + (t - e) * n);
108
111
  }
109
- function ce(e, t) {
112
+ function be(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;${ye(n[0], r[0], u)};${ye(n[1], r[1], u)};${ye(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 xe(e) {
123
+ return `${F()}/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 Se = Object.create, Ce = Object.defineProperty, we = Object.getOwnPropertyDescriptor, Te = Object.getOwnPropertyNames, Ee = Object.getPrototypeOf, De = Object.prototype.hasOwnProperty, Oe = (e, t) => () => (t || e((t = { exports: {} }).exports, t), t.exports), ke = (e, t, n, r) => {
128
+ if (t && typeof t == "object" || typeof t == "function") for (var i = Te(t), a = 0, o = i.length, s; a < o; a++) s = i[a], !De.call(e, s) && s !== n && Ce(e, s, {
126
129
  get: ((e) => t[e]).bind(null, s),
127
- enumerable: !(r = fe(t, s)) || r.enumerable
130
+ enumerable: !(r = we(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
+ }, Ae = (e, t, n) => (n = e == null ? {} : Se(Ee(e)), ke(t || !e || !e.__esModule ? Ce(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)), je = (e) => `${e.queryKey}_${Date.now().toString(36)}_${Math.random().toString(36).substring(2)}`, Me = /* @__PURE__ */ Ae((/* @__PURE__ */ Oe(((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
+ })))()), Ne = (e) => `listen_${String(e)}`, Pe = class extends Me.default {
309
312
  emitCallbacks = [];
310
313
  constructor(e) {
311
314
  super(e);
@@ -317,26 +320,26 @@ 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(Ne(e), t), () => {
324
+ super.off(Ne(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(Ne(e), super.listeners(e).length), this);
327
+ off = (e, t) => (super.off(e, t), super.emit(Ne(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
+ }, Fe = class {
331
+ emitter = new Pe();
332
+ events = Be(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
- let { initiallyFocused: t = B.initiallyFocused, initiallyOnline: n = B.initiallyOnline } = this.options || B;
336
- this.setInitialFocus(t), this.setInitialOnline(n), this.isBrowser = Te();
338
+ let { initiallyFocused: t = V.initiallyFocused, initiallyOnline: n = V.initiallyOnline } = this.options || V;
339
+ this.setInitialFocus(t), this.setInitialOnline(n), this.isBrowser = Le();
337
340
  }
338
341
  initialize = () => {
339
- let { focusEvent: e = B.focusEvent, onlineEvent: t = B.onlineEvent } = this.options || B;
342
+ let { focusEvent: e = V.focusEvent, onlineEvent: t = V.onlineEvent } = this.options || V;
340
343
  e(this.setFocused), t(this.setOnline);
341
344
  };
342
345
  setInitialFocus = async (e) => {
@@ -351,51 +354,51 @@ 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
+ }, Ie = () => {
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
+ }, Le = () => {
362
365
  try {
363
- return !!(we() && window.document && window.document.addEventListener);
366
+ return !!(Ie() && 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
+ }, Re = (e, t, n) => Ie() ? (window.addEventListener(e, t, n), () => window.removeEventListener(e, t, n)) : () => null, ze = (e, t, n) => Le() ? (window.document.addEventListener(e, t, n), () => window.document.removeEventListener(e, t, n)) : () => null, Be = (e) => ({
369
372
  emitFocus: () => {
370
- e.emit(z.FOCUS);
373
+ e.emit(B.FOCUS);
371
374
  },
372
375
  emitBlur: () => {
373
- e.emit(z.BLUR);
376
+ e.emit(B.BLUR);
374
377
  },
375
378
  emitOnline: () => {
376
- e.emit(z.ONLINE);
379
+ e.emit(B.ONLINE);
377
380
  },
378
381
  emitOffline: () => {
379
- e.emit(z.OFFLINE);
382
+ e.emit(B.OFFLINE);
380
383
  },
381
- onFocus: (t) => (e.on(z.FOCUS, t), () => e.removeListener(z.FOCUS, t)),
382
- onBlur: (t) => (e.on(z.BLUR, t), () => e.removeListener(z.BLUR, t)),
383
- onOnline: (t) => (e.on(z.ONLINE, t), () => e.removeListener(z.ONLINE, t)),
384
- onOffline: (t) => (e.on(z.OFFLINE, t), () => e.removeListener(z.OFFLINE, t))
385
- }), z = /* @__PURE__ */ function(e) {
384
+ onFocus: (t) => (e.on(B.FOCUS, t), () => e.removeListener(B.FOCUS, t)),
385
+ onBlur: (t) => (e.on(B.BLUR, t), () => e.removeListener(B.BLUR, t)),
386
+ onOnline: (t) => (e.on(B.ONLINE, t), () => e.removeListener(B.ONLINE, t)),
387
+ onOffline: (t) => (e.on(B.OFFLINE, t), () => e.removeListener(B.OFFLINE, t))
388
+ }), B = /* @__PURE__ */ function(e) {
386
389
  return e.FOCUS = "focus", e.BLUR = "blur", e.ONLINE = "online", e.OFFLINE = "offline", e;
387
- }({}), B = {
390
+ }({}), V = {
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
+ ze("visibilitychange", () => e(!0)), Re("focus", () => e(!0)), Re("blur", () => e(!1));
392
395
  },
393
396
  onlineEvent: (e) => {
394
- Ee("online", () => e(!0)), Ee("offline", () => e(!1));
397
+ Re("online", () => e(!0)), Re("offline", () => e(!1));
395
398
  }
396
- }, ke = class {
397
- emitter = new Se();
398
- events = at(this.emitter);
399
+ }, Ve = class {
400
+ emitter = new Pe();
401
+ events = _t(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
+ }, He = () => "loading-event-any", Ue = (e) => `${e}-loading-event`, We = (e) => `${e}-loading-cache-event`, Ge = (e) => `${e}-loading-event-by-id`, Ke = () => "remove-event-any", qe = (e) => `${e}-remove-event`, Je = (e) => `${e}-remove-event-by-id`, Ye = () => "request-abort-any", Xe = (e) => `${e}-request-abort`, Ze = (e) => `${e}-request-abort-by-id`, Qe = () => "response-any", $e = (e) => `${e}-response`, et = (e) => `${e}-response-by-id`, tt = () => "request-start-any", nt = (e) => `${e}-request-start`, rt = (e) => `${e}-request-start-by-id`, it = () => "response-start-any", at = (e) => `${e}-response-start`, ot = (e) => `${e}-response-start-by-id`, st = () => "request-progress-any", ct = (e) => `${e}-request-progress`, lt = (e) => `${e}-request-progress-by-id`, ut = () => "response-progress-any", dt = (e) => `${e}-response-progress`, ft = (e) => `${e}-response-progress-by-id`, pt = () => "request-deduplicated-any", mt = (e) => `${e}-query-request-deduplicated`, ht = (e) => `${e}-cache-request-deduplicated`, gt = (e) => `${e}-request-deduplicated-by-id`, _t = (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(pt(), t, n), e.emit(gt(t.requestId), t, n), e.emit(ht(t.request.cacheKey), t, n), e.emit(mt(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(He(), t, n), e.emit(Ge(t.requestId), t, n), e.emit(We(t.request.cacheKey), t, n), e.emit(Ue(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(tt(), t, n), e.emit(rt(t.requestId), t, n), e.emit(nt(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(it(), t, n), e.emit(ot(t.requestId), t, n), e.emit(at(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(st(), t, n), e.emit(lt(t.requestId), t, n), e.emit(ct(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(ut(), t, n), e.emit(ft(t.requestId), t, n), e.emit(dt(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(Qe(), t, n), e.emit(et(t.requestId), t, n), e.emit($e(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(Ye(), t, n), e.emit(Ze(t.requestId), t, n), e.emit(Xe(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(Ke(), t, n), e.emit(Je(t.requestId), t, n), e.emit(qe(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(pt(), t), () => e.removeListener(pt(), t)),
467
+ onDeduplicatedByQueue: (t, n) => (e.on(mt(t), n), () => e.removeListener(mt(t), n)),
468
+ onDeduplicatedByCache: (t, n) => (e.on(ht(t), n), () => e.removeListener(ht(t), n)),
469
+ onDeduplicatedById: (t, n) => (e.on(gt(t), n), () => e.removeListener(gt(t), n)),
470
+ onLoading: (t) => (e.on(He(), t), () => e.removeListener(He(), t)),
471
+ onLoadingByQueue: (t, n) => (e.on(Ue(t), n), () => e.removeListener(Ue(t), n)),
472
+ onLoadingByCache: (t, n) => (e.on(We(t), n), () => e.removeListener(We(t), n)),
473
+ onLoadingById: (t, n) => (e.on(Ge(t), n), () => e.removeListener(Ge(t), n)),
474
+ onRequestStart: (t) => (e.on(tt(), t), () => e.removeListener(tt(), t)),
475
+ onRequestStartByQueue: (t, n) => (e.on(nt(t), n), () => e.removeListener(nt(t), n)),
476
+ onRequestStartById: (t, n) => (e.on(rt(t), n), () => e.removeListener(rt(t), n)),
477
+ onResponseStart: (t) => (e.on(it(), t), () => e.removeListener(it(), t)),
478
+ onResponseStartByQueue: (t, n) => (e.on(at(t), n), () => e.removeListener(at(t), n)),
479
+ onResponseStartById: (t, n) => (e.on(ot(t), n), () => e.removeListener(ot(t), n)),
480
+ onUploadProgress: (t) => (e.on(st(), t), () => e.removeListener(st(), t)),
481
+ onUploadProgressByQueue: (t, n) => (e.on(ct(t), n), () => e.removeListener(ct(t), n)),
482
+ onUploadProgressById: (t, n) => (e.on(lt(t), n), () => e.removeListener(lt(t), n)),
483
+ onDownloadProgress: (t) => (e.on(ut(), t), () => e.removeListener(ut(), t)),
484
+ onDownloadProgressByQueue: (t, n) => (e.on(dt(t), n), () => e.removeListener(dt(t), n)),
485
+ onDownloadProgressById: (t, n) => (e.on(ft(t), n), () => e.removeListener(ft(t), n)),
486
+ onResponse: (t) => (e.on(Qe(), t), () => e.removeListener(Qe(), t)),
487
+ onResponseByCache: (t, n) => (e.on($e(t), n), () => e.removeListener($e(t), n)),
488
+ onResponseById: (t, n) => (e.on(et(t), n), () => e.removeListener(et(t), n)),
489
+ onAbort: (t) => (e.on(Ye(), t), () => e.removeListener(Ye(), t)),
490
+ onAbortByKey: (t, n) => (e.on(Xe(t), n), () => e.removeListener(Xe(t), n)),
491
+ onAbortById: (t, n) => (e.on(Ze(t), n), () => e.removeListener(Ze(t), n)),
492
+ onRemove: (t) => (e.on(Ke(), t), () => e.removeListener(Ke(), t)),
493
+ onRemoveByQueue: (t, n) => (e.on(qe(t), n), () => e.removeListener(qe(t), n)),
494
+ onRemoveById: (t, n) => (e.on(Je(t), n), () => e.removeListener(Je(t), n))
495
+ }), vt = class {
493
496
  logger;
494
497
  level;
495
498
  modules;
496
- emitter = new be.default();
499
+ emitter = new Me.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 || xt, 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 && (St.indexOf(this.level) <= St.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
+ }, yt = () => `${(/* @__PURE__ */ new Date()).toLocaleTimeString()}`, bt = (e) => e.type === "request" || e.type === "response" ? `${e.extra.request.endpoint}` : `[${e.module}]`, xt = (e) => {
536
+ let t = wt[e.level], n = Tt[e.level], r = `%c[${yt()}]%c${e.title}%c${bt(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
+ }, St = [
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
+ ], Ct = "padding:2px 5px;", wt = {
544
+ error: `${Ct};background:#db252520;`,
545
+ warning: `${Ct};background:#e1941e20;`,
546
+ info: `${Ct};background:#1e74e120;`,
547
+ debug: `${Ct};background:#00000020;`
548
+ }, Tt = {
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
+ }, Et = class extends Error {
551
554
  constructor() {
552
555
  super("Request timeout"), this.name = "TimeoutError";
553
556
  }
554
- }, ht = class extends Error {
557
+ }, Dt = class extends Error {
555
558
  constructor() {
556
559
  super("Request aborted"), this.name = "AbortError";
557
560
  }
558
- }, gt = class extends Error {
561
+ }, Ot = class extends Error {
559
562
  constructor() {
560
563
  super("Request deleted"), this.name = "DeletedError";
561
564
  }
562
- }, _t = class extends Error {
565
+ }, kt = 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 Et() : e === "abort" ? new Dt() : e === "deleted" ? new Ot() : e === "processing" ? new kt() : 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 = Ie() && 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) => Ie() && 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,
@@ -1064,21 +1067,21 @@ var wt = /* @__PURE__ */ function(e) {
1064
1067
  requestId: t,
1065
1068
  request: d
1066
1069
  }), u;
1067
- }, te = (e) => {
1070
+ }, j = (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
+ }, M = () => {
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
+ }, te = async ({ data: e, error: r, status: i, extra: a }) => {
1082
1085
  let o = {
1083
1086
  data: e,
1084
1087
  error: r ?? null,
@@ -1103,13 +1106,13 @@ var wt = /* @__PURE__ */ function(e) {
1103
1106
  response: o
1104
1107
  }
1105
1108
  }), o;
1106
- }, N = Lt({
1109
+ }, N = 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
+ }), ne = ({ status: e, extra: n }) => (c.error({
1113
1116
  title: "Abort error",
1114
1117
  type: "request",
1115
1118
  extra: {
@@ -1117,10 +1120,10 @@ var wt = /* @__PURE__ */ function(e) {
1117
1120
  requestId: t
1118
1121
  }
1119
1122
  }), N({
1120
- error: i(V("abort")),
1123
+ error: i(H("abort")),
1121
1124
  status: e,
1122
1125
  extra: n
1123
- })), F = ({ status: e, extra: n }) => (c.error({
1126
+ })), re = ({ status: e, extra: n }) => (c.error({
1124
1127
  title: "Timeout error",
1125
1128
  type: "request",
1126
1129
  extra: {
@@ -1128,10 +1131,10 @@ var wt = /* @__PURE__ */ function(e) {
1128
1131
  requestId: t
1129
1132
  }
1130
1133
  }), N({
1131
- error: V("timeout"),
1134
+ error: H("timeout"),
1132
1135
  status: e,
1133
1136
  extra: n
1134
- })), I = ({ status: e, extra: n }) => (c.error({
1137
+ })), ie = ({ status: e, extra: n }) => (c.error({
1135
1138
  title: "Unexpected error",
1136
1139
  type: "request",
1137
1140
  extra: {
@@ -1139,14 +1142,14 @@ var wt = /* @__PURE__ */ function(e) {
1139
1142
  requestId: t
1140
1143
  }
1141
1144
  }), N({
1142
- error: V(),
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
+ })), ae = () => a.getAbortController(v, t), oe = ({ status: e, extra: n, onAbort: r = () => {} }) => {
1149
+ let i = ae();
1150
+ if (!i) throw new kt("Controller is not found");
1148
1151
  let o = () => {
1149
- P({
1152
+ ne({
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 se = e.client.adapter.unstable_queryParamsMapper(d.queryParams), ce = e.client.adapter.unstable_endpointMapper(d.endpoint), P = e.client.adapter.unstable_headerMapper(d), { url: F } = e.client;
1170
1173
  return {
1171
1174
  request: d,
1172
1175
  requestId: t,
1173
- url: ae,
1174
- endpoint: ie,
1175
- queryParams: L,
1176
+ url: F,
1177
+ endpoint: ce,
1178
+ queryParams: se,
1176
1179
  payload: y,
1177
- headers: R,
1180
+ headers: P,
1178
1181
  adapter: e.client.adapter,
1179
1182
  adapterOptions: b,
1180
- getAbortController: ne,
1183
+ getAbortController: ae,
1181
1184
  getRequestStartTimestamp: S,
1182
1185
  getResponseStartTimestamp: C,
1183
- createAbortListener: re,
1186
+ createAbortListener: oe,
1184
1187
  onBeforeRequest: D,
1185
1188
  onRequestStart: O,
1186
1189
  onRequestProgress: ee,
1187
1190
  onRequestEnd: k,
1188
1191
  onResponseStart: A,
1189
- onResponseProgress: te,
1190
- onResponseEnd: j,
1191
- onSuccess: M,
1192
- onAbortError: P,
1193
- onTimeoutError: F,
1194
- onUnexpectedError: I,
1192
+ onResponseProgress: j,
1193
+ onResponseEnd: M,
1194
+ onSuccess: te,
1195
+ onAbortError: ne,
1196
+ onTimeoutError: re,
1197
+ onUnexpectedError: ie,
1195
1198
  onError: N
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 kt("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 kt(`Adapter ${this.options.name} is not initialized`);
1325
+ if (!this.unstable_fetcher) throw new kt(`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 = Pn) => {
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, sn = { headers: {} }, cn = () => new Qt({
1407
1410
  name: "http",
1408
- defaultMethod: wt.GET,
1409
- defaultExtra: W,
1411
+ defaultMethod: It.GET,
1412
+ defaultExtra: sn,
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: sn
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: sn
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: sn
1482
1485
  });
1483
1486
  return;
1484
1487
  }
1485
1488
  i({
1486
1489
  error: e,
1487
1490
  status: 0,
1488
- extra: W
1491
+ extra: sn
1489
1492
  });
1490
1493
  }
1491
- }), Yt = () => Jt(), Xt = class {
1492
- emitter = new Se();
1494
+ }), ln = () => cn(), un = class {
1495
+ emitter = new Pe();
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 = vn(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 = dn(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
+ }, dn = (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
+ }, fn = () => "invalidate", pn = (e) => `${e}_invalidate`, mn = () => "delete", hn = (e) => `${e}_delete`, gn = (e) => `${e}_cache`, _n = () => "cache", vn = (e) => ({
1663
1666
  emitCacheData: (t, n = !1) => {
1664
- e.emit(rn(), t, n), e.emit(nn(t.cacheKey), t, n);
1667
+ e.emit(_n(), t, n), e.emit(gn(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(fn(), t, n), e.emit(pn(t), n);
1668
1671
  },
1669
1672
  emitDelete: (t, n = !1) => {
1670
- e.emit(en(), t, n), e.emit(tn(t), n);
1673
+ e.emit(mn(), t, n), e.emit(hn(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))
1675
+ onData: (t) => (e.on(_n(), t), () => e.removeListener(_n(), t)),
1676
+ onDataByKey: (t, n) => (e.on(gn(t), n), () => e.removeListener(gn(t), n)),
1677
+ onInvalidate: (t) => (e.on(fn(), t), () => e.removeListener(fn(), t)),
1678
+ onInvalidateByKey: (t, n) => (e.on(pn(t), n), () => e.removeListener(pn(t), n)),
1679
+ onDelete: (t) => (e.on(mn(), t), () => e.removeListener(mn(), t)),
1680
+ onDeleteByKey: (t, n) => (e.on(hn(t), n), () => e.removeListener(hn(t), n))
1678
1681
  }), G = /* @__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
+ }({}), yn = (e) => ({
1681
1684
  emitDrained: (t, n) => {
1682
- e.emit(cn(), t, n), e.emit(ln(t.queryKey), t, n);
1685
+ e.emit(xn(), t, n), e.emit(Sn(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(Cn(), t, n), e.emit(wn(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(Tn(), t, n), e.emit(En(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(xn(), t), () => e.removeListener(xn(), t)),
1694
+ onDrainedByKey: (t, n) => (e.on(Sn(t), n), () => e.removeListener(Sn(t), n)),
1695
+ onQueueStatusChange: (t) => (e.on(Cn(), t), () => e.removeListener(Cn(), t)),
1696
+ onQueueStatusChangeByKey: (t, n) => (e.on(wn(t), n), () => e.removeListener(wn(t), n)),
1697
+ onQueueChange: (t) => (e.on(Tn(), t), () => e.removeListener(Tn(), t)),
1698
+ onQueueChangeByKey: (t, n) => (e.on(En(t), n), () => e.removeListener(En(t), n))
1699
+ }), bn = class {
1700
+ emitter = new Pe();
1701
+ events = yn(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 = kn(e, i);
1867
1870
  switch (this.logger.debug({
1868
1871
  title: "Adding request to queue",
1869
1872
  type: "system",
@@ -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 = Dn(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;
2057
+ }, xn = () => "drained-event", Sn = (e) => `${e}-drained-event`, Cn = () => "status-event", wn = (e) => `${e}-status-event`, Tn = () => "change-event", En = (e) => `${e}-change-event`, Dn = (e, t) => !!(t && e < t), On = (e, t) => e.deduplicateTime ? +/* @__PURE__ */ new Date() - t.timestamp <= e.deduplicateTime : !0, kn = (e, t) => {
2058
+ let { queued: n, cancelable: r, deduplicate: i } = e, a = t ? On(e, t) : !1;
2056
2059
  return n ? G.ONE_BY_ONE : r ? G.PREVIOUS_CANCELED : a && i ? G.DEDUPLICATED : G.ALL_AT_ONCE;
2057
2060
  };
2058
- function _n(e) {
2061
+ function An(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 jn = 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
+ }, Mn = 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
+ }, Nn = 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 vt();
2086
+ requestManager = new Ve();
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 = je;
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 = An(o), this.adapter = ln(), this.appManager = n?.() || new Fe(), this.cache = r?.() || new un(), this.fetchDispatcher = i?.() || new bn(), this.submitDispatcher = a?.() || new bn(), 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) => jn(this.unstable_onAuthCallbacks, e);
2132
+ unstable_modifyRequest = async (e) => jn(this.unstable_onRequestCallbacks, e);
2133
+ unstable_modifyErrorResponse = async (e, t) => Mn(this.unstable_onErrorCallbacks, e, t);
2134
+ unstable_modifySuccessResponse = async (e, t) => Mn(this.unstable_onSuccessCallbacks, e, t);
2135
+ unstable_modifyResponse = async (e, t) => Mn(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 un(), this.appManager = e?.() || new Fe(), this.fetchDispatcher = n?.() || new bn(), this.submitDispatcher = r?.() || new bn(), 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
+ }, Pn = {
2170
2173
  strict: !0,
2171
2174
  encode: !0,
2172
2175
  arrayFormat: "bracket",
@@ -2175,22 +2178,22 @@ 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 Fn(e) {
2182
+ return new Nn(e);
2180
2183
  }
2181
2184
  //#endregion
2182
2185
  //#region src/core/client.ts
2183
- var K = Sn({ url: k() });
2186
+ var K = Fn({ url: P() });
2184
2187
  //#endregion
2185
2188
  //#region src/core/auth-api.ts
2186
- async function Cn(e) {
2189
+ async function In(e) {
2187
2190
  let { data: t, success: n } = await K.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) {
2196
+ async function Ln(e) {
2194
2197
  await K.createRequest()({
2195
2198
  endpoint: "/auth/cli/token",
2196
2199
  method: "DELETE"
@@ -2198,78 +2201,78 @@ async function wn(e) {
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 Rn = 1, zn = "hype-stack", Bn = "auth.json";
2205
+ function Vn() {
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, zn);
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, zn);
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", zn);
2214
+ let n = process.env.XDG_CONFIG_HOME ?? w.join(t, ".config");
2215
+ return w.join(n, zn);
2213
2216
  }
2214
- function kn() {
2215
- return p.join(On(), Dn);
2217
+ function Hn() {
2218
+ return w.join(Vn(), Bn);
2216
2219
  }
2217
- async function An() {
2218
- let e = await s.readFile(kn(), "utf-8").catch(() => null);
2220
+ async function Un() {
2221
+ let e = await v.readFile(Hn(), "utf-8").catch(() => null);
2219
2222
  if (!e) return {
2220
- version: Tn,
2223
+ version: Rn,
2221
2224
  tokens: {}
2222
2225
  };
2223
2226
  let t = JSON.parse(e);
2224
2227
  return {
2225
- version: t.version ?? Tn,
2228
+ version: t.version ?? Rn,
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 Wn(e) {
2233
+ let t = Vn();
2234
+ await v.mkdir(t, { recursive: !0 }), await v.writeFile(Hn(), `${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 Gn(e) {
2237
+ return (await Un()).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 Kn(e, t) {
2240
+ let n = await Un();
2241
+ n.tokens[e] = t, await Wn(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 qn(e) {
2244
+ let t = await Un();
2245
+ e in t.tokens && (delete t.tokens[e], await Wn(t));
2243
2246
  }
2244
2247
  //#endregion
2245
2248
  //#region src/core/device.ts
2246
- function Fn() {
2247
- let e = f.networkInterfaces();
2249
+ function Jn() {
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 Yn() {
2257
+ let e = `${Jn()}:${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 Xn() {
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 Zn(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 Qn = 300 * 1e3, $n = (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 er(e = {}) {
2272
+ let t = x(16).toString("hex"), n = P(), 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
+ }, Qn);
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($n(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,55 +2301,55 @@ 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(Xn()), a = `${F()}/cli/authorize?port=${n}&state=${t}&label=${i}`;
2305
+ e.onUrl?.(a), Zn(a);
2303
2306
  });
2304
- }), a = await Cn(i).catch(() => null), o = {
2307
+ }), a = await In(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 Kn(n, o), o;
2310
2313
  }
2311
2314
  //#endregion
2312
2315
  //#region src/core/access-prompts.ts
2313
- async function Hn() {
2316
+ async function tr() {
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) => {
2319
- o.log.info(`If your browser didn't open, visit:\n ${L.path(e)}`);
2321
+ let e = await er({ onUrl: (e) => {
2322
+ o.log.info(`If your browser didn't open, visit:\n ${R.path(e)}`);
2320
2323
  } });
2321
2324
  return o.log.success(e.email ? `Logged in as ${e.email}` : "Logged in"), e.token;
2322
2325
  } catch (e) {
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 nr(e) {
2327
2330
  if (e.length === 0) return;
2328
2331
  o.note([
2329
2332
  "These packs need a purchase before they can be installed:",
2330
2333
  "",
2331
- ...e.map((e) => ` ${L.brand(e.displayName)} ${L.highlight(`$${e.price}`)}`)
2334
+ ...e.map((e) => ` ${R.brand(e.displayName)} ${R.highlight(`$${e.price}`)}`)
2332
2335
  ].join("\n"), "Locked Packs");
2333
2336
  let t = await o.confirm({ message: `Open the purchase ${e.length === 1 ? "page" : "pages"} in your browser?` });
2334
2337
  if (o.isCancel(t) || !t) {
2335
- o.log.info(L.muted("Run 'npx @hype-stack/cli login' after purchasing, then 'npx @hype-stack/cli compose' again."));
2338
+ o.log.info(R.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) Zn(xe(t.name));
2339
2342
  o.log.info([
2340
- L.muted("After purchasing, run:"),
2341
- ` ${L.highlight("npx @hype-stack/cli login")} ${L.muted("Save your access")}`,
2342
- ` ${L.highlight("npx @hype-stack/cli compose")} ${L.muted("Install the packs")}`
2343
+ R.muted("After purchasing, run:"),
2344
+ ` ${R.highlight("npx @hype-stack/cli login")} ${R.muted("Save your access")}`,
2345
+ ` ${R.highlight("npx @hype-stack/cli compose")} ${R.muted("Install the packs")}`
2343
2346
  ].join("\n"));
2344
2347
  }
2345
2348
  //#endregion
2346
2349
  //#region src/utils/exec.ts
2347
2350
  function q(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,60 +2380,60 @@ 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 rr(e) {
2384
+ return (await v.stat(e).catch(() => null))?.isDirectory() ?? !1;
2382
2385
  }
2383
- async function Y(e) {
2384
- return (await s.stat(e).catch(() => null))?.isFile() ?? !1;
2386
+ async function J(e) {
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 ir(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 ar(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 or(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 sr(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 rr(e)) return t;
2402
+ let n = await v.readdir(e, { withFileTypes: !0 });
2403
+ for (let r of n) r.isDirectory() && await J(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 cr(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 lr(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) {
2415
- o.log.info(L.muted("Run database setup yourself when ready:")), o.note([
2416
- `${L.command(`cd ${e}`)}`,
2417
- `${L.command("pnpm exec prisma generate")} ${L.muted("(regenerate the Prisma client)")}`,
2418
- `${L.command("pnpm exec prisma migrate dev")} ${L.muted("(create + apply tables for new packs)")}`
2417
+ function ur(e) {
2418
+ o.log.info(R.muted("Run database setup yourself when ready:")), o.note([
2419
+ `${R.command(`cd ${e}`)}`,
2420
+ `${R.command("pnpm exec prisma generate")} ${R.muted("(regenerate the Prisma client)")}`,
2421
+ `${R.command("pnpm exec prisma migrate dev")} ${R.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 dr(e) {
2425
+ let { projectRoot: t, paths: n, skipPrompts: r, runCommand: i = q } = e, a = n.backend.root, s = w.join(t, a);
2426
+ if (!await J(w.join(s, "package.json"))) return;
2424
2427
  if (r) {
2425
- Xn(a);
2428
+ ur(a);
2426
2429
  return;
2427
2430
  }
2428
2431
  let c = await o.confirm({
2429
- message: `Run database setup now? (${L.command("prisma generate")} + ${L.command("prisma migrate")})`,
2432
+ message: `Run database setup now? (${R.command("prisma generate")} + ${R.command("prisma migrate")})`,
2430
2433
  initialValue: !0
2431
2434
  });
2432
2435
  if (o.isCancel(c) || !c) {
2433
- Xn(a);
2436
+ ur(a);
2434
2437
  return;
2435
2438
  }
2436
2439
  let l = o.spinner();
@@ -2439,10 +2442,10 @@ 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(R.warning("Prisma client generation failed")), ur(a);
2443
2446
  return;
2444
2447
  }
2445
- l.stop(L.success("Prisma client generated"));
2448
+ l.stop(R.success("Prisma client generated"));
2446
2449
  let u = o.spinner();
2447
2450
  if (u.start("Applying database schema..."), (await i("pnpm", [
2448
2451
  "exec",
@@ -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(R.warning("Database migration failed (is your database running?)")), ur(a);
2456
2459
  return;
2457
2460
  }
2458
- u.stop(L.success("Database schema applied"));
2461
+ u.stop(R.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 fr(e) {
2466
+ return ar(w.join(e, j));
2464
2467
  }
2465
- async function $n(e) {
2466
- return Y(p.join(e, y));
2468
+ async function pr(e) {
2469
+ return J(w.join(e, j));
2467
2470
  }
2468
- async function er(e, t) {
2469
- await Kn(p.join(e, y), t);
2471
+ async function mr(e, t) {
2472
+ await or(w.join(e, j), 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 hr(e) {
2475
+ let t = w.join(e, "apps"), n = w.join(e, "packages"), [r, i] = await Promise.all([sr(t), sr(n)]);
2473
2476
  return {
2474
2477
  apps: r,
2475
2478
  packages: i
2476
2479
  };
2477
2480
  }
2478
- function nr(e) {
2481
+ function gr(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,23 +2512,23 @@ function nr(e) {
2509
2512
  }
2510
2513
  };
2511
2514
  }
2512
- function rr(e, t) {
2515
+ function _r(e, t) {
2513
2516
  return {
2514
- $schema: j(),
2517
+ $schema: ue(),
2515
2518
  version: 1,
2516
2519
  name: e,
2517
2520
  apps: t.apps,
2518
2521
  packages: t.packages,
2519
- paths: nr(t),
2522
+ paths: gr(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 vr(e) {
2528
+ let t = w.join(e, "package.json"), n = w.join(e, "apps"), [r, i] = await Promise.all([J(t), rr(n)]);
2526
2529
  return r && i;
2527
2530
  }
2528
- function X(e, t) {
2531
+ function Y(e, t) {
2529
2532
  return e.replace(/\{\{(\w+)\.(\w+)\}\}/g, (n, r, i) => {
2530
2533
  let a = t[r];
2531
2534
  if (!a) throw Error(`Unknown app "${r}" in path template "${e}"`);
@@ -2536,7 +2539,7 @@ function X(e, t) {
2536
2539
  }
2537
2540
  //#endregion
2538
2541
  //#region src/core/registry.ts
2539
- async function ar(e) {
2542
+ async function yr(e) {
2540
2543
  let { data: t, error: n, status: r } = await K.createRequest()({
2541
2544
  endpoint: `/packs/${encodeURIComponent(e)}/manifest`,
2542
2545
  method: "GET"
@@ -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 = {}) {
2551
+ async function br(e, t = {}) {
2549
2552
  let n = K.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": Yn(),
2557
+ "X-Client-Info": Xn()
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,32 +2565,32 @@ 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) {
2575
- let r = X(e, t);
2576
- return p.resolve(n, r);
2577
+ function xr(e, t, n) {
2578
+ let r = Y(e, t);
2579
+ return w.resolve(n, r);
2577
2580
  }
2578
- function cr(e, t) {
2579
- return p.join(t, e);
2581
+ function Sr(e, t) {
2582
+ return w.join(t, e);
2580
2583
  }
2581
- var lr = K.createRequest()({
2584
+ var Cr = K.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 wr() {
2589
+ let { data: e, error: t } = await Cr.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 Tr(e, t = {}) {
2591
2594
  if (e.length === 0) return {};
2592
2595
  let n = K.createRequest()({
2593
2596
  endpoint: "/packs/authorize",
@@ -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) {
2608
- return X(e === "admin" ? "{{admin.root}}" : "{{frontend.root}}", t);
2609
+ var Er = "@hype-stack/";
2610
+ function Dr(e, t) {
2611
+ return Y(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");
2612
- 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");
2613
+ async function Or(e, t, n) {
2614
+ let r = Y("{{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");
2615
+ if (await J(i)) {
2616
+ let t = await v.readFile(i, "utf-8");
2617
+ for (let n of e) t.includes(`from "${n.from}"`) || (t = kr(t, n), t = Ar(t, n));
2618
+ await v.writeFile(i, t, "utf-8");
2616
2619
  }
2617
- 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");
2620
+ if (await J(a)) {
2621
+ let t = await v.readFile(a, "utf-8");
2622
+ for (let n of e) t = jr(t, n);
2623
+ await v.writeFile(a, t, "utf-8");
2621
2624
  }
2622
- 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");
2625
+ if (await J(o)) {
2626
+ let t = await v.readFile(o, "utf-8");
2627
+ for (let n of e) t = Mr(t, n);
2628
+ await v.writeFile(o, t, "utf-8");
2626
2629
  }
2627
2630
  }
2628
- function hr(e, t) {
2631
+ function kr(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 Ar(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 jr(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 Mr(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");
2664
- 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");
2665
+ async function Nr(e, t, n) {
2666
+ let r = w.resolve(n, Y("{{backend.routes}}", t), "index.ts");
2667
+ if (!await J(r)) return;
2668
+ let i = await v.readFile(r, "utf-8");
2669
+ for (let t of e) i.includes(`from "${t.from}"`) || (i = Pr(i, t), i = Fr(i, t));
2670
+ await v.writeFile(r, i, "utf-8");
2668
2671
  }
2669
- function br(e, t) {
2672
+ function Pr(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 Fr(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");
2688
- 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");
2689
+ async function Ir(e, t, n) {
2690
+ let r = w.resolve(n, Y("{{backend.root}}", t), "src/context.ts");
2691
+ if (!await J(r)) return;
2692
+ let i = await v.readFile(r, "utf-8");
2693
+ for (let t of e) i.includes(`export let ${t.export}`) || (i = Lr(i, t), i = Rr(i, t), i = zr(i, t), i = Vr(i, t));
2694
+ await v.writeFile(r, i, "utf-8");
2692
2695
  }
2693
- function Cr(e, t) {
2696
+ function Lr(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 Rr(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 zr(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 = Br(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 Br(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 Vr(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");
2735
- 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");
2736
+ async function Hr(e, t, n) {
2737
+ let r = w.resolve(n, Y("{{enums.src}}", t), "index.ts");
2738
+ if (!await J(r)) return;
2739
+ let i = await v.readFile(r, "utf-8");
2740
+ for (let t of e) i.includes(`from "${t.from}"`) || (i = Ur(i, t));
2741
+ await v.writeFile(r, i, "utf-8");
2739
2742
  }
2740
- function kr(e, t) {
2743
+ function Ur(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");
2750
- 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");
2751
+ async function Wr(e, t, n) {
2752
+ let r = Y("{{backend.root}}", t), i = w.resolve(n, r, "src/sockets/index.ts");
2753
+ if (!await J(i)) return;
2754
+ let a = await v.readFile(i, "utf-8");
2755
+ for (let t of e) a.includes(`from "${t.from}"`) || (a = Gr(a, t), a = Kr(a, t));
2756
+ await J(w.resolve(n, r, "src/libs/websocket/ws-authenticate.ts")) && (a = qr(a)), await v.writeFile(i, a, "utf-8");
2754
2757
  }
2755
- function jr(e, t) {
2758
+ function Gr(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 Kr(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 qr(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");
2789
- 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");
2790
+ async function Jr(e, t, n) {
2791
+ let r = Y("{{frontend.root}}", t), i = w.resolve(n, r, "src/api/sdk.ts");
2792
+ if (!await J(i)) return;
2793
+ let a = await v.readFile(i, "utf-8");
2794
+ for (let t of e) a.includes(`.$configure(${t.import})`) || (a = Yr(a, t), a = Xr(a, t));
2795
+ await v.writeFile(i, a, "utf-8");
2793
2796
  }
2794
- function Fr(e, t) {
2797
+ function Yr(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 Xr(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");
2813
- 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");
2814
+ async function Zr(e, t, n) {
2815
+ let r = w.resolve(n, Y("{{backend.utils}}", t), "frontend-url/frontend-url.ts");
2816
+ if (!await J(r)) return;
2817
+ let i = await v.readFile(r, "utf-8");
2818
+ for (let t of e) i.includes(`"${t.path}"`) || (i = Qr(i, t));
2819
+ await v.writeFile(r, i, "utf-8");
2817
2820
  }
2818
- function Rr(e, t) {
2821
+ function Qr(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 $r = "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", ei = {
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");
2839
- 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");
2844
- }
2845
- function Ur(e) {
2833
+ async function ti(e) {
2834
+ let { entries: t, paths: n, projectRoot: r, slot: i = "frontend" } = e, a = Dr(i, n), o = w.resolve(r, a, "src/constants/nav.constants.ts"), s;
2835
+ await J(o) ? s = await v.readFile(o, "utf-8") : (await v.mkdir(w.dirname(o), { recursive: !0 }), s = $r);
2836
+ for (let e of t) s.includes(`label: "${e.label}"`) || (s = ii(s, e));
2837
+ for (let e of t.toReversed()) s.includes(`label: "${e.label}"`) || (s = oi(s, e));
2838
+ await v.writeFile(o, s, "utf-8");
2839
+ }
2840
+ async function ni(e) {
2841
+ let { postLoginRedirect: t, paths: n, projectRoot: r, slot: i = "frontend" } = e, a = Dr(i, n), o = w.resolve(r, a, "src/features/auth/constants/auth.constants.ts");
2842
+ if (!await J(o)) return;
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");
2847
+ }
2848
+ function ri(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 ii(e, t) {
2854
+ let n = ri(t), r = e;
2855
+ for (let e of n) r = ai(r, e);
2853
2856
  return r;
2854
2857
  }
2855
- function Gr(e, t) {
2858
+ function ai(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 oi(e, t) {
2867
+ let n = ei[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 = ci(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 = si(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 si(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 ci(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");
2895
- 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");
2896
+ async function li(e, t, n) {
2897
+ let r = Y("{{backend.features}}", t), i = w.resolve(n, r, "organizations/modules/setup-organization/steps/index.ts");
2898
+ if (!await J(i)) return;
2899
+ let a = await v.readFile(i, "utf-8");
2900
+ for (let t of e) a.includes(`from "${t.from}"`) || (a = ui(a, t), a = di(a, t));
2901
+ await v.writeFile(i, a, "utf-8");
2899
2902
  }
2900
- function Xr(e, t) {
2903
+ function ui(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 di(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 = fi(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 fi(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 pi = "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 mi(e) {
2925
+ await gi({
2923
2926
  ...e,
2924
2927
  arrayName: "navbarActions"
2925
2928
  });
2926
2929
  }
2927
- async function ti(e) {
2928
- await ni({
2930
+ async function hi(e) {
2931
+ await gi({
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 gi({ actions: e, arrayName: t, paths: n, projectRoot: r, slot: i }) {
2937
+ let a = Dr(i, n), o = w.resolve(r, a, "src/constants/navbar-actions.tsx"), s;
2938
+ await J(o) ? s = await v.readFile(o, "utf-8") : (await v.mkdir(w.dirname(o), { recursive: !0 }), s = pi);
2939
+ for (let n of e) s = _i(s, n), s = vi(s, n, t);
2940
+ await v.writeFile(o, s, "utf-8");
2938
2941
  }
2939
- function ri(e, t) {
2942
+ function _i(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 vi(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 = yi(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 yi(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 bi = new Set([
2964
2967
  ".ts",
2965
2968
  ".tsx",
2966
2969
  ".js",
2967
2970
  ".jsx"
2968
2971
  ]);
2969
- async function si(e) {
2972
+ async function xi(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 = xr(e.target, n, r), i = await v.stat(t).catch(() => null);
2978
+ i?.isDirectory() ? await wi(t, a) : i?.isFile() && bi.has(w.extname(t)) && await Ti(t, a);
2976
2979
  }));
2977
2980
  }
2978
- var ci = new Set([
2981
+ var Si = 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 Ci(e, t) {
2991
+ t !== "hype-stack" && await wi(e, `@${t}/`);
2989
2992
  }
2990
- async function ui(e, t) {
2991
- let n = await s.readdir(e, { withFileTypes: !0 });
2993
+ async function wi(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 (Si.has(n.name)) return;
2999
+ await wi(r, t);
3000
+ } else n.isFile() && bi.has(w.extname(n.name)) && await Ti(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 Ti(e, t) {
3004
+ let n = await v.readFile(e, "utf-8");
3005
+ if (!n.includes(Er)) return;
3006
+ let r = n.replaceAll(Er, 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 Ei(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 Di(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 Di(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 Oi(e) {
3022
+ let { file: t, packDir: n, paths: r, projectRoot: i } = e, a = Sr(t.source, n), o = xr(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 J(a) || await rr(a),
3027
+ targetExists: await J(o) || await rr(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 ki(e) {
3031
+ let { file: t, packDir: n, paths: r, projectRoot: i } = e, { sourcePath: a, targetPath: o, sourceExists: s, targetExists: c } = await Oi({
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 Ai(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 Oi({
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 Di(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 Di(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 Di(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 Di(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 ji(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" || !Ei(n, t)) continue;
3121
+ let { targetPath: i, targetExists: c } = await Oi({
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 Mi(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 (!Ei(e, o)) continue;
3142
+ let t = await ki({
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 Ni(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) => Ei(e, s));
3158
3161
  for (let e of u) {
3159
- let t = await gi({
3162
+ let t = await Ai({
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 xi({
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 Or(t.env, c, r), t.routes && t.routes.length > 0 && await Nr(t.routes, c, r), t.context && t.context.length > 0 && await Ir(t.context, c, r), t.sockets && t.sockets.length > 0 && await Wr(t.sockets, c, r), t.sdkConfigurations && t.sdkConfigurations.length > 0 && await Jr(t.sdkConfigurations, c, r), t.enums && t.enums.length > 0 && await Hr(t.enums, c, r), t.frontendRoutes && t.frontendRoutes.length > 0 && await Zr(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 ti({
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 mi({
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 hi({
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 li(t.onboardingSteps, c, r), t.postLoginRedirect && await ni({
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 Pi(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 Mi({
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 Ni({
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 Fi(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 Fi(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 mr(n, r), r;
3258
3261
  }
3259
- async function Si(e) {
3262
+ async function Ii(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 Ai({
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 Zr(t.frontendRoutes, a, r), t.nav && t.nav.length > 0 && await ti({
3283
3286
  entries: t.nav,
3284
3287
  paths: a,
3285
3288
  projectRoot: r
3286
- }), t.postLoginRedirect && await Hr({
3289
+ }), t.postLoginRedirect && await ni({
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 Li = [
3298
3301
  "starter",
3299
3302
  "layout",
3300
3303
  "feature"
3301
- ], wi = {
3304
+ ], Ri = {
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
+ }, zi = new Set(["starter", "layout"]), Bi = "layout-basic";
3309
+ function Vi(e, t = {}) {
3307
3310
  let n = [];
3308
- for (let r of Ci) {
3311
+ for (let r of Li) {
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 = zi.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(Hi("frontend", i)), t.adminAvailable && n.push(Hi("admin", i));
3314
3317
  continue;
3315
3318
  }
3316
3319
  n.push({
3317
3320
  category: r,
3318
- label: wi[r],
3321
+ label: Ri[r],
3319
3322
  mode: a,
3320
3323
  packs: i,
3321
3324
  preselect: null
@@ -3323,20 +3326,20 @@ 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 Hi(e, t) {
3330
+ let n = t.some((e) => e.name === Bi);
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 ? Bi : null,
3334
3337
  slot: e
3335
3338
  };
3336
3339
  }
3337
3340
  //#endregion
3338
3341
  //#region src/core/resolve.ts
3339
- function ki(e) {
3342
+ function Ui(e) {
3340
3343
  let t = /* @__PURE__ */ new Map();
3341
3344
  for (let n of e) t.set(n.name, {
3342
3345
  name: n.name,
@@ -3344,7 +3347,7 @@ function ki(e) {
3344
3347
  });
3345
3348
  return t;
3346
3349
  }
3347
- function Ai(e, t, n = /* @__PURE__ */ new Set()) {
3350
+ function Wi(e, t, n = /* @__PURE__ */ new Set()) {
3348
3351
  let r = /* @__PURE__ */ new Set();
3349
3352
  function i(e) {
3350
3353
  if (n.has(e)) return [];
@@ -3358,10 +3361,10 @@ function Ai(e, t, n = /* @__PURE__ */ new Set()) {
3358
3361
  }
3359
3362
  return i(e);
3360
3363
  }
3361
- function ji(e, t, n = []) {
3364
+ function Gi(e, t, n = []) {
3362
3365
  let r = new Set(n), i = new Set(n), a = [];
3363
3366
  for (let n of e) {
3364
- let e = Ai(n, t, new Set(i));
3367
+ let e = Wi(n, t, new Set(i));
3365
3368
  for (let t of e) i.has(t) || (i.add(t), a.push(t));
3366
3369
  }
3367
3370
  return {
@@ -3369,7 +3372,7 @@ function ji(e, t, n = []) {
3369
3372
  alreadyInstalled: e.filter((e) => r.has(e))
3370
3373
  };
3371
3374
  }
3372
- function Mi(e) {
3375
+ function Ki(e) {
3373
3376
  let { order: t, graph: n, isLocked: r, installed: i = [] } = e, a = new Set(i), o = /* @__PURE__ */ new Set();
3374
3377
  for (let e of t) {
3375
3378
  let t = n.get(e)?.dependencies.some((e) => !a.has(e) && o.has(e)) ?? !1;
@@ -3382,7 +3385,7 @@ function Mi(e) {
3382
3385
  }
3383
3386
  //#endregion
3384
3387
  //#region src/core/variants.ts
3385
- function Ni(e, t = {}) {
3388
+ function qi(e, t = {}) {
3386
3389
  let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
3387
3390
  for (let i of e) {
3388
3391
  let e = t[i.family] ?? i.default;
@@ -3394,14 +3397,14 @@ function Ni(e, t = {}) {
3394
3397
  familyOf: r
3395
3398
  };
3396
3399
  }
3397
- function Pi(e, t, n) {
3400
+ function Ji(e, t, n) {
3398
3401
  return [...e.map((e) => n.chosen.get(e.family) ?? e.default), ...t];
3399
3402
  }
3400
- function Fi(e, t) {
3403
+ function Yi(e, t) {
3401
3404
  let n = t.familyOf.get(e);
3402
3405
  return n ? t.chosen.get(n) ?? e : e;
3403
3406
  }
3404
- function Ii(e, t) {
3407
+ function Xi(e, t) {
3405
3408
  let n = /* @__PURE__ */ new Map();
3406
3409
  for (let t of e) t.family && n.set(t.name, t.family);
3407
3410
  let r = new Set(t), i = /* @__PURE__ */ new Map();
@@ -3417,73 +3420,182 @@ function Ii(e, t) {
3417
3420
  familyOf: n
3418
3421
  };
3419
3422
  }
3420
- function Li(e, t) {
3423
+ function Zi(e, t) {
3421
3424
  return e.map((e) => ({
3422
3425
  ...e,
3423
- dependencies: e.dependencies.map((e) => Fi(e, t))
3426
+ dependencies: e.dependencies.map((e) => Yi(e, t))
3424
3427
  }));
3425
3428
  }
3426
3429
  //#endregion
3427
3430
  //#region src/ui/banner.ts
3428
- var Ri = [
3431
+ var Qi = [
3429
3432
  " ██╗ ██╗ ██╗ ██╗ ██████╗ ███████╗",
3430
3433
  " ██║ ██║ ╚██╗ ██╔╝ ██╔══██╗ ██╔════╝",
3431
3434
  " ███████║ ╚████╔╝ ██████╔╝ █████╗ ",
3432
3435
  " ██╔══██║ ╚██╔╝ ██╔═══╝ ██╔══╝ ",
3433
3436
  " ██║ ██║ ██║ ██║ ███████╗",
3434
3437
  " ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝"
3435
- ], zi = [
3438
+ ], $i = [
3436
3439
  " ███████╗ ████████╗ █████╗ ██████╗ ██╗ ██╗",
3437
3440
  " ██╔════╝ ╚══██╔══╝ ██╔══██╗ ██╔════╝ ██║ ██╔╝",
3438
3441
  " ███████╗ ██║ ███████║ ██║ █████╔╝ ",
3439
3442
  " ╚════██║ ██║ ██╔══██║ ██║ ██╔═██╗ ",
3440
3443
  " ███████║ ██║ ██║ ██║ ╚██████╗ ██║ ██╗",
3441
3444
  " ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝"
3442
- ], Bi = [
3445
+ ], ea = [
3443
3446
  253,
3444
3447
  176,
3445
3448
  21
3446
- ], Vi = [
3449
+ ], ta = [
3447
3450
  245,
3448
3451
  76,
3449
3452
  2
3450
- ], Hi = 5, Ui = [
3453
+ ], na = 5, ra = [
3451
3454
  17,
3452
3455
  103,
3453
3456
  248
3454
- ], Wi = [
3457
+ ], ia = [
3455
3458
  42,
3456
3459
  160,
3457
3460
  250
3458
- ], Gi = .2;
3459
- function Ki() {
3461
+ ], aa = .2;
3462
+ function oa() {
3460
3463
  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();
3464
+ for (let e of be(Qi, {
3465
+ start: ea,
3466
+ end: ta,
3467
+ angle: na
3468
+ })) console.log(y.bold(e));
3469
+ for (let e of be($i, {
3470
+ start: ra,
3471
+ end: ia,
3472
+ angle: aa
3473
+ })) console.log(y.bold(e));
3474
+ console.log(), console.log(` ${z.spark} ${y.dim("v" + k)} ${y.dim("·")} ${ve("Ship web + desktop apps from one codebase")}`), console.log();
3475
+ }
3476
+ function X() {
3477
+ console.log(), console.log(` ${z.bolt} ${he.orange("Hype")}${he.skyBlue("Stack")} ${y.dim("v" + k)}`), console.log();
3478
+ }
3479
+ //#endregion
3480
+ //#region src/ui/pack-multiselect.ts
3481
+ var sa = class extends D {
3482
+ options;
3483
+ cursor = 0;
3484
+ selected;
3485
+ required;
3486
+ continueLabel;
3487
+ maxItems;
3488
+ message;
3489
+ constructor(e) {
3490
+ let { message: t, options: n, initialValues: r, required: i, continueLabel: a, maxItems: o, input: s, output: c, signal: l } = e;
3491
+ super({
3492
+ input: s,
3493
+ output: c,
3494
+ signal: l,
3495
+ validate: (e) => {
3496
+ if (i && (e === void 0 || e.length === 0)) return "Select at least one pack, or highlight Continue to install none.";
3497
+ },
3498
+ render() {
3499
+ return this.renderFrame();
3500
+ }
3501
+ }, !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) => {
3502
+ switch (e) {
3503
+ case "up":
3504
+ case "left":
3505
+ this.move(-1);
3506
+ break;
3507
+ case "down":
3508
+ case "right":
3509
+ this.move(1);
3510
+ break;
3511
+ case "space":
3512
+ this.toggleCurrent();
3513
+ break;
3514
+ }
3515
+ }), this.on("key", (e, t) => this.handleKey(e, t));
3516
+ }
3517
+ get rowCount() {
3518
+ return this.options.length + 1;
3519
+ }
3520
+ get atContinue() {
3521
+ return this.cursor >= this.options.length;
3522
+ }
3523
+ _shouldSubmit() {
3524
+ return this.atContinue;
3525
+ }
3526
+ move(e) {
3527
+ let t = this.rowCount;
3528
+ this.cursor = (this.cursor + e + t) % t;
3529
+ }
3530
+ toggleCurrent() {
3531
+ if (this.atContinue) return;
3532
+ let e = this.options[this.cursor];
3533
+ !e || e.disabled || (this.selected.has(e.value) ? this.selected.delete(e.value) : this.selected.add(e.value), this.value = [...this.selected]);
3534
+ }
3535
+ toggleAll() {
3536
+ let e = this.options.filter((e) => !e.disabled).map((e) => e.value), t = e.every((e) => this.selected.has(e));
3537
+ this.selected = t ? /* @__PURE__ */ new Set() : new Set(e), this.value = [...this.selected];
3538
+ }
3539
+ handleKey(e, t) {
3540
+ if (t?.name === "return") {
3541
+ this.atContinue || this.toggleCurrent();
3542
+ return;
3543
+ }
3544
+ e === "a" && this.toggleAll();
3545
+ }
3546
+ renderFrame() {
3547
+ 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) => {
3548
+ let n = e.label ?? String(e.value);
3549
+ if (e.disabled) return `${O("gray", u)} ${O(["strikethrough", "gray"], n)}`;
3550
+ let r = this.selected.has(e.value) ? O("green", d) : t ? O("cyan", l) : O("dim", u);
3551
+ return `${t ? `${O("green", f)} ` : " "}${r} ${t ? n : O("dim", n)}${t && e.hint ? ` ${O("dim", `(${e.hint})`)}` : ""}`;
3552
+ }, p = () => {
3553
+ let e = this.atContinue;
3554
+ return `${e ? `${O("green", f)} ` : " "}${O(e ? "cyan" : "dim", this.continueLabel)}${e ? O("dim", " (enter to install)") : ""}`;
3555
+ };
3556
+ switch (this.state) {
3557
+ case "submit": {
3558
+ let t = this.options.filter((e) => this.selected.has(e.value)).map((e) => e.label ?? String(e.value)).join(O("dim", ", ")) || O("dim", "none");
3559
+ return `${a}${e ? O("gray", s) : ""} ${O("dim", t)}`;
3560
+ }
3561
+ case "cancel": {
3562
+ let t = this.options.filter((e) => this.selected.has(e.value)).map((e) => e.label ?? String(e.value)).join(O("dim", ", "));
3563
+ return t.trim() === "" ? `${a}${e ? O("gray", s) : ""}` : `${a}${e ? O("gray", s) : ""} ${O(["strikethrough", "dim"], t)}`;
3564
+ }
3565
+ default: {
3566
+ let t = m({
3567
+ cursor: Math.min(this.cursor, this.options.length - 1),
3568
+ options: this.options,
3569
+ style: (e, t) => o(e, t),
3570
+ output: this.output,
3571
+ maxItems: this.maxItems,
3572
+ columnPadding: e ? 3 : 0,
3573
+ rowPadding: a.split("\n").length + (e ? 4 : 3)
3574
+ }).map((e) => `${r}${e}`), n = `${O("dim", "↑/↓ move · enter/space toggle · a all · enter on Continue to install")}`, s = [
3575
+ ...t,
3576
+ `${r}${p()}`,
3577
+ `${r}${n}`,
3578
+ i
3579
+ ];
3580
+ return this.state === "error" && s.push(`${r}${O("yellow", this.error)}`), `${a}${s.join("\n")}\n`;
3581
+ }
3582
+ }
3583
+ }
3584
+ };
3585
+ function ca(e) {
3586
+ return new sa(e).prompt();
3475
3587
  }
3476
3588
  //#endregion
3477
3589
  //#region src/ui/logger.ts
3478
- function Ji(e) {
3479
- o.note(e.map((e) => `${R.arrow} ${e}`).join("\n"), "Next steps");
3590
+ function la(e) {
3591
+ o.note(e.map((e) => `${z.arrow} ${e}`).join("\n"), "Next steps");
3480
3592
  }
3481
3593
  function Z() {
3482
- o.cancel(L.muted("Operation cancelled.")), process.exit(0);
3594
+ o.cancel(R.muted("Operation cancelled.")), process.exit(0);
3483
3595
  }
3484
3596
  //#endregion
3485
3597
  //#region src/core/apply-theme.ts
3486
- function Yi(e, t) {
3598
+ function ua(e, t) {
3487
3599
  let n = e.indexOf(t);
3488
3600
  if (n === -1) return null;
3489
3601
  let r = e.indexOf("{", n);
@@ -3498,47 +3610,47 @@ function Yi(e, t) {
3498
3610
  bodyEnd: a - 1
3499
3611
  } : null;
3500
3612
  }
3501
- function Xi(e, t) {
3613
+ function da(e, t) {
3502
3614
  let n = e;
3503
3615
  for (let [e, r] of Object.entries(t)) {
3504
- let t = RegExp(`(^[ \\t]*--${Zi(e)}[ \\t]*:[ \\t]*)([^;\\n]*);`, "m");
3616
+ let t = RegExp(`(^[ \\t]*--${fa(e)}[ \\t]*:[ \\t]*)([^;\\n]*);`, "m");
3505
3617
  n = n.replace(t, (e, t) => `${t}${r};`);
3506
3618
  }
3507
3619
  return n;
3508
3620
  }
3509
- function Zi(e) {
3621
+ function fa(e) {
3510
3622
  return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
3511
3623
  }
3512
- function Qi(e, t) {
3513
- let n = Yi(e, ":root"), r = Yi(e, ".dark"), i = e;
3624
+ function pa(e, t) {
3625
+ let n = ua(e, ":root"), r = ua(e, ".dark"), i = e;
3514
3626
  if (n) {
3515
3627
  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;
3628
+ i = e + da(r, t.light) + a;
3517
3629
  }
3518
3630
  if (r) {
3519
- let e = Yi(i, ".dark");
3631
+ let e = ua(i, ".dark");
3520
3632
  if (e) {
3521
3633
  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;
3634
+ i = n + da(r, t.dark) + a;
3523
3635
  }
3524
3636
  }
3525
3637
  return i;
3526
3638
  }
3527
- var $i = "assets/styles.css";
3528
- async function ea(e, t) {
3529
- let n = p.resolve(e, $i), r;
3639
+ var ma = "assets/styles.css";
3640
+ async function ha(e, t) {
3641
+ let n = w.resolve(e, ma), r;
3530
3642
  try {
3531
- r = await s.readFile(n, "utf-8");
3643
+ r = await v.readFile(n, "utf-8");
3532
3644
  } catch {
3533
3645
  return !1;
3534
3646
  }
3535
- let i = Qi(r, t);
3536
- return i === r || await s.writeFile(n, i, "utf-8"), !0;
3647
+ let i = pa(r, t);
3648
+ return i === r || await v.writeFile(n, i, "utf-8"), !0;
3537
3649
  }
3538
3650
  //#endregion
3539
3651
  //#region src/core/clone.ts
3540
- async function ta(e) {
3541
- let t = await g(v, {
3652
+ async function ga(e) {
3653
+ let t = await ee(A, {
3542
3654
  dir: e,
3543
3655
  force: !0
3544
3656
  });
@@ -3549,7 +3661,7 @@ async function ta(e) {
3549
3661
  }
3550
3662
  //#endregion
3551
3663
  //#region src/core/editor-config.ts
3552
- function na(e) {
3664
+ function _a(e) {
3553
3665
  let t = {
3554
3666
  globs: [],
3555
3667
  alwaysApply: !1
@@ -3584,10 +3696,10 @@ function na(e) {
3584
3696
  content: i
3585
3697
  };
3586
3698
  }
3587
- function ra(e) {
3699
+ function va(e) {
3588
3700
  return e.frontmatter.globs.length > 0 ? `---\npaths:\n${e.frontmatter.globs.map((e) => ` - "${e}"`).join("\n")}\n---\n\n${e.content}` : e.content;
3589
3701
  }
3590
- function ia(e) {
3702
+ function ya(e) {
3591
3703
  let t;
3592
3704
  t = e.frontmatter.alwaysApply ? "always_on" : e.frontmatter.globs.length > 0 ? "glob" : "model_decision";
3593
3705
  let n = [`trigger: ${t}`];
@@ -3597,30 +3709,30 @@ function ia(e) {
3597
3709
  }
3598
3710
  return e.frontmatter.description && n.push(`description: ${e.frontmatter.description}`), `---\n${n.join("\n")}\n---\n\n${e.content}`;
3599
3711
  }
3600
- function aa(e) {
3712
+ function ba(e) {
3601
3713
  return e.frontmatter.globs.length > 0 ? `---\napplyTo: "${e.frontmatter.globs.join(", ")}"\n---\n\n${e.content}` : e.content;
3602
3714
  }
3603
- var oa = {
3715
+ var xa = {
3604
3716
  claude: {
3605
3717
  rulesDir: ".claude/rules",
3606
3718
  extension: ".md",
3607
- convert: ra
3719
+ convert: va
3608
3720
  },
3609
3721
  windsurf: {
3610
3722
  rulesDir: ".windsurf/rules",
3611
3723
  extension: ".md",
3612
- convert: ia
3724
+ convert: ya
3613
3725
  },
3614
3726
  copilot: {
3615
3727
  rulesDir: ".github/instructions",
3616
3728
  extension: ".instructions.md",
3617
- convert: aa
3729
+ convert: ba
3618
3730
  }
3619
3731
  };
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"));
3732
+ async function Sa(e) {
3733
+ let t = w.join(e, oe), n = (await v.readdir(t, { withFileTypes: !0 }).catch(() => [])).filter((e) => e.isFile() && e.name.endsWith(".mdc"));
3622
3734
  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"));
3735
+ let n = w.join(t, e.name), { frontmatter: r, content: i } = _a(await v.readFile(n, "utf-8"));
3624
3736
  return {
3625
3737
  frontmatter: r,
3626
3738
  content: i,
@@ -3628,43 +3740,43 @@ async function sa(e) {
3628
3740
  };
3629
3741
  }));
3630
3742
  }
3631
- async function ca(e, t) {
3743
+ async function Ca(e, t) {
3632
3744
  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) => {
3745
+ let n = xa[t], r = await Sa(e), i = w.join(e, n.rulesDir);
3746
+ await v.mkdir(i, { recursive: !0 }), await Promise.all(r.map((e) => {
3635
3747
  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));
3748
+ return v.writeFile(w.join(i, r), t, "utf-8");
3749
+ })), await cr(w.join(e, se)), await cr(w.join(e, ce));
3638
3750
  }
3639
3751
  //#endregion
3640
3752
  //#region src/core/env-files.ts
3641
- var la = [
3753
+ var wa = [
3642
3754
  "apps",
3643
3755
  "packages",
3644
3756
  "libs",
3645
3757
  "shared"
3646
3758
  ];
3647
- async function ua(e) {
3648
- let t = await da(e);
3759
+ async function Ta(e) {
3760
+ let t = await Ea(e);
3649
3761
  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));
3762
+ let n = w.join(w.dirname(t), ".env");
3763
+ return await J(n) ? null : (await v.copyFile(t, n), w.relative(e, n));
3652
3764
  }))).filter((e) => e !== null).sort();
3653
3765
  }
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"));
3766
+ async function Ea(e) {
3767
+ let t = [w.join(e, ".env.example")], n = await Promise.all(wa.map(async (t) => {
3768
+ let n = w.join(e, t);
3769
+ return (await v.readdir(n, { withFileTypes: !0 }).catch(() => [])).filter((e) => e.isDirectory()).map((e) => w.join(n, e.name, ".env.example"));
3658
3770
  }));
3659
- return t.push(...n.flat()), (await Promise.all(t.map(async (e) => await Y(e) ? e : null))).filter((e) => e !== null);
3771
+ return t.push(...n.flat()), (await Promise.all(t.map(async (e) => await J(e) ? e : null))).filter((e) => e !== null);
3660
3772
  }
3661
3773
  //#endregion
3662
3774
  //#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"));
3775
+ var Q = "@hype-stack/", Da = "hype-stack";
3776
+ async function Oa(e) {
3777
+ await cr(w.join(e, ".git"));
3666
3778
  }
3667
- async function ma(e) {
3779
+ async function ka(e) {
3668
3780
  await q("git", ["init"], { cwd: e }), await q("git", ["add", "."], { cwd: e }), await q("git", [
3669
3781
  "-c",
3670
3782
  "user.name=Hype Stack CLI",
@@ -3675,22 +3787,22 @@ async function ma(e) {
3675
3787
  "Initial commit from Hype Stack CLI"
3676
3788
  ], { cwd: e });
3677
3789
  }
3678
- async function ha(e, t) {
3679
- let n = `@${t}/`, r = await ya(e);
3790
+ async function Aa(e, t) {
3791
+ let n = `@${t}/`, r = await Pa(e);
3680
3792
  for (let e of r) {
3681
- let t = await Gn(e);
3793
+ let t = await ar(e);
3682
3794
  if (!t) continue;
3683
3795
  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");
3796
+ t.name?.startsWith(Q) && (t.name = t.name.replace(Q, n), r = !0), ja(t.dependencies, n) && (r = !0), ja(t.devDependencies, n) && (r = !0), t.nx && Ma(t.nx, n) && (r = !0);
3797
+ let i = await v.readFile(e, "utf-8");
3686
3798
  if (i.includes(Q)) {
3687
3799
  let t = i.replaceAll(Q, n);
3688
- await s.writeFile(e, t, "utf-8");
3689
- } else r && await Kn(e, t);
3800
+ await v.writeFile(e, t, "utf-8");
3801
+ } else r && await or(e, t);
3690
3802
  }
3691
- await li(e, t), await va(e, t);
3803
+ await Ci(e, t), await Na(e, t);
3692
3804
  }
3693
- function ga(e, t) {
3805
+ function ja(e, t) {
3694
3806
  if (!e) return !1;
3695
3807
  let n = !1;
3696
3808
  for (let r of Object.keys(e)) if (r.startsWith(Q)) {
@@ -3699,7 +3811,7 @@ function ga(e, t) {
3699
3811
  }
3700
3812
  return n;
3701
3813
  }
3702
- function _a(e, t) {
3814
+ function Ma(e, t) {
3703
3815
  if (!e) return !1;
3704
3816
  let n = !1;
3705
3817
  if (e.implicitDependencies &&= e.implicitDependencies.map((e) => e.startsWith(Q) ? (n = !0, e.replace(Q, t)) : e), e.targets) {
@@ -3707,52 +3819,52 @@ function _a(e, t) {
3707
3819
  }
3708
3820
  return n;
3709
3821
  }
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);
3822
+ async function Na(e, t) {
3823
+ let n = w.join(e, "packages/enums/src/app/index.ts"), r = await v.readFile(n, "utf-8").catch(() => null);
3712
3824
  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");
3825
+ let i = t.split("-").map((e) => e.charAt(0).toUpperCase() + e.slice(1)).join(" "), a = r.replaceAll(`id: "${Da}"`, `id: "${t}"`).replaceAll(`name: "${Da}"`, `name: "${t}"`).replace(/name: "Hype Stack"/, `name: "${i}"`).replace(/description: ".*?"/, `description: "${i} application"`);
3826
+ await v.writeFile(n, a, "utf-8");
3715
3827
  }
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);
3828
+ async function Pa(e) {
3829
+ let t = [], n = w.join(e, "package.json");
3830
+ (await v.stat(n).catch(() => null))?.isFile() && t.push(n);
3719
3831
  for (let n of [
3720
3832
  "apps",
3721
3833
  "packages",
3722
3834
  "libs",
3723
3835
  "shared"
3724
3836
  ]) {
3725
- let r = p.join(e, n), i = await s.readdir(r, { withFileTypes: !0 }).catch(() => []);
3837
+ let r = w.join(e, n), i = await v.readdir(r, { withFileTypes: !0 }).catch(() => []);
3726
3838
  for (let e of i) {
3727
3839
  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);
3840
+ let n = w.join(r, e.name, "package.json");
3841
+ (await v.stat(n).catch(() => null))?.isFile() && t.push(n);
3730
3842
  }
3731
3843
  }
3732
3844
  return t;
3733
3845
  }
3734
3846
  //#endregion
3735
3847
  //#region src/core/post-setup.ts
3736
- async function ba() {
3848
+ async function Fa() {
3737
3849
  return (await q("docker", ["info"], { cwd: process.cwd() })).exitCode === 0;
3738
3850
  }
3739
- async function xa(e) {
3740
- return Y(`${e}/apps/backend/.env`);
3851
+ async function Ia(e) {
3852
+ return J(`${e}/apps/backend/.env`);
3741
3853
  }
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({
3854
+ async function La(e, t, n) {
3855
+ let r = n ? `Start services with ${R.command("docker compose up -d")}?` : `Docker is not running. Start services with ${R.command("docker compose up -d")}?`, i = t ? !0 : await o.confirm({
3744
3856
  message: r,
3745
3857
  initialValue: !0
3746
3858
  });
3747
- if (o.isCancel(i) && Z(), !i) return o.log.info(L.muted("Skipping Docker services and database migrations.")), !1;
3859
+ if (o.isCancel(i) && Z(), !i) return o.log.info(R.muted("Skipping Docker services and database migrations.")), !1;
3748
3860
  let a = o.spinner();
3749
3861
  return a.start("Starting Docker services..."), (await q("docker", [
3750
3862
  "compose",
3751
3863
  "up",
3752
3864
  "-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);
3865
+ ], { cwd: `${e}/apps/backend` })).exitCode === 0 ? (a.stop(R.success("Docker services started")), !0) : (a.stop(R.warning("Failed to start Docker services")), o.log.warn(R.muted("Run `docker compose up -d` in apps/backend manually to start services.")), o.log.info(R.muted("Skipping database migrations.")), !1);
3754
3866
  }
3755
- async function Ca(e, t = 15, n = 2e3) {
3867
+ async function Ra(e, t = 15, n = 2e3) {
3756
3868
  for (let r = 0; r < t; r++) {
3757
3869
  if ((await q("docker", [
3758
3870
  "compose",
@@ -3767,24 +3879,24 @@ async function Ca(e, t = 15, n = 2e3) {
3767
3879
  }
3768
3880
  return !1;
3769
3881
  }
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.`);
3882
+ async function za(e, t, n = {}) {
3883
+ if (!await Ia(e)) {
3884
+ o.log.warn(`${R.path(".env")} not found in ${R.path("apps/backend")}. Skipping Docker and migrations - configure it first.`);
3773
3885
  return;
3774
3886
  }
3775
- if (!await Sa(e, t, await ba())) return;
3887
+ if (!await La(e, t, await Fa())) return;
3776
3888
  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"));
3889
+ if (r.start("Waiting for Postgres to be ready..."), !await Ra(e, n.postgresMaxAttempts ?? 15, n.postgresCheckIntervalMs ?? 2e3)) {
3890
+ r.stop(R.warning("Postgres health check timed out")), o.log.warn(R.muted("Run migrations manually once Postgres is ready: pnpm --filter @internal/backend migration:latest"));
3779
3891
  return;
3780
3892
  }
3781
- r.stop(L.success("Postgres is ready"));
3893
+ r.stop(R.success("Postgres is ready"));
3782
3894
  let i = t ? !0 : await o.confirm({
3783
- message: `Run database migrations with ${L.command("prisma migrate deploy")}?`,
3895
+ message: `Run database migrations with ${R.command("prisma migrate deploy")}?`,
3784
3896
  initialValue: !0
3785
3897
  });
3786
3898
  if (o.isCancel(i) && Z(), !i) {
3787
- o.log.info(L.muted("Skipping database migrations."));
3899
+ o.log.info(R.muted("Skipping database migrations."));
3788
3900
  return;
3789
3901
  }
3790
3902
  let a = o.spinner();
@@ -3793,24 +3905,24 @@ async function wa(e, t, n = {}) {
3793
3905
  "@internal/backend",
3794
3906
  "migration:latest"
3795
3907
  ], { 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."));
3908
+ a.stop(R.warning("Migrations failed")), o.log.warn(R.muted("Run `pnpm --filter @internal/backend migration:latest` manually to apply migrations."));
3797
3909
  return;
3798
3910
  }
3799
- a.stop(L.success("Database migrations applied"));
3911
+ a.stop(R.success("Database migrations applied"));
3800
3912
  let s = o.spinner();
3801
3913
  if (s.start("Generating Prisma client..."), (await q("pnpm", [
3802
3914
  "--filter",
3803
3915
  "@internal/backend",
3804
3916
  "generate"
3805
3917
  ], { 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."));
3918
+ s.stop(R.warning("Prisma client generation failed")), o.log.warn(R.muted("Run `pnpm --filter @internal/backend generate` manually."));
3807
3919
  return;
3808
3920
  }
3809
- s.stop(L.success("Prisma client generated"));
3921
+ s.stop(R.success("Prisma client generated"));
3810
3922
  }
3811
3923
  //#endregion
3812
3924
  //#region src/core/readme.ts
3813
- var Ta = {
3925
+ var Ba = {
3814
3926
  cursor: {
3815
3927
  label: "Cursor",
3816
3928
  rulesDir: ".cursor/rules"
@@ -3827,24 +3939,24 @@ var Ta = {
3827
3939
  label: "GitHub Copilot",
3828
3940
  rulesDir: ".github/instructions"
3829
3941
  }
3830
- }, Ea = {
3942
+ }, Va = {
3831
3943
  backend: "Hono API server (Postgres, Prisma, Kysely, Valkey cache, WorkOS auth)",
3832
3944
  frontend: "React + Vite app talking to the backend through the typed HyperFetch SDK"
3833
- }, Da = {
3945
+ }, Ha = {
3834
3946
  enums: "Shared enums and app config used across apps",
3835
3947
  cli: "Project tooling and code generators"
3836
3948
  };
3837
- function Oa(e) {
3949
+ function Ua(e) {
3838
3950
  return e.split(/[-_]/).filter(Boolean).map((e) => e.charAt(0).toUpperCase() + e.slice(1)).join(" ");
3839
3951
  }
3840
- function ka(e, t) {
3952
+ function Wa(e, t) {
3841
3953
  return Object.entries(e).toSorted(([e], [t]) => e.localeCompare(t)).map(([e, n]) => {
3842
3954
  let r = t[e];
3843
3955
  return r ? `- \`${n}\` - ${r}` : `- \`${n}\``;
3844
3956
  });
3845
3957
  }
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 = [];
3958
+ function Ga(e) {
3959
+ let { projectName: t, editor: n, workspace: r } = e, i = Ua(t), a = Ba[n], o = !!r.apps.backend, s = Wa(r.apps, Va), c = Wa(r.packages, Ha), l = [];
3848
3960
  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
3961
  let u = [];
3850
3962
  u.push(`# ${i}`), u.push([
@@ -3952,18 +4064,18 @@ function Aa(e) {
3952
4064
  "stays useful."
3953
4065
  ].join("\n")), u.join("\n\n") + "\n";
3954
4066
  }
3955
- async function ja(e, t) {
3956
- let n = p.join(e, "README.md");
3957
- await s.writeFile(n, Aa(t), "utf-8");
4067
+ async function Ka(e, t) {
4068
+ let n = w.join(e, "README.md");
4069
+ await v.writeFile(n, Ga(t), "utf-8");
3958
4070
  }
3959
4071
  //#endregion
3960
4072
  //#region src/core/tracking.ts
3961
- async function Ma(e) {
4073
+ async function qa(e) {
3962
4074
  try {
3963
4075
  let t = {
3964
- "X-Device-Id": In(),
3965
- "X-Client-Info": Ln()
3966
- }, n = await Mn(k()).catch(() => null);
4076
+ "X-Device-Id": Yn(),
4077
+ "X-Client-Info": Xn()
4078
+ }, n = await Gn(P()).catch(() => null);
3967
4079
  n?.token && (t.Authorization = `Bearer ${n.token}`), await K.createRequest()({
3968
4080
  endpoint: "/cli/track",
3969
4081
  method: "POST"
@@ -3972,7 +4084,7 @@ async function Ma(e) {
3972
4084
  }
3973
4085
  //#endregion
3974
4086
  //#region src/ui/swatch.ts
3975
- function Na(e) {
4087
+ function Ja(e) {
3976
4088
  let t = e.trim().match(/^oklch\(([^)]+)\)$/i);
3977
4089
  if (!t) return null;
3978
4090
  let n = t[1].trim().split(/\s+/);
@@ -3991,61 +4103,61 @@ function Na(e) {
3991
4103
  h: a
3992
4104
  };
3993
4105
  }
3994
- function Pa(e) {
4106
+ function Ya(e) {
3995
4107
  return Math.min(255, Math.max(0, Math.round(e)));
3996
4108
  }
3997
- function Fa(e) {
4109
+ function Xa(e) {
3998
4110
  return e <= .0031308 ? 12.92 * e : 1.055 * e ** (1 / 2.4) - .055;
3999
4111
  }
4000
- function Ia({ l: e, c: t, h: n }) {
4112
+ function Za({ l: e, c: t, h: n }) {
4001
4113
  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
4114
  return [
4003
- Pa(Fa(f) * 255),
4004
- Pa(Fa(p) * 255),
4005
- Pa(Fa(m) * 255)
4115
+ Ya(Xa(f) * 255),
4116
+ Ya(Xa(p) * 255),
4117
+ Ya(Xa(m) * 255)
4006
4118
  ];
4007
4119
  }
4008
- var La = "\x1B[49m";
4009
- function Ra(e, t) {
4120
+ var Qa = "\x1B[49m";
4121
+ function $a(e, t) {
4010
4122
  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}`;
4123
+ if (!n) return y.dim(" ");
4124
+ let r = Ja(n);
4125
+ if (!r) return y.dim(" ");
4126
+ let [i, a, o] = Za(r);
4127
+ return `\x1b[48;2;${i};${a};${o}m ${Qa}`;
4016
4128
  }
4017
- var za = [
4129
+ var eo = [
4018
4130
  "primary",
4019
4131
  "secondary",
4020
4132
  "accent"
4021
4133
  ];
4022
- function Ba(e) {
4023
- return za.map((t) => Ra(e, t)).join("");
4134
+ function to(e) {
4135
+ return eo.map((t) => $a(e, t)).join("");
4024
4136
  }
4025
- function Va(e) {
4026
- return `${Ba(e.light)} ${c.dim("·")} ${Ba(e.dark)}`;
4137
+ function no(e) {
4138
+ return `${to(e.light)} ${y.dim("·")} ${to(e.dark)}`;
4027
4139
  }
4028
4140
  //#endregion
4029
4141
  //#region src/utils/validate.ts
4030
- function Ha(e) {
4142
+ function ro(e) {
4031
4143
  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";
4144
+ if (!re.test(e)) return "Project name must be lowercase, alphanumeric, and may contain hyphens, dots, or underscores";
4033
4145
  if (e.length > 214) return "Project name is too long (max 214 characters)";
4034
4146
  }
4035
4147
  //#endregion
4036
4148
  //#region src/commands/create.ts
4037
- async function Ua(a) {
4038
- Ki(), o.intro(L.brandBold("Create a new Hype Stack project"));
4149
+ async function io(a) {
4150
+ oa(), o.intro(R.brandBold("Create a new Hype Stack project"));
4039
4151
  let s = a.yes === !0, c;
4040
4152
  if (s && a.name) {
4041
- let e = Ha(a.name);
4153
+ let e = ro(a.name);
4042
4154
  e && (o.log.error(e), Z()), c = a.name;
4043
4155
  } else {
4044
4156
  let e = await o.text({
4045
4157
  message: "What is your project named?",
4046
4158
  placeholder: "my-app",
4047
4159
  initialValue: a.name ?? "",
4048
- validate: (e) => Ha(e ?? "")
4160
+ validate: (e) => ro(e ?? "")
4049
4161
  });
4050
4162
  o.isCancel(e) && Z(), c = e;
4051
4163
  }
@@ -4063,17 +4175,17 @@ async function Ua(a) {
4063
4175
  });
4064
4176
  o.isCancel(t) && Z(), e = t;
4065
4177
  }
4066
- l = Yn(e, c);
4178
+ l = lr(e, c);
4067
4179
  }
4068
- let u = p.resolve(l);
4069
- s || o.note(L.path(u), "Project will be created at");
4070
- let d = a.editor && E.includes(a.editor) ? a.editor : null, f;
4180
+ let u = w.resolve(l);
4181
+ s || o.note(R.path(u), "Project will be created at");
4182
+ let d = a.editor && ae.includes(a.editor) ? a.editor : null, f;
4071
4183
  if (d) f = d;
4072
4184
  else if (s) f = "cursor";
4073
4185
  else {
4074
4186
  let e = await o.select({
4075
4187
  message: "Which code editor do you use?",
4076
- options: T.map((e) => ({
4188
+ options: ie.map((e) => ({
4077
4189
  value: e.value,
4078
4190
  label: e.label,
4079
4191
  hint: "hint" in e ? e.hint : void 0
@@ -4082,101 +4194,101 @@ async function Ua(a) {
4082
4194
  });
4083
4195
  o.isCancel(e) && Z(), f = e;
4084
4196
  }
4085
- let m = a.theme !== void 0 && i(a.theme), h;
4086
- if (m) h = a.theme;
4087
- else if (s) h = e;
4197
+ let p = a.theme !== void 0 && i(a.theme), m;
4198
+ if (p) m = a.theme;
4199
+ else if (s) m = e;
4088
4200
  else {
4089
4201
  let t = await o.select({
4090
4202
  message: "Pick a color theme",
4091
4203
  options: n.map((e) => ({
4092
4204
  value: e.name,
4093
- label: `${Va(e)} ${e.label}`
4205
+ label: `${no(e)} ${e.label}`
4094
4206
  })),
4095
4207
  initialValue: e
4096
4208
  });
4097
- o.isCancel(t) && Z(), h = t;
4209
+ o.isCancel(t) && Z(), m = t;
4098
4210
  }
4099
4211
  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?` });
4212
+ let e = ie.find((e) => e.value === f)?.label ?? f, n = t.find((e) => e.value === m)?.label ?? m, r = await o.confirm({ message: `Create ${R.highlight(c)} in ${R.path(u)} with ${R.highlight(e)} config and the ${R.highlight(n)} theme?` });
4101
4213
  (o.isCancel(r) || !r) && Z();
4102
4214
  }
4103
- if (await J(u) && !await Wn(u)) {
4215
+ if (await rr(u) && !await ir(u)) {
4104
4216
  let e = await o.confirm({
4105
- message: `Directory ${L.path(u)} is not empty. Continue anyway?`,
4217
+ message: `Directory ${R.path(u)} is not empty. Continue anyway?`,
4106
4218
  initialValue: !1
4107
4219
  });
4108
4220
  (o.isCancel(e) || !e) && Z();
4109
4221
  }
4222
+ let h = o.spinner();
4223
+ h.start("Cloning Hype Stack template..."), await ga(u), h.stop(R.success("Template cloned"));
4110
4224
  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, {
4225
+ g.start("Setting up project..."), await Oa(u), await Aa(u, c), await Ca(u, f);
4226
+ let _ = await hr(u), v = _r(c, _);
4227
+ await mr(u, v), await Ka(u, {
4116
4228
  projectName: c,
4117
4229
  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"));
4230
+ workspace: _
4231
+ }), i(m) && (await ha(w.resolve(u, v.paths?.frontend.root ?? "apps/frontend"), r(m)) || o.log.warn(R.muted(`Could not find ${R.path("assets/styles.css")} to apply the ${m} theme`))), g.stop(R.success("Project configured"));
4232
+ let y = o.spinner();
4233
+ y.start("Installing dependencies..."), (await q("pnpm", ["install"], { cwd: u })).exitCode === 0 ? y.stop(R.success("Dependencies installed")) : (y.stop(R.warning("Dependencies installed with warnings")), o.log.warn(R.muted("You may need to run `pnpm install` manually to resolve issues.")));
4120
4234
  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.")));
4235
+ b.start("Initializing git repository..."), await ka(u), b.stop(R.success("Git repository initialized with clean history"));
4122
4236
  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"));
4131
- 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({
4237
+ x.start("Creating .env files from examples...");
4238
+ let S = await Ta(u);
4239
+ if (S.length > 0) {
4240
+ let e = S.length;
4241
+ x.stop(R.success(`Created ${e} .env file${e === 1 ? "" : "s"} from examples`));
4242
+ } else x.stop(R.muted("No .env.example files to copy"));
4243
+ o.log.success(`${R.brandBold("Hype Stack")} project ${R.highlight(c)} is ready!`);
4244
+ let C = w.relative(process.cwd(), u) || ".", T = [`${R.command(`cd ${C}`)}`];
4245
+ S.length > 0 ? T.push(`Review your ${R.path(".env")} files and fill in any secrets`) : T.push(`Copy ${R.path(".env.example")} to ${R.path(".env")} and configure`), la(T);
4246
+ let E = a.setup !== !1 && (s || await o.confirm({
4135
4247
  message: "Would you like to start Docker services and run database migrations now?",
4136
4248
  initialValue: !0
4137
4249
  }));
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;
4250
+ return o.isCancel(E) && Z(), E ? await za(u, s) : (o.log.info(R.muted("You can start services later:")), la([
4251
+ `${R.command("docker compose up -d")} ${R.muted("(in apps/backend - start Postgres, Valkey, RustFS)")}`,
4252
+ `${R.command("pnpm --filter @internal/backend migration:latest")} ${R.muted("(apply migrations)")}`,
4253
+ `${R.command("pnpm run generate")} ${R.muted("(generate Prisma client)")}`
4254
+ ])), la([`${R.command("pnpm dev")} ${R.muted("(start frontend + backend)")}`]), await qa("project_create"), o.outro(R.muted("Happy building!")), u;
4143
4255
  }
4144
4256
  //#endregion
4145
4257
  //#region src/commands/init.ts
4146
- async function Wa(e) {
4258
+ async function ao(e) {
4147
4259
  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)) {
4149
- 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.`));
4260
+ if (n || (X(), o.intro(R.brandBold("Initialize Hype Stack configuration"))), !await vr(t)) {
4261
+ o.log.error(`This doesn't look like a Hype Stack project. ${R.muted("Expected apps/ directory and package.json")}`), o.outro(R.muted(`Run ${R.command("npx @hype-stack/cli create")} to scaffold a new project.`));
4150
4262
  return;
4151
4263
  }
4152
- if (await $n(t)) {
4153
- let e = await Qn(t);
4264
+ if (await pr(t)) {
4265
+ let e = await fr(t);
4154
4266
  if (e && !n) {
4155
- o.log.info(`Found existing ${L.path("stack.json")} for project ${L.highlight(e.name)}`);
4267
+ o.log.info(`Found existing ${R.path("stack.json")} for project ${R.highlight(e.name)}`);
4156
4268
  let t = await o.confirm({
4157
4269
  message: "Overwrite existing configuration?",
4158
4270
  initialValue: !1
4159
4271
  });
4160
4272
  if (o.isCancel(t) || !t) {
4161
- o.outro(L.muted("Keeping existing configuration."));
4273
+ o.outro(R.muted("Keeping existing configuration."));
4162
4274
  return;
4163
4275
  }
4164
4276
  }
4165
4277
  }
4166
- let r = await tr(t);
4278
+ let r = await hr(t);
4167
4279
  if (!n) {
4168
4280
  let e = Object.entries(r.apps), t = Object.entries(r.packages);
4169
4281
  if (e.length > 0) {
4170
- o.log.info(L.bold("Detected apps:"));
4171
- for (let [t, n] of e) o.log.message(` ${R.arrow} ${L.highlight(t)} ${L.muted(`→ ${n}`)}`);
4282
+ o.log.info(R.bold("Detected apps:"));
4283
+ for (let [t, n] of e) o.log.message(` ${z.arrow} ${R.highlight(t)} ${R.muted(`→ ${n}`)}`);
4172
4284
  }
4173
4285
  if (t.length > 0) {
4174
- o.log.info(L.bold("Detected packages:"));
4175
- for (let [e, n] of t) o.log.message(` ${R.arrow} ${L.highlight(e)} ${L.muted(`→ ${n}`)}`);
4286
+ o.log.info(R.bold("Detected packages:"));
4287
+ for (let [e, n] of t) o.log.message(` ${z.arrow} ${R.highlight(e)} ${R.muted(`→ ${n}`)}`);
4176
4288
  }
4177
4289
  e.length === 0 && t.length === 0 && o.log.warn("No apps or packages detected in the workspace.");
4178
4290
  }
4179
- let i = (await Gn(p.join(t, "package.json")))?.name?.replace(/^@/, "").replace(/\/source$/, "") ?? "my-app", a = i;
4291
+ let i = (await ar(w.join(t, "package.json")))?.name?.replace(/^@/, "").replace(/\/source$/, "") ?? "my-app", a = i;
4180
4292
  if (!n) {
4181
4293
  let e = await o.text({
4182
4294
  message: "Project name for stack.json?",
@@ -4185,28 +4297,28 @@ async function Wa(e) {
4185
4297
  });
4186
4298
  o.isCancel(e) && Z(), a = e;
4187
4299
  }
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.")));
4300
+ await mr(t, _r(a, r)), n || (o.log.success(`${R.path("stack.json")} written successfully`), o.outro(R.muted("Your project is mapped and ready for Hype Stack CLI commands.")));
4189
4301
  }
4190
- async function Ga(e, t = {}) {
4191
- if (await $n(e)) return e;
4192
- let n = t.runInit ?? ((e) => Wa({
4302
+ async function oo(e, t = {}) {
4303
+ if (await pr(e)) return e;
4304
+ let n = t.runInit ?? ((e) => ao({
4193
4305
  cwd: e,
4194
4306
  silent: !0
4195
- })), r = t.runCreate ?? ((e) => Ua({ parentDirectory: e }));
4196
- if (await ir(e)) {
4197
- o.log.warn(`No ${L.path("stack.json")} found in ${L.path(e)}.`);
4307
+ })), r = t.runCreate ?? ((e) => io({ parentDirectory: e }));
4308
+ if (await vr(e)) {
4309
+ o.log.warn(`No ${R.path("stack.json")} found in ${R.path(e)}.`);
4198
4310
  let t = await o.confirm({
4199
- message: `Create ${L.path("stack.json")} now?`,
4311
+ message: `Create ${R.path("stack.json")} now?`,
4200
4312
  initialValue: !0
4201
4313
  });
4202
4314
  if (o.isCancel(t) || !t) return null;
4203
4315
  await n(e);
4204
- let r = await $n(e);
4205
- return r && o.log.success(`${L.path("stack.json")} created`), r ? e : null;
4316
+ let r = await pr(e);
4317
+ return r && o.log.success(`${R.path("stack.json")} created`), r ? e : null;
4206
4318
  }
4207
- o.log.warn(`This doesn't look like a Hype Stack project, and there's no ${L.path("stack.json")} here.`);
4319
+ o.log.warn(`This doesn't look like a Hype Stack project, and there's no ${R.path("stack.json")} here.`);
4208
4320
  let i = await o.confirm({
4209
- message: `Is ${L.path(e)} where you want to work?`,
4321
+ message: `Is ${R.path(e)} where you want to work?`,
4210
4322
  initialValue: !0
4211
4323
  });
4212
4324
  if (o.isCancel(i) || !i) return null;
@@ -4216,11 +4328,11 @@ async function Ga(e, t = {}) {
4216
4328
  });
4217
4329
  if (o.isCancel(a) || !a) return null;
4218
4330
  let s = await r(e);
4219
- return await $n(s) ? s : null;
4331
+ return await pr(s) ? s : null;
4220
4332
  }
4221
4333
  //#endregion
4222
4334
  //#region src/core/npm-deps.ts
4223
- function Ka(e, t) {
4335
+ function so(e, t) {
4224
4336
  let n = [], r = [];
4225
4337
  if (!e) return {
4226
4338
  errors: n,
@@ -4251,7 +4363,7 @@ function Ka(e, t) {
4251
4363
  operations: r
4252
4364
  };
4253
4365
  }
4254
- function qa(e) {
4366
+ function co(e) {
4255
4367
  let t = {};
4256
4368
  for (let n of e) if (n) for (let [e, r] of Object.entries(n)) t[e] = {
4257
4369
  ...t[e],
@@ -4259,15 +4371,15 @@ function qa(e) {
4259
4371
  };
4260
4372
  return t;
4261
4373
  }
4262
- async function Ja(e, t, n = q) {
4374
+ async function lo(e, t, n = q) {
4263
4375
  let r = [];
4264
4376
  for (let i of e) {
4265
- let e = p.join(t, i.relativeDir);
4266
- if (!await Y(p.join(e, "package.json"))) {
4377
+ let e = w.join(t, i.relativeDir);
4378
+ if (!await J(w.join(e, "package.json"))) {
4267
4379
  r.push(`Cannot install npm dependencies under "${i.relativeDir}": package.json not found.`);
4268
4380
  continue;
4269
4381
  }
4270
- let a = p.normalize(i.relativeDir), o;
4382
+ let a = w.normalize(i.relativeDir), o;
4271
4383
  try {
4272
4384
  o = await n("pnpm", [
4273
4385
  "add",
@@ -4295,25 +4407,25 @@ async function Ja(e, t, n = q) {
4295
4407
  function $(e) {
4296
4408
  return e instanceof Error ? e.message : String(e);
4297
4409
  }
4298
- async function Ya(e, t, n) {
4410
+ async function uo(e, t, n) {
4299
4411
  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(() => ({}));
4412
+ return r.length === 0 ? {} : Tr(r, n).catch(() => ({}));
4301
4413
  }
4302
- function Xa(e, t) {
4303
- return e === "free" ? L.success("free") : e === "owned" ? L.accent("owned") : `${L.highlight(`$${t}`)} ${L.muted("locked")}`;
4414
+ function fo(e, t) {
4415
+ return e === "free" ? R.success("free") : e === "owned" ? R.accent("owned") : `${R.highlight(`$${t}`)} ${R.muted("locked")}`;
4304
4416
  }
4305
- async function Za(e, t, n) {
4417
+ async function po(e, t, n) {
4306
4418
  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) => ({
4419
+ 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 nr(r.map((e) => n.get(e)).filter((e) => e !== void 0).map((e) => ({
4308
4420
  name: e.name,
4309
4421
  displayName: e.displayName,
4310
4422
  price: e.price
4311
4423
  })));
4312
4424
  }
4313
- function Qa(e, t) {
4425
+ function mo(e, t) {
4314
4426
  let n = e.map((e, n) => {
4315
4427
  let r = t.get(e), i = r ? r.displayName : e;
4316
- return ` ${L.muted(`${n + 1}.`)} ${L.brand(i)}`;
4428
+ return ` ${R.muted(`${n + 1}.`)} ${R.brand(i)}`;
4317
4429
  });
4318
4430
  o.note([
4319
4431
  "These packs will be installed, in order:",
@@ -4321,10 +4433,10 @@ function Qa(e, t) {
4321
4433
  ...n
4322
4434
  ].join("\n"), "Install Plan");
4323
4435
  }
4324
- async function $a(e, t) {
4436
+ async function ho(e, t) {
4325
4437
  let n = [];
4326
4438
  for (let r of e) {
4327
- let e = await ar(r), i = await or(r, t);
4439
+ let e = await yr(r), i = await br(r, t);
4328
4440
  if (i.status === "denied") throw Error(`Access to "${r}" was denied (${i.reason}). Try 'npx @hype-stack/cli login' or check your license.`);
4329
4441
  n.push({
4330
4442
  manifest: e,
@@ -4333,36 +4445,36 @@ async function $a(e, t) {
4333
4445
  }
4334
4446
  return n;
4335
4447
  }
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);
4448
+ async function go(e) {
4449
+ let { prepared: t, paths: n, cwd: r, spinner: i } = e, a = so(co(t.map((e) => e.manifest.dependencies_npm)), n);
4338
4450
  if (a.errors.length > 0) {
4339
4451
  for (let e of a.errors) o.log.error(e);
4340
4452
  return;
4341
4453
  }
4342
4454
  if (a.operations.length === 0) return;
4343
4455
  i.start("Installing npm dependencies...");
4344
- let s = await Ja(a.operations, r);
4456
+ let s = await lo(a.operations, r);
4345
4457
  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
4458
  }
4347
- function to(e) {
4459
+ function _o(e) {
4348
4460
  let t = e.flatMap((e) => e.manifest.postInstall ?? []), n = [...new Set(t)];
4349
- n.length !== 0 && o.note(n.map((e) => ` ${L.muted("→")} ${e}`).join("\n"), "Next Steps");
4461
+ n.length !== 0 && o.note(n.map((e) => ` ${R.muted("→")} ${e}`).join("\n"), "Next Steps");
4350
4462
  }
4351
- async function no(e) {
4463
+ async function vo(e) {
4352
4464
  let { prepared: t, config: n, cwd: r, force: i, yes: a, slotsByPack: s } = e, c = /* @__PURE__ */ new Set();
4353
4465
  if (i) return c;
4354
- let l = await _i({
4466
+ let l = await ji({
4355
4467
  packs: t,
4356
4468
  config: n,
4357
4469
  projectRoot: r,
4358
4470
  slotsByPack: s
4359
4471
  });
4360
4472
  if (l.length === 0) return c;
4361
- if (a) return o.log.warning(`${l.length} existing file${l.length === 1 ? "" : "s"} kept. Pass ${L.command("--force")} to overwrite.`), c;
4473
+ if (a) return o.log.warning(`${l.length} existing file${l.length === 1 ? "" : "s"} kept. Pass ${R.command("--force")} to overwrite.`), c;
4362
4474
  o.log.warning(`${l.length} file${l.length === 1 ? "" : "s"} already exist in your project.`);
4363
4475
  for (let e of l) {
4364
- let t = p.relative(r, e.targetPath) || e.target, n = await o.confirm({
4365
- message: `Overwrite ${L.path(t)}? ${L.muted(`(${e.packName})`)}`,
4476
+ let t = w.relative(r, e.targetPath) || e.target, n = await o.confirm({
4477
+ message: `Overwrite ${R.path(t)}? ${R.muted(`(${e.packName})`)}`,
4366
4478
  initialValue: !1
4367
4479
  });
4368
4480
  o.isCancel(n) && (o.cancel("Installation cancelled."), process.exit(0)), n && c.add(e.targetPath);
@@ -4371,92 +4483,92 @@ async function no(e) {
4371
4483
  }
4372
4484
  //#endregion
4373
4485
  //#region src/commands/compose.ts
4374
- async function ro(e = {}) {
4486
+ async function yo(e = {}) {
4375
4487
  let t = e.cwd ?? process.cwd();
4376
- qi();
4377
- let n = await Ga(t), r;
4488
+ X();
4489
+ let n = await oo(t), r;
4378
4490
  try {
4379
- r = await Qn(n ?? t);
4491
+ r = await fr(n ?? t);
4380
4492
  } catch (e) {
4381
- o.cancel(`Could not parse ${L.path("stack.json")}: ${$(e)} Run 'npx @hype-stack/cli init' to regenerate it.`), process.exit(1);
4493
+ o.cancel(`Could not parse ${R.path("stack.json")}: ${$(e)} Run 'npx @hype-stack/cli init' to regenerate it.`), process.exit(1);
4382
4494
  }
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));
4495
+ r || (o.cancel(n ? `Could not read ${R.path("stack.json")}. Run 'npx @hype-stack/cli init' to regenerate it, then run 'npx @hype-stack/cli compose' again.` : `No ${R.path("stack.json")}. Run 'npx @hype-stack/cli init' first, then 'npx @hype-stack/cli compose'.`), process.exit(1)), r.paths || (o.cancel(`${R.path("stack.json")} is missing ${R.path("paths")}. Run 'npx @hype-stack/cli init' again to regenerate it.`), process.exit(1));
4384
4496
  let i = n ?? t;
4385
- o.intro(L.brandBold("Compose your stack"));
4497
+ o.intro(R.brandBold("Compose your stack"));
4386
4498
  let a = o.spinner();
4387
4499
  a.start("Loading packs...");
4388
- let c;
4500
+ let s;
4389
4501
  try {
4390
- c = await ur();
4502
+ s = await wr();
4391
4503
  } catch (e) {
4392
4504
  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
4505
  }
4394
4506
  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,
4507
+ let c = r.installedPacks ?? [], l = new Set(c), u = new Map(s.map((e) => [e.name, e])), d = e.licenseKey ?? r.licenseKey ?? null, f = (await Gn(P()))?.token ?? null, p = await uo(s, l, {
4508
+ token: f,
4509
+ key: d
4510
+ }), m = (e) => {
4511
+ let t = u.get(e);
4512
+ return !t || t.tier === "free" ? "free" : p[e]?.owned ? "owned" : "locked";
4513
+ }, h = (e) => !l.has(e) && m(e) === "locked", g = await bo({
4514
+ packs: s,
4515
+ installedSet: l,
4516
+ stateOf: m,
4405
4517
  options: e,
4406
4518
  adminAvailable: !!r.apps.admin
4407
4519
  });
4408
- if (_ === null && (o.cancel("Cancelled."), process.exit(0)), _.length === 0) {
4409
- o.outro(L.muted("No packs selected. Nothing to do."));
4520
+ if (g === null && (o.cancel("Cancelled."), process.exit(0)), g.length === 0) {
4521
+ o.outro(R.muted("No packs selected. Nothing to do."));
4410
4522
  return;
4411
4523
  }
4412
- let v = so(_), y = co(_), b = Ii(c, v), x = ki(Li(c, b)), S;
4524
+ let _ = Co(g), y = wo(g), b = Xi(s, _), x = Ui(Zi(s, b)), S;
4413
4525
  try {
4414
- S = ji(v, x, l);
4526
+ S = Gi(_, x, c);
4415
4527
  } catch (e) {
4416
4528
  o.cancel($(e)), process.exit(1);
4417
4529
  }
4418
4530
  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."));
4531
+ o.note(`${S.alreadyInstalled.join(", ")} already installed.`, "Nothing to do"), o.outro(R.muted("Your selection is already part of the project."));
4420
4532
  return;
4421
4533
  }
4422
- let C = Mi({
4534
+ let C = Ki({
4423
4535
  order: S.order,
4424
4536
  graph: x,
4425
- isLocked: g,
4426
- installed: l
4537
+ isLocked: h,
4538
+ installed: c
4427
4539
  });
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({
4540
+ if (C.blocked.length > 0 && !f && !d) {
4541
+ let e = await tr();
4542
+ e && (f = e, p = await uo(s, l, {
4543
+ token: f,
4544
+ key: d
4545
+ }), C = Ki({
4434
4546
  order: S.order,
4435
4547
  graph: x,
4436
- isLocked: g,
4437
- installed: l
4548
+ isLocked: h,
4549
+ installed: c
4438
4550
  }));
4439
4551
  }
4440
- if (C.blocked.length > 0 && await Za(C.blocked, g, d), C.installable.length === 0) {
4441
- o.outro(L.muted("Nothing left to install once locked packs are removed."));
4552
+ if (C.blocked.length > 0 && await po(C.blocked, h, u), C.installable.length === 0) {
4553
+ o.outro(R.muted("Nothing left to install once locked packs are removed."));
4442
4554
  return;
4443
4555
  }
4444
- if (Qa(C.installable, d), !e.yes) {
4556
+ if (mo(C.installable, u), !e.yes) {
4445
4557
  let e = await o.confirm({ message: `Install ${C.installable.length} pack${C.installable.length === 1 ? "" : "s"}?` });
4446
4558
  (o.isCancel(e) || !e) && (o.cancel("Installation cancelled."), process.exit(0));
4447
4559
  }
4448
4560
  a.start("Downloading packs...");
4449
4561
  let w;
4450
4562
  try {
4451
- w = await $a(C.installable, {
4452
- token: p,
4453
- key: f
4563
+ w = await ho(C.installable, {
4564
+ token: f,
4565
+ key: d
4454
4566
  });
4455
4567
  } catch (e) {
4456
4568
  a.stop("Download failed"), o.cancel($(e)), process.exit(1);
4457
4569
  }
4458
4570
  a.stop(`Downloaded ${w.length} pack${w.length === 1 ? "" : "s"}`);
4459
- let T = await no({
4571
+ let T = await vo({
4460
4572
  prepared: w,
4461
4573
  config: r,
4462
4574
  cwd: i,
@@ -4466,7 +4578,7 @@ async function ro(e = {}) {
4466
4578
  });
4467
4579
  try {
4468
4580
  a.start("Installing pack files...");
4469
- let t = await bi({
4581
+ let t = await Pi({
4470
4582
  packs: w,
4471
4583
  config: r,
4472
4584
  projectRoot: i,
@@ -4479,44 +4591,44 @@ async function ro(e = {}) {
4479
4591
  for (let e of t.errors) o.log.error(e);
4480
4592
  o.cancel("No files were written. Fix the errors above (or pass --force for existing files) and try again."), process.exit(1);
4481
4593
  }
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)`);
4594
+ a.stop("Files installed"), t.installed.length > 0 && o.log.success(`${R.highlight(String(t.installed.length))} files installed`), t.skipped.length > 0 && o.log.warning(`${t.skipped.length} files skipped (use --force to overwrite)`);
4483
4595
  for (let e of t.errors) o.log.error(e);
4484
- await eo({
4596
+ await go({
4485
4597
  prepared: w,
4486
4598
  paths: r.paths,
4487
4599
  cwd: i,
4488
4600
  spinner: a
4489
- }), await Zn({
4601
+ }), await dr({
4490
4602
  projectRoot: i,
4491
4603
  paths: r.paths,
4492
4604
  skipPrompts: e.yes ?? !1
4493
- }), to(w), o.outro(L.brand(`Installed ${t.appliedPacks.join(", ")}.`));
4605
+ }), _o(w), o.outro(R.brand(`Installed ${t.appliedPacks.join(", ")}.`));
4494
4606
  } finally {
4495
- await Promise.all(w.map((e) => s.rm(e.packDir, {
4607
+ await Promise.all(w.map((e) => v.rm(e.packDir, {
4496
4608
  recursive: !0,
4497
4609
  force: !0
4498
4610
  })));
4499
4611
  }
4500
4612
  }
4501
- async function io(e) {
4613
+ async function bo(e) {
4502
4614
  let { packs: t, installedSet: n, stateOf: r, options: i, adminAvailable: a } = e;
4503
4615
  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));
4616
+ let e = i.packs.map(So), n = e.filter((e) => !t.some((t) => t.name === e.name));
4505
4617
  return n.length > 0 && (o.cancel(`Unknown pack${n.length === 1 ? "" : "s"}: ${n.map((e) => e.name).join(", ")}`), process.exit(1)), e;
4506
4618
  }
4507
4619
  let s = t.filter((e) => n.has(e.name));
4508
- s.length > 0 && o.note(s.map((e) => ` ${L.muted("✓")} ${e.displayName}`).join("\n"), "Already Installed");
4620
+ s.length > 0 && o.note(s.map((e) => ` ${R.muted("✓")} ${e.displayName}`).join("\n"), "Already Installed");
4509
4621
  let c = t.filter((e) => !n.has(e.name));
4510
- 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 = [];
4622
+ if (c.length === 0) return o.outro(R.muted("Every available pack is already installed.")), [];
4623
+ let l = F();
4624
+ o.note(c.map((e) => ` ${z.arrow} ${R.highlight(e.displayName)} ${ge(`${l}/packs/${e.name}`)}`).join("\n"), "Browse packs");
4625
+ let u = Vi(c, { adminAvailable: a }), d = [];
4514
4626
  for (let e of u) {
4515
4627
  let t = e.packs.map((e) => {
4516
4628
  let t = r(e.name);
4517
4629
  return {
4518
4630
  value: e.name,
4519
- label: `${e.displayName} ${Xa(t, e.price)}`,
4631
+ label: `${e.displayName} ${fo(t, e.price)}`,
4520
4632
  hint: e.description
4521
4633
  };
4522
4634
  });
@@ -4533,30 +4645,30 @@ async function io(e) {
4533
4645
  });
4534
4646
  continue;
4535
4647
  }
4536
- let n = await o.multiselect({
4648
+ let n = await ca({
4537
4649
  message: `Select ${e.label.toLowerCase()} to add (optional)`,
4538
4650
  options: t,
4539
4651
  required: !1
4540
4652
  });
4541
- if (o.isCancel(n)) return null;
4653
+ if (p(n)) return null;
4542
4654
  for (let e of n) d.push({ name: e });
4543
4655
  }
4544
4656
  return d;
4545
4657
  }
4546
- var ao = /@(frontend|admin)$/;
4547
- function oo(e) {
4548
- let t = e.match(ao);
4658
+ var xo = /@(frontend|admin)$/;
4659
+ function So(e) {
4660
+ let t = e.match(xo);
4549
4661
  return t ? {
4550
4662
  name: e.slice(0, -t[0].length),
4551
4663
  slot: t[1]
4552
4664
  } : { name: e };
4553
4665
  }
4554
- function so(e) {
4666
+ function Co(e) {
4555
4667
  let t = /* @__PURE__ */ new Set(), n = [];
4556
4668
  for (let r of e) t.has(r.name) || (t.add(r.name), n.push(r.name));
4557
4669
  return n;
4558
4670
  }
4559
- function co(e) {
4671
+ function wo(e) {
4560
4672
  let t = /* @__PURE__ */ new Map();
4561
4673
  for (let n of e) {
4562
4674
  if (!n.slot) continue;
@@ -4567,41 +4679,41 @@ function co(e) {
4567
4679
  }
4568
4680
  //#endregion
4569
4681
  //#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...");
4682
+ async function To() {
4683
+ X(), o.intro(R.brandBold("Log in to Hype Stack")), o.log.step("Opening your browser to sign in...");
4572
4684
  let e;
4573
4685
  try {
4574
- e = await Vn({ onUrl: (e) => {
4575
- o.log.info(`If your browser didn't open, visit:\n ${L.path(e)}`);
4686
+ e = await er({ onUrl: (e) => {
4687
+ o.log.info(`If your browser didn't open, visit:\n ${R.path(e)}`);
4576
4688
  } });
4577
4689
  } catch (e) {
4578
4690
  o.cancel(e instanceof Error ? e.message : String(e)), process.exit(1);
4579
4691
  }
4580
- o.outro(L.brand(e.email ? `Logged in as ${e.email}. You can now install packs your organization owns.` : "Logged in. You can now install packs your organization owns."));
4692
+ o.outro(R.brand(e.email ? `Logged in as ${e.email}. You can now install packs your organization owns.` : "Logged in. You can now install packs your organization owns."));
4581
4693
  }
4582
4694
  //#endregion
4583
4695
  //#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);
4696
+ async function Eo() {
4697
+ X(), o.intro(R.brandBold("Log out of Hype Stack"));
4698
+ let e = P(), t = await Gn(e);
4587
4699
  if (!t) {
4588
- o.outro(L.muted("You're not logged in."));
4700
+ o.outro(R.muted("You're not logged in."));
4589
4701
  return;
4590
4702
  }
4591
- await wn(t.token).catch(() => null), await Pn(e), o.outro(L.brand("Logged out."));
4703
+ await Ln(t.token).catch(() => null), await qn(e), o.outro(R.brand("Logged out."));
4592
4704
  }
4593
4705
  //#endregion
4594
4706
  //#region src/core/templates.ts
4595
- var fo = K.createRequest()({
4707
+ var Do = K.createRequest()({
4596
4708
  endpoint: "/templates/list",
4597
4709
  method: "GET"
4598
4710
  });
4599
- async function po() {
4600
- let { data: e, error: t } = await fo.send();
4711
+ async function Oo() {
4712
+ let { data: e, error: t } = await Do.send();
4601
4713
  if (t || !e) throw Error(`Failed to fetch template list: ${String(t)}`);
4602
4714
  return e.templates;
4603
4715
  }
4604
- async function mo(e) {
4716
+ async function ko(e) {
4605
4717
  let { data: t, error: n, status: r } = await K.createRequest()({
4606
4718
  endpoint: `/templates/${encodeURIComponent(e)}/manifest`,
4607
4719
  method: "GET"
@@ -4610,13 +4722,13 @@ async function mo(e) {
4610
4722
  if (n || !t) throw Error(`Failed to load manifest for template "${e}": ${String(n)}`);
4611
4723
  return t;
4612
4724
  }
4613
- async function ho(e, t = {}) {
4725
+ async function Ao(e, t = {}) {
4614
4726
  let n = K.createRequest()({
4615
4727
  endpoint: `/templates/${encodeURIComponent(e)}/download`,
4616
4728
  method: "POST"
4617
4729
  }), r = {
4618
- "X-Device-Id": In(),
4619
- "X-Client-Info": Ln()
4730
+ "X-Device-Id": Yn(),
4731
+ "X-Client-Info": Xn()
4620
4732
  };
4621
4733
  t.token && (r.Authorization = `Bearer ${t.token}`);
4622
4734
  let { data: i, error: a, success: o } = await n.setPayload({ key: t.licenseKey ?? void 0 }).setHeaders(r).send();
@@ -4627,183 +4739,183 @@ async function ho(e, t = {}) {
4627
4739
  packs: i.packs ?? [],
4628
4740
  expiresAt: i.expiresAt ?? null
4629
4741
  };
4630
- let c = await s.mkdtemp(p.join(f.tmpdir(), `hype-stack-template-${e}-`));
4742
+ let s = await v.mkdtemp(w.join(C.tmpdir(), `hype-stack-template-${e}-`));
4631
4743
  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"));
4744
+ let t = w.join(s, ...e.path.split("/"));
4745
+ await v.mkdir(w.dirname(t), { recursive: !0 }), await v.writeFile(t, Buffer.from(e.content, "base64"));
4634
4746
  })), {
4635
4747
  status: "ok",
4636
- templateDir: c
4748
+ templateDir: s
4637
4749
  };
4638
4750
  }
4639
4751
  //#endregion
4640
4752
  //#region src/commands/template.ts
4641
- async function go(e = {}) {
4753
+ async function jo(e = {}) {
4642
4754
  let t = e.cwd ?? process.cwd();
4643
- qi();
4644
- let n = await Ga(t), a;
4755
+ X();
4756
+ let n = await oo(t), a;
4645
4757
  try {
4646
- a = await Qn(n ?? t);
4758
+ a = await fr(n ?? t);
4647
4759
  } catch (e) {
4648
- o.cancel(`Could not parse ${L.path("stack.json")}: ${$(e)} Run 'npx @hype-stack/cli init' to regenerate it.`), process.exit(1);
4760
+ o.cancel(`Could not parse ${R.path("stack.json")}: ${$(e)} Run 'npx @hype-stack/cli init' to regenerate it.`), process.exit(1);
4649
4761
  }
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;
4652
- o.intro(L.brandBold("Install a template"));
4653
- let l = o.spinner();
4654
- l.start("Loading packs...");
4655
- let u;
4762
+ a || (o.cancel(n ? `Could not read ${R.path("stack.json")}. Run 'npx @hype-stack/cli init' to regenerate it, then run 'npx @hype-stack/cli template' again.` : `No ${R.path("stack.json")}. Run 'npx @hype-stack/cli init' first, then 'npx @hype-stack/cli template'.`), process.exit(1)), a.paths || (o.cancel(`${R.path("stack.json")} is missing ${R.path("paths")}. Run 'npx @hype-stack/cli init' again to regenerate it.`), process.exit(1));
4763
+ let s = n ?? t;
4764
+ o.intro(R.brandBold("Install a template"));
4765
+ let c = o.spinner();
4766
+ c.start("Loading packs...");
4767
+ let l;
4656
4768
  try {
4657
- u = await ur();
4769
+ l = await wr();
4658
4770
  } 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);
4771
+ c.stop("Failed to load packs"), o.cancel(`Could not reach Hype Stack. Check your connection and try again.\n${$(e)}`), process.exit(1);
4660
4772
  }
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...");
4664
- let _;
4773
+ c.stop("Packs loaded");
4774
+ 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 Gn(P()))?.token ?? null;
4775
+ c.start("Loading templates...");
4776
+ let h;
4665
4777
  try {
4666
- _ = await po();
4778
+ h = await Oo();
4667
4779
  } 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);
4780
+ c.stop("Failed to load templates"), o.cancel(`Could not reach Hype Stack. Check your connection and try again.\n${$(e)}`), process.exit(1);
4669
4781
  }
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");
4782
+ let g = e.templateId;
4783
+ if (!g) {
4784
+ e.yes && (c.stop("Template id required"), o.cancel("Pass a template id with `npx @hype-stack/cli template <id>` (required in --yes mode)."), process.exit(1)), h.length === 0 && (c.stop("No templates available"), o.cancel("No templates are available yet. Check back later."), process.exit(1)), c.stop("Templates loaded");
4785
+ let t = F();
4786
+ o.note(h.map((e) => ` ${z.arrow} ${R.highlight(e.name)} ${ge(`${t}/templates/${e.id}`)}`).join("\n"), "Browse templates");
4675
4787
  let n = await o.select({
4676
4788
  message: "Choose a template",
4677
- options: _.map((e) => ({
4789
+ options: h.map((e) => ({
4678
4790
  value: e.id,
4679
4791
  label: e.name,
4680
4792
  hint: e.description
4681
4793
  }))
4682
4794
  });
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,
4795
+ o.isCancel(n) && (o.cancel("Cancelled."), process.exit(0)), g = n;
4796
+ }
4797
+ let _ = h.find((e) => e.id === g);
4798
+ _ || (c.stop("Template not found"), o.cancel(`Template "${g}" not found. Available: ${h.map((e) => e.id).join(", ") || "(none)"}`), process.exit(1)), c.stop(`Template: ${_.name}`);
4799
+ let y = await Mo(_, e.variants, e.yes ?? !1), b = qi(_.slots, y), x = Ji(_.slots, _.packs, b), S = await No({
4800
+ packs: l,
4801
+ templatePacks: x,
4802
+ installedSet: d,
4691
4803
  options: e
4692
- }), w = [...S, ...C.filter((e) => !S.includes(e))], T = w.filter((e) => !m.has(e));
4804
+ }), C = [...x, ...S.filter((e) => !x.includes(e))], T = C.filter((e) => !f.has(e));
4693
4805
  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;
4806
+ let E = Zi(l, b), D = Ui(E), O;
4695
4807
  try {
4696
- O = ji(w, D, d);
4808
+ O = Gi(C, D, u);
4697
4809
  } catch (e) {
4698
4810
  o.cancel($(e)), process.exit(1);
4699
4811
  }
4700
4812
  if (O.order.length === 0) {
4701
- o.outro(L.muted("Every pack in this template is already installed."));
4813
+ o.outro(R.muted("Every pack in this template is already installed."));
4702
4814
  return;
4703
4815
  }
4704
- let ee = await Ya(E, f, {
4705
- token: g,
4706
- key: h
4707
- }), te = (e) => {
4708
- let t = m.get(e);
4816
+ let ee = await uo(E, d, {
4817
+ token: m,
4818
+ key: p
4819
+ }), k = (e) => {
4820
+ let t = f.get(e);
4709
4821
  return !t || t.tier === "free" ? "free" : ee[e]?.owned ? "owned" : "locked";
4710
- }, j = (e) => !f.has(e) && te(e) === "locked", M = Mi({
4822
+ }, A = (e) => !d.has(e) && k(e) === "locked", j = Ki({
4711
4823
  order: O.order,
4712
4824
  graph: D,
4713
- isLocked: j,
4714
- installed: d
4825
+ isLocked: A,
4826
+ installed: u
4715
4827
  });
4716
- if (M.blocked.length > 0 && !g && !h) {
4717
- let e = await Hn();
4718
- e && (g = e, ee = await Ya(E, f, {
4719
- token: g,
4720
- key: h
4721
- }), M = Mi({
4828
+ if (j.blocked.length > 0 && !m && !p) {
4829
+ let e = await tr();
4830
+ e && (m = e, ee = await uo(E, d, {
4831
+ token: m,
4832
+ key: p
4833
+ }), j = Ki({
4722
4834
  order: O.order,
4723
4835
  graph: D,
4724
- isLocked: j,
4725
- installed: d
4836
+ isLocked: A,
4837
+ installed: u
4726
4838
  }));
4727
4839
  }
4728
- if (M.blocked.length > 0 && await Za(M.blocked, j, m), M.installable.length === 0) {
4729
- o.outro(L.muted("Nothing left to install once locked packs are removed."));
4840
+ if (j.blocked.length > 0 && await po(j.blocked, A, f), j.installable.length === 0) {
4841
+ o.outro(R.muted("Nothing left to install once locked packs are removed."));
4730
4842
  return;
4731
4843
  }
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"})?` });
4844
+ if (mo(j.installable, f), !e.yes) {
4845
+ let e = await o.confirm({ message: `Install template ${R.brandBold(_.name)} (${j.installable.length} pack${j.installable.length === 1 ? "" : "s"})?` });
4734
4846
  (o.isCancel(e) || !e) && (o.cancel("Installation cancelled."), process.exit(0));
4735
4847
  }
4736
- l.start("Downloading packs...");
4737
- let N;
4848
+ c.start("Downloading packs...");
4849
+ let M;
4738
4850
  try {
4739
- N = await $a(M.installable, {
4740
- token: g,
4741
- key: h
4851
+ M = await ho(j.installable, {
4852
+ token: m,
4853
+ key: p
4742
4854
  });
4743
4855
  } catch (e) {
4744
- l.stop("Download failed"), o.cancel($(e)), process.exit(1);
4856
+ c.stop("Download failed"), o.cancel($(e)), process.exit(1);
4745
4857
  }
4746
- l.stop(`Downloaded ${N.length} pack${N.length === 1 ? "" : "s"}`);
4747
- let P = await no({
4748
- prepared: N,
4858
+ c.stop(`Downloaded ${M.length} pack${M.length === 1 ? "" : "s"}`);
4859
+ let te = await vo({
4860
+ prepared: M,
4749
4861
  config: a,
4750
- cwd: c,
4862
+ cwd: s,
4751
4863
  force: e.force ?? !1,
4752
4864
  yes: e.yes ?? !1
4753
- }), F = null;
4865
+ }), N = null;
4754
4866
  try {
4755
- l.start("Installing pack files...");
4756
- let t = await bi({
4757
- packs: N,
4867
+ c.start("Installing pack files...");
4868
+ let t = await Pi({
4869
+ packs: M,
4758
4870
  config: a,
4759
- projectRoot: c,
4871
+ projectRoot: s,
4760
4872
  force: e.force ?? !1,
4761
- overwrite: P
4873
+ overwrite: te
4762
4874
  });
4763
4875
  if (t.aborted) {
4764
- l.stop("Installation aborted");
4876
+ c.stop("Installation aborted");
4765
4877
  for (let e of t.errors) o.log.error(e);
4766
4878
  o.cancel("No files were written. Fix the errors above (or pass --force for existing files) and try again."), process.exit(1);
4767
4879
  }
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)`);
4880
+ c.stop("Files installed"), t.installed.length > 0 && o.log.success(`${R.highlight(String(t.installed.length))} files installed`), t.skipped.length > 0 && o.log.warning(`${t.skipped.length} files skipped (use --force to overwrite)`);
4769
4881
  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, {
4772
- token: g,
4773
- licenseKey: h
4882
+ c.start("Applying template overrides...");
4883
+ let n = await ko(_.id), l = await Ao(_.id, {
4884
+ token: m,
4885
+ licenseKey: p
4774
4886
  });
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({
4887
+ l.status === "denied" && (c.stop("Template download denied"), o.cancel(`Access to template "${_.id}" was denied (${l.reason}). Try 'npx @hype-stack/cli login' or check your license.`), process.exit(1)), N = l.templateDir;
4888
+ let u = await Ii({
4777
4889
  manifest: n,
4778
4890
  config: a,
4779
- projectRoot: c,
4780
- templateDir: F
4891
+ projectRoot: s,
4892
+ templateDir: N
4781
4893
  });
4782
- l.stop("Template overrides applied"), u.installed.length > 0 && o.log.success(`${u.installed.length} template file${u.installed.length === 1 ? "" : "s"} applied`);
4894
+ c.stop("Template overrides applied"), u.installed.length > 0 && o.log.success(`${u.installed.length} template file${u.installed.length === 1 ? "" : "s"} applied`);
4783
4895
  for (let e of u.errors) o.log.error(e);
4784
4896
  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,
4897
+ i(d) && (await ha(w.resolve(s, a.paths?.frontend.root ?? "apps/frontend"), r(d)) ? o.log.success(`Applied the ${r(d).label} theme`) : o.log.warning(R.muted(`Could not find ${R.path("assets/styles.css")} to apply the theme`))), await Po({
4898
+ prepared: M,
4787
4899
  templateNpm: n.dependencies_npm,
4788
4900
  paths: a.paths,
4789
- cwd: c,
4790
- spinner: l
4791
- }), await Zn({
4792
- projectRoot: c,
4901
+ cwd: s,
4902
+ spinner: c
4903
+ }), await dr({
4904
+ projectRoot: s,
4793
4905
  paths: a.paths,
4794
4906
  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}.`));
4907
+ }), _o(M), n.postInstall && n.postInstall.length > 0 && o.note(n.postInstall.map((e) => ` ${R.muted("→")} ${e}`).join("\n"), "Template Next Steps"), o.outro(R.brand(`Installed template ${_.name}.`));
4796
4908
  } finally {
4797
- await Promise.all(N.map((e) => s.rm(e.packDir, {
4909
+ await Promise.all(M.map((e) => v.rm(e.packDir, {
4798
4910
  recursive: !0,
4799
4911
  force: !0
4800
- }))), F && await s.rm(F, {
4912
+ }))), N && await v.rm(N, {
4801
4913
  recursive: !0,
4802
4914
  force: !0
4803
4915
  });
4804
4916
  }
4805
4917
  }
4806
- async function _o(e, t, n) {
4918
+ async function Mo(e, t, n) {
4807
4919
  let r = {};
4808
4920
  for (let i of e.slots) {
4809
4921
  if (t?.[i.family]) {
@@ -4827,7 +4939,7 @@ async function _o(e, t, n) {
4827
4939
  }
4828
4940
  return r;
4829
4941
  }
4830
- async function vo(e) {
4942
+ async function No(e) {
4831
4943
  let { packs: t, templatePacks: n, installedSet: r, options: i } = e, a = new Set(n);
4832
4944
  if (i.packs && i.packs.length > 0) {
4833
4945
  let e = i.packs.filter((e) => !t.some((t) => t.name === e));
@@ -4836,9 +4948,9 @@ async function vo(e) {
4836
4948
  if (i.yes) return [];
4837
4949
  let s = t.filter((e) => e.category === "feature" && !a.has(e.name) && !r.has(e.name));
4838
4950
  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({
4951
+ let c = F();
4952
+ o.note(s.map((e) => ` ${z.arrow} ${R.highlight(e.displayName)} ${ge(`${c}/packs/${e.name}`)}`).join("\n"), "Browse packs");
4953
+ let l = await ca({
4842
4954
  message: "Add extra packs on top of the template (optional)",
4843
4955
  options: s.map((e) => ({
4844
4956
  value: e.name,
@@ -4847,27 +4959,27 @@ async function vo(e) {
4847
4959
  })),
4848
4960
  required: !1
4849
4961
  });
4850
- return o.isCancel(l) && (o.cancel("Cancelled."), process.exit(0)), l;
4962
+ return p(l) && (o.cancel("Cancelled."), process.exit(0)), l;
4851
4963
  }
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);
4964
+ async function Po(e) {
4965
+ let { prepared: t, templateNpm: n, paths: r, cwd: i, spinner: a } = e, s = co(t.map((e) => e.manifest.dependencies_npm)), c = so(n ? co([s, n]) : s, r);
4854
4966
  if (c.errors.length > 0) {
4855
4967
  for (let e of c.errors) o.log.error(e);
4856
4968
  return;
4857
4969
  }
4858
4970
  if (c.operations.length === 0) return;
4859
4971
  a.start("Installing npm dependencies...");
4860
- let l = await Ja(c.operations, i);
4972
+ let l = await lo(c.operations, i);
4861
4973
  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
4974
  }
4863
4975
  //#endregion
4864
4976
  //#region src/cli.ts
4865
- function bo(e) {
4977
+ function Fo(e) {
4866
4978
  if (!e) return;
4867
4979
  let t = e.split(",").map((e) => e.trim()).filter((e) => e.length > 0);
4868
4980
  return t.length > 0 ? t : void 0;
4869
4981
  }
4870
- function xo(e) {
4982
+ function Io(e) {
4871
4983
  if (!e) return;
4872
4984
  let t = {};
4873
4985
  for (let n of e.split(",")) {
@@ -4876,10 +4988,10 @@ function xo(e) {
4876
4988
  }
4877
4989
  return Object.keys(t).length > 0 ? t : void 0;
4878
4990
  }
4879
- function So() {
4991
+ function Lo() {
4880
4992
  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({
4993
+ 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) => {
4994
+ await io({
4883
4995
  name: e.name,
4884
4996
  directory: e.directory,
4885
4997
  install: e.install,
@@ -4889,32 +5001,32 @@ function So() {
4889
5001
  setup: e.setup
4890
5002
  });
4891
5003
  }), e.command("init").description("Initialize stack.json in the current project").action(async () => {
4892
- await Wa({});
5004
+ await ao({});
4893
5005
  }), 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),
5006
+ await yo({
5007
+ packs: Fo(e.packs),
4896
5008
  force: e.force,
4897
5009
  yes: e.yes,
4898
5010
  licenseKey: e.key ?? e.licenseKey,
4899
5011
  cwd: e.cwd
4900
5012
  });
4901
5013
  }), 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({
5014
+ await jo({
4903
5015
  templateId: e,
4904
- variants: xo(t.variants),
4905
- packs: bo(t.packs),
5016
+ variants: Io(t.variants),
5017
+ packs: Fo(t.packs),
4906
5018
  force: t.force,
4907
5019
  yes: t.yes,
4908
5020
  licenseKey: t.key ?? t.licenseKey,
4909
5021
  cwd: t.cwd
4910
5022
  });
4911
5023
  }), e.command("login").description("Log in via your browser to install packs your organization owns").action(async () => {
4912
- await lo();
5024
+ await To();
4913
5025
  }), e.command("logout").description("Log out and remove the saved CLI token").action(async () => {
4914
- await uo();
5026
+ await Eo();
4915
5027
  }), e.command("auth").description("Alias for `login`").action(async () => {
4916
- await lo();
5028
+ await To();
4917
5029
  }), e;
4918
5030
  }
4919
5031
  //#endregion
4920
- export { Ga as a, ro as i, uo as n, Wa as o, lo as r, Ua as s, So as t };
5032
+ export { oo as a, yo as i, Eo as n, ao as o, To as r, io as s, Lo as t };