@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/README.md +11 -6
- package/dist/adapter/types.d.mts +71 -32
- package/dist/adapter/vite/build.d.mts +0 -1
- package/dist/adapter/vite/captureOutput.d.mts +3 -0
- package/dist/adapter/vite/emitConfig.d.mts +6 -0
- package/dist/adapter/vite/hmr.d.mts +7 -0
- package/dist/adapter/vite/index.d.mts +1 -0
- package/dist/adapter/vite/logger.d.mts +4 -3
- package/dist/adapter/vite/watch.d.mts +0 -1
- package/dist/cli.js +421 -227
- package/dist/dev-client/hostClient.d.mts +15 -2
- package/dist/dev.d.mts +5 -0
- package/dist/hmr-runtime.js +1129 -0
- package/dist/index.d.mts +0 -1
- package/dist/log.d.mts +4 -2
- package/package.json +8 -6
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 {
|
|
7
|
-
import _ from "
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import
|
|
12
|
-
import
|
|
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
|
|
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
|
-
},
|
|
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
|
-
},
|
|
28
|
-
function
|
|
29
|
-
return e === e.trim() && e !== "" && e !== "." && e !== ".." && !
|
|
28
|
+
}, ie = /[/\\:*?"<>|\0]/;
|
|
29
|
+
function ae(e) {
|
|
30
|
+
return e === e.trim() && e !== "" && e !== "." && e !== ".." && !ie.test(e);
|
|
30
31
|
}
|
|
31
|
-
function
|
|
32
|
-
if (!(typeof e == "string" &&
|
|
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
|
|
35
|
+
async function E(e) {
|
|
35
36
|
let { config: t, layers: r } = await n({
|
|
36
37
|
cwd: e,
|
|
37
|
-
...
|
|
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
|
|
45
|
-
let { config: t } = await
|
|
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
|
|
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
|
|
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
|
|
59
|
-
if (!f) throw new
|
|
60
|
-
|
|
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
|
|
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
|
|
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
|
|
84
|
-
let { config: n } = await
|
|
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 &&
|
|
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
|
|
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
|
|
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
|
|
115
|
-
function
|
|
116
|
-
let t = JSON.stringify(e, void 0, 2)
|
|
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
|
-
|
|
133
|
+
t && this.emitFile({
|
|
121
134
|
type: "asset",
|
|
122
|
-
fileName:
|
|
123
|
-
source:
|
|
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
|
|
131
|
-
function
|
|
132
|
-
let
|
|
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
|
-
|
|
151
|
+
a.hasWarned = !0, t.write(`${e}\n`);
|
|
139
152
|
},
|
|
140
153
|
warnOnce(e) {
|
|
141
|
-
|
|
154
|
+
i.has(e) || (i.add(e), a.warn(e));
|
|
142
155
|
},
|
|
143
|
-
error(e,
|
|
144
|
-
|
|
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
|
|
161
|
+
return r.has(e);
|
|
149
162
|
}
|
|
150
163
|
};
|
|
151
|
-
return
|
|
164
|
+
return a;
|
|
152
165
|
}
|
|
153
166
|
//#endregion
|
|
154
167
|
//#region src/adapter/vite/unsupported.mts
|
|
155
|
-
var
|
|
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) =>
|
|
176
|
+
matches: (e) => ue.test(e),
|
|
164
177
|
hint: "the renderer applies no stylesheet — use a :style binding instead"
|
|
165
178
|
}];
|
|
166
|
-
function
|
|
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
|
|
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
|
|
181
|
-
function
|
|
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:
|
|
201
|
+
customLogger: P(o, s),
|
|
189
202
|
define: { "process.env.NODE_ENV": JSON.stringify(n) },
|
|
190
203
|
plugins: [
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
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: () =>
|
|
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
|
|
216
|
-
let
|
|
217
|
-
if (await
|
|
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:
|
|
238
|
+
quiet: a,
|
|
226
239
|
onOutput: (e) => {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
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
|
-
}
|
|
234
|
-
|
|
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
|
|
239
|
-
function
|
|
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
|
|
244
|
-
let e =
|
|
382
|
+
function Ce() {
|
|
383
|
+
let e = z();
|
|
245
384
|
if (e) try {
|
|
246
|
-
return
|
|
385
|
+
return S(import.meta.url).resolve(`${e}/bin/inca-host`);
|
|
247
386
|
} catch {
|
|
248
387
|
return;
|
|
249
388
|
}
|
|
250
389
|
}
|
|
251
|
-
function
|
|
252
|
-
let e = process.env[
|
|
390
|
+
function B() {
|
|
391
|
+
let e = process.env[R];
|
|
253
392
|
if (e) return e;
|
|
254
|
-
let t =
|
|
393
|
+
let t = Ce();
|
|
255
394
|
if (t) return t;
|
|
256
|
-
let n =
|
|
257
|
-
throw new
|
|
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
|
|
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
|
|
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
|
|
412
|
+
var Te = (e) => {
|
|
274
413
|
process.stderr.write(e.endsWith("\n") ? e : `${e}\n`);
|
|
275
|
-
},
|
|
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 ??
|
|
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 ??
|
|
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
|
-
}),
|
|
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
|
|
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 (!
|
|
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
|
|
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 =
|
|
482
|
+
let t = C(e, "exit");
|
|
344
483
|
e.kill(), await t;
|
|
345
484
|
}
|
|
346
|
-
async call(e, t) {
|
|
347
|
-
let
|
|
348
|
-
if (!
|
|
349
|
-
let
|
|
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:
|
|
490
|
+
id: i,
|
|
352
491
|
method: e,
|
|
353
492
|
params: t
|
|
354
493
|
});
|
|
355
|
-
return new Promise((
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
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 =
|
|
369
|
-
this.call("shutdown").catch(() => {}), await Promise.race([n.then(() => "exited"),
|
|
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
|
-
},
|
|
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
|
|
377
|
-
let r = h(["bold", n],
|
|
378
|
-
return t.timestamp ? `${h("dim",
|
|
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
|
|
381
|
-
e.write(`${
|
|
535
|
+
function U(e, t, n = {}) {
|
|
536
|
+
e.write(`${H(e, n, "cyan")} ${t}\n`);
|
|
382
537
|
}
|
|
383
|
-
function
|
|
538
|
+
function W(e) {
|
|
384
539
|
let t = e.code;
|
|
385
540
|
return typeof t == "string" ? t : null;
|
|
386
541
|
}
|
|
387
|
-
function
|
|
542
|
+
function ke(e) {
|
|
388
543
|
return /\bERR_INCA_[A-Z0-9_]+/.exec(e)?.[0] ?? null;
|
|
389
544
|
}
|
|
390
|
-
function
|
|
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
|
|
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
|
|
409
|
-
return e instanceof
|
|
563
|
+
function G(e) {
|
|
564
|
+
return e instanceof V ? {
|
|
410
565
|
message: e.message,
|
|
411
566
|
stack: e.hostStack,
|
|
412
|
-
code:
|
|
567
|
+
code: W(e)
|
|
413
568
|
} : e instanceof Error ? {
|
|
414
569
|
message: e.message,
|
|
415
|
-
stack:
|
|
416
|
-
code:
|
|
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
|
|
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(`${
|
|
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
|
|
430
|
-
let { outDir:
|
|
431
|
-
...
|
|
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
|
|
446
|
-
|
|
599
|
+
return c.on("change", (e) => {
|
|
600
|
+
s ??= {
|
|
447
601
|
file: e,
|
|
448
602
|
at: Date.now()
|
|
449
603
|
};
|
|
450
|
-
}),
|
|
604
|
+
}), c.on("event", (e) => {
|
|
451
605
|
if (e.code !== "ERROR") return;
|
|
452
|
-
|
|
606
|
+
s = void 0;
|
|
453
607
|
let { errors: n } = e.error;
|
|
454
|
-
t(
|
|
455
|
-
}), { 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
|
|
460
|
-
watch:
|
|
461
|
-
build:
|
|
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
|
|
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
|
|
470
|
-
throw new
|
|
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
|
|
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
|
|
481
|
-
let t = e.cwd ?? process.cwd(), n = e.config ?? await
|
|
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
|
|
647
|
+
function Fe(e) {
|
|
493
648
|
return a.join(e, "node_modules/.inca/dev.pid");
|
|
494
649
|
}
|
|
495
|
-
function
|
|
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
|
|
503
|
-
let t =
|
|
504
|
-
if (Number.isInteger(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
|
|
664
|
+
function X(e) {
|
|
510
665
|
return e.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">");
|
|
511
666
|
}
|
|
512
|
-
function
|
|
513
|
-
return typeof e == "boolean" ? e ? "<true/>" : "<false/>" : `<string>${
|
|
667
|
+
function Re(e) {
|
|
668
|
+
return typeof e == "boolean" ? e ? "<true/>" : "<false/>" : `<string>${X(e)}</string>`;
|
|
514
669
|
}
|
|
515
|
-
function
|
|
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>${
|
|
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
|
|
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"),
|
|
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
|
|
560
|
-
async function
|
|
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
|
|
717
|
+
return await O(e);
|
|
563
718
|
} catch (e) {
|
|
564
|
-
if (!(e instanceof
|
|
565
|
-
|
|
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
|
|
724
|
+
async function Ue(e, t, n, r) {
|
|
570
725
|
if (process.platform === "darwin" && t) try {
|
|
571
|
-
return (await
|
|
726
|
+
return (await Z({
|
|
572
727
|
appPath: a.join(e, "node_modules/.inca", `${t.productName}.app`),
|
|
573
728
|
metadata: t,
|
|
574
|
-
hostBin: n ??
|
|
729
|
+
hostBin: n ?? B(),
|
|
575
730
|
link: !0
|
|
576
731
|
})).executablePath;
|
|
577
732
|
} catch (e) {
|
|
578
|
-
|
|
733
|
+
U(r, `running unbundled — ${G(e).message}`, Q);
|
|
579
734
|
return;
|
|
580
735
|
}
|
|
581
736
|
}
|
|
582
|
-
|
|
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
|
|
595
|
-
let t = e.cwd ?? process.cwd(), n = await
|
|
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 ??
|
|
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
|
|
767
|
+
return K(s, "reload failed", G(e), Q), !1;
|
|
605
768
|
}
|
|
606
769
|
}
|
|
607
|
-
async function b(e) {
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
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
|
-
|
|
803
|
+
U(o, `${h("green", "reload")} ${n} (${r}ms)`, Q);
|
|
637
804
|
}
|
|
638
805
|
}
|
|
639
|
-
let
|
|
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(() =>
|
|
832
|
+
g = g.then(() => x(e));
|
|
648
833
|
},
|
|
649
834
|
onError: (e) => {
|
|
650
|
-
|
|
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
|
|
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
|
|
845
|
+
function qe() {
|
|
661
846
|
if (process.platform === "darwin") return "macos";
|
|
662
847
|
if (process.platform === "linux") return "linux";
|
|
663
|
-
throw new
|
|
848
|
+
throw new w("ERR_INCA_PLATFORM_UNSUPPORTED", `inca package doesn't support ${process.platform} yet`);
|
|
664
849
|
}
|
|
665
|
-
async function
|
|
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
|
|
672
|
-
let { appPath: r, resourcesDir: i } = await
|
|
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
|
|
862
|
+
return await $(t, i), r;
|
|
678
863
|
}
|
|
679
|
-
async function
|
|
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
|
|
871
|
+
return await c(r, l), await s(l, 493), await $(n, o), o;
|
|
687
872
|
}
|
|
688
|
-
async function
|
|
689
|
-
let t = e.cwd ?? process.cwd(), n = e.stdout ?? process.stdout, r = e.target ??
|
|
690
|
-
i.usedPackageJsonKey &&
|
|
691
|
-
let a = await
|
|
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:
|
|
880
|
+
runtimeConfig: k(i),
|
|
696
881
|
bundler: e.bundler,
|
|
697
882
|
stdout: n,
|
|
698
883
|
stderr: e.stderr
|
|
699
|
-
}), s = e.hostBin ??
|
|
700
|
-
if (!o(s)) throw new
|
|
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
|
|
891
|
+
return { appPath: r === "macos" ? await Je(c) : await Ye(c) };
|
|
707
892
|
}
|
|
708
893
|
//#endregion
|
|
709
894
|
//#region src/cli.mts
|
|
710
|
-
var
|
|
711
|
-
function
|
|
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
|
|
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
|
|
719
|
-
|
|
903
|
+
let e = await Y();
|
|
904
|
+
U(process.stdout, `built ${Qe(e.entryFile)}`);
|
|
720
905
|
} catch (e) {
|
|
721
|
-
|
|
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
|
|
728
|
-
|
|
912
|
+
let { appPath: e } = await Xe();
|
|
913
|
+
U(process.stdout, `packaged ${Qe(e)}`);
|
|
729
914
|
} catch (e) {
|
|
730
|
-
|
|
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(`${
|
|
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 || (
|
|
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
|
|
934
|
+
await Ke({
|
|
935
|
+
signal: n.signal,
|
|
936
|
+
experimentalHmr: i
|
|
937
|
+
});
|
|
744
938
|
} catch (e) {
|
|
745
|
-
|
|
939
|
+
K(process.stderr, "dev failed", G(e), { timestamp: !0 }), process.exitCode = 1;
|
|
746
940
|
}
|
|
747
941
|
}
|
|
748
942
|
//#endregion
|
|
749
|
-
export {
|
|
943
|
+
export { $e as run };
|