tricu

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

module-resolver.ts (775B)


      1 // Resolve indexed immutable manifests and verify their transport and module pins.
      2 import { fetchBundle, type Bundle } from './bundle.js';
      3 import { moduleHash, moduleIdentity } from './module-identity.js';
      4 import type { Release } from './packages.js';
      5 export async function fetchModule(base: URL, reference: unknown, releases: readonly Release[]): Promise<Bundle> {
      6   const manifest = moduleHash(reference);
      7   const release = releases.find(r => (r.manifest as string) === manifest);
      8   if (!release) 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) throw new Error('Module manifest mismatch');
     11   return bundle;
     12 }