UNPKG

lambda-live-debugger

Version:

Debug Lambda functions locally like it is running in the cloud

78 lines (77 loc) 2.27 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 { Logger } from './logger.mjs'; import path from 'node:path'; /** * List of supported frameworks */ const frameworksSupported = [ cdkFramework, slsFramework, samFramework, terraformFramework, ]; /** * 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() { const framework = await getCurrentFramework(frameworksSupported); 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); if (framework) { Logger.verbose(`Getting resources with '${framework.name}' framework`); resources = await framework.getLambdas(config); if (config.function) { const functionNameFilter = config.function.trim(); resources = resources.filter( // filter by function name, can use * as wildcard (l) => l.functionName === functionNameFilter || new RegExp('^' + functionNameFilter.split('*').join('.*') + '$').test(l.functionName)); } } else { return undefined; } return resources.map((r) => ({ ...r, codePath: path.resolve(r.codePath), })); } /** * Get the current framework */ async function getCurrentFramework(frameworks) { let framework; for (const f of frameworks) { if (await f.canHandle()) { framework = f; break; } } return framework; } export const ResourceDiscovery = { getSupportedFrameworksNames, getCurrentFrameworkName, getLambdas, };