@incajs/cli 0.0.4 → 0.0.6

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
@@ -3,63 +3,64 @@ import a from "node:path";
3
3
  import { existsSync as o } from "node:fs";
4
4
  import { chmod as s, cp as c, link as l, mkdir as u, readFile as d, readdir as f, rm as p, writeFile as m } from "node:fs/promises";
5
5
  import { styleText as h } from "node:util";
6
- import { build as g } from "vite";
7
- import _ from "@vitejs/plugin-vue";
8
- import { createRequire as v } from "node:module";
9
- import { spawn as y } from "node:child_process";
10
- import { once as b } from "node:events";
11
- import x from "node:readline";
12
- import { setTimeout as ee } from "node:timers/promises";
6
+ import { fileURLToPath as g } from "node:url";
7
+ import { DevEnvironment as _, build as v, buildErrorMessage as y, createServer as b } from "vite";
8
+ import x from "@vitejs/plugin-vue";
9
+ import { createRequire as S } from "node:module";
10
+ import { spawn as ee } from "node:child_process";
11
+ import { once as C } from "node:events";
12
+ import te from "node:readline";
13
+ import { setTimeout as ne } from "node:timers/promises";
13
14
  //#region src/error.mts
14
- var S = class extends Error {
15
+ var w = class extends Error {
15
16
  code;
16
17
  name = "IncaError";
17
18
  constructor(e, t) {
18
19
  super(t), this.code = e;
19
20
  }
20
- }, te = {
21
+ }, re = {
21
22
  name: "inca",
22
23
  packageJson: "inca",
23
24
  rcFile: !1,
24
25
  globalRc: !1,
25
26
  giget: !1,
26
27
  extend: !1
27
- }, ne = /[/\\:*?"<>|\0]/;
28
- function re(e) {
29
- return e === e.trim() && e !== "" && e !== "." && e !== ".." && !ne.test(e);
28
+ }, ie = /[/\\:*?"<>|\0]/;
29
+ function ae(e) {
30
+ return e === e.trim() && e !== "" && e !== "." && e !== ".." && !ie.test(e);
30
31
  }
31
- function C(e) {
32
- if (!(typeof e == "string" && re(e))) throw new S("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 \`/\\:*?"<>|\``);
32
+ function T(e) {
33
+ if (!(typeof e == "string" && ae(e))) throw new w("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 \`/\\:*?"<>|\``);
33
34
  }
34
- async function w(e) {
35
+ async function E(e) {
35
36
  let { config: t, layers: r } = await n({
36
37
  cwd: e,
37
- ...te
38
+ ...re
38
39
  }), i = r?.find((e) => e.configFile === "package.json");
39
40
  return {
40
41
  config: t,
41
42
  usedPackageJsonKey: Object.keys(i?.config ?? {}).length > 0
42
43
  };
43
44
  }
44
- async function T(e) {
45
- let { config: t } = await w(e);
45
+ async function D(e) {
46
+ let { config: t } = await E(e);
46
47
  return {
47
48
  entry: t.entry ? a.resolve(e, t.entry) : void 0,
48
49
  outDir: a.resolve(e, t.outDir ?? i.outDir)
49
50
  };
50
51
  }
51
- async function E(e) {
52
+ async function O(e) {
52
53
  let n = a.join(e, "package.json"), s;
53
54
  try {
54
55
  s = await d(n, "utf8");
55
56
  } catch {
56
- throw new S("ERR_INCA_PACKAGE_JSON_NOT_FOUND", `no package.json found at ${n}`);
57
+ throw new w("ERR_INCA_PACKAGE_JSON_NOT_FOUND", `no package.json found at ${n}`);
57
58
  }
58
- let c = JSON.parse(s), { config: l, usedPackageJsonKey: u } = await w(e), f = l.productName ?? r(c.name);
59
- if (!f) throw new S("ERR_INCA_PRODUCT_NAME_MISSING", `${n} needs a "name", or "productName" in inca.config.ts`);
60
- C(f);
59
+ let c = JSON.parse(s), { config: l, usedPackageJsonKey: u } = await E(e), f = l.productName ?? r(c.name);
60
+ if (!f) throw new w("ERR_INCA_PRODUCT_NAME_MISSING", `${n} needs a "name", or "productName" in inca.config.ts`);
61
+ T(f);
61
62
  let p = l.version ?? c.version ?? i.version, m = l.identifier ?? t(f), h;
62
- if (l.icon && (h = a.resolve(e, l.icon), !o(h))) throw new S("ERR_INCA_ICON_NOT_FOUND", `"icon" points to ${h}, which doesn't exist`);
63
+ if (l.icon && (h = a.resolve(e, l.icon), !o(h))) throw new w("ERR_INCA_ICON_NOT_FOUND", `"icon" points to ${h}, which doesn't exist`);
63
64
  let g = l.entry ? a.resolve(e, l.entry) : void 0, _ = a.resolve(e, l.outDir ?? i.outDir);
64
65
  return {
65
66
  productName: f,
@@ -73,20 +74,20 @@ async function E(e) {
73
74
  usedPackageJsonKey: u
74
75
  };
75
76
  }
76
- function D(e) {
77
+ function k(e) {
77
78
  return {
78
79
  name: e.productName,
79
80
  identifier: e.identifier,
80
81
  window: e.window
81
82
  };
82
83
  }
83
- async function O(e) {
84
- let { config: n } = await w(e), i = {};
84
+ async function A(e) {
85
+ let { config: n } = await E(e), i = {};
85
86
  try {
86
87
  i = JSON.parse(await d(a.join(e, "package.json"), "utf8"));
87
88
  } catch {}
88
89
  let o = n.productName ?? r(i.name);
89
- o && C(o);
90
+ o && T(o);
90
91
  let s = {
91
92
  name: o,
92
93
  identifier: n.identifier ?? (o ? t(o) : void 0),
@@ -96,12 +97,20 @@ async function O(e) {
96
97
  }
97
98
  //#endregion
98
99
  //#region src/adapter/vite/captureOutput.mts
99
- function ie(e) {
100
+ function j(e, t, n) {
101
+ return {
102
+ outDir: e,
103
+ entryFile: a.join(e, t.entryFile),
104
+ files: t.files,
105
+ changed: n
106
+ };
107
+ }
108
+ function oe(e) {
100
109
  return {
101
110
  name: "inca:capture-output",
102
111
  writeBundle(t, n) {
103
112
  let r = Object.keys(n), i = Object.values(n).find((e) => e.type === "chunk" && e.isEntry);
104
- if (!i) throw new S("ERR_INCA_BUILD_NO_ENTRY_CHUNK", "build produced no entry chunk");
113
+ if (!i) throw new w("ERR_INCA_BUILD_NO_ENTRY_CHUNK", "build produced no entry chunk");
105
114
  e({
106
115
  entryFile: i.fileName,
107
116
  files: r
@@ -111,48 +120,52 @@ function ie(e) {
111
120
  }
112
121
  //#endregion
113
122
  //#region src/adapter/vite/emitConfig.mts
114
- var ae = "inca.json";
115
- function oe(e) {
116
- let t = JSON.stringify(e, void 0, 2), n = t === void 0 || t === "{}";
123
+ var M = "inca.json";
124
+ function N(e) {
125
+ let t = JSON.stringify(e, void 0, 2);
126
+ if (t !== void 0 && t !== "{}") return `${t}\n`;
127
+ }
128
+ function se(e) {
129
+ let t = N(e);
117
130
  return {
118
131
  name: "inca:emit-config",
119
132
  generateBundle() {
120
- n || this.emitFile({
133
+ t && this.emitFile({
121
134
  type: "asset",
122
- fileName: ae,
123
- source: `${t}\n`
135
+ fileName: M,
136
+ source: t
124
137
  });
125
138
  }
126
139
  };
127
140
  }
128
141
  //#endregion
129
142
  //#region src/adapter/vite/logger.mts
130
- var se = "Build failed with ";
131
- function k(e, t) {
132
- let n = /* @__PURE__ */ new WeakSet(), r = /* @__PURE__ */ new Set(), i = {
143
+ var ce = "Build failed with ", le = "Pre-transform error";
144
+ function P(e, t, n = !1) {
145
+ let r = /* @__PURE__ */ new WeakSet(), i = /* @__PURE__ */ new Set(), a = {
133
146
  hasWarned: !1,
134
147
  info(t) {
135
- e.write(`${t}\n`);
148
+ n || e.write(`${t}\n`);
136
149
  },
137
150
  warn(e) {
138
- i.hasWarned = !0, t.write(`${e}\n`);
151
+ a.hasWarned = !0, t.write(`${e}\n`);
139
152
  },
140
153
  warnOnce(e) {
141
- r.has(e) || (r.add(e), i.warn(e));
154
+ i.has(e) || (i.add(e), a.warn(e));
142
155
  },
143
- error(e, r) {
144
- i.hasWarned = !0, r?.error && n.add(r.error), !e.includes(se) && t.write(`${e.replace(/\n\s+at .*/g, "")}\n`);
156
+ error(e, n) {
157
+ a.hasWarned = !0, n?.error && r.add(n.error), !e.includes(ce) && (e.includes(le) || t.write(`${e.replace(/\n\s+at .*/g, "")}\n`));
145
158
  },
146
159
  clearScreen() {},
147
160
  hasErrorLogged(e) {
148
- return n.has(e);
161
+ return r.has(e);
149
162
  }
150
163
  };
151
- return i;
164
+ return a;
152
165
  }
153
166
  //#endregion
154
167
  //#region src/adapter/vite/unsupported.mts
155
- var ce = /\.(?:css|pcss|postcss|sass|scss|less|styl|stylus)(?:\?|$)/, le = [{
168
+ var ue = /\.(?:css|pcss|postcss|sass|scss|less|styl|stylus)(?:\?|$)/, de = [{
156
169
  code: "ERR_INCA_UNSUPPORTED_STYLE",
157
170
  name: "a <style> block",
158
171
  matches: (e) => e.includes("vue&type=style"),
@@ -160,10 +173,10 @@ var ce = /\.(?:css|pcss|postcss|sass|scss|less|styl|stylus)(?:\?|$)/, le = [{
160
173
  }, {
161
174
  code: "ERR_INCA_UNSUPPORTED_STYLESHEET",
162
175
  name: "a stylesheet import",
163
- matches: (e) => ce.test(e),
176
+ matches: (e) => ue.test(e),
164
177
  hint: "the renderer applies no stylesheet — use a :style binding instead"
165
178
  }];
166
- function ue(e = le) {
179
+ function F(e = de) {
167
180
  return {
168
181
  name: "inca:reject-unsupported",
169
182
  enforce: "pre",
@@ -171,33 +184,33 @@ function ue(e = le) {
171
184
  let r = e.find((e) => e.matches(n));
172
185
  if (!r) return null;
173
186
  let i = a.relative(process.cwd(), n.split("?")[0] ?? n);
174
- throw new S(r.code, `${r.code}: ${i} uses ${r.name}, unsupported for now: ${r.hint}`);
187
+ throw new w(r.code, `${r.code}: ${i} uses ${r.name}, unsupported for now: ${r.hint}`);
175
188
  }
176
189
  };
177
190
  }
178
191
  //#endregion
179
192
  //#region src/adapter/vite/config.mts
180
- var de = "bundle.js";
181
- function A({ entry: e, outDir: t, mode: n, watch: r, onOutput: i, stdout: o, stderr: s, quiet: c, runtimeConfig: l }) {
193
+ var fe = "bundle.js";
194
+ function I({ entry: e, outDir: t, mode: n, watch: r, onOutput: i, stdout: o, stderr: s, quiet: c, runtimeConfig: l }) {
182
195
  return {
183
196
  configFile: !1,
184
197
  root: a.dirname(e),
185
198
  mode: n,
186
199
  clearScreen: !1,
187
200
  logLevel: c ? "silent" : "info",
188
- customLogger: k(o, s),
201
+ customLogger: P(o, s),
189
202
  define: { "process.env.NODE_ENV": JSON.stringify(n) },
190
203
  plugins: [
191
- _({ template: { compilerOptions: { runtimeModuleName: "@vue/runtime-core" } } }),
192
- ue(),
193
- oe(l),
194
- ie(i)
204
+ x({ template: { compilerOptions: { runtimeModuleName: "@vue/runtime-core" } } }),
205
+ F(),
206
+ se(l),
207
+ oe(i)
195
208
  ],
196
209
  build: {
197
210
  lib: {
198
211
  entry: e,
199
212
  formats: ["es"],
200
- fileName: () => de
213
+ fileName: () => fe
201
214
  },
202
215
  outDir: t,
203
216
  emptyOutDir: n === "production",
@@ -212,9 +225,9 @@ function A({ entry: e, outDir: t, mode: n, watch: r, onOutput: i, stdout: o, std
212
225
  }
213
226
  //#endregion
214
227
  //#region src/adapter/vite/build.mts
215
- async function fe({ entry: e, outDir: t, runtimeConfig: n, stdout: r = process.stdout, stderr: i = process.stderr, quiet: o = !1 }) {
216
- let s;
217
- if (await g(A({
228
+ async function pe({ entry: e, outDir: t, runtimeConfig: n, stdout: r = process.stdout, stderr: i = process.stderr, quiet: a = !1 }) {
229
+ let o;
230
+ if (await v(I({
218
231
  entry: e,
219
232
  outDir: t,
220
233
  runtimeConfig: n,
@@ -222,57 +235,183 @@ async function fe({ entry: e, outDir: t, runtimeConfig: n, stdout: r = process.s
222
235
  watch: !1,
223
236
  stdout: r,
224
237
  stderr: i,
225
- quiet: o,
238
+ quiet: a,
226
239
  onOutput: (e) => {
227
- s = {
228
- outDir: t,
229
- entryFile: a.join(t, e.entryFile),
230
- files: e.files
231
- };
240
+ o = j(t, e);
241
+ }
242
+ })), !o) throw new w("ERR_INCA_BUILD_NO_OUTPUT", "build produced no output");
243
+ return o;
244
+ }
245
+ //#endregion
246
+ //#region src/adapter/vite/hmr.mts
247
+ function L(e) {
248
+ return a.join(e, "node_modules/.inca/hmr");
249
+ }
250
+ function me() {
251
+ let e = a.dirname(g(import.meta.url));
252
+ for (; !o(a.join(e, "package.json"));) {
253
+ let t = a.dirname(e);
254
+ if (t === e) throw Error("could not locate @incajs/cli's own package.json");
255
+ e = t;
256
+ }
257
+ return a.join(e, "dist/hmr-runtime.js");
258
+ }
259
+ function he(e, t) {
260
+ let n = a.relative(e, t).split(a.sep).join("/");
261
+ return n.startsWith(".") ? n : `./${n}`;
262
+ }
263
+ async function ge(e, t, n) {
264
+ let r = L(e);
265
+ await u(r, { recursive: !0 });
266
+ let i = a.join(r, "entry.js"), o = he(r, n ?? me()), s = t.split(a.sep).join("/");
267
+ return await m(i, `import { start } from ${JSON.stringify(o)};\nstart(${JSON.stringify(s)}).catch((err) => console.error(err));\n`), i;
268
+ }
269
+ function _e(e) {
270
+ if (e.type === "error") return e.err;
271
+ if (e.type === "custom" && e.event === "vite:invoke") return e.data?.data?.error;
272
+ }
273
+ function ve(e) {
274
+ if (e.type !== "custom" || e.event !== "vite:invoke") return !1;
275
+ let t = e.data;
276
+ return t.name === "fetchModule" && !t.data?.error;
277
+ }
278
+ function ye(e, t, n, r, i) {
279
+ let a = /* @__PURE__ */ new Map(), o = { send: s };
280
+ function s(a) {
281
+ if (a.type === "full-reload") {
282
+ t();
283
+ return;
284
+ }
285
+ let o = _e(a);
286
+ o ? (n(o), i.current = void 0) : ve(a) && i.current && (r({
287
+ file: i.current.file,
288
+ took: Date.now() - i.current.at
289
+ }), i.current = void 0), e(a);
290
+ }
291
+ return {
292
+ channel: {
293
+ send: s,
294
+ on(e, t) {
295
+ let n = a.get(e);
296
+ n || a.set(e, n = /* @__PURE__ */ new Set()), n.add(t);
297
+ },
298
+ off(e, t) {
299
+ a.get(e)?.delete(t);
300
+ }
301
+ },
302
+ dispatch(e) {
303
+ let t = e;
304
+ if (t?.type === "custom" && typeof t.event == "string") for (let e of a.get(t.event) ?? []) e(t.data, o);
305
+ }
306
+ };
307
+ }
308
+ function be() {
309
+ let e = "\0inca:vite-client-shim";
310
+ return {
311
+ name: "inca:shim-vite-client",
312
+ enforce: "pre",
313
+ resolveId(t) {
314
+ return t === "/@vite/client" || t.endsWith("/dist/client/client.mjs") ? e : null;
315
+ },
316
+ load(t) {
317
+ return t === e ? "export function createHotContext() { return undefined; }" : null;
232
318
  }
233
- })), !s) throw new S("ERR_INCA_BUILD_NO_OUTPUT", "build produced no output");
234
- return s;
319
+ };
320
+ }
321
+ function xe(e) {
322
+ return {
323
+ name: "inca:file-changed",
324
+ hotUpdate(t) {
325
+ e.current = {
326
+ file: t.file,
327
+ at: Date.now()
328
+ }, this.environment.hot.send({
329
+ type: "custom",
330
+ event: "file-changed",
331
+ data: { file: t.file }
332
+ });
333
+ }
334
+ };
335
+ }
336
+ async function Se({ 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 = () => {} }) {
337
+ let f = await ge(t, e, r), p = N(n);
338
+ p && await m(a.join(L(t), M), p);
339
+ let h = { current: void 0 }, { channel: g, dispatch: v } = ye(c, l, u, d, h), y = await b({
340
+ configFile: !1,
341
+ root: a.dirname(e),
342
+ mode: "development",
343
+ clearScreen: !1,
344
+ logLevel: s ? "silent" : "info",
345
+ customLogger: P(i, o, s),
346
+ define: { "process.env.NODE_ENV": JSON.stringify("development") },
347
+ server: {
348
+ middlewareMode: !0,
349
+ ws: !1
350
+ },
351
+ optimizeDeps: { noDiscovery: !0 },
352
+ environments: { client: {
353
+ consumer: "client",
354
+ dev: {
355
+ moduleRunnerTransform: !0,
356
+ createEnvironment: (e, t) => new _(e, t, {
357
+ hot: !0,
358
+ transport: g
359
+ })
360
+ }
361
+ } },
362
+ plugins: [
363
+ x({ template: { compilerOptions: { runtimeModuleName: "@vue/runtime-core" } } }),
364
+ F(),
365
+ be(),
366
+ xe(h)
367
+ ]
368
+ });
369
+ return {
370
+ entryFile: f,
371
+ dispatch: v,
372
+ close: () => y.close()
373
+ };
235
374
  }
236
375
  //#endregion
237
376
  //#region src/dev-client/hostBin.mts
238
- var j = "INCA_HOST_BIN";
239
- function M() {
377
+ var R = "INCA_HOST_BIN";
378
+ function z() {
240
379
  let e = process.platform === "darwin" || process.platform === "linux" ? process.platform : void 0, t = process.arch === "arm64" || process.arch === "x64" ? process.arch : void 0;
241
380
  return e && t ? `@incajs/host-${e}-${t}` : void 0;
242
381
  }
243
- function pe() {
244
- let e = M();
382
+ function Ce() {
383
+ let e = z();
245
384
  if (e) try {
246
- return v(import.meta.url).resolve(`${e}/bin/inca-host`);
385
+ return S(import.meta.url).resolve(`${e}/bin/inca-host`);
247
386
  } catch {
248
387
  return;
249
388
  }
250
389
  }
251
- function N() {
252
- let e = process.env[j];
390
+ function B() {
391
+ let e = process.env[R];
253
392
  if (e) return e;
254
- let t = pe();
393
+ let t = Ce();
255
394
  if (t) return t;
256
- let n = M();
257
- throw new S("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 ${j} isn't set to one`);
395
+ let n = z();
396
+ throw new w("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 ${R} isn't set to one`);
258
397
  }
259
398
  //#endregion
260
399
  //#region src/dev-client/hostError.mts
261
- var P = class extends Error {
400
+ var V = class extends Error {
262
401
  code;
263
402
  hostStack;
264
403
  constructor(e, t, n = null) {
265
404
  super(e), this.code = t, this.hostStack = n, this.name = "HostError";
266
405
  }
267
406
  };
268
- function F(e) {
407
+ function we(e) {
269
408
  return typeof e == "object" && !!e && e.jsonrpc === "2.0";
270
409
  }
271
410
  //#endregion
272
411
  //#region src/dev-client/hostClient.mts
273
- var I = (e) => {
412
+ var Te = (e) => {
274
413
  process.stderr.write(e.endsWith("\n") ? e : `${e}\n`);
275
- }, L = class {
414
+ }, Ee = class {
276
415
  #e;
277
416
  #t;
278
417
  #n = 1;
@@ -282,22 +421,22 @@ var I = (e) => {
282
421
  this.#e = e;
283
422
  }
284
423
  async start() {
285
- let e = this.#e.hostBin ?? N(), t = y(e, ["--dev", this.#e.entryFile], { stdio: [
424
+ let e = this.#e.hostBin ?? B(), t = ee(e, ["--dev", this.#e.entryFile], { stdio: [
286
425
  "pipe",
287
426
  "pipe",
288
427
  "pipe"
289
428
  ] });
290
429
  this.#t = t;
291
- let n = this.#e.onStderr ?? I;
430
+ let n = this.#e.onStderr ?? Te;
292
431
  t.stderr.setEncoding("utf8"), t.stderr.on("data", (e) => n(e)), t.stdin.on("error", (e) => {
293
432
  e.code !== "EPIPE" && n(`inca-host stdin: ${e.message}\n`);
294
- }), x.createInterface({ input: t.stdout }).on("line", (e) => {
433
+ }), te.createInterface({ input: t.stdout }).on("line", (e) => {
295
434
  this.#a(e, n);
296
435
  }), t.on("exit", (e, t) => {
297
436
  let n = /* @__PURE__ */ Error(`inca-host exited (code=${String(e)}, signal=${String(t)}) before answering`);
298
437
  for (let { reject: e } of this.#r.values()) e(n);
299
438
  this.#r.clear(), this.#i || this.#e.onExit?.(e, t);
300
- }), await b(t, "spawn");
439
+ }), await C(t, "spawn");
301
440
  }
302
441
  #a(e, t) {
303
442
  let n;
@@ -307,7 +446,7 @@ var I = (e) => {
307
446
  t(`[stray stdout] ${e}`);
308
447
  return;
309
448
  }
310
- if (!F(n)) {
449
+ if (!we(n)) {
311
450
  t(`[stray stdout] ${e}`);
312
451
  return;
313
452
  }
@@ -316,7 +455,7 @@ var I = (e) => {
316
455
  return;
317
456
  }
318
457
  let r = this.#r.get(n.id);
319
- r && (this.#r.delete(n.id), "error" in n ? r.reject(new P(n.error.message, n.error.code, n.error.data?.stack ?? null)) : r.resolve(n.result));
458
+ r && (this.#r.delete(n.id), "error" in n ? r.reject(new V(n.error.message, n.error.code, n.error.data?.stack ?? null)) : r.resolve(n.result));
320
459
  }
321
460
  #o(e, t, n) {
322
461
  switch (e) {
@@ -340,60 +479,76 @@ var I = (e) => {
340
479
  }
341
480
  async #s(e) {
342
481
  this.#i = !0;
343
- let t = b(e, "exit");
482
+ let t = C(e, "exit");
344
483
  e.kill(), await t;
345
484
  }
346
- async call(e, t) {
347
- let n = this.#t;
348
- if (!n) throw Error("HostClient.start() has not been called");
349
- let r = this.#n++, i = JSON.stringify({
485
+ async call(e, t, n) {
486
+ let r = this.#t;
487
+ if (!r) throw Error("HostClient.start() has not been called");
488
+ let i = this.#n++, a = JSON.stringify({
350
489
  jsonrpc: "2.0",
351
- id: r,
490
+ id: i,
352
491
  method: e,
353
492
  params: t
354
493
  });
355
- return new Promise((e, t) => {
356
- this.#r.set(r, {
357
- resolve: e,
358
- reject: t
359
- }), n.stdin.write(`${i}\n`, (e) => {
360
- e && (this.#r.delete(r), t(e));
494
+ return new Promise((t, o) => {
495
+ let s = n === void 0 ? void 0 : setTimeout(() => {
496
+ this.#r.delete(i), o(/* @__PURE__ */ Error(`${e} timed out after ${String(n)}ms`));
497
+ }, n);
498
+ this.#r.set(i, {
499
+ resolve: (e) => {
500
+ clearTimeout(s), t(e);
501
+ },
502
+ reject: (e) => {
503
+ clearTimeout(s), o(e);
504
+ }
505
+ }), r.stdin.write(`${a}\n`, (e) => {
506
+ e && (clearTimeout(s), this.#r.delete(i), o(e));
361
507
  });
362
508
  });
363
509
  }
510
+ notify(e, t) {
511
+ let n = this.#t;
512
+ if (!n) throw Error("HostClient.start() has not been called");
513
+ n.stdin.write(`${JSON.stringify({
514
+ jsonrpc: "2.0",
515
+ method: e,
516
+ params: t
517
+ })}\n`);
518
+ }
364
519
  async stop(e = 2e3) {
365
520
  let t = this.#t;
366
521
  if (!t || t.exitCode !== null || t.signalCode !== null) return;
367
522
  this.#i = !0;
368
- let n = b(t, "exit");
369
- this.call("shutdown").catch(() => {}), await Promise.race([n.then(() => "exited"), ee(e).then(() => "timeout")]) === "timeout" && (t.kill(), await n);
523
+ let n = C(t, "exit");
524
+ this.call("shutdown").catch(() => {}), await Promise.race([n.then(() => "exited"), ne(e).then(() => "timeout")]) === "timeout" && (t.kill(), await n);
370
525
  }
371
- }, R = "[inca]", z = new Intl.DateTimeFormat(void 0, {
526
+ }, De = "[inca]", Oe = new Intl.DateTimeFormat(void 0, {
372
527
  hour: "numeric",
373
528
  minute: "numeric",
374
529
  second: "numeric"
375
530
  });
376
- function B(e, t, n) {
377
- let r = h(["bold", n], R, { stream: e });
378
- return t.timestamp ? `${h("dim", z.format(/* @__PURE__ */ new Date()), { stream: e })} ${r}` : r;
531
+ function H(e, t, n) {
532
+ let r = h(["bold", n], De, { stream: e });
533
+ return t.timestamp ? `${h("dim", Oe.format(/* @__PURE__ */ new Date()), { stream: e })} ${r}` : r;
379
534
  }
380
- function V(e, t, n = {}) {
381
- e.write(`${B(e, n, "cyan")} ${t}\n`);
535
+ function U(e, t, n = {}) {
536
+ e.write(`${H(e, n, "cyan")} ${t}\n`);
382
537
  }
383
- function H(e) {
538
+ function W(e) {
384
539
  let t = e.code;
385
540
  return typeof t == "string" ? t : null;
386
541
  }
387
- function me(e) {
542
+ function ke(e) {
388
543
  return /\bERR_INCA_[A-Z0-9_]+/.exec(e)?.[0] ?? null;
389
544
  }
390
- function he(e) {
545
+ function Ae(e) {
391
546
  let t = e.stack;
392
547
  if (!t) return null;
393
548
  for (let n of [`${e.name}: ${e.message}`, e.message]) if (t.startsWith(n)) return t.slice(n.length).replace(/^\r?\n/, "") || null;
394
549
  return t;
395
550
  }
396
- function ge(e) {
551
+ function je(e) {
397
552
  let t = /^(?:\w*Error: )?(ERR_INCA_[A-Z0-9_]+): /.exec(e);
398
553
  return t ? {
399
554
  message: e.slice(t[0].length),
@@ -405,71 +560,71 @@ function ge(e) {
405
560
  code: null
406
561
  };
407
562
  }
408
- function U(e) {
409
- return e instanceof P ? {
563
+ function G(e) {
564
+ return e instanceof V ? {
410
565
  message: e.message,
411
566
  stack: e.hostStack,
412
- code: H(e)
567
+ code: W(e)
413
568
  } : e instanceof Error ? {
414
569
  message: e.message,
415
- stack: he(e),
416
- code: H(e) ?? me(e.message)
570
+ stack: Ae(e),
571
+ code: W(e) ?? ke(e.message)
417
572
  } : {
418
573
  message: String(e),
419
574
  stack: null,
420
575
  code: null
421
576
  };
422
577
  }
423
- function W(e, t, n, r = {}) {
578
+ function Me(e, t) {
579
+ return e.split("\n").map((e) => /^\s*at\b/.test(e) ? h("dim", e, { stream: t }) : e).join("\n");
580
+ }
581
+ function K(e, t, n, r = {}) {
582
+ n.stack && e.write(`${Me(n.stack, e)}\n`);
424
583
  let i = n.code ? ` (${h("bold", n.code, { stream: e })})` : "";
425
- e.write(`${B(e, r, "red")} ${t}${i}: ${n.message}\n`), n.stack && e.write(`${n.stack}\n`);
584
+ e.write(`${H(e, r, "red")} ${t}${i}: ${n.message}\n`);
426
585
  }
427
586
  //#endregion
428
587
  //#region src/adapter/vite/watch.mts
429
- async function _e({ onBuild: e, onError: t, stdout: n = process.stdout, stderr: r = process.stderr, quiet: i = !1, ...o }) {
430
- let { outDir: s } = o, c, l = await g(A({
431
- ...o,
588
+ async function Ne({ onBuild: e, onError: t, stdout: n = process.stdout, stderr: r = process.stderr, quiet: i = !1, ...a }) {
589
+ let { outDir: o } = a, s, c = await v(I({
590
+ ...a,
432
591
  watch: !0,
433
592
  stdout: n,
434
593
  stderr: r,
435
594
  quiet: i,
436
595
  onOutput: (t) => {
437
- e({
438
- outDir: s,
439
- entryFile: a.join(s, t.entryFile),
440
- files: t.files,
441
- changed: c
442
- }), c = void 0;
596
+ e(j(o, t, s)), s = void 0;
443
597
  }
444
598
  }));
445
- return l.on("change", (e) => {
446
- c ??= {
599
+ return c.on("change", (e) => {
600
+ s ??= {
447
601
  file: e,
448
602
  at: Date.now()
449
603
  };
450
- }), l.on("event", (e) => {
604
+ }), c.on("event", (e) => {
451
605
  if (e.code !== "ERROR") return;
452
- c = void 0;
606
+ s = void 0;
453
607
  let { errors: n } = e.error;
454
- t(ge(n?.[0]?.message ?? e.error.message));
455
- }), { close: () => l.close() };
608
+ t(je(n?.[0]?.message ?? e.error.message));
609
+ }), { close: () => c.close() };
456
610
  }
457
611
  //#endregion
458
612
  //#region src/defaultBundler.mts
459
- var G = {
460
- watch: _e,
461
- build: fe
613
+ var q = {
614
+ watch: Ne,
615
+ build: pe,
616
+ hmr: Se
462
617
  };
463
618
  //#endregion
464
619
  //#region src/entry.mts
465
- async function K(e) {
620
+ async function J(e) {
466
621
  let t = a.join(e, "src/main.mts");
467
622
  if (o(t)) return t;
468
623
  let n = a.join(e, "src/App.vue");
469
- if (o(n)) return ve(n, e);
470
- throw new S("ERR_INCA_ENTRY_NOT_FOUND", `no app entry found — expected ${t} or ${n}`);
624
+ if (o(n)) return Pe(n, e);
625
+ throw new w("ERR_INCA_ENTRY_NOT_FOUND", `no app entry found — expected ${t} or ${n}`);
471
626
  }
472
- async function ve(e, t) {
627
+ async function Pe(e, t) {
473
628
  let n = a.join(t, "node_modules/.inca");
474
629
  await u(n, { recursive: !0 });
475
630
  let r = a.join(n, "entry.mts"), i = JSON.stringify(e.split(a.sep).join("/"));
@@ -477,8 +632,8 @@ async function ve(e, t) {
477
632
  }
478
633
  //#endregion
479
634
  //#region src/build.mts
480
- async function q(e = {}) {
481
- let t = e.cwd ?? process.cwd(), n = e.config ?? await T(t), r = n.outDir, i = e.bundler ?? G, a = e.entry ?? n.entry ?? await K(t), o = e.runtimeConfig ?? await O(t);
635
+ async function Y(e = {}) {
636
+ let t = e.cwd ?? process.cwd(), n = e.config ?? await D(t), r = n.outDir, i = e.bundler ?? q, a = e.entry ?? n.entry ?? await J(t), o = e.runtimeConfig ?? await A(t);
482
637
  return i.build({
483
638
  entry: a,
484
639
  outDir: r,
@@ -489,41 +644,41 @@ async function q(e = {}) {
489
644
  }
490
645
  //#endregion
491
646
  //#region src/dev-lock.mts
492
- function J(e) {
647
+ function Fe(e) {
493
648
  return a.join(e, "node_modules/.inca/dev.pid");
494
649
  }
495
- function ye(e) {
650
+ function Ie(e) {
496
651
  try {
497
652
  return process.kill(e, 0), !0;
498
653
  } catch (e) {
499
654
  return e.code === "EPERM";
500
655
  }
501
656
  }
502
- async function be(e) {
503
- let t = J(e), n = Number.parseInt(await d(t, "utf8").catch(() => ""), 10);
504
- if (Number.isInteger(n) && ye(n)) throw new S("ERR_INCA_DEV_RUNNING", `inca dev is already running for this app (pid ${String(n)})`);
657
+ async function Le(e) {
658
+ let t = Fe(e), n = Number.parseInt(await d(t, "utf8").catch(() => ""), 10);
659
+ if (Number.isInteger(n) && Ie(n)) throw new w("ERR_INCA_DEV_RUNNING", `inca dev is already running for this app (pid ${String(n)})`);
505
660
  return await u(a.dirname(t), { recursive: !0 }), await m(t, String(process.pid)), () => p(t, { force: !0 });
506
661
  }
507
662
  //#endregion
508
663
  //#region src/plist.mts
509
- function Y(e) {
664
+ function X(e) {
510
665
  return e.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;");
511
666
  }
512
- function xe(e) {
513
- return typeof e == "boolean" ? e ? "<true/>" : "<false/>" : `<string>${Y(e)}</string>`;
667
+ function Re(e) {
668
+ return typeof e == "boolean" ? e ? "<true/>" : "<false/>" : `<string>${X(e)}</string>`;
514
669
  }
515
- function Se(e) {
670
+ function ze(e) {
516
671
  return `<?xml version="1.0" encoding="UTF-8"?>
517
672
  <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
518
673
  <plist version="1.0">
519
674
  <dict>
520
- ${Object.entries(e).map(([e, t]) => `\t<key>${Y(e)}</key>\n\t${xe(t)}`).join("\n")}\n</dict>
675
+ ${Object.entries(e).map(([e, t]) => `\t<key>${X(e)}</key>\n\t${Re(t)}`).join("\n")}\n</dict>
521
676
  </plist>
522
677
  `;
523
678
  }
524
679
  //#endregion
525
680
  //#region src/macos-app.mts
526
- async function X(e) {
681
+ async function Z(e) {
527
682
  let { appPath: t, metadata: n, hostBin: r } = e;
528
683
  await p(t, {
529
684
  recursive: !0,
@@ -548,7 +703,7 @@ async function X(e) {
548
703
  let e = a.basename(n.icon);
549
704
  await c(n.icon, a.join(d, e)), h.CFBundleIconFile = e;
550
705
  }
551
- return await m(a.join(i, "Info.plist"), Se(h)), await m(a.join(i, "PkgInfo"), "APPL????"), {
706
+ return await m(a.join(i, "Info.plist"), ze(h)), await m(a.join(i, "PkgInfo"), "APPL????"), {
552
707
  appPath: t,
553
708
  executablePath: f,
554
709
  resourcesDir: d
@@ -556,30 +711,38 @@ async function X(e) {
556
711
  }
557
712
  //#endregion
558
713
  //#region src/dev.mts
559
- var Z = { timestamp: !0 }, Ce = ["ERR_INCA_PACKAGE_JSON_NOT_FOUND", "ERR_INCA_PRODUCT_NAME_MISSING"];
560
- async function we(e, t) {
714
+ var Q = { timestamp: !0 }, Be = 1e4, Ve = ["ERR_INCA_PACKAGE_JSON_NOT_FOUND", "ERR_INCA_PRODUCT_NAME_MISSING"];
715
+ async function He(e, t) {
561
716
  try {
562
- return await E(e);
717
+ return await O(e);
563
718
  } catch (e) {
564
- if (!(e instanceof S) || !Ce.includes(e.code)) throw e;
565
- V(t, `running unnamed — ${e.message}`, Z);
719
+ if (!(e instanceof w) || !Ve.includes(e.code)) throw e;
720
+ U(t, `running unnamed — ${e.message}`, Q);
566
721
  return;
567
722
  }
568
723
  }
569
- async function Te(e, t, n, r) {
724
+ async function Ue(e, t, n, r) {
570
725
  if (process.platform === "darwin" && t) try {
571
- return (await X({
726
+ return (await Z({
572
727
  appPath: a.join(e, "node_modules/.inca", `${t.productName}.app`),
573
728
  metadata: t,
574
- hostBin: n ?? N(),
729
+ hostBin: n ?? B(),
575
730
  link: !0
576
731
  })).executablePath;
577
732
  } catch (e) {
578
- V(r, `running unbundled — ${U(e).message}`, Z);
733
+ U(r, `running unbundled — ${G(e).message}`, Q);
579
734
  return;
580
735
  }
581
736
  }
582
- async function Ee(e, t) {
737
+ function We(e) {
738
+ let t = y(e, [], !1), n = [e.stack, t].filter((e) => e).join("\n");
739
+ return {
740
+ message: e.message,
741
+ stack: n || null,
742
+ code: null
743
+ };
744
+ }
745
+ async function Ge(e, t) {
583
746
  let n = new Set(t), r;
584
747
  try {
585
748
  r = await f(e, {
@@ -591,40 +754,44 @@ async function Ee(e, t) {
591
754
  }
592
755
  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) => p(a.join(e, t), { force: !0 })));
593
756
  }
594
- async function De(e) {
595
- let t = e.cwd ?? process.cwd(), n = await T(t), r = await be(t);
757
+ async function Ke(e) {
758
+ let t = e.cwd ?? process.cwd(), n = await D(t), r = await Le(t);
596
759
  try {
597
- let r = n.outDir, i = e.bundler ?? G, o = e.stdout ?? process.stdout, s = e.stderr ?? process.stderr, c = e.entry ?? n.entry ?? await K(t), l = await we(t, o), u = l ? D(l) : await O(t), d = await Te(t, l, e.hostBin, o) ?? e.hostBin, f, p = !1, m = !1, g = Promise.resolve(), _ = () => {}, v = new Promise((e) => {
760
+ let r = n.outDir, i = e.bundler ?? q, o = e.stdout ?? process.stdout, s = e.stderr ?? process.stderr, c = e.entry ?? n.entry ?? await J(t), l = await He(t, o), u = l ? k(l) : await A(t), d = await Ue(t, l, e.hostBin, o) ?? e.hostBin, f, p = !1, m = !1, g = Promise.resolve(), _ = () => {}, v = new Promise((e) => {
598
761
  _ = e;
599
762
  });
600
763
  async function y() {
601
764
  try {
602
- return await f?.call("reload"), !0;
765
+ return await f?.call("reload", void 0, Be), !0;
603
766
  } catch (e) {
604
- return W(s, "reload failed", U(e), Z), !1;
767
+ return K(s, "reload failed", G(e), Q), !1;
605
768
  }
606
769
  }
607
- async function b(e) {
608
- if (await Ee(e.outDir, e.files), !f) {
609
- let t = new L({
610
- entryFile: e.entryFile,
611
- hostBin: d,
612
- onStderr: (e) => s.write(e),
613
- onReady: () => {
614
- p = !0, V(o, "ready", Z), m && (m = !1, y());
615
- },
616
- onAppError: (e) => W(s, "app error", e, Z),
617
- onExit: () => {
618
- V(o, "host exited — stopping", Z), _();
619
- }
620
- });
621
- try {
622
- await t.start();
623
- } catch (e) {
624
- W(s, "failed to start inca-host", U(e), Z);
625
- return;
626
- }
627
- f = t;
770
+ async function b(e, t) {
771
+ let n = new Ee({
772
+ entryFile: e,
773
+ hostBin: d,
774
+ onStderr: (e) => s.write(e),
775
+ onReady: () => {
776
+ p = !0, U(o, "ready", Q), m && (m = !1, y());
777
+ },
778
+ onAppError: (e) => K(s, "app error", e, Q),
779
+ onExit: () => {
780
+ U(o, "host exited — stopping", Q), _();
781
+ },
782
+ integrations: t
783
+ });
784
+ try {
785
+ await n.start();
786
+ } catch (e) {
787
+ K(s, "failed to start inca-host", G(e), Q);
788
+ return;
789
+ }
790
+ f = n;
791
+ }
792
+ async function x(e) {
793
+ if (await Ge(e.outDir, e.files), !f) {
794
+ await b(e.entryFile);
628
795
  return;
629
796
  }
630
797
  if (!p) {
@@ -633,10 +800,28 @@ async function De(e) {
633
800
  }
634
801
  if (await y() && e.changed) {
635
802
  let n = h("dim", a.relative(t, e.changed.file), { stream: o }), r = Date.now() - e.changed.at;
636
- V(o, `${h("green", "reload")} ${n} (${r}ms)`, Z);
803
+ U(o, `${h("green", "reload")} ${n} (${r}ms)`, Q);
637
804
  }
638
805
  }
639
- let x = await i.watch({
806
+ let S;
807
+ if (e.experimentalHmr) {
808
+ if (!i.hmr) throw new w("ERR_INCA_HMR_UNSUPPORTED", "--experimental-hmr was set, but the configured bundler has no HMR support");
809
+ let e = await i.hmr({
810
+ entry: c,
811
+ cwd: t,
812
+ runtimeConfig: u,
813
+ stdout: o,
814
+ stderr: s,
815
+ notify: (e) => f?.notify("vite", e),
816
+ reload: () => void y(),
817
+ onError: (e) => K(s, "build failed", We(e), Q),
818
+ onUpdate: ({ file: e, took: n }) => {
819
+ let r = h("dim", a.relative(t, e), { stream: o });
820
+ U(o, `${h("green", "update")} ${r} (${n}ms)`, Q);
821
+ }
822
+ });
823
+ await b(e.entryFile, { vite: (t) => e.dispatch(t) }), S = e, f || _();
824
+ } else S = await i.watch({
640
825
  entry: c,
641
826
  outDir: r,
642
827
  runtimeConfig: u,
@@ -644,106 +829,115 @@ async function De(e) {
644
829
  stdout: o,
645
830
  stderr: s,
646
831
  onBuild: (e) => {
647
- g = g.then(() => b(e));
832
+ g = g.then(() => x(e));
648
833
  },
649
834
  onError: (e) => {
650
- W(s, "build failed", e, Z);
835
+ K(s, "build failed", e, Q);
651
836
  }
652
837
  });
653
- e.signal.aborted ? _() : e.signal.addEventListener("abort", () => _(), { once: !0 }), await v, await g, await f?.stop(), await x.close();
838
+ e.signal.aborted ? _() : e.signal.addEventListener("abort", () => _(), { once: !0 }), await v, await g, await f?.stop(), await S.close();
654
839
  } finally {
655
840
  await r();
656
841
  }
657
842
  }
658
843
  //#endregion
659
844
  //#region src/package.mts
660
- function Oe() {
845
+ function qe() {
661
846
  if (process.platform === "darwin") return "macos";
662
847
  if (process.platform === "linux") return "linux";
663
- throw new S("ERR_INCA_PLATFORM_UNSUPPORTED", `inca package doesn't support ${process.platform} yet`);
848
+ throw new w("ERR_INCA_PLATFORM_UNSUPPORTED", `inca package doesn't support ${process.platform} yet`);
664
849
  }
665
- async function Q(e, t) {
850
+ async function $(e, t) {
666
851
  await Promise.all(e.files.map(async (n) => {
667
852
  let r = a.join(t, n);
668
853
  await u(a.dirname(r), { recursive: !0 }), await c(a.join(e.outDir, n), r);
669
854
  }));
670
855
  }
671
- async function ke({ metadata: e, output: t, hostBin: n }) {
672
- let { appPath: r, resourcesDir: i } = await X({
856
+ async function Je({ metadata: e, output: t, hostBin: n }) {
857
+ let { appPath: r, resourcesDir: i } = await Z({
673
858
  appPath: a.join(t.outDir, `${e.productName}.app`),
674
859
  metadata: e,
675
860
  hostBin: n
676
861
  });
677
- return await Q(t, i), r;
862
+ return await $(t, i), r;
678
863
  }
679
- async function Ae({ metadata: t, output: n, hostBin: r }) {
864
+ async function Ye({ metadata: t, output: n, hostBin: r }) {
680
865
  let i = e(t.productName), o = a.join(n.outDir, i);
681
866
  await p(o, {
682
867
  recursive: !0,
683
868
  force: !0
684
869
  }), await u(o, { recursive: !0 });
685
870
  let l = a.join(o, i);
686
- return await c(r, l), await s(l, 493), await Q(n, o), o;
871
+ return await c(r, l), await s(l, 493), await $(n, o), o;
687
872
  }
688
- async function je(e = {}) {
689
- let t = e.cwd ?? process.cwd(), n = e.stdout ?? process.stdout, r = e.target ?? Oe(), i = await E(t);
690
- i.usedPackageJsonKey && V(n, "the \"inca\" key in package.json is deprecated — move these settings to inca.config.ts"), i.identifierIsDefault && V(n, `no "identifier" set in inca.config.ts — using generated identifier ${i.identifier}`);
691
- let a = await q({
873
+ async function Xe(e = {}) {
874
+ let t = e.cwd ?? process.cwd(), n = e.stdout ?? process.stdout, r = e.target ?? qe(), i = await O(t);
875
+ i.usedPackageJsonKey && U(n, "the \"inca\" key in package.json is deprecated — move these settings to inca.config.ts"), i.identifierIsDefault && U(n, `no "identifier" set in inca.config.ts — using generated identifier ${i.identifier}`);
876
+ let a = await Y({
692
877
  cwd: t,
693
878
  entry: e.entry,
694
879
  config: i,
695
- runtimeConfig: D(i),
880
+ runtimeConfig: k(i),
696
881
  bundler: e.bundler,
697
882
  stdout: n,
698
883
  stderr: e.stderr
699
- }), s = e.hostBin ?? N();
700
- if (!o(s)) throw new S("ERR_INCA_HOST_BIN_NOT_FOUND", `no host binary at ${s} — check that it was built and is executable`);
884
+ }), s = e.hostBin ?? B();
885
+ if (!o(s)) throw new w("ERR_INCA_HOST_BIN_NOT_FOUND", `no host binary at ${s} — check that it was built and is executable`);
701
886
  let c = {
702
887
  metadata: i,
703
888
  output: a,
704
889
  hostBin: s
705
890
  };
706
- return { appPath: r === "macos" ? await ke(c) : await Ae(c) };
891
+ return { appPath: r === "macos" ? await Je(c) : await Ye(c) };
707
892
  }
708
893
  //#endregion
709
894
  //#region src/cli.mts
710
- var Me = "Usage: inca <dev|build|package>";
711
- function $(e) {
895
+ var Ze = "Usage: inca <dev|build|package>";
896
+ function Qe(e) {
712
897
  return a.relative(process.cwd(), e);
713
898
  }
714
- async function Ne(e = process.argv) {
899
+ async function $e(e = process.argv) {
715
900
  let t = e[2];
716
901
  if (t === "build") {
717
902
  try {
718
- let e = await q();
719
- V(process.stdout, `built ${$(e.entryFile)}`);
903
+ let e = await Y();
904
+ U(process.stdout, `built ${Qe(e.entryFile)}`);
720
905
  } catch (e) {
721
- W(process.stderr, "build failed", U(e)), process.exitCode = 1;
906
+ K(process.stderr, "build failed", G(e)), process.exitCode = 1;
722
907
  }
723
908
  return;
724
909
  }
725
910
  if (t === "package") {
726
911
  try {
727
- let { appPath: e } = await je();
728
- V(process.stdout, `packaged ${$(e)}`);
912
+ let { appPath: e } = await Xe();
913
+ U(process.stdout, `packaged ${Qe(e)}`);
729
914
  } catch (e) {
730
- W(process.stderr, "package failed", U(e)), process.exitCode = 1;
915
+ K(process.stderr, "package failed", G(e)), process.exitCode = 1;
731
916
  }
732
917
  return;
733
918
  }
734
919
  if (t !== "dev") {
735
- process.stderr.write(`${Me}\n`), process.exitCode = 1;
920
+ process.stderr.write(`${Ze}\n`), process.exitCode = 1;
736
921
  return;
737
922
  }
738
923
  let n = new AbortController(), r = () => {
739
- n.signal.aborted || (V(process.stderr, "shutting down", { timestamp: !0 }), n.abort());
924
+ n.signal.aborted || (U(process.stderr, "shutting down", { timestamp: !0 }), n.abort());
740
925
  };
741
926
  process.on("SIGINT", r), process.on("SIGTERM", r);
927
+ let i = e.includes("--experimental-hmr") || ![
928
+ "",
929
+ "0",
930
+ "false"
931
+ ].includes(process.env.INCA_EXPERIMENTAL_HMR ?? "");
932
+ i && U(process.stdout, "experimental HMR active", { timestamp: !0 });
742
933
  try {
743
- await De({ signal: n.signal });
934
+ await Ke({
935
+ signal: n.signal,
936
+ experimentalHmr: i
937
+ });
744
938
  } catch (e) {
745
- W(process.stderr, "dev failed", U(e), { timestamp: !0 }), process.exitCode = 1;
939
+ K(process.stderr, "dev failed", G(e), { timestamp: !0 }), process.exitCode = 1;
746
940
  }
747
941
  }
748
942
  //#endregion
749
- export { Ne as run };
943
+ export { $e as run };