@incajs/cli 0.0.8 → 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-DNvHueCI.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,16 +507,19 @@ 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], { stdio: [
466
- "pipe",
467
- "pipe",
468
- "pipe"
469
- ] });
510
+ let t = te(e, ["--dev", this.#e.entryFile], {
511
+ stdio: [
512
+ "pipe",
513
+ "pipe",
514
+ "pipe"
515
+ ],
516
+ env: this.#e.env
517
+ });
470
518
  this.#t = t;
471
- let n = this.#e.onStderr ?? je;
519
+ let n = this.#e.onStderr ?? Ie;
472
520
  t.stderr.setEncoding("utf8"), t.stderr.on("data", (e) => n(e)), t.stdin.on("error", (e) => {
473
521
  e.code !== "EPIPE" && n(`inca-host stdin: ${e.message}\n`);
474
- }), te.createInterface({ input: t.stdout }).on("line", (e) => {
522
+ }), ne.createInterface({ input: t.stdout }).on("line", (e) => {
475
523
  this.#a(e, n);
476
524
  }), t.on("exit", (e, t) => {
477
525
  let n = /* @__PURE__ */ Error(`inca-host exited (code=${String(e)}, signal=${String(t)}) before answering`);
@@ -481,7 +529,7 @@ var je = (e) => {
481
529
  let r = !1;
482
530
  t.on("error", (e) => {
483
531
  r && n(`inca-host: ${e.message}\n`);
484
- }), await E(t, "spawn"), r = !0;
532
+ }), await D(t, "spawn"), r = !0;
485
533
  }
486
534
  #a(e, t) {
487
535
  let n;
@@ -491,7 +539,7 @@ var je = (e) => {
491
539
  t(`[stray stdout] ${e}`);
492
540
  return;
493
541
  }
494
- if (!Ae(n)) {
542
+ if (!Fe(n)) {
495
543
  t(`[stray stdout] ${e}`);
496
544
  return;
497
545
  }
@@ -502,7 +550,7 @@ var je = (e) => {
502
550
  if (n.id === null) {
503
551
  if (!("error" in n)) return;
504
552
  let { code: e, message: r, data: i } = n.error;
505
- e === Me ? this.#e.onAppError?.({
553
+ e === Le ? this.#e.onAppError?.({
506
554
  message: r,
507
555
  stack: i?.stack ?? null
508
556
  }) : t(`[host error ${String(e)}] ${r}\n`);
@@ -532,7 +580,7 @@ var je = (e) => {
532
580
  }
533
581
  }
534
582
  async #s(e) {
535
- let t = E(e, "exit");
583
+ let t = D(e, "exit");
536
584
  e.kill(), await t;
537
585
  }
538
586
  async call(e, t, n) {
@@ -573,35 +621,35 @@ var je = (e) => {
573
621
  let t = this.#t;
574
622
  if (!t || t.exitCode !== null || t.signalCode !== null) return;
575
623
  this.#i = !0;
576
- let n = E(t, "exit");
577
- 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);
578
626
  }
