tricu

An interpreted language for exploring Tree Calculus
Log | Files | Refs | README | LICENSE

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 }