MCPcopy
hub / github.com/subquery/subql / loadDependency

Function loadDependency

packages/cli/src/modulars/moduleLoader.ts:13–55  ·  view source on GitHub ↗
(network: N, projectDir: string)

Source from the content-addressed store, hash-verified

11const moduleCache: Partial<ModuleCache> = {};
12
13export function loadDependency<N extends NETWORK_FAMILY>(network: N, projectDir: string): ModuleCache[N] {
14 const packageName = networkPackages[network];
15 if (!packageName) {
16 throw new Error(`Unknown network: ${network}`);
17 }
18 if (!moduleCache[network]) {
19 try {
20 // Resolve the package from the project directory, otherwise look relative to the current package
21 // We don't do this in tests because it will resolve mixed versions because dev dependenceies
22 const projectDep =
23 process.env.NODE_ENV === 'test' ? undefined : resolveFrom.silent(projectDir ?? process.cwd(), packageName);
24 moduleCache[network] = require(projectDep ?? packageName) as ModuleCache[N];
25 } catch (error) {
26 console.warn(`! Failed to load ${packageName} locally: ${error}. \n ! Attempting to load globally`);
27 try {
28 const globalNodePath = process.env.NODE_PATH;
29 if (!globalNodePath) {
30 throw new Error(
31 `If you have installed ${packageName} globally please set the NODE_PATH environment variable. Follow this document for more details: https://nodejs.org/api/modules.html#loading-from-the-global-folders`
32 );
33 }
34 const globalModulePath = path.join(globalNodePath, packageName);
35 if (existsSync(globalModulePath)) {
36 moduleCache[network] = require(globalModulePath) as ModuleCache[N];
37 } else {
38 throw new Error(`Global module ${packageName} not found, please run "npm i -g ${packageName}" and retry`);
39 }
40 } catch (globalError) {
41 throw new Error(`! Failed to load dependency globally: ${packageName}`, {cause: globalError});
42 }
43 }
44 }
45 // Check dependencies actually satisfy INetworkCommonModule
46 const loadedModule = moduleCache[network];
47 if (
48 loadedModule?.parseProjectManifest === undefined ||
49 loadedModule?.isCustomDs === undefined ||
50 loadedModule?.isRuntimeDs === undefined
51 ) {
52 throw new Error(`${packageName} is not compatible, please make sure package update to latest version`);
53 }
54 return loadedModule;
55}

Callers 8

codegenFunction · 0.90
constructDatasourcesTsFunction · 0.90
constructDatasourcesYamlFunction · 0.90
uploadToIpfsFunction · 0.90
generateAdapterFunction · 0.90

Calls 1

warnMethod · 0.45

Tested by

no test coverage detected