serverless-spy 0.0.35 → 0.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +236 -9
- package/API.md +161 -0
- package/dist/releasetag.txt +1 -1
- package/extension/interceptor.ts +19 -16
- package/functions/sqsSubscriptionAndDropAllMessages.ts +3 -0
- package/lib/extension/dist/layer/nodejs/node_modules/interceptor.js +10463 -23565
- package/lib/extension/dist/layer/nodejs/node_modules/interceptor.js.map +4 -4
- package/lib/listener/ServerlessSpyListenerParams.d.ts +1 -0
- package/lib/listener/ServerlessSpyListenerParams.js +1 -1
- package/lib/listener/ServerlessSpyListenerParams.mjs +1 -1
- package/lib/listener/WsListener.d.ts +4 -21
- package/lib/listener/WsListener.js +11 -3
- package/lib/listener/WsListener.mjs +11 -3
- package/lib/src/ServerlessSpy.d.ts +44 -14
- package/lib/src/ServerlessSpy.js +229 -86
- package/lib/src/ServerlessSpy.mjs +228 -85
- package/lib/src/common/envVariableNames.d.ts +6 -2
- package/lib/src/common/envVariableNames.js +6 -2
- package/lib/src/common/envVariableNames.mjs +6 -2
- package/listener/ServerlessSpyListenerParams.ts +1 -0
- package/listener/WsListener.ts +18 -6
- package/package.json +1 -1
|
@@ -13,7 +13,11 @@ export declare enum envVariableNames {
|
|
|
13
13
|
SSPY_WS_ENDPOINT = "SSPY_WS_ENDPOINT",
|
|
14
14
|
SSPY_FUNCTION_NAME = "SSPY_FUNCTION_NAME",
|
|
15
15
|
/**
|
|
16
|
-
*DynamoDB table name that stores active websocket connections.
|
|
16
|
+
* DynamoDB table name that stores active websocket connections.
|
|
17
17
|
*/
|
|
18
|
-
SSPY_WS_TABLE_NAME = "SSPY_WS_TABLE_NAME"
|
|
18
|
+
SSPY_WS_TABLE_NAME = "SSPY_WS_TABLE_NAME",
|
|
19
|
+
/**
|
|
20
|
+
* Log debugging details.
|
|
21
|
+
*/
|
|
22
|
+
SSPY_DEBUG = "SSPY_DEBUG"
|
|
19
23
|
}
|
|
@@ -19,8 +19,12 @@ var envVariableNames;
|
|
|
19
19
|
envVariableNames["SSPY_WS_ENDPOINT"] = "SSPY_WS_ENDPOINT";
|
|
20
20
|
envVariableNames["SSPY_FUNCTION_NAME"] = "SSPY_FUNCTION_NAME";
|
|
21
21
|
/**
|
|
22
|
-
*DynamoDB table name that stores active websocket connections.
|
|
22
|
+
* DynamoDB table name that stores active websocket connections.
|
|
23
23
|
*/
|
|
24
24
|
envVariableNames["SSPY_WS_TABLE_NAME"] = "SSPY_WS_TABLE_NAME";
|
|
25
|
+
/**
|
|
26
|
+
* Log debugging details.
|
|
27
|
+
*/
|
|
28
|
+
envVariableNames["SSPY_DEBUG"] = "SSPY_DEBUG";
|
|
25
29
|
})(envVariableNames = exports.envVariableNames || (exports.envVariableNames = {}));
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52VmFyaWFibGVOYW1lcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tb24vZW52VmFyaWFibGVOYW1lcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEVBQTBFO0FBQzFFLG9EQUFvRDs7O0FBRXBELElBQVksZ0JBMkJYO0FBM0JELFdBQVksZ0JBQWdCO0lBQzFCOztPQUVHO0lBQ0gscUVBQWlELENBQUE7SUFFakQ7O09BRUc7SUFDSCw2REFBeUMsQ0FBQTtJQUV6Qzs7T0FFRztJQUNILHlEQUFxQyxDQUFBO0lBRXJDLDZEQUF5QyxDQUFBO0lBRXpDOztPQUVHO0lBQ0gsNkRBQXlDLENBQUE7SUFFekM7O09BRUc7SUFDSCw2Q0FBeUIsQ0FBQTtBQUMzQixDQUFDLEVBM0JXLGdCQUFnQixHQUFoQix3QkFBZ0IsS0FBaEIsd0JBQWdCLFFBMkIzQiIsInNvdXJjZXNDb250ZW50IjpbIi8vdGhpcyBmaWxlIGlzIG5vdCB1bmRlciByb290IC0+IGNvbW1vbiBmb2xkZXIgYmVjYXVzZSBqc2lpIGRvZXMgbm90IGFsbG93XG4vL2NoYW5naW5nIHRzY29uZmluZy5qc29uIHRvIHJlbW92ZSByb290RGlyIHByb3BlcnR5XG5cbmV4cG9ydCBlbnVtIGVudlZhcmlhYmxlTmFtZXMge1xuICAvKipcbiAgICogTm90ZSB0aGF0IHRoZSBmdW5jdGlvbiBpcyBzdWJzY3JpYmVkIHRvIFNRUywgc28gd2UgbmVlZCB0byBzZW5kIHNweSBldmVudHMgYXMgaXQgY29tZXMgZnJvbSBTUVMuXG4gICAqL1xuICBTU1BZX1NVQlNDUklCRURfVE9fU1FTID0gJ1NTUFlfU1VCU0NSSUJFRF9UT19TUVMnLFxuXG4gIC8qKlxuICAgKiBNYXBwaW5nIG9mIHJlc291cmNlIEFSTnMgdG8gc2VydmljZSBrZXlzXG4gICAqL1xuICBTU1BZX0lORlJBX01BUFBJTkcgPSAnU1NQWV9JTkZSQV9NQVBQSU5HJyxcblxuICAvKipcbiAgICogV2ViIHNvY2tldCBlbmRwb2ludCBmb3Igc2VuZGluZyBhbmQgcmVjZWl2aW5nIHNweSBldmVudHMuXG4gICAqL1xuICBTU1BZX1dTX0VORFBPSU5UID0gJ1NTUFlfV1NfRU5EUE9JTlQnLFxuXG4gIFNTUFlfRlVOQ1RJT05fTkFNRSA9ICdTU1BZX0ZVTkNUSU9OX05BTUUnLFxuXG4gIC8qKlxuICAgKiBEeW5hbW9EQiB0YWJsZSBuYW1lIHRoYXQgc3RvcmVzIGFjdGl2ZSB3ZWJzb2NrZXQgY29ubmVjdGlvbnMuXG4gICAqL1xuICBTU1BZX1dTX1RBQkxFX05BTUUgPSAnU1NQWV9XU19UQUJMRV9OQU1FJyxcblxuICAvKipcbiAgICogTG9nIGRlYnVnZ2luZyBkZXRhaWxzLlxuICAgKi9cbiAgU1NQWV9ERUJVRyA9ICdTU1BZX0RFQlVHJyxcbn1cbiJdfQ==
|
|
@@ -16,8 +16,12 @@ export var envVariableNames;
|
|
|
16
16
|
envVariableNames["SSPY_WS_ENDPOINT"] = "SSPY_WS_ENDPOINT";
|
|
17
17
|
envVariableNames["SSPY_FUNCTION_NAME"] = "SSPY_FUNCTION_NAME";
|
|
18
18
|
/**
|
|
19
|
-
*DynamoDB table name that stores active websocket connections.
|
|
19
|
+
* DynamoDB table name that stores active websocket connections.
|
|
20
20
|
*/
|
|
21
21
|
envVariableNames["SSPY_WS_TABLE_NAME"] = "SSPY_WS_TABLE_NAME";
|
|
22
|
+
/**
|
|
23
|
+
* Log debugging details.
|
|
24
|
+
*/
|
|
25
|
+
envVariableNames["SSPY_DEBUG"] = "SSPY_DEBUG";
|
|
22
26
|
})(envVariableNames || (envVariableNames = {}));
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52VmFyaWFibGVOYW1lcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vZW52VmFyaWFibGVOYW1lcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUsb0RBQW9EO0FBRXBELE1BQU0sQ0FBTixJQUFZLGdCQTJCWDtBQTNCRCxXQUFZLGdCQUFnQjtJQUMxQjs7T0FFRztJQUNILHFFQUFpRCxDQUFBO0lBRWpEOztPQUVHO0lBQ0gsNkRBQXlDLENBQUE7SUFFekM7O09BRUc7SUFDSCx5REFBcUMsQ0FBQTtJQUVyQyw2REFBeUMsQ0FBQTtJQUV6Qzs7T0FFRztJQUNILDZEQUF5QyxDQUFBO0lBRXpDOztPQUVHO0lBQ0gsNkNBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQTNCVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBMkIzQiIsInNvdXJjZXNDb250ZW50IjpbIi8vdGhpcyBmaWxlIGlzIG5vdCB1bmRlciByb290IC0+IGNvbW1vbiBmb2xkZXIgYmVjYXVzZSBqc2lpIGRvZXMgbm90IGFsbG93XG4vL2NoYW5naW5nIHRzY29uZmluZy5qc29uIHRvIHJlbW92ZSByb290RGlyIHByb3BlcnR5XG5cbmV4cG9ydCBlbnVtIGVudlZhcmlhYmxlTmFtZXMge1xuICAvKipcbiAgICogTm90ZSB0aGF0IHRoZSBmdW5jdGlvbiBpcyBzdWJzY3JpYmVkIHRvIFNRUywgc28gd2UgbmVlZCB0byBzZW5kIHNweSBldmVudHMgYXMgaXQgY29tZXMgZnJvbSBTUVMuXG4gICAqL1xuICBTU1BZX1NVQlNDUklCRURfVE9fU1FTID0gJ1NTUFlfU1VCU0NSSUJFRF9UT19TUVMnLFxuXG4gIC8qKlxuICAgKiBNYXBwaW5nIG9mIHJlc291cmNlIEFSTnMgdG8gc2VydmljZSBrZXlzXG4gICAqL1xuICBTU1BZX0lORlJBX01BUFBJTkcgPSAnU1NQWV9JTkZSQV9NQVBQSU5HJyxcblxuICAvKipcbiAgICogV2ViIHNvY2tldCBlbmRwb2ludCBmb3Igc2VuZGluZyBhbmQgcmVjZWl2aW5nIHNweSBldmVudHMuXG4gICAqL1xuICBTU1BZX1dTX0VORFBPSU5UID0gJ1NTUFlfV1NfRU5EUE9JTlQnLFxuXG4gIFNTUFlfRlVOQ1RJT05fTkFNRSA9ICdTU1BZX0ZVTkNUSU9OX05BTUUnLFxuXG4gIC8qKlxuICAgKiBEeW5hbW9EQiB0YWJsZSBuYW1lIHRoYXQgc3RvcmVzIGFjdGl2ZSB3ZWJzb2NrZXQgY29ubmVjdGlvbnMuXG4gICAqL1xuICBTU1BZX1dTX1RBQkxFX05BTUUgPSAnU1NQWV9XU19UQUJMRV9OQU1FJyxcblxuICAvKipcbiAgICogTG9nIGRlYnVnZ2luZyBkZXRhaWxzLlxuICAgKi9cbiAgU1NQWV9ERUJVRyA9ICdTU1BZX0RFQlVHJyxcbn1cbiJdfQ==
|
package/listener/WsListener.ts
CHANGED
|
@@ -16,8 +16,11 @@ export class WsListener<TSpyEvents> {
|
|
|
16
16
|
private ws?: WebSocket;
|
|
17
17
|
private closed = true;
|
|
18
18
|
private functionPrefix = 'waitFor';
|
|
19
|
+
private debugMode = false;
|
|
20
|
+
|
|
21
|
+
public async start(params: ServerlessSpyListenerParams) {
|
|
22
|
+
this.debugMode = !!params.debugMode;
|
|
19
23
|
|
|
20
|
-
async start(params: ServerlessSpyListenerParams) {
|
|
21
24
|
this.waitForConnection = new Promise((resolve) => {
|
|
22
25
|
this.connectionOpenResolve = resolve;
|
|
23
26
|
});
|
|
@@ -30,11 +33,14 @@ export class WsListener<TSpyEvents> {
|
|
|
30
33
|
this.ws = new WebSocket(urlSigned);
|
|
31
34
|
this.closed = false;
|
|
32
35
|
this.ws.on('open', () => {
|
|
36
|
+
this.log('Connection oppened');
|
|
33
37
|
this.connectionOpenResolve!();
|
|
34
38
|
});
|
|
35
39
|
this.ws.on('message', (data) => {
|
|
36
40
|
if (this.closed) return;
|
|
37
41
|
|
|
42
|
+
this.log('Message received', data);
|
|
43
|
+
|
|
38
44
|
const message = JSON.parse(data.toString()) as SpyMessageStorage;
|
|
39
45
|
|
|
40
46
|
message.serviceKeyForFunction = message.serviceKey.replace(/#/g, '');
|
|
@@ -49,19 +55,20 @@ export class WsListener<TSpyEvents> {
|
|
|
49
55
|
this.resolveOldTrackerWithNewMessage(message);
|
|
50
56
|
});
|
|
51
57
|
this.ws.on('close', () => {
|
|
58
|
+
this.log('Connection closed');
|
|
59
|
+
|
|
52
60
|
this.closed = true;
|
|
53
|
-
//console.log('disconnected ' + new Date().toISOString());
|
|
54
61
|
});
|
|
55
62
|
|
|
56
63
|
await this.waitForConnection;
|
|
57
64
|
}
|
|
58
65
|
|
|
59
|
-
async stop() {
|
|
66
|
+
public async stop() {
|
|
60
67
|
this.closed = true;
|
|
61
68
|
this.ws!.close();
|
|
62
69
|
}
|
|
63
70
|
|
|
64
|
-
trackerMatchMessage(tracker: Tracker, message: SpyMessageStorage) {
|
|
71
|
+
private trackerMatchMessage(tracker: Tracker, message: SpyMessageStorage) {
|
|
65
72
|
if (tracker.finished) return;
|
|
66
73
|
|
|
67
74
|
if (
|
|
@@ -179,7 +186,7 @@ export class WsListener<TSpyEvents> {
|
|
|
179
186
|
}
|
|
180
187
|
}
|
|
181
188
|
|
|
182
|
-
|
|
189
|
+
private createWaitForXXXFunc(
|
|
183
190
|
serviceKeyForFunction: string,
|
|
184
191
|
functionContextAwsRequestId?: string
|
|
185
192
|
) {
|
|
@@ -195,7 +202,6 @@ export class WsListener<TSpyEvents> {
|
|
|
195
202
|
};
|
|
196
203
|
});
|
|
197
204
|
|
|
198
|
-
//waitForXXXFunc
|
|
199
205
|
return (paramsW?: WaitForParams<SpyEvent>) => {
|
|
200
206
|
tracker.condition = paramsW?.condition;
|
|
201
207
|
|
|
@@ -253,6 +259,12 @@ export class WsListener<TSpyEvents> {
|
|
|
253
259
|
|
|
254
260
|
return proxy as ServerlessSpyListener<TSpyEvents>;
|
|
255
261
|
}
|
|
262
|
+
|
|
263
|
+
private log(message: string, ...optionalParams: any[]) {
|
|
264
|
+
if (this.debugMode) {
|
|
265
|
+
console.debug('SSPY', message, ...optionalParams);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
256
268
|
}
|
|
257
269
|
|
|
258
270
|
type Tracker = {
|