Skip to content

Commit 3d2741a

Browse files
committed
feat: add afterPackage hook for plugins
1 parent c118dff commit 3d2741a

File tree

5 files changed

+33
-10
lines changed

5 files changed

+33
-10
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "serverless-aws-lambda",
3-
"version": "4.8.2",
3+
"version": "4.8.3",
44
"description": "AWS Application Load Balancer and API Gateway - Lambda dev tool for Serverless. Allows Express synthax in handlers. Supports packaging, local invoking and offline ALB, APG, S3, SNS, SQS, DynamoDB Stream server mocking.",
55
"author": "Inqnuam",
66
"license": "MIT",
@@ -70,7 +70,7 @@
7070
"@types/archiver": "^5.3.2",
7171
"@types/node": "^14.14.31",
7272
"@types/serve-static": "^1.15.5",
73-
"typescript": "^5.5.3",
73+
"typescript": "^5.5.4",
7474
"vitest": "^1.6.0"
7575
},
7676
"keywords": [

src/config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export interface Config {
1818
offline?: OfflineConfig;
1919
buildCallback?: (result: BuildResult, isRebuild: boolean) => Promise<void> | void;
2020
afterDeployCallbacks?: (() => Promise<void> | void)[];
21+
afterPackageCallbacks?: (() => Promise<void> | void)[];
2122
}
2223

2324
export interface ServerConfig {

src/defineConfig.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ export interface SlsAwsLambdaPlugin {
8383
onInit?: (this: ClientConfigParams) => Promise<void> | void;
8484
onExit?: (this: ClientConfigParams, code: string | number) => void;
8585
afterDeploy?: (this: ClientConfigParams) => Promise<void> | void;
86+
afterPackage?: (this: ClientConfigParams) => Promise<void> | void;
8687
offline?: {
8788
onReady?: (this: ClientConfigParams, port: number, ip: string) => Promise<void> | void;
8889
/**
@@ -171,6 +172,7 @@ function defineConfig(options: Options) {
171172
port: options.offline?.port,
172173
},
173174
afterDeployCallbacks: [],
175+
afterPackageCallbacks: [],
174176
};
175177

176178
if (options.services) {
@@ -244,6 +246,11 @@ function defineConfig(options: Options) {
244246
if (typeof plugin.afterDeploy == "function") {
245247
config.afterDeployCallbacks!.push(plugin.afterDeploy.bind(self));
246248
}
249+
250+
if (typeof plugin.afterPackage == "function") {
251+
config.afterPackageCallbacks!.push(plugin.afterPackage.bind(self));
252+
}
253+
247254
if (plugin.onInit) {
248255
try {
249256
await plugin.onInit.call(self);
@@ -258,6 +265,10 @@ function defineConfig(options: Options) {
258265
if (!config.afterDeployCallbacks!.length) {
259266
delete config.afterDeployCallbacks;
260267
}
268+
if (!config.afterPackageCallbacks!.length) {
269+
delete config.afterPackageCallbacks;
270+
}
271+
261272
return config;
262273
};
263274
}

src/index.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ class ServerlessAwsLambda extends Daemon {
5555
nodeVersion: number | boolean | string | undefined = false;
5656
invokeName?: string;
5757
afterDeployCallbacks: (() => void | Promise<void>)[] = [];
58+
afterPackageCallbacks: (() => void | Promise<void>)[] = [];
5859
resources: ReturnType<typeof getResources> = { ddb: {}, kinesis: {}, sns: {}, sqs: {} };
5960
static tags: string[] = ["build"];
6061
constructor(serverless: any, options: any, pluginUtils: PluginUtils) {
@@ -120,6 +121,7 @@ class ServerlessAwsLambda extends Daemon {
120121
"before:invoke:local:invoke": this.invokeLocal.bind(this),
121122
"after:aws:deploy:finalize:cleanup": this.afterDeploy.bind(this),
122123
"after:invoke:local:invoke": process.exit,
124+
"after:package:finalize": this.afterPackage.bind(this),
123125
};
124126
}
125127

@@ -139,6 +141,11 @@ class ServerlessAwsLambda extends Daemon {
139141
}
140142
}
141143
}
144+
async afterPackage() {
145+
for (const cb of this.afterPackageCallbacks) {
146+
await cb();
147+
}
148+
}
142149
async init(isPackaging: boolean) {
143150
this.resources = getResources(this.serverless);
144151
this.#setRuntimeEnvs();
@@ -581,6 +588,10 @@ class ServerlessAwsLambda extends Daemon {
581588
this.afterDeployCallbacks = exportedObject.afterDeployCallbacks;
582589
}
583590

591+
if (Array.isArray(exportedObject.afterPackageCallbacks)) {
592+
this.afterPackageCallbacks = exportedObject.afterPackageCallbacks;
593+
}
594+
584595
if (exportedObject.offline && typeof exportedObject.offline == "object") {
585596
if (Array.isArray(exportedObject.offline.request)) {
586597
customOfflineRequests.unshift(...exportedObject.offline.request);

yarn.lock

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1687,10 +1687,10 @@ lazystream@^1.0.0:
16871687
dependencies:
16881688
readable-stream "^2.0.5"
16891689

1690-
local-aws-sqs@^1.0.1:
1691-
version "1.0.1"
1692-
resolved "https://registry.yarnpkg.com/local-aws-sqs/-/local-aws-sqs-1.0.1.tgz#1e9c25fd3409598595a309684bcb1d23991ce76c"
1693-
integrity sha512-Dn5ueF5WUV5LOHrKhjjYUvZo7Rchla3DtkjZ1G8cy6zNxfmJYlu3PTRkponCtBSaVehrMZ0SKKdIJ2JXJsOXFQ==
1690+
local-aws-sqs@^1.0.2:
1691+
version "1.0.2"
1692+
resolved "https://registry.yarnpkg.com/local-aws-sqs/-/local-aws-sqs-1.0.2.tgz#c921fbe50b86d79df91e3a93c8c12a80f6d414c7"
1693+
integrity sha512-l5MwX8zS+mLAVYwEAbRZEf9kmbeJxRbn03vJnuglCNQA1urgWmFCh1C2reQtoo9B2Maiw8iDKrDyZAZfYSTQig==
16941694
dependencies:
16951695
aws-md5-of-message-attributes "^1.0.0"
16961696
aws-query-decoder "^1.0.1"
@@ -2145,10 +2145,10 @@ type-detect@^4.0.0, type-detect@^4.0.8:
21452145
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
21462146
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
21472147

2148-
typescript@^5.5.3:
2149-
version "5.5.3"
2150-
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.3.tgz#e1b0a3c394190838a0b168e771b0ad56a0af0faa"
2151-
integrity sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==
2148+
typescript@^5.5.4:
2149+
version "5.5.4"
2150+
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba"
2151+
integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==
21522152

21532153
ufo@^1.5.3:
21542154
version "1.5.3"

0 commit comments

Comments
 (0)