UNPKG

lambda-live-debugger

Version:

Debug Lambda functions locally like it is running in the cloud

86 lines (85 loc) 2.65 kB
import { cdkFramework } from './frameworks/cdkFramework.mjs'; import { slsFramework } from './frameworks/slsFramework.mjs'; import { samFramework } from './frameworks/samFramework.mjs'; import { terraformFramework } from './frameworks/terraformFramework.mjs'; import { openTofuFramework } from './frameworks/openTofuFramework.mjs'; import { Logger } from './logger.mjs'; import path from 'node:path'; /** * List of supported frameworks */ const frameworksSupported = [ cdkFramework, slsFramework, samFramework, terraformFramework, openTofuFramework, ]; /** * Get the names of the supported frameworks */ function getSupportedFrameworksNames() { return frameworksSupported.map((f) => f.name); } /** * Get the name of the current framework */ async function getCurrentFrameworkName(config) { const framework = await getCurrentFramework(frameworksSupported, config); return framework?.name; } async function getLambdas(config) { let resources = undefined; let frameworks = [...frameworksSupported]; if (config.framework) { if (config.framework === 'none') { frameworks = []; } else { frameworks = frameworks.filter((f) => f.name === config.framework); } } const framework = await getCurrentFramework(frameworks, config); if (framework) { Logger.verbose(`Getting resources with '${framework.name}' framework`); resources = await framework.getLambdas(config); if (config.function && !config.remove) { // if we are removing the debugger, we don't want to filter by function name const functionNameFilter = config.function.trim(); resources = resources.map((l) => { const matches = l.functionName === functionNameFilter || new RegExp('^' + functionNameFilter.split('*').join('.*') + '$').test(l.functionName); return matches ? l : { ...l, filteredOut: true }; }); } } else { return undefined; } return resources.map((r) => ({ ...r, codePath: path.resolve(r.codePath), esBuildOptions: { ...r.esBuildOptions, metafile: true, }, })); } /** * Get the current framework */ async function getCurrentFramework(frameworks, config) { let framework; for (const f of frameworks) { if (await f.canHandle(config)) { framework = f; break; } } return framework; } export const ResourceDiscovery = { getSupportedFrameworksNames, getCurrentFrameworkName, getLambdas, };