@hype-stack/cli 0.2.1 → 0.2.3

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