UNPKG

@buddy-js/cli

Version:

A IaC tool to create your [Buddy CI] pipelines programmatically via JS/TS.

43 lines (42 loc) 1.11 kB
import { createRequire } from 'node:module'; import { register } from 'node:module'; import { pathToFileURL } from 'node:url'; import * as tsNode from 'ts-node'; const CjsLoader = { extensions: ['.js', '.cjs'], load(file) { createRequire(import.meta.url)(file); } }; const EsmLoader = { extensions: ['.mjs'], async load(file) { await import(file); } }; const TsLoader = { extensions: ['.ts', '.cts'], load(file) { tsNode.register({ skipProject: true, compilerOptions: { module: 'CommonJS' } }); createRequire(import.meta.url)(file); } }; const TsEsmLoader = { extensions: ['.mts'], async load(file) { register('ts-node/esm', pathToFileURL('./')); await import(file); } }; const LOADERS = [CjsLoader, EsmLoader, TsLoader, TsEsmLoader]; export function getLoader(extension) { for (const loader of LOADERS) { if (loader.extensions.includes(extension)) { return loader; } } throw new Error(`Cannot load file with extension "${extension}"`); }