module-resolver.js (681B)
1 // Resolve indexed immutable manifests and verify their transport and module pins. 2 import { fetchBundle } from './bundle.js'; 3 import { moduleHash, moduleIdentity } from './module-identity.js'; 4 export async function fetchModule(base, reference, releases) { 5 const manifest = moduleHash(reference); 6 const release = releases.find(r => r.manifest === manifest); 7 if (!release) 8 throw new Error(`Unknown module manifest ${manifest}`); 9 const bundle = await fetchBundle(new URL(`/_arboricx/bundle/hash/${release.hash}`, base), release.hash); 10 if (await moduleIdentity(bundle) !== manifest) 11 throw new Error('Module manifest mismatch'); 12 return bundle; 13 }