@incajs/cli 0.0.3 → 0.0.5
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 +12 -6
- package/dist/adapter/types.d.mts +18 -27
- package/dist/adapter/vite/build.d.mts +1 -2
- package/dist/adapter/vite/captureOutput.d.mts +3 -0
- package/dist/adapter/vite/config.d.mts +3 -1
- package/dist/adapter/vite/emitConfig.d.mts +11 -0
- package/dist/adapter/vite/watch.d.mts +0 -1
- package/dist/build.d.mts +3 -1
- package/dist/chunks/{defaults-D_1rymg4.js → defaults-DNvHueCI.js} +10 -8
- package/dist/chunks/{dist-DZ5asakr.js → dist-BvTGFq3F.js} +1 -1
- package/dist/cli.js +372 -273
- package/dist/config/defaults.d.mts +2 -1
- package/dist/config/loader.d.mts +29 -0
- package/dist/config/types.d.mts +31 -0
- package/dist/config.js +1 -1
- package/dist/dev-client/hostClient.d.mts +8 -2
- package/dist/dev.d.mts +4 -1
- package/dist/index.d.mts +0 -1
- package/dist/macos-app.d.mts +47 -0
- package/package.json +5 -5
package/dist/cli.js
CHANGED
|
@@ -1,79 +1,115 @@
|
|
|
1
|
-
import { i as e, n as t, o as n, r, t as i } from "./chunks/defaults-
|
|
1
|
+
import { i as e, n as t, o as n, r, t as i } from "./chunks/defaults-DNvHueCI.js";
|
|
2
2
|
import a from "node:path";
|
|
3
3
|
import { existsSync as o } from "node:fs";
|
|
4
|
-
import { chmod as s, cp as c,
|
|
5
|
-
import { styleText as
|
|
6
|
-
import { build as
|
|
7
|
-
import
|
|
8
|
-
import { createRequire as
|
|
9
|
-
import { spawn as
|
|
10
|
-
import { once as
|
|
11
|
-
import
|
|
12
|
-
import { setTimeout as
|
|
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
|
+
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 S } from "node:timers/promises";
|
|
13
13
|
//#region src/error.mts
|
|
14
|
-
var
|
|
14
|
+
var C = class extends Error {
|
|
15
15
|
code;
|
|
16
16
|
name = "IncaError";
|
|
17
17
|
constructor(e, t) {
|
|
18
18
|
super(t), this.code = e;
|
|
19
19
|
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
}, ee = {
|
|
21
|
+
name: "inca",
|
|
22
|
+
packageJson: "inca",
|
|
23
|
+
rcFile: !1,
|
|
24
|
+
globalRc: !1,
|
|
25
|
+
giget: !1,
|
|
26
|
+
extend: !1
|
|
27
|
+
}, te = /[/\\:*?"<>|\0]/;
|
|
28
|
+
function ne(e) {
|
|
29
|
+
return e === e.trim() && e !== "" && e !== "." && e !== ".." && !te.test(e);
|
|
30
|
+
}
|
|
31
|
+
function w(e) {
|
|
32
|
+
if (!(typeof e == "string" && ne(e))) throw new C("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
|
+
async function T(e) {
|
|
35
|
+
let { config: t, layers: r } = await n({
|
|
25
36
|
cwd: e,
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
37
|
+
...ee
|
|
38
|
+
}), i = r?.find((e) => e.configFile === "package.json");
|
|
39
|
+
return {
|
|
40
|
+
config: t,
|
|
41
|
+
usedPackageJsonKey: Object.keys(i?.config ?? {}).length > 0
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
async function E(e) {
|
|
45
|
+
let { config: t } = await T(e);
|
|
33
46
|
return {
|
|
34
47
|
entry: t.entry ? a.resolve(e, t.entry) : void 0,
|
|
35
48
|
outDir: a.resolve(e, t.outDir ?? i.outDir)
|
|
36
49
|
};
|
|
37
50
|
}
|
|
38
|
-
async function
|
|
39
|
-
let
|
|
51
|
+
async function D(e) {
|
|
52
|
+
let n = a.join(e, "package.json"), s;
|
|
40
53
|
try {
|
|
41
|
-
|
|
54
|
+
s = await d(n, "utf8");
|
|
42
55
|
} catch {
|
|
43
|
-
throw new
|
|
56
|
+
throw new C("ERR_INCA_PACKAGE_JSON_NOT_FOUND", `no package.json found at ${n}`);
|
|
44
57
|
}
|
|
45
|
-
let
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
giget: !1,
|
|
52
|
-
extend: !1
|
|
53
|
-
}), p = f?.find((e) => e.configFile === "package.json"), m = Object.keys(p?.config ?? {}).length > 0, h = d.productName ?? r(l.name);
|
|
54
|
-
if (!h) throw new S("ERR_INCA_PRODUCT_NAME_MISSING", `${s} needs a "name", or "productName" in inca.config.ts`);
|
|
55
|
-
let g = d.version ?? l.version ?? i.version, _ = d.identifier ?? t(h), v;
|
|
56
|
-
if (d.icon && (v = a.resolve(e, d.icon), !o(v))) throw new S("ERR_INCA_ICON_NOT_FOUND", `"icon" points to ${v}, which doesn't exist`);
|
|
57
|
-
let y = d.entry ? a.resolve(e, d.entry) : void 0, b = a.resolve(e, d.outDir ?? i.outDir);
|
|
58
|
+
let c = JSON.parse(s), { config: l, usedPackageJsonKey: u } = await T(e), f = l.productName ?? r(c.name);
|
|
59
|
+
if (!f) throw new C("ERR_INCA_PRODUCT_NAME_MISSING", `${n} needs a "name", or "productName" in inca.config.ts`);
|
|
60
|
+
w(f);
|
|
61
|
+
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 C("ERR_INCA_ICON_NOT_FOUND", `"icon" points to ${h}, which doesn't exist`);
|
|
63
|
+
let g = l.entry ? a.resolve(e, l.entry) : void 0, _ = a.resolve(e, l.outDir ?? i.outDir);
|
|
58
64
|
return {
|
|
59
|
-
productName:
|
|
60
|
-
identifier:
|
|
61
|
-
identifierIsDefault:
|
|
62
|
-
version:
|
|
63
|
-
icon:
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
productName: f,
|
|
66
|
+
identifier: m,
|
|
67
|
+
identifierIsDefault: l.identifier === void 0,
|
|
68
|
+
version: p,
|
|
69
|
+
icon: h,
|
|
70
|
+
window: l.window,
|
|
71
|
+
entry: g,
|
|
72
|
+
outDir: _,
|
|
73
|
+
usedPackageJsonKey: u
|
|
67
74
|
};
|
|
68
75
|
}
|
|
76
|
+
function O(e) {
|
|
77
|
+
return {
|
|
78
|
+
name: e.productName,
|
|
79
|
+
identifier: e.identifier,
|
|
80
|
+
window: e.window
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
async function k(e) {
|
|
84
|
+
let { config: n } = await T(e), i = {};
|
|
85
|
+
try {
|
|
86
|
+
i = JSON.parse(await d(a.join(e, "package.json"), "utf8"));
|
|
87
|
+
} catch {}
|
|
88
|
+
let o = n.productName ?? r(i.name);
|
|
89
|
+
o && w(o);
|
|
90
|
+
let s = {
|
|
91
|
+
name: o,
|
|
92
|
+
identifier: n.identifier ?? (o ? t(o) : void 0),
|
|
93
|
+
window: n.window
|
|
94
|
+
};
|
|
95
|
+
return Object.values(s).some((e) => e !== void 0) ? s : void 0;
|
|
96
|
+
}
|
|
69
97
|
//#endregion
|
|
70
98
|
//#region src/adapter/vite/captureOutput.mts
|
|
71
|
-
function
|
|
99
|
+
function A(e, t, n) {
|
|
100
|
+
return {
|
|
101
|
+
outDir: e,
|
|
102
|
+
entryFile: a.join(e, t.entryFile),
|
|
103
|
+
files: t.files,
|
|
104
|
+
changed: n
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
function re(e) {
|
|
72
108
|
return {
|
|
73
109
|
name: "inca:capture-output",
|
|
74
110
|
writeBundle(t, n) {
|
|
75
111
|
let r = Object.keys(n), i = Object.values(n).find((e) => e.type === "chunk" && e.isEntry);
|
|
76
|
-
if (!i) throw new
|
|
112
|
+
if (!i) throw new C("ERR_INCA_BUILD_NO_ENTRY_CHUNK", "build produced no entry chunk");
|
|
77
113
|
e({
|
|
78
114
|
entryFile: i.fileName,
|
|
79
115
|
files: r
|
|
@@ -82,9 +118,25 @@ function te(e) {
|
|
|
82
118
|
};
|
|
83
119
|
}
|
|
84
120
|
//#endregion
|
|
121
|
+
//#region src/adapter/vite/emitConfig.mts
|
|
122
|
+
var ie = "inca.json";
|
|
123
|
+
function ae(e) {
|
|
124
|
+
let t = JSON.stringify(e, void 0, 2), n = t === void 0 || t === "{}";
|
|
125
|
+
return {
|
|
126
|
+
name: "inca:emit-config",
|
|
127
|
+
generateBundle() {
|
|
128
|
+
n || this.emitFile({
|
|
129
|
+
type: "asset",
|
|
130
|
+
fileName: ie,
|
|
131
|
+
source: `${t}\n`
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
//#endregion
|
|
85
137
|
//#region src/adapter/vite/logger.mts
|
|
86
|
-
var
|
|
87
|
-
function
|
|
138
|
+
var oe = "Build failed with ";
|
|
139
|
+
function se(e, t) {
|
|
88
140
|
let n = /* @__PURE__ */ new WeakSet(), r = /* @__PURE__ */ new Set(), i = {
|
|
89
141
|
hasWarned: !1,
|
|
90
142
|
info(t) {
|
|
@@ -97,7 +149,7 @@ function re(e, t) {
|
|
|
97
149
|
r.has(e) || (r.add(e), i.warn(e));
|
|
98
150
|
},
|
|
99
151
|
error(e, r) {
|
|
100
|
-
i.hasWarned = !0, r?.error && n.add(r.error), !e.includes(
|
|
152
|
+
i.hasWarned = !0, r?.error && n.add(r.error), !e.includes(oe) && t.write(`${e.replace(/\n\s+at .*/g, "")}\n`);
|
|
101
153
|
},
|
|
102
154
|
clearScreen() {},
|
|
103
155
|
hasErrorLogged(e) {
|
|
@@ -108,7 +160,7 @@ function re(e, t) {
|
|
|
108
160
|
}
|
|
109
161
|
//#endregion
|
|
110
162
|
//#region src/adapter/vite/unsupported.mts
|
|
111
|
-
var
|
|
163
|
+
var ce = /\.(?:css|pcss|postcss|sass|scss|less|styl|stylus)(?:\?|$)/, le = [{
|
|
112
164
|
code: "ERR_INCA_UNSUPPORTED_STYLE",
|
|
113
165
|
name: "a <style> block",
|
|
114
166
|
matches: (e) => e.includes("vue&type=style"),
|
|
@@ -116,10 +168,10 @@ var w = /\.(?:css|pcss|postcss|sass|scss|less|styl|stylus)(?:\?|$)/, T = [{
|
|
|
116
168
|
}, {
|
|
117
169
|
code: "ERR_INCA_UNSUPPORTED_STYLESHEET",
|
|
118
170
|
name: "a stylesheet import",
|
|
119
|
-
matches: (e) =>
|
|
171
|
+
matches: (e) => ce.test(e),
|
|
120
172
|
hint: "the renderer applies no stylesheet — use a :style binding instead"
|
|
121
173
|
}];
|
|
122
|
-
function
|
|
174
|
+
function ue(e = le) {
|
|
123
175
|
return {
|
|
124
176
|
name: "inca:reject-unsupported",
|
|
125
177
|
enforce: "pre",
|
|
@@ -127,32 +179,33 @@ function E(e = T) {
|
|
|
127
179
|
let r = e.find((e) => e.matches(n));
|
|
128
180
|
if (!r) return null;
|
|
129
181
|
let i = a.relative(process.cwd(), n.split("?")[0] ?? n);
|
|
130
|
-
throw new
|
|
182
|
+
throw new C(r.code, `${r.code}: ${i} uses ${r.name}, unsupported for now: ${r.hint}`);
|
|
131
183
|
}
|
|
132
184
|
};
|
|
133
185
|
}
|
|
134
186
|
//#endregion
|
|
135
187
|
//#region src/adapter/vite/config.mts
|
|
136
|
-
var
|
|
137
|
-
function
|
|
188
|
+
var de = "bundle.js";
|
|
189
|
+
function j({ entry: e, outDir: t, mode: n, watch: r, onOutput: i, stdout: o, stderr: s, quiet: c, runtimeConfig: l }) {
|
|
138
190
|
return {
|
|
139
191
|
configFile: !1,
|
|
140
192
|
root: a.dirname(e),
|
|
141
193
|
mode: n,
|
|
142
194
|
clearScreen: !1,
|
|
143
195
|
logLevel: c ? "silent" : "info",
|
|
144
|
-
customLogger:
|
|
196
|
+
customLogger: se(o, s),
|
|
145
197
|
define: { "process.env.NODE_ENV": JSON.stringify(n) },
|
|
146
198
|
plugins: [
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
199
|
+
_({ template: { compilerOptions: { runtimeModuleName: "@vue/runtime-core" } } }),
|
|
200
|
+
ue(),
|
|
201
|
+
ae(l),
|
|
202
|
+
re(i)
|
|
150
203
|
],
|
|
151
204
|
build: {
|
|
152
205
|
lib: {
|
|
153
206
|
entry: e,
|
|
154
207
|
formats: ["es"],
|
|
155
|
-
fileName: () =>
|
|
208
|
+
fileName: () => de
|
|
156
209
|
},
|
|
157
210
|
outDir: t,
|
|
158
211
|
emptyOutDir: n === "production",
|
|
@@ -167,66 +220,63 @@ function O({ entry: e, outDir: t, mode: n, watch: r, onOutput: i, stdout: o, std
|
|
|
167
220
|
}
|
|
168
221
|
//#endregion
|
|
169
222
|
//#region src/adapter/vite/build.mts
|
|
170
|
-
async function
|
|
223
|
+
async function fe({ entry: e, outDir: t, runtimeConfig: n, stdout: r = process.stdout, stderr: i = process.stderr, quiet: a = !1 }) {
|
|
171
224
|
let o;
|
|
172
|
-
if (await
|
|
225
|
+
if (await g(j({
|
|
173
226
|
entry: e,
|
|
174
227
|
outDir: t,
|
|
228
|
+
runtimeConfig: n,
|
|
175
229
|
mode: "production",
|
|
176
230
|
watch: !1,
|
|
177
|
-
stdout:
|
|
178
|
-
stderr:
|
|
179
|
-
quiet:
|
|
231
|
+
stdout: r,
|
|
232
|
+
stderr: i,
|
|
233
|
+
quiet: a,
|
|
180
234
|
onOutput: (e) => {
|
|
181
|
-
o =
|
|
182
|
-
outDir: t,
|
|
183
|
-
entryFile: a.join(t, e.entryFile),
|
|
184
|
-
files: e.files
|
|
185
|
-
};
|
|
235
|
+
o = A(t, e);
|
|
186
236
|
}
|
|
187
|
-
})), !o) throw new
|
|
237
|
+
})), !o) throw new C("ERR_INCA_BUILD_NO_OUTPUT", "build produced no output");
|
|
188
238
|
return o;
|
|
189
239
|
}
|
|
190
240
|
//#endregion
|
|
191
241
|
//#region src/dev-client/hostBin.mts
|
|
192
|
-
var
|
|
193
|
-
function
|
|
242
|
+
var M = "INCA_HOST_BIN";
|
|
243
|
+
function N() {
|
|
194
244
|
let e = process.platform === "darwin" || process.platform === "linux" ? process.platform : void 0, t = process.arch === "arm64" || process.arch === "x64" ? process.arch : void 0;
|
|
195
245
|
return e && t ? `@incajs/host-${e}-${t}` : void 0;
|
|
196
246
|
}
|
|
197
|
-
function
|
|
198
|
-
let e =
|
|
247
|
+
function pe() {
|
|
248
|
+
let e = N();
|
|
199
249
|
if (e) try {
|
|
200
|
-
return
|
|
250
|
+
return v(import.meta.url).resolve(`${e}/bin/inca-host`);
|
|
201
251
|
} catch {
|
|
202
252
|
return;
|
|
203
253
|
}
|
|
204
254
|
}
|
|
205
|
-
function
|
|
206
|
-
let e = process.env[
|
|
255
|
+
function P() {
|
|
256
|
+
let e = process.env[M];
|
|
207
257
|
if (e) return e;
|
|
208
|
-
let t =
|
|
258
|
+
let t = pe();
|
|
209
259
|
if (t) return t;
|
|
210
|
-
let n =
|
|
211
|
-
throw new
|
|
260
|
+
let n = N();
|
|
261
|
+
throw new C("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 ${M} isn't set to one`);
|
|
212
262
|
}
|
|
213
263
|
//#endregion
|
|
214
264
|
//#region src/dev-client/hostError.mts
|
|
215
|
-
var
|
|
265
|
+
var F = class extends Error {
|
|
216
266
|
code;
|
|
217
267
|
hostStack;
|
|
218
268
|
constructor(e, t, n = null) {
|
|
219
269
|
super(e), this.code = t, this.hostStack = n, this.name = "HostError";
|
|
220
270
|
}
|
|
221
271
|
};
|
|
222
|
-
function
|
|
272
|
+
function me(e) {
|
|
223
273
|
return typeof e == "object" && !!e && e.jsonrpc === "2.0";
|
|
224
274
|
}
|
|
225
275
|
//#endregion
|
|
226
276
|
//#region src/dev-client/hostClient.mts
|
|
227
|
-
var
|
|
277
|
+
var I = (e) => {
|
|
228
278
|
process.stderr.write(e.endsWith("\n") ? e : `${e}\n`);
|
|
229
|
-
},
|
|
279
|
+
}, L = class {
|
|
230
280
|
#e;
|
|
231
281
|
#t;
|
|
232
282
|
#n = 1;
|
|
@@ -236,22 +286,22 @@ var ae = (e) => {
|
|
|
236
286
|
this.#e = e;
|
|
237
287
|
}
|
|
238
288
|
async start() {
|
|
239
|
-
let e = this.#e.hostBin ??
|
|
289
|
+
let e = this.#e.hostBin ?? P(), t = y(e, ["--dev", this.#e.entryFile], { stdio: [
|
|
240
290
|
"pipe",
|
|
241
291
|
"pipe",
|
|
242
292
|
"pipe"
|
|
243
293
|
] });
|
|
244
294
|
this.#t = t;
|
|
245
|
-
let n = this.#e.onStderr ??
|
|
295
|
+
let n = this.#e.onStderr ?? I;
|
|
246
296
|
t.stderr.setEncoding("utf8"), t.stderr.on("data", (e) => n(e)), t.stdin.on("error", (e) => {
|
|
247
297
|
e.code !== "EPIPE" && n(`inca-host stdin: ${e.message}\n`);
|
|
248
|
-
}),
|
|
298
|
+
}), x.createInterface({ input: t.stdout }).on("line", (e) => {
|
|
249
299
|
this.#a(e, n);
|
|
250
300
|
}), t.on("exit", (e, t) => {
|
|
251
301
|
let n = /* @__PURE__ */ Error(`inca-host exited (code=${String(e)}, signal=${String(t)}) before answering`);
|
|
252
302
|
for (let { reject: e } of this.#r.values()) e(n);
|
|
253
303
|
this.#r.clear(), this.#i || this.#e.onExit?.(e, t);
|
|
254
|
-
}), await
|
|
304
|
+
}), await b(t, "spawn");
|
|
255
305
|
}
|
|
256
306
|
#a(e, t) {
|
|
257
307
|
let n;
|
|
@@ -261,7 +311,7 @@ var ae = (e) => {
|
|
|
261
311
|
t(`[stray stdout] ${e}`);
|
|
262
312
|
return;
|
|
263
313
|
}
|
|
264
|
-
if (!
|
|
314
|
+
if (!me(n)) {
|
|
265
315
|
t(`[stray stdout] ${e}`);
|
|
266
316
|
return;
|
|
267
317
|
}
|
|
@@ -270,7 +320,7 @@ var ae = (e) => {
|
|
|
270
320
|
return;
|
|
271
321
|
}
|
|
272
322
|
let r = this.#r.get(n.id);
|
|
273
|
-
r && (this.#r.delete(n.id), "error" in n ? r.reject(new
|
|
323
|
+
r && (this.#r.delete(n.id), "error" in n ? r.reject(new F(n.error.message, n.error.code, n.error.data?.stack ?? null)) : r.resolve(n.result));
|
|
274
324
|
}
|
|
275
325
|
#o(e, t, n) {
|
|
276
326
|
switch (e) {
|
|
@@ -294,24 +344,31 @@ var ae = (e) => {
|
|
|
294
344
|
}
|
|
295
345
|
async #s(e) {
|
|
296
346
|
this.#i = !0;
|
|
297
|
-
let t =
|
|
347
|
+
let t = b(e, "exit");
|
|
298
348
|
e.kill(), await t;
|
|
299
349
|
}
|
|
300
|
-
async call(e, t) {
|
|
301
|
-
let
|
|
302
|
-
if (!
|
|
303
|
-
let
|
|
350
|
+
async call(e, t, n) {
|
|
351
|
+
let r = this.#t;
|
|
352
|
+
if (!r) throw Error("HostClient.start() has not been called");
|
|
353
|
+
let i = this.#n++, a = JSON.stringify({
|
|
304
354
|
jsonrpc: "2.0",
|
|
305
|
-
id:
|
|
355
|
+
id: i,
|
|
306
356
|
method: e,
|
|
307
357
|
params: t
|
|
308
358
|
});
|
|
309
|
-
return new Promise((
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
359
|
+
return new Promise((t, o) => {
|
|
360
|
+
let s = n === void 0 ? void 0 : setTimeout(() => {
|
|
361
|
+
this.#r.delete(i), o(/* @__PURE__ */ Error(`${e} timed out after ${String(n)}ms`));
|
|
362
|
+
}, n);
|
|
363
|
+
this.#r.set(i, {
|
|
364
|
+
resolve: (e) => {
|
|
365
|
+
clearTimeout(s), t(e);
|
|
366
|
+
},
|
|
367
|
+
reject: (e) => {
|
|
368
|
+
clearTimeout(s), o(e);
|
|
369
|
+
}
|
|
370
|
+
}), r.stdin.write(`${a}\n`, (e) => {
|
|
371
|
+
e && (clearTimeout(s), this.#r.delete(i), o(e));
|
|
315
372
|
});
|
|
316
373
|
});
|
|
317
374
|
}
|
|
@@ -319,35 +376,35 @@ var ae = (e) => {
|
|
|
319
376
|
let t = this.#t;
|
|
320
377
|
if (!t || t.exitCode !== null || t.signalCode !== null) return;
|
|
321
378
|
this.#i = !0;
|
|
322
|
-
let n =
|
|
323
|
-
this.call("shutdown").catch(() => {}), await Promise.race([n.then(() => "exited"),
|
|
379
|
+
let n = b(t, "exit");
|
|
380
|
+
this.call("shutdown").catch(() => {}), await Promise.race([n.then(() => "exited"), S(e).then(() => "timeout")]) === "timeout" && (t.kill(), await n);
|
|
324
381
|
}
|
|
325
|
-
},
|
|
382
|
+
}, R = "[inca]", z = new Intl.DateTimeFormat(void 0, {
|
|
326
383
|
hour: "numeric",
|
|
327
384
|
minute: "numeric",
|
|
328
385
|
second: "numeric"
|
|
329
386
|
});
|
|
330
|
-
function
|
|
331
|
-
let r =
|
|
332
|
-
return t.timestamp ? `${
|
|
387
|
+
function B(e, t, n) {
|
|
388
|
+
let r = h(["bold", n], R, { stream: e });
|
|
389
|
+
return t.timestamp ? `${h("dim", z.format(/* @__PURE__ */ new Date()), { stream: e })} ${r}` : r;
|
|
333
390
|
}
|
|
334
|
-
function
|
|
335
|
-
e.write(`${
|
|
391
|
+
function V(e, t, n = {}) {
|
|
392
|
+
e.write(`${B(e, n, "cyan")} ${t}\n`);
|
|
336
393
|
}
|
|
337
|
-
function
|
|
394
|
+
function H(e) {
|
|
338
395
|
let t = e.code;
|
|
339
396
|
return typeof t == "string" ? t : null;
|
|
340
397
|
}
|
|
341
|
-
function
|
|
398
|
+
function he(e) {
|
|
342
399
|
return /\bERR_INCA_[A-Z0-9_]+/.exec(e)?.[0] ?? null;
|
|
343
400
|
}
|
|
344
|
-
function
|
|
401
|
+
function ge(e) {
|
|
345
402
|
let t = e.stack;
|
|
346
403
|
if (!t) return null;
|
|
347
404
|
for (let n of [`${e.name}: ${e.message}`, e.message]) if (t.startsWith(n)) return t.slice(n.length).replace(/^\r?\n/, "") || null;
|
|
348
405
|
return t;
|
|
349
406
|
}
|
|
350
|
-
function
|
|
407
|
+
function _e(e) {
|
|
351
408
|
let t = /^(?:\w*Error: )?(ERR_INCA_[A-Z0-9_]+): /.exec(e);
|
|
352
409
|
return t ? {
|
|
353
410
|
message: e.slice(t[0].length),
|
|
@@ -360,14 +417,14 @@ function H(e) {
|
|
|
360
417
|
};
|
|
361
418
|
}
|
|
362
419
|
function U(e) {
|
|
363
|
-
return e instanceof
|
|
420
|
+
return e instanceof F ? {
|
|
364
421
|
message: e.message,
|
|
365
422
|
stack: e.hostStack,
|
|
366
|
-
code:
|
|
423
|
+
code: H(e)
|
|
367
424
|
} : e instanceof Error ? {
|
|
368
425
|
message: e.message,
|
|
369
|
-
stack:
|
|
370
|
-
code:
|
|
426
|
+
stack: ge(e),
|
|
427
|
+
code: H(e) ?? he(e.message)
|
|
371
428
|
} : {
|
|
372
429
|
message: String(e),
|
|
373
430
|
stack: null,
|
|
@@ -375,258 +432,300 @@ function U(e) {
|
|
|
375
432
|
};
|
|
376
433
|
}
|
|
377
434
|
function W(e, t, n, r = {}) {
|
|
378
|
-
let i = n.code ? ` (${
|
|
379
|
-
e.write(`${
|
|
435
|
+
let i = n.code ? ` (${h("bold", n.code, { stream: e })})` : "";
|
|
436
|
+
e.write(`${B(e, r, "red")} ${t}${i}: ${n.message}\n`), n.stack && e.write(`${n.stack}\n`);
|
|
380
437
|
}
|
|
381
438
|
//#endregion
|
|
382
439
|
//#region src/adapter/vite/watch.mts
|
|
383
|
-
async function
|
|
384
|
-
let { outDir:
|
|
385
|
-
...
|
|
440
|
+
async function ve({ onBuild: e, onError: t, stdout: n = process.stdout, stderr: r = process.stderr, quiet: i = !1, ...a }) {
|
|
441
|
+
let { outDir: o } = a, s, c = await g(j({
|
|
442
|
+
...a,
|
|
386
443
|
watch: !0,
|
|
387
444
|
stdout: n,
|
|
388
445
|
stderr: r,
|
|
389
446
|
quiet: i,
|
|
390
447
|
onOutput: (t) => {
|
|
391
|
-
e(
|
|
392
|
-
outDir: s,
|
|
393
|
-
entryFile: a.join(s, t.entryFile),
|
|
394
|
-
files: t.files,
|
|
395
|
-
changed: c
|
|
396
|
-
}), c = void 0;
|
|
448
|
+
e(A(o, t, s)), s = void 0;
|
|
397
449
|
}
|
|
398
450
|
}));
|
|
399
|
-
return
|
|
400
|
-
|
|
451
|
+
return c.on("change", (e) => {
|
|
452
|
+
s ??= {
|
|
401
453
|
file: e,
|
|
402
454
|
at: Date.now()
|
|
403
455
|
};
|
|
404
|
-
}),
|
|
456
|
+
}), c.on("event", (e) => {
|
|
405
457
|
if (e.code !== "ERROR") return;
|
|
406
|
-
|
|
458
|
+
s = void 0;
|
|
407
459
|
let { errors: n } = e.error;
|
|
408
|
-
t(
|
|
409
|
-
}), { close: () =>
|
|
460
|
+
t(_e(n?.[0]?.message ?? e.error.message));
|
|
461
|
+
}), { close: () => c.close() };
|
|
410
462
|
}
|
|
411
463
|
//#endregion
|
|
412
464
|
//#region src/defaultBundler.mts
|
|
413
|
-
var
|
|
414
|
-
watch:
|
|
415
|
-
build:
|
|
465
|
+
var G = {
|
|
466
|
+
watch: ve,
|
|
467
|
+
build: fe
|
|
416
468
|
};
|
|
417
469
|
//#endregion
|
|
418
470
|
//#region src/entry.mts
|
|
419
|
-
async function
|
|
471
|
+
async function K(e) {
|
|
420
472
|
let t = a.join(e, "src/main.mts");
|
|
421
473
|
if (o(t)) return t;
|
|
422
474
|
let n = a.join(e, "src/App.vue");
|
|
423
|
-
if (o(n)) return
|
|
424
|
-
throw new
|
|
475
|
+
if (o(n)) return ye(n, e);
|
|
476
|
+
throw new C("ERR_INCA_ENTRY_NOT_FOUND", `no app entry found — expected ${t} or ${n}`);
|
|
425
477
|
}
|
|
426
|
-
async function
|
|
478
|
+
async function ye(e, t) {
|
|
427
479
|
let n = a.join(t, "node_modules/.inca");
|
|
428
|
-
await
|
|
480
|
+
await u(n, { recursive: !0 });
|
|
429
481
|
let r = a.join(n, "entry.mts"), i = JSON.stringify(e.split(a.sep).join("/"));
|
|
430
|
-
return await
|
|
482
|
+
return await m(r, `import { createIncaApp } from "incajs/vue";\nimport App from ${i};\ncreateIncaApp(App).mount();\n`), r;
|
|
431
483
|
}
|
|
432
484
|
//#endregion
|
|
433
485
|
//#region src/build.mts
|
|
434
|
-
async function
|
|
435
|
-
let t = e.cwd ?? process.cwd(), n = e.config ?? await
|
|
486
|
+
async function q(e = {}) {
|
|
487
|
+
let t = e.cwd ?? process.cwd(), n = e.config ?? await E(t), r = n.outDir, i = e.bundler ?? G, a = e.entry ?? n.entry ?? await K(t), o = e.runtimeConfig ?? await k(t);
|
|
436
488
|
return i.build({
|
|
437
489
|
entry: a,
|
|
438
490
|
outDir: r,
|
|
491
|
+
runtimeConfig: o,
|
|
439
492
|
stdout: e.stdout,
|
|
440
493
|
stderr: e.stderr
|
|
441
494
|
});
|
|
442
495
|
}
|
|
443
496
|
//#endregion
|
|
444
497
|
//#region src/dev-lock.mts
|
|
445
|
-
function
|
|
498
|
+
function be(e) {
|
|
446
499
|
return a.join(e, "node_modules/.inca/dev.pid");
|
|
447
500
|
}
|
|
448
|
-
function
|
|
501
|
+
function xe(e) {
|
|
449
502
|
try {
|
|
450
503
|
return process.kill(e, 0), !0;
|
|
451
504
|
} catch (e) {
|
|
452
505
|
return e.code === "EPERM";
|
|
453
506
|
}
|
|
454
507
|
}
|
|
455
|
-
async function
|
|
456
|
-
let t =
|
|
457
|
-
if (Number.isInteger(n) &&
|
|
458
|
-
return await
|
|
508
|
+
async function Se(e) {
|
|
509
|
+
let t = be(e), n = Number.parseInt(await d(t, "utf8").catch(() => ""), 10);
|
|
510
|
+
if (Number.isInteger(n) && xe(n)) throw new C("ERR_INCA_DEV_RUNNING", `inca dev is already running for this app (pid ${String(n)})`);
|
|
511
|
+
return await u(a.dirname(t), { recursive: !0 }), await m(t, String(process.pid)), () => p(t, { force: !0 });
|
|
512
|
+
}
|
|
513
|
+
//#endregion
|
|
514
|
+
//#region src/plist.mts
|
|
515
|
+
function J(e) {
|
|
516
|
+
return e.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">");
|
|
517
|
+
}
|
|
518
|
+
function Ce(e) {
|
|
519
|
+
return typeof e == "boolean" ? e ? "<true/>" : "<false/>" : `<string>${J(e)}</string>`;
|
|
520
|
+
}
|
|
521
|
+
function we(e) {
|
|
522
|
+
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
523
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
524
|
+
<plist version="1.0">
|
|
525
|
+
<dict>
|
|
526
|
+
${Object.entries(e).map(([e, t]) => `\t<key>${J(e)}</key>\n\t${Ce(t)}`).join("\n")}\n</dict>
|
|
527
|
+
</plist>
|
|
528
|
+
`;
|
|
529
|
+
}
|
|
530
|
+
//#endregion
|
|
531
|
+
//#region src/macos-app.mts
|
|
532
|
+
async function Y(e) {
|
|
533
|
+
let { appPath: t, metadata: n, hostBin: r } = e;
|
|
534
|
+
await p(t, {
|
|
535
|
+
recursive: !0,
|
|
536
|
+
force: !0
|
|
537
|
+
});
|
|
538
|
+
let i = a.join(t, "Contents"), o = a.join(i, "MacOS"), d = a.join(i, "Resources");
|
|
539
|
+
await u(o, { recursive: !0 }), await u(d, { recursive: !0 });
|
|
540
|
+
let f = a.join(o, n.productName);
|
|
541
|
+
e.link ? await l(r, f).catch(() => c(r, f)) : await c(r, f), await s(f, 493);
|
|
542
|
+
let h = {
|
|
543
|
+
CFBundleName: n.productName,
|
|
544
|
+
CFBundleDisplayName: n.productName,
|
|
545
|
+
CFBundleExecutable: n.productName,
|
|
546
|
+
CFBundleIdentifier: n.identifier,
|
|
547
|
+
CFBundleVersion: n.version,
|
|
548
|
+
CFBundleShortVersionString: n.version,
|
|
549
|
+
CFBundlePackageType: "APPL",
|
|
550
|
+
CFBundleInfoDictionaryVersion: "6.0",
|
|
551
|
+
NSHighResolutionCapable: !0
|
|
552
|
+
};
|
|
553
|
+
if (n.icon) {
|
|
554
|
+
let e = a.basename(n.icon);
|
|
555
|
+
await c(n.icon, a.join(d, e)), h.CFBundleIconFile = e;
|
|
556
|
+
}
|
|
557
|
+
return await m(a.join(i, "Info.plist"), we(h)), await m(a.join(i, "PkgInfo"), "APPL????"), {
|
|
558
|
+
appPath: t,
|
|
559
|
+
executablePath: f,
|
|
560
|
+
resourcesDir: d
|
|
561
|
+
};
|
|
459
562
|
}
|
|
460
563
|
//#endregion
|
|
461
564
|
//#region src/dev.mts
|
|
462
|
-
var
|
|
463
|
-
async function
|
|
565
|
+
var X = { timestamp: !0 }, Te = 1e4, Ee = ["ERR_INCA_PACKAGE_JSON_NOT_FOUND", "ERR_INCA_PRODUCT_NAME_MISSING"];
|
|
566
|
+
async function De(e, t) {
|
|
567
|
+
try {
|
|
568
|
+
return await D(e);
|
|
569
|
+
} catch (e) {
|
|
570
|
+
if (!(e instanceof C) || !Ee.includes(e.code)) throw e;
|
|
571
|
+
V(t, `running unnamed — ${e.message}`, X);
|
|
572
|
+
return;
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
async function Oe(e, t, n, r) {
|
|
576
|
+
if (process.platform === "darwin" && t) try {
|
|
577
|
+
return (await Y({
|
|
578
|
+
appPath: a.join(e, "node_modules/.inca", `${t.productName}.app`),
|
|
579
|
+
metadata: t,
|
|
580
|
+
hostBin: n ?? P(),
|
|
581
|
+
link: !0
|
|
582
|
+
})).executablePath;
|
|
583
|
+
} catch (e) {
|
|
584
|
+
V(r, `running unbundled — ${U(e).message}`, X);
|
|
585
|
+
return;
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
async function ke(e, t) {
|
|
464
589
|
let n = new Set(t), r;
|
|
465
590
|
try {
|
|
466
|
-
r = await
|
|
591
|
+
r = await f(e, {
|
|
467
592
|
recursive: !0,
|
|
468
593
|
withFileTypes: !0
|
|
469
594
|
});
|
|
470
595
|
} catch {
|
|
471
596
|
return;
|
|
472
597
|
}
|
|
473
|
-
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) =>
|
|
598
|
+
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 })));
|
|
474
599
|
}
|
|
475
|
-
async function
|
|
476
|
-
let t = e.cwd ?? process.cwd(), n = await
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
600
|
+
async function Z(e) {
|
|
601
|
+
let t = e.cwd ?? process.cwd(), n = await E(t), r = await Se(t);
|
|
602
|
+
try {
|
|
603
|
+
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 De(t, o), u = l ? O(l) : await k(t), d = await Oe(t, l, e.hostBin, o) ?? e.hostBin, f, p = !1, m = !1, g = Promise.resolve(), _ = () => {}, v = new Promise((e) => {
|
|
604
|
+
_ = e;
|
|
605
|
+
});
|
|
606
|
+
async function y() {
|
|
607
|
+
try {
|
|
608
|
+
return await f?.call("reload", void 0, Te), !0;
|
|
609
|
+
} catch (e) {
|
|
610
|
+
return W(s, "reload failed", U(e), X), !1;
|
|
611
|
+
}
|
|
484
612
|
}
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
hostBin: e.hostBin,
|
|
491
|
-
onStderr: (e) => c.write(e),
|
|
613
|
+
async function b(e) {
|
|
614
|
+
let t = new L({
|
|
615
|
+
entryFile: e,
|
|
616
|
+
hostBin: d,
|
|
617
|
+
onStderr: (e) => s.write(e),
|
|
492
618
|
onReady: () => {
|
|
493
|
-
|
|
619
|
+
p = !0, V(o, "ready", X), m && (m = !1, y());
|
|
494
620
|
},
|
|
495
|
-
onAppError: (e) => W(
|
|
621
|
+
onAppError: (e) => W(s, "app error", e, X),
|
|
496
622
|
onExit: () => {
|
|
497
|
-
|
|
623
|
+
V(o, "host exited — stopping", X), _();
|
|
498
624
|
}
|
|
499
625
|
});
|
|
500
626
|
try {
|
|
501
627
|
await t.start();
|
|
502
628
|
} catch (e) {
|
|
503
|
-
W(
|
|
629
|
+
W(s, "failed to start inca-host", U(e), X);
|
|
504
630
|
return;
|
|
505
631
|
}
|
|
506
|
-
|
|
507
|
-
return;
|
|
632
|
+
f = t;
|
|
508
633
|
}
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
634
|
+
async function x(e) {
|
|
635
|
+
if (await ke(e.outDir, e.files), !f) {
|
|
636
|
+
await b(e.entryFile);
|
|
637
|
+
return;
|
|
638
|
+
}
|
|
639
|
+
if (!p) {
|
|
640
|
+
m = !0;
|
|
641
|
+
return;
|
|
642
|
+
}
|
|
643
|
+
if (await y() && e.changed) {
|
|
644
|
+
let n = h("dim", a.relative(t, e.changed.file), { stream: o }), r = Date.now() - e.changed.at;
|
|
645
|
+
V(o, `${h("green", "reload")} ${n} (${r}ms)`, X);
|
|
646
|
+
}
|
|
516
647
|
}
|
|
648
|
+
let S = await i.watch({
|
|
649
|
+
entry: c,
|
|
650
|
+
outDir: r,
|
|
651
|
+
runtimeConfig: u,
|
|
652
|
+
mode: "development",
|
|
653
|
+
stdout: o,
|
|
654
|
+
stderr: s,
|
|
655
|
+
onBuild: (e) => {
|
|
656
|
+
g = g.then(() => x(e));
|
|
657
|
+
},
|
|
658
|
+
onError: (e) => {
|
|
659
|
+
W(s, "build failed", e, X);
|
|
660
|
+
}
|
|
661
|
+
});
|
|
662
|
+
e.signal.aborted ? _() : e.signal.addEventListener("abort", () => _(), { once: !0 }), await v, await g, await f?.stop(), await S.close();
|
|
663
|
+
} finally {
|
|
664
|
+
await r();
|
|
517
665
|
}
|
|
518
|
-
let y = await o.watch({
|
|
519
|
-
entry: l,
|
|
520
|
-
outDir: i,
|
|
521
|
-
mode: "development",
|
|
522
|
-
stdout: s,
|
|
523
|
-
stderr: c,
|
|
524
|
-
onBuild: (e) => {
|
|
525
|
-
p = p.then(() => v(e));
|
|
526
|
-
},
|
|
527
|
-
onError: (e) => {
|
|
528
|
-
W(c, "build failed", e, Y);
|
|
529
|
-
}
|
|
530
|
-
});
|
|
531
|
-
e.signal.aborted ? h() : e.signal.addEventListener("abort", () => h(), { once: !0 }), await g, await p, await u?.stop(), await y.close(), await r();
|
|
532
|
-
}
|
|
533
|
-
//#endregion
|
|
534
|
-
//#region src/plist.mts
|
|
535
|
-
function X(e) {
|
|
536
|
-
return e.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">");
|
|
537
|
-
}
|
|
538
|
-
function pe(e) {
|
|
539
|
-
return typeof e == "boolean" ? e ? "<true/>" : "<false/>" : `<string>${X(e)}</string>`;
|
|
540
|
-
}
|
|
541
|
-
function me(e) {
|
|
542
|
-
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
543
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
544
|
-
<plist version="1.0">
|
|
545
|
-
<dict>
|
|
546
|
-
${Object.entries(e).map(([e, t]) => `\t<key>${X(e)}</key>\n\t${pe(t)}`).join("\n")}\n</dict>
|
|
547
|
-
</plist>
|
|
548
|
-
`;
|
|
549
666
|
}
|
|
550
667
|
//#endregion
|
|
551
668
|
//#region src/package.mts
|
|
552
|
-
function
|
|
669
|
+
function Ae() {
|
|
553
670
|
if (process.platform === "darwin") return "macos";
|
|
554
671
|
if (process.platform === "linux") return "linux";
|
|
555
|
-
throw new
|
|
672
|
+
throw new C("ERR_INCA_PLATFORM_UNSUPPORTED", `inca package doesn't support ${process.platform} yet`);
|
|
556
673
|
}
|
|
557
|
-
async function
|
|
674
|
+
async function Q(e, t) {
|
|
558
675
|
await Promise.all(e.files.map(async (n) => {
|
|
559
676
|
let r = a.join(t, n);
|
|
560
|
-
await
|
|
677
|
+
await u(a.dirname(r), { recursive: !0 }), await c(a.join(e.outDir, n), r);
|
|
561
678
|
}));
|
|
562
679
|
}
|
|
563
|
-
async function
|
|
564
|
-
let r =
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
680
|
+
async function je({ metadata: e, output: t, hostBin: n }) {
|
|
681
|
+
let { appPath: r, resourcesDir: i } = await Y({
|
|
682
|
+
appPath: a.join(t.outDir, `${e.productName}.app`),
|
|
683
|
+
metadata: e,
|
|
684
|
+
hostBin: n
|
|
568
685
|
});
|
|
569
|
-
|
|
570
|
-
await l(o, { recursive: !0 }), await l(u, { recursive: !0 });
|
|
571
|
-
let d = a.join(o, e.productName);
|
|
572
|
-
await c(n, d), await s(d, 493), await Z(t, u);
|
|
573
|
-
let m = {
|
|
574
|
-
CFBundleName: e.productName,
|
|
575
|
-
CFBundleDisplayName: e.productName,
|
|
576
|
-
CFBundleExecutable: e.productName,
|
|
577
|
-
CFBundleIdentifier: e.identifier,
|
|
578
|
-
CFBundleVersion: e.version,
|
|
579
|
-
CFBundleShortVersionString: e.version,
|
|
580
|
-
CFBundlePackageType: "APPL",
|
|
581
|
-
CFBundleInfoDictionaryVersion: "6.0",
|
|
582
|
-
NSHighResolutionCapable: !0
|
|
583
|
-
};
|
|
584
|
-
if (e.icon) {
|
|
585
|
-
let t = a.basename(e.icon);
|
|
586
|
-
await c(e.icon, a.join(u, t)), m.CFBundleIconFile = t;
|
|
587
|
-
}
|
|
588
|
-
return await p(a.join(i, "Info.plist"), me(m)), await p(a.join(i, "PkgInfo"), "APPL????"), r;
|
|
686
|
+
return await Q(t, i), r;
|
|
589
687
|
}
|
|
590
|
-
async function
|
|
688
|
+
async function Me({ metadata: t, output: n, hostBin: r }) {
|
|
591
689
|
let i = e(t.productName), o = a.join(n.outDir, i);
|
|
592
|
-
await
|
|
690
|
+
await p(o, {
|
|
593
691
|
recursive: !0,
|
|
594
692
|
force: !0
|
|
595
|
-
}), await
|
|
596
|
-
let
|
|
597
|
-
return await c(r,
|
|
598
|
-
}
|
|
599
|
-
async function
|
|
600
|
-
let t = e.cwd ?? process.cwd(), n = e.stdout ?? process.stdout, r = e.target ??
|
|
601
|
-
i.usedPackageJsonKey &&
|
|
602
|
-
let a = await
|
|
693
|
+
}), await u(o, { recursive: !0 });
|
|
694
|
+
let l = a.join(o, i);
|
|
695
|
+
return await c(r, l), await s(l, 493), await Q(n, o), o;
|
|
696
|
+
}
|
|
697
|
+
async function Ne(e = {}) {
|
|
698
|
+
let t = e.cwd ?? process.cwd(), n = e.stdout ?? process.stdout, r = e.target ?? Ae(), i = await D(t);
|
|
699
|
+
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}`);
|
|
700
|
+
let a = await q({
|
|
603
701
|
cwd: t,
|
|
604
702
|
entry: e.entry,
|
|
605
703
|
config: i,
|
|
704
|
+
runtimeConfig: O(i),
|
|
606
705
|
bundler: e.bundler,
|
|
607
706
|
stdout: n,
|
|
608
707
|
stderr: e.stderr
|
|
609
|
-
}), s = e.hostBin ??
|
|
610
|
-
if (!o(s)) throw new
|
|
708
|
+
}), s = e.hostBin ?? P();
|
|
709
|
+
if (!o(s)) throw new C("ERR_INCA_HOST_BIN_NOT_FOUND", `no host binary at ${s} — check that it was built and is executable`);
|
|
611
710
|
let c = {
|
|
612
711
|
metadata: i,
|
|
613
712
|
output: a,
|
|
614
713
|
hostBin: s
|
|
615
714
|
};
|
|
616
|
-
return { appPath: r === "macos" ? await
|
|
715
|
+
return { appPath: r === "macos" ? await je(c) : await Me(c) };
|
|
617
716
|
}
|
|
618
717
|
//#endregion
|
|
619
718
|
//#region src/cli.mts
|
|
620
|
-
var
|
|
719
|
+
var Pe = "Usage: inca <dev|build|package>";
|
|
621
720
|
function $(e) {
|
|
622
721
|
return a.relative(process.cwd(), e);
|
|
623
722
|
}
|
|
624
|
-
async function
|
|
723
|
+
async function Fe(e = process.argv) {
|
|
625
724
|
let t = e[2];
|
|
626
725
|
if (t === "build") {
|
|
627
726
|
try {
|
|
628
|
-
let e = await
|
|
629
|
-
|
|
727
|
+
let e = await q();
|
|
728
|
+
V(process.stdout, `built ${$(e.entryFile)}`);
|
|
630
729
|
} catch (e) {
|
|
631
730
|
W(process.stderr, "build failed", U(e)), process.exitCode = 1;
|
|
632
731
|
}
|
|
@@ -634,26 +733,26 @@ async function ye(e = process.argv) {
|
|
|
634
733
|
}
|
|
635
734
|
if (t === "package") {
|
|
636
735
|
try {
|
|
637
|
-
let { appPath: e } = await
|
|
638
|
-
|
|
736
|
+
let { appPath: e } = await Ne();
|
|
737
|
+
V(process.stdout, `packaged ${$(e)}`);
|
|
639
738
|
} catch (e) {
|
|
640
739
|
W(process.stderr, "package failed", U(e)), process.exitCode = 1;
|
|
641
740
|
}
|
|
642
741
|
return;
|
|
643
742
|
}
|
|
644
743
|
if (t !== "dev") {
|
|
645
|
-
process.stderr.write(`${
|
|
744
|
+
process.stderr.write(`${Pe}\n`), process.exitCode = 1;
|
|
646
745
|
return;
|
|
647
746
|
}
|
|
648
747
|
let n = new AbortController(), r = () => {
|
|
649
|
-
n.signal.aborted || (
|
|
748
|
+
n.signal.aborted || (V(process.stderr, "shutting down", { timestamp: !0 }), n.abort());
|
|
650
749
|
};
|
|
651
750
|
process.on("SIGINT", r), process.on("SIGTERM", r);
|
|
652
751
|
try {
|
|
653
|
-
await
|
|
752
|
+
await Z({ signal: n.signal });
|
|
654
753
|
} catch (e) {
|
|
655
754
|
W(process.stderr, "dev failed", U(e), { timestamp: !0 }), process.exitCode = 1;
|
|
656
755
|
}
|
|
657
756
|
}
|
|
658
757
|
//#endregion
|
|
659
|
-
export {
|
|
758
|
+
export { Fe as run };
|