UNPKG

691 BPlain TextView Raw
1// Utilities
2import { logError } from './error';
3
4export const handle = async (file: string) => {
5 let mod: unknown;
6
7 try {
8 mod = await import(file);
9
10 mod = await (mod as { default: unknown }).default; // use ES6 module's default export
11 } catch (err: unknown) {
12 if (isErrorObject(err) && err.stack) {
13 logError(`Error when importing ${file}: ${err.stack}`, 'invalid-entry');
14 }
15 process.exit(1);
16 }
17
18 if (typeof mod !== 'function') {
19 logError(`The file "${file}" does not export a function.`, 'no-export');
20 process.exit(1);
21 }
22
23 return mod;
24};
25
26function isErrorObject(error: unknown): error is Error {
27 return (error as Error).stack !== undefined;
28}