579
- }, Pe = "[inca]", Fe = new Intl.DateTimeFormat(void 0, {
627
+ }, ze = "[inca]", Be = new Intl.DateTimeFormat(void 0, {
580
628
  hour: "numeric",
581
629
  minute: "numeric",
582
630
  second: "numeric"
583
- });
584
- function K(e, t, n) {
585
- let r = v(["bold", n], Pe, { stream: e });
586
- 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;
587
635
  }
588
- function q(e, t, n = {}) {
589
- e.write(`${K(e, n, "cyan")} ${t}\n`);
636
+ function J(e, t, n = {}) {
637
+ e.write(`${q(e, n, "cyan")} ${t}\n`);
590
638
  }
591
- function J(e) {
639
+ function Y(e) {
592
640
  let t = e.code;
593
641
  return typeof t == "string" ? t : null;
594
642
  }
595
- function Ie(e) {
643
+ function Ve(e) {
596
644
  return /\bERR_INCA_[A-Z0-9_]+/.exec(e)?.[0] ?? null;
597
645
  }
598
- function Le(e) {
646
+ function He(e) {
599
647
  let t = e.stack;
600
648
  if (!t) return null;
601
649
  for (let n of [`${e.name}: ${e.message}`, e.message]) if (t.startsWith(n)) return t.slice(n.length).replace(/^\r?\n/, "") || null;
602
650
  return t;
603
651
  }
604
- function Re(e) {
652
+ function Ue(e) {
605
653
  let t = /^(?:\w*Error: )?(ERR_INCA_[A-Z0-9_]+): /.exec(e);
606
654
  return t ? {
607
655
  message: e.slice(t[0].length),
@@ -613,84 +661,58 @@ function Re(e) {
613
661
  code: null
614
662
  };
615
663
  }
616
- function Y(e) {
664
+ function X(e) {
617
665
  return e instanceof G ? {
618
666
  message: e.message,
619
667
  stack: e.hostStack,
620
- code: J(e)
668
+ code: Y(e)
621
669
  } : e instanceof Error ? {
622
670
  message: e.message,
623
- stack: Le(e),
624
- code: J(e) ?? Ie(e.message)
671
+ stack: He(e),
672
+ code: Y(e) ?? Ve(e.message)
625
673
  } : {
626
674
  message: String(e),
627
675
  stack: null,
628
676
  code: null
629
677
  };
630
678
  }
631
- function ze(e, t) {
632
- return e.split("\n").map((e) => /^\s*at\b/.test(e) ? v("dim", e, { stream: t }) : e).join("\n");
633
- }
634
- function X(e, t, n, r = {}) {
635
- n.stack && e.write(`${ze(n.stack, e)}\n`);
636
- let i = n.code ? ` (${v("bold", n.code, { stream: e })})` : "";
637
- e.write(`${K(e, r, "red")} ${t}${i}: ${n.message}\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");
638
681
  }
639
- //#endregion
640
- //#region src/adapter/vite/watch.mts
641
- async function Be({ onBuild: e, onError: t, stdout: n = process.stdout, stderr: r = process.stderr, quiet: i = !1, ...a }) {
642
- let { outDir: o } = a, s, c = await x(z({
643
- ...a,
644
- watch: !0,
645
- stdout: n,
646
- stderr: r,
647
- quiet: i,
648
- onOutput: (t) => {
649
- e(de(o, t, s)), s = void 0;
650
- }
651
- }));
652
- return c.on("change", (e) => {
653
- s ??= {
654
- file: e,
655
- at: Date.now()
656
- };
657
- }), c.on("event", (e) => {
658
- if (e.code !== "ERROR") return;
659
- s = void 0;
660
- let { errors: n } = e.error;
661
- t(Re(n?.[0]?.message ?? e.error.message));
662
- }), { 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`);
663
686
  }
664
687
  //#endregion
665
688
  //#region src/defaultBundler.mts
666
- var Ve = {
667
- watch: Be,
668
- build: ye,
669
- hmr: Oe
670
- };
689
+ var Ge = Ne(/* @__PURE__ */ e({
690
+ IncaError: () => O,
691
+ bundlerFault: () => Ue
692
+ }));
671
693
  //#endregion
672
694
  //#region src/entry.mts
673
- async function He(e) {
674
- let t = a.join(e, "src/main.mts");
675
- if (o(t)) return t;
676
- let n = a.join(e, "src/App.vue");
677
- 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);
678
700
  throw new O("ERR_INCA_ENTRY_NOT_FOUND", `no app entry found — expected ${t} or ${n}`);
679
701
  }
680
- async function Ue(e, t) {
681
- let n = a.join(t, "node_modules/.inca");
682
- await p(n, { recursive: !0 });
683
- let r = a.join(n, "entry.mts"), i = JSON.stringify(e.split(a.sep).join("/"));
684
- 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;
685
707
  }
686
708
  //#endregion
687
709
  //#region src/build.mts
688
- async function We(e = {}) {
689
- 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);
690
- j(t, r, o);
691
- 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);
692
714
  return i.build({
693
- entry: o,
715
+ entry: a,
694
716
  outDir: r,
695
717
  runtimeConfig: s,
696
718
  stdout: e.stdout,
@@ -699,77 +721,77 @@ async function We(e = {}) {
699
721
  }
700
722
  //#endregion
701
723
  //#region src/dev-lock.mts
702
- function Ge(e) {
703
- return a.join(e, "node_modules/.inca/dev.pid");
724
+ function Ye(e) {
725
+ return o.join(e, "node_modules/.inca/dev.pid");
704
726
  }
705
- function Ke(e) {
727
+ function Xe(e) {
706
728
  try {
707
729
  return process.kill(e, 0), !0;
708
730
  } catch (e) {
709
731
  return e.code === "EPERM";
710
732
  }
711
733
  }
712
- var qe = D();
713
- function Z(e) {
734
+ var Ze = ie();
735
+ function Q(e) {
714
736
  return new O("ERR_INCA_DEV_RUNNING", `inca dev is already running for this app (pid ${String(e)})`);
715
737
  }
716
- async function Je(e) {
717
- let t = Ge(e), n = `${String(process.pid)}:${qe}`, r = `${t}.${D()}`;
718
- 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);
719
741
  let i = process.pid;
720
742
  try {
721
743
  for (let e = 0; e < 5; e++) {
722
744
  try {
723
- return await f(r, t), Ye(t, n);
745
+ return await m(r, t), $e(t, n);
724
746
  } catch (e) {
725
747
  if (e.code !== "EEXIST") throw e;
726
748
  }
727
- 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);
728
750
  if (a === process.pid) {
729
- if (e === n) throw Z(a);
730
- } else if (Number.isSafeInteger(a) && a > 0 && Ke(a)) throw Z(a);
731
- 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 });
732
754
  }
733
- throw Z(i);
755
+ throw Q(i);
734
756
  } finally {
735
- await g(r, { force: !0 });
757
+ await v(r, { force: !0 });
736
758
  }
737
759
  }
738
- function Ye(e, t) {
760
+ function $e(e, t) {
739
761
  let n = !1;
740
762
  return async () => {
741
- 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 }));
742
764
  };
743
765
  }
744
766
  //#endregion
745
767
  //#region src/plist.mts
746
- function Xe(e) {
768
+ function $(e) {
747
769
  return e.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;");
748
770
  }
749
- function Ze(e) {
750
- 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>`;
751
773
  }
752
- function Qe(e) {
774
+ function tt(e) {
753
775
  return `<?xml version="1.0" encoding="UTF-8"?>
754
776
  <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
755
777
  <plist version="1.0">
756
778
  <dict>
757
- ${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>
758
780
  </plist>
759
781
  `;
760
782
  }
761
783
  //#endregion
762
784
  //#region src/macos-app.mts
763
- async function $e(e) {
785
+ async function nt(e) {
764
786
  let { appPath: t, metadata: n, hostBin: r } = e;
765
- await g(t, {
787
+ await v(t, {
766
788
  recursive: !0,
767
789
  force: !0
768
790
  });
769
- let i = a.join(t, "Contents"), o = a.join(i, "MacOS"), s = a.join(i, "Resources");
770
- await p(o, { recursive: !0 }), await p(s, { recursive: !0 });
771
- let c = a.join(o, n.productName);
772
- 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);
773
795
  let l = {
774
796
  CFBundleName: n.productName,
775
797
  CFBundleDisplayName: n.productName,
@@ -782,201 +804,290 @@ async function $e(e) {
782
804
  NSHighResolutionCapable: !0
783
805
  };
784
806
  if (n.icon) {
785
- let e = a.basename(n.icon);
786
- 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;
787
809
  }
788
- 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????"), {
789
811
  appPath: t,
790
812
  executablePath: c,
791
813
  resourcesDir: s
792
814
  };
793
815
  }
794
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
795
889
  //#region src/dev.mts
796
- var Q = { timestamp: !0 }, et = 1e4, tt = ["ERR_INCA_PACKAGE_JSON_NOT_FOUND", "ERR_INCA_PRODUCT_NAME_MISSING"];
797
- 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) {
798
892
  try {
799
- return await ce(e);
893
+ return await fe(e);
800
894
  } catch (e) {
801
- if (!(e instanceof O) || !tt.includes(e.code)) throw e;
802
- 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);
803
897
  return;
804
898
  }
805
899
  }
806
- async function rt(e, t, n, r) {
900
+ async function dt(e, t, n, r) {
807
901
  if (process.platform === "darwin" && t) try {
808
- return (await $e({
809
- 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`),
810
904
  metadata: t,
811
905
  hostBin: n,
812
906
  link: !0
813
907
  })).executablePath;
814
908
  } catch (e) {
815
- q(r, `running unbundled — ${Y(e).message}`, Q);
909
+ J(r, `running unbundled — ${X(e).message}`, K);
816
910
  return;
817
911
  }
818
912
  }
819
- function it(e) {
820
- let t = S(e, [], !1), n = [e.stack, t].filter((e) => e).join("\n");
821
- return {
822
- message: e.message,
823
- stack: n || null,
824
- code: null
825
- };
826
- }
827
- async function at(e, t) {
913
+ async function ft(e, t) {
828
914
  let n = new Set(t), r;
829
915
  try {
830
- r = await h(e, {
916
+ r = await _(e, {
831
917
  recursive: !0,
832
918
  withFileTypes: !0
833
919
  });
834
920
  } catch {
835
921
  return;
836
922
  }
837
- 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 })));
838
924
  }
839
- async function ot(e) {
840
- let t = e.cwd ?? process.cwd(), n = await P(t), r = await Je(t);
925
+ function pt(e) {
926
+ let { NO_COLOR: t, FORCE_COLOR: n } = process.env;
927
+ if (!(!e.isTTY || t || n)) return {
928
+ ...process.env,
929
+ FORCE_COLOR: "1"
930
+ };
931
+ }
932
+ async function mt(e) {
933
+ let t = e.cwd ?? process.cwd(), n = await Qe(t);
841
934
  try {
842
- let r = e.hostBin ?? U();
843
- W(r);
844
- 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);
845
- j(t, i, l);
846
- 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) => {
847
- 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
+ }
848
955
  });
