UNPKG

lambda-live-debugger

Version:

Debug Lambda functions locally like it is running in the cloud

66 lines (65 loc) 2.14 kB
import { outputFolder } from '../constants.mjs'; import * as esbuild from 'esbuild'; import * as url from 'url'; import * as path from 'path'; import fs from 'fs/promises'; /** * Get configuration from ts config file * @param configFile Config file * @returns Configuration */ export async function getConfigTsFromConfigFile(configFile) { const compileOutput = path.resolve(`${outputFolder}/configCompiled.mjs`); // if file does not exist, return empty config try { await fs.stat(configFile); } catch { return undefined; } try { // Build CDK code await esbuild.build({ entryPoints: [configFile], bundle: false, keepNames: true, platform: 'node', metafile: true, target: 'esnext', format: 'esm', outfile: compileOutput, sourcemap: true, treeShaking: true, tsconfigRaw: { compilerOptions: { esModuleInterop: true, skipLibCheck: true, target: 'esnext', allowJs: true, resolveJsonModule: true, moduleDetection: 'force', isolatedModules: true, verbatimModuleSyntax: false, strict: true, noUncheckedIndexedAccess: true, noImplicitOverride: true, module: 'NodeNext', sourceMap: true, lib: ['esnext'], }, }, banner: { js: [ `import { createRequire as topLevelCreateRequire } from 'module';`, `const require = topLevelCreateRequire(import.meta.url);`, ].join(''), }, }); } catch (error) { throw new Error(`Error building config file ${configFile}: ${error.message}`, { cause: error }); } const { href } = url.pathToFileURL(compileOutput); const config = await import(href); return config; }