Make local graph execution optional across composed packages
This commit is contained in:
+13
-4
@@ -55,6 +55,7 @@ const targets = portable ? [...new Set([...portable.targets, "server"])] : [];
|
|||||||
const builds = targets.map((target) => ({ target, mode: target, settings: portable }));
|
const builds = targets.map((target) => ({ target, mode: target, settings: portable }));
|
||||||
if (config.remote) builds.push({ target: "server", mode: "remote", settings: config.remote });
|
if (config.remote) builds.push({ target: "server", mode: "remote", settings: config.remote });
|
||||||
for (const { target, mode, settings } of builds) {
|
for (const { target, mode, settings } of builds) {
|
||||||
|
const executionTarget = target === "browser" ? "target:org.quixos.execution.javascript@1" : "server";
|
||||||
if (!["browser", "server"].includes(target)) throw Error(`Unsupported JS build target ${target}`);
|
if (!["browser", "server"].includes(target)) throw Error(`Unsupported JS build target ${target}`);
|
||||||
const work = path.resolve(`work-${mode}`);
|
const work = path.resolve(`work-${mode}`);
|
||||||
await fs.cp(config.source, work, { recursive: true, dereference: false });
|
await fs.cp(config.source, work, { recursive: true, dereference: false });
|
||||||
@@ -86,11 +87,19 @@ for (const { target, mode, settings } of builds) {
|
|||||||
const source =
|
const source =
|
||||||
mode === "remote"
|
mode === "remote"
|
||||||
? compiler.generateRemoteTypeScriptBindings(plan.definition.bindingSchema, pkg.revision)
|
? compiler.generateRemoteTypeScriptBindings(plan.definition.bindingSchema, pkg.revision)
|
||||||
: compiler.generatePortableTypeScriptBindings(plan.definition.bindingSchema, pkg.revision, { target });
|
: compiler.generatePortableTypeScriptBindings(plan.definition.bindingSchema, pkg.revision, {
|
||||||
|
target: executionTarget,
|
||||||
|
});
|
||||||
await fs.mkdir(path.dirname(path.join(work, bindingPath)), { recursive: true });
|
await fs.mkdir(path.dirname(path.join(work, bindingPath)), { recursive: true });
|
||||||
await fs.writeFile(path.join(work, bindingPath), source);
|
await fs.writeFile(path.join(work, bindingPath), source);
|
||||||
generated.set(mode, { file: path.join(work, bindingPath), source });
|
generated.set(mode, { file: path.join(work, bindingPath), source });
|
||||||
await fs.writeFile(path.join(output, "share/quixos/generated", `${mode}.ts`), source);
|
await fs.writeFile(
|
||||||
|
path.join(
|
||||||
|
output,
|
||||||
|
mode === "remote" ? "share/quixos/generated/remote.ts" : compiler.generatedBindingPath(executionTarget),
|
||||||
|
),
|
||||||
|
source,
|
||||||
|
);
|
||||||
const entry = relative(settings.entries?.[target] ?? settings.entry);
|
const entry = relative(settings.entries?.[target] ?? settings.entry);
|
||||||
execFileSync(
|
execFileSync(
|
||||||
config.node,
|
config.node,
|
||||||
@@ -152,12 +161,12 @@ for (const { target, mode, settings } of builds) {
|
|||||||
.filter((e) =>
|
.filter((e) =>
|
||||||
mode === "remote"
|
mode === "remote"
|
||||||
? e.execution.kind === "remote"
|
? e.execution.kind === "remote"
|
||||||
: e.execution.kind !== "remote" && e.execution.targets.includes(target),
|
: e.execution.kind !== "remote" && e.execution.targets.includes(executionTarget),
|
||||||
)
|
)
|
||||||
.map((e) => e.id);
|
.map((e) => e.id);
|
||||||
const body = {
|
const body = {
|
||||||
id: `${mode}-module`,
|
id: `${mode}-module`,
|
||||||
target,
|
target: executionTarget,
|
||||||
compatibility: "quixos-js-module-v1",
|
compatibility: "quixos-js-module-v1",
|
||||||
path: bundlePath,
|
path: bundlePath,
|
||||||
ports: "quixos-transaction-ports-v1",
|
ports: "quixos-transaction-ports-v1",
|
||||||
|
|||||||
Reference in New Issue
Block a user