@velarscript/desktop 0.10.1

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.js ADDED
@@ -0,0 +1,351 @@
1
+ import { createHash } from "node:crypto";
2
+ import { spawn } from "node:child_process";
3
+ import { chmod, cp, mkdir, mkdtemp, readFile, readdir, realpath, rename, rm, stat, writeFile } from "node:fs/promises";
4
+ import { basename, dirname, isAbsolute, join, relative, resolve } from "node:path";
5
+ import { fileURLToPath } from "node:url";
6
+ const desktopPackageTemplateEnvironment = "VELAR_DESKTOP_PACKAGE_TEMPLATE_ROOT";
7
+ /**
8
+ * A packaged Desktop task has no TypeScript checkout or Swift sources. The
9
+ * native host already running it is the exact signed-architecture template it
10
+ * may reuse; renderer and all JavaScript tools are still rebuilt from the
11
+ * checked target project. The Worker supplies this path from its validated
12
+ * bundle config, never from renderer input.
13
+ */
14
+ async function desktopNativeTemplate() {
15
+ const value = process.env[desktopPackageTemplateEnvironment];
16
+ if (value === undefined)
17
+ return null;
18
+ if (!isAbsolute(value) || value.length > 4096 || value.includes("\0")) {
19
+ throw new Error(`${desktopPackageTemplateEnvironment} must be a bounded absolute Desktop Resources path`);
20
+ }
21
+ const resources = await realpath(value);
22
+ const contents = dirname(resources);
23
+ const template = {
24
+ host: join(contents, "MacOS", "VelarDesktopHost"),
25
+ worker: join(resources, "host", "worker.js"),
26
+ terminalHost: join(resources, "host", "terminal-host"),
27
+ icon: join(resources, "VelarScript.icns"),
28
+ };
29
+ for (const candidate of Object.values(template)) {
30
+ const information = await stat(candidate);
31
+ if (!information.isFile())
32
+ throw new Error(`Desktop package template asset is not an ordinary file: ${candidate}`);
33
+ }
34
+ return template;
35
+ }
36
+ function bundledCapabilityWorker() {
37
+ return fileURLToPath(new URL(import.meta.url.endsWith(".ts") ? "../dist/worker.js" : "./worker.js", import.meta.url));
38
+ }
39
+ function desktopSizeComponents(sizes) {
40
+ return [
41
+ { label: "build engine (velar-build-engine)", bytes: sizes.buildEngineBytes, mandatory: true },
42
+ { label: "language server (velar-language-server)", bytes: sizes.languageServerBytes, mandatory: true },
43
+ { label: "project task host (velar-project-task)", bytes: sizes.projectTaskBytes, mandatory: true },
44
+ { label: "terminal host (VelarTerminalHost)", bytes: sizes.terminalHostBytes, mandatory: true },
45
+ { label: "capability host (worker.js)", bytes: sizes.capabilityHostBytes, mandatory: true },
46
+ { label: "native host (VelarDesktopHost)", bytes: sizes.hostBytes, mandatory: false },
47
+ { label: "renderer (application code and assets)", bytes: sizes.rendererBytes, mandatory: false },
48
+ { label: "bundle metadata (Info.plist, icon, desktop.json)", bytes: sizes.metadataBytes, mandatory: false },
49
+ ];
50
+ }
51
+ /**
52
+ * MIG-3: a budget failure that reports only the total forces upstream
53
+ * archaeology before anyone can judge whether raising the budget is safe. The
54
+ * composition — every component, its share, and the mandatory first-party
55
+ * tooling floor no project can shrink — makes that judgment possible in one
56
+ * pass, so this is the one message the failure prints.
57
+ */
58
+ export function desktopSizeBudgetFailure(sizes, sizeBudgetBytes) {
59
+ if (sizes.totalBytes <= sizeBudgetBytes)
60
+ return null;
61
+ const components = [...desktopSizeComponents(sizes)].sort((left, right) => right.bytes - left.bytes);
62
+ const mandatoryBytes = components
63
+ .filter((component) => component.mandatory)
64
+ .reduce((total, component) => total + component.bytes, 0);
65
+ const share = (bytes) => `${((bytes / Math.max(1, sizes.totalBytes)) * 100).toFixed(1)}%`;
66
+ const largest = components[0];
67
+ return [
68
+ `Desktop bundle is ${formatDesktopBytes(sizes.totalBytes)} (${sizes.totalBytes} bytes), exceeding the `
69
+ + `${formatDesktopBytes(sizeBudgetBytes)} (${sizeBudgetBytes}-byte) size budget by `
70
+ + `${formatDesktopBytes(sizes.totalBytes - sizeBudgetBytes)} (${sizes.totalBytes - sizeBudgetBytes} bytes)`,
71
+ "Composition:",
72
+ ...components.map((component) => ` ${component.bytes.toString().padStart(11)} bytes ${share(component.bytes).padStart(6)} `
73
+ + `${component.label}${component.mandatory ? " [mandatory first-party tooling]" : ""}`),
74
+ `Mandatory first-party tooling: ${formatDesktopBytes(mandatoryBytes)} (${mandatoryBytes} bytes, ${share(mandatoryBytes)} of the bundle) `
75
+ + "ships in every Desktop application and no project change removes it, so any budget below that floor can never pass",
76
+ `Largest contributor: ${largest ? `${largest.label} at ${formatDesktopBytes(largest.bytes)} (${share(largest.bytes)})` : "none"}`,
77
+ `Raise desktop.build.sizeBudgetBytes to at least ${sizes.totalBytes} to accept this bundle, or remove bytes from the non-mandatory components above`,
78
+ ].join("\n");
79
+ }
80
+ export function formatDesktopBytes(value) {
81
+ if (value < 1024)
82
+ return `${value} B`;
83
+ if (value < 1024 * 1024)
84
+ return `${(value / 1024).toFixed(1)} KiB`;
85
+ return `${(value / 1024 / 1024).toFixed(2)} MiB`;
86
+ }
87
+ export async function buildDesktopApplication(projectRoot, config, buildRenderer, buildTool) {
88
+ if (process.platform !== "darwin")
89
+ throw new Error("@velarscript/desktop 0.10 currently builds only the macOS system-WebView host");
90
+ projectRoot = resolve(projectRoot);
91
+ const packageManifestPath = await findPackageManifest(projectRoot);
92
+ const packageManifest = await readJsonObject(packageManifestPath);
93
+ const version = packageVersion(packageManifest, packageManifestPath);
94
+ const outputDirectory = projectPath(projectRoot, config.build.outDir, "desktop.build.outDir");
95
+ const parent = dirname(outputDirectory);
96
+ await mkdir(parent, { recursive: true });
97
+ const staging = await mkdtemp(join(parent, `.velar-${basename(outputDirectory)}-`));
98
+ const applicationName = `${config.productName}.app`;
99
+ const applicationBundle = join(staging, applicationName);
100
+ const contents = join(applicationBundle, "Contents");
101
+ const executableDirectory = join(contents, "MacOS");
102
+ const resources = join(contents, "Resources");
103
+ const renderer = join(resources, "renderer");
104
+ try {
105
+ await Promise.all([mkdir(executableDirectory, { recursive: true }), mkdir(resources, { recursive: true })]);
106
+ const nativeTemplate = await desktopNativeTemplate();
107
+ await buildRenderer(renderer);
108
+ const hostResources = join(resources, "host");
109
+ await mkdir(hostResources);
110
+ const workerPath = join(hostResources, "worker.js");
111
+ await cp(nativeTemplate?.worker ?? bundledCapabilityWorker(), workerPath);
112
+ const languageServerPath = join(hostResources, "language-server.js");
113
+ const projectTaskPath = join(hostResources, "project-task.js");
114
+ const buildEnginePath = join(hostResources, "build-engine");
115
+ const terminalHostPath = join(hostResources, "terminal-host");
116
+ await Promise.all([
117
+ buildTool({ id: "velar-language-server", outputFile: languageServerPath }),
118
+ buildTool({ id: "velar-project-task", outputFile: projectTaskPath }),
119
+ buildTool({ id: "velar-build-engine", outputFile: buildEnginePath }),
120
+ ]);
121
+ if (nativeTemplate) {
122
+ await cp(nativeTemplate.terminalHost, terminalHostPath);
123
+ await chmod(terminalHostPath, 0o755);
124
+ }
125
+ else {
126
+ await compileMacTerminalHost(terminalHostPath);
127
+ }
128
+ await cp(nativeTemplate?.icon ?? fileURLToPath(new URL("../native/macos/VelarScript.icns", import.meta.url)), join(resources, "VelarScript.icns"));
129
+ const hostPath = join(executableDirectory, "VelarDesktopHost");
130
+ if (nativeTemplate) {
131
+ await cp(nativeTemplate.host, hostPath);
132
+ await chmod(hostPath, 0o755);
133
+ }
134
+ else {
135
+ await compileMacHost(hostPath);
136
+ }
137
+ await writeFile(join(contents, "Info.plist"), infoPlist(config, version), "utf8");
138
+ await writeFile(join(resources, "desktop.json"), `${JSON.stringify({
139
+ protocolVersion: 1,
140
+ productName: config.productName,
141
+ identifier: config.identifier,
142
+ version,
143
+ nodeMinimumMajor: 24,
144
+ window: config.window,
145
+ permissions: config.permissions,
146
+ languageServer: { path: "host/language-server.js" },
147
+ projectTask: { path: "host/project-task.js", buildEnginePath: "host/build-engine" },
148
+ terminalHost: { path: "host/terminal-host" },
149
+ }, null, 2)}\n`, "utf8");
150
+ const hostBytes = (await stat(hostPath)).size;
151
+ const rendererBytes = await treeSize(renderer);
152
+ const capabilityHostBytes = (await stat(workerPath)).size;
153
+ const languageServerBytes = (await stat(languageServerPath)).size;
154
+ const projectTaskBytes = (await stat(projectTaskPath)).size
155
+ + (await stat(join(hostResources, "playwright-core", "package.json"))).size
156
+ + (await stat(join(hostResources, "playwright-core", "browsers.json"))).size;
157
+ const buildEngineBytes = (await stat(buildEnginePath)).size;
158
+ const terminalHostBytes = (await stat(terminalHostPath)).size;
159
+ const toolchainBytes = languageServerBytes + projectTaskBytes + buildEngineBytes + terminalHostBytes;
160
+ const totalBytes = await treeSize(applicationBundle);
161
+ const metadataBytes = totalBytes - hostBytes - rendererBytes - capabilityHostBytes - toolchainBytes;
162
+ const budgetFailure = desktopSizeBudgetFailure({
163
+ hostBytes,
164
+ rendererBytes,
165
+ capabilityHostBytes,
166
+ languageServerBytes,
167
+ projectTaskBytes,
168
+ buildEngineBytes,
169
+ terminalHostBytes,
170
+ toolchainBytes,
171
+ metadataBytes,
172
+ totalBytes,
173
+ }, config.build.sizeBudgetBytes);
174
+ if (budgetFailure)
175
+ throw new Error(budgetFailure);
176
+ const manifest = Object.freeze({
177
+ formatVersion: 2,
178
+ kind: "velar-desktop-build",
179
+ productName: config.productName,
180
+ identifier: config.identifier,
181
+ version,
182
+ platform: "macos",
183
+ architecture: process.arch,
184
+ hostProtocolVersion: 1,
185
+ runtime: Object.freeze({ kind: "external-node", minimumMajor: 24, discovery: "environment-and-system-paths", embedded: false }),
186
+ applicationBundle: applicationName,
187
+ sizeBudgetBytes: config.build.sizeBudgetBytes,
188
+ sizes: Object.freeze({
189
+ hostBytes,
190
+ rendererBytes,
191
+ capabilityHostBytes,
192
+ languageServerBytes,
193
+ projectTaskBytes,
194
+ buildEngineBytes,
195
+ terminalHostBytes,
196
+ toolchainBytes,
197
+ metadataBytes,
198
+ totalBytes,
199
+ }),
200
+ sha256: await hashTree(applicationBundle),
201
+ });
202
+ await writeFile(join(staging, "velar-desktop-build.json"), `${JSON.stringify(manifest, null, 2)}\n`, "utf8");
203
+ await rm(outputDirectory, { recursive: true, force: true });
204
+ await rename(staging, outputDirectory);
205
+ return Object.freeze({
206
+ outputDirectory,
207
+ applicationBundle: join(outputDirectory, applicationName),
208
+ manifestPath: join(outputDirectory, "velar-desktop-build.json"),
209
+ manifest,
210
+ });
211
+ }
212
+ catch (error) {
213
+ await rm(staging, { recursive: true, force: true });
214
+ throw error;
215
+ }
216
+ }
217
+ async function compileMacHost(output) {
218
+ const source = fileURLToPath(new URL("../native/macos/VelarDesktopHost.swift", import.meta.url));
219
+ await runProcess("/usr/bin/swiftc", [
220
+ "-Osize", "-whole-module-optimization", "-swift-version", "5", "-parse-as-library",
221
+ "-framework", "Cocoa", "-framework", "WebKit", source, "-o", output,
222
+ ], dirname(output));
223
+ await chmod(output, 0o755);
224
+ }
225
+ async function compileMacTerminalHost(output) {
226
+ const source = fileURLToPath(new URL("../native/macos/VelarTerminalHost.swift", import.meta.url));
227
+ await runProcess("/usr/bin/swiftc", [
228
+ "-Osize", "-whole-module-optimization", "-swift-version", "5", source, "-o", output,
229
+ ], dirname(output));
230
+ await chmod(output, 0o755);
231
+ }
232
+ async function runProcess(command, arguments_, cwd) {
233
+ const child = spawn(command, arguments_, { cwd, stdio: ["ignore", "pipe", "pipe"] });
234
+ let stdout = "";
235
+ let stderr = "";
236
+ child.stdout.on("data", (chunk) => { stdout += chunk.toString("utf8"); });
237
+ child.stderr.on("data", (chunk) => { stderr += chunk.toString("utf8"); });
238
+ const code = await new Promise((resolveExit, reject) => {
239
+ child.once("error", reject);
240
+ child.once("exit", resolveExit);
241
+ });
242
+ if (code !== 0)
243
+ throw new Error(`${command} failed with exit code ${String(code)}${stderr || stdout ? `\n${stderr}${stdout}` : ""}`);
244
+ }
245
+ async function readJsonObject(path) {
246
+ const information = await stat(path);
247
+ if (!information.isFile() || information.size > 1024 * 1024)
248
+ throw new Error(`${path} must be an ordinary JSON file no larger than 1 MiB`);
249
+ let value;
250
+ try {
251
+ value = JSON.parse(await readFile(path, "utf8"));
252
+ }
253
+ catch {
254
+ throw new Error(`${path} must contain valid JSON`);
255
+ }
256
+ if (!value || typeof value !== "object" || Array.isArray(value))
257
+ throw new Error(`${path} must contain a JSON object`);
258
+ return value;
259
+ }
260
+ async function findPackageManifest(start) {
261
+ let directory = start;
262
+ while (true) {
263
+ const candidate = join(directory, "package.json");
264
+ try {
265
+ if ((await stat(candidate)).isFile())
266
+ return candidate;
267
+ }
268
+ catch (error) {
269
+ if (!(error instanceof Error && "code" in error && error.code === "ENOENT"))
270
+ throw error;
271
+ }
272
+ const parent = dirname(directory);
273
+ if (parent === directory)
274
+ break;
275
+ directory = parent;
276
+ }
277
+ throw new Error(`Desktop packaging could not find package.json at or above ${start}`);
278
+ }
279
+ function projectPath(root, value, field) {
280
+ if (isAbsolute(value))
281
+ throw new Error(`'${field}' must be relative to the project`);
282
+ const path = resolve(root, value);
283
+ const fromRoot = relative(root, path);
284
+ if (fromRoot === "" || fromRoot === ".." || fromRoot.startsWith(`..${process.platform === "win32" ? "\\" : "/"}`) || isAbsolute(fromRoot)) {
285
+ throw new Error(`'${field}' must stay below the project root`);
286
+ }
287
+ return path;
288
+ }
289
+ function infoPlist(config, version) {
290
+ return `<?xml version="1.0" encoding="UTF-8"?>
291
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
292
+ <plist version="1.0"><dict>
293
+ <key>CFBundleDevelopmentRegion</key><string>en</string>
294
+ <key>CFBundleDisplayName</key><string>${xml(config.productName)}</string>
295
+ <key>CFBundleExecutable</key><string>VelarDesktopHost</string>
296
+ <key>CFBundleIdentifier</key><string>${xml(config.identifier)}</string>
297
+ <key>CFBundleIconFile</key><string>VelarScript</string>
298
+ <key>CFBundleInfoDictionaryVersion</key><string>6.0</string>
299
+ <key>CFBundleName</key><string>${xml(config.productName)}</string>
300
+ <key>CFBundlePackageType</key><string>APPL</string>
301
+ <key>CFBundleShortVersionString</key><string>${xml(version)}</string>
302
+ <key>CFBundleVersion</key><string>${xml(version)}</string>
303
+ <key>LSMinimumSystemVersion</key><string>13.0</string>
304
+ <key>NSHighResolutionCapable</key><true/>
305
+ </dict></plist>
306
+ `;
307
+ }
308
+ function packageVersion(manifest, path) {
309
+ const version = manifest.version;
310
+ if (typeof version !== "string" || !/^\d{1,6}\.\d{1,6}\.\d{1,6}$/u.test(version)) {
311
+ throw new Error(`${path}: Desktop packaging requires a numeric major.minor.patch package version`);
312
+ }
313
+ return version;
314
+ }
315
+ async function treeSize(root) {
316
+ let total = 0;
317
+ for (const entry of await readdir(root, { withFileTypes: true })) {
318
+ const path = join(root, entry.name);
319
+ if (entry.isSymbolicLink())
320
+ throw new Error(`Desktop output cannot contain symbolic link '${relative(root, path)}'`);
321
+ if (entry.isDirectory())
322
+ total += await treeSize(path);
323
+ else if (entry.isFile())
324
+ total += (await stat(path)).size;
325
+ }
326
+ return total;
327
+ }
328
+ async function hashTree(root) {
329
+ const hash = createHash("sha256");
330
+ const visit = async (directory) => {
331
+ const entries = (await readdir(directory, { withFileTypes: true })).sort((left, right) => left.name.localeCompare(right.name));
332
+ for (const entry of entries) {
333
+ const path = join(directory, entry.name);
334
+ const name = relative(root, path).replaceAll("\\", "/");
335
+ if (entry.isDirectory())
336
+ await visit(path);
337
+ else if (entry.isFile()) {
338
+ const body = await readFile(path);
339
+ hash.update(name).update("\0").update(String(body.byteLength)).update("\0").update(body);
340
+ }
341
+ else
342
+ throw new Error(`Desktop output contains unsupported entry '${name}'`);
343
+ }
344
+ };
345
+ await visit(root);
346
+ return hash.digest("hex");
347
+ }
348
+ function xml(value) {
349
+ return value.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll('"', "&quot;");
350
+ }
351
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type CompilerExtension } from "@velarscript/compiler";
2
+ export declare const velarCompilerExtension: CompilerExtension;
3
+ export { velarProjectExtension, type VelarDesktopConfig } from "./config.ts";
4
+ //# sourceMappingURL=compiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,iBAAiB,EAAuD,MAAM,uBAAuB,CAAC;AAg5DhI,eAAO,MAAM,sBAAsB,EAAE,iBA2CnC,CAAC;AAEH,OAAO,EAAE,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC"}