@hype-stack/cli 0.2.2 → 0.2.4

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