@incajs/cli 0.0.9 → 0.0.10

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.
package/dist/cli.js CHANGED
@@ -1,149 +1,151 @@
1
- import { i as e, n as t, o as n, r, t as i } from "./chunks/defaults-Bl2pge8b.js";
2
- import a from "node:path";
3
- import { existsSync as o, lstatSync as s, realpathSync as c, statSync as l } from "node:fs";
4
- import { chmod as u, cp as d, link as f, mkdir as p, readFile as m, readdir as h, rm as g, writeFile as _ } from "node:fs/promises";
5
- import { styleText as v } from "node:util";
6
- import { fileURLToPath as y } from "node:url";
7
- import { DevEnvironment as b, build as x, buildErrorMessage as S, createServer as C } from "vite";
8
- import w from "@vitejs/plugin-vue";
9
- import { createRequire as T } from "node:module";
10
- import { spawn as ee } from "node:child_process";
11
- import { once as E } from "node:events";
12
- import te from "node:readline";
13
- import { setTimeout as ne } from "node:timers/promises";
14
- import { randomUUID as D } from "node:crypto";
1
+ import { t as e } from "./chunks/rolldown-runtime-Dy4uBu1J.js";
2
+ import { i as t, n, o as r, r as i, t as a } from "./chunks/defaults-CKuLLRFh.js";
3
+ import o from "node:path";
4
+ import { existsSync as s, lstatSync as c, realpathSync as l, statSync as u, watch as d } from "node:fs";
5
+ import { chmod as f, cp as p, link as m, mkdir as h, readFile as g, readdir as _, rm as v, writeFile as y } from "node:fs/promises";
6
+ import { styleText as b } from "node:util";
7
+ import { fileURLToPath as x } from "node:url";
8
+ import { DevEnvironment as S, build as C, buildErrorMessage as w, createServer as T } from "vite";
9
+ import E from "@vitejs/plugin-vue";
10
+ import { createRequire as ee } from "node:module";
11
+ import { spawn as te } from "node:child_process";
12
+ import { once as D } from "node:events";
13
+ import ne from "node:readline";
14
+ import { setTimeout as re } from "node:timers/promises";
15
+ import { randomUUID as ie } from "node:crypto";
15
16
  //#region src/error.mts
