diff --git a/src/Serverless.d.ts b/src/Serverless.d.ts index dade3099..1e39fb54 100644 --- a/src/Serverless.d.ts +++ b/src/Serverless.d.ts @@ -37,11 +37,15 @@ declare namespace Serverless { } interface Function { - handler: string + handler?: string package: Serverless.Package runtime?: string + image?: Serverless.Image } + interface Image { + name: string + } interface Layer { handler: string package: Serverless.Package diff --git a/src/typescript.ts b/src/typescript.ts index fd60a798..9273929b 100644 --- a/src/typescript.ts +++ b/src/typescript.ts @@ -48,6 +48,7 @@ export function extractFileNames(cwd: string, provider: string, functions?: { [k return _.values(functions) .map(fn => fn.handler) + .filter(Boolean) .map(h => { const fnName = _.last(h.split('.')) const fnNameLastAppearanceIndex = h.lastIndexOf(fnName) @@ -169,4 +170,4 @@ export function getTypescriptCompileFiles( return configParseResult.fileNames.map(f => f.replace(cwd + '/', '')) } return [] -} \ No newline at end of file +} diff --git a/tests/typescript.extractFileName.test.ts b/tests/typescript.extractFileName.test.ts index 5fb25fe9..4e9ed13e 100644 --- a/tests/typescript.extractFileName.test.ts +++ b/tests/typescript.extractFileName.test.ts @@ -29,6 +29,16 @@ const functions: { [key: string]: Serverless.Function } = { patterns: [] } }, + dockerBasedFunction: { + image: { + name: 'path/to/lambda/image' + }, + package: { + include: [], + exclude: [], + patterns: [] + } + } } describe('extractFileName', () => {