UNPKG

1.35 kBJavaScriptView Raw
1import { resolve } from 'path';
2export async function getPresetByName(name, loader) {
3 const possibleNames = [
4 `@graphql-codegen/${name}`,
5 `@graphql-codegen/${name}-preset`,
6 name,
7 resolve(process.cwd(), name),
8 ];
9 for (const moduleName of possibleNames) {
10 try {
11 const loaded = await loader(moduleName);
12 if (loaded && loaded.preset) {
13 return loaded.preset;
14 }
15 if (loaded && loaded.default) {
16 return loaded.default;
17 }
18 return loaded;
19 }
20 catch (err) {
21 if (
22 /** CJS Error code */
23 err.code !== 'MODULE_NOT_FOUND' &&
24 /** ESM Error code */
25 err.code !== 'ERR_MODULE_NOT_FOUND') {
26 throw new Error(`Unable to load preset matching ${name}
27
28 Unable to load preset matching '${name}'.
29 Reason:
30 ${err.message}
31 `);
32 }
33 }
34 }
35 const possibleNamesMsg = possibleNames
36 .map(name => `
37 - ${name}
38 `.trimRight())
39 .join('');
40 throw new Error(`Unable to find preset matching ${name}
41
42 Unable to find preset matching '${name}'
43 Install one of the following packages:
44
45 ${possibleNamesMsg}
46 `);
47}