/** * UNSAFE * * Sometimes, we need to make a literal `import()` call from within commonJS * modules in order to pull in ES modules from commonJS. * * However, when tsc renders the modules to commonJS, it rewrites _all_ calls * to `import` as calls to `require`, which means we cannot actually use ES * modules from commonJS-transpiled TypeScript. * * To bypass this, we can eval the literal string. This is a stupid hack and * I hate it so much, but unfortunately it works. * * So, this is a wrapper function that results in a call to the literal * `import(...)` function in the transpiled code. It should be used VERY * sparingly. * * @see https://github.com/microsoft/TypeScript/issues/43329 * @param path */ export function unsafeESMImport(path: string): Promise { ((p: string) => p)(path) return eval('import(path)') // eslint-disable-line no-eval }