entry-script
Version:
Modular control for entry script execution.
24 lines (23 loc) • 797 B
JavaScript
import { defaultImport } from 'default-import';
import { MainNotImplementedError } from '#not-implemented-error';
import { args, bin } from '#process-argv';
export class EntryScript {
async main() {
throw new MainNotImplementedError(true);
}
static async main() {
throw new MainNotImplementedError(false);
}
}
const isEntryScript = (x)=>Object.prototype.isPrototypeOf.call(EntryScript, x);
export const runAsMain = async (url)=>{
if (url) {
const rawEntryScript = await import(url).catch(()=>null);
const script = defaultImport(rawEntryScript);
if (script && (script instanceof EntryScript || isEntryScript(script))) {
await script.main(args);
}
}
};
void runAsMain(bin);
//# sourceMappingURL=entry-script.js.map