@velarscript/desktop 0.12.1 → 0.13.0
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/build.d.ts.map +1 -1
- package/dist/build.js +2 -1
- package/dist/build.js.map +1 -1
- package/dist/compiler.d.ts.map +1 -1
- package/dist/compiler.js +34 -8
- package/dist/compiler.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +25 -0
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/stable-order.d.ts +15 -0
- package/dist/stable-order.d.ts.map +1 -0
- package/dist/stable-order.js +17 -0
- package/dist/stable-order.js.map +1 -0
- package/dist/worker.js +2 -2
- package/native/macos/VelarDesktopHost.swift +24 -3
- package/native/node/worker.js +26 -1
- package/package.json +4 -4
package/dist/build.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;QAC/B,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC;QAC1B,QAAQ,CAAC,SAAS,EAAE,8BAA8B,CAAC;QACnD,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;KAC1B,CAAC;IACF,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;QACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;CACzC;AAED,MAAM,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;AA4D9D;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoBzG;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIxD;AAED,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,kBAAkB,EAC1B,aAAa,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GACxD,OAAO,CAAC,kBAAkB,CAAC,CA0F7B"}
|
package/dist/build.js
CHANGED
|
@@ -3,6 +3,7 @@ import { spawn } from "node:child_process";
|
|
|
3
3
|
import { chmod, cp, mkdir, mkdtemp, readFile, readdir, realpath, rename, rm, stat, writeFile } from "node:fs/promises";
|
|
4
4
|
import { basename, dirname, isAbsolute, join, relative, resolve } from "node:path";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
|
+
import { byCodeUnit } from "./stable-order.js";
|
|
6
7
|
const desktopPackageTemplateEnvironment = "VELAR_DESKTOP_PACKAGE_TEMPLATE_ROOT";
|
|
7
8
|
/**
|
|
8
9
|
* A packaged Desktop build has no TypeScript checkout or Swift sources. The
|
|
@@ -280,7 +281,7 @@ async function treeSize(root) {
|
|
|
280
281
|
async function hashTree(root) {
|
|
281
282
|
const hash = createHash("sha256");
|
|
282
283
|
const visit = async (directory) => {
|
|
283
|
-
const entries = (await readdir(directory, { withFileTypes: true })).sort((left, right) => left.name
|
|
284
|
+
const entries = (await readdir(directory, { withFileTypes: true })).sort((left, right) => byCodeUnit(left.name, right.name));
|
|
284
285
|
for (const entry of entries) {
|
|
285
286
|
const path = join(directory, entry.name);
|
|
286
287
|
const name = relative(root, path).replaceAll("\\", "/");
|
package/dist/build.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
|
package/dist/compiler.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,iBAAiB,EAAuD,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,iBAAiB,EAAuD,MAAM,uBAAuB,CAAC;AAgvChI,eAAO,MAAM,sBAAsB,EAAE,iBA2CnC,CAAC;AAEH,OAAO,EAAE,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/compiler.js
CHANGED
|
@@ -613,6 +613,25 @@ function argumentsOf(value) {
|
|
|
613
613
|
function recordOf(value, name, allowed) {
|
|
614
614
|
return __velarProcessRecord(value, name, allowed);
|
|
615
615
|
}
|
|
616
|
+
// An executable grant is only as narrow as that executable's own environment
|
|
617
|
+
// surface: many granted programs take a command, an interpreter option, or a
|
|
618
|
+
// loader path from their environment, so those names are not caller data. The
|
|
619
|
+
// identical predicate is duplicated host-side as reservedEnvironmentName in
|
|
620
|
+
// packages/desktop/native/node/worker.js; the two must not drift. PATH keeps
|
|
621
|
+
// its own longer-standing message. The bare spellings matter as much as the
|
|
622
|
+
// prefixed ones: git commit runs EDITOR, git log runs PAGER, and HOME moves the
|
|
623
|
+
// whole configuration surface — including the .gitconfig whose own core.editor
|
|
624
|
+
// runs a command — into a directory the caller chooses. The host's base
|
|
625
|
+
// environment snapshot owns HOME, SHELL and TMPDIR, so those are not caller
|
|
626
|
+
// data either.
|
|
627
|
+
const processReservedEnvironmentNames = /^(?:PATH|HOME|USERPROFILE|SHELL|TMPDIR|IFS|ENV|BASH_ENV|SHELLOPTS|BASHOPTS|PS4|EDITOR|VISUAL|PAGER|MANPAGER|MANOPT|BROWSER|SSH_ASKPASS|SUDO_ASKPASS|NODE_OPTIONS|NODE_REPL_EXTERNAL_MODULE)$/iu;
|
|
628
|
+
const processReservedEnvironmentPrefixes = /^(?:LD_|DYLD_|GIT_|XDG_|PYTHON|PERL|RUBY|LESS)/iu;
|
|
629
|
+
const processReservedEnvironmentSuffixes = /(?:_COMMAND|_EDITOR|_PAGER|_OPTS)$/iu;
|
|
630
|
+
function __velarProcessReservedEnvironmentName(name) {
|
|
631
|
+
return __velarProcessCall(__velarProcessRegExpTest, processReservedEnvironmentNames, [name])
|
|
632
|
+
|| __velarProcessCall(__velarProcessRegExpTest, processReservedEnvironmentPrefixes, [name])
|
|
633
|
+
|| __velarProcessCall(__velarProcessRegExpTest, processReservedEnvironmentSuffixes, [name]);
|
|
634
|
+
}
|
|
616
635
|
function mapEntries(value) {
|
|
617
636
|
if (value == null) return null;
|
|
618
637
|
const snapshot = __velarProcessMapSnapshot(value);
|
|
@@ -625,6 +644,9 @@ function mapEntries(value) {
|
|
|
625
644
|
if (!__velarProcessEnvironmentName(name) || name === "PATH" || typeof item !== "string" || __velarProcessIncludes(item, "\0")) {
|
|
626
645
|
throw new __velarProcessNativeTypeError("Desktop process env must contain valid string variables and cannot replace PATH");
|
|
627
646
|
}
|
|
647
|
+
if (__velarProcessReservedEnvironmentName(name)) {
|
|
648
|
+
throw new __velarProcessNativeTypeError("Process env cannot set the transport- or interpreter-controlled variable '" + name + "'");
|
|
649
|
+
}
|
|
628
650
|
units += name.length + item.length;
|
|
629
651
|
if (units > 1024 * 1024) throw new __velarProcessNativeRangeError("Process env cannot exceed 1 MiB");
|
|
630
652
|
output[output.length] = [name, item];
|
|
@@ -904,14 +926,14 @@ export class HttpTransportError extends Error {
|
|
|
904
926
|
super(message); this.name = "HttpTransportError"; this.phase = phase;
|
|
905
927
|
}
|
|
906
928
|
}
|
|
907
|
-
export class
|
|
929
|
+
export class HttpResponseError extends Error {
|
|
908
930
|
constructor(message, status, url, body = null) {
|
|
909
931
|
if (typeof message !== "string") throw new TypeError("HTTP error message must be text");
|
|
910
932
|
if (message.length > 65536) throw new RangeError("HTTP error messages cannot exceed 64 KiB");
|
|
911
933
|
if (!Number.isInteger(status) || status < 100 || status > 599) throw new RangeError("HTTP error status must be an integer from 100 through 599");
|
|
912
934
|
if (typeof url !== "string") throw new TypeError("HTTP error URL must be text");
|
|
913
935
|
if (url.length > 2 * 1024 * 1024) throw new RangeError("HTTP error URLs cannot exceed 2 MiB");
|
|
914
|
-
super(message); this.name = "
|
|
936
|
+
super(message); this.name = "HttpResponseError"; this.status = status; this.url = url; this.body = body;
|
|
915
937
|
}
|
|
916
938
|
}
|
|
917
939
|
function headersOf(value) {
|
|
@@ -1075,9 +1097,8 @@ function chunkOf(value) {
|
|
|
1075
1097
|
return {done: done.value, text: text.value};
|
|
1076
1098
|
}
|
|
1077
1099
|
class DesktopResponse {
|
|
1078
|
-
constructor(
|
|
1079
|
-
|
|
1080
|
-
this.ok = response.ok; this.status = response.status; this.statusText = response.statusText; this.url = response.url;
|
|
1100
|
+
constructor(response, request) {
|
|
1101
|
+
this.status = response.status; this.statusText = response.statusText; this.url = response.url;
|
|
1081
1102
|
this.headers = response.headers; this.body = response.body; this.request = request; this.cachedText = null; this.textPending = null; this.consuming = false;
|
|
1082
1103
|
if (!this.body) request.finish();
|
|
1083
1104
|
Object.seal(this);
|
|
@@ -1168,13 +1189,18 @@ class DesktopRequest {
|
|
|
1168
1189
|
throw bridgeTransportError(error, HttpTransportPhase.request) ?? error;
|
|
1169
1190
|
}
|
|
1170
1191
|
if (this.abortError) throw this.abortError;
|
|
1171
|
-
const
|
|
1172
|
-
|
|
1192
|
+
const snapshot = responseOf(value);
|
|
1193
|
+
const response = new DesktopResponse(snapshot, this);
|
|
1194
|
+
// D90 R20: the 2xx question is asked here and nowhere else. The
|
|
1195
|
+
// transport snapshot still carries ok; the response an author holds
|
|
1196
|
+
// does not, because by the time it is returned the answer is always
|
|
1197
|
+
// yes.
|
|
1198
|
+
if (!snapshot.ok) {
|
|
1173
1199
|
const text = await response.text();
|
|
1174
1200
|
let body = text;
|
|
1175
1201
|
try { body = text ? parseJsonText(text) : null; } catch {}
|
|
1176
1202
|
const errorUrl = response.url || this.url;
|
|
1177
|
-
throw new
|
|
1203
|
+
throw new HttpResponseError("HTTP " + response.status + " for " + errorUrl, response.status, errorUrl, body);
|
|
1178
1204
|
}
|
|
1179
1205
|
return response;
|
|
1180
1206
|
} catch (error) {
|
package/dist/compiler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA+E,MAAM,uBAAuB,CAAC;AAChI,OAAO,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC7H,OAAO,EAAE,sBAAsB,IAAI,oBAAoB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5G,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACtH,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAA2B,MAAM,aAAa,CAAC;AAExG,MAAM,UAAU,GAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACjD,MAAM,QAAQ,GAAc,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC7C,MAAM,UAAU,GAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACjD,MAAM,QAAQ,GAAc,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC7C,MAAM,kBAAkB,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;AAElD,SAAS,YAAY,CAAC,UAAgC,EAAE,MAAiB,EAAE,kBAAkB,GAAG,UAAU,CAAC,MAAM;IAC/G,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC;AACtE,CAAC;AAED,SAAS,eAAe,CACtB,OAAuC,EACvC,UAAU,GAAwD,IAAI,GAAG,EAAE,EAC3E,mBAAmB,GAAgC,IAAI,GAAG,EAAE,EAC5D,KAAK,GAAkC,IAAI,GAAG,EAAE;IAEhD,OAAO;QACL,OAAO;QACP,cAAc,EAAE,IAAI,GAAG,EAAE;QACzB,eAAe,EAAE,IAAI,GAAG,EAAE;QAC1B,SAAS,EAAE,IAAI,GAAG,EAAE;QACpB,UAAU;QACV,mBAAmB;QACnB,WAAW,EAAE,IAAI,GAAG,EAAE;QACtB,KAAK;QACL,OAAO,EAAE,IAAI,GAAG,EAAE;QAClB,KAAK,EAAE,EAAE;QACT,gBAAgB,EAAE,IAAI,GAAG,EAAE;QAC3B,aAAa,EAAE,IAAI,GAAG,EAAE;KACzB,CAAC;AACJ,CAAC;AAED,yEAAyE;AACzE,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAC5E,qEAAqE;AACrE,4EAA4E;AAC5E,4EAA4E;AAC5E,mDAAmD;AACnD,MAAM,wBAAwB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8B1C,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,uBAAuB,GAAG,oCAAoC,CAAC;AACrE,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AACpD,MAAM,mBAAmB,GAAc,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,uBAAuB,EAAE,CAAC;AACpH,MAAM,sBAAsB,GAAG,eAAe,CAAC,IAAI,GAAG,CAAC;IACrD,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,uBAAuB,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAClI,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC;IACnD,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC,eAAe,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAC3E,CAAC,kBAAkB,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAC9E,CAAC,kBAAkB,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAC9E,CAAC,0BAA0B,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC9F,CAAC,wBAAwB,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;CAC7F,CAAC,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,CAAC;IAChC,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,uBAAuB,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;CACtF,CAAC,CAAC,CAAC;AAEJ,MAAM,0BAA0B,GAAG,eAAe,CAAC,IAAI,GAAG,CAAC;IACzD,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,mBAAmB,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1F,CAAC,kBAAkB,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAC9E,CAAC,kBAAkB,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAC9E,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACnF,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IACpG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3F,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;CACjF,CAAC,CAAC,CAAC;AAEJ,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,GAAG,CAAC,eAAe,CAAE,CAAC;AACxE,MAAM,uBAAuB,GAAoB,oBAAoB,CAAC;AAEtE,MAAM,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAA;EACtC,wBAAwB;EACxB,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmC5B,CAAC,SAAS,EAAE,CAAC;AAEd,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6DrC,CAAC,SAAS,EAAE,CAAC;AAEd,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAA;EACpC,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuMzB,CAAC,SAAS,EAAE,CAAC;AAEd,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAA;EAClC,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyKzB,CAAC,SAAS,EAAE,CAAC;AAEd,MAAM,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAA;EACvC,wBAAwB;EACxB,2BAA2B;EAC3B,kBAAkB;EAClB,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8P3B,CAAC,SAAS,EAAE,CAAC;AAEd,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAA;EACnC,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CzB,CAAC,SAAS,EAAE,CAAC;AAEd,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAA;EACpC,yBAAyB;EACzB,2BAA2B;EAC3B,kBAAkB;EAClB,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6VzB,CAAC,SAAS,EAAE,CAAC;AAEd,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,OAAQ,CAAC,UAAU,CAAC,CAAC;AAClF,uBAAuB,CAAC,GAAG,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAAC;AACrE,uBAAuB,CAAC,GAAG,CAAC,oBAAoB,EAAE,0BAA0B,CAAC,CAAC;AAC9E,uBAAuB,CAAC,GAAG,CAAC,UAAU,EAAE,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,CAAC;AAC/E,uBAAuB,CAAC,GAAG,CAAC,YAAY,EAAE,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC,CAAC;AACnF,uBAAuB,CAAC,GAAG,CAAC,eAAe,EAAE,uBAAuB,CAAC,CAAC;AACtE,uBAAuB,CAAC,GAAG,CAAC,YAAY,EAAE,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC,CAAC;AACnF,uBAAuB,CAAC,GAAG,CAAC,WAAW,EAAE,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC,CAAC;AACjF,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,OAAQ,CAAC,OAAO,CAAC,CAAC;AAC5E,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,OAAQ,CAAC,YAAY,CAAC,CAAC;AACtF,oBAAoB,CAAC,GAAG,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC;AACjE,oBAAoB,CAAC,GAAG,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,CAAC;AACpE,oBAAoB,CAAC,GAAG,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;AACxD,oBAAoB,CAAC,GAAG,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;AAC5D,oBAAoB,CAAC,GAAG,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAAC;AAClE,oBAAoB,CAAC,GAAG,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;AAC5D,oBAAoB,CAAC,GAAG,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,sBAAsB,GAAsB,MAAM,CAAC,MAAM,CAAC;IACrE,EAAE,EAAE,sBAAsB;IAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;QACtB,eAAe,EAAE,CAAC;QAClB,UAAU,EAAE,yBAAyB;QACrC,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;YACtB,kBAAkB,EAAE,oBAAoB,CAAC,QAAS,CAAC,UAAU;YAC7D,mBAAmB,EAAE,sBAAsB;SAC5C,CAAC;KACH,CAAC;IACF,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC/C,kEAAkE;IAClE,uEAAuE;IACvE,2EAA2E;IAC3E,2EAA2E;IAC3E,OAAO,EAAE,oBAAoB,CAAC,OAAQ;IACtC,MAAM,EAAE,oBAAoB,CAAC,MAAO;IACpC,MAAM,EAAE,oBAAoB,CAAC,MAAO;IACpC,QAAQ,EAAE,oBAAoB,CAAC,QAAS;IACxC,QAAQ,EAAE,oBAAoB,CAAC,QAAS;IACxC,UAAU,EAAE,oBAAoB,CAAC,UAAW;IAC5C,QAAQ,EAAE,oBAAoB,CAAC,QAAS;IACxC,MAAM,EAAE,oBAAoB,CAAC,MAAO;IACpC,UAAU,EAAE,oBAAoB,CAAC,UAAW;IAC5C,aAAa,EAAE,oBAAoB,CAAC,aAAc;IAClD,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;QACrB,UAAU,EAAE,yBAAyB;QACrC,UAAU,EAAE,uBAAuB;QACnC,OAAO,EAAE,oBAAoB;QAC7B,YAAY,EAAE,yBAAyB;QACvC,MAAM,CAAC,SAAiB,EAAE,aAAsB;YAC9C,IAAI,SAAS,KAAK,eAAe;gBAAE,OAAO,qBAAqB,CAAC;YAChE,IAAI,SAAS,KAAK,oBAAoB;gBAAE,OAAO,mBAAmB,CAAC;YACnE,IAAI,SAAS,KAAK,UAAU;gBAAE,OAAO,iBAAiB,CAAC;YACvD,IAAI,SAAS,KAAK,YAAY;gBAAE,OAAO,mBAAmB,CAAC;YAC3D,IAAI,SAAS,KAAK,eAAe;gBAAE,OAAO,sBAAsB,CAAC;YACjE,IAAI,SAAS,KAAK,YAAY;gBAAE,OAAO,mBAAmB,CAAC;YAC3D,MAAM,MAAM,GAAG,aAAmC,CAAC;YACnD,OAAO,eAAe,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QACjH,CAAC;KACF,CAAC;CACH,CAAC,CAAC;AAEH,OAAO,EAAE,qBAAqB,EAA2B,MAAM,aAAa,CAAC"}
|
package/dist/config.d.ts
CHANGED
|
@@ -29,4 +29,5 @@ export declare const velarProjectExtension: Readonly<{
|
|
|
29
29
|
manifestKey: "desktop";
|
|
30
30
|
parse(value: unknown, manifestPath: string): VelarDesktopConfig;
|
|
31
31
|
}>;
|
|
32
|
+
export declare function desktopExternalNavigationPermitted(config: VelarDesktopConfig, url: string): boolean;
|
|
32
33
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,SAAS,CAAC;AAIhD,eAAO,MAAM,iCAAiC,QAAmB,CAAC;AAElE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,EAAE,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,uBAAuB,CAAC;IAC9C,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;KAClC,CAAC;CACH;AAED,eAAO,MAAM,qBAAqB;;;iBAGnB,OAAO,gBAAgB,MAAM,GAAG,kBAAkB;EAG/D,CAAC"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,SAAS,CAAC;AAIhD,eAAO,MAAM,iCAAiC,QAAmB,CAAC;AAElE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,EAAE,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,uBAAuB,CAAC;IAC9C,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;KAClC,CAAC;CACH;AAED,eAAO,MAAM,qBAAqB;;;iBAGnB,OAAO,gBAAgB,MAAM,GAAG,kBAAkB;EAG/D,CAAC;AA2EH,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAInG"}
|
package/dist/config.js
CHANGED
|
@@ -84,6 +84,31 @@ function permissionConfig(value, manifestPath) {
|
|
|
84
84
|
}
|
|
85
85
|
return Object.freeze({ files: files, processes, network, environment, secrets });
|
|
86
86
|
}
|
|
87
|
+
// Handing a renderer URL to the system browser is the same question
|
|
88
|
+
// `desktop.permissions.network` already answers: may this application reach
|
|
89
|
+
// this host. An origin that was never granted is cancelled rather than opened,
|
|
90
|
+
// and only `https` is ever a candidate — every other scheme stays cancelled, as
|
|
91
|
+
// it is in the native host. Matching is exact on scheme, host and port; a
|
|
92
|
+
// suffix or substring rule is how allowlists get bypassed.
|
|
93
|
+
export function desktopExternalNavigationPermitted(config, url) {
|
|
94
|
+
const candidate = permissionOrigin(url);
|
|
95
|
+
if (candidate === null)
|
|
96
|
+
return false;
|
|
97
|
+
return config.permissions.network.some((origin) => permissionOrigin(origin) === candidate);
|
|
98
|
+
}
|
|
99
|
+
// `https` is read off the parsed URL rather than off the origin text, because a
|
|
100
|
+
// nested scheme such as `blob:https://host/id` reports an `https` origin while
|
|
101
|
+
// naming a scheme the host never opens.
|
|
102
|
+
function permissionOrigin(value) {
|
|
103
|
+
let parsed;
|
|
104
|
+
try {
|
|
105
|
+
parsed = new URL(value);
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
return parsed.protocol === "https:" ? parsed.origin : null;
|
|
111
|
+
}
|
|
87
112
|
function buildConfig(value, manifestPath) {
|
|
88
113
|
const build = value === undefined ? {} : objectField(value, "desktop.build", manifestPath);
|
|
89
114
|
knownFields(build, new Set(["outDir", "sizeBudgetBytes"]), "desktop.build", manifestPath);
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { VELAR_DESKTOP_API_VERSION } from "./config.ts";
|
|
1
|
+
export { VELAR_DESKTOP_API_VERSION, desktopExternalNavigationPermitted } from "./config.ts";
|
|
2
2
|
export type { DesktopPermissionConfig, DesktopWindowConfig, VelarDesktopConfig } from "./config.ts";
|
|
3
3
|
export declare const VELAR_DESKTOP_MODULES: readonly ["velar/desktop", "velar/desktop-test", "velar/fs", "velar/path", "velar/process", "velar/http", "velar/env"];
|
|
4
4
|
export declare const velarDesktopFramework: Readonly<{
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,kCAAkC,EAAE,MAAM,aAAa,CAAC;AAC5F,YAAY,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEpG,eAAO,MAAM,qBAAqB,wHAQvB,CAAC;AAEZ,eAAO,MAAM,qBAAqB;;;;sBAId,gBAAgB;cACxB,kBAAkB;oBACZ,mBAAmB;EACnC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { VELAR_DESKTOP_API_VERSION } from "./config.js";
|
|
2
|
-
export { VELAR_DESKTOP_API_VERSION } from "./config.js";
|
|
2
|
+
export { VELAR_DESKTOP_API_VERSION, desktopExternalNavigationPermitted } from "./config.js";
|
|
3
3
|
export const VELAR_DESKTOP_MODULES = Object.freeze([
|
|
4
4
|
"velar/desktop",
|
|
5
5
|
"velar/desktop-test",
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,EAAE,yBAAyB,EAAE,kCAAkC,EAAE,MAAM,aAAa,CAAC;AAG5F,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC;IACjD,eAAe;IACf,oBAAoB;IACpB,UAAU;IACV,YAAY;IACZ,eAAe;IACf,YAAY;IACZ,WAAW;CACH,CAAC,CAAC;AAEZ,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC;IACjD,IAAI,EAAE,sBAAsB;IAC5B,UAAU,EAAE,yBAAyB;IACrC,OAAO,EAAE,qBAAqB;IAC9B,gBAAgB,EAAE,gBAAyB;IAC3C,QAAQ,EAAE,kBAA2B;IACrC,cAAc,EAAE,mBAA4B;CAC7C,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UTF-16 code-unit order — what `<` and `>` compare, and what
|
|
3
|
+
* `Array.prototype.sort` gives with no comparator. It differs from true code
|
|
4
|
+
* point order only for astral characters, and it is deliberately this order
|
|
5
|
+
* rather than that one, so a producer agrees with any consumer that reorders
|
|
6
|
+
* the same names with a bare `.sort()`.
|
|
7
|
+
*
|
|
8
|
+
* D90 R3(a) rules the locale dependence out at the root: `localeCompare`
|
|
9
|
+
* follows the collation the process environment selects, so any list ordered
|
|
10
|
+
* with it reorders when the machine's `LC_ALL` changes. Desktop walks a build
|
|
11
|
+
* tree in this order to hash it, so the build receipt a packaged application
|
|
12
|
+
* carries is the same on two machines that differ only in `LC_ALL`.
|
|
13
|
+
*/
|
|
14
|
+
export declare function byCodeUnit(left: string, right: string): number;
|
|
15
|
+
//# sourceMappingURL=stable-order.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stable-order.d.ts","sourceRoot":"","sources":["../src/stable-order.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9D"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UTF-16 code-unit order — what `<` and `>` compare, and what
|
|
3
|
+
* `Array.prototype.sort` gives with no comparator. It differs from true code
|
|
4
|
+
* point order only for astral characters, and it is deliberately this order
|
|
5
|
+
* rather than that one, so a producer agrees with any consumer that reorders
|
|
6
|
+
* the same names with a bare `.sort()`.
|
|
7
|
+
*
|
|
8
|
+
* D90 R3(a) rules the locale dependence out at the root: `localeCompare`
|
|
9
|
+
* follows the collation the process environment selects, so any list ordered
|
|
10
|
+
* with it reorders when the machine's `LC_ALL` changes. Desktop walks a build
|
|
11
|
+
* tree in this order to hash it, so the build receipt a packaged application
|
|
12
|
+
* carries is the same on two machines that differ only in `LC_ALL`.
|
|
13
|
+
*/
|
|
14
|
+
export function byCodeUnit(left, right) {
|
|
15
|
+
return left < right ? -1 : left > right ? 1 : 0;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=stable-order.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stable-order.js","sourceRoot":"","sources":["../src/stable-order.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,KAAa;IACpD,OAAO,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC"}
|
package/dist/worker.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import {createRequire as __velarCreateRequire} from "node:module"; import {fileURLToPath as __velarFileURLToPath} from "node:url"; import {dirname as __velarDirname} from "node:path"; const require = __velarCreateRequire(import.meta.url); const __filename = __velarFileURLToPath(import.meta.url); const __dirname = __velarDirname(__filename);
|
|
2
|
-
import{constants as lt,watch as ut}from"node:fs";import{access as ft,appendFile as dt,copyFile as wt,lstat as $,mkdir as je,readFile as Ee,readdir as ht,realpath as F,rename as $e,rm as he,stat as C,writeFile as pe}from"node:fs/promises";import{createInterface as pt}from"node:readline";import{basename as Q,dirname as ae,isAbsolute as Z,relative as mt,resolve as E}from"node:path";import{spawn as yt}from"node:child_process";import{StringDecoder as ke}from"node:string_decoder";var We=128*1024*1024,v=16*1024*1024,Tt=2*1024*1024,ze=64*1024*1024,gt=1e6,Ie=20,re=4096,Ue=128,Et=4096,xt=2*1024*1024,bt=20,Ae=5e3,He=5e3,Pt=8e3,Le=Object.freeze({}),Oe=Object.freeze({}),J=Object.freeze({}),Me=Object.getOwnPropertyDescriptor(String.prototype,"charCodeAt")?.value,Ne=Object.getOwnPropertyDescriptor(Reflect,"apply")?.value,[Ge,qe,xe]=process.argv.slice(2);if(!Ge||!qe||!xe)throw new Error("Velar Desktop worker requires config, app-data, and launch roots");var j=JSON.parse(await Ee(Ge,"utf8"));if(j.protocolVersion!==1||!j.permissions||typeof j.permissions!="object")throw new Error("Invalid Velar Desktop worker configuration");var be=new Set(j.permissions.files??[]),Dt=new Set(j.permissions.processes??[]),Rt=new Set(j.permissions.network??[]),vt=new Set(j.permissions.secrets??[]),x=new Map,St=1,S=new Map,O=new Map,Y=new Map,k=new Map,_e=1,ee=1,Fe=!1,T=null,b=[],U=[],me=null,ye=null,G=null,ne=null,Te=Promise.resolve(),K=class extends Error{constructor(t){super(t==="request"?"HTTP request transport failed":"HTTP response transport failed"),this.name="HttpTransportError",this.phase=t}},Xe=await F(xe);if(be.has("app-data")){let e=E(qe,"data");await je(e,{recursive:!0}),ye=e,me=await F(e)}be.has("project")&&(ne=E(xe),G=Xe);Ke();var oe=pt({input:process.stdin,crlfDelay:1/0,terminal:!1});oe.once("close",()=>{T!==null&&ge(T);for(let e of k.values())N(e,new Error("Desktop capability host closed"));for(let e of O.values())ce(e)});oe.on("line",async e=>{let t=0,r=null;try{if(Buffer.byteLength(e,"utf8")>We)throw new RangeError("Desktop request exceeds its 128 MiB transport bound");let n=JSON.parse(e);if(n?.hostCommand!==void 0){await kt(n);return}if(t=n.id,n.protocolVersion!==1||!Number.isSafeInteger(t)||t<1||typeof n.capability!="string"||typeof n.operation!="string"||!Array.isArray(n.args)||!Ve(n.owner)||n.owner!==T)throw new TypeError("Invalid Desktop worker request");if(O.has(t))throw new Error("Desktop worker request identity is already active");r={owner:n.owner,cancelled:!1,cancel:null},O.set(t,r);let o=await It(n.capability,n.operation,n.args,n.owner,r);if(r.cancelled)throw new Error("Desktop host request was cancelled");if(n.owner!==T)throw new Error("Desktop document generation is no longer active");X({id:t,ok:!0,value:o})}catch(n){X({id:t,ok:!1,error:st(n)})}finally{r!==null&&O.get(t)===r&&O.delete(t)}});async function kt(e){if(e.protocolVersion!==1||!Ve(e.owner))throw new TypeError("Invalid Desktop host command");if(e.hostCommand==="owner-activate"){if(Object.keys(e).some(t=>!["protocolVersion","hostCommand","owner"].includes(t)))throw new TypeError("Invalid Desktop host command");T!==null&&T!==e.owner&&ge(T),T=e.owner;return}if(e.hostCommand==="owner-retire"){if(Object.keys(e).some(t=>!["protocolVersion","hostCommand","owner"].includes(t)))throw new TypeError("Invalid Desktop host command");ge(e.owner);return}if(e.hostCommand==="request-cancel"){if(Object.keys(e).some(r=>!["protocolVersion","hostCommand","owner","requestID"].includes(r))||!Number.isSafeInteger(e.requestID)||e.requestID<1)throw new TypeError("Invalid Desktop host command");let t=O.get(e.requestID);t&&t.owner===e.owner&&ce(t);return}if(e.hostCommand==="project-root-set"){if(Object.keys(e).some(r=>!["protocolVersion","hostCommand","owner","commandID","path"].includes(r))||e.owner!==T||!Number.isSafeInteger(e.commandID)||e.commandID<1||typeof e.path!="string"||!Z(e.path)||e.path.length===0||e.path.length>re||e.path.includes("\0")||!be.has("project"))throw new TypeError("Invalid Desktop project-root command");let t=Te.then(()=>At(e.path));Te=t.catch(()=>{});try{await t,X({protocolVersion:1,hostEvent:"project-root-settled",owner:e.owner,commandID:e.commandID,ok:!0})}catch(r){X({protocolVersion:1,hostEvent:"project-root-settled",owner:e.owner,commandID:e.commandID,ok:!1,error:st(r)})}return}throw new TypeError("Unknown Desktop host command")}function ce(e){if(!e.cancelled){e.cancelled=!0;try{e.cancel?.()}catch{}}}function Pe(e,t){e.cancel=t,e.cancelled&&t()}function Ve(e){return typeof e=="string"&&/^[0-9a-f]{32}$/u.test(e)}async function It(e,t,r,n,o){if(await Te,e==="fs")return Bt(t,r,n,o);if(e==="process"){if(t==="run")return Wt(r,n,o);if(t==="start")return Je(r,n,o);if(t==="read")return Ut(r,n);if(t==="wait")return Ye(r,n);if(t==="stop")return et(r,n)}if(e==="http"){if(t==="request")return Kt(r,n,o);if(t==="read")return Jt(r,n);if(t==="cancel")return Yt(r,n)}throw new Error(`Unknown Desktop capability '${e}.${t}'`)}function Ke(){b.length=0,U.length=0,me!==null&&ye!==null&&(b.push(me),U.push(ye)),G!==null&&ne!==null&&(b.push(G),U.push(ne))}async function At(e){let t=await F(e);if(!(await C(t)).isDirectory())throw new TypeError("Desktop project grant must identify a directory");for(let n of k.values())N(n,new Error("Desktop project grant changed"));for(let n of O.values())ce(n);for(let[n,o]of x)ie(n,o);for(let[n,o]of S)o.controller.abort(new Error("Desktop project grant changed")),o.reader?.cancel().catch(()=>{}),M(n,o);ne=E(e),G=t,Ke()}function Ht(){let e=_e;for(let t=0;t<=Ue;t+=1){if(!k.has(e))return _e=e>=Number.MAX_SAFE_INTEGER?1:e+1,e;e=e>=Number.MAX_SAFE_INTEGER?1:e+1}throw new RangeError("Desktop file watcher handle space is unavailable")}function N(e,t=null){if(e.closed)return!1;e.closed=!0,e.timer!==null&&(clearTimeout(e.timer),e.timer=null);try{e.watcher.close()}catch{}if(k.delete(e.handle),e.pending!==null){let r=e.pending;e.pending=null,r.activity.cancel=null,t===null?r.resolve(null):r.reject(t)}return!0}function Qe(e){if(e.rescan)return e.rescan=!1,e.paths.clear(),e.units=0,{paths:[],rescan:!0};let t=[...e.paths].sort();return e.paths.clear(),e.units=0,{paths:t,rescan:!1}}function Ze(e){e.pending===null||e.timer!==null||e.failure!==null||!e.rescan&&e.paths.size===0||(e.timer=setTimeout(()=>{if(e.timer=null,e.pending===null||e.closed)return;let t=e.pending;e.pending=null,t.activity.cancel=null,t.resolve(Qe(e))},bt))}function fe(e){e.rescan=!0,e.paths.clear(),e.units=0,Ze(e)}function Lt(e,t){if(e.closed||e.failure!==null||e.rescan)return;let r;if(!e.directory)r=e.root;else{if(typeof t!="string"||t.length===0||t.length>re||t.includes("\0")||Z(t)){fe(e);return}if(r=E(e.root,t),!ue(e.root,r)||r.length>re){fe(e);return}}if(!e.paths.has(r)){if(e.paths.size>=Et||e.units+r.length>xt){fe(e);return}e.paths.add(r),e.units+=r.length}Ze(e)}function Ot(e,t){if(!(e.closed||e.failure!==null)){e.failure=t instanceof Error?t:new Error("Desktop file watcher failed"),e.timer!==null&&(clearTimeout(e.timer),e.timer=null);try{e.watcher.close()}catch{}e.pending!==null&&N(e,e.failure)}}async function Mt(e,t){if(e.length!==2||typeof e[1]!="boolean")throw new TypeError("watchStart arguments are invalid");if(k.size>=Ue)throw new RangeError("Desktop host cannot own more than 128 file watchers");let r=await A(e[0]),n=await C(r),o=n.isDirectory();if(!o&&!n.isFile())throw new TypeError("watchFiles requires a file or directory path");if(e[1]&&!o)throw new TypeError("recursive watchFiles requires a directory path");let i=Ht(),a={handle:i,owner:t,root:r,directory:o,watcher:null,paths:new Set,units:0,rescan:!1,pending:null,timer:null,failure:null,closed:!1};return a.watcher=ut(r,{recursive:e[1],encoding:"utf8",persistent:!0},(c,l)=>Lt(a,l)),a.watcher.once("error",c=>Ot(a,c)),k.set(i,a),i}function Nt(e,t){let r=_(e,1,Number.MAX_SAFE_INTEGER,"Desktop file watcher handle"),n=k.get(r);if(!n)throw new Error("Desktop file watcher handle is unknown or already released");if(n.owner!==t)throw new Error("Desktop file watcher belongs to another document generation");return n}function _t(e,t,r){if(e.length!==1)throw new TypeError("watchNext arguments are invalid");let n=Nt(e[0],t);if(n.pending!==null)throw new Error("FileWatcher.next already has an active pull");if(n.failure!==null){let o=n.failure;throw N(n),o}return n.rescan||n.paths.size>0?Qe(n):new Promise((o,i)=>{let a={resolve:o,reject:i,activity:r};n.pending=a,Pe(r,()=>{n.pending===a&&N(n,new Error("Desktop file watcher pull was cancelled"))})})}function Ft(e,t){if(e.length!==1)throw new TypeError("watchClose arguments are invalid");let r=_(e[0],1,Number.MAX_SAFE_INTEGER,"Desktop file watcher handle"),n=k.get(r);if(!n)return!1;if(n.owner!==t)throw new Error("Desktop file watcher belongs to another document generation");return N(n)}async function Bt(e,t,r,n){if(e==="watchStart")return Mt(t,r);if(e==="watchNext")return _t(t,r,n);if(e==="watchClose")return Ft(t,r);if(e==="readText"){let[o,i=v]=t,a=await Ct(o,i,"readText");return new TextDecoder("utf-8",{fatal:!0}).decode(a)}if(e==="exists")try{return await A(t[0]),!0}catch(o){if(o?.code==="ENOENT")return!1;throw o}if(e==="list"){let o=_(t[1]??1e5,1,1e5,"list maxItems"),i=await ht(await A(t[0]));if(i.length>o)throw new RangeError("list result exceeds maxItems");let a=0;for(let c of i)if(a+=c.length,a>Tt)throw new RangeError("list result cannot exceed 2 MiB of text");return i.sort()}if(e==="info"){let o;try{o=await te(t[0])}catch(a){if(a?.code==="ENOENT")return null;throw a}let i=await $(o);return{name:Q(o),kind:i.isFile()?"file":i.isDirectory()?"directory":i.isSymbolicLink()?"symlink":"other",size:i.size,modifiedAt:i.mtimeMs}}if(e==="canonical")return A(t[0]);if(e==="makeDirectory")return await je(await jt(t[0]),{recursive:!0}),null;if(e==="createText"){let o=await de(t[0]),i=V(t[1],"createText text",v);return z([o],async()=>{try{await pe(o,i,{encoding:"utf8",flag:"wx"})}catch(a){throw a?.code==="EEXIST"?new Error("createText target already exists"):a}return null})}if(e==="replaceTextIfMatches"){let o=await A(t[0]),i=Buffer.from(V(t[1],"replaceTextIfMatches expected text",v),"utf8"),a=Buffer.from(V(t[2],"replaceTextIfMatches replacement text",v),"utf8");return z([o],async()=>{let c=await C(o);if(!c.isFile())throw new TypeError("replaceTextIfMatches requires a file path");if(c.size>v)throw new RangeError("replaceTextIfMatches file exceeds 16 MiB");let l=await Ee(o);if(l.byteLength>v)throw new RangeError("replaceTextIfMatches file exceeds 16 MiB");return l.equals(i)?(await $t(o,a,c.mode),!0):!1})}if(e==="writeText"||e==="appendText"){let o=await de(t[0]),i=V(t[1],`${e} text`,v);return z([o],async()=>{let a=await C(o).catch(c=>c?.code==="ENOENT"?null:Promise.reject(c));if(a&&!a.isFile())throw new TypeError(`${e} requires a file path`);if(e==="writeText")await pe(o,i,"utf8");else{if(a&&a.size+Buffer.byteLength(i,"utf8")>v)throw new RangeError("appendText result cannot exceed 16 MiB");await dt(o,i,"utf8")}return null})}if(e==="copyFile"){let o=await A(t[0]);if(!(await C(o)).isFile())throw new TypeError("copyFile requires a regular file source");let i=await de(t[1]);return z([i],async()=>(t[2]!==!0&&await Be(i,"copyFile"),await wt(o,i),null))}if(e==="move"){let o=await te(t[0]);if(b.includes(o))throw new Error("move refuses a granted Desktop file root");let i=await te(t[1],!0);return z([o,i],async()=>(t[2]!==!0?await Be(i,"move"):await he(i,{force:!0,recursive:!1}),await $e(o,i),null))}if(e==="removeFile"){let o=await te(t[0]);return z([o],async()=>{if((await $(o)).isDirectory())throw new TypeError("removeFile refuses directories");return await he(o,{recursive:!1,force:!1}),null})}throw new Error(`Unknown filesystem operation '${e}'`)}async function Ct(e,t,r){t=_(t,1,v,`${r} maxBytes`),e=await A(e);let n=await C(e);if(!n.isFile())throw new TypeError(`${r} requires a file path`);if(n.size>t)throw new RangeError(`${r} file exceeds maxBytes`);let o=await Ee(e);if(o.byteLength>t)throw new RangeError(`${r} file exceeds maxBytes`);return o}async function A(e){let t=le(e);De(t);let r=await F(t);return q(r),r}async function de(e){let t=le(e);try{return await A(t)}catch(r){if(r?.code!=="ENOENT")throw r;try{throw await $(t),new Error("Filesystem write target cannot be a dangling symbolic link")}catch(o){if(o?.code!=="ENOENT")throw o}let n=await F(ae(t));return q(n),E(n,Q(t))}}async function te(e,t=!1){let r=le(e);De(r);for(let i=0;i<U.length;i+=1)if(r===U[i]||r===b[i])return t||await $(b[i]),b[i];let n=await F(ae(r));q(n);let o=E(n,Q(r));return q(o),t||await $(o),o}async function jt(e){let t=le(e);De(t);let r=[],n=t;for(;;)try{if((await $(n)).isSymbolicLink()&&r.length===0)throw new TypeError("makeDirectory refuses a symbolic-link target");let i=await F(n);if(q(i),!(await C(i)).isDirectory())throw new TypeError("makeDirectory requires every existing ancestor to be a directory");let a=i;for(let c=r.length-1;c>=0;c-=1)a=E(a,r[c]);return q(a),a}catch(o){if(o?.code!=="ENOENT")throw o;let i=ae(n);if(i===n)throw o;r.push(Q(n)),n=i}}function le(e){if(typeof e!="string"||e.length===0||e.length>re||e.includes("\0"))throw new TypeError("Filesystem operation requires a bounded path");let t=G??b[0];if(!t)throw new Error("Desktop application has no granted filesystem scope");return Z(e)?E(e):E(t,e)}function q(e){if(!b.some(t=>ue(t,e)))throw new Error("Filesystem path is outside granted Desktop file roots")}function De(e){if(![...U,...b].some(t=>ue(t,e)))throw new Error("Filesystem path is outside granted Desktop file roots")}function ue(e,t){let r=mt(e,t);return r===""||r!==".."&&!r.startsWith("../")&&!Z(r)}async function Be(e,t){try{await $(e)}catch(r){if(r?.code==="ENOENT")return;throw r}throw new Error(`${t} target already exists`)}async function z(e,t){let n=[...new Set(e.map(o=>E(o)))].sort().map(o=>{let i=Y.get(o)??null,a,c=new Promise(l=>{a=l});return Y.set(o,c),{identity:o,previous:i,release:a,tail:c}});await Promise.all(n.map(o=>o.previous));try{return await t()}finally{for(let o of n)o.release(),Y.get(o.identity)===o.tail&&Y.delete(o.identity)}}async function $t(e,t,r){let n=null;for(let o=0;o<1024;o+=1){let i=ee;ee=ee>=Number.MAX_SAFE_INTEGER?1:ee+1;let a=E(ae(e),`.velar-replace-${i}.tmp`);try{await pe(a,t,{flag:"wx",mode:r}),n=a;break}catch(c){if(c?.code!=="EEXIST")throw c}}if(n===null)throw new Error("replaceTextIfMatches could not allocate a temporary file");try{await $e(n,e)}finally{await he(n,{force:!0,recursive:!1})}}async function Wt(e,t,r){let n=await Je(e,t,r),o=await Ye([n.handle],t);if(o.retained)throw zt(n.handle,t),se(o.error);if(o.error)throw se(o.error);return o.result}function zt(e,t){let r=()=>{et([e],t).catch(()=>{setTimeout(r,1e3)})};setTimeout(r,0)}async function Je(e,t,r){if(x.size>=128)throw new RangeError("Desktop process handle limit reached");if(r.cancelled)throw new Error("Desktop host request was cancelled");let n=St++,o=null;if(Pe(r,()=>{o!==null&&ie(n,o)}),o=await qt(e,()=>X({protocolVersion:1,hostEvent:"process-settled",owner:t,handle:n})),o.owner=t,o.kind="process",x.set(n,o),X({protocolVersion:1,hostEvent:"process-owned",owner:t,handle:n,pid:o.pid}),o.result.catch(()=>{}),r.cancelled||t!==T)throw ie(n,o),new Error("Desktop document generation is no longer active");return{handle:n,pid:o.pid}}async function Ye(e,t){let[r,n]=tt(e[0],t);if(n.reading)throw new Error("Process wait() cannot run while next() is pending");n.waitStarted=!0,n.waitRetained&&!n.settled&&L(n.child,"SIGKILL");let o=await Re(n);return n.waitRetained=o.retained,o.retained||x.delete(r),o}async function Ut(e,t){let[,r]=tt(e[0],t);return r.next()}async function et(e,t){let r=ot(e[0]),n=x.get(r);if(!n)return{result:null,error:null};if(n.kind!=="process")throw new Error("Desktop process handle is unknown or already released");if(n.owner!==t)throw new Error("Desktop process handle belongs to another document generation");n.stop();let o=await Re(n);if(o.retained)throw se(o.error);return x.delete(r),{result:o.result,error:o.error}}function tt(e,t){let r=ot(e),n=x.get(r);if(!n||n.kind!=="process")throw new Error("Desktop process handle is unknown or already released");if(n.owner!==t)throw new Error("Desktop process handle belongs to another document generation");return[r,n]}function ie(e,t){if(t.retirementStarted)return;t.retirementStarted=!0,t.stop();let r=async()=>{try{let n=await Re(t);if(n.retained)throw se(n.error);x.get(e)===t&&x.delete(e)}catch{setTimeout(r,1e3)}};r()}function ge(e){T===e&&(T=null);for(let t of k.values())t.owner===e&&N(t,new Error("Desktop document generation retired"));for(let t of O.values())t.owner===e&&ce(t);for(let[t,r]of x)r.owner===e&&ie(t,r);for(let[t,r]of S)r.owner===e&&(r.controller.abort(new Error("Desktop document generation retired")),r.reader?.cancel().catch(()=>{}),M(t,r))}async function rt(){if(Fe)return;Fe=!0,oe.removeAllListeners("line"),oe.close();for(let r of k.values())N(r,new Error("Desktop capability host failed"));let e=Array.from(x.values());for(let r of e)r.stop();for(let r of S.values())r.controller.abort(new Error("Desktop capability host failed"));let t=null;try{await Promise.race([Promise.allSettled(e.map(r=>r.result)),new Promise(r=>{t=setTimeout(r,Pt)})])}finally{t!==null&&clearTimeout(t);for(let r of e)r.settled||L(r.child,"SIGKILL");process.exit(1)}}function nt(e){let t=e instanceof TypeError?"TypeError":e instanceof RangeError?"RangeError":"Error",r=e instanceof Error?e.message:"Desktop process failed";return(typeof r!="string"||r.length===0)&&(r="Desktop process failed"),r.length>65536&&(r=r.slice(0,65536)),{name:t,message:r}}function se(e){return e.name==="TypeError"?new TypeError(e.message):e.name==="RangeError"?new RangeError(e.message):new Error(e.message)}function Gt(e){return e.result.then(t=>({result:t,error:null,retained:!1}),t=>({result:null,error:nt(t),retained:!1}))}async function we(e){let t=null,r=new Error(`Process termination could not be confirmed within ${Ae} milliseconds`);try{return await Promise.race([e,new Promise(n=>{t=setTimeout(()=>n({result:null,error:nt(r),retained:!0}),Ae)})])}finally{t!==null&&clearTimeout(t)}}async function Re(e){let t=Gt(e);if(!e.terminationRequested){let i=await Promise.race([t,e.termination.then(()=>Le)]);if(i!==Le)return i}if(e.rootExited&&!e.stopping){let i=await Promise.race([t,e.stopRequest.then(()=>J)]);return i!==J?i:await we(t)}let r=we(t),n=await Promise.race([t,r,e.stopping?new Promise(()=>{}):e.rootExit.then(()=>Oe)]);if(n!==Oe)return n;if(e.stopping)return await r;let o=await Promise.race([t,e.stopRequest.then(()=>J)]);return o!==J?o:await we(t)}function ot(e){if(!Number.isSafeInteger(e)||e<1)throw new TypeError("Desktop process handle is invalid");return e}async function qt(e,t){let[r,n=[],o={}]=e;if(typeof r!="string"||!Dt.has(r)||r!==Q(r))throw new Error(`Process '${String(r)}' is not granted by desktop.permissions.processes`);if(!Array.isArray(n)||n.length>1e3)throw new TypeError("Process args must be a bounded List<string>");let i=0;for(let u of n){if(typeof u!="string"||u.length===0||u.includes("\0")||u.length>1024*1024)throw new TypeError("Process args must be a bounded List<string>");if(i+=u.length,i>1024*1024)throw new RangeError("Process arguments cannot exceed 1 MiB")}if(!o||typeof o!="object"||Array.isArray(o))throw new TypeError("Process options must be a record");let a=new Set(["cwd","env","stdin","timeout","maxOutputBytes"]);for(let u of Object.keys(o))if(!a.has(u))throw new TypeError(`Process options has unknown field '${u}'`);let c=_(o.timeout??12e4,0,6e5,"Process timeout"),l=_(o.maxOutputBytes??4*1024*1024,1,16*1024*1024,"Process maxOutputBytes"),f=o.cwd==null?G??Xe:await A(o.cwd),P=o.stdin??"";V(P,"Process stdin",16*1024*1024);let w=Object.create(null);for(let u of["HOME","LANG","LC_ALL","PATH","SHELL","TERM","TMPDIR","USER"])typeof process.env[u]=="string"&&(w[u]=process.env[u]);if(o.env!=null){if(!Array.isArray(o.env)||o.env.length>1e3)throw new TypeError("Process env must be Map<string, string>");let u=0;for(let h of o.env){if(!Array.isArray(h)||h.length!==2||typeof h[0]!="string"||!/^[A-Za-z_][A-Za-z0-9_]*$/u.test(h[0])||h[0]==="PATH"||typeof h[1]!="string"||h[1].includes("\0"))throw new TypeError("Process env must contain valid string variables and cannot replace PATH");if(u+=h[0].length+h[1].length,u>1024*1024)throw new RangeError("Process env cannot exceed 1 MiB");w[h[0]]=h[1]}}let D=await Vt(r,w.PATH??"");return Xt(D,n,{cwd:f,environment:w,stdin:P,timeout:c,maxOutputBytes:l},t)}async function Xt(e,t,r,n){let{cwd:o,environment:i,stdin:a,timeout:c,maxOutputBytes:l}=r,f=yt(e,t,{cwd:o,env:i,shell:!1,windowsHide:!0,detached:process.platform!=="win32",stdio:["pipe","pipe","pipe"]}),P,w=new Promise(p=>{P=p}),D,u=new Promise(p=>{D=p}),h,H=new Promise(p=>{h=p}),s={child:f,pid:f.pid??0,settled:!1,stopping:!1,terminationRequested:!1,termination:w,rootExited:!1,rootExit:u,stopRequest:H,stdout:[],stderr:[],bytes:0,outputChunks:0,outputQueue:[],outputWaiter:null,reading:!1,waitStarted:!1,waitRetained:!1,stdoutDecoder:new ke("utf8"),stderrDecoder:new ke("utf8"),failure:null,timer:null,exitTimer:null,result:null,terminate(p,m){if(p&&!s.failure&&(s.failure=p),s.terminationRequested||(s.terminationRequested=!0,P()),s.outputWaiter){let d=s.outputWaiter;s.outputWaiter=null,d.reject(s.failure??new Error("Process output is unavailable after stop()"))}L(f,m)},stop(){if(!s.settled){if(s.stopping){L(f,"SIGKILL");return}s.stopping=!0,h(),s.exitTimer&&(clearTimeout(s.exitTimer),s.exitTimer=null),s.terminate(null,"SIGTERM"),setTimeout(()=>{s.settled||L(f,"SIGKILL")},2e3).unref()}},async next(){if(s.waitStarted)throw new Error("Process output must be consumed before wait()");if(s.stopping)throw new Error("Process output is unavailable after stop()");if(s.terminationRequested)throw s.failure??new Error("Process output is unavailable after termination");if(s.reading)throw new Error("Process.next() allows only one active pull");s.reading=!0;try{if(s.outputQueue.length>0)return s.outputQueue.shift();if(s.settled){if(s.failure)throw s.failure;return null}return await new Promise((p,m)=>{s.outputWaiter={resolve:p,reject:m}})}finally{s.reading=!1}}};return s.result=new Promise((p,m)=>{let d=(y,R)=>{if(R.length===0||s.failure)return;if(s.outputChunks+=1,s.outputChunks>1e6){s.terminate(new RangeError("Process output cannot exceed 1000000 chunks"),"SIGKILL");return}let g=Object.freeze({channel:y,text:R});if(s.outputWaiter){let B=s.outputWaiter;s.outputWaiter=null,B.resolve(g)}else s.outputQueue.push(g)},I=(y,R,g,B)=>{if(s.failure)return;if(s.bytes+=B.byteLength,s.bytes>l){s.terminate(new RangeError("Process output exceeded maxOutputBytes"),"SIGKILL");return}let W=Buffer.from(B);y.push(W),d(g,R.write(W))};f.stdout.on("data",y=>I(s.stdout,s.stdoutDecoder,"stdout",y)),f.stderr.on("data",y=>I(s.stderr,s.stderrDecoder,"stderr",y)),f.once("error",y=>{s.terminate(y,"SIGKILL")}),f.once("exit",()=>{s.rootExited=!0,D(),s.stopping||(L(f,"SIGTERM"),setTimeout(()=>{s.settled||L(f,"SIGKILL")},2e3).unref(),s.exitTimer=setTimeout(()=>{s.settled||(s.failure||(s.failure=new Error(`Process output streams did not close within ${He} milliseconds after process exit`)),f.stdout.destroy(),f.stderr.destroy())},He),s.exitTimer.unref())}),f.once("close",(y,R)=>{if(s.settled=!0,s.timer&&clearTimeout(s.timer),s.exitTimer&&clearTimeout(s.exitTimer),d("stdout",s.stdoutDecoder.end()),d("stderr",s.stderrDecoder.end()),s.outputWaiter){let g=s.outputWaiter;s.outputWaiter=null,s.outputQueue.length>0?g.resolve(s.outputQueue.shift()):s.failure?g.reject(s.failure):g.resolve(null)}s.failure?m(s.failure):p({code:y,signal:R,stdout:Buffer.concat(s.stdout).toString("utf8"),stderr:Buffer.concat(s.stderr).toString("utf8")}),n()})}),s.timer=c===0?null:setTimeout(()=>{s.settled||s.terminate(new Error(`Process timed out after ${c} milliseconds`),"SIGKILL")},c),f.stdin.end(a),s}function L(e,t){if(e.pid){if(process.platform==="win32"){try{e.kill(t)}catch{}return}try{process.kill(-e.pid,t)}catch{try{e.kill(t)}catch{}}}}async function Vt(e,t){for(let r of t.split(process.platform==="win32"?";":":")){if(!r||!Z(r))continue;let n=E(r,e);try{await ft(n,lt.X_OK);let o=await F(n);if(b.some(i=>ue(i,o)))throw new Error(`Process '${e}' resolves inside a writable Desktop file root`);return o}catch(o){if(o instanceof Error&&o.message.includes("writable Desktop file root"))throw o}}throw new Error(`Granted process '${e}' was not found on the trusted executable path`)}async function Kt(e,t,r){if(r.cancelled)throw new Error("Desktop host request was cancelled");let[n,o,i,a={}]=e,c=ve(n);if(S.has(c))throw new Error("Desktop HTTP handle is already active");if(S.size>=128)throw new RangeError("Desktop HTTP handle limit reached");if(typeof o!="string")throw new TypeError("HTTP method must be text");let l=o.toUpperCase();if(l.length===0||l.length>32||!/^[!#$%&'*+.^_\x60|~0-9A-Z-]+$/u.test(l)||["CONNECT","TRACE","TRACK"].includes(l))throw new TypeError("HTTP method is invalid or forbidden");let f=it(i);if(!a||typeof a!="object"||Array.isArray(a))throw new TypeError("HTTP options must be a record");let P=new Set(["headers","secretHeaders","body","timeout","maxBytes"]);for(let d of Object.keys(a))if(!P.has(d))throw new TypeError(`HTTP options has an unknown field '${d}'`);let w=_(a.timeout??12e4,0,6e5,"HTTP timeout"),D=_(a.maxBytes??16*1024*1024,1,ze,"HTTP maxBytes"),u=new Headers;if(a.headers!=null){if(!Array.isArray(a.headers)||a.headers.length>100)throw new TypeError("HTTP headers must be Map<string, string>");for(let d of a.headers){if(!Array.isArray(d)||d.length!==2||typeof d[0]!="string"||typeof d[1]!="string"||/[\r\n]/u.test(d[1]))throw new TypeError("HTTP headers are invalid");u.append(d[0],d[1])}}let h=Qt(a.secretHeaders,u),H=a.body??null;if(H!==null&&typeof H!="string")throw new TypeError("Desktop HTTP body must be validated text");if(H!==null&&Buffer.byteLength(H,"utf8")>v)throw new RangeError("HTTP body cannot exceed 16 MiB");if((l==="GET"||l==="HEAD")&&H!==null)throw new TypeError(`${l} requests cannot have a body`);let s=new AbortController;Pe(r,()=>s.abort(new Error("Desktop host request was cancelled")));let p={owner:t,controller:s,reader:null,decoder:new TextDecoder("utf-8",{fatal:!0}),maxBytes:D,bytes:0,chunks:0,declaredTooLarge:!1,timer:w===0?null:setTimeout(()=>s.abort(new Error("HTTP request timed out")),w)};S.set(c,p),r.cancelled&&s.abort(new Error("Desktop host request was cancelled"));let m=null;try{if(m=await Zt(f,l,u,h,H,s.signal),t!==T)throw new Error("Desktop document generation is no longer active");let d=m.ok,I=m.status,y=m.statusText,R=m.url;if(typeof d!="boolean"||!Number.isInteger(I)||I<100||I>599||d!==(I>=200&&I<=299))throw new TypeError("Fetch returned invalid HTTP response metadata");if(typeof y!="string")throw new TypeError("HTTP response status text must be text");if(y.length>65536)throw new RangeError("HTTP response status text cannot exceed 64 KiB");if(typeof R!="string")throw new TypeError("HTTP response URL must be text");if(R.length>2*1024*1024)throw new RangeError("HTTP response URLs cannot exceed 2 MiB");let g=[...m.headers.entries()],B=0;if(g.length>100)throw new RangeError("HTTP response headers cannot exceed 100 fields");for(let[at,ct]of g)if(B+=at.length+ct.length,B>65536)throw new RangeError("HTTP response headers cannot exceed 64 KiB");let W=m.body!==null,Se=er(m.headers.get("content-length"));return p.declaredTooLarge=W&&Se!==null&&Se>D,p.reader=m.body?.getReader()??null,W||M(c,p),{ok:d,status:I,statusText:y,url:R,headers:g,body:W}}catch(d){try{await m?.body?.cancel(d)}catch{}throw M(c,p),d}}function Qt(e,t){if(e==null)return new Set;if(!Array.isArray(e)||e.length>16)throw new TypeError("HTTP secretHeaders must be a List with at most 16 entries");let r=new Set(["connection","content-length","cookie","cookie2","host","proxy-authorization","te","trailer","transfer-encoding","upgrade"]),n=new Set;for(let i of e){if(!i||typeof i!="object"||Array.isArray(i)||Object.keys(i).some(f=>!["name","environment","prefix"].includes(f))||typeof i.name!="string"||!/^[!#$%&'*+.^_|~0-9A-Za-z-]+$/u.test(i.name)||typeof i.environment!="string"||!/^[A-Z_][A-Z0-9_]{0,127}$/u.test(i.environment)||typeof i.prefix!="string"||i.prefix.length>256||/[\r\n]/u.test(i.prefix))throw new TypeError("HTTP secret header descriptor is invalid");let a=i.name.toLowerCase();if(r.has(a))throw new TypeError("HTTP secret header name is transport-controlled");if(!vt.has(i.environment))throw new Error(`Secret '${i.environment}' is not granted by desktop.permissions.secrets`);if(t.has(i.name)||n.has(a))throw new TypeError("HTTP secret header conflicts with another header");let c=process.env[i.environment];if(c===void 0)throw new Error(`Granted Desktop secret '${i.environment}' is unavailable`);let l=i.prefix+c;if(/\r|\n/u.test(l)||Buffer.byteLength(l,"utf8")>65536)throw new RangeError("HTTP secret header value is outside the supported bounds");t.set(i.name,l),n.add(a)}if([...t].length>100)throw new RangeError("HTTP headers cannot exceed 100 fields");let o=0;for(let[i,a]of t)if(o+=i.length+a.length,o>65536)throw new RangeError("HTTP headers cannot exceed 64 KiB");return n}async function Zt(e,t,r,n,o,i){let a=e,c=t,l=r,f=o;for(let P=0;;P+=1){Ce(a);let w;try{w=await fetch(a,{method:c,headers:l,body:f,signal:i,redirect:"manual"})}catch(h){throw i.aborted?h:new K("request")}if(![301,302,303,307,308].includes(w.status))return w;let D=w.headers.get("location");if(D===null)return w;if(P>=Ie){try{await w.body?.cancel()}catch{}throw new Error(`HTTP redirect limit of ${Ie} was exceeded`)}let u;try{u=it(new URL(D,a).href),Ce(u)}finally{try{await w.body?.cancel()}catch{}}if(u.origin!==a.origin){l=new Headers(l);for(let h of["authorization","proxy-authorization","cookie","cookie2",...n])l.delete(h)}(w.status===303&&c!=="HEAD"||(w.status===301||w.status===302)&&c==="POST")&&(c="GET",f=null,l=new Headers(l),l.delete("content-encoding"),l.delete("content-language"),l.delete("content-location"),l.delete("content-type")),a=u}}function it(e){if(typeof e!="string"||e.length===0||e.length>2*1024*1024)throw new TypeError("HTTP URL must be bounded text");let t;try{t=new URL(e)}catch{throw new TypeError("HTTP URL must be absolute")}if(t.protocol!=="http:"&&t.protocol!=="https:")throw new TypeError("HTTP URL must use http or https");if(t.username||t.password)throw new TypeError("HTTP URL credentials are not allowed");return t}function Ce(e){if(!Rt.has(e.origin))throw new Error(`Network origin '${e.origin}' is not granted by desktop.permissions.network`)}async function Jt(e,t){let r=ve(e[0]),n=S.get(r);if(!n)throw new Error("Desktop HTTP handle is unknown or already released");if(n.owner!==t)throw new Error("Desktop HTTP handle belongs to another document generation");try{if(n.declaredTooLarge)throw new RangeError("HTTP response exceeds maxBytes");if(!n.reader){let i=n.decoder.decode();return M(r,n),{done:!0,text:i}}let o;try{o=await n.reader.read()}catch(i){throw n.controller.signal.aborted?i:new K("response")}if(t!==T)throw new Error("Desktop document generation is no longer active");if(o.done){let i=n.decoder.decode();return M(r,n),{done:!0,text:i}}if(!(o.value instanceof Uint8Array))throw new TypeError("HTTP response yielded a non-byte chunk");if(n.bytes+=o.value.byteLength,n.chunks+=1,n.bytes>n.maxBytes)throw new RangeError("HTTP response exceeds maxBytes");if(n.chunks>gt)throw new RangeError("HTTP responses cannot exceed 1000000 chunks");return{done:!1,text:n.decoder.decode(o.value,{stream:!0})}}catch(o){try{await n.reader?.cancel(o)}catch{}throw M(r,n),o}}async function Yt(e,t){let r=ve(e[0]),n=S.get(r);if(!n)return null;if(n.owner!==t)throw new Error("Desktop HTTP handle belongs to another document generation");n.controller.abort(new Error("HTTP request cancelled"));try{await n.reader?.cancel()}catch{}return M(r,n),null}function ve(e){if(!Number.isSafeInteger(e)||e<1)throw new TypeError("Desktop HTTP handle is invalid");return e}function M(e,t){let r=S.get(e);!r||r!==t||(r.timer&&clearTimeout(r.timer),S.delete(e))}function _(e,t,r,n){if(!Number.isSafeInteger(e)||e<t||e>r)throw new RangeError(`${n} must be an integer from ${t} through ${r}`);return e}function er(e){if(typeof e!="string"||e.length===0)return null;if(typeof Me!="function"||typeof Ne!="function")throw new TypeError("The host transport sizing intrinsics are unavailable");let t=0;for(let r=0;r<e.length;r+=1){let n=Ne(Me,e,[r]);if(n<48||n>57)return null;if(t>900719925474099||(t=t*10+n-48,t>9007199254740991))return 1/0}return t}function V(e,t,r){if(typeof e!="string"||e.includes("\0")||Buffer.byteLength(e,"utf8")>r)throw new RangeError(`${t} is outside the supported bounds`);return e}function st(e){return e instanceof K?{kind:"http-transport",message:e.message,phase:e.phase}:e instanceof Error&&typeof e.message=="string"?e.message.slice(0,4096):"Desktop capability failed"}function X(e){let t=JSON.stringify(e);Buffer.byteLength(t,"utf8")>ze+We?process.stdout.write(`${JSON.stringify({id:e.id,ok:!1,error:"Desktop response exceeds its transport bound"})}
|
|
2
|
+
import{constants as ct,watch as lt}from"node:fs";import{access as ut,appendFile as ft,copyFile as dt,lstat as j,mkdir as $e,readFile as ge,readdir as wt,realpath as F,rename as je,rm as he,stat as C,writeFile as pe}from"node:fs/promises";import{createInterface as ht}from"node:readline";import{basename as Q,dirname as ae,isAbsolute as Y,relative as pt,resolve as g}from"node:path";import{spawn as mt}from"node:child_process";import{StringDecoder as Ie}from"node:string_decoder";var yt=128*1024*1024,S=16*1024*1024,Et=2*1024*1024,Ue=64*1024*1024,Tt=1e6,ve=20,re=4096,We=128,gt=4096,xt=2*1024*1024,bt=20,He=5e3,ke=5e3,Pt=8e3,Oe=Object.freeze({}),Le=Object.freeze({}),Z=Object.freeze({}),Ne=Object.getOwnPropertyDescriptor(String.prototype,"charCodeAt")?.value,_e=Object.getOwnPropertyDescriptor(Reflect,"apply")?.value,[ze,Ge,xe]=process.argv.slice(2);if(!ze||!Ge||!xe)throw new Error("Velar Desktop worker requires config, app-data, and launch roots");var $=JSON.parse(await ge(ze,"utf8"));if($.protocolVersion!==1||!$.permissions||typeof $.permissions!="object")throw new Error("Invalid Velar Desktop worker configuration");var be=new Set($.permissions.files??[]),Rt=new Set($.permissions.processes??[]),Dt=new Set($.permissions.network??[]),St=new Set($.permissions.secrets??[]),x=new Map,At=1,A=new Map,L=new Map,J=new Map,I=new Map,Me=1,ee=1,Fe=!1,E=null,b=[],z=[],me=null,ye=null,G=null,ne=null,Ee=Promise.resolve(),K=class extends Error{constructor(t){super(t==="request"?"HTTP request transport failed":"HTTP response transport failed"),this.name="HttpTransportError",this.phase=t}},Ve=await F(xe);if(be.has("app-data")){let e=g(Ge,"data");await $e(e,{recursive:!0}),ye=e,me=await F(e)}be.has("project")&&(ne=g(xe),G=Ve);qe();var oe=ht({input:process.stdin,crlfDelay:1/0,terminal:!1});oe.once("close",()=>{E!==null&&Te(E);for(let e of I.values())_(e,new Error("Desktop capability host closed"));for(let e of L.values())ce(e)});oe.on("line",async e=>{let t=0,r=null;try{if(Buffer.byteLength(e,"utf8")>yt)throw new RangeError("Desktop request exceeds its 128 MiB transport bound");let n=JSON.parse(e);if(n?.hostCommand!==void 0){await It(n);return}if(t=n.id,n.protocolVersion!==1||!Number.isSafeInteger(t)||t<1||typeof n.capability!="string"||typeof n.operation!="string"||!Array.isArray(n.args)||!Xe(n.owner)||n.owner!==E)throw new TypeError("Invalid Desktop worker request");if(L.has(t))throw new Error("Desktop worker request identity is already active");r={owner:n.owner,cancelled:!1,cancel:null},L.set(t,r);let o=await vt(n.capability,n.operation,n.args,n.owner,r);if(r.cancelled)throw new Error("Desktop host request was cancelled");if(n.owner!==E)throw new Error("Desktop document generation is no longer active");X({id:t,ok:!0,value:o})}catch(n){X({id:t,ok:!1,error:it(n)})}finally{r!==null&&L.get(t)===r&&L.delete(t)}});async function It(e){if(e.protocolVersion!==1||!Xe(e.owner))throw new TypeError("Invalid Desktop host command");if(e.hostCommand==="owner-activate"){if(Object.keys(e).some(t=>!["protocolVersion","hostCommand","owner"].includes(t)))throw new TypeError("Invalid Desktop host command");E!==null&&E!==e.owner&&Te(E),E=e.owner;return}if(e.hostCommand==="owner-retire"){if(Object.keys(e).some(t=>!["protocolVersion","hostCommand","owner"].includes(t)))throw new TypeError("Invalid Desktop host command");Te(e.owner);return}if(e.hostCommand==="request-cancel"){if(Object.keys(e).some(r=>!["protocolVersion","hostCommand","owner","requestID"].includes(r))||!Number.isSafeInteger(e.requestID)||e.requestID<1)throw new TypeError("Invalid Desktop host command");let t=L.get(e.requestID);t&&t.owner===e.owner&&ce(t);return}if(e.hostCommand==="project-root-set"){if(Object.keys(e).some(r=>!["protocolVersion","hostCommand","owner","commandID","path"].includes(r))||e.owner!==E||!Number.isSafeInteger(e.commandID)||e.commandID<1||typeof e.path!="string"||!Y(e.path)||e.path.length===0||e.path.length>re||e.path.includes("\0")||!be.has("project"))throw new TypeError("Invalid Desktop project-root command");let t=Ee.then(()=>Ht(e.path));Ee=t.catch(()=>{});try{await t,X({protocolVersion:1,hostEvent:"project-root-settled",owner:e.owner,commandID:e.commandID,ok:!0})}catch(r){X({protocolVersion:1,hostEvent:"project-root-settled",owner:e.owner,commandID:e.commandID,ok:!1,error:it(r)})}return}throw new TypeError("Unknown Desktop host command")}function ce(e){if(!e.cancelled){e.cancelled=!0;try{e.cancel?.()}catch{}}}function Pe(e,t){e.cancel=t,e.cancelled&&t()}function Xe(e){return typeof e=="string"&&/^[0-9a-f]{32}$/u.test(e)}async function vt(e,t,r,n,o){if(await Ee,e==="fs")return Bt(t,r,n,o);if(e==="process"){if(t==="run")return Ut(r,n,o);if(t==="start")return Ye(r,n,o);if(t==="read")return zt(r,n);if(t==="wait")return Ze(r,n);if(t==="stop")return Je(r,n)}if(e==="http"){if(t==="request")return Jt(r,n,o);if(t==="read")return rr(r,n);if(t==="cancel")return nr(r,n)}throw new Error(`Unknown Desktop capability '${e}.${t}'`)}function qe(){b.length=0,z.length=0,me!==null&&ye!==null&&(b.push(me),z.push(ye)),G!==null&&ne!==null&&(b.push(G),z.push(ne))}async function Ht(e){let t=await F(e);if(!(await C(t)).isDirectory())throw new TypeError("Desktop project grant must identify a directory");for(let n of I.values())_(n,new Error("Desktop project grant changed"));for(let n of L.values())ce(n);for(let[n,o]of x)ie(n,o);for(let[n,o]of A)o.controller.abort(new Error("Desktop project grant changed")),o.reader?.cancel().catch(()=>{}),N(n,o);ne=g(e),G=t,qe()}function kt(){let e=Me;for(let t=0;t<=We;t+=1){if(!I.has(e))return Me=e>=Number.MAX_SAFE_INTEGER?1:e+1,e;e=e>=Number.MAX_SAFE_INTEGER?1:e+1}throw new RangeError("Desktop file watcher handle space is unavailable")}function _(e,t=null){if(e.closed)return!1;e.closed=!0,e.timer!==null&&(clearTimeout(e.timer),e.timer=null);try{e.watcher.close()}catch{}if(I.delete(e.handle),e.pending!==null){let r=e.pending;e.pending=null,r.activity.cancel=null,t===null?r.resolve(null):r.reject(t)}return!0}function Ke(e){if(e.rescan)return e.rescan=!1,e.paths.clear(),e.units=0,{paths:[],rescan:!0};let t=[...e.paths].sort();return e.paths.clear(),e.units=0,{paths:t,rescan:!1}}function Qe(e){e.pending===null||e.timer!==null||e.failure!==null||!e.rescan&&e.paths.size===0||(e.timer=setTimeout(()=>{if(e.timer=null,e.pending===null||e.closed)return;let t=e.pending;e.pending=null,t.activity.cancel=null,t.resolve(Ke(e))},bt))}function fe(e){e.rescan=!0,e.paths.clear(),e.units=0,Qe(e)}function Ot(e,t){if(e.closed||e.failure!==null||e.rescan)return;let r;if(!e.directory)r=e.root;else{if(typeof t!="string"||t.length===0||t.length>re||t.includes("\0")||Y(t)){fe(e);return}if(r=g(e.root,t),!ue(e.root,r)||r.length>re){fe(e);return}}if(!e.paths.has(r)){if(e.paths.size>=gt||e.units+r.length>xt){fe(e);return}e.paths.add(r),e.units+=r.length}Qe(e)}function Lt(e,t){if(!(e.closed||e.failure!==null)){e.failure=t instanceof Error?t:new Error("Desktop file watcher failed"),e.timer!==null&&(clearTimeout(e.timer),e.timer=null);try{e.watcher.close()}catch{}e.pending!==null&&_(e,e.failure)}}async function Nt(e,t){if(e.length!==2||typeof e[1]!="boolean")throw new TypeError("watchStart arguments are invalid");if(I.size>=We)throw new RangeError("Desktop host cannot own more than 128 file watchers");let r=await H(e[0]),n=await C(r),o=n.isDirectory();if(!o&&!n.isFile())throw new TypeError("watchFiles requires a file or directory path");if(e[1]&&!o)throw new TypeError("recursive watchFiles requires a directory path");let i=kt(),a={handle:i,owner:t,root:r,directory:o,watcher:null,paths:new Set,units:0,rescan:!1,pending:null,timer:null,failure:null,closed:!1};return a.watcher=lt(r,{recursive:e[1],encoding:"utf8",persistent:!0},(c,l)=>Ot(a,l)),a.watcher.once("error",c=>Lt(a,c)),I.set(i,a),i}function _t(e,t){let r=M(e,1,Number.MAX_SAFE_INTEGER,"Desktop file watcher handle"),n=I.get(r);if(!n)throw new Error("Desktop file watcher handle is unknown or already released");if(n.owner!==t)throw new Error("Desktop file watcher belongs to another document generation");return n}function Mt(e,t,r){if(e.length!==1)throw new TypeError("watchNext arguments are invalid");let n=_t(e[0],t);if(n.pending!==null)throw new Error("FileWatcher.next already has an active pull");if(n.failure!==null){let o=n.failure;throw _(n),o}return n.rescan||n.paths.size>0?Ke(n):new Promise((o,i)=>{let a={resolve:o,reject:i,activity:r};n.pending=a,Pe(r,()=>{n.pending===a&&_(n,new Error("Desktop file watcher pull was cancelled"))})})}function Ft(e,t){if(e.length!==1)throw new TypeError("watchClose arguments are invalid");let r=M(e[0],1,Number.MAX_SAFE_INTEGER,"Desktop file watcher handle"),n=I.get(r);if(!n)return!1;if(n.owner!==t)throw new Error("Desktop file watcher belongs to another document generation");return _(n)}async function Bt(e,t,r,n){if(e==="watchStart")return Nt(t,r);if(e==="watchNext")return Mt(t,r,n);if(e==="watchClose")return Ft(t,r);if(e==="readText"){let[o,i=S]=t,a=await Ct(o,i,"readText");return new TextDecoder("utf-8",{fatal:!0}).decode(a)}if(e==="exists")try{return await H(t[0]),!0}catch(o){if(o?.code==="ENOENT")return!1;throw o}if(e==="list"){let o=M(t[1]??1e5,1,1e5,"list maxItems"),i=await wt(await H(t[0]));if(i.length>o)throw new RangeError("list result exceeds maxItems");let a=0;for(let c of i)if(a+=c.length,a>Et)throw new RangeError("list result cannot exceed 2 MiB of text");return i.sort()}if(e==="info"){let o;try{o=await te(t[0])}catch(a){if(a?.code==="ENOENT")return null;throw a}let i=await j(o);return{name:Q(o),kind:i.isFile()?"file":i.isDirectory()?"directory":i.isSymbolicLink()?"symlink":"other",size:i.size,modifiedAt:i.mtimeMs}}if(e==="canonical")return H(t[0]);if(e==="makeDirectory")return await $e(await $t(t[0]),{recursive:!0}),null;if(e==="createText"){let o=await de(t[0]),i=q(t[1],"createText text",S);return W([o],async()=>{try{await pe(o,i,{encoding:"utf8",flag:"wx"})}catch(a){throw a?.code==="EEXIST"?new Error("createText target already exists"):a}return null})}if(e==="replaceTextIfMatches"){let o=await H(t[0]),i=Buffer.from(q(t[1],"replaceTextIfMatches expected text",S),"utf8"),a=Buffer.from(q(t[2],"replaceTextIfMatches replacement text",S),"utf8");return W([o],async()=>{let c=await C(o);if(!c.isFile())throw new TypeError("replaceTextIfMatches requires a file path");if(c.size>S)throw new RangeError("replaceTextIfMatches file exceeds 16 MiB");let l=await ge(o);if(l.byteLength>S)throw new RangeError("replaceTextIfMatches file exceeds 16 MiB");return l.equals(i)?(await jt(o,a,c.mode),!0):!1})}if(e==="writeText"||e==="appendText"){let o=await de(t[0]),i=q(t[1],`${e} text`,S);return W([o],async()=>{let a=await C(o).catch(c=>c?.code==="ENOENT"?null:Promise.reject(c));if(a&&!a.isFile())throw new TypeError(`${e} requires a file path`);if(e==="writeText")await pe(o,i,"utf8");else{if(a&&a.size+Buffer.byteLength(i,"utf8")>S)throw new RangeError("appendText result cannot exceed 16 MiB");await ft(o,i,"utf8")}return null})}if(e==="copyFile"){let o=await H(t[0]);if(!(await C(o)).isFile())throw new TypeError("copyFile requires a regular file source");let i=await de(t[1]);return W([i],async()=>(t[2]!==!0&&await Be(i,"copyFile"),await dt(o,i),null))}if(e==="move"){let o=await te(t[0]);if(b.includes(o))throw new Error("move refuses a granted Desktop file root");let i=await te(t[1],!0);return W([o,i],async()=>(t[2]!==!0?await Be(i,"move"):await he(i,{force:!0,recursive:!1}),await je(o,i),null))}if(e==="removeFile"){let o=await te(t[0]);return W([o],async()=>{if((await j(o)).isDirectory())throw new TypeError("removeFile refuses directories");return await he(o,{recursive:!1,force:!1}),null})}throw new Error(`Unknown filesystem operation '${e}'`)}async function Ct(e,t,r){t=M(t,1,S,`${r} maxBytes`),e=await H(e);let n=await C(e);if(!n.isFile())throw new TypeError(`${r} requires a file path`);if(n.size>t)throw new RangeError(`${r} file exceeds maxBytes`);let o=await ge(e);if(o.byteLength>t)throw new RangeError(`${r} file exceeds maxBytes`);return o}async function H(e){let t=le(e);Re(t);let r=await F(t);return V(r),r}async function de(e){let t=le(e);try{return await H(t)}catch(r){if(r?.code!=="ENOENT")throw r;try{throw await j(t),new Error("Filesystem write target cannot be a dangling symbolic link")}catch(o){if(o?.code!=="ENOENT")throw o}let n=await F(ae(t));return V(n),g(n,Q(t))}}async function te(e,t=!1){let r=le(e);Re(r);for(let i=0;i<z.length;i+=1)if(r===z[i]||r===b[i])return t||await j(b[i]),b[i];let n=await F(ae(r));V(n);let o=g(n,Q(r));return V(o),t||await j(o),o}async function $t(e){let t=le(e);Re(t);let r=[],n=t;for(;;)try{if((await j(n)).isSymbolicLink()&&r.length===0)throw new TypeError("makeDirectory refuses a symbolic-link target");let i=await F(n);if(V(i),!(await C(i)).isDirectory())throw new TypeError("makeDirectory requires every existing ancestor to be a directory");let a=i;for(let c=r.length-1;c>=0;c-=1)a=g(a,r[c]);return V(a),a}catch(o){if(o?.code!=="ENOENT")throw o;let i=ae(n);if(i===n)throw o;r.push(Q(n)),n=i}}function le(e){if(typeof e!="string"||e.length===0||e.length>re||e.includes("\0"))throw new TypeError("Filesystem operation requires a bounded path");let t=G??b[0];if(!t)throw new Error("Desktop application has no granted filesystem scope");return Y(e)?g(e):g(t,e)}function V(e){if(!b.some(t=>ue(t,e)))throw new Error("Filesystem path is outside granted Desktop file roots")}function Re(e){if(![...z,...b].some(t=>ue(t,e)))throw new Error("Filesystem path is outside granted Desktop file roots")}function ue(e,t){let r=pt(e,t);return r===""||r!==".."&&!r.startsWith("../")&&!Y(r)}async function Be(e,t){try{await j(e)}catch(r){if(r?.code==="ENOENT")return;throw r}throw new Error(`${t} target already exists`)}async function W(e,t){let n=[...new Set(e.map(o=>g(o)))].sort().map(o=>{let i=J.get(o)??null,a,c=new Promise(l=>{a=l});return J.set(o,c),{identity:o,previous:i,release:a,tail:c}});await Promise.all(n.map(o=>o.previous));try{return await t()}finally{for(let o of n)o.release(),J.get(o.identity)===o.tail&&J.delete(o.identity)}}async function jt(e,t,r){let n=null;for(let o=0;o<1024;o+=1){let i=ee;ee=ee>=Number.MAX_SAFE_INTEGER?1:ee+1;let a=g(ae(e),`.velar-replace-${i}.tmp`);try{await pe(a,t,{flag:"wx",mode:r}),n=a;break}catch(c){if(c?.code!=="EEXIST")throw c}}if(n===null)throw new Error("replaceTextIfMatches could not allocate a temporary file");try{await je(n,e)}finally{await he(n,{force:!0,recursive:!1})}}async function Ut(e,t,r){let n=await Ye(e,t,r),o=await Ze([n.handle],t);if(o.retained)throw Wt(n.handle,t),se(o.error);if(o.error)throw se(o.error);return o.result}function Wt(e,t){let r=()=>{Je([e],t).catch(()=>{setTimeout(r,1e3)})};setTimeout(r,0)}async function Ye(e,t,r){if(x.size>=128)throw new RangeError("Desktop process handle limit reached");if(r.cancelled)throw new Error("Desktop host request was cancelled");let n=At++,o=null;if(Pe(r,()=>{o!==null&&ie(n,o)}),o=await Qt(e,()=>X({protocolVersion:1,hostEvent:"process-settled",owner:t,handle:n})),o.owner=t,o.kind="process",x.set(n,o),X({protocolVersion:1,hostEvent:"process-owned",owner:t,handle:n,pid:o.pid}),o.result.catch(()=>{}),r.cancelled||t!==E)throw ie(n,o),new Error("Desktop document generation is no longer active");return{handle:n,pid:o.pid}}async function Ze(e,t){let[r,n]=et(e[0],t);if(n.reading)throw new Error("Process wait() cannot run while next() is pending");n.waitStarted=!0,n.waitRetained&&!n.settled&&O(n.child,"SIGKILL");let o=await De(n);return n.waitRetained=o.retained,o.retained||x.delete(r),o}async function zt(e,t){let[,r]=et(e[0],t);return r.next()}async function Je(e,t){let r=nt(e[0]),n=x.get(r);if(!n)return{result:null,error:null};if(n.kind!=="process")throw new Error("Desktop process handle is unknown or already released");if(n.owner!==t)throw new Error("Desktop process handle belongs to another document generation");n.stop();let o=await De(n);if(o.retained)throw se(o.error);return x.delete(r),{result:o.result,error:o.error}}function et(e,t){let r=nt(e),n=x.get(r);if(!n||n.kind!=="process")throw new Error("Desktop process handle is unknown or already released");if(n.owner!==t)throw new Error("Desktop process handle belongs to another document generation");return[r,n]}function ie(e,t){if(t.retirementStarted)return;t.retirementStarted=!0,t.stop();let r=async()=>{try{let n=await De(t);if(n.retained)throw se(n.error);x.get(e)===t&&x.delete(e)}catch{setTimeout(r,1e3)}};r()}function Te(e){E===e&&(E=null);for(let t of I.values())t.owner===e&&_(t,new Error("Desktop document generation retired"));for(let t of L.values())t.owner===e&&ce(t);for(let[t,r]of x)r.owner===e&&ie(t,r);for(let[t,r]of A)r.owner===e&&(r.controller.abort(new Error("Desktop document generation retired")),r.reader?.cancel().catch(()=>{}),N(t,r))}async function tt(){if(Fe)return;Fe=!0,oe.removeAllListeners("line"),oe.close();for(let r of I.values())_(r,new Error("Desktop capability host failed"));let e=Array.from(x.values());for(let r of e)r.stop();for(let r of A.values())r.controller.abort(new Error("Desktop capability host failed"));let t=null;try{await Promise.race([Promise.allSettled(e.map(r=>r.result)),new Promise(r=>{t=setTimeout(r,Pt)})])}finally{t!==null&&clearTimeout(t);for(let r of e)r.settled||O(r.child,"SIGKILL");process.exit(1)}}function rt(e){let t=e instanceof TypeError?"TypeError":e instanceof RangeError?"RangeError":"Error",r=e instanceof Error?e.message:"Desktop process failed";return(typeof r!="string"||r.length===0)&&(r="Desktop process failed"),r.length>65536&&(r=r.slice(0,65536)),{name:t,message:r}}function se(e){return e.name==="TypeError"?new TypeError(e.message):e.name==="RangeError"?new RangeError(e.message):new Error(e.message)}function Gt(e){return e.result.then(t=>({result:t,error:null,retained:!1}),t=>({result:null,error:rt(t),retained:!1}))}async function we(e){let t=null,r=new Error(`Process termination could not be confirmed within ${He} milliseconds`);try{return await Promise.race([e,new Promise(n=>{t=setTimeout(()=>n({result:null,error:rt(r),retained:!0}),He)})])}finally{t!==null&&clearTimeout(t)}}async function De(e){let t=Gt(e);if(!e.terminationRequested){let i=await Promise.race([t,e.termination.then(()=>Oe)]);if(i!==Oe)return i}if(e.rootExited&&!e.stopping){let i=await Promise.race([t,e.stopRequest.then(()=>Z)]);return i!==Z?i:await we(t)}let r=we(t),n=await Promise.race([t,r,e.stopping?new Promise(()=>{}):e.rootExit.then(()=>Le)]);if(n!==Le)return n;if(e.stopping)return await r;let o=await Promise.race([t,e.stopRequest.then(()=>Z)]);return o!==Z?o:await we(t)}function nt(e){if(!Number.isSafeInteger(e)||e<1)throw new TypeError("Desktop process handle is invalid");return e}var Vt=/^(?:PATH|HOME|USERPROFILE|SHELL|TMPDIR|IFS|ENV|BASH_ENV|SHELLOPTS|BASHOPTS|PS4|EDITOR|VISUAL|PAGER|MANPAGER|MANOPT|BROWSER|SSH_ASKPASS|SUDO_ASKPASS|NODE_OPTIONS|NODE_REPL_EXTERNAL_MODULE)$/iu,Xt=/^(?:LD_|DYLD_|GIT_|XDG_|PYTHON|PERL|RUBY|LESS)/iu,qt=/(?:_COMMAND|_EDITOR|_PAGER|_OPTS)$/iu;function Kt(e){return Vt.test(e)||Xt.test(e)||qt.test(e)}async function Qt(e,t){let[r,n=[],o={}]=e;if(typeof r!="string"||!Rt.has(r)||r!==Q(r))throw new Error(`Process '${String(r)}' is not granted by desktop.permissions.processes`);if(!Array.isArray(n)||n.length>1e3)throw new TypeError("Process args must be a bounded List<string>");let i=0;for(let u of n){if(typeof u!="string"||u.length===0||u.includes("\0")||u.length>1024*1024)throw new TypeError("Process args must be a bounded List<string>");if(i+=u.length,i>1024*1024)throw new RangeError("Process arguments cannot exceed 1 MiB")}if(!o||typeof o!="object"||Array.isArray(o))throw new TypeError("Process options must be a record");let a=new Set(["cwd","env","stdin","timeout","maxOutputBytes"]);for(let u of Object.keys(o))if(!a.has(u))throw new TypeError(`Process options has unknown field '${u}'`);let c=M(o.timeout??12e4,0,6e5,"Process timeout"),l=M(o.maxOutputBytes??4*1024*1024,1,16*1024*1024,"Process maxOutputBytes"),f=o.cwd==null?G??Ve:await H(o.cwd),P=o.stdin??"";q(P,"Process stdin",16*1024*1024);let h=Object.create(null);for(let u of["HOME","LANG","LC_ALL","PATH","SHELL","TERM","TMPDIR","USER"])typeof process.env[u]=="string"&&(h[u]=process.env[u]);if(o.env!=null){if(!Array.isArray(o.env)||o.env.length>1e3)throw new TypeError("Process env must be Map<string, string>");let u=0;for(let w of o.env){if(!Array.isArray(w)||w.length!==2||typeof w[0]!="string"||!/^[A-Za-z_][A-Za-z0-9_]*$/u.test(w[0])||w[0]==="PATH"||typeof w[1]!="string"||w[1].includes("\0"))throw new TypeError("Process env must contain valid string variables and cannot replace PATH");if(Kt(w[0]))throw new TypeError(`Process env cannot set the transport- or interpreter-controlled variable '${w[0]}'`);if(u+=w[0].length+w[1].length,u>1024*1024)throw new RangeError("Process env cannot exceed 1 MiB");h[w[0]]=w[1]}}let R=await Zt(r,h.PATH??"");return Yt(R,n,{cwd:f,environment:h,stdin:P,timeout:c,maxOutputBytes:l},t)}async function Yt(e,t,r,n){let{cwd:o,environment:i,stdin:a,timeout:c,maxOutputBytes:l}=r,f=mt(e,t,{cwd:o,env:i,shell:!1,windowsHide:!0,detached:process.platform!=="win32",stdio:["pipe","pipe","pipe"]}),P,h=new Promise(p=>{P=p}),R,u=new Promise(p=>{R=p}),w,k=new Promise(p=>{w=p}),s={child:f,pid:f.pid??0,settled:!1,stopping:!1,terminationRequested:!1,termination:h,rootExited:!1,rootExit:u,stopRequest:k,stdout:[],stderr:[],bytes:0,outputChunks:0,outputQueue:[],outputWaiter:null,reading:!1,waitStarted:!1,waitRetained:!1,stdoutDecoder:new Ie("utf8"),stderrDecoder:new Ie("utf8"),failure:null,timer:null,exitTimer:null,result:null,terminate(p,m){if(p&&!s.failure&&(s.failure=p),s.terminationRequested||(s.terminationRequested=!0,P()),s.outputWaiter){let d=s.outputWaiter;s.outputWaiter=null,d.reject(s.failure??new Error("Process output is unavailable after stop()"))}O(f,m)},stop(){if(!s.settled){if(s.stopping){O(f,"SIGKILL");return}s.stopping=!0,w(),s.exitTimer&&(clearTimeout(s.exitTimer),s.exitTimer=null),s.terminate(null,"SIGTERM"),setTimeout(()=>{s.settled||O(f,"SIGKILL")},2e3).unref()}},async next(){if(s.waitStarted)throw new Error("Process output must be consumed before wait()");if(s.stopping)throw new Error("Process output is unavailable after stop()");if(s.terminationRequested)throw s.failure??new Error("Process output is unavailable after termination");if(s.reading)throw new Error("Process.next() allows only one active pull");s.reading=!0;try{if(s.outputQueue.length>0)return s.outputQueue.shift();if(s.settled){if(s.failure)throw s.failure;return null}return await new Promise((p,m)=>{s.outputWaiter={resolve:p,reject:m}})}finally{s.reading=!1}}};return s.result=new Promise((p,m)=>{let d=(y,D)=>{if(D.length===0||s.failure)return;if(s.outputChunks+=1,s.outputChunks>1e6){s.terminate(new RangeError("Process output cannot exceed 1000000 chunks"),"SIGKILL");return}let T=Object.freeze({channel:y,text:D});if(s.outputWaiter){let B=s.outputWaiter;s.outputWaiter=null,B.resolve(T)}else s.outputQueue.push(T)},v=(y,D,T,B)=>{if(s.failure)return;if(s.bytes+=B.byteLength,s.bytes>l){s.terminate(new RangeError("Process output exceeded maxOutputBytes"),"SIGKILL");return}let U=Buffer.from(B);y.push(U),d(T,D.write(U))};f.stdout.on("data",y=>v(s.stdout,s.stdoutDecoder,"stdout",y)),f.stderr.on("data",y=>v(s.stderr,s.stderrDecoder,"stderr",y)),f.once("error",y=>{s.terminate(y,"SIGKILL")}),f.once("exit",()=>{s.rootExited=!0,R(),s.stopping||(O(f,"SIGTERM"),setTimeout(()=>{s.settled||O(f,"SIGKILL")},2e3).unref(),s.exitTimer=setTimeout(()=>{s.settled||(s.failure||(s.failure=new Error(`Process output streams did not close within ${ke} milliseconds after process exit`)),f.stdout.destroy(),f.stderr.destroy())},ke),s.exitTimer.unref())}),f.once("close",(y,D)=>{if(s.settled=!0,s.timer&&clearTimeout(s.timer),s.exitTimer&&clearTimeout(s.exitTimer),d("stdout",s.stdoutDecoder.end()),d("stderr",s.stderrDecoder.end()),s.outputWaiter){let T=s.outputWaiter;s.outputWaiter=null,s.outputQueue.length>0?T.resolve(s.outputQueue.shift()):s.failure?T.reject(s.failure):T.resolve(null)}s.failure?m(s.failure):p({code:y,signal:D,stdout:Buffer.concat(s.stdout).toString("utf8"),stderr:Buffer.concat(s.stderr).toString("utf8")}),n()})}),s.timer=c===0?null:setTimeout(()=>{s.settled||s.terminate(new Error(`Process timed out after ${c} milliseconds`),"SIGKILL")},c),f.stdin.end(a),s}function O(e,t){if(e.pid){if(process.platform==="win32"){try{e.kill(t)}catch{}return}try{process.kill(-e.pid,t)}catch{try{e.kill(t)}catch{}}}}async function Zt(e,t){for(let r of t.split(process.platform==="win32"?";":":")){if(!r||!Y(r))continue;let n=g(r,e);try{await ut(n,ct.X_OK);let o=await F(n);if(b.some(i=>ue(i,o)))throw new Error(`Process '${e}' resolves inside a writable Desktop file root`);return o}catch(o){if(o instanceof Error&&o.message.includes("writable Desktop file root"))throw o}}throw new Error(`Granted process '${e}' was not found on the trusted executable path`)}async function Jt(e,t,r){if(r.cancelled)throw new Error("Desktop host request was cancelled");let[n,o,i,a={}]=e,c=Se(n);if(A.has(c))throw new Error("Desktop HTTP handle is already active");if(A.size>=128)throw new RangeError("Desktop HTTP handle limit reached");if(typeof o!="string")throw new TypeError("HTTP method must be text");let l=o.toUpperCase();if(l.length===0||l.length>32||!/^[!#$%&'*+.^_\x60|~0-9A-Z-]+$/u.test(l)||["CONNECT","TRACE","TRACK"].includes(l))throw new TypeError("HTTP method is invalid or forbidden");let f=ot(i);if(!a||typeof a!="object"||Array.isArray(a))throw new TypeError("HTTP options must be a record");let P=new Set(["headers","secretHeaders","body","timeout","maxBytes"]);for(let d of Object.keys(a))if(!P.has(d))throw new TypeError(`HTTP options has an unknown field '${d}'`);let h=M(a.timeout??12e4,0,6e5,"HTTP timeout"),R=M(a.maxBytes??16*1024*1024,1,Ue,"HTTP maxBytes"),u=new Headers;if(a.headers!=null){if(!Array.isArray(a.headers)||a.headers.length>100)throw new TypeError("HTTP headers must be Map<string, string>");for(let d of a.headers){if(!Array.isArray(d)||d.length!==2||typeof d[0]!="string"||typeof d[1]!="string"||/[\r\n]/u.test(d[1]))throw new TypeError("HTTP headers are invalid");u.append(d[0],d[1])}}let w=er(a.secretHeaders,u),k=a.body??null;if(k!==null&&typeof k!="string")throw new TypeError("Desktop HTTP body must be validated text");if(k!==null&&Buffer.byteLength(k,"utf8")>S)throw new RangeError("HTTP body cannot exceed 16 MiB");if((l==="GET"||l==="HEAD")&&k!==null)throw new TypeError(`${l} requests cannot have a body`);let s=new AbortController;Pe(r,()=>s.abort(new Error("Desktop host request was cancelled")));let p={owner:t,controller:s,reader:null,decoder:new TextDecoder("utf-8",{fatal:!0}),maxBytes:R,bytes:0,chunks:0,declaredTooLarge:!1,timer:h===0?null:setTimeout(()=>s.abort(new Error("HTTP request timed out")),h)};A.set(c,p),r.cancelled&&s.abort(new Error("Desktop host request was cancelled"));let m=null;try{if(m=await tr(f,l,u,w,k,s.signal),t!==E)throw new Error("Desktop document generation is no longer active");let d=m.ok,v=m.status,y=m.statusText,D=m.url;if(typeof d!="boolean"||!Number.isInteger(v)||v<100||v>599||d!==(v>=200&&v<=299))throw new TypeError("Fetch returned invalid HTTP response metadata");if(typeof y!="string")throw new TypeError("HTTP response status text must be text");if(y.length>65536)throw new RangeError("HTTP response status text cannot exceed 64 KiB");if(typeof D!="string")throw new TypeError("HTTP response URL must be text");if(D.length>2*1024*1024)throw new RangeError("HTTP response URLs cannot exceed 2 MiB");let T=[...m.headers.entries()],B=0;if(T.length>100)throw new RangeError("HTTP response headers cannot exceed 100 fields");for(let[st,at]of T)if(B+=st.length+at.length,B>65536)throw new RangeError("HTTP response headers cannot exceed 64 KiB");let U=m.body!==null,Ae=or(m.headers.get("content-length"));return p.declaredTooLarge=U&&Ae!==null&&Ae>R,p.reader=m.body?.getReader()??null,U||N(c,p),{ok:d,status:v,statusText:y,url:D,headers:T,body:U}}catch(d){try{await m?.body?.cancel(d)}catch{}throw N(c,p),d}}function er(e,t){if(e==null)return new Set;if(!Array.isArray(e)||e.length>16)throw new TypeError("HTTP secretHeaders must be a List with at most 16 entries");let r=new Set(["connection","content-length","cookie","cookie2","host","proxy-authorization","te","trailer","transfer-encoding","upgrade"]),n=new Set;for(let i of e){if(!i||typeof i!="object"||Array.isArray(i)||Object.keys(i).some(f=>!["name","environment","prefix"].includes(f))||typeof i.name!="string"||!/^[!#$%&'*+.^_|~0-9A-Za-z-]+$/u.test(i.name)||typeof i.environment!="string"||!/^[A-Z_][A-Z0-9_]{0,127}$/u.test(i.environment)||typeof i.prefix!="string"||i.prefix.length>256||/[\r\n]/u.test(i.prefix))throw new TypeError("HTTP secret header descriptor is invalid");let a=i.name.toLowerCase();if(r.has(a))throw new TypeError("HTTP secret header name is transport-controlled");if(!St.has(i.environment))throw new Error(`Secret '${i.environment}' is not granted by desktop.permissions.secrets`);if(t.has(i.name)||n.has(a))throw new TypeError("HTTP secret header conflicts with another header");let c=process.env[i.environment];if(c===void 0)throw new Error(`Granted Desktop secret '${i.environment}' is unavailable`);let l=i.prefix+c;if(/\r|\n/u.test(l)||Buffer.byteLength(l,"utf8")>65536)throw new RangeError("HTTP secret header value is outside the supported bounds");t.set(i.name,l),n.add(a)}if([...t].length>100)throw new RangeError("HTTP headers cannot exceed 100 fields");let o=0;for(let[i,a]of t)if(o+=i.length+a.length,o>65536)throw new RangeError("HTTP headers cannot exceed 64 KiB");return n}async function tr(e,t,r,n,o,i){let a=e,c=t,l=r,f=o;for(let P=0;;P+=1){Ce(a);let h;try{h=await fetch(a,{method:c,headers:l,body:f,signal:i,redirect:"manual"})}catch(w){throw i.aborted?w:new K("request")}if(![301,302,303,307,308].includes(h.status))return h;let R=h.headers.get("location");if(R===null)return h;if(P>=ve){try{await h.body?.cancel()}catch{}throw new Error(`HTTP redirect limit of ${ve} was exceeded`)}let u;try{u=ot(new URL(R,a).href),Ce(u)}finally{try{await h.body?.cancel()}catch{}}if(u.origin!==a.origin){l=new Headers(l);for(let w of["authorization","proxy-authorization","cookie","cookie2",...n])l.delete(w)}(h.status===303&&c!=="HEAD"||(h.status===301||h.status===302)&&c==="POST")&&(c="GET",f=null,l=new Headers(l),l.delete("content-encoding"),l.delete("content-language"),l.delete("content-location"),l.delete("content-type")),a=u}}function ot(e){if(typeof e!="string"||e.length===0||e.length>2*1024*1024)throw new TypeError("HTTP URL must be bounded text");let t;try{t=new URL(e)}catch{throw new TypeError("HTTP URL must be absolute")}if(t.protocol!=="http:"&&t.protocol!=="https:")throw new TypeError("HTTP URL must use http or https");if(t.username||t.password)throw new TypeError("HTTP URL credentials are not allowed");return t}function Ce(e){if(!Dt.has(e.origin))throw new Error(`Network origin '${e.origin}' is not granted by desktop.permissions.network`)}async function rr(e,t){let r=Se(e[0]),n=A.get(r);if(!n)throw new Error("Desktop HTTP handle is unknown or already released");if(n.owner!==t)throw new Error("Desktop HTTP handle belongs to another document generation");try{if(n.declaredTooLarge)throw new RangeError("HTTP response exceeds maxBytes");if(!n.reader){let i=n.decoder.decode();return N(r,n),{done:!0,text:i}}let o;try{o=await n.reader.read()}catch(i){throw n.controller.signal.aborted?i:new K("response")}if(t!==E)throw new Error("Desktop document generation is no longer active");if(o.done){let i=n.decoder.decode();return N(r,n),{done:!0,text:i}}if(!(o.value instanceof Uint8Array))throw new TypeError("HTTP response yielded a non-byte chunk");if(n.bytes+=o.value.byteLength,n.chunks+=1,n.bytes>n.maxBytes)throw new RangeError("HTTP response exceeds maxBytes");if(n.chunks>Tt)throw new RangeError("HTTP responses cannot exceed 1000000 chunks");return{done:!1,text:n.decoder.decode(o.value,{stream:!0})}}catch(o){try{await n.reader?.cancel(o)}catch{}throw N(r,n),o}}async function nr(e,t){let r=Se(e[0]),n=A.get(r);if(!n)return null;if(n.owner!==t)throw new Error("Desktop HTTP handle belongs to another document generation");n.controller.abort(new Error("HTTP request cancelled"));try{await n.reader?.cancel()}catch{}return N(r,n),null}function Se(e){if(!Number.isSafeInteger(e)||e<1)throw new TypeError("Desktop HTTP handle is invalid");return e}function N(e,t){let r=A.get(e);!r||r!==t||(r.timer&&clearTimeout(r.timer),A.delete(e))}function M(e,t,r,n){if(!Number.isSafeInteger(e)||e<t||e>r)throw new RangeError(`${n} must be an integer from ${t} through ${r}`);return e}function or(e){if(typeof e!="string"||e.length===0)return null;if(typeof Ne!="function"||typeof _e!="function")throw new TypeError("The host transport sizing intrinsics are unavailable");let t=0;for(let r=0;r<e.length;r+=1){let n=_e(Ne,e,[r]);if(n<48||n>57)return null;if(t>900719925474099||(t=t*10+n-48,t>9007199254740991))return 1/0}return t}function q(e,t,r){if(typeof e!="string"||e.includes("\0")||Buffer.byteLength(e,"utf8")>r)throw new RangeError(`${t} is outside the supported bounds`);return e}function it(e){return e instanceof K?{kind:"http-transport",message:e.message,phase:e.phase}:e instanceof Error&&typeof e.message=="string"?e.message.slice(0,4096):"Desktop capability failed"}function X(e){let t=JSON.stringify(e);Buffer.byteLength(t,"utf8")>Ue?process.stdout.write(`${JSON.stringify({id:e.id,ok:!1,error:"Desktop response exceeds its transport bound"})}
|
|
3
3
|
`):process.stdout.write(`${t}
|
|
4
|
-
`)}process.once("exit",()=>{for(let e of x.values())
|
|
4
|
+
`)}process.once("exit",()=>{for(let e of x.values())O(e.child,"SIGKILL")});process.on("uncaughtException",()=>{tt()});process.on("unhandledRejection",()=>{tt()});
|
|
@@ -228,6 +228,7 @@ private struct HostConfiguration: Decodable {
|
|
|
228
228
|
|
|
229
229
|
private struct PermissionConfiguration: Decodable {
|
|
230
230
|
let files: [String]
|
|
231
|
+
let network: [String]
|
|
231
232
|
let environment: [String]
|
|
232
233
|
let secrets: [String]
|
|
233
234
|
}
|
|
@@ -646,6 +647,11 @@ private final class NodeCapabilityHost {
|
|
|
646
647
|
while let newline = buffer.firstIndex(of: 0x0A) {
|
|
647
648
|
let line = buffer.prefix(upTo: newline)
|
|
648
649
|
buffer.removeSubrange(...newline)
|
|
650
|
+
// A line past this bound is a terminal host failure, so the worker
|
|
651
|
+
// keeps its own response line strictly below it: MAX_RESPONSE_BYTES
|
|
652
|
+
// is 64 MiB in packages/desktop/native/node/worker.js, and an
|
|
653
|
+
// oversized response is reported there as a per-request error. The
|
|
654
|
+
// two bounds must not drift back together.
|
|
649
655
|
guard line.count <= 65 * 1024 * 1024,
|
|
650
656
|
let value = try? JSONSerialization.jsonObject(with: line),
|
|
651
657
|
let object = value as? [String: Any] else {
|
|
@@ -1068,10 +1074,25 @@ private final class DesktopBridge: NSObject, WKScriptMessageHandler {
|
|
|
1068
1074
|
}
|
|
1069
1075
|
}
|
|
1070
1076
|
|
|
1077
|
+
// Handing a renderer URL to the system browser is the same question
|
|
1078
|
+
// `desktop.permissions.network` already answers, so the granted origins govern
|
|
1079
|
+
// it: an origin that was never granted is cancelled rather than opened. The
|
|
1080
|
+
// match is exact on scheme, host and port, and mirrors
|
|
1081
|
+
// `desktopExternalNavigationPermitted` in packages/desktop/src/config.ts.
|
|
1082
|
+
private func navigationOrigin(_ url: URL) -> String? {
|
|
1083
|
+
guard url.scheme?.lowercased() == "https", let host = url.host?.lowercased(), !host.isEmpty else { return nil }
|
|
1084
|
+
if let port = url.port, port != 443 { return "https://\(host):\(port)" }
|
|
1085
|
+
return "https://\(host)"
|
|
1086
|
+
}
|
|
1087
|
+
|
|
1071
1088
|
private final class NavigationPolicy: NSObject, WKNavigationDelegate {
|
|
1072
1089
|
private weak var bridge: DesktopBridge?
|
|
1090
|
+
private let externalOrigins: Set<String>
|
|
1073
1091
|
|
|
1074
|
-
init(bridge: DesktopBridge) {
|
|
1092
|
+
init(bridge: DesktopBridge, network: [String]) {
|
|
1093
|
+
self.bridge = bridge
|
|
1094
|
+
self.externalOrigins = Set(network.compactMap { URL(string: $0).flatMap(navigationOrigin) })
|
|
1095
|
+
}
|
|
1075
1096
|
|
|
1076
1097
|
func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
|
|
1077
1098
|
bridge?.retireDocument()
|
|
@@ -1081,7 +1102,7 @@ private final class NavigationPolicy: NSObject, WKNavigationDelegate {
|
|
|
1081
1102
|
guard let url = action.request.url else { decisionHandler(.cancel); return }
|
|
1082
1103
|
if url.scheme == "velar-app" && url.host == "app" {
|
|
1083
1104
|
decisionHandler(.allow)
|
|
1084
|
-
} else if url.
|
|
1105
|
+
} else if let origin = navigationOrigin(url), externalOrigins.contains(origin) {
|
|
1085
1106
|
NSWorkspace.shared.open(url)
|
|
1086
1107
|
decisionHandler(.cancel)
|
|
1087
1108
|
} else {
|
|
@@ -1134,7 +1155,7 @@ private final class ApplicationDelegate: NSObject, NSApplicationDelegate {
|
|
|
1134
1155
|
projectFilesGranted: projectFilesGranted,
|
|
1135
1156
|
worker: nodeHost
|
|
1136
1157
|
)
|
|
1137
|
-
let navigationPolicy = NavigationPolicy(bridge: bridge)
|
|
1158
|
+
let navigationPolicy = NavigationPolicy(bridge: bridge, network: host.permissions.network)
|
|
1138
1159
|
let webConfiguration = WKWebViewConfiguration()
|
|
1139
1160
|
webConfiguration.setURLSchemeHandler(schemeHandler, forURLScheme: "velar-app")
|
|
1140
1161
|
let projectDirectoryData = try JSONSerialization.data(withJSONObject: launchDirectory, options: [.fragmentsAllowed])
|
package/native/node/worker.js
CHANGED
|
@@ -8,6 +8,11 @@ import { StringDecoder } from "node:string_decoder";
|
|
|
8
8
|
const MAX_MESSAGE_BYTES = 128 * 1024 * 1024;
|
|
9
9
|
const MAX_FILE_BYTES = 16 * 1024 * 1024;
|
|
10
10
|
const MAX_LIST_TEXT_UNITS = 2 * 1024 * 1024;
|
|
11
|
+
// The native host reads one JSON line per response and refuses any line
|
|
12
|
+
// over 65 MiB terminally (packages/desktop/native/macos/VelarDesktopHost.swift
|
|
13
|
+
// `consume`). This bound is the worker's own line bound and must stay strictly
|
|
14
|
+
// below the host's, so an oversized response is a per-request error here
|
|
15
|
+
// instead of a fatal host failure there.
|
|
11
16
|
const MAX_RESPONSE_BYTES = 64 * 1024 * 1024;
|
|
12
17
|
const MAX_HTTP_CHUNKS = 1000000;
|
|
13
18
|
const MAX_HTTP_REDIRECTS = 20;
|
|
@@ -811,6 +816,25 @@ function processHandle(value) {
|
|
|
811
816
|
return value;
|
|
812
817
|
}
|
|
813
818
|
|
|
819
|
+
// An executable grant is only as narrow as that executable's own environment
|
|
820
|
+
// surface: many granted programs take a command, an interpreter option, or a
|
|
821
|
+
// loader path from their environment, so those names are not caller data. The
|
|
822
|
+
// identical predicate is duplicated renderer-side as
|
|
823
|
+
// `__velarProcessReservedEnvironmentName` in packages/desktop/src/compiler.ts;
|
|
824
|
+
// the two must not drift. `PATH` keeps its own longer-standing message.
|
|
825
|
+
// The bare spellings matter as much as the prefixed ones: `git commit` runs
|
|
826
|
+
// `EDITOR`, `git log` runs `PAGER`, and `HOME` moves the whole configuration
|
|
827
|
+
// surface — including the `.gitconfig` whose own `core.editor` runs a command —
|
|
828
|
+
// into a directory the caller chooses. The base snapshot below owns HOME,
|
|
829
|
+
// SHELL and TMPDIR, so a caller cannot replace them either.
|
|
830
|
+
const RESERVED_ENVIRONMENT_NAMES = /^(?:PATH|HOME|USERPROFILE|SHELL|TMPDIR|IFS|ENV|BASH_ENV|SHELLOPTS|BASHOPTS|PS4|EDITOR|VISUAL|PAGER|MANPAGER|MANOPT|BROWSER|SSH_ASKPASS|SUDO_ASKPASS|NODE_OPTIONS|NODE_REPL_EXTERNAL_MODULE)$/iu;
|
|
831
|
+
const RESERVED_ENVIRONMENT_PREFIXES = /^(?:LD_|DYLD_|GIT_|XDG_|PYTHON|PERL|RUBY|LESS)/iu;
|
|
832
|
+
const RESERVED_ENVIRONMENT_SUFFIXES = /(?:_COMMAND|_EDITOR|_PAGER|_OPTS)$/iu;
|
|
833
|
+
|
|
834
|
+
function reservedEnvironmentName(name) {
|
|
835
|
+
return RESERVED_ENVIRONMENT_NAMES.test(name) || RESERVED_ENVIRONMENT_PREFIXES.test(name) || RESERVED_ENVIRONMENT_SUFFIXES.test(name);
|
|
836
|
+
}
|
|
837
|
+
|
|
814
838
|
async function launchProcess(args, settled) {
|
|
815
839
|
const [command, commandArgs = [], options = {}] = args;
|
|
816
840
|
if (typeof command !== "string" || !allowedProcesses.has(command) || command !== basename(command)) throw new Error(`Process '${String(command)}' is not granted by desktop.permissions.processes`);
|
|
@@ -836,6 +860,7 @@ async function launchProcess(args, settled) {
|
|
|
836
860
|
let environmentUnits = 0;
|
|
837
861
|
for (const pair of options.env) {
|
|
838
862
|
if (!Array.isArray(pair) || pair.length !== 2 || typeof pair[0] !== "string" || !/^[A-Za-z_][A-Za-z0-9_]*$/u.test(pair[0]) || pair[0] === "PATH" || typeof pair[1] !== "string" || pair[1].includes("\0")) throw new TypeError("Process env must contain valid string variables and cannot replace PATH");
|
|
863
|
+
if (reservedEnvironmentName(pair[0])) throw new TypeError(`Process env cannot set the transport- or interpreter-controlled variable '${pair[0]}'`);
|
|
839
864
|
environmentUnits += pair[0].length + pair[1].length;
|
|
840
865
|
if (environmentUnits > 1024 * 1024) throw new RangeError("Process env cannot exceed 1 MiB");
|
|
841
866
|
environment[pair[0]] = pair[1];
|
|
@@ -1296,7 +1321,7 @@ function safeError(error) {
|
|
|
1296
1321
|
|
|
1297
1322
|
function respond(value) {
|
|
1298
1323
|
const line = JSON.stringify(value);
|
|
1299
|
-
if (Buffer.byteLength(line, "utf8") > MAX_RESPONSE_BYTES
|
|
1324
|
+
if (Buffer.byteLength(line, "utf8") > MAX_RESPONSE_BYTES) {
|
|
1300
1325
|
process.stdout.write(`${JSON.stringify({ id: value.id, ok: false, error: "Desktop response exceeds its transport bound" })}\n`);
|
|
1301
1326
|
} else {
|
|
1302
1327
|
process.stdout.write(`${line}\n`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@velarscript/desktop",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"description": "The optional single-project VelarScript Desktop application framework backed by Web, Node capabilities, and system WebViews.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -38,9 +38,9 @@
|
|
|
38
38
|
}
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@velarscript/compiler": "0.
|
|
42
|
-
"@velarscript/node": "0.
|
|
43
|
-
"@velarscript/web": "0.
|
|
41
|
+
"@velarscript/compiler": "0.13.0",
|
|
42
|
+
"@velarscript/node": "0.13.0",
|
|
43
|
+
"@velarscript/web": "0.13.0"
|
|
44
44
|
},
|
|
45
45
|
"exports": {
|
|
46
46
|
".": {
|