MCPcopy Create free account
hub / github.com/ICBNetwork/web3-Wallet / instantiate

Function instantiate

ses.cjs:9045–9104  ·  view source on GitHub ↗
(
  compartmentPrivateFields,
  moduleAliases,
  moduleRecord)

Source from the content-addressed store, hash-verified

9043 }
9044
9045const instantiate= (
9046 compartmentPrivateFields,
9047 moduleAliases,
9048 moduleRecord)=>
9049 {
9050 const { compartment, moduleSpecifier, resolvedImports, staticModuleRecord}=
9051 moduleRecord;
9052 const { instances}= weakmapGet(compartmentPrivateFields, compartment);
9053
9054 // Memoize.
9055 if( mapHas(instances, moduleSpecifier)) {
9056 return mapGet(instances, moduleSpecifier);
9057 }
9058
9059 validateStaticModuleRecord(staticModuleRecord, moduleSpecifier);
9060
9061 const importedInstances= new Map();
9062 let moduleInstance;
9063 if( isPrecompiled(staticModuleRecord)) {
9064 validatePrecompiledStaticModuleRecord(staticModuleRecord, moduleSpecifier);
9065 moduleInstance= makeModuleInstance(
9066 compartmentPrivateFields,
9067 moduleAliases,
9068 moduleRecord,
9069 importedInstances);
9070
9071 }else if( isThirdParty(staticModuleRecord)) {
9072 validateThirdPartyStaticModuleRecord(staticModuleRecord, moduleSpecifier);
9073 moduleInstance= makeThirdPartyModuleInstance(
9074 compartmentPrivateFields,
9075 staticModuleRecord,
9076 compartment,
9077 moduleAliases,
9078 moduleSpecifier,
9079 resolvedImports);
9080
9081 }else {
9082 throw TypeError(
9083 `importHook must return a static module record, got ${q(
9084 staticModuleRecord)
9085 }`);
9086
9087 }
9088
9089 // Memoize.
9090 mapSet(instances, moduleSpecifier, moduleInstance);
9091
9092 // Link dependency modules.
9093 for( const [importSpecifier, resolvedSpecifier]of entries(resolvedImports)) {
9094 const importedInstance= link(
9095 compartmentPrivateFields,
9096 moduleAliases,
9097 compartment,
9098 resolvedSpecifier);
9099
9100 mapSet(importedInstances, importSpecifier, importedInstance);
9101 }
9102

Callers 1

linkFunction · 0.85

Calls 8

isPrecompiledFunction · 0.85
makeModuleInstanceFunction · 0.85
isThirdPartyFunction · 0.85
linkFunction · 0.85

Tested by

no test coverage detected