16
17
  var O = class extends Error {
17
18
  code;
19
+ path;
18
20
  name = "IncaError";
19
- constructor(e, t) {
20
- super(t), this.code = e;
21
+ constructor(e, t, n) {
22
+ super(t), this.code = e, this.path = n;
21
23
  }
22
- }, re = {
24
+ }, ae = {
23
25
  name: "inca",
24
26
  packageJson: "inca",
25
27
  rcFile: !1,
26
28
  globalRc: !1,
27
29
  giget: !1,
28
30
  extend: !1
29
- }, ie = /[/\\:*?"<>|\0]/;
30
- function ae(e) {
31
- return e === e.trim() && e !== "" && e !== "." && e !== ".." && !ie.test(e);
31
+ }, oe = /[/\\:*?"<>|\0]/;
32
+ function se(e) {
33
+ return e === e.trim() && e !== "" && e !== "." && e !== ".." && !oe.test(e);
32
34
  }
33
35
  function k(e) {
34
- if (!(typeof e == "string" && ae(e))) throw new O("ERR_INCA_PRODUCT_NAME_INVALID", `${JSON.stringify(e)} can't name a directory — set a "productName" in inca.config.ts with no leading or trailing space, and none of \`/\\:*?"<>|\``);
36
+ if (!(typeof e == "string" && se(e))) throw new O("ERR_INCA_PRODUCT_NAME_INVALID", `${JSON.stringify(e)} can't name a directory — set a "productName" in inca.config.ts with no leading or trailing space, and none of \`/\\:*?"<>|\``);
35
37
  }
36
- var oe = process.platform === "darwin" || process.platform === "win32";
37
- function se(e, t) {
38
- let n = (e) => oe ? e.toLowerCase() : e, r = a.relative(n(e), n(t));
39
- return r === "" || r !== ".." && !r.startsWith(`..${a.sep}`) && !a.isAbsolute(r);
38
+ var ce = process.platform === "darwin" || process.platform === "win32";
39
+ function le(e, t) {
40
+ let n = (e) => ce ? e.toLowerCase() : e, r = o.relative(n(e), n(t));
41
+ return r === "" || r !== ".." && !r.startsWith(`..${o.sep}`) && !o.isAbsolute(r);
40
42
  }
41
43
  function A(e) {
42
- let t = a.resolve(e), n = t;
43
- for (let e; !s(n, { throwIfNoEntry: !1 }) && (e = a.dirname(n)) !== n;) n = e;
44
- return a.join(c.native(n), a.relative(n, t));
44
+ let t = o.resolve(e), n = t;
45
+ for (let e; !c(n, { throwIfNoEntry: !1 }) && (e = o.dirname(n)) !== n;) n = e;
46
+ return o.join(l.native(n), o.relative(n, t));
45
47
  }
46
48
  function j(e, t, n) {
47
- let r = a.resolve(e, t), i;
49
+ let r = o.resolve(e, t), i;
48
50
  try {
49
51
  let t = A(r);
50
52
  i = [
51
53
  e,
52
- a.join(e, "src"),
53
- a.join(e, "node_modules"),
54
+ o.join(e, "src"),
55
+ o.join(e, "node_modules"),
54
56
  ...n ? [n] : []
55
- ].some((e) => se(t, A(e)));
57
+ ].some((e) => le(t, A(e)));
56
58
  } catch {
57
59
  i = !0;
58
60
  }
59
61
  if (i) throw new O("ERR_INCA_OUT_DIR_INVALID", `"outDir" resolves to ${r}, which holds the app's own files. Set it to a directory the build can own, such as "dist"`);
60
62
  }
61
- function M(e, t, n) {
62
- let r = a.resolve(e, t ?? i.outDir);
63
+ function ue(e, t, n) {
64
+ let r = o.resolve(e, t ?? a.outDir);
63
65
  return j(e, r, n), r;
64
66
  }
65
- async function N(e) {
66
- let { config: t, layers: r } = await n({
67
+ async function M(e) {
68
+ let { config: t, layers: n } = await r({
67
69
  cwd: e,
68
- ...re
69
- }), i = r?.find((e) => e.configFile === "package.json");
70
+ ...ae
71
+ }), i = n?.find((e) => e.configFile === "package.json");
70
72
  return {
71
73
  config: t,
72
74
  usedPackageJsonKey: Object.keys(i?.config ?? {}).length > 0
73
75
  };
74
76
  }
75
- async function P(e) {
76
- let { config: t } = await N(e), n = t.entry ? a.resolve(e, t.entry) : void 0;
77
+ async function de(e) {
78
+ let { config: t } = await M(e), n = t.entry ? o.resolve(e, t.entry) : void 0;
77
79
  return {
78
80
  entry: n,
79
- outDir: M(e, t.outDir, n)
81
+ outDir: ue(e, t.outDir, n)
80
82
  };
81
83
  }
82
- async function ce(e) {
83
- let n = a.join(e, "package.json"), s;
84
+ async function fe(e) {
85
+ let t = o.join(e, "package.json"), r;
84
86
  try {
85
- s = await m(n, "utf8");
87
+ r = await g(t, "utf8");
86
88
  } catch {
87
- throw new O("ERR_INCA_PACKAGE_JSON_NOT_FOUND", `no package.json found at ${n}`);
89
+ throw new O("ERR_INCA_PACKAGE_JSON_NOT_FOUND", `no package.json found at ${t}`);
88
90
  }
89
- let c = JSON.parse(s), { config: l, usedPackageJsonKey: u } = await N(e), d = l.productName ?? r(c.name);
90
- if (!d) throw new O("ERR_INCA_PRODUCT_NAME_MISSING", `${n} needs a "name", or "productName" in inca.config.ts`);
91
+ let c = JSON.parse(r), { config: l, usedPackageJsonKey: u } = await M(e), d = l.productName ?? i(c.name);
92
+ if (!d) throw new O("ERR_INCA_PRODUCT_NAME_MISSING", `${t} needs a "name", or "productName" in inca.config.ts`);
91
93
  k(d);
92
- let f = l.version ?? c.version ?? i.version, p = l.identifier ?? t(d), h;
93
- if (l.icon && (h = a.resolve(e, l.icon), !o(h))) throw new O("ERR_INCA_ICON_NOT_FOUND", `"icon" points to ${h}, which doesn't exist`);
94
- let g = l.entry ? a.resolve(e, l.entry) : void 0, _ = M(e, l.outDir, g);
94
+ let f = l.version ?? c.version ?? a.version, p = l.identifier ?? n(d), m;
95
+ if (l.icon && (m = o.resolve(e, l.icon), !s(m))) throw new O("ERR_INCA_ICON_NOT_FOUND", `"icon" points to ${m}, which doesn't exist`, m);
96
+ let h = l.entry ? o.resolve(e, l.entry) : void 0, _ = ue(e, l.outDir, h);
95
97
  return {
96
98
  productName: d,
97
99
  identifier: p,
98
100
  identifierIsDefault: l.identifier === void 0,
99
101
  version: f,
100
- icon: h,
102
+ icon: m,
101
103
  window: l.window,
102
- entry: g,
104
+ entry: h,
103
105
  outDir: _,
104
106
  usedPackageJsonKey: u
105
107
  };
106
108
  }
107
- function le(e) {
109
+ function pe(e) {
108
110
  return {
109
111
  name: e.productName,
110
112
  identifier: e.identifier,
111
113
  window: e.window
112
114
  };
113
115
  }
114
- async function ue(e) {
115
- let { config: n } = await N(e), i = {};
116
+ async function N(e) {
117
+ let { config: t } = await M(e), r = {};
116
118
  try {
117
- i = JSON.parse(await m(a.join(e, "package.json"), "utf8"));
119
+ r = JSON.parse(await g(o.join(e, "package.json"), "utf8"));
118
120
  } catch {}
119
- let o = n.productName ?? r(i.name);
120
- o && k(o);
121
+ let a = t.productName ?? i(r.name);
122
+ a && k(a);
121
123
  let s = {
122
- name: o,
123
- identifier: n.identifier ?? (o ? t(o) : void 0),
124
- window: n.window
124
+ name: a,
125
+ identifier: t.identifier ?? (a ? n(a) : void 0),
126
+ window: t.window
125
127
  };
126
128
  return Object.values(s).some((e) => e !== void 0) ? s : void 0;
127
129
  }
128
130
  //#endregion
129
131
  //#region src/adapter/vite/captureOutput.mts
130
- function de(e, t, n) {
132
+ function P(e, t, n) {
131
133
  return {
132
134
  outDir: e,
133
- entryFile: a.join(e, t.entryFile),
135
+ entryFile: o.join(e, t.entryFile),
134
136
  files: t.files,
135
137
  changed: n
136
138
  };
137
139
  }
138
- function fe(e) {
140
+ function me(e, t) {
139
141
  return {
140
142
  name: "inca:capture-output",
141
- writeBundle(t, n) {
142
- let r = Object.keys(n), i = Object.values(n).find((e) => e.type === "chunk" && e.isEntry);
143
- if (!i) throw new O("ERR_INCA_BUILD_NO_ENTRY_CHUNK", "build produced no entry chunk");
144
- e({
145
- entryFile: i.fileName,
146
- files: r
143
+ writeBundle(n, r) {
144
+ let i = Object.keys(r), a = Object.values(r).find((e) => e.type === "chunk" && e.isEntry);
145
+ if (!a) throw new e.IncaError("ERR_INCA_BUILD_NO_ENTRY_CHUNK", "build produced no entry chunk");
146
+ t({
147
+ entryFile: a.fileName,
148
+ files: i
147
149
  });
148
150
  }
149
151
  };
@@ -155,7 +157,7 @@ function I(e) {
155
157
  let t = JSON.stringify(e, void 0, 2);
156
158
  if (t !== void 0 && t !== "{}") return `${t}\n`;
157
159
  }
158
- function pe(e) {
160
+ function he(e) {
159
161
  let t = I(e);
160
162
  return {
161
163
  name: "inca:emit-config",
@@ -170,7 +172,7 @@ function pe(e) {
170
172
  }
171
173
  //#endregion
172
174
  //#region src/adapter/vite/logger.mts
173
- var me = "Build failed with ", he = "Pre-transform error";
175
+ var ge = "Build failed with ", _e = "Pre-transform error";
174
176
  function L(e, t, n = !1) {
175
177
  let r = /* @__PURE__ */ new WeakSet(), i = /* @__PURE__ */ new Set(), a = {
176
178
  hasWarned: !1,
@@ -184,7 +186,7 @@ function L(e, t, n = !1) {
184
186
  i.has(e) || (i.add(e), a.warn(e));
185
187
  },
186
188
  error(e, n) {
187
- a.hasWarned = !0, n?.error && r.add(n.error), !e.includes(me) && (e.includes(he) || t.write(`${e.replace(/\n\s+at .*/g, "")}\n`));
189
+ a.hasWarned = !0, n?.error && r.add(n.error), !e.includes(ge) && (e.includes(_e) || t.write(`${e.replace(/\n\s+at .*/g, "")}\n`));
188
190
  },
189
191
  clearScreen() {},
190
192
  hasErrorLogged(e) {
@@ -195,7 +197,7 @@ function L(e, t, n = !1) {
195
197
  }
196
198
  //#endregion
197
199
  //#region src/adapter/vite/unsupported.mts
198
- var ge = /\.(?:css|pcss|postcss|sass|scss|less|styl|stylus)(?:\?|$)/, _e = [{
200
+ var ve = /\.(?:css|pcss|postcss|sass|scss|less|styl|stylus)(?:\?|$)/, ye = [{
199
201
  code: "ERR_INCA_UNSUPPORTED_STYLE",
200
202
  name: "a <style> block",
201
203
  matches: (e) => e.includes("vue&type=style"),
@@ -203,52 +205,52 @@ var ge = /\.(?:css|pcss|postcss|sass|scss|less|styl|stylus)(?:\?|$)/, _e = [{
203
205
  }, {
204
206
  code: "ERR_INCA_UNSUPPORTED_STYLESHEET",
205
207
  name: "a stylesheet import",
206
- matches: (e) => ge.test(e),
208
+ matches: (e) => ve.test(e),
207
209
  hint: "the renderer applies no stylesheet — use a :style binding instead"
208
210
  }];
209
- function R(e = _e) {
211
+ function R(e, t = ye) {
210
212
  return {
211
213
  name: "inca:reject-unsupported",
212
214
  enforce: "pre",
213
- transform(t, n) {
214
- let r = e.find((e) => e.matches(n));
215
- if (!r) return null;
216
- let i = a.relative(process.cwd(), n.split("?")[0] ?? n);
217
- throw new O(r.code, `${r.code}: ${i} uses ${r.name}, unsupported for now: ${r.hint}`);
215
+ transform(n, r) {
216
+ let i = t.find((e) => e.matches(r));
217
+ if (!i) return null;
218
+ let a = o.relative(process.cwd(), r.split("?")[0] ?? r);
219
+ throw new e.IncaError(i.code, `${i.code}: ${a} uses ${i.name}, unsupported for now: ${i.hint}`);
218
220
  }
219
221
  };
220
222
  }
221
223
  //#endregion
222
224
  //#region src/adapter/vite/config.mts
223
- var ve = "bundle.js";
224
- function z({ entry: e, outDir: t, mode: n, watch: r, onOutput: i, stdout: o, stderr: s, quiet: c, runtimeConfig: l }) {
225
+ var be = "bundle.js";
226
+ function z({ core: e, entry: t, outDir: n, mode: r, watch: i, onOutput: a, stdout: s, stderr: c, quiet: l, runtimeConfig: u }) {
225
227
  return {
226
228
  configFile: !1,
227
- root: a.dirname(e),
228
- mode: n,
229
+ root: o.dirname(t),
230
+ mode: r,
229
231
  clearScreen: !1,
230
- logLevel: c ? "silent" : "info",
231
- customLogger: L(o, s),
232
- define: { "process.env.NODE_ENV": JSON.stringify(n) },
232
+ logLevel: l ? "silent" : "info",
233
+ customLogger: L(s, c),
234
+ define: { "process.env.NODE_ENV": JSON.stringify(r) },
233
235
  plugins: [
234
- w({ template: { compilerOptions: {
236
+ E({ template: { compilerOptions: {
235
237
  runtimeModuleName: "@vue/runtime-core",
236
238
  hoistStatic: !1
237
239
  } } }),
238
- R(),
239
- pe(l),
240
- fe(i)
240
+ R(e),
241
+ he(u),
242
+ me(e, a)
241
243
  ],
242
244
  build: {
243
245
  lib: {
244
- entry: e,
246
+ entry: t,
245
247
  formats: ["es"],
246
- fileName: () => ve
248
+ fileName: () => be
247
249
  },
248
- outDir: t,
249
- emptyOutDir: n === "production",
250
- minify: n === "production",
251
- watch: r ? {} : void 0,
250
+ outDir: n,
251
+ emptyOutDir: r === "production",
252
+ minify: r === "production",
253
+ watch: i ? {} : void 0,
252
254
  rolldownOptions: { output: {
253
255
  chunkFileNames: "chunks/[name]-[hash].js",
254
256
  assetFileNames: "assets/[name]-[hash][extname]"
@@ -258,65 +260,73 @@ function z({ entry: e, outDir: t, mode: n, watch: r, onOutput: i, stdout: o, std
258
260
  }
259
261
  //#endregion
260
262
  //#region src/adapter/vite/build.mts
261
- async function ye({ entry: e, outDir: t, runtimeConfig: n, stdout: r = process.stdout, stderr: i = process.stderr, quiet: a = !1 }) {
262
- let o;
263
- if (await x(z({
264
- entry: e,
265
- outDir: t,
266
- runtimeConfig: n,
263
+ async function xe(e, { entry: t, outDir: n, runtimeConfig: r, stdout: i = process.stdout, stderr: a = process.stderr, quiet: o = !1 }) {
264
+ let s;
265
+ if (await C(z({
266
+ core: e,
267
+ entry: t,
268
+ outDir: n,
269
+ runtimeConfig: r,
267
270
  mode: "production",
268
271
  watch: !1,
269
- stdout: r,
270
- stderr: i,
271
- quiet: a,
272
+ stdout: i,
273
+ stderr: a,
274
+ quiet: o,
272
275
  onOutput: (e) => {
273
- o = de(t, e);
276
+ s = P(n, e);
274
277
  }
275
- })), !o) throw new O("ERR_INCA_BUILD_NO_OUTPUT", "build produced no output");
276
- return o;
278
+ })), !s) throw new e.IncaError("ERR_INCA_BUILD_NO_OUTPUT", "build produced no output");
279
+ return s;
277
280
  }
278
281
  //#endregion
279
282
  //#region src/adapter/vite/hmr.mts
283
+ function Se(e, t) {
284
+ let n = w(t, [], !1), r = [t.stack, n].filter((e) => e).join("\n");
285
+ return {
286
+ ...e.bundlerFault(t.message),
287
+ stack: r || null
288
+ };
289
+ }
280
290
  function B(e) {
281
- return a.join(e, "node_modules/.inca/hmr");
291
+ return o.join(e, "node_modules/.inca/hmr");
282
292
  }
283
- function be() {
284
- let e = a.dirname(y(import.meta.url));
285
- for (; !o(a.join(e, "package.json"));) {
286
- let t = a.dirname(e);
293
+ function Ce() {
294
+ let e = o.dirname(x(import.meta.url));
295
+ for (; !s(o.join(e, "package.json"));) {
296
+ let t = o.dirname(e);
287
297
  if (t === e) throw Error("could not locate @incajs/cli's own package.json");
288
298
  e = t;
289
299
  }
290
- return a.join(e, "dist/hmr-runtime.js");
300
+ return o.join(e, "dist/hmr-runtime.js");
291
301
  }
292
- function xe(e, t) {
293
- let n = a.relative(e, t).split(a.sep).join("/");
302
+ function we(e, t) {
303
+ let n = o.relative(e, t).split(o.sep).join("/");
294
304
  return n.startsWith(".") ? n : `./${n}`;
295
305
  }
296
- async function Se(e, t, n) {
306
+ async function Te(e, t, n) {
297
307
  let r = B(e);
298
- await p(r, { recursive: !0 });
299
- let i = a.join(r, "entry.js"), o = xe(r, n ?? be()), s = t.split(a.sep).join("/");
300
- return await _(i, `import { start } from ${JSON.stringify(o)};\nstart(${JSON.stringify(s)}).catch((err) => console.error(err));\n`), i;
308
+ await h(r, { recursive: !0 });
309
+ let i = o.join(r, "entry.js"), a = we(r, n ?? Ce()), s = t.split(o.sep).join("/");
310
+ return await y(i, `import { start } from ${JSON.stringify(a)};\nstart(${JSON.stringify(s)}).catch((err) => console.error(err));\n`), i;
301
311
  }
302
- function Ce(e) {
312
+ function Ee(e) {
303
313
  if (e.type === "error") return e.err;
304
314
  if (e.type === "custom" && e.event === "vite:invoke") return e.data?.data?.error;
305
315
  }
306
- function we(e) {
316
+ function De(e) {
307
317
  if (e.type !== "custom" || e.event !== "vite:invoke") return !1;
308
318
  let t = e.data;
309
319
  return t.name === "fetchModule" && !t.data?.error;
310
320
  }
311
- function Te(e, t, n, r, i) {
321
+ function Oe(e, t, n, r, i) {
312
322
  let a = /* @__PURE__ */ new Map(), o = { send: s };
313
323
  function s(a) {
314
324
  if (a.type === "full-reload") {
315
325
  t();
316
326
  return;
317
327
  }
318
- let o = Ce(a);
319
- o ? (n(o), i.current = void 0) : we(a) && i.current && (r({
328
+ let o = Ee(a);
329
+ o ? (n(o), i.current = void 0) : De(a) && i.current && (r({
320
330
  file: i.current.file,
321
331
  took: Date.now() - i.current.at
322
332
  }), i.current = void 0), e(a);
@@ -338,7 +348,7 @@ function Te(e, t, n, r, i) {
338
348
  }
339
349
  };
340
350
  }
341
- function Ee() {
351
+ function ke() {
342
352
  let e = "\0inca:vite-client-shim";
343
353
  return {
344
354
  name: "inca:shim-vite-client",
@@ -351,7 +361,7 @@ function Ee() {
351
361
  }
352
362
  };
353
363
  }
354
- function De(e) {
364
+ function Ae(e) {
355
365
  return {
356
366
  name: "inca:file-changed",
357
367
  hotUpdate(t) {
@@ -366,16 +376,16 @@ function De(e) {
366
376
  }
367
377
  };
368
378
  }
369
- async function Oe({ entry: e, cwd: t, runtimeConfig: n, runtimePath: r, stdout: i = process.stdout, stderr: o = process.stderr, quiet: s = !1, notify: c, reload: l, onError: u, onUpdate: d = () => {} }) {
370
- let f = await Se(t, e, r), p = I(n);
371
- p && await _(a.join(B(t), F), p);
372
- let m = { current: void 0 }, { channel: h, dispatch: g } = Te(c, l, u, d, m), v = await C({
379
+ async function je(e, { entry: t, cwd: n, runtimeConfig: r, runtimePath: i, stdout: a = process.stdout, stderr: s = process.stderr, quiet: c = !1, notify: l, reload: u, onError: d, onUpdate: f = () => {} }) {
380
+ let p = await Te(n, t, i), m = I(r);
381
+ m && await y(o.join(B(n), F), m);
382
+ let h = { current: void 0 }, { channel: g, dispatch: _ } = Oe(l, u, (t) => d(Se(e, t)), f, h), v = await T({
373
383
  configFile: !1,
374
- root: a.dirname(e),
384
+ root: o.dirname(t),
375
385
  mode: "development",
376
386
  clearScreen: !1,
377
- logLevel: s ? "silent" : "info",
378
- customLogger: L(i, o, s),
387
+ logLevel: c ? "silent" : "info",
388
+ customLogger: L(a, s, c),
379
389
  define: { "process.env.NODE_ENV": JSON.stringify("development") },
380
390
  server: {
381
391
  middlewareMode: !0,
@@ -386,39 +396,74 @@ async function Oe({ entry: e, cwd: t, runtimeConfig: n, runtimePath: r, stdout:
386
396
  consumer: "client",
387
397
  dev: {
388
398
  moduleRunnerTransform: !0,
389
- createEnvironment: (e, t) => new b(e, t, {
399
+ createEnvironment: (e, t) => new S(e, t, {
390
400
  hot: !0,
391
- transport: h
401
+ transport: g
392
402
  })
393
403
  }
394
404
  } },
395
405
  plugins: [
396
- w({ template: { compilerOptions: {
406
+ E({ template: { compilerOptions: {
397
407
  runtimeModuleName: "@vue/runtime-core",
398
408
  hoistStatic: !1
399
409
  } } }),
400
- R(),
401
- Ee(),
402
- De(m)
410
+ R(e),
411
+ ke(),
412
+ Ae(h)
403
413
  ]
404
414
  });
405
415
  return {
406
- entryFile: f,
407
- dispatch: g,
416
+ entryFile: p,
417
+ dispatch: _,
408
418
  close: () => v.close()
409
419
  };
410
420
  }
411
421
  //#endregion
422
+ //#region src/adapter/vite/watch.mts
423
+ async function Me(e, { onBuild: t, onError: n, stdout: r = process.stdout, stderr: i = process.stderr, quiet: a = !1, ...o }) {
424
+ let { outDir: s } = o, c, l = await C(z({
425
+ core: e,
426
+ ...o,
427
+ watch: !0,
428
+ stdout: r,
429
+ stderr: i,
430
+ quiet: a,
431
+ onOutput: (e) => {
432
+ t(P(s, e, c)), c = void 0;
433
+ }
434
+ }));
435
+ return l.on("change", (e) => {
436
+ c ??= {
437
+ file: e,
438
+ at: Date.now()
439
+ };
440
+ }), l.on("event", (t) => {
441
+ if (t.code !== "ERROR") return;
442
+ c = void 0;
443
+ let { errors: r } = t.error;
444
+ n(e.bundlerFault(r?.[0]?.message ?? t.error.message));
445
+ }), { close: () => l.close() };
446
+ }
447
+ //#endregion
448
+ //#region src/adapter/vite/createBundler.mts
449
+ function Ne(e) {
450
+ return {
451
+ watch: (t) => Me(e, t),
452
+ build: (t) => xe(e, t),
453
+ hmr: (t) => je(e, t)
454
+ };
455
+ }
456
+ //#endregion
412
457
  //#region src/dev-client/hostBin.mts
413
458
  var V = "INCA_HOST_BIN";
414
459
  function H() {
415
460
  let e = process.platform === "darwin" || process.platform === "linux" ? process.platform : void 0, t = process.arch === "arm64" || process.arch === "x64" ? process.arch : void 0;
416
461
  return e && t ? `@incajs/host-${e}-${t}` : void 0;
417
462
  }
418
- function ke() {
463
+ function Pe() {
419
464
  let e = H();
420
465
  if (e) try {
421
- return T(import.meta.url).resolve(`${e}/bin/inca-host`);
466
+ return ee(import.meta.url).resolve(`${e}/bin/inca-host`);
422
467
  } catch {
423
468
  return;
424
469
  }
@@ -426,13 +471,13 @@ function ke() {
426
471
  function U() {
427
472
  let e = process.env[V];
428
473
  if (e) return e;
429
- let t = ke();
474
+ let t = Pe();
430
475
  if (t) return t;
431
476
  let n = H();
432
477
  throw new O("ERR_INCA_HOST_BIN_UNRESOLVED", `no inca-host binary found — ${n ? `no ${n} package is installed for it` : `this platform (${process.platform}/${process.arch}) has no published package`}, and ${V} isn't set to one`);
433
478
  }
434
479
  function W(e) {
435
- if (!l(e, { throwIfNoEntry: !1 })?.isFile()) throw new O("ERR_INCA_HOST_BIN_NOT_FOUND", `no host binary at ${e} — check that it was built and is executable`);
480
+ if (!u(e, { throwIfNoEntry: !1 })?.isFile()) throw new O("ERR_INCA_HOST_BIN_NOT_FOUND", `no host binary at ${e} — check that it was built`);
436
481
  }
437
482
  //#endregion
438
483
  //#region src/dev-client/hostError.mts
@@ -443,14 +488,14 @@ var G = class extends Error {
443
488
  super(e), this.code = t, this.hostStack = n, this.name = "HostError";
444
489
  }
445
490
  };
446
- function Ae(e) {
491
+ function Fe(e) {
447
492
  return typeof e == "object" && !!e && e.jsonrpc === "2.0";
448
493
  }
449
494
  //#endregion
450
495
  //#region src/dev-client/hostClient.mts
451
- var je = (e) => {
496
+ var Ie = (e) => {
452
497
  process.stderr.write(e.endsWith("\n") ? e : `${e}\n`);
453
- }, Me = -32e3, Ne = class {
498
+ }, Le = -32e3, Re = class {
454
499
  #e;
455
500
  #t;
456
501
  #n = 1;
@@ -462,7 +507,7 @@ var je = (e) => {
462
507
  async start() {
463
508
  let e = this.#e.hostBin ?? U();
464
509
  W(e);
465
- let t = ee(e, ["--dev", this.#e.entryFile], {
510
+ let t = te(e, ["--dev", this.#e.entryFile], {
466
511
  stdio: [
467
512
  "pipe",
468
513
  "pipe",
@@ -471,10 +516,10 @@ var je = (e) => {
471
516
  env: this.#e.env
472
517
  });
473
518
  this.#t = t;
474
- let n = this.#e.onStderr ?? je;
519
+ let n = this.#e.onStderr ?? Ie;
475
520
  t.stderr.setEncoding("utf8"), t.stderr.on("data", (e) => n(e)), t.stdin.on("error", (e) => {
476
521
  e.code !== "EPIPE" && n(`inca-host stdin: ${e.message}\n`);
477
- }), te.createInterface({ input: t.stdout }).on("line", (e) => {
522
+ }), ne.createInterface({ input: t.stdout }).on("line", (e) => {
478
523
  this.#a(e, n);
479
524
  }), t.on("exit", (e, t) => {
480
525
  let n = /* @__PURE__ */ Error(`inca-host exited (code=${String(e)}, signal=${String(t)}) before answering`);
@@ -484,7 +529,7 @@ var je = (e) => {
484
529
  let r = !1;
485
530
  t.on("error", (e) => {
486
531
  r && n(`inca-host: ${e.message}\n`);
487
- }), await E(t, "spawn"), r = !0;
532
+ }), await D(t, "spawn"), r = !0;
488
533
  }
489
534
  #a(e, t) {
490
535
  let n;
@@ -494,7 +539,7 @@ var je = (e) => {
494
539
  t(`[stray stdout] ${e}`);
495
540
  return;
496
541
  }
497
- if (!Ae(n)) {
542
+ if (!Fe(n)) {
498
543
  t(`[stray stdout] ${e}`);
499
544
  return;
500
545
  }
@@ -505,7 +550,7 @@ var je = (e) => {
505
550
  if (n.id === null) {
506
551
  if (!("error" in n)) return;
507
552
  let { code: e, message: r, data: i } = n.error;
508
- e === Me ? this.#e.onAppError?.({
553
+ e === Le ? this.#e.onAppError?.({
509
554
  message: r,
510
555
  stack: i?.stack ?? null
511
556
  }) : t(`[host error ${String(e)}] ${r}\n`);
@@ -535,7 +580,7 @@ var je = (e) => {
535
580
  }
536
581
  }
537
582
  async #s(e) {
538
- let t = E(e, "exit");
583
+ let t = D(e, "exit");
539
584
  e.kill(), await t;
540
585
  }
541
586
  async call(e, t, n) {
@@ -576,35 +621,35 @@ var je = (e) => {
576
621
  let t = this.#t;
577
622
  if (!t || t.exitCode !== null || t.signalCode !== null) return;
578
623
  this.#i = !0;
579
- let n = E(t, "exit");
580
- this.call("shutdown").catch(() => {}), await Promise.race([n.then(() => "exited"), ne(e, void 0, { ref: !1 }).then(() => "timeout")]) === "timeout" && (t.kill(), await n);
624
+ let n = D(t, "exit");
625
+ this.call("shutdown").catch(() => {}), await Promise.race([n.then(() => "exited"), re(e, void 0, { ref: !1 }).then(() => "timeout")]) === "timeout" && (t.kill(), await n);
581
626
  }
582
- }, Pe = "[inca]", Fe = new Intl.DateTimeFormat(void 0, {
627
+ }, ze = "[inca]", Be = new Intl.DateTimeFormat(void 0, {
583
628
  hour: "numeric",
584
629
  minute: "numeric",
585
630
  second: "numeric"
586
- });
587
- function K(e, t, n) {
588
- let r = v(["bold", n], Pe, { stream: e });
589
- return t.timestamp ? `${v("dim", Fe.format(/* @__PURE__ */ new Date()), { stream: e })} ${r}` : r;
631
+ }), K = { timestamp: !0 };
632
+ function q(e, t, n) {
633
+ let r = b(["bold", n], ze, { stream: e });
634
+ return t.timestamp ? `${b("dim", Be.format(/* @__PURE__ */ new Date()), { stream: e })} ${r}` : r;
590
635
  }
591
- function q(e, t, n = {}) {
592
- e.write(`${K(e, n, "cyan")} ${t}\n`);
636
+ function J(e, t, n = {}) {
637
+ e.write(`${q(e, n, "cyan")} ${t}\n`);
593
638
  }
594
- function J(e) {
639
+ function Y(e) {
595
640
  let t = e.code;
596
641
  return typeof t == "string" ? t : null;
597
642
  }
598
- function Ie(e) {
643
+ function Ve(e) {
599
644
  return /\bERR_INCA_[A-Z0-9_]+/.exec(e)?.[0] ?? null;
600
645
  }
601
- function Le(e) {
646
+ function He(e) {
602
647
  let t = e.stack;
603
648
  if (!t) return null;
604
649
  for (let n of [`${e.name}: ${e.message}`, e.message]) if (t.startsWith(n)) return t.slice(n.length).replace(/^\r?\n/, "") || null;
605
650
  return t;
606
651
  }
607
- function Re(e) {
652
+ function Ue(e) {
608
653
  let t = /^(?:\w*Error: )?(ERR_INCA_[A-Z0-9_]+): /.exec(e);
609
654
  return t ? {
610
655
  message: e.slice(t[0].length),
@@ -616,84 +661,58 @@ function Re(e) {
616
661
  code: null
617
662
  };
618
663
  }
619
- function Y(e) {
664
+ function X(e) {
620
665
  return e instanceof G ? {
621
666
  message: e.message,
622
667
  stack: e.hostStack,
623
- code: J(e)
668
+ code: Y(e)
624
669
  } : e instanceof Error ? {
625
670
  message: e.message,
626
- stack: Le(e),
627
- code: J(e) ?? Ie(e.message)
671
+ stack: He(e),
672
+ code: Y(e) ?? Ve(e.message)
628
673
  } : {
629
674
  message: String(e),
630
675
  stack: null,
631
676
  code: null
632
677
  };
633
678
  }
634
- function ze(e, t) {
635
- return e.split("\n").map((e) => /^\s*at\b/.test(e) ? v("dim", e, { stream: t }) : e).join("\n");
679
+ function We(e, t) {
680
+ return e.split("\n").map((e) => /^\s*at\b/.test(e) ? b("dim", e, { stream: t }) : e).join("\n");
636
681
  }
637
- function X(e, t, n, r = {}) {
638
- n.stack && e.write(`${ze(n.stack, e)}\n`);
639
- let i = n.code ? ` (${v("bold", n.code, { stream: e })})` : "";
640
- e.write(`${K(e, r, "red")} ${t}${i}: ${n.message}\n`);
641
- }
642
- //#endregion
643
- //#region src/adapter/vite/watch.mts
644
- async function Be({ onBuild: e, onError: t, stdout: n = process.stdout, stderr: r = process.stderr, quiet: i = !1, ...a }) {
645
- let { outDir: o } = a, s, c = await x(z({
646
- ...a,
647
- watch: !0,
648
- stdout: n,
649
- stderr: r,
650
- quiet: i,
651
- onOutput: (t) => {
652
- e(de(o, t, s)), s = void 0;
653
- }
654
- }));
655
- return c.on("change", (e) => {
656
- s ??= {
657
- file: e,
658
- at: Date.now()
659
- };
660
- }), c.on("event", (e) => {
661
- if (e.code !== "ERROR") return;
662
- s = void 0;
663
- let { errors: n } = e.error;
664
- t(Re(n?.[0]?.message ?? e.error.message));
665
- }), { close: () => c.close() };
682
+ function Z(e, t, n, r = {}) {
683
+ n.stack && e.write(`${We(n.stack, e)}\n`);
684
+ let i = n.code ? ` (${b("bold", n.code, { stream: e })})` : "";
685
+ e.write(`${q(e, r, "red")} ${t}${i}: ${n.message}\n`);
666
686
  }
667
687
  //#endregion
668
688
  //#region src/defaultBundler.mts
669
- var Ve = {
670
- watch: Be,
671
- build: ye,
672
- hmr: Oe
673
- };
689
+ var Ge = Ne(/* @__PURE__ */ e({
690
+ IncaError: () => O,
691
+ bundlerFault: () => Ue
692
+ }));
674
693
  //#endregion
675
694
  //#region src/entry.mts
676
- async function He(e) {
677
- let t = a.join(e, "src/main.mts");
678
- if (o(t)) return t;
679
- let n = a.join(e, "src/App.vue");
680
- if (o(n)) return Ue(n, e);
695
+ async function Ke(e) {
696
+ let t = o.join(e, "src/main.mts");
697
+ if (s(t)) return t;
698
+ let n = o.join(e, "src/App.vue");
699
+ if (s(n)) return qe(n, e);
681
700
  throw new O("ERR_INCA_ENTRY_NOT_FOUND", `no app entry found — expected ${t} or ${n}`);
682
701
  }
683
- async function Ue(e, t) {
684
- let n = a.join(t, "node_modules/.inca");
685
- await p(n, { recursive: !0 });
686
- let r = a.join(n, "entry.mts"), i = JSON.stringify(e.split(a.sep).join("/"));
687
- return await _(r, `import { createIncaApp } from "incajs/vue";\nimport App from ${i};\ncreateIncaApp(App).mount();\n`), r;
702
+ async function qe(e, t) {
703
+ let n = o.join(t, "node_modules/.inca");
704
+ await h(n, { recursive: !0 });
705
+ let r = o.join(n, "entry.mts"), i = JSON.stringify(e.split(o.sep).join("/"));
706
+ return await y(r, `import { createIncaApp } from "incajs/vue";\nimport App from ${i};\ncreateIncaApp(App).mount();\n`), r;
688
707
  }
689
708
  //#endregion
690
709
  //#region src/build.mts
691
- async function We(e = {}) {
692
- let t = e.cwd ?? process.cwd(), n = e.config ?? await P(t), r = a.resolve(t, n.outDir), i = e.bundler ?? Ve, o = e.entry ?? n.entry ?? await He(t);
693
- j(t, r, o);
694
- let s = e.runtimeConfig ?? await ue(t);
710
+ async function Je(e = {}) {
711
+ let t = e.cwd ?? process.cwd(), n = e.config ?? await de(t), r = o.resolve(t, n.outDir), i = e.bundler ?? Ge, a = e.entry ?? n.entry ?? await Ke(t);
712
+ j(t, r, a);
713
+ let s = e.runtimeConfig ?? await N(t);
695
714
  return i.build({
696
- entry: o,
715
+ entry: a,
697
716
  outDir: r,
698
717
  runtimeConfig: s,
699
718
  stdout: e.stdout,
@@ -702,77 +721,77 @@ async function We(e = {}) {
702
721
  }
703
722
  //#endregion
704
723
  //#region src/dev-lock.mts
705
- function Ge(e) {
706
- return a.join(e, "node_modules/.inca/dev.pid");
724
+ function Ye(e) {
725
+ return o.join(e, "node_modules/.inca/dev.pid");
707
726
  }
708
- function Ke(e) {
727
+ function Xe(e) {
709
728
  try {
710
729
  return process.kill(e, 0), !0;
711
730
  } catch (e) {
712
731
  return e.code === "EPERM";
713
732
  }
714
733
  }
715
- var qe = D();
716
- function Z(e) {
734
+ var Ze = ie();
735
+ function Q(e) {
717
736
  return new O("ERR_INCA_DEV_RUNNING", `inca dev is already running for this app (pid ${String(e)})`);
718
737
  }
719
- async function Je(e) {
720
- let t = Ge(e), n = `${String(process.pid)}:${qe}`, r = `${t}.${D()}`;
721
- await p(a.dirname(t), { recursive: !0 }), await _(r, n);
738
+ async function Qe(e) {
739
+ let t = Ye(e), n = `${String(process.pid)}:${Ze}`, r = `${t}.${ie()}`;
740
+ await h(o.dirname(t), { recursive: !0 }), await y(r, n);
722
741
  let i = process.pid;
723
742
  try {
724
743
  for (let e = 0; e < 5; e++) {
725
744
  try {
726
- return await f(r, t), Ye(t, n);
745
+ return await m(r, t), $e(t, n);
727
746
  } catch (e) {
728
747
  if (e.code !== "EEXIST") throw e;
729
748
  }
730
- let e = await m(t, "utf8").catch(() => ""), a = Number.parseInt(e, 10);
749
+ let e = await g(t, "utf8").catch(() => ""), a = Number.parseInt(e, 10);
731
750
  if (a === process.pid) {
732
- if (e === n) throw Z(a);
733
- } else if (Number.isSafeInteger(a) && a > 0 && Ke(a)) throw Z(a);
734
- i = Number.isSafeInteger(a) && a > 0 ? a : i, await g(t, { force: !0 });
751
+ if (e === n) throw Q(a);
752
+ } else if (Number.isSafeInteger(a) && a > 0 && Xe(a)) throw Q(a);
753
+ i = Number.isSafeInteger(a) && a > 0 ? a : i, await v(t, { force: !0 });
735
754
  }
736
- throw Z(i);
755
+ throw Q(i);
737
756
  } finally {
738
- await g(r, { force: !0 });
757
+ await v(r, { force: !0 });
739
758
  }
740
759
  }
741
- function Ye(e, t) {
760
+ function $e(e, t) {
742
761
  let n = !1;
743
762
  return async () => {
744
- n || (n = !0, await m(e, "utf8").catch(() => "") === t && await g(e, { force: !0 }));
763
+ n || (n = !0, await g(e, "utf8").catch(() => "") === t && await v(e, { force: !0 }));
745
764
  };
746
765
  }
747
766
  //#endregion
748
767
  //#region src/plist.mts
749
- function Xe(e) {
768
+ function $(e) {
750
769
  return e.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;");
751
770
  }
752
- function Ze(e) {
753
- return typeof e == "boolean" ? e ? "<true/>" : "<false/>" : `<string>${Xe(e)}</string>`;
771
+ function et(e) {
772
+ return typeof e == "boolean" ? e ? "<true/>" : "<false/>" : `<string>${$(e)}</string>`;
754
773
  }
755
- function Qe(e) {
774
+ function tt(e) {
756
775
  return `<?xml version="1.0" encoding="UTF-8"?>
757
776
  <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
758
777
  <plist version="1.0">
759
778
  <dict>
760
- ${Object.entries(e).map(([e, t]) => `\t<key>${Xe(e)}</key>\n\t${Ze(t)}`).join("\n")}\n</dict>
779
+ ${Object.entries(e).map(([e, t]) => `\t<key>${$(e)}</key>\n\t${et(t)}`).join("\n")}\n</dict>
761
780
  </plist>
762
781
  `;
763
782
  }
764
783
  //#endregion
765
784
  //#region src/macos-app.mts
766
- async function $e(e) {
785
+ async function nt(e) {
767
786
  let { appPath: t, metadata: n, hostBin: r } = e;
768
- await g(t, {
787
+ await v(t, {
769
788
  recursive: !0,
770
789
  force: !0
771
790
  });
772
- let i = a.join(t, "Contents"), o = a.join(i, "MacOS"), s = a.join(i, "Resources");
773
- await p(o, { recursive: !0 }), await p(s, { recursive: !0 });
774
- let c = a.join(o, n.productName);
775
- e.link ? await f(r, c).catch(() => d(r, c)) : await d(r, c), await u(c, 493);
791
+ let i = o.join(t, "Contents"), a = o.join(i, "MacOS"), s = o.join(i, "Resources");
792
+ await h(a, { recursive: !0 }), await h(s, { recursive: !0 });
793
+ let c = o.join(a, n.productName);
794
+ e.link ? await m(r, c).catch(() => p(r, c)) : await p(r, c), await f(c, 493);
776
795
  let l = {
777
796
  CFBundleName: n.productName,
778
797
  CFBundleDisplayName: n.productName,
@@ -785,209 +804,290 @@ async function $e(e) {
785
804
  NSHighResolutionCapable: !0
786
805
  };
787
806
  if (n.icon) {
788
- let e = a.basename(n.icon);
789
- await d(n.icon, a.join(s, e)), l.CFBundleIconFile = e;
807
+ let e = o.basename(n.icon);
808
+ await p(n.icon, o.join(s, e)), l.CFBundleIconFile = e;
790
809
  }
791
- return await _(a.join(i, "Info.plist"), Qe(l)), await _(a.join(i, "PkgInfo"), "APPL????"), {
810
+ return await y(o.join(i, "Info.plist"), tt(l)), await y(o.join(i, "PkgInfo"), "APPL????"), {
792
811
  appPath: t,
793
812
  executablePath: c,
794
813
  resourcesDir: s
795
814
  };
796
815
  }
797
816
  //#endregion
817
+ //#region src/watchForEdit.mts
818
+ var rt = /^(?:inca\.config\.[a-z0-9]+|package\.json)$/, it = ["main.mts", "App.vue"];
819
+ function at(e, t = {}) {
820
+ let n = t.debounceMs ?? 100, r = /* @__PURE__ */ new Set(), i, a = !1, c = () => {}, l = new Promise((e) => {
821
+ c = e;
822
+ }), u = () => {
823
+ a || (clearTimeout(i), i = setTimeout(c, n), i.unref());
824
+ }, f = (e, t) => {
825
+ let n = e;
826
+ for (let e; !s(n) && (e = o.dirname(n)) !== n;) n = e;
827
+ let i = n === e ? void 0 : o.relative(n, e).split(o.sep)[0], a = d(n);
828
+ a.on("change", (e, n) => {
829
+ let r = n === null ? null : String(n);
830
+ (r === null || (i === void 0 ? t(r) : r === i)) && u();
831
+ }), a.on("error", () => {
832
+ a.close(), r.delete(a), u();
833
+ }), r.add(a);
834
+ }, p = () => {
835
+ a = !0, clearTimeout(i);
836
+ for (let e of r) e.close();
837
+ r.clear();
838
+ };
839
+ try {
840
+ f(e, (e) => e === "src" || rt.test(e)), f(o.join(e, "src"), (e) => it.includes(e));
841
+ } catch (e) {
842
+ throw p(), e;
843
+ }
844
+ return {
845
+ edited: l,
846
+ add(e) {
847
+ if (a) return;
848
+ let t = o.resolve(e);
849
+ f(o.dirname(t), (e) => e === o.basename(t));
850
+ },
851
+ close: p
852
+ };
853
+ }
854
+ //#endregion
855
+ //#region src/retryOnEdit.mts
856
+ function ot(e, t) {
857
+ return new Promise((n) => {
858
+ let r = () => n(!1);
859
+ t.addEventListener("abort", r, { once: !0 }), e.then(() => {
860
+ t.removeEventListener("abort", r), n(!0);
861
+ });
862
+ });
863
+ }
864
+ async function st(e) {
865
+ let { cwd: t, signal: n, stdout: r, stderr: i, debounceMs: a } = e, o = !1;
866
+ for (;;) {
867
+ let c = at(t, { debounceMs: a });
868
+ try {
869
+ return await e.attempt(c);
870
+ } catch (e) {
871
+ let t = e instanceof O ? e.path : void 0;
872
+ if (t) try {
873
+ c.add(t);
874
+ } catch (t) {
875
+ throw Z(i, "build failed", X(e), K), t;
876
+ }
877
+ if (!n.aborted && !o && t && s(t)) {
878
+ o = !0;
879
+ continue;
880
+ }
881
+ if (o = !1, Z(i, "build failed", X(e), K), n.aborted || (J(r, "waiting for a change to retry", K), !await ot(c.edited, n))) return;
882
+ J(r, "retrying", K);
883
+ } finally {
884
+ c.close();
885
+ }
886
+ }
887
+ }
888
+ //#endregion
798
889
  //#region src/dev.mts
799
- var Q = { timestamp: !0 }, et = 1e4, tt = ["ERR_INCA_PACKAGE_JSON_NOT_FOUND", "ERR_INCA_PRODUCT_NAME_MISSING"];
800
- async function nt(e, t) {
890
+ var ct = 1e4, lt = ["ERR_INCA_PACKAGE_JSON_NOT_FOUND", "ERR_INCA_PRODUCT_NAME_MISSING"];
891
+ async function ut(e, t) {
801
892
  try {
802
- return await ce(e);
893
+ return await fe(e);
803
894
  } catch (e) {
804
- if (!(e instanceof O) || !tt.includes(e.code)) throw e;
805
- q(t, `running unnamed — ${e.message}`, Q);
895
+ if (!(e instanceof O) || !lt.includes(e.code)) throw e;
896
+ J(t, `running unnamed — ${e.message}`, K);
806
897
  return;
807
898
  }
808
899
  }
809
- async function rt(e, t, n, r) {
900
+ async function dt(e, t, n, r) {
810
901
  if (process.platform === "darwin" && t) try {
811
- return (await $e({
812
- appPath: a.join(e, "node_modules/.inca", `${t.productName}.app`),
902
+ return (await nt({
903
+ appPath: o.join(e, "node_modules/.inca", `${t.productName}.app`),
813
904
  metadata: t,
814
905
  hostBin: n,
815
906
  link: !0
816
907
  })).executablePath;
817
908
  } catch (e) {
818
- q(r, `running unbundled — ${Y(e).message}`, Q);
909
+ J(r, `running unbundled — ${X(e).message}`, K);
819
910
  return;
820
911
  }
821
912
  }
822
- function it(e) {
823
- let t = S(e, [], !1), n = [e.stack, t].filter((e) => e).join("\n");
824
- return {
825
- message: e.message,
826
- stack: n || null,
827
- code: null
828
- };
829
- }
830
- async function at(e, t) {
913
+ async function ft(e, t) {
831
914
  let n = new Set(t), r;
832
915
  try {
833
- r = await h(e, {
916
+ r = await _(e, {
834
917
  recursive: !0,
835
918
  withFileTypes: !0
836
919
  });
837
920
  } catch {
838
921
  return;
839
922
  }
840
- await Promise.all(r.filter((e) => e.isFile()).map((t) => a.relative(e, a.join(t.parentPath, t.name))).filter((e) => !n.has(e)).map((t) => g(a.join(e, t), { force: !0 })));
923
+ await Promise.all(r.filter((e) => e.isFile()).map((t) => o.relative(e, o.join(t.parentPath, t.name))).filter((e) => !n.has(e)).map((t) => v(o.join(e, t), { force: !0 })));
841
924
  }
842
- function ot(e) {
925
+ function pt(e) {
843
926
  let { NO_COLOR: t, FORCE_COLOR: n } = process.env;
844
927
  if (!(!e.isTTY || t || n)) return {
845
928
  ...process.env,
846
929
  FORCE_COLOR: "1"
847
930
  };
848
931
  }
849
- async function st(e) {
850
- let t = e.cwd ?? process.cwd(), n = await P(t), r = await Je(t);
932
+ async function mt(e) {
933
+ let t = e.cwd ?? process.cwd(), n = await Qe(t);
851
934
  try {
852
- let r = e.hostBin ?? U();
853
- W(r);
854
- let i = a.resolve(t, n.outDir), o = e.bundler ?? Ve, s = e.stdout ?? process.stdout, c = e.stderr ?? process.stderr, l = e.entry ?? n.entry ?? await He(t);
855
- j(t, i, l);
856
- let u = await nt(t, s), d = u ? le(u) : await ue(t), f = await rt(t, u, r, s) ?? r, p, m = !1, h = !1, g = !1, _, y = Promise.resolve(), b = () => {}, x = new Promise((e) => {
857
- b = e;
935
+ let n = e.hostBin ?? U();
936
+ W(n);
937
+ let r = e.bundler ?? Ge, i = e.stdout ?? process.stdout, a = e.stderr ?? process.stderr, s = e.experimentalHmr ? r.hmr?.bind(r) : void 0;
938
+ if (e.experimentalHmr && !s) throw new O("ERR_INCA_HMR_UNSUPPORTED", "--experimental-hmr was set, but the configured bundler has no HMR support");
939
+ let c = await st({
940
+ cwd: t,
941
+ signal: e.signal,
942
+ stdout: i,
943
+ stderr: a,
944
+ async attempt() {
945
+ let n = await de(t), r = o.resolve(t, n.outDir), a = e.entry ?? n.entry ?? await Ke(t);
946
+ j(t, r, a);
947
+ let s = await ut(t, i);
948
+ return {
949
+ outDir: r,
950
+ entry: a,
951
+ metadata: s,
952
+ runtimeConfig: s ? pe(s) : await N(t)
953
+ };
954
+ }
858
955
  });
859
- async function S() {
956
+ if (!c) return;
957
+ let { outDir: l, entry: u, metadata: d, runtimeConfig: f } = c, p = await dt(t, d, n, i) ?? n, m, h = !1, g = !1, _ = !1, v, y = Promise.resolve(), x = () => {}, S = new Promise((e) => {
958
+ x = e;
959
+ });
960
+ async function C() {
860
961
  try {
861
- return await p?.call("reload", void 0, et), !0;
962
+ return await m?.call("reload", void 0, ct), !0;
862
963
  } catch (e) {
863
- return X(c, "reload failed", Y(e), Q), !1;
964
+ return Z(a, "reload failed", X(e), K), !1;
864
965
  }
865
966
  }
866
- async function C(e, t) {
867
- let n = new Ne({
967
+ async function w(e, t) {
968
+ let n = new Re({
868
969
  entryFile: e,
869
- hostBin: f,
870
- env: ot(c),
871
- onStderr: (e) => c.write(e),
970
+ hostBin: p,
971
+ env: pt(a),
972
+ onStderr: (e) => a.write(e),
872
973
  onReady: () => {
873
- m = !0, q(s, "ready", Q), h && (h = !1, S());
974
+ h = !0, J(i, "ready", K), g && (g = !1, C());
874
975
  },
875
- onAppError: (e) => X(c, "app error", e, Q),
976
+ onAppError: (e) => Z(a, "app error", e, K),
876
977
  onExit: (e, t) => {
877
- g = !m, _ = {
978
+ _ = !h, v = {
878
979
  code: e,
879
980
  signal: t
880
- }, q(s, "host exited — stopping", Q), b();
981
+ }, J(i, "host exited — stopping", K), x();
881
982
  },
882
983
  integrations: t
883
984
  });
884
985
  try {
885
986
  await n.start();
886
987
  } catch (e) {
887
- X(c, "failed to start inca-host", Y(e), Q);
988
+ Z(a, "failed to start inca-host", X(e), K);
888
989
  return;
889
990
  }
890
- p = n;
991
+ m = n;
891
992
  }
892
- async function w(e) {
893
- if (await at(e.outDir, e.files), !p) {
894
- await C(e.entryFile);
993
+ async function T(e) {
994
+ if (await ft(e.outDir, e.files), !m) {
995
+ await w(e.entryFile);
895
996
  return;
896
997
  }
897
- if (!m) {
898
- h = !0;
998
+ if (!h) {
999
+ g = !0;
899
1000
  return;
900
1001
  }
901
- if (await S() && e.changed) {
902
- let n = v("dim", a.relative(t, e.changed.file), { stream: s }), r = Date.now() - e.changed.at;
903
- q(s, `${v("green", "reload")} ${n} (${r}ms)`, Q);
1002
+ if (await C() && e.changed) {
1003
+ let n = b("dim", o.relative(t, e.changed.file), { stream: i }), r = Date.now() - e.changed.at;
1004
+ J(i, `${b("green", "reload")} ${n} (${r}ms)`, K);
904
1005
  }
905
1006
  }
906
- let T;
907
- if (e.experimentalHmr) {
908
- if (!o.hmr) throw new O("ERR_INCA_HMR_UNSUPPORTED", "--experimental-hmr was set, but the configured bundler has no HMR support");
909
- let e = await o.hmr({
910
- entry: l,
1007
+ let E;
1008
+ if (s) {
1009
+ let e = await s({
1010
+ entry: u,
911
1011
  cwd: t,
912
- runtimeConfig: d,
913
- stdout: s,
914
- stderr: c,
915
- notify: (e) => p?.notify("vite", e),
916
- reload: () => void S(),
917
- onError: (e) => X(c, "build failed", it(e), Q),
1012
+ runtimeConfig: f,
1013
+ stdout: i,
1014
+ stderr: a,
1015
+ notify: (e) => m?.notify("vite", e),
1016
+ reload: () => void C(),
1017
+ onError: (e) => Z(a, "build failed", e, K),
918
1018
  onUpdate: ({ file: e, took: n }) => {
919
- let r = v("dim", a.relative(t, e), { stream: s });
920
- q(s, `${v("green", "update")} ${r} (${n}ms)`, Q);
1019
+ let r = b("dim", o.relative(t, e), { stream: i });
1020
+ J(i, `${b("green", "update")} ${r} (${n}ms)`, K);
921
1021
  }
922
1022
  });
923
- await C(e.entryFile, { vite: (t) => e.dispatch(t) }), T = e, p || b();
924
- } else T = await o.watch({
925
- entry: l,
926
- outDir: i,
927
- runtimeConfig: d,
1023
+ await w(e.entryFile, { vite: (t) => e.dispatch(t) }), E = e, m || x();
1024
+ } else E = await r.watch({
1025
+ entry: u,
1026
+ outDir: l,
1027
+ runtimeConfig: f,
928
1028
  mode: "development",
929
- stdout: s,
930
- stderr: c,
1029
+ stdout: i,
1030
+ stderr: a,
931
1031
  onBuild: (e) => {
932
- y = y.then(() => w(e));
1032
+ y = y.then(() => T(e));
933
1033
  },
934
1034
  onError: (e) => {
935
- X(c, "build failed", e, Q);
1035
+ Z(a, "build failed", e, K);
936
1036
  }
937
1037
  });
938
- if (e.signal.aborted ? b() : e.signal.addEventListener("abort", () => b(), { once: !0 }), await x, await y, await p?.stop(), await T.close(), g) throw new O("ERR_INCA_HOST_EXITED_EARLY", "the host exited before it was ready");
939
- if (_ && _.code !== 0 && _.signal !== "SIGINT" && _.signal !== "SIGTERM") {
940
- let { code: e, signal: t } = _;
1038
+ if (e.signal.aborted ? x() : e.signal.addEventListener("abort", () => x(), { once: !0 }), await S, await y, await m?.stop(), await E.close(), _) throw new O("ERR_INCA_HOST_EXITED_EARLY", "the host exited before it was ready");
1039
+ if (v && v.code !== 0 && v.signal !== "SIGINT" && v.signal !== "SIGTERM") {
1040
+ let { code: e, signal: t } = v;
941
1041
  throw new O("ERR_INCA_HOST_CRASHED", `the host exited with ${t ? `signal ${t}` : `code ${e}`}`);
942
1042
  }
943
1043
  } finally {
944
- await r();
1044
+ await n();
945
1045
  }
946
1046
  }
947
1047
  //#endregion
948
1048
  //#region src/package.mts
949
- function ct() {
1049
+ function ht() {
950
1050
  if (process.platform === "darwin") return "macos";
951
1051
  if (process.platform === "linux") return "linux";
952
1052
  throw new O("ERR_INCA_PLATFORM_UNSUPPORTED", `inca package doesn't support ${process.platform} yet`);
953
1053
  }
954
- async function lt(e, t) {
1054
+ async function gt(e, t) {
955
1055
  await Promise.all(e.files.map(async (n) => {
956
- let r = a.join(t, n);
957
- await p(a.dirname(r), { recursive: !0 }), await d(a.join(e.outDir, n), r);
1056
+ let r = o.join(t, n);
1057
+ await h(o.dirname(r), { recursive: !0 }), await p(o.join(e.outDir, n), r);
958
1058
  }));
959
1059
  }
960
- function ut(e, t) {
1060
+ function _t(e, t) {
961
1061
  let n = e.files.map((e) => e.split("/")[0] ?? e).find((e) => e.toLowerCase() === t.toLowerCase());
962
1062
  if (n !== void 0) throw new O("ERR_INCA_PRODUCT_NAME_INVALID", `the packaged app's directory "${t}" collides with "${n}" in the build output. Set a different "productName" in inca.config.ts`);
963
1063
  }
964
- async function dt({ metadata: e, output: t, hostBin: n }) {
965
- let { appPath: r, resourcesDir: i } = await $e({
966
- appPath: a.join(t.outDir, `${e.productName}.app`),
1064
+ async function vt({ metadata: e, output: t, hostBin: n }) {
1065
+ let { appPath: r, resourcesDir: i } = await nt({
1066
+ appPath: o.join(t.outDir, `${e.productName}.app`),
967
1067
  metadata: e,
968
1068
  hostBin: n
969
1069
  });
970
- return await lt(t, i), r;
1070
+ return await gt(t, i), r;
971
1071
  }
972
- async function ft({ metadata: t, output: n, hostBin: r }) {
973
- let i = e(t.productName);
974
- ut(n, i);
975
- let o = a.join(n.outDir, i);
976
- await g(o, {
1072
+ async function yt({ metadata: e, output: n, hostBin: r }) {
1073
+ let i = t(e.productName);
1074
+ _t(n, i);
1075
+ let a = o.join(n.outDir, i);
1076
+ await v(a, {
977
1077
  recursive: !0,
978
1078
  force: !0
979
- }), await p(o, { recursive: !0 });
980
- let s = a.join(o, i);
981
- return await d(r, s), await u(s, 493), await lt(n, o), o;
982
- }
983
- async function pt(e = {}) {
984
- let t = e.cwd ?? process.cwd(), n = e.stdout ?? process.stdout, r = e.target ?? ct(), i = await ce(t);
985
- i.usedPackageJsonKey && q(n, "the \"inca\" key in package.json is deprecated — move these settings to inca.config.ts"), i.identifierIsDefault && q(n, `no "identifier" set in inca.config.ts — using generated identifier ${i.identifier}`);
986
- let a = await We({
1079
+ }), await h(a, { recursive: !0 });
1080
+ let s = o.join(a, i);
1081
+ return await p(r, s), await f(s, 493), await gt(n, a), a;
1082
+ }
1083
+ async function bt(e = {}) {
1084
+ let t = e.cwd ?? process.cwd(), n = e.stdout ?? process.stdout, r = e.target ?? ht(), i = await fe(t);
1085
+ i.usedPackageJsonKey && J(n, "the \"inca\" key in package.json is deprecated — move these settings to inca.config.ts"), i.identifierIsDefault && J(n, `no "identifier" set in inca.config.ts — using generated identifier ${i.identifier}`);
1086
+ let a = await Je({
987
1087
  cwd: t,
988
1088
  entry: e.entry,
989
1089
  config: i,
990
- runtimeConfig: le(i),
1090
+ runtimeConfig: pe(i),
991
1091
  bundler: e.bundler,
992
1092
  stdout: n,
993
1093
  stderr: e.stderr
@@ -998,40 +1098,40 @@ async function pt(e = {}) {
998
1098
  output: a,
999
1099
  hostBin: o
1000
1100
  };
1001
- return { appPath: r === "macos" ? await dt(s) : await ft(s) };
1101
+ return { appPath: r === "macos" ? await vt(s) : await yt(s) };
1002
1102
  }
1003
1103
  //#endregion
1004
1104
  //#region src/cli.mts
1005
- var mt = "Usage: inca <dev|build|package>";
1006
- function $(e) {
1007
- return a.relative(process.cwd(), e);
1105
+ var xt = "Usage: inca <dev|build|package>";
1106
+ function St(e) {
1107
+ return o.relative(process.cwd(), e);
1008
1108
  }
1009
- async function ht(e = process.argv) {
1109
+ async function Ct(e = process.argv) {
1010
1110
  let t = e[2];
1011
1111
  if (t === "build") {
1012
1112
  try {
1013
- let e = await We();
1014
- q(process.stdout, `built ${$(e.entryFile)}`);
1113
+ let e = await Je();
1114
+ J(process.stdout, `built ${St(e.entryFile)}`);
1015
1115
  } catch (e) {
1016
- X(process.stderr, "build failed", Y(e)), process.exitCode = 1;
1116
+ Z(process.stderr, "build failed", X(e)), process.exitCode = 1;
1017
1117
  }
1018
1118
  return;
1019
1119
  }
1020
1120
  if (t === "package") {
1021
1121
  try {
1022
- let { appPath: e } = await pt();
1023
- q(process.stdout, `packaged ${$(e)}`);
1122
+ let { appPath: e } = await bt();
1123
+ J(process.stdout, `packaged ${St(e)}`);
1024
1124
  } catch (e) {
1025
- X(process.stderr, "package failed", Y(e)), process.exitCode = 1;
1125
+ Z(process.stderr, "package failed", X(e)), process.exitCode = 1;
1026
1126
  }
1027
1127
  return;
1028
1128
  }
1029
1129
  if (t !== "dev") {
1030
- process.stderr.write(`${mt}\n`), process.exitCode = 1;
1130
+ process.stderr.write(`${xt}\n`), process.exitCode = 1;
1031
1131
  return;
1032
1132
  }
1033
1133
  let n = new AbortController(), r = () => {
1034
- n.signal.aborted || (q(process.stderr, "shutting down", { timestamp: !0 }), n.abort());
1134
+ n.signal.aborted || (J(process.stderr, "shutting down", { timestamp: !0 }), n.abort());
1035
1135
  };
1036
1136
  process.on("SIGINT", r), process.on("SIGTERM", r);
1037
1137
  let i = e.includes("--experimental-hmr") || ![
@@ -1039,15 +1139,15 @@ async function ht(e = process.argv) {
1039
1139
  "0",
1040
1140
  "false"
1041
1141
  ].includes(process.env.INCA_EXPERIMENTAL_HMR ?? "");
1042
- i && q(process.stdout, "experimental HMR active", { timestamp: !0 });
1142
+ i && J(process.stdout, "experimental HMR active", { timestamp: !0 });
1043
1143
  try {
1044
- await st({
1144
+ await mt({
1045
1145
  signal: n.signal,
1046
1146
  experimentalHmr: i
1047
1147
  });
1048
1148
  } catch (e) {
1049
- X(process.stderr, "dev failed", Y(e), { timestamp: !0 }), process.exitCode = 1;
1149
+ Z(process.stderr, "dev failed", X(e), { timestamp: !0 }), process.exitCode = 1;
1050
1150
  }
1051
1151
  }
1052
1152
  //#endregion
1053
- export { ht as run };
1153
+ export { Ct as run };