fix(assets): publish controllable traffic signal runtime
This commit is contained in:
@@ -49,6 +49,17 @@ function validateManifest(manifest, packageDir, options = {}) {
|
||||
if (!resolved.startsWith(`${path.resolve(packageDir)}${path.sep}`) || !fs.existsSync(resolved)) fail(`asset '${asset.id}' is missing from package: ${asset.uri}`);
|
||||
}
|
||||
}
|
||||
if (manifest.runtime !== undefined && !Array.isArray(manifest.runtime)) fail("runtime must be an array");
|
||||
for (const runtime of manifest?.runtime || []) {
|
||||
if (!runtime || typeof runtime.id !== "string" || !runtime.id) { fail("runtime asset id is required"); continue; }
|
||||
if (ids.has(runtime.id)) fail(`duplicate asset id '${runtime.id}'`); ids.add(runtime.id);
|
||||
if (typeof runtime.type !== "string" || !runtime.type) fail(`runtime '${runtime.id}' type is required`);
|
||||
try { relativeUri(runtime.uri); } catch (error) { fail(error.message); continue; }
|
||||
if (packageDir && options.requireFiles !== false) {
|
||||
const resolved = path.resolve(packageDir, runtime.uri);
|
||||
if (!resolved.startsWith(`${path.resolve(packageDir)}${path.sep}`) || !fs.existsSync(resolved)) fail(`runtime '${runtime.id}' is missing from package: ${runtime.uri}`);
|
||||
}
|
||||
}
|
||||
if (sceneCount !== 1) fail("exactly one scene asset is required");
|
||||
if (errors.length) throw new Error(`Invalid asset package manifest: ${errors.join("; ")}`);
|
||||
return manifest;
|
||||
@@ -60,6 +71,11 @@ function addIntegrity(manifest, packageDir) {
|
||||
const buffer = fs.readFileSync(file);
|
||||
asset.integrity = { bytes: buffer.length, sha256: crypto.createHash("sha256").update(buffer).digest("hex") };
|
||||
}
|
||||
for (const runtime of manifest.runtime || []) {
|
||||
const file = path.resolve(packageDir, runtime.uri);
|
||||
const buffer = fs.readFileSync(file);
|
||||
runtime.integrity = { bytes: buffer.length, sha256: crypto.createHash("sha256").update(buffer).digest("hex") };
|
||||
}
|
||||
return manifest;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user