@gtkx/cli 2.0.0-beta.8 → 2.0.0-beta.9
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/deploy/depends.d.ts.map +1 -1
- package/dist/deploy/depends.js +24 -2
- package/dist/deploy/depends.js.map +1 -1
- package/dist/deploy/node-runtime/guard.d.ts.map +1 -1
- package/dist/deploy/node-runtime/guard.js +7 -14
- package/dist/deploy/node-runtime/guard.js.map +1 -1
- package/dist/deploy/node-runtime/index.d.ts +2 -1
- package/dist/deploy/node-runtime/index.d.ts.map +1 -1
- package/dist/deploy/node-runtime/index.js +15 -4
- package/dist/deploy/node-runtime/index.js.map +1 -1
- package/dist/deploy/node-runtime/sonames.d.ts +5 -0
- package/dist/deploy/node-runtime/sonames.d.ts.map +1 -0
- package/dist/deploy/node-runtime/sonames.js +13 -0
- package/dist/deploy/node-runtime/sonames.js.map +1 -0
- package/dist/deploy/run-deploy.d.ts.map +1 -1
- package/dist/deploy/run-deploy.js +4 -1
- package/dist/deploy/run-deploy.js.map +1 -1
- package/dist/internal/icon-staging.d.ts +3 -0
- package/dist/internal/icon-staging.d.ts.map +1 -0
- package/dist/internal/icon-staging.js +40 -0
- package/dist/internal/icon-staging.js.map +1 -0
- package/dist/vite-plugins/icon-worker-env.d.ts +4 -0
- package/dist/vite-plugins/icon-worker-env.d.ts.map +1 -0
- package/dist/vite-plugins/icon-worker-env.js +23 -0
- package/dist/vite-plugins/icon-worker-env.js.map +1 -0
- package/dist/vite-plugins/worker.d.ts.map +1 -1
- package/dist/vite-plugins/worker.js +21 -13
- package/dist/vite-plugins/worker.js.map +1 -1
- package/dist/vitest-plugin.d.ts +2 -2
- package/dist/vitest-plugin.d.ts.map +1 -1
- package/dist/vitest-plugin.js +4 -2
- package/dist/vitest-plugin.js.map +1 -1
- package/package.json +10 -10
- package/src/deploy/depends.ts +30 -3
- package/src/deploy/node-runtime/guard.ts +10 -14
- package/src/deploy/node-runtime/index.ts +19 -4
- package/src/deploy/node-runtime/sonames.ts +17 -0
- package/src/deploy/run-deploy.ts +6 -1
- package/src/internal/icon-staging.ts +58 -0
- package/src/vite-plugins/icon-worker-env.ts +36 -0
- package/src/vite-plugins/worker.ts +31 -15
- package/src/vitest-plugin.ts +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"depends.d.ts","sourceRoot":"","sources":["../../src/deploy/depends.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"depends.d.ts","sourceRoot":"","sources":["../../src/deploy/depends.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,KAAK,SAAS,GAAG;IACb,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAoEF,QAAA,MAAM,cAAc,GAAI,UAAU,cAAc,EAAE,cAAc,MAAM,GAAG,IAAI,KAAG,SAqB/E,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
package/dist/deploy/depends.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PACKAGED_SONAMES } from "./node-runtime/sonames.js";
|
|
1
2
|
const SONAME_SUFFIX = "()(64bit)";
|
|
2
3
|
const GLES_SONAME = `libGLESv2.so.2${SONAME_SUFFIX}`;
|
|
3
4
|
const NO_EXTRA = { deb: [], rpm: [] };
|
|
@@ -9,6 +10,15 @@ const DEPENDS_BY_LIBRARY = {
|
|
|
9
10
|
"Adw-1": { deb: "libadwaita-1-0", rpm: "libadwaita", extra: NO_EXTRA },
|
|
10
11
|
"Gtk-4.0": { deb: "libgtk-4-1", rpm: "gtk4", extra: { deb: [], rpm: [GLES_SONAME] } },
|
|
11
12
|
};
|
|
13
|
+
const RUNTIME_PACKAGES = {
|
|
14
|
+
"libatomic.so.1": { deb: "libatomic1", rpm: `libatomic.so.1${SONAME_SUFFIX}` },
|
|
15
|
+
"libgcc_s.so.1": { deb: "libgcc-s1", rpm: `libgcc_s.so.1${SONAME_SUFFIX}` },
|
|
16
|
+
"libstdc++.so.6": { deb: "libstdc++6", rpm: `libstdc++.so.6${SONAME_SUFFIX}` },
|
|
17
|
+
};
|
|
18
|
+
const RUNTIME_DEPENDS = {
|
|
19
|
+
deb: PACKAGED_SONAMES.map((soname) => RUNTIME_PACKAGES[soname].deb),
|
|
20
|
+
rpm: PACKAGED_SONAMES.map((soname) => RUNTIME_PACKAGES[soname].rpm),
|
|
21
|
+
};
|
|
12
22
|
const debRelation = (name, minimum) => minimum === undefined ? name : `${name} (>= ${minimum})`;
|
|
13
23
|
const rpmRelation = (name, minimum) => minimum === undefined ? name : `${name} >= ${minimum}`;
|
|
14
24
|
const libraryDepends = (settings) => {
|
|
@@ -34,8 +44,20 @@ const resolveDepends = (settings, glibcMinimum) => {
|
|
|
34
44
|
const fromGlibc = glibcDepends(glibcMinimum);
|
|
35
45
|
const extra = settings.deploy.depends ?? {};
|
|
36
46
|
return {
|
|
37
|
-
deb: dedupe([
|
|
38
|
-
|
|
47
|
+
deb: dedupe([
|
|
48
|
+
...fromLibraries.deb,
|
|
49
|
+
...BASE_DEPENDS.deb,
|
|
50
|
+
...fromGlibc.deb,
|
|
51
|
+
...RUNTIME_DEPENDS.deb,
|
|
52
|
+
...(extra.deb ?? []),
|
|
53
|
+
]),
|
|
54
|
+
rpm: dedupe([
|
|
55
|
+
...fromLibraries.rpm,
|
|
56
|
+
...BASE_DEPENDS.rpm,
|
|
57
|
+
...fromGlibc.rpm,
|
|
58
|
+
...RUNTIME_DEPENDS.rpm,
|
|
59
|
+
...(extra.rpm ?? []),
|
|
60
|
+
]),
|
|
39
61
|
};
|
|
40
62
|
};
|
|
41
63
|
export { resolveDepends };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"depends.js","sourceRoot":"","sources":["../../src/deploy/depends.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"depends.js","sourceRoot":"","sources":["../../src/deploy/depends.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DeploySettings } from \"./types.js\";\nimport { PACKAGED_SONAMES, type PackagedSoname } from \"./node-runtime/sonames.js\";\n\ntype Relations = {\n deb: string[];\n rpm: string[];\n};\n\ntype PackageNames = {\n deb: string;\n rpm: string;\n};\n\ntype LibraryPackages = PackageNames & {\n extra: Relations;\n};\n\nconst SONAME_SUFFIX = \"()(64bit)\";\nconst GLES_SONAME = `libGLESv2.so.2${SONAME_SUFFIX}`;\nconst NO_EXTRA: Relations = { deb: [], rpm: [] };\n\nconst BASE_DEPENDS: Relations = {\n deb: [\"hicolor-icon-theme\", \"adwaita-icon-theme\", \"gsettings-desktop-schemas\"],\n rpm: [\"hicolor-icon-theme\", \"adwaita-icon-theme\", \"gsettings-desktop-schemas\"],\n};\n\nconst DEPENDS_BY_LIBRARY: Record<string, LibraryPackages> = {\n \"Adw-1\": { deb: \"libadwaita-1-0\", rpm: \"libadwaita\", extra: NO_EXTRA },\n \"Gtk-4.0\": { deb: \"libgtk-4-1\", rpm: \"gtk4\", extra: { deb: [], rpm: [GLES_SONAME] } },\n};\n\nconst RUNTIME_PACKAGES: Record<PackagedSoname, PackageNames> = {\n \"libatomic.so.1\": { deb: \"libatomic1\", rpm: `libatomic.so.1${SONAME_SUFFIX}` },\n \"libgcc_s.so.1\": { deb: \"libgcc-s1\", rpm: `libgcc_s.so.1${SONAME_SUFFIX}` },\n \"libstdc++.so.6\": { deb: \"libstdc++6\", rpm: `libstdc++.so.6${SONAME_SUFFIX}` },\n};\n\nconst RUNTIME_DEPENDS: Relations = {\n deb: PACKAGED_SONAMES.map((soname) => RUNTIME_PACKAGES[soname].deb),\n rpm: PACKAGED_SONAMES.map((soname) => RUNTIME_PACKAGES[soname].rpm),\n};\n\nconst debRelation = (name: string, minimum: string | undefined): string =>\n minimum === undefined ? name : `${name} (>= ${minimum})`;\n\nconst rpmRelation = (name: string, minimum: string | undefined): string =>\n minimum === undefined ? name : `${name} >= ${minimum}`;\n\nconst libraryDepends = (settings: DeploySettings): Relations => {\n const deb: string[] = [];\n const rpm: string[] = [];\n\n for (const library of settings.libraries) {\n const packages = DEPENDS_BY_LIBRARY[library];\n\n if (packages === undefined) {\n continue;\n }\n\n const minimum = settings.minimumLibraryVersions[library];\n deb.push(debRelation(packages.deb, minimum), ...packages.extra.deb);\n rpm.push(rpmRelation(packages.rpm, minimum), ...packages.extra.rpm);\n }\n\n return { deb, rpm };\n};\n\nconst glibcDepends = (glibcMinimum: string | null): Relations =>\n glibcMinimum === null\n ? { deb: [], rpm: [] }\n : { deb: [debRelation(\"libc6\", glibcMinimum)], rpm: [rpmRelation(\"glibc\", glibcMinimum)] };\n\nconst dedupe = (entries: string[]): string[] => [...new Set(entries)];\n\nconst resolveDepends = (settings: DeploySettings, glibcMinimum: string | null): Relations => {\n const fromLibraries = libraryDepends(settings);\n const fromGlibc = glibcDepends(glibcMinimum);\n const extra = settings.deploy.depends ?? {};\n\n return {\n deb: dedupe([\n ...fromLibraries.deb,\n ...BASE_DEPENDS.deb,\n ...fromGlibc.deb,\n ...RUNTIME_DEPENDS.deb,\n ...(extra.deb ?? []),\n ]),\n rpm: dedupe([\n ...fromLibraries.rpm,\n ...BASE_DEPENDS.rpm,\n ...fromGlibc.rpm,\n ...RUNTIME_DEPENDS.rpm,\n ...(extra.rpm ?? []),\n ]),\n };\n};\n\nexport { resolveDepends };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../../src/deploy/node-runtime/guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../../src/deploy/node-runtime/guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAWxC,QAAA,MAAM,kBAAkB,GAAI,MAAM,OAAO,EAAE,QAAQ,MAAM,KAAG,IAW3D,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -1,22 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
"
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
"libgcc_s.so.1",
|
|
7
|
-
"libm.so.6",
|
|
8
|
-
"libpthread.so.0",
|
|
9
|
-
"librt.so.1",
|
|
10
|
-
"libstdc++.so.6",
|
|
11
|
-
]);
|
|
1
|
+
import { RUNTIME_SONAMES } from "./sonames.js";
|
|
2
|
+
const DOWNLOAD_REMEDY = "The packages GTKX generates declare the libraries an official release links against, and this release " +
|
|
3
|
+
"links against more. Report it to GTKX, and pin `deploy.node.version` to a release it already packages.";
|
|
4
|
+
const SOURCE_REMEDY = 'Use `deploy.node.source: "download"` to fetch an official self-contained build instead.';
|
|
5
|
+
const remedyFor = (source) => (source === "download" ? DOWNLOAD_REMEDY : SOURCE_REMEDY);
|
|
12
6
|
const assertPortableNode = (info, source) => {
|
|
13
|
-
const foreign = info.needed.filter((library) => !
|
|
7
|
+
const foreign = info.needed.filter((library) => !RUNTIME_SONAMES.has(library));
|
|
14
8
|
if (foreign.length === 0) {
|
|
15
9
|
return;
|
|
16
10
|
}
|
|
17
11
|
throw new Error(`Cannot bundle this Node.js binary: \`deploy.node.source: "${source}"\` picked one linked against ` +
|
|
18
|
-
`${foreign.join(", ")}, which the
|
|
19
|
-
'Use `deploy.node.source: "download"` to fetch an official self-contained build instead.');
|
|
12
|
+
`${foreign.join(", ")}, which the packages GTKX generates do not require. ${remedyFor(source)}`);
|
|
20
13
|
};
|
|
21
14
|
export { assertPortableNode };
|
|
22
15
|
//# sourceMappingURL=guard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../../src/deploy/node-runtime/guard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../../src/deploy/node-runtime/guard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,eAAe,GACjB,wGAAwG;IACxG,wGAAwG,CAAC;AAE7G,MAAM,aAAa,GAAG,yFAAyF,CAAC;AAEhH,MAAM,SAAS,GAAG,CAAC,MAAc,EAAU,EAAE,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;AAExG,MAAM,kBAAkB,GAAG,CAAC,IAAa,EAAE,MAAc,EAAQ,EAAE;IAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAE/E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;IACX,CAAC;IAED,MAAM,IAAI,KAAK,CACX,6DAA6D,MAAM,gCAAgC;QACnG,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,uDAAuD,SAAS,CAAC,MAAM,CAAC,EAAE,CAClG,CAAC;AACN,CAAC,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC","sourcesContent":["import type { ElfInfo } from \"./elf.js\";\nimport { RUNTIME_SONAMES } from \"./sonames.js\";\n\nconst DOWNLOAD_REMEDY =\n \"The packages GTKX generates declare the libraries an official release links against, and this release \" +\n \"links against more. Report it to GTKX, and pin `deploy.node.version` to a release it already packages.\";\n\nconst SOURCE_REMEDY = 'Use `deploy.node.source: \"download\"` to fetch an official self-contained build instead.';\n\nconst remedyFor = (source: string): string => (source === \"download\" ? DOWNLOAD_REMEDY : SOURCE_REMEDY);\n\nconst assertPortableNode = (info: ElfInfo, source: string): void => {\n const foreign = info.needed.filter((library) => !RUNTIME_SONAMES.has(library));\n\n if (foreign.length === 0) {\n return;\n }\n\n throw new Error(\n `Cannot bundle this Node.js binary: \\`deploy.node.source: \"${source}\"\\` picked one linked against ` +\n `${foreign.join(\", \")}, which the packages GTKX generates do not require. ${remedyFor(source)}`,\n );\n};\n\nexport { assertPortableNode };\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { DeploySettings, NodeRuntime } from "../types.js";
|
|
2
2
|
declare const sourcePathFor: (settings: DeploySettings) => string;
|
|
3
|
+
declare const assertPortableRuntimeSource: (settings: DeploySettings) => void;
|
|
3
4
|
declare const resolveNodeVersion: (settings: DeploySettings) => string;
|
|
4
5
|
declare const resolveNodeRuntime: (settings: DeploySettings) => Promise<NodeRuntime>;
|
|
5
|
-
export { resolveNodeRuntime, resolveNodeVersion, sourcePathFor };
|
|
6
|
+
export { assertPortableRuntimeSource, resolveNodeRuntime, resolveNodeVersion, sourcePathFor };
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/deploy/node-runtime/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAgB,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAgG7E,QAAA,MAAM,aAAa,GAAI,UAAU,cAAc,KAAG,MAajD,CAAC;AAEF,QAAA,MAAM,kBAAkB,GAAI,UAAU,cAAc,KAAG,MAatD,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/deploy/node-runtime/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAgB,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAgG7E,QAAA,MAAM,aAAa,GAAI,UAAU,cAAc,KAAG,MAajD,CAAC;AAEF,QAAA,MAAM,2BAA2B,GAAI,UAAU,cAAc,KAAG,IAa/D,CAAC;AAEF,QAAA,MAAM,kBAAkB,GAAI,UAAU,cAAc,KAAG,MAatD,CAAC;AA+DF,QAAA,MAAM,kBAAkB,GAAU,UAAU,cAAc,KAAG,OAAO,CAAC,WAAW,CAY/E,CAAC;AAEF,OAAO,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { MINIMUM_NODE_VERSION } from "@gtkx/config/internal";
|
|
2
2
|
import { info, tryResolveExecutable, warn } from "@gtkx/utils";
|
|
3
3
|
import { execFileSync } from "node:child_process";
|
|
4
|
-
import { chmodSync, copyFileSync, mkdirSync, statSync } from "node:fs";
|
|
4
|
+
import { chmodSync, copyFileSync, existsSync, mkdirSync, statSync } from "node:fs";
|
|
5
5
|
import { join, resolve } from "node:path";
|
|
6
6
|
import { runCliTool } from "../../internal/run-cli-tool.js";
|
|
7
7
|
import { elfMachineFor, hostArchName } from "../settings/arch.js";
|
|
8
8
|
import { downloadNode } from "./download.js";
|
|
9
|
-
import { readElfInfo } from "./elf.js";
|
|
9
|
+
import { readElfInfo, readOptionalElfInfo } from "./elf.js";
|
|
10
10
|
import { assertPortableNode } from "./guard.js";
|
|
11
11
|
import { licenseBesideNode } from "./license.js";
|
|
12
12
|
const BYTES_PER_MIB = 1024 * 1024;
|
|
@@ -79,6 +79,17 @@ const sourcePathFor = (settings) => {
|
|
|
79
79
|
}
|
|
80
80
|
return resolve(settings.paths.root, node.path);
|
|
81
81
|
};
|
|
82
|
+
const assertPortableRuntimeSource = (settings) => {
|
|
83
|
+
const source = nodeSourceFor(settings);
|
|
84
|
+
if (source === "download") {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const sourcePath = sourcePathFor(settings);
|
|
88
|
+
const elf = existsSync(sourcePath) ? readOptionalElfInfo(sourcePath) : null;
|
|
89
|
+
if (elf !== null) {
|
|
90
|
+
assertPortableNode(elf, source);
|
|
91
|
+
}
|
|
92
|
+
};
|
|
82
93
|
const resolveNodeVersion = (settings) => {
|
|
83
94
|
const node = settings.deploy.node ?? {};
|
|
84
95
|
const source = nodeSourceFor(settings);
|
|
@@ -115,7 +126,6 @@ const stageFromSource = async (settings, version, source) => {
|
|
|
115
126
|
return stageDownloadedNode(settings, version);
|
|
116
127
|
}
|
|
117
128
|
const sourcePath = sourcePathFor(settings);
|
|
118
|
-
assertPortableNode(readElfInfo(sourcePath), source);
|
|
119
129
|
return { path: stageNode(settings, sourcePath), licenseFile: licenseBesideNode(sourcePath) };
|
|
120
130
|
};
|
|
121
131
|
const shouldStripRuntime = (settings, node, elf) => {
|
|
@@ -135,10 +145,11 @@ const resolveNodeRuntime = async (settings) => {
|
|
|
135
145
|
const version = resolveNodeVersion(settings);
|
|
136
146
|
const staged = await stageFromSource(settings, version, source);
|
|
137
147
|
const elf = readElfInfo(staged.path);
|
|
148
|
+
assertPortableNode(elf, source);
|
|
138
149
|
const isStripped = shouldStripRuntime(settings, node, elf) && didStripBinary(staged.path);
|
|
139
150
|
const glibcMinimum = elf.glibcMinimum ?? "unknown";
|
|
140
151
|
info(`Bundled Node.js v${version} (${megabytes(staged.path)} MiB, runtime glibc >= ${glibcMinimum})`);
|
|
141
152
|
return { ...staged, version, glibcMinimum: elf.glibcMinimum, isStripped };
|
|
142
153
|
};
|
|
143
|
-
export { resolveNodeRuntime, resolveNodeVersion, sourcePathFor };
|
|
154
|
+
export { assertPortableRuntimeSource, resolveNodeRuntime, resolveNodeVersion, sourcePathFor };
|
|
144
155
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/deploy/node-runtime/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { MINIMUM_NODE_VERSION } from \"@gtkx/config/internal\";\nimport { info, tryResolveExecutable, warn } from \"@gtkx/utils\";\nimport { execFileSync } from \"node:child_process\";\nimport { chmodSync, copyFileSync, mkdirSync, statSync } from \"node:fs\";\nimport { join, resolve } from \"node:path\";\nimport type { DeployConfig, DeploySettings, NodeRuntime } from \"../types.js\";\nimport { runCliTool } from \"../../internal/run-cli-tool.js\";\nimport { elfMachineFor, hostArchName } from \"../settings/arch.js\";\nimport { downloadNode } from \"./download.js\";\nimport { type ElfInfo, readElfInfo } from \"./elf.js\";\nimport { assertPortableNode } from \"./guard.js\";\nimport { licenseBesideNode } from \"./license.js\";\n\ntype StagedRuntime = {\n path: string;\n licenseFile: string | null;\n};\n\ntype NodeSource = \"download\" | \"host\" | \"path\";\n\nconst BYTES_PER_MIB = 1024 * 1024;\nconst EXECUTABLE_MODE = 0o755;\nconst NODE_FILENAME = \"node\";\nconst NODE_VERSION_PATTERN = /^v?(\\d+)\\.(\\d+)\\.(\\d+)$/;\nconst VERSION_PROBE_TIMEOUT_MS = 10_000;\nconst VERSION_PROBE_MAX_BUFFER = 1024;\n\nconst nodeSourceFor = (settings: DeploySettings): NodeSource => settings.deploy.node?.source ?? \"download\";\n\nconst parseNodeVersion = (value: string, subject: string): { parts: number[]; version: string } => {\n const match = NODE_VERSION_PATTERN.exec(value.trim());\n\n if (match === null) {\n throw new Error(`Cannot determine the Node.js version for ${subject}: expected a version such as 26.7.0`);\n }\n\n const parts = match.slice(1).map(Number);\n\n return { parts, version: parts.map(String).join(\".\") };\n};\n\nconst compareVersions = (left: number[], right: number[]): number => {\n for (let index = 0; index < Math.max(left.length, right.length); index += 1) {\n const difference = (left[index] ?? 0) - (right[index] ?? 0);\n\n if (difference !== 0) {\n return difference;\n }\n }\n\n return 0;\n};\n\nconst supportedNodeVersion = (value: string, subject: string): string => {\n const parsed = parseNodeVersion(value, subject);\n const minimum = parseNodeVersion(MINIMUM_NODE_VERSION, \"GTKX\");\n\n if (compareVersions(parsed.parts, minimum.parts) < 0) {\n throw new Error(\n `Cannot bundle Node.js ${parsed.version} for ${subject}: GTKX requires ${MINIMUM_NODE_VERSION} or newer`,\n );\n }\n\n return parsed.version;\n};\n\nconst probeNodeVersion = (path: string): string => {\n try {\n const output = execFileSync(path, [\"--version\"], {\n encoding: \"utf8\",\n env: { ...process.env, NODE_OPTIONS: \"\" },\n maxBuffer: VERSION_PROBE_MAX_BUFFER,\n timeout: VERSION_PROBE_TIMEOUT_MS,\n });\n\n return supportedNodeVersion(output, path);\n } catch (error) {\n if (error instanceof Error && error.message.startsWith(\"Cannot bundle Node.js\")) {\n throw error;\n }\n\n throw new Error(`Cannot determine the Node.js version from ${path}`, { cause: error });\n }\n};\n\nconst assertExpectedVersion = (configured: string | undefined, actual: string, source: NodeSource): string => {\n if (configured === undefined) {\n return actual;\n }\n\n const expected = parseNodeVersion(configured, `deploy.node.source: \"${source}\"`).version;\n\n if (expected !== actual) {\n throw new Error(\n `The Node.js runtime from deploy.node.source \"${source}\" is ${actual}, not the configured ${expected}`,\n );\n }\n\n return actual;\n};\n\nconst sourcePathFor = (settings: DeploySettings): string => {\n const node = settings.deploy.node ?? {};\n const source = nodeSourceFor(settings);\n\n if (source === \"host\") {\n return process.execPath;\n }\n\n if (node.path === undefined) {\n throw new Error('Cannot resolve the Node.js runtime: `deploy.node.source: \"path\"` needs `deploy.node.path`');\n }\n\n return resolve(settings.paths.root, node.path);\n};\n\nconst resolveNodeVersion = (settings: DeploySettings): string => {\n const node = settings.deploy.node ?? {};\n const source = nodeSourceFor(settings);\n\n if (source === \"download\") {\n return supportedNodeVersion(node.version ?? MINIMUM_NODE_VERSION, 'deploy.node.source: \"download\"');\n }\n\n const actual = source === \"host\"\n ? supportedNodeVersion(process.versions.node, 'deploy.node.source: \"host\"')\n : probeNodeVersion(sourcePathFor(settings));\n\n return assertExpectedVersion(node.version, actual, source);\n};\n\nconst didStripBinary = (path: string): boolean => {\n if (tryResolveExecutable(\"strip\") === undefined) {\n return false;\n }\n\n runCliTool({ tool: \"strip\", args: [\"--strip-unneeded\", path], target: \"the bundled Node.js\" });\n\n return true;\n};\n\nconst megabytes = (path: string): string => (statSync(path).size / BYTES_PER_MIB).toFixed(1);\n\nconst stageNode = (settings: DeploySettings, sourcePath: string): string => {\n mkdirSync(settings.paths.runtime, { recursive: true });\n const staged = join(settings.paths.runtime, NODE_FILENAME);\n copyFileSync(sourcePath, staged);\n chmodSync(staged, EXECUTABLE_MODE);\n\n return staged;\n};\n\nconst stageDownloadedNode = async (settings: DeploySettings, version: string): Promise<StagedRuntime> => {\n const downloaded = await downloadNode(version, settings.arch.node, settings.paths.runtime);\n chmodSync(downloaded.path, EXECUTABLE_MODE);\n\n return downloaded;\n};\n\nconst stageFromSource = async (\n settings: DeploySettings,\n version: string,\n source: NodeSource,\n): Promise<StagedRuntime> => {\n if (source === \"download\") {\n return stageDownloadedNode(settings, version);\n }\n\n const sourcePath = sourcePathFor(settings);\n assertPortableNode(readElfInfo(sourcePath), source);\n\n return { path: stageNode(settings, sourcePath), licenseFile: licenseBesideNode(sourcePath) };\n};\n\ntype DeployNodeConfig = NonNullable<DeployConfig[\"node\"]>;\n\nconst shouldStripRuntime = (settings: DeploySettings, node: DeployNodeConfig, elf: ElfInfo): boolean => {\n if (node.shouldStrip === false) {\n return false;\n }\n\n if (elf.machine === elfMachineFor(hostArchName())) {\n return true;\n }\n\n warn(\n `Skipping \\`strip\\` on the bundled Node.js: it was built for ${settings.arch.node} and \\`strip\\` reads ` +\n `only ${hostArchName()}. The ${settings.arch.node} packages carry an unstripped runtime.`,\n );\n\n return false;\n};\n\nconst resolveNodeRuntime = async (settings: DeploySettings): Promise<NodeRuntime> => {\n const node = settings.deploy.node ?? {};\n const source = nodeSourceFor(settings);\n const version = resolveNodeVersion(settings);\n const staged = await stageFromSource(settings, version, source);\n const elf = readElfInfo(staged.path);\n const isStripped = shouldStripRuntime(settings, node, elf) && didStripBinary(staged.path);\n const glibcMinimum = elf.glibcMinimum ?? \"unknown\";\n info(`Bundled Node.js v${version} (${megabytes(staged.path)} MiB, runtime glibc >= ${glibcMinimum})`);\n\n return { ...staged, version, glibcMinimum: elf.glibcMinimum, isStripped };\n};\n\nexport { resolveNodeRuntime, resolveNodeVersion, sourcePathFor };\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/deploy/node-runtime/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { MINIMUM_NODE_VERSION } from \"@gtkx/config/internal\";\nimport { info, tryResolveExecutable, warn } from \"@gtkx/utils\";\nimport { execFileSync } from \"node:child_process\";\nimport { chmodSync, copyFileSync, existsSync, mkdirSync, statSync } from \"node:fs\";\nimport { join, resolve } from \"node:path\";\nimport type { DeployConfig, DeploySettings, NodeRuntime } from \"../types.js\";\nimport { runCliTool } from \"../../internal/run-cli-tool.js\";\nimport { elfMachineFor, hostArchName } from \"../settings/arch.js\";\nimport { downloadNode } from \"./download.js\";\nimport { type ElfInfo, readElfInfo, readOptionalElfInfo } from \"./elf.js\";\nimport { assertPortableNode } from \"./guard.js\";\nimport { licenseBesideNode } from \"./license.js\";\n\ntype StagedRuntime = {\n path: string;\n licenseFile: string | null;\n};\n\ntype NodeSource = \"download\" | \"host\" | \"path\";\n\nconst BYTES_PER_MIB = 1024 * 1024;\nconst EXECUTABLE_MODE = 0o755;\nconst NODE_FILENAME = \"node\";\nconst NODE_VERSION_PATTERN = /^v?(\\d+)\\.(\\d+)\\.(\\d+)$/;\nconst VERSION_PROBE_TIMEOUT_MS = 10_000;\nconst VERSION_PROBE_MAX_BUFFER = 1024;\n\nconst nodeSourceFor = (settings: DeploySettings): NodeSource => settings.deploy.node?.source ?? \"download\";\n\nconst parseNodeVersion = (value: string, subject: string): { parts: number[]; version: string } => {\n const match = NODE_VERSION_PATTERN.exec(value.trim());\n\n if (match === null) {\n throw new Error(`Cannot determine the Node.js version for ${subject}: expected a version such as 26.7.0`);\n }\n\n const parts = match.slice(1).map(Number);\n\n return { parts, version: parts.map(String).join(\".\") };\n};\n\nconst compareVersions = (left: number[], right: number[]): number => {\n for (let index = 0; index < Math.max(left.length, right.length); index += 1) {\n const difference = (left[index] ?? 0) - (right[index] ?? 0);\n\n if (difference !== 0) {\n return difference;\n }\n }\n\n return 0;\n};\n\nconst supportedNodeVersion = (value: string, subject: string): string => {\n const parsed = parseNodeVersion(value, subject);\n const minimum = parseNodeVersion(MINIMUM_NODE_VERSION, \"GTKX\");\n\n if (compareVersions(parsed.parts, minimum.parts) < 0) {\n throw new Error(\n `Cannot bundle Node.js ${parsed.version} for ${subject}: GTKX requires ${MINIMUM_NODE_VERSION} or newer`,\n );\n }\n\n return parsed.version;\n};\n\nconst probeNodeVersion = (path: string): string => {\n try {\n const output = execFileSync(path, [\"--version\"], {\n encoding: \"utf8\",\n env: { ...process.env, NODE_OPTIONS: \"\" },\n maxBuffer: VERSION_PROBE_MAX_BUFFER,\n timeout: VERSION_PROBE_TIMEOUT_MS,\n });\n\n return supportedNodeVersion(output, path);\n } catch (error) {\n if (error instanceof Error && error.message.startsWith(\"Cannot bundle Node.js\")) {\n throw error;\n }\n\n throw new Error(`Cannot determine the Node.js version from ${path}`, { cause: error });\n }\n};\n\nconst assertExpectedVersion = (configured: string | undefined, actual: string, source: NodeSource): string => {\n if (configured === undefined) {\n return actual;\n }\n\n const expected = parseNodeVersion(configured, `deploy.node.source: \"${source}\"`).version;\n\n if (expected !== actual) {\n throw new Error(\n `The Node.js runtime from deploy.node.source \"${source}\" is ${actual}, not the configured ${expected}`,\n );\n }\n\n return actual;\n};\n\nconst sourcePathFor = (settings: DeploySettings): string => {\n const node = settings.deploy.node ?? {};\n const source = nodeSourceFor(settings);\n\n if (source === \"host\") {\n return process.execPath;\n }\n\n if (node.path === undefined) {\n throw new Error('Cannot resolve the Node.js runtime: `deploy.node.source: \"path\"` needs `deploy.node.path`');\n }\n\n return resolve(settings.paths.root, node.path);\n};\n\nconst assertPortableRuntimeSource = (settings: DeploySettings): void => {\n const source = nodeSourceFor(settings);\n\n if (source === \"download\") {\n return;\n }\n\n const sourcePath = sourcePathFor(settings);\n const elf = existsSync(sourcePath) ? readOptionalElfInfo(sourcePath) : null;\n\n if (elf !== null) {\n assertPortableNode(elf, source);\n }\n};\n\nconst resolveNodeVersion = (settings: DeploySettings): string => {\n const node = settings.deploy.node ?? {};\n const source = nodeSourceFor(settings);\n\n if (source === \"download\") {\n return supportedNodeVersion(node.version ?? MINIMUM_NODE_VERSION, 'deploy.node.source: \"download\"');\n }\n\n const actual = source === \"host\"\n ? supportedNodeVersion(process.versions.node, 'deploy.node.source: \"host\"')\n : probeNodeVersion(sourcePathFor(settings));\n\n return assertExpectedVersion(node.version, actual, source);\n};\n\nconst didStripBinary = (path: string): boolean => {\n if (tryResolveExecutable(\"strip\") === undefined) {\n return false;\n }\n\n runCliTool({ tool: \"strip\", args: [\"--strip-unneeded\", path], target: \"the bundled Node.js\" });\n\n return true;\n};\n\nconst megabytes = (path: string): string => (statSync(path).size / BYTES_PER_MIB).toFixed(1);\n\nconst stageNode = (settings: DeploySettings, sourcePath: string): string => {\n mkdirSync(settings.paths.runtime, { recursive: true });\n const staged = join(settings.paths.runtime, NODE_FILENAME);\n copyFileSync(sourcePath, staged);\n chmodSync(staged, EXECUTABLE_MODE);\n\n return staged;\n};\n\nconst stageDownloadedNode = async (settings: DeploySettings, version: string): Promise<StagedRuntime> => {\n const downloaded = await downloadNode(version, settings.arch.node, settings.paths.runtime);\n chmodSync(downloaded.path, EXECUTABLE_MODE);\n\n return downloaded;\n};\n\nconst stageFromSource = async (\n settings: DeploySettings,\n version: string,\n source: NodeSource,\n): Promise<StagedRuntime> => {\n if (source === \"download\") {\n return stageDownloadedNode(settings, version);\n }\n\n const sourcePath = sourcePathFor(settings);\n\n return { path: stageNode(settings, sourcePath), licenseFile: licenseBesideNode(sourcePath) };\n};\n\ntype DeployNodeConfig = NonNullable<DeployConfig[\"node\"]>;\n\nconst shouldStripRuntime = (settings: DeploySettings, node: DeployNodeConfig, elf: ElfInfo): boolean => {\n if (node.shouldStrip === false) {\n return false;\n }\n\n if (elf.machine === elfMachineFor(hostArchName())) {\n return true;\n }\n\n warn(\n `Skipping \\`strip\\` on the bundled Node.js: it was built for ${settings.arch.node} and \\`strip\\` reads ` +\n `only ${hostArchName()}. The ${settings.arch.node} packages carry an unstripped runtime.`,\n );\n\n return false;\n};\n\nconst resolveNodeRuntime = async (settings: DeploySettings): Promise<NodeRuntime> => {\n const node = settings.deploy.node ?? {};\n const source = nodeSourceFor(settings);\n const version = resolveNodeVersion(settings);\n const staged = await stageFromSource(settings, version, source);\n const elf = readElfInfo(staged.path);\n assertPortableNode(elf, source);\n const isStripped = shouldStripRuntime(settings, node, elf) && didStripBinary(staged.path);\n const glibcMinimum = elf.glibcMinimum ?? \"unknown\";\n info(`Bundled Node.js v${version} (${megabytes(staged.path)} MiB, runtime glibc >= ${glibcMinimum})`);\n\n return { ...staged, version, glibcMinimum: elf.glibcMinimum, isStripped };\n};\n\nexport { assertPortableRuntimeSource, resolveNodeRuntime, resolveNodeVersion, sourcePathFor };\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
declare const PACKAGED_SONAMES: readonly ["libatomic.so.1", "libgcc_s.so.1", "libstdc++.so.6"];
|
|
2
|
+
type PackagedSoname = (typeof PACKAGED_SONAMES)[number];
|
|
3
|
+
declare const RUNTIME_SONAMES: Set<string>;
|
|
4
|
+
export { PACKAGED_SONAMES, type PackagedSoname, RUNTIME_SONAMES };
|
|
5
|
+
//# sourceMappingURL=sonames.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sonames.d.ts","sourceRoot":"","sources":["../../../src/deploy/node-runtime/sonames.ts"],"names":[],"mappings":"AAUA,QAAA,MAAM,gBAAgB,gEAAiE,CAAC;AAExF,KAAK,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD,QAAA,MAAM,eAAe,EAAE,GAAG,CAAC,MAAM,CAAoD,CAAC;AAEtF,OAAO,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const GLIBC_SONAMES = [
|
|
2
|
+
"ld-linux-aarch64.so.1",
|
|
3
|
+
"ld-linux-x86-64.so.2",
|
|
4
|
+
"libc.so.6",
|
|
5
|
+
"libdl.so.2",
|
|
6
|
+
"libm.so.6",
|
|
7
|
+
"libpthread.so.0",
|
|
8
|
+
"librt.so.1",
|
|
9
|
+
];
|
|
10
|
+
const PACKAGED_SONAMES = ["libatomic.so.1", "libgcc_s.so.1", "libstdc++.so.6"];
|
|
11
|
+
const RUNTIME_SONAMES = new Set([...GLIBC_SONAMES, ...PACKAGED_SONAMES]);
|
|
12
|
+
export { PACKAGED_SONAMES, RUNTIME_SONAMES };
|
|
13
|
+
//# sourceMappingURL=sonames.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sonames.js","sourceRoot":"","sources":["../../../src/deploy/node-runtime/sonames.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG;IAClB,uBAAuB;IACvB,sBAAsB;IACtB,WAAW;IACX,YAAY;IACZ,WAAW;IACX,iBAAiB;IACjB,YAAY;CACN,CAAC;AAEX,MAAM,gBAAgB,GAAG,CAAC,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,CAAU,CAAC;AAIxF,MAAM,eAAe,GAAgB,IAAI,GAAG,CAAC,CAAC,GAAG,aAAa,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC;AAEtF,OAAO,EAAE,gBAAgB,EAAuB,eAAe,EAAE,CAAC","sourcesContent":["const GLIBC_SONAMES = [\n \"ld-linux-aarch64.so.1\",\n \"ld-linux-x86-64.so.2\",\n \"libc.so.6\",\n \"libdl.so.2\",\n \"libm.so.6\",\n \"libpthread.so.0\",\n \"librt.so.1\",\n] as const;\n\nconst PACKAGED_SONAMES = [\"libatomic.so.1\", \"libgcc_s.so.1\", \"libstdc++.so.6\"] as const;\n\ntype PackagedSoname = (typeof PACKAGED_SONAMES)[number];\n\nconst RUNTIME_SONAMES: Set<string> = new Set([...GLIBC_SONAMES, ...PACKAGED_SONAMES]);\n\nexport { PACKAGED_SONAMES, type PackagedSoname, RUNTIME_SONAMES };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-deploy.d.ts","sourceRoot":"","sources":["../../src/deploy/run-deploy.ts"],"names":[],"mappings":"AA+DA,KAAK,aAAa,GAAG;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,eAAe,EAAE,OAAO,CAAC;CAC5B,CAAC;
|
|
1
|
+
{"version":3,"file":"run-deploy.d.ts","sourceRoot":"","sources":["../../src/deploy/run-deploy.ts"],"names":[],"mappings":"AA+DA,KAAK,aAAa,GAAG;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,eAAe,EAAE,OAAO,CAAC;CAC5B,CAAC;AA6fF,QAAA,MAAM,SAAS,GAAU,SAAS,aAAa,KAAG,OAAO,CAAC,IAAI,CAwB7D,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -67,7 +67,7 @@ import { renderMetainfo } from "./freedesktop/metainfo.js";
|
|
|
67
67
|
import { renderMimePackage } from "./freedesktop/mime-package.js";
|
|
68
68
|
import { validateDesktopEntry, validateMetainfo } from "./freedesktop/validate.js";
|
|
69
69
|
import { resolveStagedAddon } from "./native-addon.js";
|
|
70
|
-
import { resolveNodeRuntime } from "./node-runtime/index.js";
|
|
70
|
+
import { assertPortableRuntimeSource, resolveNodeRuntime } from "./node-runtime/index.js";
|
|
71
71
|
import { collectNotices } from "./notices/collect.js";
|
|
72
72
|
import { stageOverlays, stagePayload } from "./payload/stage.js";
|
|
73
73
|
import { DEFAULT_TARGETS, parseTargetList, targetsFor } from "./registry.js";
|
|
@@ -227,6 +227,9 @@ const preflight = ({ plan, settings, shouldPrintManifests, shouldSkipBuild }) =>
|
|
|
227
227
|
];
|
|
228
228
|
const report = probeTools([...required, ...packagerTools]);
|
|
229
229
|
assertTools(report);
|
|
230
|
+
if (isNodeRequired(targets, settings)) {
|
|
231
|
+
assertPortableRuntimeSource(settings);
|
|
232
|
+
}
|
|
230
233
|
warnMissingOptional(report);
|
|
231
234
|
warnFlatpakPermissions(targets, settings);
|
|
232
235
|
warnLibraryMinimums(targets, settings);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-deploy.js","sourceRoot":"","sources":["../../src/deploy/run-deploy.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Config, loadConfig } from \"@gtkx/config\";\nimport { info, warn } from \"@gtkx/utils\";\nimport { existsSync, mkdirSync, mkdtempSync, rmSync, writeFileSync } from \"node:fs\";\nimport { dirname, join, relative } from \"node:path\";\nimport type {\n DeployArchName,\n DeployArtifact,\n DeployConfig,\n DeployManifest,\n DeployPayload,\n DeploySettings,\n DeployTarget,\n DeployTool,\n} from \"./types.js\";\nimport { build as buildApp } from \"../builder.js\";\nimport { ensureGenerated } from \"../codegen/run-codegen.js\";\nimport { replaceCatalogTemplate } from \"../i18n/catalog-template.js\";\nimport {\n type CatalogProject,\n compileCatalogs,\n LOCALE_DIRNAME,\n requiresCatalogInitialization,\n resolveCatalogProject,\n synchronizeCatalogs,\n} from \"../i18n/catalogs.js\";\nimport { extractSourceCatalogTo } from \"../i18n/source-messages.js\";\nimport { prepareBuildOutDir, resolveBuildOutDir } from \"../internal/build-output.js\";\nimport { discoverSourceFiles } from \"../internal/source-imports.js\";\nimport { renderDesktopEntry } from \"./freedesktop/desktop-entry.js\";\nimport { extractMetadataMessages, localizeMetadata } from \"./freedesktop/localize.js\";\nimport { renderMetainfo } from \"./freedesktop/metainfo.js\";\nimport { renderMimePackage } from \"./freedesktop/mime-package.js\";\nimport { validateDesktopEntry, validateMetainfo } from \"./freedesktop/validate.js\";\nimport { resolveStagedAddon } from \"./native-addon.js\";\nimport { resolveNodeRuntime } from \"./node-runtime/index.js\";\nimport { collectNotices } from \"./notices/collect.js\";\nimport { type StagedMetadata, stageOverlays, stagePayload } from \"./payload/stage.js\";\nimport { DEFAULT_TARGETS, parseTargetList, targetsFor } from \"./registry.js\";\nimport { archesFor, hostArchName, isHostArch, parseArchList } from \"./settings/arch.js\";\nimport { readBuildManifest } from \"./settings/build-manifest.js\";\nimport { resolveDeploySettings } from \"./settings/index.js\";\nimport { readPackageManifest } from \"./settings/package-manifest.js\";\nimport { prepareDeployOutDir } from \"./settings/paths.js\";\nimport { missingDeployError } from \"./settings/starter.js\";\nimport { finishArgsFor, hasDisplaySocket, runtimeLabelFor } from \"./targets/flatpak-manifest.js\";\nimport { detectPackageManager } from \"./targets/flatpak-sources.js\";\nimport {\n APPSTREAMCLI,\n assertTools,\n DESKTOP_FILE_VALIDATE,\n FLATPAK_NODE_GENERATOR,\n FLATPAK_NODE_GENERATOR_PNPM,\n MSGFMT,\n MSGGREP,\n MSGINIT,\n MSGMERGE,\n probeTools,\n STRIP,\n TAR,\n warnMissingOptional,\n XGETTEXT,\n} from \"./tools.js\";\n\ntype DeployOptions = {\n entry: string;\n cwd: string;\n configFile?: string | undefined;\n targets?: string | undefined;\n arches?: string | undefined;\n outDir?: string | undefined;\n shouldPrintManifests: boolean;\n shouldSkipBuild: boolean;\n};\n\ntype LoadedDeployConfig = {\n config: Config;\n configFile: string;\n root: string;\n deploy: DeployConfig;\n};\n\ntype DeployPlan = {\n loaded: LoadedDeployConfig;\n targets: DeployTarget[];\n arches: [DeployArchName, ...DeployArchName[]];\n project: CatalogProject | null;\n};\n\ntype PreflightRequest = {\n plan: DeployPlan;\n settings: DeploySettings;\n shouldPrintManifests: boolean;\n shouldSkipBuild: boolean;\n};\n\ntype BuildApplicationRequest = {\n options: DeployOptions;\n plan: DeployPlan;\n settings: DeploySettings;\n buildOutDir: string | null;\n};\n\ntype BuildPayloadRequest = {\n options: DeployOptions;\n plan: DeployPlan;\n settings: DeploySettings;\n metadata: StagedMetadata;\n};\n\ntype ArchRunRequest = {\n options: DeployOptions;\n plan: DeployPlan;\n arch: DeployArchName;\n metadata: StagedMetadata;\n};\n\nconst BUILD_MODE = \"production\";\nconst BYTES_PER_MIB = 1024 * 1024;\nconst WEBKIT_LIBRARY = \"WebKit-6.0\";\nconst NETWORK_ARG = \"--share=network\";\nconst APPIMAGE_TARGET = \"appimage\";\nconst FLATPAK_TARGET = \"flatpak\";\n\nconst displayPath = (settings: DeploySettings, path: string): string => relative(settings.paths.root, path);\nconst megabytes = (size: number): string => (size / BYTES_PER_MIB).toFixed(1);\n\nconst writeManifest = (manifest: DeployManifest): void => {\n mkdirSync(dirname(manifest.path), { recursive: true });\n writeFileSync(manifest.path, manifest.contents);\n};\n\nconst renderMetadata = (settings: DeploySettings): StagedMetadata => ({\n desktopEntry: renderDesktopEntry(settings),\n metainfo: renderMetainfo(settings),\n mimePackage: renderMimePackage(settings),\n});\n\nconst isFlathubSubmission = (settings: DeploySettings, targets: DeployTarget[]): boolean =>\n settings.deploy.flatpak?.mode === \"source\" && targets.some((target) => target.name === FLATPAK_TARGET);\n\nconst validateMetadata = (settings: DeploySettings, metadata: StagedMetadata, areWarningsFatal: boolean): void => {\n const dir = settings.paths.metadata;\n mkdirSync(dir, { recursive: true });\n const desktopPath = join(dir, `${settings.applicationId}.desktop`);\n const metainfoPath = join(dir, `${settings.applicationId}.metainfo.xml`);\n writeFileSync(desktopPath, metadata.desktopEntry);\n writeFileSync(metainfoPath, metadata.metainfo);\n validateDesktopEntry(desktopPath);\n validateMetainfo(metainfoPath, areWarningsFatal);\n info(\"Validated the desktop entry and the metainfo\");\n};\n\nconst warnMissingDisplay = (settings: DeploySettings, finishArgs: string[]): void => {\n if (hasDisplaySocket(finishArgs)) {\n return;\n }\n\n warn(\n `The flatpak permissions grant no display socket, so ${settings.name} will start without a window. ` +\n \"Grant one through `deploy.flatpak.finishArgs`, such as `--socket=wayland`.\",\n );\n};\n\nconst warnMissingNetwork = (settings: DeploySettings, finishArgs: string[]): void => {\n if (settings.deploy.flatpak?.finishArgs === undefined || finishArgs.includes(NETWORK_ARG)) {\n return;\n }\n\n if (!settings.libraries.includes(WEBKIT_LIBRARY)) {\n return;\n }\n\n warn(`This app declares ${WEBKIT_LIBRARY} but its flatpak permissions omit ${NETWORK_ARG}, so pages will not load`);\n};\n\nconst warnFlatpakPermissions = (targets: DeployTarget[], settings: DeploySettings): void => {\n if (targets.every((target) => target.name !== FLATPAK_TARGET)) {\n return;\n }\n\n const finishArgs = finishArgsFor(settings);\n warnMissingDisplay(settings, finishArgs);\n warnMissingNetwork(settings, finishArgs);\n};\n\nconst minimumSummary = (settings: DeploySettings): string =>\n settings.libraries\n .filter((library) => settings.minimumLibraryVersions[library] !== undefined)\n .map((library) => `${library} >= ${String(settings.minimumLibraryVersions[library])}`)\n .join(\", \");\n\nconst warnAppImageMinimums = (settings: DeploySettings, summary: string): void => {\n warn(\n `An AppImage cannot declare a dependency, so nothing stops ${settings.name} from starting on a host ` +\n `whose libraries are older than the ones its bindings were generated against (${summary}). ` +\n \"Publish that requirement alongside the AppImage, or build on the oldest host you support.\",\n );\n};\n\nconst warnFlatpakMinimums = (settings: DeploySettings, summary: string): void => {\n warn(\n `The flatpak bundles binaries built against ${summary}, but runs them on ` +\n `${runtimeLabelFor(settings)}, whose libraries are whatever that runtime ships. ` +\n 'Set `deploy.flatpak.mode: \"source\"` to build inside the runtime instead.',\n );\n};\n\nconst warnUnusedMinimums = (settings: DeploySettings): void => {\n const minimums = settings.deploy.minimumLibraryVersions;\n\n if (minimums === undefined) {\n return;\n }\n\n const unused = Object.keys(minimums).filter((library) => !settings.libraries.includes(library));\n\n if (unused.length === 0) {\n return;\n }\n\n warn(\n `\\`deploy.minimumLibraryVersions\\` names ${unused.join(\", \")}, which this project generates no bindings for, ` +\n \"so those minimums change nothing.\",\n );\n};\n\nconst isPrebuiltFlatpak = (targets: DeployTarget[], settings: DeploySettings): boolean =>\n targets.some((target) => target.name === FLATPAK_TARGET) && settings.deploy.flatpak?.mode !== \"source\";\n\nconst warnLibraryMinimums = (targets: DeployTarget[], settings: DeploySettings): void => {\n const summary = minimumSummary(settings);\n\n if (summary.length > 0 && targets.some((target) => target.name === APPIMAGE_TARGET)) {\n warnAppImageMinimums(settings, summary);\n }\n\n if (summary.length > 0 && isPrebuiltFlatpak(targets, settings)) {\n warnFlatpakMinimums(settings, summary);\n }\n\n warnUnusedMinimums(settings);\n};\n\nconst sourceModeTools = (targets: DeployTarget[], settings: DeploySettings): DeployTool[] => {\n const isFlatpakSource = settings.deploy.flatpak?.mode === \"source\";\n\n if (!isFlatpakSource || targets.every((target) => target.name !== FLATPAK_TARGET)) {\n return [];\n }\n\n return detectPackageManager(settings) === \"pnpm\" ? [FLATPAK_NODE_GENERATOR_PNPM] : [FLATPAK_NODE_GENERATOR];\n};\n\nconst isNodeRequired = (targets: DeployTarget[], settings: DeploySettings): boolean =>\n !(settings.deploy.flatpak?.mode === \"source\" && targets.every((target) => target.name === FLATPAK_TARGET));\n\nconst archiveToolsFor = (settings: DeploySettings): DeployTool[] =>\n (settings.deploy.node?.source ?? \"download\") === \"download\" ? [TAR] : [];\n\nconst stripToolsFor = (settings: DeploySettings, arches: DeployArchName[]): DeployTool[] => {\n if (settings.deploy.node?.shouldStrip === false) {\n return [];\n }\n\n return arches.some((arch) => isHostArch(arch)) ? [STRIP] : [];\n};\n\nconst runtimeToolsFor = (targets: DeployTarget[], settings: DeploySettings, arches: DeployArchName[]): DeployTool[] => {\n if (!isNodeRequired(targets, settings)) {\n return [];\n }\n\n return [...archiveToolsFor(settings), ...stripToolsFor(settings, arches)];\n};\n\nconst crossBuildToolsFor = (arches: DeployArchName[]): DeployTool[] =>\n arches.every((arch) => isHostArch(arch)) ? [] : [TAR];\n\nconst mutableCatalogTools = (project: CatalogProject): DeployTool[] => {\n if (project.catalogs.length === 0) {\n return [MSGGREP, XGETTEXT];\n }\n\n return [\n MSGFMT,\n MSGGREP,\n ...(requiresCatalogInitialization(project) ? [MSGINIT] : []),\n MSGMERGE,\n XGETTEXT,\n ];\n};\n\nconst catalogTools = (project: CatalogProject | null, shouldSkipBuild: boolean): DeployTool[] => {\n if (project === null) {\n return [];\n }\n\n if (!shouldSkipBuild) {\n return mutableCatalogTools(project);\n }\n\n return project.catalogs.length === 0 ? [] : [MSGFMT];\n};\n\nconst preflight = ({ plan, settings, shouldPrintManifests, shouldSkipBuild }: PreflightRequest): void => {\n const { targets, arches, project } = plan;\n\n const packagerTools = shouldPrintManifests\n ? []\n : [...runtimeToolsFor(targets, settings, arches), ...targets.flatMap((target) => target.tools)];\n\n const required = [\n DESKTOP_FILE_VALIDATE,\n APPSTREAMCLI,\n ...crossBuildToolsFor(arches),\n ...catalogTools(project, shouldSkipBuild),\n ...sourceModeTools(targets, settings),\n ];\n\n const report = probeTools([...required, ...packagerTools]);\n assertTools(report);\n warnMissingOptional(report);\n warnFlatpakPermissions(targets, settings);\n warnLibraryMinimums(targets, settings);\n};\n\nconst hostOnlyNames = (targets: DeployTarget[]): string[] =>\n targets.filter((target) => target.isHostOnly).map((target) => target.name);\n\nconst assertCrossBuild = (plan: DeployPlan): void => {\n const foreign = plan.arches.filter((arch) => !isHostArch(arch));\n\n if (foreign.length === 0) {\n return;\n }\n\n const hostOnly = hostOnlyNames(plan.targets);\n\n if (hostOnly.length > 0) {\n throw new Error(\n `Cannot build ${hostOnly.join(\" and \")} for ${foreign.join(\" and \")}: those targets package with ` +\n `tooling that only runs on ${hostArchName()}. Deploy them in a separate run without --arch.`,\n );\n }\n\n if ((plan.loaded.deploy.node?.source ?? \"download\") !== \"download\") {\n throw new Error(\n 'Cannot deploy for another architecture with a `deploy.node.source` other than \"download\": ' +\n `a host or path runtime is always ${hostArchName()}.`,\n );\n }\n};\n\nconst resolveTargetNames = (options: DeployOptions, deploy: DeployConfig): string[] => {\n if (options.targets !== undefined) {\n return parseTargetList(options.targets);\n }\n\n return deploy.targets ?? DEFAULT_TARGETS;\n};\n\nconst resolveArchNames = (options: DeployOptions, deploy: DeployConfig): string[] => {\n if (options.arches !== undefined) {\n return parseArchList(options.arches);\n }\n\n return deploy.architectures ?? [hostArchName()];\n};\n\nconst loadDeployConfig = async (options: DeployOptions): Promise<LoadedDeployConfig> => {\n const { config, configFile, root } = await loadConfig(options.cwd, {\n mode: BUILD_MODE,\n configFile: options.configFile,\n });\n\n if (config.deploy === undefined) {\n throw missingDeployError(config.applicationId, readPackageManifest(root));\n }\n\n return { config, configFile, root, deploy: config.deploy };\n};\n\nconst settingsFor = (plan: DeployPlan, options: DeployOptions, arch: DeployArchName): DeploySettings =>\n resolveDeploySettings({\n root: plan.loaded.root,\n config: plan.loaded.config,\n configFile: plan.loaded.configFile,\n outDirOverride: options.outDir,\n arch,\n });\n\nconst planDeploy = async (options: DeployOptions): Promise<DeployPlan> => {\n const loaded = await loadDeployConfig(options);\n\n return {\n loaded,\n targets: targetsFor(resolveTargetNames(options, loaded.deploy)),\n arches: archesFor(resolveArchNames(options, loaded.deploy)),\n project: resolveCatalogProject(loaded.root, loaded.config.applicationId),\n };\n};\n\nconst synchronizeMetadataCatalogs = async (\n settings: DeploySettings,\n templates: StagedMetadata,\n project: CatalogProject | null,\n): Promise<void> => {\n if (project === null) {\n return;\n }\n\n const srcDir = join(project.root, \"src\");\n const sourceFiles = discoverSourceFiles(existsSync(srcDir) ? srcDir : project.root);\n const stagingDir = mkdtempSync(join(project.poDir, \".gtkx-deploy-i18n-\"));\n const stagedTemplate = join(stagingDir, `${project.domain}.pot`);\n const template = join(project.poDir, `${project.domain}.pot`);\n\n try {\n await extractSourceCatalogTo(project, sourceFiles, stagedTemplate);\n extractMetadataMessages(templates, project, stagedTemplate);\n replaceCatalogTemplate(stagedTemplate, template);\n synchronizeCatalogs(project);\n compileCatalogs(project, join(settings.paths.dist, LOCALE_DIRNAME));\n } finally {\n rmSync(stagingDir, { recursive: true, force: true });\n }\n};\n\nconst buildApplication = async ({\n options,\n plan,\n settings,\n buildOutDir,\n}: BuildApplicationRequest): Promise<StagedMetadata> => {\n const templates = renderMetadata(settings);\n\n if (buildOutDir === null) {\n if (plan.project !== null) {\n compileCatalogs(plan.project, join(settings.paths.dist, LOCALE_DIRNAME));\n }\n\n return localizeMetadata(templates, plan.project);\n }\n\n info(`Building ${options.entry}`);\n using preparedOutput = prepareBuildOutDir(settings.paths.root, buildOutDir);\n\n await buildApp({\n entry: options.entry,\n configFile: options.configFile,\n vite: { root: options.cwd, build: { outDir: preparedOutput.path, emptyOutDir: false } },\n });\n\n preparedOutput.commit();\n await synchronizeMetadataCatalogs(settings, templates, plan.project);\n\n return localizeMetadata(templates, plan.project);\n};\n\nconst buildArchPayload = async ({\n options,\n plan,\n settings,\n metadata,\n}: BuildPayloadRequest): Promise<DeployPayload> => {\n validateMetadata(settings, metadata, isFlathubSubmission(settings, plan.targets));\n const buildManifest = readBuildManifest(settings, plan.loaded);\n\n const builtSettings: DeploySettings = {\n ...settings,\n paths: { ...settings.paths, schemaFiles: buildManifest.schemaFiles },\n };\n\n const node = options.shouldPrintManifests || !isNodeRequired(plan.targets, builtSettings)\n ? null\n : await resolveNodeRuntime(builtSettings);\n\n const addon = await resolveStagedAddon(builtSettings);\n const stage = stagePayload({ settings: builtSettings, node, addon, metadata });\n info(`Staged ${String(stage.length)} files into ${displayPath(builtSettings, builtSettings.paths.stage)}`);\n const notices = collectNotices({ settings: builtSettings, node, packages: buildManifest.packages });\n\n return {\n settings: builtSettings,\n node,\n stage,\n notices,\n overlays: stageOverlays(builtSettings, notices, metadata),\n };\n};\n\nconst renderTargetManifests = (\n targets: DeployTarget[],\n payload: DeployPayload,\n): Map<DeployTarget, DeployManifest[]> => {\n const rendered: Map<DeployTarget, DeployManifest[]> = new Map();\n\n for (const target of targets) {\n const manifests = target.render(payload);\n\n for (const manifest of manifests) {\n writeManifest(manifest);\n info(`Wrote ${displayPath(payload.settings, manifest.path)}`);\n }\n\n rendered.set(target, manifests);\n }\n\n return rendered;\n};\n\nconst packTargets = async (\n rendered: Map<DeployTarget, DeployManifest[]>,\n payload: DeployPayload,\n): Promise<DeployArtifact[]> => {\n const artifacts: DeployArtifact[] = [];\n\n for (const [target, manifests] of rendered) {\n const built = await target.pack(payload, manifests);\n\n for (const artifact of built) {\n info(`Built ${displayPath(payload.settings, artifact.path)} (${megabytes(artifact.size)} MiB)`);\n }\n\n artifacts.push(...built);\n }\n\n return artifacts;\n};\n\nconst announce = (settings: DeploySettings, plan: DeployPlan): void => {\n const names = plan.targets.map((target) => target.name).join(\", \");\n const version = `${settings.versions.packageVersion}-${settings.versions.debRevision}`;\n const arches = plan.arches.join(\", \");\n info(`Deploying ${settings.name} ${version} as ${settings.binaryName} (${arches}) to ${names}`);\n};\n\nconst deployArch = async (request: ArchRunRequest): Promise<DeployArtifact[]> => {\n const { options, plan, arch, metadata } = request;\n const settings = settingsFor(plan, options, arch);\n const payload = await buildArchPayload({ options, plan, settings, metadata });\n const rendered = renderTargetManifests(plan.targets, payload);\n\n if (options.shouldPrintManifests) {\n const count = rendered.values().toArray().flat().length;\n info(`Wrote ${String(count)} manifests for ${arch}, 0 packages built`);\n\n return [];\n }\n\n return await packTargets(rendered, payload);\n};\n\nconst regenerate = async (options: DeployOptions, plan: DeployPlan): Promise<DeployPlan> => {\n if (options.shouldSkipBuild) {\n return plan;\n }\n\n await ensureGenerated(options.cwd, {\n shouldAnnounce: true,\n mode: BUILD_MODE,\n configFile: options.configFile,\n });\n\n return await planDeploy(options);\n};\n\nconst finish = (options: DeployOptions, settings: DeploySettings, artifacts: DeployArtifact[]): void => {\n if (options.shouldPrintManifests) {\n return;\n }\n\n const output = displayPath(settings, settings.paths.output);\n info(`Deploy complete: ${String(artifacts.length)} artifacts in ${output}`);\n};\n\nconst runDeploy = async (options: DeployOptions): Promise<void> => {\n const planned = await planDeploy(options);\n assertCrossBuild(planned);\n announce(settingsFor(planned, options, planned.arches[0]), planned);\n\n preflight({\n plan: planned,\n settings: settingsFor(planned, options, planned.arches[0]),\n shouldPrintManifests: options.shouldPrintManifests,\n shouldSkipBuild: options.shouldSkipBuild,\n });\n\n const plan = await regenerate(options, planned);\n const settings = settingsFor(plan, options, plan.arches[0]);\n const buildOutDir = options.shouldSkipBuild ? null : resolveBuildOutDir(settings.paths.root, settings.paths.dist);\n prepareDeployOutDir(settings.paths.root, settings.paths.outDir);\n const metadata = await buildApplication({ options, plan, settings, buildOutDir });\n const artifacts: DeployArtifact[] = [];\n\n for (const arch of plan.arches) {\n artifacts.push(...await deployArch({ options, plan, arch, metadata }));\n }\n\n finish(options, settings, artifacts);\n};\n\nexport { runDeploy };\n"]}
|
|
1
|
+
{"version":3,"file":"run-deploy.js","sourceRoot":"","sources":["../../src/deploy/run-deploy.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Config, loadConfig } from \"@gtkx/config\";\nimport { info, warn } from \"@gtkx/utils\";\nimport { existsSync, mkdirSync, mkdtempSync, rmSync, writeFileSync } from \"node:fs\";\nimport { dirname, join, relative } from \"node:path\";\nimport type {\n DeployArchName,\n DeployArtifact,\n DeployConfig,\n DeployManifest,\n DeployPayload,\n DeploySettings,\n DeployTarget,\n DeployTool,\n} from \"./types.js\";\nimport { build as buildApp } from \"../builder.js\";\nimport { ensureGenerated } from \"../codegen/run-codegen.js\";\nimport { replaceCatalogTemplate } from \"../i18n/catalog-template.js\";\nimport {\n type CatalogProject,\n compileCatalogs,\n LOCALE_DIRNAME,\n requiresCatalogInitialization,\n resolveCatalogProject,\n synchronizeCatalogs,\n} from \"../i18n/catalogs.js\";\nimport { extractSourceCatalogTo } from \"../i18n/source-messages.js\";\nimport { prepareBuildOutDir, resolveBuildOutDir } from \"../internal/build-output.js\";\nimport { discoverSourceFiles } from \"../internal/source-imports.js\";\nimport { renderDesktopEntry } from \"./freedesktop/desktop-entry.js\";\nimport { extractMetadataMessages, localizeMetadata } from \"./freedesktop/localize.js\";\nimport { renderMetainfo } from \"./freedesktop/metainfo.js\";\nimport { renderMimePackage } from \"./freedesktop/mime-package.js\";\nimport { validateDesktopEntry, validateMetainfo } from \"./freedesktop/validate.js\";\nimport { resolveStagedAddon } from \"./native-addon.js\";\nimport { assertPortableRuntimeSource, resolveNodeRuntime } from \"./node-runtime/index.js\";\nimport { collectNotices } from \"./notices/collect.js\";\nimport { type StagedMetadata, stageOverlays, stagePayload } from \"./payload/stage.js\";\nimport { DEFAULT_TARGETS, parseTargetList, targetsFor } from \"./registry.js\";\nimport { archesFor, hostArchName, isHostArch, parseArchList } from \"./settings/arch.js\";\nimport { readBuildManifest } from \"./settings/build-manifest.js\";\nimport { resolveDeploySettings } from \"./settings/index.js\";\nimport { readPackageManifest } from \"./settings/package-manifest.js\";\nimport { prepareDeployOutDir } from \"./settings/paths.js\";\nimport { missingDeployError } from \"./settings/starter.js\";\nimport { finishArgsFor, hasDisplaySocket, runtimeLabelFor } from \"./targets/flatpak-manifest.js\";\nimport { detectPackageManager } from \"./targets/flatpak-sources.js\";\nimport {\n APPSTREAMCLI,\n assertTools,\n DESKTOP_FILE_VALIDATE,\n FLATPAK_NODE_GENERATOR,\n FLATPAK_NODE_GENERATOR_PNPM,\n MSGFMT,\n MSGGREP,\n MSGINIT,\n MSGMERGE,\n probeTools,\n STRIP,\n TAR,\n warnMissingOptional,\n XGETTEXT,\n} from \"./tools.js\";\n\ntype DeployOptions = {\n entry: string;\n cwd: string;\n configFile?: string | undefined;\n targets?: string | undefined;\n arches?: string | undefined;\n outDir?: string | undefined;\n shouldPrintManifests: boolean;\n shouldSkipBuild: boolean;\n};\n\ntype LoadedDeployConfig = {\n config: Config;\n configFile: string;\n root: string;\n deploy: DeployConfig;\n};\n\ntype DeployPlan = {\n loaded: LoadedDeployConfig;\n targets: DeployTarget[];\n arches: [DeployArchName, ...DeployArchName[]];\n project: CatalogProject | null;\n};\n\ntype PreflightRequest = {\n plan: DeployPlan;\n settings: DeploySettings;\n shouldPrintManifests: boolean;\n shouldSkipBuild: boolean;\n};\n\ntype BuildApplicationRequest = {\n options: DeployOptions;\n plan: DeployPlan;\n settings: DeploySettings;\n buildOutDir: string | null;\n};\n\ntype BuildPayloadRequest = {\n options: DeployOptions;\n plan: DeployPlan;\n settings: DeploySettings;\n metadata: StagedMetadata;\n};\n\ntype ArchRunRequest = {\n options: DeployOptions;\n plan: DeployPlan;\n arch: DeployArchName;\n metadata: StagedMetadata;\n};\n\nconst BUILD_MODE = \"production\";\nconst BYTES_PER_MIB = 1024 * 1024;\nconst WEBKIT_LIBRARY = \"WebKit-6.0\";\nconst NETWORK_ARG = \"--share=network\";\nconst APPIMAGE_TARGET = \"appimage\";\nconst FLATPAK_TARGET = \"flatpak\";\n\nconst displayPath = (settings: DeploySettings, path: string): string => relative(settings.paths.root, path);\nconst megabytes = (size: number): string => (size / BYTES_PER_MIB).toFixed(1);\n\nconst writeManifest = (manifest: DeployManifest): void => {\n mkdirSync(dirname(manifest.path), { recursive: true });\n writeFileSync(manifest.path, manifest.contents);\n};\n\nconst renderMetadata = (settings: DeploySettings): StagedMetadata => ({\n desktopEntry: renderDesktopEntry(settings),\n metainfo: renderMetainfo(settings),\n mimePackage: renderMimePackage(settings),\n});\n\nconst isFlathubSubmission = (settings: DeploySettings, targets: DeployTarget[]): boolean =>\n settings.deploy.flatpak?.mode === \"source\" && targets.some((target) => target.name === FLATPAK_TARGET);\n\nconst validateMetadata = (settings: DeploySettings, metadata: StagedMetadata, areWarningsFatal: boolean): void => {\n const dir = settings.paths.metadata;\n mkdirSync(dir, { recursive: true });\n const desktopPath = join(dir, `${settings.applicationId}.desktop`);\n const metainfoPath = join(dir, `${settings.applicationId}.metainfo.xml`);\n writeFileSync(desktopPath, metadata.desktopEntry);\n writeFileSync(metainfoPath, metadata.metainfo);\n validateDesktopEntry(desktopPath);\n validateMetainfo(metainfoPath, areWarningsFatal);\n info(\"Validated the desktop entry and the metainfo\");\n};\n\nconst warnMissingDisplay = (settings: DeploySettings, finishArgs: string[]): void => {\n if (hasDisplaySocket(finishArgs)) {\n return;\n }\n\n warn(\n `The flatpak permissions grant no display socket, so ${settings.name} will start without a window. ` +\n \"Grant one through `deploy.flatpak.finishArgs`, such as `--socket=wayland`.\",\n );\n};\n\nconst warnMissingNetwork = (settings: DeploySettings, finishArgs: string[]): void => {\n if (settings.deploy.flatpak?.finishArgs === undefined || finishArgs.includes(NETWORK_ARG)) {\n return;\n }\n\n if (!settings.libraries.includes(WEBKIT_LIBRARY)) {\n return;\n }\n\n warn(`This app declares ${WEBKIT_LIBRARY} but its flatpak permissions omit ${NETWORK_ARG}, so pages will not load`);\n};\n\nconst warnFlatpakPermissions = (targets: DeployTarget[], settings: DeploySettings): void => {\n if (targets.every((target) => target.name !== FLATPAK_TARGET)) {\n return;\n }\n\n const finishArgs = finishArgsFor(settings);\n warnMissingDisplay(settings, finishArgs);\n warnMissingNetwork(settings, finishArgs);\n};\n\nconst minimumSummary = (settings: DeploySettings): string =>\n settings.libraries\n .filter((library) => settings.minimumLibraryVersions[library] !== undefined)\n .map((library) => `${library} >= ${String(settings.minimumLibraryVersions[library])}`)\n .join(\", \");\n\nconst warnAppImageMinimums = (settings: DeploySettings, summary: string): void => {\n warn(\n `An AppImage cannot declare a dependency, so nothing stops ${settings.name} from starting on a host ` +\n `whose libraries are older than the ones its bindings were generated against (${summary}). ` +\n \"Publish that requirement alongside the AppImage, or build on the oldest host you support.\",\n );\n};\n\nconst warnFlatpakMinimums = (settings: DeploySettings, summary: string): void => {\n warn(\n `The flatpak bundles binaries built against ${summary}, but runs them on ` +\n `${runtimeLabelFor(settings)}, whose libraries are whatever that runtime ships. ` +\n 'Set `deploy.flatpak.mode: \"source\"` to build inside the runtime instead.',\n );\n};\n\nconst warnUnusedMinimums = (settings: DeploySettings): void => {\n const minimums = settings.deploy.minimumLibraryVersions;\n\n if (minimums === undefined) {\n return;\n }\n\n const unused = Object.keys(minimums).filter((library) => !settings.libraries.includes(library));\n\n if (unused.length === 0) {\n return;\n }\n\n warn(\n `\\`deploy.minimumLibraryVersions\\` names ${unused.join(\", \")}, which this project generates no bindings for, ` +\n \"so those minimums change nothing.\",\n );\n};\n\nconst isPrebuiltFlatpak = (targets: DeployTarget[], settings: DeploySettings): boolean =>\n targets.some((target) => target.name === FLATPAK_TARGET) && settings.deploy.flatpak?.mode !== \"source\";\n\nconst warnLibraryMinimums = (targets: DeployTarget[], settings: DeploySettings): void => {\n const summary = minimumSummary(settings);\n\n if (summary.length > 0 && targets.some((target) => target.name === APPIMAGE_TARGET)) {\n warnAppImageMinimums(settings, summary);\n }\n\n if (summary.length > 0 && isPrebuiltFlatpak(targets, settings)) {\n warnFlatpakMinimums(settings, summary);\n }\n\n warnUnusedMinimums(settings);\n};\n\nconst sourceModeTools = (targets: DeployTarget[], settings: DeploySettings): DeployTool[] => {\n const isFlatpakSource = settings.deploy.flatpak?.mode === \"source\";\n\n if (!isFlatpakSource || targets.every((target) => target.name !== FLATPAK_TARGET)) {\n return [];\n }\n\n return detectPackageManager(settings) === \"pnpm\" ? [FLATPAK_NODE_GENERATOR_PNPM] : [FLATPAK_NODE_GENERATOR];\n};\n\nconst isNodeRequired = (targets: DeployTarget[], settings: DeploySettings): boolean =>\n !(settings.deploy.flatpak?.mode === \"source\" && targets.every((target) => target.name === FLATPAK_TARGET));\n\nconst archiveToolsFor = (settings: DeploySettings): DeployTool[] =>\n (settings.deploy.node?.source ?? \"download\") === \"download\" ? [TAR] : [];\n\nconst stripToolsFor = (settings: DeploySettings, arches: DeployArchName[]): DeployTool[] => {\n if (settings.deploy.node?.shouldStrip === false) {\n return [];\n }\n\n return arches.some((arch) => isHostArch(arch)) ? [STRIP] : [];\n};\n\nconst runtimeToolsFor = (targets: DeployTarget[], settings: DeploySettings, arches: DeployArchName[]): DeployTool[] => {\n if (!isNodeRequired(targets, settings)) {\n return [];\n }\n\n return [...archiveToolsFor(settings), ...stripToolsFor(settings, arches)];\n};\n\nconst crossBuildToolsFor = (arches: DeployArchName[]): DeployTool[] =>\n arches.every((arch) => isHostArch(arch)) ? [] : [TAR];\n\nconst mutableCatalogTools = (project: CatalogProject): DeployTool[] => {\n if (project.catalogs.length === 0) {\n return [MSGGREP, XGETTEXT];\n }\n\n return [\n MSGFMT,\n MSGGREP,\n ...(requiresCatalogInitialization(project) ? [MSGINIT] : []),\n MSGMERGE,\n XGETTEXT,\n ];\n};\n\nconst catalogTools = (project: CatalogProject | null, shouldSkipBuild: boolean): DeployTool[] => {\n if (project === null) {\n return [];\n }\n\n if (!shouldSkipBuild) {\n return mutableCatalogTools(project);\n }\n\n return project.catalogs.length === 0 ? [] : [MSGFMT];\n};\n\nconst preflight = ({ plan, settings, shouldPrintManifests, shouldSkipBuild }: PreflightRequest): void => {\n const { targets, arches, project } = plan;\n\n const packagerTools = shouldPrintManifests\n ? []\n : [...runtimeToolsFor(targets, settings, arches), ...targets.flatMap((target) => target.tools)];\n\n const required = [\n DESKTOP_FILE_VALIDATE,\n APPSTREAMCLI,\n ...crossBuildToolsFor(arches),\n ...catalogTools(project, shouldSkipBuild),\n ...sourceModeTools(targets, settings),\n ];\n\n const report = probeTools([...required, ...packagerTools]);\n assertTools(report);\n\n if (isNodeRequired(targets, settings)) {\n assertPortableRuntimeSource(settings);\n }\n\n warnMissingOptional(report);\n warnFlatpakPermissions(targets, settings);\n warnLibraryMinimums(targets, settings);\n};\n\nconst hostOnlyNames = (targets: DeployTarget[]): string[] =>\n targets.filter((target) => target.isHostOnly).map((target) => target.name);\n\nconst assertCrossBuild = (plan: DeployPlan): void => {\n const foreign = plan.arches.filter((arch) => !isHostArch(arch));\n\n if (foreign.length === 0) {\n return;\n }\n\n const hostOnly = hostOnlyNames(plan.targets);\n\n if (hostOnly.length > 0) {\n throw new Error(\n `Cannot build ${hostOnly.join(\" and \")} for ${foreign.join(\" and \")}: those targets package with ` +\n `tooling that only runs on ${hostArchName()}. Deploy them in a separate run without --arch.`,\n );\n }\n\n if ((plan.loaded.deploy.node?.source ?? \"download\") !== \"download\") {\n throw new Error(\n 'Cannot deploy for another architecture with a `deploy.node.source` other than \"download\": ' +\n `a host or path runtime is always ${hostArchName()}.`,\n );\n }\n};\n\nconst resolveTargetNames = (options: DeployOptions, deploy: DeployConfig): string[] => {\n if (options.targets !== undefined) {\n return parseTargetList(options.targets);\n }\n\n return deploy.targets ?? DEFAULT_TARGETS;\n};\n\nconst resolveArchNames = (options: DeployOptions, deploy: DeployConfig): string[] => {\n if (options.arches !== undefined) {\n return parseArchList(options.arches);\n }\n\n return deploy.architectures ?? [hostArchName()];\n};\n\nconst loadDeployConfig = async (options: DeployOptions): Promise<LoadedDeployConfig> => {\n const { config, configFile, root } = await loadConfig(options.cwd, {\n mode: BUILD_MODE,\n configFile: options.configFile,\n });\n\n if (config.deploy === undefined) {\n throw missingDeployError(config.applicationId, readPackageManifest(root));\n }\n\n return { config, configFile, root, deploy: config.deploy };\n};\n\nconst settingsFor = (plan: DeployPlan, options: DeployOptions, arch: DeployArchName): DeploySettings =>\n resolveDeploySettings({\n root: plan.loaded.root,\n config: plan.loaded.config,\n configFile: plan.loaded.configFile,\n outDirOverride: options.outDir,\n arch,\n });\n\nconst planDeploy = async (options: DeployOptions): Promise<DeployPlan> => {\n const loaded = await loadDeployConfig(options);\n\n return {\n loaded,\n targets: targetsFor(resolveTargetNames(options, loaded.deploy)),\n arches: archesFor(resolveArchNames(options, loaded.deploy)),\n project: resolveCatalogProject(loaded.root, loaded.config.applicationId),\n };\n};\n\nconst synchronizeMetadataCatalogs = async (\n settings: DeploySettings,\n templates: StagedMetadata,\n project: CatalogProject | null,\n): Promise<void> => {\n if (project === null) {\n return;\n }\n\n const srcDir = join(project.root, \"src\");\n const sourceFiles = discoverSourceFiles(existsSync(srcDir) ? srcDir : project.root);\n const stagingDir = mkdtempSync(join(project.poDir, \".gtkx-deploy-i18n-\"));\n const stagedTemplate = join(stagingDir, `${project.domain}.pot`);\n const template = join(project.poDir, `${project.domain}.pot`);\n\n try {\n await extractSourceCatalogTo(project, sourceFiles, stagedTemplate);\n extractMetadataMessages(templates, project, stagedTemplate);\n replaceCatalogTemplate(stagedTemplate, template);\n synchronizeCatalogs(project);\n compileCatalogs(project, join(settings.paths.dist, LOCALE_DIRNAME));\n } finally {\n rmSync(stagingDir, { recursive: true, force: true });\n }\n};\n\nconst buildApplication = async ({\n options,\n plan,\n settings,\n buildOutDir,\n}: BuildApplicationRequest): Promise<StagedMetadata> => {\n const templates = renderMetadata(settings);\n\n if (buildOutDir === null) {\n if (plan.project !== null) {\n compileCatalogs(plan.project, join(settings.paths.dist, LOCALE_DIRNAME));\n }\n\n return localizeMetadata(templates, plan.project);\n }\n\n info(`Building ${options.entry}`);\n using preparedOutput = prepareBuildOutDir(settings.paths.root, buildOutDir);\n\n await buildApp({\n entry: options.entry,\n configFile: options.configFile,\n vite: { root: options.cwd, build: { outDir: preparedOutput.path, emptyOutDir: false } },\n });\n\n preparedOutput.commit();\n await synchronizeMetadataCatalogs(settings, templates, plan.project);\n\n return localizeMetadata(templates, plan.project);\n};\n\nconst buildArchPayload = async ({\n options,\n plan,\n settings,\n metadata,\n}: BuildPayloadRequest): Promise<DeployPayload> => {\n validateMetadata(settings, metadata, isFlathubSubmission(settings, plan.targets));\n const buildManifest = readBuildManifest(settings, plan.loaded);\n\n const builtSettings: DeploySettings = {\n ...settings,\n paths: { ...settings.paths, schemaFiles: buildManifest.schemaFiles },\n };\n\n const node = options.shouldPrintManifests || !isNodeRequired(plan.targets, builtSettings)\n ? null\n : await resolveNodeRuntime(builtSettings);\n\n const addon = await resolveStagedAddon(builtSettings);\n const stage = stagePayload({ settings: builtSettings, node, addon, metadata });\n info(`Staged ${String(stage.length)} files into ${displayPath(builtSettings, builtSettings.paths.stage)}`);\n const notices = collectNotices({ settings: builtSettings, node, packages: buildManifest.packages });\n\n return {\n settings: builtSettings,\n node,\n stage,\n notices,\n overlays: stageOverlays(builtSettings, notices, metadata),\n };\n};\n\nconst renderTargetManifests = (\n targets: DeployTarget[],\n payload: DeployPayload,\n): Map<DeployTarget, DeployManifest[]> => {\n const rendered: Map<DeployTarget, DeployManifest[]> = new Map();\n\n for (const target of targets) {\n const manifests = target.render(payload);\n\n for (const manifest of manifests) {\n writeManifest(manifest);\n info(`Wrote ${displayPath(payload.settings, manifest.path)}`);\n }\n\n rendered.set(target, manifests);\n }\n\n return rendered;\n};\n\nconst packTargets = async (\n rendered: Map<DeployTarget, DeployManifest[]>,\n payload: DeployPayload,\n): Promise<DeployArtifact[]> => {\n const artifacts: DeployArtifact[] = [];\n\n for (const [target, manifests] of rendered) {\n const built = await target.pack(payload, manifests);\n\n for (const artifact of built) {\n info(`Built ${displayPath(payload.settings, artifact.path)} (${megabytes(artifact.size)} MiB)`);\n }\n\n artifacts.push(...built);\n }\n\n return artifacts;\n};\n\nconst announce = (settings: DeploySettings, plan: DeployPlan): void => {\n const names = plan.targets.map((target) => target.name).join(\", \");\n const version = `${settings.versions.packageVersion}-${settings.versions.debRevision}`;\n const arches = plan.arches.join(\", \");\n info(`Deploying ${settings.name} ${version} as ${settings.binaryName} (${arches}) to ${names}`);\n};\n\nconst deployArch = async (request: ArchRunRequest): Promise<DeployArtifact[]> => {\n const { options, plan, arch, metadata } = request;\n const settings = settingsFor(plan, options, arch);\n const payload = await buildArchPayload({ options, plan, settings, metadata });\n const rendered = renderTargetManifests(plan.targets, payload);\n\n if (options.shouldPrintManifests) {\n const count = rendered.values().toArray().flat().length;\n info(`Wrote ${String(count)} manifests for ${arch}, 0 packages built`);\n\n return [];\n }\n\n return await packTargets(rendered, payload);\n};\n\nconst regenerate = async (options: DeployOptions, plan: DeployPlan): Promise<DeployPlan> => {\n if (options.shouldSkipBuild) {\n return plan;\n }\n\n await ensureGenerated(options.cwd, {\n shouldAnnounce: true,\n mode: BUILD_MODE,\n configFile: options.configFile,\n });\n\n return await planDeploy(options);\n};\n\nconst finish = (options: DeployOptions, settings: DeploySettings, artifacts: DeployArtifact[]): void => {\n if (options.shouldPrintManifests) {\n return;\n }\n\n const output = displayPath(settings, settings.paths.output);\n info(`Deploy complete: ${String(artifacts.length)} artifacts in ${output}`);\n};\n\nconst runDeploy = async (options: DeployOptions): Promise<void> => {\n const planned = await planDeploy(options);\n assertCrossBuild(planned);\n announce(settingsFor(planned, options, planned.arches[0]), planned);\n\n preflight({\n plan: planned,\n settings: settingsFor(planned, options, planned.arches[0]),\n shouldPrintManifests: options.shouldPrintManifests,\n shouldSkipBuild: options.shouldSkipBuild,\n });\n\n const plan = await regenerate(options, planned);\n const settings = settingsFor(plan, options, plan.arches[0]);\n const buildOutDir = options.shouldSkipBuild ? null : resolveBuildOutDir(settings.paths.root, settings.paths.dist);\n prepareDeployOutDir(settings.paths.root, settings.paths.outDir);\n const metadata = await buildApplication({ options, plan, settings, buildOutDir });\n const artifacts: DeployArtifact[] = [];\n\n for (const arch of plan.arches) {\n artifacts.push(...await deployArch({ options, plan, arch, metadata }));\n }\n\n finish(options, settings, artifacts);\n};\n\nexport { runDeploy };\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icon-staging.d.ts","sourceRoot":"","sources":["../../src/internal/icon-staging.ts"],"names":[],"mappings":"AA4CA,QAAA,MAAM,iBAAiB,GAAI,MAAM,MAAM,EAAE,eAAe,MAAM,EAAE,YAAY,MAAM,GAAG,SAAS,KAAG,MAAM,GAAG,IAWzG,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { mkdirSync, rmSync, symlinkSync } from "node:fs";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { relativeIconPath, resolveApplicationIcon } from "./icon-path.js";
|
|
4
|
+
import { createRetainedStagingDir } from "./staging-dir.js";
|
|
5
|
+
const ICONS_DIR = "icons";
|
|
6
|
+
const stagingDirs = new Map();
|
|
7
|
+
const stagingFor = (root) => {
|
|
8
|
+
const existing = stagingDirs.get(root);
|
|
9
|
+
if (existing !== undefined) {
|
|
10
|
+
return existing;
|
|
11
|
+
}
|
|
12
|
+
const staging = createRetainedStagingDir("icons");
|
|
13
|
+
stagingDirs.set(root, staging);
|
|
14
|
+
return staging;
|
|
15
|
+
};
|
|
16
|
+
const resetIconsDir = (shareDir) => {
|
|
17
|
+
const iconsDir = join(shareDir, ICONS_DIR);
|
|
18
|
+
rmSync(iconsDir, { recursive: true, force: true });
|
|
19
|
+
return iconsDir;
|
|
20
|
+
};
|
|
21
|
+
const stageIconSource = (iconsDir, applicationId, source) => {
|
|
22
|
+
if (source.kind === "theme") {
|
|
23
|
+
symlinkSync(source.path, iconsDir, "dir");
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const target = join(iconsDir, relativeIconPath(applicationId, source.path));
|
|
27
|
+
mkdirSync(dirname(target), { recursive: true });
|
|
28
|
+
symlinkSync(source.path, target, "file");
|
|
29
|
+
};
|
|
30
|
+
const stageProjectIcons = (root, applicationId, configured) => {
|
|
31
|
+
const source = resolveApplicationIcon(root, applicationId, configured);
|
|
32
|
+
if (source.kind === "none") {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
const shareDir = stagingFor(root).retain();
|
|
36
|
+
stageIconSource(resetIconsDir(shareDir), applicationId, source);
|
|
37
|
+
return shareDir;
|
|
38
|
+
};
|
|
39
|
+
export { stageProjectIcons };
|
|
40
|
+
//# sourceMappingURL=icon-staging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icon-staging.js","sourceRoot":"","sources":["../../src/internal/icon-staging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAgC,MAAM,gBAAgB,CAAC;AACxG,OAAO,EAAE,wBAAwB,EAA2B,MAAM,kBAAkB,CAAC;AAErF,MAAM,SAAS,GAAG,OAAO,CAAC;AAC1B,MAAM,WAAW,GAAoC,IAAI,GAAG,EAAE,CAAC;AAE/D,MAAM,UAAU,GAAG,CAAC,IAAY,EAAsB,EAAE;IACpD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAEvC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,MAAM,OAAO,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClD,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAE/B,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,QAAgB,EAAU,EAAE;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC3C,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAEnD,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CACpB,QAAgB,EAChB,aAAqB,EACrB,MAA0D,EACtD,EAAE;IACN,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1B,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAE1C,OAAO;IACX,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5E,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,aAAqB,EAAE,UAA8B,EAAiB,EAAE;IAC7G,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;IAEvE,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3C,eAAe,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IAEhE,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,CAAC","sourcesContent":["import { mkdirSync, rmSync, symlinkSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { relativeIconPath, resolveApplicationIcon, type ResolvedApplicationIcon } from \"./icon-path.js\";\nimport { createRetainedStagingDir, type RetainedStagingDir } from \"./staging-dir.js\";\n\nconst ICONS_DIR = \"icons\";\nconst stagingDirs: Map<string, RetainedStagingDir> = new Map();\n\nconst stagingFor = (root: string): RetainedStagingDir => {\n const existing = stagingDirs.get(root);\n\n if (existing !== undefined) {\n return existing;\n }\n\n const staging = createRetainedStagingDir(\"icons\");\n stagingDirs.set(root, staging);\n\n return staging;\n};\n\nconst resetIconsDir = (shareDir: string): string => {\n const iconsDir = join(shareDir, ICONS_DIR);\n rmSync(iconsDir, { recursive: true, force: true });\n\n return iconsDir;\n};\n\nconst stageIconSource = (\n iconsDir: string,\n applicationId: string,\n source: Exclude<ResolvedApplicationIcon, { kind: \"none\" }>,\n): void => {\n if (source.kind === \"theme\") {\n symlinkSync(source.path, iconsDir, \"dir\");\n\n return;\n }\n\n const target = join(iconsDir, relativeIconPath(applicationId, source.path));\n mkdirSync(dirname(target), { recursive: true });\n symlinkSync(source.path, target, \"file\");\n};\n\nconst stageProjectIcons = (root: string, applicationId: string, configured: string | undefined): string | null => {\n const source = resolveApplicationIcon(root, applicationId, configured);\n\n if (source.kind === \"none\") {\n return null;\n }\n\n const shareDir = stagingFor(root).retain();\n stageIconSource(resetIconsDir(shareDir), applicationId, source);\n\n return shareDir;\n};\n\nexport { stageProjectIcons };\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icon-worker-env.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/icon-worker-env.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAK5C,iBAAS,iBAAiB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CA2BtD;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|