@graphql-codegen/cli
Version:
<p align="center"> <img src="https://github.com/dotansimha/graphql-code-generator/blob/master/logo.png?raw=true" /> </p>
48 lines (44 loc) • 1.35 kB
JavaScript
import { resolve } from 'path';
export async function getPresetByName(name, loader) {
const possibleNames = [
`@graphql-codegen/${name}`,
`@graphql-codegen/${name}-preset`,
name,
resolve(process.cwd(), name),
];
for (const moduleName of possibleNames) {
try {
const loaded = await loader(moduleName);
if (loaded && loaded.preset) {
return loaded.preset;
}
if (loaded && loaded.default) {
return loaded.default;
}
return loaded;
}
catch (err) {
if (
/** CJS Error code */
err.code !== 'MODULE_NOT_FOUND' &&
/** ESM Error code */
err.code !== 'ERR_MODULE_NOT_FOUND') {
throw new Error(`Unable to load preset matching ${name}
Unable to load preset matching '${name}'.
Reason:
${err.message}
`);
}
}
}
const possibleNamesMsg = possibleNames
.map(name => `
- ${name}
`.trimRight())
.join('');
throw new Error(`Unable to find preset matching ${name}
Unable to find preset matching '${name}'
Install one of the following packages:
${possibleNamesMsg}
`);
}