849
- 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() {
850
961
  try {
851
- return await p?.call("reload", void 0, et), !0;
962
+ return await m?.call("reload", void 0, ct), !0;
852
963
  } catch (e) {
853
- return X(c, "reload failed", Y(e), Q), !1;
964
+ return Z(a, "reload failed", X(e), K), !1;
854
965
  }
855
966
  }
856
- async function C(e, t) {
857
- let n = new Ne({
967
+ async function w(e, t) {
968
+ let n = new Re({
858
969
  entryFile: e,
859
- hostBin: f,
860
- onStderr: (e) => c.write(e),
970
+ hostBin: p,
971
+ env: pt(a),
972
+ onStderr: (e) => a.write(e),
861
973
  onReady: () => {
862
- m = !0, q(s, "ready", Q), h && (h = !1, S());
974
+ h = !0, J(i, "ready", K), g && (g = !1, C());
863
975
  },
864
- onAppError: (e) => X(c, "app error", e, Q),
976
+ onAppError: (e) => Z(a, "app error", e, K),
865
977
  onExit: (e, t) => {
866
- g = !m, _ = {
978
+ _ = !h, v = {
867
979
  code: e,
868
980
  signal: t
869
- }, q(s, "host exited — stopping", Q), b();
981
+ }, J(i, "host exited — stopping", K), x();
870
982
  },
871
983
  integrations: t
872
984
  });
873
985
  try {
874
986
  await n.start();
875
987
  } catch (e) {
876
- X(c, "failed to start inca-host", Y(e), Q);
988
+ Z(a, "failed to start inca-host", X(e), K);
877
989
  return;
878
990
  }
879
- p = n;
991
+ m = n;
880
992
  }
881
- async function w(e) {
882
- if (await at(e.outDir, e.files), !p) {
883
- await C(e.entryFile);
993
+ async function T(e) {
994
+ if (await ft(e.outDir, e.files), !m) {
995
+ await w(e.entryFile);
884
996
  return;
885
997
  }
886
- if (!m) {
887
- h = !0;
998
+ if (!h) {
999
+ g = !0;
888
1000
  return;
889
1001
  }
890
- if (await S() && e.changed) {
891
- let n = v("dim", a.relative(t, e.changed.file), { stream: s }), r = Date.now() - e.changed.at;
892
- 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);
893
1005
  }
894
1006
  }
895
- let T;
896
- if (e.experimentalHmr) {
897
- if (!o.hmr) throw new O("ERR_INCA_HMR_UNSUPPORTED", "--experimental-hmr was set, but the configured bundler has no HMR support");
898
- let e = await o.hmr({
899
- entry: l,
1007
+ let E;
1008
+ if (s) {
1009
+ let e = await s({
1010
+ entry: u,
900
1011
  cwd: t,
901
- runtimeConfig: d,
902
- stdout: s,
903
- stderr: c,
904
- notify: (e) => p?.notify("vite", e),
905
- reload: () => void S(),
906
- 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),
907
1018
  onUpdate: ({ file: e, took: n }) => {
908
- let r = v("dim", a.relative(t, e), { stream: s });
909
- 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);
910
1021
  }
911
1022
  });
912
- await C(e.entryFile, { vite: (t) => e.dispatch(t) }), T = e, p || b();
913
- } else T = await o.watch({
914
- entry: l,
915
- outDir: i,
916
- 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,
917
1028
  mode: "development",
918
- stdout: s,
919
- stderr: c,
1029
+ stdout: i,
1030
+ stderr: a,
920
1031
  onBuild: (e) => {
921
- y = y.then(() => w(e));
1032
+ y = y.then(() => T(e));
922
1033
  },
923
1034
  onError: (e) => {
924
- X(c, "build failed", e, Q);
1035
+ Z(a, "build failed", e, K);
925
1036
  }
926
1037
  });
927
- 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");
928
- if (_ && _.code !== 0 && _.signal !== "SIGINT" && _.signal !== "SIGTERM") {
929
- 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;
930
1041
  throw new O("ERR_INCA_HOST_CRASHED", `the host exited with ${t ? `signal ${t}` : `code ${e}`}`);
931
1042
  }
932
1043
  } finally {
933
- await r();
1044
+ await n();
934
1045
  }
935
1046
  }
936
1047
  //#endregion
937
1048
  //#region src/package.mts
938
- function st() {
1049
+ function ht() {
939
1050
  if (process.platform === "darwin") return "macos";
940
1051
  if (process.platform === "linux") return "linux";
941
1052
  throw new O("ERR_INCA_PLATFORM_UNSUPPORTED", `inca package doesn't support ${process.platform} yet`);
942
1053
  }
943
- async function ct(e, t) {
1054
+ async function gt(e, t) {
944
1055
  await Promise.all(e.files.map(async (n) => {
945
- let r = a.join(t, n);
946
- 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);
947
1058
  }));
948
1059
  }
949
- function lt(e, t) {
1060
+ function _t(e, t) {
950
1061
  let n = e.files.map((e) => e.split("/")[0] ?? e).find((e) => e.toLowerCase() === t.toLowerCase());
951
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`);
952
1063
  }
953
- async function ut({ metadata: e, output: t, hostBin: n }) {
954
- let { appPath: r, resourcesDir: i } = await $e({
955
- 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`),
956
1067
  metadata: e,
957
1068
  hostBin: n
958
1069
  });
959
- return await ct(t, i), r;
1070
+ return await gt(t, i), r;
960
1071
  }
961
- async function dt({ metadata: t, output: n, hostBin: r }) {
962
- let i = e(t.productName);
963
- lt(n, i);
964
- let o = a.join(n.outDir, i);
965
- 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, {
966
1077
  recursive: !0,
967
1078
  force: !0
968
- }), await p(o, { recursive: !0 });
969
- let s = a.join(o, i);
970
- return await d(r, s), await u(s, 493), await ct(n, o), o;
971
- }
972
- async function ft(e = {}) {
973
- let t = e.cwd ?? process.cwd(), n = e.stdout ?? process.stdout, r = e.target ?? st(), i = await ce(t);
974
- 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}`);
975
- 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({
976
1087
  cwd: t,
977
1088
  entry: e.entry,
978
1089
  config: i,
979
- runtimeConfig: le(i),
1090
+ runtimeConfig: pe(i),
980
1091
  bundler: e.bundler,
981
1092
  stdout: n,
982
1093
  stderr: e.stderr
@@ -987,40 +1098,40 @@ async function ft(e = {}) {
987
1098
  output: a,
988
1099
  hostBin: o
989
1100
  };
990
- return { appPath: r === "macos" ? await ut(s) : await dt(s) };
1101
+ return { appPath: r === "macos" ? await vt(s) : await yt(s) };
991
1102
  }
992
1103
  //#endregion
993
1104
  //#region src/cli.mts
994
- var pt = "Usage: inca <dev|build|package>";
995
- function $(e) {
996
- 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);
997
1108
  }
998
- async function mt(e = process.argv) {
1109
+ async function Ct(e = process.argv) {
999
1110
  let t = e[2];
1000
1111
  if (t === "build") {
1001
1112
  try {
1002
- let e = await We();
1003
- q(process.stdout, `built ${$(e.entryFile)}`);
1113
+ let e = await Je();
1114
+ J(process.stdout, `built ${St(e.entryFile)}`);
1004
1115
  } catch (e) {
1005
- X(process.stderr, "build failed", Y(e)), process.exitCode = 1;
1116
+ Z(process.stderr, "build failed", X(e)), process.exitCode = 1;
1006
1117
  }
1007
1118
  return;
1008
1119
  }
1009
1120
  if (t === "package") {
1010
1121
  try {
1011
- let { appPath: e } = await ft();
1012
- q(process.stdout, `packaged ${$(e)}`);
1122
+ let { appPath: e } = await bt();
1123
+ J(process.stdout, `packaged ${St(e)}`);
1013
1124
  } catch (e) {
1014
- X(process.stderr, "package failed", Y(e)), process.exitCode = 1;
1125
+ Z(process.stderr, "package failed", X(e)), process.exitCode = 1;
1015
1126
  }
1016
1127
  return;
1017
1128
  }
1018
1129
  if (t !== "dev") {
1019
- process.stderr.write(`${pt}\n`), process.exitCode = 1;
1130
+ process.stderr.write(`${xt}\n`), process.exitCode = 1;
1020
1131
  return;
1021
1132
  }
1022
1133
  let n = new AbortController(), r = () => {
1023
- 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());
1024
1135
  };
1025
1136
  process.on("SIGINT", r), process.on("SIGTERM", r);
1026
1137
  let i = e.includes("--experimental-hmr") || ![
@@ -1028,15 +1139,15 @@ async function mt(e = process.argv) {
1028
1139
  "0",
1029
1140
  "false"
1030
1141
  ].includes(process.env.INCA_EXPERIMENTAL_HMR ?? "");
1031
- i && q(process.stdout, "experimental HMR active", { timestamp: !0 });
1142
+ i && J(process.stdout, "experimental HMR active", { timestamp: !0 });
1032
1143
  try {
1033
- await ot({
1144
+ await mt({
1034
1145
  signal: n.signal,
1035
1146
  experimentalHmr: i
1036
1147
  });
1037
1148
  } catch (e) {
1038
- 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;
1039
1150
  }
1040
1151
  }
1041
1152
  //#endregion
1042
- export { mt as run };
1153
+ export { Ct as run };