UNPKG

1.1 kBJavaScriptView Raw
1import { createRequire } from 'module';
2import { cwd } from 'process';
3import * as changeCaseAll from 'change-case-all';
4export function resolveExternalModuleAndFn(pointer) {
5 if (typeof pointer === 'function') {
6 return pointer;
7 }
8 // eslint-disable-next-line prefer-const
9 let [moduleName, functionName] = pointer.split('#');
10 // Temp workaround until v2
11 if (moduleName === 'change-case') {
12 moduleName = 'change-case-all';
13 }
14 let loadedModule;
15 if (moduleName === 'change-case-all') {
16 loadedModule = changeCaseAll;
17 }
18 else {
19 // we have to use a path to a filename here (it does not need to exist.)
20 // https://github.com/dotansimha/graphql-code-generator/issues/6553
21 const cwdRequire = createRequire(cwd() + '/index.js');
22 loadedModule = cwdRequire(moduleName);
23 if (!(functionName in loadedModule) && typeof loadedModule !== 'function') {
24 throw new Error(`${functionName} couldn't be found in module ${moduleName}!`);
25 }
26 }
27 return loadedModule[functionName] || loadedModule;
28}