Admit checked restricted artifacts without individual code approvals
This commit is contained in:
+41
-4
@@ -128,8 +128,7 @@ for (const { target, mode, settings } of builds) {
|
||||
const bundlePath =
|
||||
mode === "remote" ? "share/quixos/remote/server/module.mjs" : `share/quixos/portable/${target}/module.mjs`;
|
||||
await fs.mkdir(path.dirname(path.join(output, bundlePath)), { recursive: true });
|
||||
const restricted = !!config.restricted && target === "server";
|
||||
const coreImport = target === "browser" ? coreURL : restricted ? config.restricted.sdk : coreServer;
|
||||
const coreImport = target === "browser" ? coreURL : coreServer;
|
||||
const metadata = path.join(work, "bundle-meta.json");
|
||||
measureBuild("portable-bundle", { package: pkg.revision, target, mode }, () =>
|
||||
execFileSync(
|
||||
@@ -137,7 +136,7 @@ for (const { target, mode, settings } of builds) {
|
||||
[
|
||||
entry,
|
||||
"--bundle",
|
||||
`--platform=${target === "browser" || restricted ? "browser" : "node"}`,
|
||||
`--platform=${target === "browser" ? "browser" : "node"}`,
|
||||
"--format=esm",
|
||||
"--minify-whitespace",
|
||||
"--target=es2024",
|
||||
@@ -159,7 +158,7 @@ for (const { target, mode, settings } of builds) {
|
||||
(i) =>
|
||||
i.external &&
|
||||
i.path !== coreImport &&
|
||||
!(target === "server" && !restricted && builtinModules.includes(i.path.replace(/^node:/, ""))),
|
||||
!(target === "server" && builtinModules.includes(i.path.replace(/^node:/, ""))),
|
||||
),
|
||||
)
|
||||
)
|
||||
@@ -182,6 +181,44 @@ for (const { target, mode, settings } of builds) {
|
||||
files: [await recordFile(bundlePath, "text/javascript"), ...sharedFiles],
|
||||
};
|
||||
implementations.push({ ...body, contentDigest: compiler.implementationDigest(body) });
|
||||
if (target === "server" && mode !== "remote" && exports.length) {
|
||||
// A closed candidate is not an eligibility claim. The host checks these
|
||||
// bytes and its exact qualified SDK before admitting it to the sandbox.
|
||||
// Keep a normal service implementation for unsupported dependencies.
|
||||
const restrictedPath = "share/quixos/restricted/module.mjs";
|
||||
const sdkPath = "share/quixos/restricted/core.mjs";
|
||||
const sdkName = "quixos:restricted-sdk/v1";
|
||||
await fs.mkdir(path.dirname(path.join(output, restrictedPath)), { recursive: true });
|
||||
await fs.copyFile(config.restrictedSDK, path.join(output, sdkPath));
|
||||
measureBuild("restricted-bundle", { package: pkg.revision }, () =>
|
||||
execFileSync(
|
||||
config.esbuild,
|
||||
[
|
||||
entry,
|
||||
"--bundle",
|
||||
"--platform=node",
|
||||
"--format=esm",
|
||||
"--minify-whitespace",
|
||||
"--target=es2024",
|
||||
`--outfile=${path.join(output, restrictedPath)}`,
|
||||
`--alias:@quixos/camino-replica-core=${sdkName}`,
|
||||
`--external:${sdkName}`,
|
||||
],
|
||||
{ cwd: work, stdio: "inherit" },
|
||||
),
|
||||
);
|
||||
const restricted = {
|
||||
id: "restricted-module",
|
||||
target: "server",
|
||||
compatibility: "quixos-restricted-module-v1",
|
||||
path: restrictedPath,
|
||||
ports: "quixos-transaction-ports-v1",
|
||||
registryExport: settings.registryExport,
|
||||
exports,
|
||||
files: [await recordFile(restrictedPath, "text/javascript"), await recordFile(sdkPath, "text/javascript")],
|
||||
};
|
||||
implementations.push({ ...restricted, contentDigest: compiler.implementationDigest(restricted) });
|
||||
}
|
||||
}
|
||||
const components =
|
||||
config.group && !config.components
|
||||
|
||||
Reference in New Issue
Block a user