serverless-spy 0.0.10 → 0.0.13
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 +7 -4
- package/lib/{cjs/cli → cli}/cli.d.ts +0 -0
- package/lib/cli/cli.js +87 -0
- package/lib/cli/cli.mjs +85 -0
- package/lib/{cjs/cli → cli}/ws.d.ts +0 -0
- package/lib/cli/ws.js +68 -0
- package/lib/cli/ws.mjs +66 -0
- package/lib/{cjs/common → common}/getWebSocketUrl.d.ts +0 -0
- package/lib/common/getWebSocketUrl.js +57 -0
- package/lib/common/getWebSocketUrl.mjs +53 -0
- package/lib/common/spyEvents/DynamoDBSpyEvent.d.ts +10 -0
- package/lib/common/spyEvents/DynamoDBSpyEvent.js +3 -0
- package/lib/common/spyEvents/DynamoDBSpyEvent.mjs +2 -0
- package/lib/common/spyEvents/EventBridgeRuleSpyEvent.d.ts +9 -0
- package/lib/common/spyEvents/EventBridgeRuleSpyEvent.js +3 -0
- package/lib/common/spyEvents/EventBridgeRuleSpyEvent.mjs +2 -0
- package/lib/common/spyEvents/EventBridgeSpyEvent.d.ts +9 -0
- package/lib/common/spyEvents/EventBridgeSpyEvent.js +3 -0
- package/lib/common/spyEvents/EventBridgeSpyEvent.mjs +2 -0
- package/lib/common/spyEvents/FunctionConsoleSpyEvent.d.ts +10 -0
- package/lib/common/spyEvents/FunctionConsoleSpyEvent.js +3 -0
- package/lib/common/spyEvents/FunctionConsoleSpyEvent.mjs +2 -0
- package/lib/common/spyEvents/FunctionContext.d.ts +7 -0
- package/lib/common/spyEvents/FunctionContext.js +3 -0
- package/lib/common/spyEvents/FunctionContext.mjs +2 -0
- package/lib/common/spyEvents/FunctionErrorSpyEvent.d.ts +8 -0
- package/lib/common/spyEvents/FunctionErrorSpyEvent.js +3 -0
- package/lib/common/spyEvents/FunctionErrorSpyEvent.mjs +2 -0
- package/lib/common/spyEvents/FunctionRequestSpyEvent.d.ts +7 -0
- package/lib/common/spyEvents/FunctionRequestSpyEvent.js +3 -0
- package/lib/common/spyEvents/FunctionRequestSpyEvent.mjs +2 -0
- package/lib/common/spyEvents/FunctionResponseSpyEvent.d.ts +8 -0
- package/lib/common/spyEvents/FunctionResponseSpyEvent.js +3 -0
- package/lib/common/spyEvents/FunctionResponseSpyEvent.mjs +2 -0
- package/lib/common/spyEvents/S3SpyEvent.d.ts +8 -0
- package/lib/common/spyEvents/S3SpyEvent.js +3 -0
- package/lib/common/spyEvents/S3SpyEvent.mjs +2 -0
- package/lib/common/spyEvents/SnsSubscriptionSpyEvent.d.ts +11 -0
- package/lib/common/spyEvents/SnsSubscriptionSpyEvent.js +3 -0
- package/lib/common/spyEvents/SnsSubscriptionSpyEvent.mjs +2 -0
- package/lib/common/spyEvents/SnsTopicSpyEvent.d.ts +11 -0
- package/lib/common/spyEvents/SnsTopicSpyEvent.js +3 -0
- package/lib/common/spyEvents/SnsTopicSpyEvent.mjs +2 -0
- package/lib/common/spyEvents/SpyEvent.d.ts +3 -0
- package/lib/common/spyEvents/SpyEvent.js +3 -0
- package/lib/common/spyEvents/SpyEvent.mjs +2 -0
- package/lib/common/spyEvents/SpyMessage.d.ts +6 -0
- package/lib/common/spyEvents/SpyMessage.js +3 -0
- package/lib/common/spyEvents/SpyMessage.mjs +2 -0
- package/lib/common/spyEvents/SqsSpyEvent.d.ts +7 -0
- package/lib/common/spyEvents/SqsSpyEvent.js +3 -0
- package/lib/common/spyEvents/SqsSpyEvent.mjs +2 -0
- package/lib/{cjs/index.d.ts → index.d.ts} +0 -0
- package/lib/{cjs/index.js → index.js} +1 -1
- package/lib/index.mjs +3 -0
- package/lib/{cjs/listener → listener}/PrettifyForDisplay.d.ts +0 -0
- package/lib/listener/PrettifyForDisplay.js +3 -0
- package/lib/listener/PrettifyForDisplay.mjs +2 -0
- package/lib/{cjs/listener → listener}/RecursivePartial.d.ts +0 -0
- package/lib/listener/RecursivePartial.js +3 -0
- package/lib/listener/RecursivePartial.mjs +2 -0
- package/lib/{mjs/listener → listener}/SpyHandlers.ts.d.ts +11 -11
- package/lib/listener/SpyHandlers.ts.js +3 -0
- package/lib/listener/SpyHandlers.ts.mjs +2 -0
- package/lib/{mjs/listener → listener}/SpyListener.d.ts +10 -10
- package/lib/listener/SpyListener.js +3 -0
- package/lib/listener/SpyListener.mjs +2 -0
- package/lib/{mjs/listener → listener}/createServerlessSpyListener.d.ts +1 -1
- package/lib/listener/createServerlessSpyListener.js +167 -0
- package/lib/listener/createServerlessSpyListener.mjs +163 -0
- package/lib/{cjs/listener → listener}/index.d.ts +0 -0
- package/lib/{cjs/listener → listener}/index.js +1 -1
- package/lib/listener/index.mjs +3 -0
- package/lib/{cjs/listener → listener}/matchers.d.ts +0 -0
- package/lib/listener/matchers.js +55 -0
- package/lib/listener/matchers.mjs +55 -0
- package/lib/{cjs/listener → listener}/setup.d.ts +0 -0
- package/lib/listener/setup.js +21 -0
- package/lib/listener/setup.mjs +21 -0
- package/lib/{cjs/src → src}/ServerlessSpy.d.ts +0 -0
- package/lib/{cjs/src → src}/ServerlessSpy.js +1 -1
- package/lib/src/ServerlessSpy.mjs +293 -0
- package/lib/{cjs/src → src}/index.d.ts +0 -0
- package/lib/{cjs/src → src}/index.js +0 -0
- package/lib/src/index.mjs +2 -0
- package/listener/SpyHandlers.ts.ts +11 -11
- package/listener/SpyListener.ts +10 -10
- package/listener/createServerlessSpyListener.ts +4 -5
- package/{cli/node_modules → node_modules}/ws/LICENSE +0 -0
- package/{cli/node_modules → node_modules}/ws/README.md +0 -0
- package/{cli/node_modules → node_modules}/ws/browser.js +0 -0
- package/{cli/node_modules → node_modules}/ws/index.js +0 -0
- package/{cli/node_modules → node_modules}/ws/lib/buffer-util.js +0 -0
- package/{cli/node_modules → node_modules}/ws/lib/constants.js +0 -0
- package/{cli/node_modules → node_modules}/ws/lib/event-target.js +0 -0
- package/{cli/node_modules → node_modules}/ws/lib/extension.js +0 -0
- package/{cli/node_modules → node_modules}/ws/lib/limiter.js +0 -0
- package/{cli/node_modules → node_modules}/ws/lib/permessage-deflate.js +0 -0
- package/{cli/node_modules → node_modules}/ws/lib/receiver.js +0 -0
- package/{cli/node_modules → node_modules}/ws/lib/sender.js +0 -0
- package/{cli/node_modules → node_modules}/ws/lib/stream.js +0 -0
- package/{cli/node_modules → node_modules}/ws/lib/subprotocol.js +0 -0
- package/{cli/node_modules → node_modules}/ws/lib/validation.js +0 -0
- package/{cli/node_modules → node_modules}/ws/lib/websocket-server.js +0 -0
- package/{cli/node_modules → node_modules}/ws/lib/websocket.js +0 -0
- package/{cli/node_modules → node_modules}/ws/package.json +0 -0
- package/{cli/node_modules → node_modules}/ws/wrapper.mjs +0 -0
- package/package.json +17 -14
- package/tsconfig.npm.json +1 -0
- package/cli/package-lock.json +0 -2356
- package/cli/package.json +0 -14
- package/common/package.json +0 -22
- package/lib/cjs/cli/cli.js +0 -87
- package/lib/cjs/cli/ws.js +0 -68
- package/lib/cjs/common/getWebSocketUrl.js +0 -57
- package/lib/cjs/listener/PrettifyForDisplay.js +0 -3
- package/lib/cjs/listener/RecursivePartial.js +0 -3
- package/lib/cjs/listener/SpyHandlers.ts.d.ts +0 -109
- package/lib/cjs/listener/SpyHandlers.ts.js +0 -3
- package/lib/cjs/listener/SpyListener.d.ts +0 -40
- package/lib/cjs/listener/SpyListener.js +0 -3
- package/lib/cjs/listener/createServerlessSpyListener.d.ts +0 -13
- package/lib/cjs/listener/createServerlessSpyListener.js +0 -167
- package/lib/cjs/listener/matchers.js +0 -55
- package/lib/cjs/listener/setup.js +0 -21
- package/lib/mjs/cli/cli.d.ts +0 -1
- package/lib/mjs/cli/cli.js +0 -85
- package/lib/mjs/cli/ws.d.ts +0 -1
- package/lib/mjs/cli/ws.js +0 -66
- package/lib/mjs/common/getWebSocketUrl.d.ts +0 -2
- package/lib/mjs/common/getWebSocketUrl.js +0 -53
- package/lib/mjs/index.d.ts +0 -2
- package/lib/mjs/index.js +0 -3
- package/lib/mjs/listener/PrettifyForDisplay.d.ts +0 -3
- package/lib/mjs/listener/PrettifyForDisplay.js +0 -2
- package/lib/mjs/listener/RecursivePartial.d.ts +0 -4
- package/lib/mjs/listener/RecursivePartial.js +0 -2
- package/lib/mjs/listener/SpyHandlers.ts.js +0 -2
- package/lib/mjs/listener/SpyListener.js +0 -2
- package/lib/mjs/listener/createServerlessSpyListener.js +0 -163
- package/lib/mjs/listener/index.d.ts +0 -2
- package/lib/mjs/listener/index.js +0 -3
- package/lib/mjs/listener/matchers.d.ts +0 -0
- package/lib/mjs/listener/matchers.js +0 -55
- package/lib/mjs/listener/setup.d.ts +0 -0
- package/lib/mjs/listener/setup.js +0 -21
- package/lib/mjs/src/ServerlessSpy.d.ts +0 -27
- package/lib/mjs/src/ServerlessSpy.js +0 -293
- package/lib/mjs/src/index.d.ts +0 -1
- package/lib/mjs/src/index.js +0 -2
- package/listener/node_modules/ws/LICENSE +0 -19
- package/listener/node_modules/ws/README.md +0 -495
- package/listener/node_modules/ws/browser.js +0 -8
- package/listener/node_modules/ws/index.js +0 -13
- package/listener/node_modules/ws/lib/buffer-util.js +0 -127
- package/listener/node_modules/ws/lib/constants.js +0 -12
- package/listener/node_modules/ws/lib/event-target.js +0 -266
- package/listener/node_modules/ws/lib/extension.js +0 -203
- package/listener/node_modules/ws/lib/limiter.js +0 -55
- package/listener/node_modules/ws/lib/permessage-deflate.js +0 -511
- package/listener/node_modules/ws/lib/receiver.js +0 -618
- package/listener/node_modules/ws/lib/sender.js +0 -478
- package/listener/node_modules/ws/lib/stream.js +0 -159
- package/listener/node_modules/ws/lib/subprotocol.js +0 -62
- package/listener/node_modules/ws/lib/validation.js +0 -125
- package/listener/node_modules/ws/lib/websocket-server.js +0 -535
- package/listener/node_modules/ws/lib/websocket.js +0 -1305
- package/listener/node_modules/ws/package.json +0 -61
- package/listener/node_modules/ws/wrapper.mjs +0 -8
- package/listener/package.json +0 -19
- package/listener/tsconfig.dev.json +0 -16
- package/listener/tsconfig.json +0 -16
package/.jsii
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
]
|
|
8
8
|
},
|
|
9
9
|
"bin": {
|
|
10
|
-
"spy": "lib/
|
|
10
|
+
"spy": "lib/cli/cli.js"
|
|
11
11
|
},
|
|
12
12
|
"bundled": {
|
|
13
13
|
"@aws-sdk/client-apigatewaymanagementapi": "^3.154.0",
|
|
@@ -17,12 +17,15 @@
|
|
|
17
17
|
"@aws-sdk/client-s3": "^3.157.0",
|
|
18
18
|
"@aws-sdk/client-sns": "^3.154.0",
|
|
19
19
|
"@aws-sdk/client-sqs": "^3.154.0",
|
|
20
|
+
"@aws-sdk/client-sts": "^3.142.0",
|
|
20
21
|
"@aws-sdk/credential-providers": "^3.157.0",
|
|
21
22
|
"@aws-sdk/lib-dynamodb": "^3.154.0",
|
|
23
|
+
"@aws-sdk/types": "^3.127.0",
|
|
22
24
|
"@aws-sdk/util-dynamodb": "^3.154.0",
|
|
23
25
|
"@serverless-stack/node": "^1.9.1",
|
|
24
26
|
"aws-lambda": "^1.0.7",
|
|
25
|
-
"aws4": "^1.11.0"
|
|
27
|
+
"aws4": "^1.11.0",
|
|
28
|
+
"ws": "^8.8.1"
|
|
26
29
|
},
|
|
27
30
|
"dependencies": {
|
|
28
31
|
"@aws-cdk/aws-apigatewayv2-alpha": "2.37.1-alpha.0",
|
|
@@ -3212,6 +3215,6 @@
|
|
|
3212
3215
|
"symbolId": "src/ServerlessSpy:ServerlessSpy"
|
|
3213
3216
|
}
|
|
3214
3217
|
},
|
|
3215
|
-
"version": "0.0.
|
|
3216
|
-
"fingerprint": "
|
|
3218
|
+
"version": "0.0.13",
|
|
3219
|
+
"fingerprint": "1eB1y8JHvZMve7Rgs7pzKJlZlgPhcVqdJCR+dddiUK4="
|
|
3217
3220
|
}
|
|
File without changes
|
package/lib/cli/cli.js
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const fs = require("fs");
|
|
4
|
+
const http = require("http");
|
|
5
|
+
const path = require("path");
|
|
6
|
+
const getWebSocketUrl_1 = require("../common/getWebSocketUrl");
|
|
7
|
+
async function run() {
|
|
8
|
+
const cdkExportFileName = '../.spy/cdkExports.json';
|
|
9
|
+
let serverlessSpyWsUrl;
|
|
10
|
+
if (fs.existsSync(cdkExportFileName)) {
|
|
11
|
+
const rawdata = fs.readFileSync(cdkExportFileName);
|
|
12
|
+
const config = JSON.parse(rawdata.toString());
|
|
13
|
+
if (config && config[Object.keys(config)[0]]) {
|
|
14
|
+
// get first ServerlessSpyWsUrl
|
|
15
|
+
// {
|
|
16
|
+
// "my-stack": {
|
|
17
|
+
// "ServerlessSpyWsUrl": "xxx"
|
|
18
|
+
// }
|
|
19
|
+
// }
|
|
20
|
+
serverlessSpyWsUrl = config[Object.keys(config)[0]].ServerlessSpyWsUrl;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
serverlessSpyWsUrl =
|
|
24
|
+
'wss://preh1xo1xh.execute-api.eu-west-1.amazonaws.com/prod';
|
|
25
|
+
if (!serverlessSpyWsUrl) {
|
|
26
|
+
throw new Error('Missing WS url');
|
|
27
|
+
}
|
|
28
|
+
console.log('serverlessSpyWsUrl', serverlessSpyWsUrl);
|
|
29
|
+
const wsUrl = await (0, getWebSocketUrl_1.getWebSocketUrl)(serverlessSpyWsUrl);
|
|
30
|
+
// source https://developer.mozilla.org/en-US/docs/Learn/Server-side/Node_server_without_framework
|
|
31
|
+
http
|
|
32
|
+
.createServer((request, response) => {
|
|
33
|
+
console.log('request ', request.url);
|
|
34
|
+
let filePath = `.${request.url}`;
|
|
35
|
+
if (filePath === './') {
|
|
36
|
+
filePath = './index.html';
|
|
37
|
+
}
|
|
38
|
+
const extname = String(path.extname(filePath)).toLowerCase();
|
|
39
|
+
const mimeTypes = {
|
|
40
|
+
'.html': 'text/html',
|
|
41
|
+
'.js': 'text/javascript',
|
|
42
|
+
'.css': 'text/css',
|
|
43
|
+
'.json': 'application/json',
|
|
44
|
+
'.png': 'image/png',
|
|
45
|
+
'.jpg': 'image/jpg',
|
|
46
|
+
'.gif': 'image/gif',
|
|
47
|
+
'.svg': 'image/svg+xml',
|
|
48
|
+
'.wav': 'audio/wav',
|
|
49
|
+
'.mp4': 'video/mp4',
|
|
50
|
+
'.woff': 'application/font-woff',
|
|
51
|
+
'.ttf': 'application/font-ttf',
|
|
52
|
+
'.eot': 'application/vnd.ms-fontobject',
|
|
53
|
+
'.otf': 'application/font-otf',
|
|
54
|
+
'.wasm': 'application/wasm',
|
|
55
|
+
};
|
|
56
|
+
const contentType = mimeTypes[extname] || 'application/octet-stream';
|
|
57
|
+
fs.readFile(filePath, (error, content) => {
|
|
58
|
+
if (error) {
|
|
59
|
+
if (error.code === 'ENOENT') {
|
|
60
|
+
fs.readFile('./404.html', (_err, cont) => {
|
|
61
|
+
response.writeHead(404, { 'Content-Type': 'text/html' });
|
|
62
|
+
response.end(cont, 'utf-8');
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
response.writeHead(500);
|
|
67
|
+
response.end(`Sorry, check with the site admin for error: ${error.code} ..\n`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
response.writeHead(200, { 'Content-Type': contentType });
|
|
72
|
+
if (request.url === '/serverlessSpy.js') {
|
|
73
|
+
const contentNew = content
|
|
74
|
+
.toString()
|
|
75
|
+
.replace('SERVERLESS_SPY_WS_URL', wsUrl);
|
|
76
|
+
response.end(contentNew, 'utf-8');
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
response.end(content, 'utf-8');
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
})
|
|
84
|
+
.listen(8125);
|
|
85
|
+
}
|
|
86
|
+
run().catch(console.error);
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vY2xpL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsNkJBQTZCO0FBQzdCLCtEQUE0RDtBQUU1RCxLQUFLLFVBQVUsR0FBRztJQUNoQixNQUFNLGlCQUFpQixHQUFHLHlCQUF5QixDQUFDO0lBRXBELElBQUksa0JBQXNDLENBQUM7SUFDM0MsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEVBQUU7UUFDcEMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFOUMsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM1QywrQkFBK0I7WUFDL0IsSUFBSTtZQUNKLGtCQUFrQjtZQUNsQixrQ0FBa0M7WUFDbEMsTUFBTTtZQUNOLElBQUk7WUFFSixrQkFBa0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDO1NBQ3hFO0tBQ0Y7SUFFRCxrQkFBa0I7UUFDaEIsMkRBQTJELENBQUM7SUFFOUQsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1FBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztLQUNuQztJQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUV0RCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUEsaUNBQWUsRUFBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRXhELGtHQUFrRztJQUNsRyxJQUFJO1NBQ0QsWUFBWSxDQUFDLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFO1FBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVyQyxJQUFJLFFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNqQyxJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUU7WUFDckIsUUFBUSxHQUFHLGNBQWMsQ0FBQztTQUMzQjtRQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDN0QsTUFBTSxTQUFTLEdBQVE7WUFDckIsT0FBTyxFQUFFLFdBQVc7WUFDcEIsS0FBSyxFQUFFLGlCQUFpQjtZQUN4QixNQUFNLEVBQUUsVUFBVTtZQUNsQixPQUFPLEVBQUUsa0JBQWtCO1lBQzNCLE1BQU0sRUFBRSxXQUFXO1lBQ25CLE1BQU0sRUFBRSxXQUFXO1lBQ25CLE1BQU0sRUFBRSxXQUFXO1lBQ25CLE1BQU0sRUFBRSxlQUFlO1lBQ3ZCLE1BQU0sRUFBRSxXQUFXO1lBQ25CLE1BQU0sRUFBRSxXQUFXO1lBQ25CLE9BQU8sRUFBRSx1QkFBdUI7WUFDaEMsTUFBTSxFQUFFLHNCQUFzQjtZQUM5QixNQUFNLEVBQUUsK0JBQStCO1lBQ3ZDLE1BQU0sRUFBRSxzQkFBc0I7WUFDOUIsT0FBTyxFQUFFLGtCQUFrQjtTQUM1QixDQUFDO1FBRUYsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLDBCQUEwQixDQUFDO1FBRXJFLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ3ZDLElBQUksS0FBSyxFQUFFO2dCQUNULElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7b0JBQzNCLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFO3dCQUN2QyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO3dCQUN6RCxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDOUIsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7cUJBQU07b0JBQ0wsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDeEIsUUFBUSxDQUFDLEdBQUcsQ0FDViwrQ0FBK0MsS0FBSyxDQUFDLElBQUksT0FBTyxDQUNqRSxDQUFDO2lCQUNIO2FBQ0Y7aUJBQU07Z0JBQ0wsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztnQkFDekQsSUFBSSxPQUFPLENBQUMsR0FBRyxLQUFLLG1CQUFtQixFQUFFO29CQUN2QyxNQUFNLFVBQVUsR0FBRyxPQUFPO3lCQUN2QixRQUFRLEVBQUU7eUJBQ1YsT0FBTyxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUMzQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztpQkFDbkM7cUJBQU07b0JBQ0wsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7aUJBQ2hDO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztTQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsQixDQUFDO0FBRUQsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgZ2V0V2ViU29ja2V0VXJsIH0gZnJvbSAnLi4vY29tbW9uL2dldFdlYlNvY2tldFVybCc7XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1bigpIHtcbiAgY29uc3QgY2RrRXhwb3J0RmlsZU5hbWUgPSAnLi4vLnNweS9jZGtFeHBvcnRzLmpzb24nO1xuXG4gIGxldCBzZXJ2ZXJsZXNzU3B5V3NVcmw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgaWYgKGZzLmV4aXN0c1N5bmMoY2RrRXhwb3J0RmlsZU5hbWUpKSB7XG4gICAgY29uc3QgcmF3ZGF0YSA9IGZzLnJlYWRGaWxlU3luYyhjZGtFeHBvcnRGaWxlTmFtZSk7XG4gICAgY29uc3QgY29uZmlnID0gSlNPTi5wYXJzZShyYXdkYXRhLnRvU3RyaW5nKCkpO1xuXG4gICAgaWYgKGNvbmZpZyAmJiBjb25maWdbT2JqZWN0LmtleXMoY29uZmlnKVswXV0pIHtcbiAgICAgIC8vIGdldCBmaXJzdCBTZXJ2ZXJsZXNzU3B5V3NVcmxcbiAgICAgIC8vIHtcbiAgICAgIC8vICAgXCJteS1zdGFja1wiOiB7XG4gICAgICAvLyAgICAgXCJTZXJ2ZXJsZXNzU3B5V3NVcmxcIjogXCJ4eHhcIlxuICAgICAgLy8gICB9XG4gICAgICAvLyB9XG5cbiAgICAgIHNlcnZlcmxlc3NTcHlXc1VybCA9IGNvbmZpZ1tPYmplY3Qua2V5cyhjb25maWcpWzBdXS5TZXJ2ZXJsZXNzU3B5V3NVcmw7XG4gICAgfVxuICB9XG5cbiAgc2VydmVybGVzc1NweVdzVXJsID1cbiAgICAnd3NzOi8vcHJlaDF4bzF4aC5leGVjdXRlLWFwaS5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbS9wcm9kJztcblxuICBpZiAoIXNlcnZlcmxlc3NTcHlXc1VybCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBXUyB1cmwnKTtcbiAgfVxuXG4gIGNvbnNvbGUubG9nKCdzZXJ2ZXJsZXNzU3B5V3NVcmwnLCBzZXJ2ZXJsZXNzU3B5V3NVcmwpO1xuXG4gIGNvbnN0IHdzVXJsID0gYXdhaXQgZ2V0V2ViU29ja2V0VXJsKHNlcnZlcmxlc3NTcHlXc1VybCk7XG5cbiAgLy8gc291cmNlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTGVhcm4vU2VydmVyLXNpZGUvTm9kZV9zZXJ2ZXJfd2l0aG91dF9mcmFtZXdvcmtcbiAgaHR0cFxuICAgIC5jcmVhdGVTZXJ2ZXIoKHJlcXVlc3QsIHJlc3BvbnNlKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZygncmVxdWVzdCAnLCByZXF1ZXN0LnVybCk7XG5cbiAgICAgIGxldCBmaWxlUGF0aCA9IGAuJHtyZXF1ZXN0LnVybH1gO1xuICAgICAgaWYgKGZpbGVQYXRoID09PSAnLi8nKSB7XG4gICAgICAgIGZpbGVQYXRoID0gJy4vaW5kZXguaHRtbCc7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGV4dG5hbWUgPSBTdHJpbmcocGF0aC5leHRuYW1lKGZpbGVQYXRoKSkudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNvbnN0IG1pbWVUeXBlczogYW55ID0ge1xuICAgICAgICAnLmh0bWwnOiAndGV4dC9odG1sJyxcbiAgICAgICAgJy5qcyc6ICd0ZXh0L2phdmFzY3JpcHQnLFxuICAgICAgICAnLmNzcyc6ICd0ZXh0L2NzcycsXG4gICAgICAgICcuanNvbic6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgJy5wbmcnOiAnaW1hZ2UvcG5nJyxcbiAgICAgICAgJy5qcGcnOiAnaW1hZ2UvanBnJyxcbiAgICAgICAgJy5naWYnOiAnaW1hZ2UvZ2lmJyxcbiAgICAgICAgJy5zdmcnOiAnaW1hZ2Uvc3ZnK3htbCcsXG4gICAgICAgICcud2F2JzogJ2F1ZGlvL3dhdicsXG4gICAgICAgICcubXA0JzogJ3ZpZGVvL21wNCcsXG4gICAgICAgICcud29mZic6ICdhcHBsaWNhdGlvbi9mb250LXdvZmYnLFxuICAgICAgICAnLnR0Zic6ICdhcHBsaWNhdGlvbi9mb250LXR0ZicsXG4gICAgICAgICcuZW90JzogJ2FwcGxpY2F0aW9uL3ZuZC5tcy1mb250b2JqZWN0JyxcbiAgICAgICAgJy5vdGYnOiAnYXBwbGljYXRpb24vZm9udC1vdGYnLFxuICAgICAgICAnLndhc20nOiAnYXBwbGljYXRpb24vd2FzbScsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBjb250ZW50VHlwZSA9IG1pbWVUeXBlc1tleHRuYW1lXSB8fCAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcblxuICAgICAgZnMucmVhZEZpbGUoZmlsZVBhdGgsIChlcnJvciwgY29udGVudCkgPT4ge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICBpZiAoZXJyb3IuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgICAgICAgIGZzLnJlYWRGaWxlKCcuLzQwNC5odG1sJywgKF9lcnIsIGNvbnQpID0+IHtcbiAgICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDQwNCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvaHRtbCcgfSk7XG4gICAgICAgICAgICAgIHJlc3BvbnNlLmVuZChjb250LCAndXRmLTgnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoNTAwKTtcbiAgICAgICAgICAgIHJlc3BvbnNlLmVuZChcbiAgICAgICAgICAgICAgYFNvcnJ5LCBjaGVjayB3aXRoIHRoZSBzaXRlIGFkbWluIGZvciBlcnJvcjogJHtlcnJvci5jb2RlfSAuLlxcbmBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3BvbnNlLndyaXRlSGVhZCgyMDAsIHsgJ0NvbnRlbnQtVHlwZSc6IGNvbnRlbnRUeXBlIH0pO1xuICAgICAgICAgIGlmIChyZXF1ZXN0LnVybCA9PT0gJy9zZXJ2ZXJsZXNzU3B5LmpzJykge1xuICAgICAgICAgICAgY29uc3QgY29udGVudE5ldyA9IGNvbnRlbnRcbiAgICAgICAgICAgICAgLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgLnJlcGxhY2UoJ1NFUlZFUkxFU1NfU1BZX1dTX1VSTCcsIHdzVXJsKTtcbiAgICAgICAgICAgIHJlc3BvbnNlLmVuZChjb250ZW50TmV3LCAndXRmLTgnKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzcG9uc2UuZW5kKGNvbnRlbnQsICd1dGYtOCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSlcbiAgICAubGlzdGVuKDgxMjUpO1xufVxuXG5ydW4oKS5jYXRjaChjb25zb2xlLmVycm9yKTtcbiJdfQ==
|
package/lib/cli/cli.mjs
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import * as http from 'http';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import { getWebSocketUrl } from '../common/getWebSocketUrl';
|
|
5
|
+
async function run() {
|
|
6
|
+
const cdkExportFileName = '../.spy/cdkExports.json';
|
|
7
|
+
let serverlessSpyWsUrl;
|
|
8
|
+
if (fs.existsSync(cdkExportFileName)) {
|
|
9
|
+
const rawdata = fs.readFileSync(cdkExportFileName);
|
|
10
|
+
const config = JSON.parse(rawdata.toString());
|
|
11
|
+
if (config && config[Object.keys(config)[0]]) {
|
|
12
|
+
// get first ServerlessSpyWsUrl
|
|
13
|
+
// {
|
|
14
|
+
// "my-stack": {
|
|
15
|
+
// "ServerlessSpyWsUrl": "xxx"
|
|
16
|
+
// }
|
|
17
|
+
// }
|
|
18
|
+
serverlessSpyWsUrl = config[Object.keys(config)[0]].ServerlessSpyWsUrl;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
serverlessSpyWsUrl =
|
|
22
|
+
'wss://preh1xo1xh.execute-api.eu-west-1.amazonaws.com/prod';
|
|
23
|
+
if (!serverlessSpyWsUrl) {
|
|
24
|
+
throw new Error('Missing WS url');
|
|
25
|
+
}
|
|
26
|
+
console.log('serverlessSpyWsUrl', serverlessSpyWsUrl);
|
|
27
|
+
const wsUrl = await getWebSocketUrl(serverlessSpyWsUrl);
|
|
28
|
+
// source https://developer.mozilla.org/en-US/docs/Learn/Server-side/Node_server_without_framework
|
|
29
|
+
http
|
|
30
|
+
.createServer((request, response) => {
|
|
31
|
+
console.log('request ', request.url);
|
|
32
|
+
let filePath = `.${request.url}`;
|
|
33
|
+
if (filePath === './') {
|
|
34
|
+
filePath = './index.html';
|
|
35
|
+
}
|
|
36
|
+
const extname = String(path.extname(filePath)).toLowerCase();
|
|
37
|
+
const mimeTypes = {
|
|
38
|
+
'.html': 'text/html',
|
|
39
|
+
'.js': 'text/javascript',
|
|
40
|
+
'.css': 'text/css',
|
|
41
|
+
'.json': 'application/json',
|
|
42
|
+
'.png': 'image/png',
|
|
43
|
+
'.jpg': 'image/jpg',
|
|
44
|
+
'.gif': 'image/gif',
|
|
45
|
+
'.svg': 'image/svg+xml',
|
|
46
|
+
'.wav': 'audio/wav',
|
|
47
|
+
'.mp4': 'video/mp4',
|
|
48
|
+
'.woff': 'application/font-woff',
|
|
49
|
+
'.ttf': 'application/font-ttf',
|
|
50
|
+
'.eot': 'application/vnd.ms-fontobject',
|
|
51
|
+
'.otf': 'application/font-otf',
|
|
52
|
+
'.wasm': 'application/wasm',
|
|
53
|
+
};
|
|
54
|
+
const contentType = mimeTypes[extname] || 'application/octet-stream';
|
|
55
|
+
fs.readFile(filePath, (error, content) => {
|
|
56
|
+
if (error) {
|
|
57
|
+
if (error.code === 'ENOENT') {
|
|
58
|
+
fs.readFile('./404.html', (_err, cont) => {
|
|
59
|
+
response.writeHead(404, { 'Content-Type': 'text/html' });
|
|
60
|
+
response.end(cont, 'utf-8');
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
response.writeHead(500);
|
|
65
|
+
response.end(`Sorry, check with the site admin for error: ${error.code} ..\n`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
response.writeHead(200, { 'Content-Type': contentType });
|
|
70
|
+
if (request.url === '/serverlessSpy.js') {
|
|
71
|
+
const contentNew = content
|
|
72
|
+
.toString()
|
|
73
|
+
.replace('SERVERLESS_SPY_WS_URL', wsUrl);
|
|
74
|
+
response.end(contentNew, 'utf-8');
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
response.end(content, 'utf-8');
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
})
|
|
82
|
+
.listen(8125);
|
|
83
|
+
}
|
|
84
|
+
run().catch(console.error);
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vY2xpL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFNUQsS0FBSyxVQUFVLEdBQUc7SUFDaEIsTUFBTSxpQkFBaUIsR0FBRyx5QkFBeUIsQ0FBQztJQUVwRCxJQUFJLGtCQUFzQyxDQUFDO0lBQzNDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1FBQ3BDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNuRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRTlDLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDNUMsK0JBQStCO1lBQy9CLElBQUk7WUFDSixrQkFBa0I7WUFDbEIsa0NBQWtDO1lBQ2xDLE1BQU07WUFDTixJQUFJO1lBRUosa0JBQWtCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztTQUN4RTtLQUNGO0lBRUQsa0JBQWtCO1FBQ2hCLDJEQUEyRCxDQUFDO0lBRTlELElBQUksQ0FBQyxrQkFBa0IsRUFBRTtRQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7S0FDbkM7SUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFFdEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxlQUFlLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUV4RCxrR0FBa0c7SUFDbEcsSUFBSTtTQUNELFlBQVksQ0FBQyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRTtRQUNsQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFckMsSUFBSSxRQUFRLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDakMsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO1lBQ3JCLFFBQVEsR0FBRyxjQUFjLENBQUM7U0FDM0I7UUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzdELE1BQU0sU0FBUyxHQUFRO1lBQ3JCLE9BQU8sRUFBRSxXQUFXO1lBQ3BCLEtBQUssRUFBRSxpQkFBaUI7WUFDeEIsTUFBTSxFQUFFLFVBQVU7WUFDbEIsT0FBTyxFQUFFLGtCQUFrQjtZQUMzQixNQUFNLEVBQUUsV0FBVztZQUNuQixNQUFNLEVBQUUsV0FBVztZQUNuQixNQUFNLEVBQUUsV0FBVztZQUNuQixNQUFNLEVBQUUsZUFBZTtZQUN2QixNQUFNLEVBQUUsV0FBVztZQUNuQixNQUFNLEVBQUUsV0FBVztZQUNuQixPQUFPLEVBQUUsdUJBQXVCO1lBQ2hDLE1BQU0sRUFBRSxzQkFBc0I7WUFDOUIsTUFBTSxFQUFFLCtCQUErQjtZQUN2QyxNQUFNLEVBQUUsc0JBQXNCO1lBQzlCLE9BQU8sRUFBRSxrQkFBa0I7U0FDNUIsQ0FBQztRQUVGLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSwwQkFBMEIsQ0FBQztRQUVyRSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUN2QyxJQUFJLEtBQUssRUFBRTtnQkFDVCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO29CQUMzQixFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRTt3QkFDdkMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQzt3QkFDekQsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBQzlCLENBQUMsQ0FBQyxDQUFDO2lCQUNKO3FCQUFNO29CQUNMLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3hCLFFBQVEsQ0FBQyxHQUFHLENBQ1YsK0NBQStDLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FDakUsQ0FBQztpQkFDSDthQUNGO2lCQUFNO2dCQUNMLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7Z0JBQ3pELElBQUksT0FBTyxDQUFDLEdBQUcsS0FBSyxtQkFBbUIsRUFBRTtvQkFDdkMsTUFBTSxVQUFVLEdBQUcsT0FBTzt5QkFDdkIsUUFBUSxFQUFFO3lCQUNWLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDM0MsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7aUJBQ25DO3FCQUFNO29CQUNMLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2lCQUNoQzthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7U0FDRCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEIsQ0FBQztBQUVELEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBodHRwIGZyb20gJ2h0dHAnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGdldFdlYlNvY2tldFVybCB9IGZyb20gJy4uL2NvbW1vbi9nZXRXZWJTb2NrZXRVcmwnO1xuXG5hc3luYyBmdW5jdGlvbiBydW4oKSB7XG4gIGNvbnN0IGNka0V4cG9ydEZpbGVOYW1lID0gJy4uLy5zcHkvY2RrRXhwb3J0cy5qc29uJztcblxuICBsZXQgc2VydmVybGVzc1NweVdzVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlmIChmcy5leGlzdHNTeW5jKGNka0V4cG9ydEZpbGVOYW1lKSkge1xuICAgIGNvbnN0IHJhd2RhdGEgPSBmcy5yZWFkRmlsZVN5bmMoY2RrRXhwb3J0RmlsZU5hbWUpO1xuICAgIGNvbnN0IGNvbmZpZyA9IEpTT04ucGFyc2UocmF3ZGF0YS50b1N0cmluZygpKTtcblxuICAgIGlmIChjb25maWcgJiYgY29uZmlnW09iamVjdC5rZXlzKGNvbmZpZylbMF1dKSB7XG4gICAgICAvLyBnZXQgZmlyc3QgU2VydmVybGVzc1NweVdzVXJsXG4gICAgICAvLyB7XG4gICAgICAvLyAgIFwibXktc3RhY2tcIjoge1xuICAgICAgLy8gICAgIFwiU2VydmVybGVzc1NweVdzVXJsXCI6IFwieHh4XCJcbiAgICAgIC8vICAgfVxuICAgICAgLy8gfVxuXG4gICAgICBzZXJ2ZXJsZXNzU3B5V3NVcmwgPSBjb25maWdbT2JqZWN0LmtleXMoY29uZmlnKVswXV0uU2VydmVybGVzc1NweVdzVXJsO1xuICAgIH1cbiAgfVxuXG4gIHNlcnZlcmxlc3NTcHlXc1VybCA9XG4gICAgJ3dzczovL3ByZWgxeG8xeGguZXhlY3V0ZS1hcGkuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vcHJvZCc7XG5cbiAgaWYgKCFzZXJ2ZXJsZXNzU3B5V3NVcmwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgV1MgdXJsJyk7XG4gIH1cblxuICBjb25zb2xlLmxvZygnc2VydmVybGVzc1NweVdzVXJsJywgc2VydmVybGVzc1NweVdzVXJsKTtcblxuICBjb25zdCB3c1VybCA9IGF3YWl0IGdldFdlYlNvY2tldFVybChzZXJ2ZXJsZXNzU3B5V3NVcmwpO1xuXG4gIC8vIHNvdXJjZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0xlYXJuL1NlcnZlci1zaWRlL05vZGVfc2VydmVyX3dpdGhvdXRfZnJhbWV3b3JrXG4gIGh0dHBcbiAgICAuY3JlYXRlU2VydmVyKChyZXF1ZXN0LCByZXNwb25zZSkgPT4ge1xuICAgICAgY29uc29sZS5sb2coJ3JlcXVlc3QgJywgcmVxdWVzdC51cmwpO1xuXG4gICAgICBsZXQgZmlsZVBhdGggPSBgLiR7cmVxdWVzdC51cmx9YDtcbiAgICAgIGlmIChmaWxlUGF0aCA9PT0gJy4vJykge1xuICAgICAgICBmaWxlUGF0aCA9ICcuL2luZGV4Lmh0bWwnO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBleHRuYW1lID0gU3RyaW5nKHBhdGguZXh0bmFtZShmaWxlUGF0aCkpLnRvTG93ZXJDYXNlKCk7XG4gICAgICBjb25zdCBtaW1lVHlwZXM6IGFueSA9IHtcbiAgICAgICAgJy5odG1sJzogJ3RleHQvaHRtbCcsXG4gICAgICAgICcuanMnOiAndGV4dC9qYXZhc2NyaXB0JyxcbiAgICAgICAgJy5jc3MnOiAndGV4dC9jc3MnLFxuICAgICAgICAnLmpzb24nOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICcucG5nJzogJ2ltYWdlL3BuZycsXG4gICAgICAgICcuanBnJzogJ2ltYWdlL2pwZycsXG4gICAgICAgICcuZ2lmJzogJ2ltYWdlL2dpZicsXG4gICAgICAgICcuc3ZnJzogJ2ltYWdlL3N2Zyt4bWwnLFxuICAgICAgICAnLndhdic6ICdhdWRpby93YXYnLFxuICAgICAgICAnLm1wNCc6ICd2aWRlby9tcDQnLFxuICAgICAgICAnLndvZmYnOiAnYXBwbGljYXRpb24vZm9udC13b2ZmJyxcbiAgICAgICAgJy50dGYnOiAnYXBwbGljYXRpb24vZm9udC10dGYnLFxuICAgICAgICAnLmVvdCc6ICdhcHBsaWNhdGlvbi92bmQubXMtZm9udG9iamVjdCcsXG4gICAgICAgICcub3RmJzogJ2FwcGxpY2F0aW9uL2ZvbnQtb3RmJyxcbiAgICAgICAgJy53YXNtJzogJ2FwcGxpY2F0aW9uL3dhc20nLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgY29udGVudFR5cGUgPSBtaW1lVHlwZXNbZXh0bmFtZV0gfHwgJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7XG5cbiAgICAgIGZzLnJlYWRGaWxlKGZpbGVQYXRoLCAoZXJyb3IsIGNvbnRlbnQpID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgaWYgKGVycm9yLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAgICAgICBmcy5yZWFkRmlsZSgnLi80MDQuaHRtbCcsIChfZXJyLCBjb250KSA9PiB7XG4gICAgICAgICAgICAgIHJlc3BvbnNlLndyaXRlSGVhZCg0MDQsIHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L2h0bWwnIH0pO1xuICAgICAgICAgICAgICByZXNwb25zZS5lbmQoY29udCwgJ3V0Zi04Jyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDUwMCk7XG4gICAgICAgICAgICByZXNwb25zZS5lbmQoXG4gICAgICAgICAgICAgIGBTb3JyeSwgY2hlY2sgd2l0aCB0aGUgc2l0ZSBhZG1pbiBmb3IgZXJyb3I6ICR7ZXJyb3IuY29kZX0gLi5cXG5gXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoMjAwLCB7ICdDb250ZW50LVR5cGUnOiBjb250ZW50VHlwZSB9KTtcbiAgICAgICAgICBpZiAocmVxdWVzdC51cmwgPT09ICcvc2VydmVybGVzc1NweS5qcycpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnROZXcgPSBjb250ZW50XG4gICAgICAgICAgICAgIC50b1N0cmluZygpXG4gICAgICAgICAgICAgIC5yZXBsYWNlKCdTRVJWRVJMRVNTX1NQWV9XU19VUkwnLCB3c1VybCk7XG4gICAgICAgICAgICByZXNwb25zZS5lbmQoY29udGVudE5ldywgJ3V0Zi04Jyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3BvbnNlLmVuZChjb250ZW50LCAndXRmLTgnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pXG4gICAgLmxpc3Rlbig4MTI1KTtcbn1cblxucnVuKCkuY2F0Y2goY29uc29sZS5lcnJvcik7XG4iXX0=
|
|
File without changes
|
package/lib/cli/ws.js
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const fs = require("fs");
|
|
4
|
+
const readline = require("readline");
|
|
5
|
+
const ws_1 = require("ws");
|
|
6
|
+
const getWebSocketUrl_1 = require("../common/getWebSocketUrl");
|
|
7
|
+
async function run() {
|
|
8
|
+
// var credentialsProvider = awsCp.fromTemporaryCredentials();
|
|
9
|
+
// const credentials = await credentialsProvider();
|
|
10
|
+
// const client = new STSClient({});
|
|
11
|
+
// client.send()
|
|
12
|
+
// const command = new GetSessionTokenCommand({});
|
|
13
|
+
// const { Credentials: credentials } = await client.send(command);
|
|
14
|
+
// //const credentials = s.Credentials;
|
|
15
|
+
// console.log("credentials", credentials);
|
|
16
|
+
// const url = process.argv[2];
|
|
17
|
+
const url = 'wss://preh1xo1xh.execute-api.eu-west-1.amazonaws.com/prod';
|
|
18
|
+
// https://medium.com/@o.bredenberg/iam-sign-your-api-gateway-websocket-connection-request-no-custom-auth-from-your-frontend-65451166757d
|
|
19
|
+
const url2 = await (0, getWebSocketUrl_1.getWebSocketUrl)(url);
|
|
20
|
+
const ws = new ws_1.default(url2);
|
|
21
|
+
const fileDescriptor = fs.openSync('spy_log.json', 'w');
|
|
22
|
+
// 📢📁⚡️💾 💽 💾 💿 📀🛢🪣📑🔊
|
|
23
|
+
ws.on('open', () => console.log(`connected ${new Date().toISOString()}`));
|
|
24
|
+
ws.on('message', (data) => {
|
|
25
|
+
// console.log(`From server: ${data}`);
|
|
26
|
+
let parsed;
|
|
27
|
+
try {
|
|
28
|
+
parsed = JSON.parse(data);
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
console.error(`Can not parse ${data}`);
|
|
32
|
+
}
|
|
33
|
+
if (parsed) {
|
|
34
|
+
console.log(`\x1b[47m\x1b[34m${parsed.timestamp} \x1b[31m🍕 ${parsed.serviceKey}\x1b[0m\x1b[32m\n${JSON.stringify(parsed.data, null, 2)}\x1b[0m`);
|
|
35
|
+
}
|
|
36
|
+
fs.write(fileDescriptor, data, (error) => {
|
|
37
|
+
if (!error) {
|
|
38
|
+
// fs.close(fileDescriptor);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
console.error(error);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
fs.write(fileDescriptor, '\n', (error) => {
|
|
45
|
+
if (!error) {
|
|
46
|
+
// fs.close(fileDescriptor);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
console.error(error);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
ws.on('close', () => {
|
|
54
|
+
console.log(`disconnected ${new Date().toISOString()}`);
|
|
55
|
+
fs.close(fileDescriptor, () => undefined);
|
|
56
|
+
process.exit();
|
|
57
|
+
});
|
|
58
|
+
readline
|
|
59
|
+
.createInterface({
|
|
60
|
+
input: process.stdin,
|
|
61
|
+
output: process.stdout,
|
|
62
|
+
})
|
|
63
|
+
.on('line', (data) => {
|
|
64
|
+
ws.send(data);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
run().catch(console.error);
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9jbGkvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5QkFBeUI7QUFDekIscUNBQXFDO0FBQ3JDLDJCQUEyQjtBQUMzQiwrREFBNEQ7QUFFNUQsS0FBSyxVQUFVLEdBQUc7SUFDaEIsOERBQThEO0lBQzlELG1EQUFtRDtJQUVuRCxvQ0FBb0M7SUFDcEMsZ0JBQWdCO0lBRWhCLGtEQUFrRDtJQUNsRCxtRUFBbUU7SUFDbkUsdUNBQXVDO0lBRXZDLDJDQUEyQztJQUUzQywrQkFBK0I7SUFDL0IsTUFBTSxHQUFHLEdBQUcsMkRBQTJELENBQUM7SUFFeEUseUlBQXlJO0lBQ3pJLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBQSxpQ0FBZSxFQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXhDLE1BQU0sRUFBRSxHQUFHLElBQUksWUFBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRS9CLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3hELCtCQUErQjtJQUUvQixFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRSxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFO1FBQzdCLHVDQUF1QztRQUV2QyxJQUFJLE1BQU0sQ0FBQztRQUNYLElBQUk7WUFDRixNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMzQjtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUN4QztRQUVELElBQUksTUFBTSxFQUFFO1lBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FDVCxtQkFBbUIsTUFBTSxDQUFDLFNBQVMsZUFDakMsTUFBTSxDQUFDLFVBQ1Qsb0JBQW9CLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FDbEUsQ0FBQztTQUNIO1FBRUQsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdkMsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDViw0QkFBNEI7YUFDN0I7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN0QjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdkMsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDViw0QkFBNEI7YUFDN0I7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN0QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDSCxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEQsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pCLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUTtTQUNMLGVBQWUsQ0FBQztRQUNmLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztRQUNwQixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07S0FDdkIsQ0FBQztTQUNELEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUNuQixFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUNELEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyByZWFkbGluZSBmcm9tICdyZWFkbGluZSc7XG5pbXBvcnQgV2ViU29ja2V0IGZyb20gJ3dzJztcbmltcG9ydCB7IGdldFdlYlNvY2tldFVybCB9IGZyb20gJy4uL2NvbW1vbi9nZXRXZWJTb2NrZXRVcmwnO1xuXG5hc3luYyBmdW5jdGlvbiBydW4oKSB7XG4gIC8vIHZhciBjcmVkZW50aWFsc1Byb3ZpZGVyID0gYXdzQ3AuZnJvbVRlbXBvcmFyeUNyZWRlbnRpYWxzKCk7XG4gIC8vIGNvbnN0IGNyZWRlbnRpYWxzID0gYXdhaXQgY3JlZGVudGlhbHNQcm92aWRlcigpO1xuXG4gIC8vIGNvbnN0IGNsaWVudCA9IG5ldyBTVFNDbGllbnQoe30pO1xuICAvLyBjbGllbnQuc2VuZCgpXG5cbiAgLy8gY29uc3QgY29tbWFuZCA9IG5ldyBHZXRTZXNzaW9uVG9rZW5Db21tYW5kKHt9KTtcbiAgLy8gY29uc3QgeyBDcmVkZW50aWFsczogY3JlZGVudGlhbHMgfSA9IGF3YWl0IGNsaWVudC5zZW5kKGNvbW1hbmQpO1xuICAvLyAvL2NvbnN0IGNyZWRlbnRpYWxzID0gcy5DcmVkZW50aWFscztcblxuICAvLyBjb25zb2xlLmxvZyhcImNyZWRlbnRpYWxzXCIsIGNyZWRlbnRpYWxzKTtcblxuICAvLyBjb25zdCB1cmwgPSBwcm9jZXNzLmFyZ3ZbMl07XG4gIGNvbnN0IHVybCA9ICd3c3M6Ly9wcmVoMXhvMXhoLmV4ZWN1dGUtYXBpLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tL3Byb2QnO1xuXG4gIC8vIGh0dHBzOi8vbWVkaXVtLmNvbS9Aby5icmVkZW5iZXJnL2lhbS1zaWduLXlvdXItYXBpLWdhdGV3YXktd2Vic29ja2V0LWNvbm5lY3Rpb24tcmVxdWVzdC1uby1jdXN0b20tYXV0aC1mcm9tLXlvdXItZnJvbnRlbmQtNjU0NTExNjY3NTdkXG4gIGNvbnN0IHVybDIgPSBhd2FpdCBnZXRXZWJTb2NrZXRVcmwodXJsKTtcblxuICBjb25zdCB3cyA9IG5ldyBXZWJTb2NrZXQodXJsMik7XG5cbiAgY29uc3QgZmlsZURlc2NyaXB0b3IgPSBmcy5vcGVuU3luYygnc3B5X2xvZy5qc29uJywgJ3cnKTtcbiAgLy8g8J+TovCfk4HimqHvuI/wn5K+IPCfkr0g8J+SviDwn5K/IPCfk4Dwn5ui8J+qo/Cfk5Hwn5SKXG5cbiAgd3Mub24oJ29wZW4nLCAoKSA9PiBjb25zb2xlLmxvZyhgY29ubmVjdGVkICR7bmV3IERhdGUoKS50b0lTT1N0cmluZygpfWApKTtcbiAgd3Mub24oJ21lc3NhZ2UnLCAoZGF0YTogYW55KSA9PiB7XG4gICAgLy8gY29uc29sZS5sb2coYEZyb20gc2VydmVyOiAke2RhdGF9YCk7XG5cbiAgICBsZXQgcGFyc2VkO1xuICAgIHRyeSB7XG4gICAgICBwYXJzZWQgPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcihgQ2FuIG5vdCBwYXJzZSAke2RhdGF9YCk7XG4gICAgfVxuXG4gICAgaWYgKHBhcnNlZCkge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBcXHgxYls0N21cXHgxYlszNG0ke3BhcnNlZC50aW1lc3RhbXB9IFxceDFiWzMxbfCfjZUgJHtcbiAgICAgICAgICBwYXJzZWQuc2VydmljZUtleVxuICAgICAgICB9XFx4MWJbMG1cXHgxYlszMm1cXG4ke0pTT04uc3RyaW5naWZ5KHBhcnNlZC5kYXRhLCBudWxsLCAyKX1cXHgxYlswbWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgZnMud3JpdGUoZmlsZURlc2NyaXB0b3IsIGRhdGEsIChlcnJvcikgPT4ge1xuICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICAvLyBmcy5jbG9zZShmaWxlRGVzY3JpcHRvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBmcy53cml0ZShmaWxlRGVzY3JpcHRvciwgJ1xcbicsIChlcnJvcikgPT4ge1xuICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICAvLyBmcy5jbG9zZShmaWxlRGVzY3JpcHRvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIHdzLm9uKCdjbG9zZScsICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgZGlzY29ubmVjdGVkICR7bmV3IERhdGUoKS50b0lTT1N0cmluZygpfWApO1xuICAgIGZzLmNsb3NlKGZpbGVEZXNjcmlwdG9yLCAoKSA9PiB1bmRlZmluZWQpO1xuICAgIHByb2Nlc3MuZXhpdCgpO1xuICB9KTtcblxuICByZWFkbGluZVxuICAgIC5jcmVhdGVJbnRlcmZhY2Uoe1xuICAgICAgaW5wdXQ6IHByb2Nlc3Muc3RkaW4sXG4gICAgICBvdXRwdXQ6IHByb2Nlc3Muc3Rkb3V0LFxuICAgIH0pXG4gICAgLm9uKCdsaW5lJywgKGRhdGEpID0+IHtcbiAgICAgIHdzLnNlbmQoZGF0YSk7XG4gICAgfSk7XG59XG5ydW4oKS5jYXRjaChjb25zb2xlLmVycm9yKTtcbiJdfQ==
|
package/lib/cli/ws.mjs
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import * as readline from 'readline';
|
|
3
|
+
import WebSocket from 'ws';
|
|
4
|
+
import { getWebSocketUrl } from '../common/getWebSocketUrl';
|
|
5
|
+
async function run() {
|
|
6
|
+
// var credentialsProvider = awsCp.fromTemporaryCredentials();
|
|
7
|
+
// const credentials = await credentialsProvider();
|
|
8
|
+
// const client = new STSClient({});
|
|
9
|
+
// client.send()
|
|
10
|
+
// const command = new GetSessionTokenCommand({});
|
|
11
|
+
// const { Credentials: credentials } = await client.send(command);
|
|
12
|
+
// //const credentials = s.Credentials;
|
|
13
|
+
// console.log("credentials", credentials);
|
|
14
|
+
// const url = process.argv[2];
|
|
15
|
+
const url = 'wss://preh1xo1xh.execute-api.eu-west-1.amazonaws.com/prod';
|
|
16
|
+
// https://medium.com/@o.bredenberg/iam-sign-your-api-gateway-websocket-connection-request-no-custom-auth-from-your-frontend-65451166757d
|
|
17
|
+
const url2 = await getWebSocketUrl(url);
|
|
18
|
+
const ws = new WebSocket(url2);
|
|
19
|
+
const fileDescriptor = fs.openSync('spy_log.json', 'w');
|
|
20
|
+
// 📢📁⚡️💾 💽 💾 💿 📀🛢🪣📑🔊
|
|
21
|
+
ws.on('open', () => console.log(`connected ${new Date().toISOString()}`));
|
|
22
|
+
ws.on('message', (data) => {
|
|
23
|
+
// console.log(`From server: ${data}`);
|
|
24
|
+
let parsed;
|
|
25
|
+
try {
|
|
26
|
+
parsed = JSON.parse(data);
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
console.error(`Can not parse ${data}`);
|
|
30
|
+
}
|
|
31
|
+
if (parsed) {
|
|
32
|
+
console.log(`\x1b[47m\x1b[34m${parsed.timestamp} \x1b[31m🍕 ${parsed.serviceKey}\x1b[0m\x1b[32m\n${JSON.stringify(parsed.data, null, 2)}\x1b[0m`);
|
|
33
|
+
}
|
|
34
|
+
fs.write(fileDescriptor, data, (error) => {
|
|
35
|
+
if (!error) {
|
|
36
|
+
// fs.close(fileDescriptor);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
console.error(error);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
fs.write(fileDescriptor, '\n', (error) => {
|
|
43
|
+
if (!error) {
|
|
44
|
+
// fs.close(fileDescriptor);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
console.error(error);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
ws.on('close', () => {
|
|
52
|
+
console.log(`disconnected ${new Date().toISOString()}`);
|
|
53
|
+
fs.close(fileDescriptor, () => undefined);
|
|
54
|
+
process.exit();
|
|
55
|
+
});
|
|
56
|
+
readline
|
|
57
|
+
.createInterface({
|
|
58
|
+
input: process.stdin,
|
|
59
|
+
output: process.stdout,
|
|
60
|
+
})
|
|
61
|
+
.on('line', (data) => {
|
|
62
|
+
ws.send(data);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
run().catch(console.error);
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9jbGkvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxLQUFLLFFBQVEsTUFBTSxVQUFVLENBQUM7QUFDckMsT0FBTyxTQUFTLE1BQU0sSUFBSSxDQUFDO0FBQzNCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU1RCxLQUFLLFVBQVUsR0FBRztJQUNoQiw4REFBOEQ7SUFDOUQsbURBQW1EO0lBRW5ELG9DQUFvQztJQUNwQyxnQkFBZ0I7SUFFaEIsa0RBQWtEO0lBQ2xELG1FQUFtRTtJQUNuRSx1Q0FBdUM7SUFFdkMsMkNBQTJDO0lBRTNDLCtCQUErQjtJQUMvQixNQUFNLEdBQUcsR0FBRywyREFBMkQsQ0FBQztJQUV4RSx5SUFBeUk7SUFDekksTUFBTSxJQUFJLEdBQUcsTUFBTSxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFeEMsTUFBTSxFQUFFLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFL0IsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDeEQsK0JBQStCO0lBRS9CLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUU7UUFDN0IsdUNBQXVDO1FBRXZDLElBQUksTUFBTSxDQUFDO1FBQ1gsSUFBSTtZQUNGLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNCO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixPQUFPLENBQUMsS0FBSyxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3hDO1FBRUQsSUFBSSxNQUFNLEVBQUU7WUFDVixPQUFPLENBQUMsR0FBRyxDQUNULG1CQUFtQixNQUFNLENBQUMsU0FBUyxlQUNqQyxNQUFNLENBQUMsVUFDVCxvQkFBb0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsU0FBUyxDQUNsRSxDQUFDO1NBQ0g7UUFFRCxFQUFFLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNWLDRCQUE0QjthQUM3QjtpQkFBTTtnQkFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3RCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNWLDRCQUE0QjthQUM3QjtpQkFBTTtnQkFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3RCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4RCxFQUFFLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakIsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRO1NBQ0wsZUFBZSxDQUFDO1FBQ2YsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1FBQ3BCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtLQUN2QixDQUFDO1NBQ0QsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ25CLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBQ0QsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHJlYWRsaW5lIGZyb20gJ3JlYWRsaW5lJztcbmltcG9ydCBXZWJTb2NrZXQgZnJvbSAnd3MnO1xuaW1wb3J0IHsgZ2V0V2ViU29ja2V0VXJsIH0gZnJvbSAnLi4vY29tbW9uL2dldFdlYlNvY2tldFVybCc7XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1bigpIHtcbiAgLy8gdmFyIGNyZWRlbnRpYWxzUHJvdmlkZXIgPSBhd3NDcC5mcm9tVGVtcG9yYXJ5Q3JlZGVudGlhbHMoKTtcbiAgLy8gY29uc3QgY3JlZGVudGlhbHMgPSBhd2FpdCBjcmVkZW50aWFsc1Byb3ZpZGVyKCk7XG5cbiAgLy8gY29uc3QgY2xpZW50ID0gbmV3IFNUU0NsaWVudCh7fSk7XG4gIC8vIGNsaWVudC5zZW5kKClcblxuICAvLyBjb25zdCBjb21tYW5kID0gbmV3IEdldFNlc3Npb25Ub2tlbkNvbW1hbmQoe30pO1xuICAvLyBjb25zdCB7IENyZWRlbnRpYWxzOiBjcmVkZW50aWFscyB9ID0gYXdhaXQgY2xpZW50LnNlbmQoY29tbWFuZCk7XG4gIC8vIC8vY29uc3QgY3JlZGVudGlhbHMgPSBzLkNyZWRlbnRpYWxzO1xuXG4gIC8vIGNvbnNvbGUubG9nKFwiY3JlZGVudGlhbHNcIiwgY3JlZGVudGlhbHMpO1xuXG4gIC8vIGNvbnN0IHVybCA9IHByb2Nlc3MuYXJndlsyXTtcbiAgY29uc3QgdXJsID0gJ3dzczovL3ByZWgxeG8xeGguZXhlY3V0ZS1hcGkuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vcHJvZCc7XG5cbiAgLy8gaHR0cHM6Ly9tZWRpdW0uY29tL0BvLmJyZWRlbmJlcmcvaWFtLXNpZ24teW91ci1hcGktZ2F0ZXdheS13ZWJzb2NrZXQtY29ubmVjdGlvbi1yZXF1ZXN0LW5vLWN1c3RvbS1hdXRoLWZyb20teW91ci1mcm9udGVuZC02NTQ1MTE2Njc1N2RcbiAgY29uc3QgdXJsMiA9IGF3YWl0IGdldFdlYlNvY2tldFVybCh1cmwpO1xuXG4gIGNvbnN0IHdzID0gbmV3IFdlYlNvY2tldCh1cmwyKTtcblxuICBjb25zdCBmaWxlRGVzY3JpcHRvciA9IGZzLm9wZW5TeW5jKCdzcHlfbG9nLmpzb24nLCAndycpO1xuICAvLyDwn5Oi8J+TgeKaoe+4j/Cfkr4g8J+SvSDwn5K+IPCfkr8g8J+TgPCfm6Lwn6qj8J+TkfCflIpcblxuICB3cy5vbignb3BlbicsICgpID0+IGNvbnNvbGUubG9nKGBjb25uZWN0ZWQgJHtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9YCkpO1xuICB3cy5vbignbWVzc2FnZScsIChkYXRhOiBhbnkpID0+IHtcbiAgICAvLyBjb25zb2xlLmxvZyhgRnJvbSBzZXJ2ZXI6ICR7ZGF0YX1gKTtcblxuICAgIGxldCBwYXJzZWQ7XG4gICAgdHJ5IHtcbiAgICAgIHBhcnNlZCA9IEpTT04ucGFyc2UoZGF0YSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBDYW4gbm90IHBhcnNlICR7ZGF0YX1gKTtcbiAgICB9XG5cbiAgICBpZiAocGFyc2VkKSB7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYFxceDFiWzQ3bVxceDFiWzM0bSR7cGFyc2VkLnRpbWVzdGFtcH0gXFx4MWJbMzFt8J+NlSAke1xuICAgICAgICAgIHBhcnNlZC5zZXJ2aWNlS2V5XG4gICAgICAgIH1cXHgxYlswbVxceDFiWzMybVxcbiR7SlNPTi5zdHJpbmdpZnkocGFyc2VkLmRhdGEsIG51bGwsIDIpfVxceDFiWzBtYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBmcy53cml0ZShmaWxlRGVzY3JpcHRvciwgZGF0YSwgKGVycm9yKSA9PiB7XG4gICAgICBpZiAoIWVycm9yKSB7XG4gICAgICAgIC8vIGZzLmNsb3NlKGZpbGVEZXNjcmlwdG9yKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGZzLndyaXRlKGZpbGVEZXNjcmlwdG9yLCAnXFxuJywgKGVycm9yKSA9PiB7XG4gICAgICBpZiAoIWVycm9yKSB7XG4gICAgICAgIC8vIGZzLmNsb3NlKGZpbGVEZXNjcmlwdG9yKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgd3Mub24oJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGBkaXNjb25uZWN0ZWQgJHtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9YCk7XG4gICAgZnMuY2xvc2UoZmlsZURlc2NyaXB0b3IsICgpID0+IHVuZGVmaW5lZCk7XG4gICAgcHJvY2Vzcy5leGl0KCk7XG4gIH0pO1xuXG4gIHJlYWRsaW5lXG4gICAgLmNyZWF0ZUludGVyZmFjZSh7XG4gICAgICBpbnB1dDogcHJvY2Vzcy5zdGRpbixcbiAgICAgIG91dHB1dDogcHJvY2Vzcy5zdGRvdXQsXG4gICAgfSlcbiAgICAub24oJ2xpbmUnLCAoZGF0YSkgPT4ge1xuICAgICAgd3Muc2VuZChkYXRhKTtcbiAgICB9KTtcbn1cbnJ1bigpLmNhdGNoKGNvbnNvbGUuZXJyb3IpO1xuIl19
|
|
File without changes
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getWebSocketUrl = void 0;
|
|
4
|
+
const credential_providers_1 = require("@aws-sdk/credential-providers");
|
|
5
|
+
const aws4 = require("aws4");
|
|
6
|
+
// ""wss://m6g3w6ttdh.execute-api.eu-west-1.amazonaws.com/prod";"
|
|
7
|
+
async function getWebSocketUrl(url, credentials) {
|
|
8
|
+
const urlParsed = parseUrl(url);
|
|
9
|
+
const hostParts = urlParsed.host.split('.');
|
|
10
|
+
console.log('urlParsed', urlParsed);
|
|
11
|
+
if (!credentials) {
|
|
12
|
+
const credentialsProvider = (0, credential_providers_1.fromNodeProviderChain)();
|
|
13
|
+
credentials = await credentialsProvider();
|
|
14
|
+
}
|
|
15
|
+
const AWS_REGION = hostParts[2]; // The region of your API-gateway
|
|
16
|
+
const SOCKET_HOST = hostParts[0]; // Your API-gateway ID
|
|
17
|
+
const ENV = urlParsed.pathname.replace(/^\//, ''); // The stage of your target deployment
|
|
18
|
+
const WEBSOCKET_URL = `${SOCKET_HOST}.execute-api.${AWS_REGION}.amazonaws.com`; // Don't prepend with wss!
|
|
19
|
+
// const AWS_REGION = "eu-west-1"; // The region of your API-gateway
|
|
20
|
+
// const SOCKET_HOST = "m6g3w6ttdh"; // Your API-gateway ID
|
|
21
|
+
// const ENV = "prod"; // The stage of your target deployment
|
|
22
|
+
// const WEBSOCKET_URL = `${SOCKET_HOST}.execute-api.${AWS_REGION}.amazonaws.com`; // Don't prepend with wss!
|
|
23
|
+
// Get a signed path
|
|
24
|
+
const { path } = aws4.sign({
|
|
25
|
+
method: 'GET',
|
|
26
|
+
host: WEBSOCKET_URL,
|
|
27
|
+
// path: `/${ENV}?X-Amz-Security-Token=${encodeURIComponent(
|
|
28
|
+
// credentials!.SessionToken!
|
|
29
|
+
// )}`,
|
|
30
|
+
path: `/${ENV}`,
|
|
31
|
+
service: 'execute-api',
|
|
32
|
+
region: AWS_REGION,
|
|
33
|
+
signQuery: true,
|
|
34
|
+
}, {
|
|
35
|
+
accessKeyId: credentials.accessKeyId,
|
|
36
|
+
secretAccessKey: credentials.secretAccessKey,
|
|
37
|
+
sessionToken: credentials.sessionToken,
|
|
38
|
+
});
|
|
39
|
+
const url2 = `wss://${WEBSOCKET_URL}${path}`;
|
|
40
|
+
console.log('path', url2);
|
|
41
|
+
return url2;
|
|
42
|
+
}
|
|
43
|
+
exports.getWebSocketUrl = getWebSocketUrl;
|
|
44
|
+
function parseUrl(href) {
|
|
45
|
+
const match = href.match(/^(wss?:)\/\/(([^:/?#]*)(?::([0-9]+))?)([/]{0,1}[^?#]*)(\?[^#]*|)(#.*|)$/);
|
|
46
|
+
return (match && {
|
|
47
|
+
href,
|
|
48
|
+
protocol: match[1],
|
|
49
|
+
host: match[2],
|
|
50
|
+
hostname: match[3],
|
|
51
|
+
port: match[4],
|
|
52
|
+
pathname: match[5],
|
|
53
|
+
search: match[6],
|
|
54
|
+
hash: match[7],
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0V2ViU29ja2V0VXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vY29tbW9uL2dldFdlYlNvY2tldFVybC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx3RUFBc0U7QUFFdEUsNkJBQTZCO0FBRTdCLGlFQUFpRTtBQUUxRCxLQUFLLFVBQVUsZUFBZSxDQUFDLEdBQVcsRUFBRSxXQUF5QjtJQUMxRSxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsTUFBTSxTQUFTLEdBQUcsU0FBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFN0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFcEMsSUFBSSxDQUFDLFdBQVcsRUFBRTtRQUNoQixNQUFNLG1CQUFtQixHQUFHLElBQUEsNENBQXFCLEdBQUUsQ0FBQztRQUNwRCxXQUFXLEdBQUcsTUFBTSxtQkFBbUIsRUFBRSxDQUFDO0tBQzNDO0lBRUQsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUNBQWlDO0lBQ2xFLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHNCQUFzQjtJQUN4RCxNQUFNLEdBQUcsR0FBRyxTQUFVLENBQUMsUUFBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxzQ0FBc0M7SUFDM0YsTUFBTSxhQUFhLEdBQUcsR0FBRyxXQUFXLGdCQUFnQixVQUFVLGdCQUFnQixDQUFDLENBQUMsMEJBQTBCO0lBQzFHLG9FQUFvRTtJQUNwRSwyREFBMkQ7SUFDM0QsNkRBQTZEO0lBQzdELDZHQUE2RztJQUU3RyxvQkFBb0I7SUFDcEIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQ3hCO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsYUFBYTtRQUNuQiw0REFBNEQ7UUFDNUQsK0JBQStCO1FBQy9CLE9BQU87UUFDUCxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUU7UUFDZixPQUFPLEVBQUUsYUFBYTtRQUN0QixNQUFNLEVBQUUsVUFBVTtRQUNsQixTQUFTLEVBQUUsSUFBSTtLQUNoQixFQUNEO1FBQ0UsV0FBVyxFQUFFLFdBQVcsQ0FBQyxXQUFXO1FBQ3BDLGVBQWUsRUFBRSxXQUFXLENBQUMsZUFBZTtRQUM1QyxZQUFZLEVBQUUsV0FBVyxDQUFDLFlBQVk7S0FDdkMsQ0FDRixDQUFDO0lBRUYsTUFBTSxJQUFJLEdBQUcsU0FBUyxhQUFhLEdBQUcsSUFBSSxFQUFFLENBQUM7SUFDN0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUIsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBM0NELDBDQTJDQztBQUVELFNBQVMsUUFBUSxDQUFDLElBQVk7SUFDNUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDdEIseUVBQXlFLENBQzFFLENBQUM7SUFDRixPQUFPLENBQ0wsS0FBSyxJQUFJO1FBQ1AsSUFBSTtRQUNKLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2QsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDZCxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNsQixNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNoQixJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztLQUNmLENBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmcm9tTm9kZVByb3ZpZGVyQ2hhaW4gfSBmcm9tICdAYXdzLXNkay9jcmVkZW50aWFsLXByb3ZpZGVycyc7XG5pbXBvcnQgeyBDcmVkZW50aWFscyB9IGZyb20gJ0Bhd3Mtc2RrL3R5cGVzJztcbmltcG9ydCAqIGFzIGF3czQgZnJvbSAnYXdzNCc7XG5cbi8vIFwiXCJ3c3M6Ly9tNmczdzZ0dGRoLmV4ZWN1dGUtYXBpLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tL3Byb2RcIjtcIlxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0V2ViU29ja2V0VXJsKHVybDogc3RyaW5nLCBjcmVkZW50aWFscz86IENyZWRlbnRpYWxzKSB7XG4gIGNvbnN0IHVybFBhcnNlZCA9IHBhcnNlVXJsKHVybCk7XG4gIGNvbnN0IGhvc3RQYXJ0cyA9IHVybFBhcnNlZCEuaG9zdC5zcGxpdCgnLicpO1xuXG4gIGNvbnNvbGUubG9nKCd1cmxQYXJzZWQnLCB1cmxQYXJzZWQpO1xuXG4gIGlmICghY3JlZGVudGlhbHMpIHtcbiAgICBjb25zdCBjcmVkZW50aWFsc1Byb3ZpZGVyID0gZnJvbU5vZGVQcm92aWRlckNoYWluKCk7XG4gICAgY3JlZGVudGlhbHMgPSBhd2FpdCBjcmVkZW50aWFsc1Byb3ZpZGVyKCk7XG4gIH1cblxuICBjb25zdCBBV1NfUkVHSU9OID0gaG9zdFBhcnRzWzJdOyAvLyBUaGUgcmVnaW9uIG9mIHlvdXIgQVBJLWdhdGV3YXlcbiAgY29uc3QgU09DS0VUX0hPU1QgPSBob3N0UGFydHNbMF07IC8vIFlvdXIgQVBJLWdhdGV3YXkgSURcbiAgY29uc3QgRU5WID0gdXJsUGFyc2VkIS5wYXRobmFtZSEucmVwbGFjZSgvXlxcLy8sICcnKTsgLy8gVGhlIHN0YWdlIG9mIHlvdXIgdGFyZ2V0IGRlcGxveW1lbnRcbiAgY29uc3QgV0VCU09DS0VUX1VSTCA9IGAke1NPQ0tFVF9IT1NUfS5leGVjdXRlLWFwaS4ke0FXU19SRUdJT059LmFtYXpvbmF3cy5jb21gOyAvLyBEb24ndCBwcmVwZW5kIHdpdGggd3NzIVxuICAvLyBjb25zdCBBV1NfUkVHSU9OID0gXCJldS13ZXN0LTFcIjsgLy8gVGhlIHJlZ2lvbiBvZiB5b3VyIEFQSS1nYXRld2F5XG4gIC8vIGNvbnN0IFNPQ0tFVF9IT1NUID0gXCJtNmczdzZ0dGRoXCI7IC8vIFlvdXIgQVBJLWdhdGV3YXkgSURcbiAgLy8gY29uc3QgRU5WID0gXCJwcm9kXCI7IC8vIFRoZSBzdGFnZSBvZiB5b3VyIHRhcmdldCBkZXBsb3ltZW50XG4gIC8vIGNvbnN0IFdFQlNPQ0tFVF9VUkwgPSBgJHtTT0NLRVRfSE9TVH0uZXhlY3V0ZS1hcGkuJHtBV1NfUkVHSU9OfS5hbWF6b25hd3MuY29tYDsgLy8gRG9uJ3QgcHJlcGVuZCB3aXRoIHdzcyFcblxuICAvLyBHZXQgYSBzaWduZWQgcGF0aFxuICBjb25zdCB7IHBhdGggfSA9IGF3czQuc2lnbihcbiAgICB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgaG9zdDogV0VCU09DS0VUX1VSTCxcbiAgICAgIC8vIHBhdGg6IGAvJHtFTlZ9P1gtQW16LVNlY3VyaXR5LVRva2VuPSR7ZW5jb2RlVVJJQ29tcG9uZW50KFxuICAgICAgLy8gICBjcmVkZW50aWFscyEuU2Vzc2lvblRva2VuIVxuICAgICAgLy8gKX1gLFxuICAgICAgcGF0aDogYC8ke0VOVn1gLFxuICAgICAgc2VydmljZTogJ2V4ZWN1dGUtYXBpJyxcbiAgICAgIHJlZ2lvbjogQVdTX1JFR0lPTixcbiAgICAgIHNpZ25RdWVyeTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFjY2Vzc0tleUlkOiBjcmVkZW50aWFscy5hY2Nlc3NLZXlJZCxcbiAgICAgIHNlY3JldEFjY2Vzc0tleTogY3JlZGVudGlhbHMuc2VjcmV0QWNjZXNzS2V5LFxuICAgICAgc2Vzc2lvblRva2VuOiBjcmVkZW50aWFscy5zZXNzaW9uVG9rZW4sXG4gICAgfVxuICApO1xuXG4gIGNvbnN0IHVybDIgPSBgd3NzOi8vJHtXRUJTT0NLRVRfVVJMfSR7cGF0aH1gO1xuICBjb25zb2xlLmxvZygncGF0aCcsIHVybDIpO1xuICByZXR1cm4gdXJsMjtcbn1cblxuZnVuY3Rpb24gcGFyc2VVcmwoaHJlZjogc3RyaW5nKSB7XG4gIGNvbnN0IG1hdGNoID0gaHJlZi5tYXRjaChcbiAgICAvXih3c3M/OilcXC9cXC8oKFteOi8/I10qKSg/OjooWzAtOV0rKSk/KShbL117MCwxfVtePyNdKikoXFw/W14jXSp8KSgjLip8KSQvXG4gICk7XG4gIHJldHVybiAoXG4gICAgbWF0Y2ggJiYge1xuICAgICAgaHJlZixcbiAgICAgIHByb3RvY29sOiBtYXRjaFsxXSxcbiAgICAgIGhvc3Q6IG1hdGNoWzJdLFxuICAgICAgaG9zdG5hbWU6IG1hdGNoWzNdLFxuICAgICAgcG9ydDogbWF0Y2hbNF0sXG4gICAgICBwYXRobmFtZTogbWF0Y2hbNV0sXG4gICAgICBzZWFyY2g6IG1hdGNoWzZdLFxuICAgICAgaGFzaDogbWF0Y2hbN10sXG4gICAgfVxuICApO1xufVxuIl19
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
|
|
2
|
+
import * as aws4 from 'aws4';
|
|
3
|
+
// ""wss://m6g3w6ttdh.execute-api.eu-west-1.amazonaws.com/prod";"
|
|
4
|
+
export async function getWebSocketUrl(url, credentials) {
|
|
5
|
+
const urlParsed = parseUrl(url);
|
|
6
|
+
const hostParts = urlParsed.host.split('.');
|
|
7
|
+
console.log('urlParsed', urlParsed);
|
|
8
|
+
if (!credentials) {
|
|
9
|
+
const credentialsProvider = fromNodeProviderChain();
|
|
10
|
+
credentials = await credentialsProvider();
|
|
11
|
+
}
|
|
12
|
+
const AWS_REGION = hostParts[2]; // The region of your API-gateway
|
|
13
|
+
const SOCKET_HOST = hostParts[0]; // Your API-gateway ID
|
|
14
|
+
const ENV = urlParsed.pathname.replace(/^\//, ''); // The stage of your target deployment
|
|
15
|
+
const WEBSOCKET_URL = `${SOCKET_HOST}.execute-api.${AWS_REGION}.amazonaws.com`; // Don't prepend with wss!
|
|
16
|
+
// const AWS_REGION = "eu-west-1"; // The region of your API-gateway
|
|
17
|
+
// const SOCKET_HOST = "m6g3w6ttdh"; // Your API-gateway ID
|
|
18
|
+
// const ENV = "prod"; // The stage of your target deployment
|
|
19
|
+
// const WEBSOCKET_URL = `${SOCKET_HOST}.execute-api.${AWS_REGION}.amazonaws.com`; // Don't prepend with wss!
|
|
20
|
+
// Get a signed path
|
|
21
|
+
const { path } = aws4.sign({
|
|
22
|
+
method: 'GET',
|
|
23
|
+
host: WEBSOCKET_URL,
|
|
24
|
+
// path: `/${ENV}?X-Amz-Security-Token=${encodeURIComponent(
|
|
25
|
+
// credentials!.SessionToken!
|
|
26
|
+
// )}`,
|
|
27
|
+
path: `/${ENV}`,
|
|
28
|
+
service: 'execute-api',
|
|
29
|
+
region: AWS_REGION,
|
|
30
|
+
signQuery: true,
|
|
31
|
+
}, {
|
|
32
|
+
accessKeyId: credentials.accessKeyId,
|
|
33
|
+
secretAccessKey: credentials.secretAccessKey,
|
|
34
|
+
sessionToken: credentials.sessionToken,
|
|
35
|
+
});
|
|
36
|
+
const url2 = `wss://${WEBSOCKET_URL}${path}`;
|
|
37
|
+
console.log('path', url2);
|
|
38
|
+
return url2;
|
|
39
|
+
}
|
|
40
|
+
function parseUrl(href) {
|
|
41
|
+
const match = href.match(/^(wss?:)\/\/(([^:/?#]*)(?::([0-9]+))?)([/]{0,1}[^?#]*)(\?[^#]*|)(#.*|)$/);
|
|
42
|
+
return (match && {
|
|
43
|
+
href,
|
|
44
|
+
protocol: match[1],
|
|
45
|
+
host: match[2],
|
|
46
|
+
hostname: match[3],
|
|
47
|
+
port: match[4],
|
|
48
|
+
pathname: match[5],
|
|
49
|
+
search: match[6],
|
|
50
|
+
hash: match[7],
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0V2ViU29ja2V0VXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vY29tbW9uL2dldFdlYlNvY2tldFVybC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV0RSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUU3QixpRUFBaUU7QUFFakUsTUFBTSxDQUFDLEtBQUssVUFBVSxlQUFlLENBQUMsR0FBVyxFQUFFLFdBQXlCO0lBQzFFLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxNQUFNLFNBQVMsR0FBRyxTQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUU3QyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUVwQyxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQ2hCLE1BQU0sbUJBQW1CLEdBQUcscUJBQXFCLEVBQUUsQ0FBQztRQUNwRCxXQUFXLEdBQUcsTUFBTSxtQkFBbUIsRUFBRSxDQUFDO0tBQzNDO0lBRUQsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUNBQWlDO0lBQ2xFLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHNCQUFzQjtJQUN4RCxNQUFNLEdBQUcsR0FBRyxTQUFVLENBQUMsUUFBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxzQ0FBc0M7SUFDM0YsTUFBTSxhQUFhLEdBQUcsR0FBRyxXQUFXLGdCQUFnQixVQUFVLGdCQUFnQixDQUFDLENBQUMsMEJBQTBCO0lBQzFHLG9FQUFvRTtJQUNwRSwyREFBMkQ7SUFDM0QsNkRBQTZEO0lBQzdELDZHQUE2RztJQUU3RyxvQkFBb0I7SUFDcEIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQ3hCO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsYUFBYTtRQUNuQiw0REFBNEQ7UUFDNUQsK0JBQStCO1FBQy9CLE9BQU87UUFDUCxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUU7UUFDZixPQUFPLEVBQUUsYUFBYTtRQUN0QixNQUFNLEVBQUUsVUFBVTtRQUNsQixTQUFTLEVBQUUsSUFBSTtLQUNoQixFQUNEO1FBQ0UsV0FBVyxFQUFFLFdBQVcsQ0FBQyxXQUFXO1FBQ3BDLGVBQWUsRUFBRSxXQUFXLENBQUMsZUFBZTtRQUM1QyxZQUFZLEVBQUUsV0FBVyxDQUFDLFlBQVk7S0FDdkMsQ0FDRixDQUFDO0lBRUYsTUFBTSxJQUFJLEdBQUcsU0FBUyxhQUFhLEdBQUcsSUFBSSxFQUFFLENBQUM7SUFDN0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUIsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsSUFBWTtJQUM1QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUN0Qix5RUFBeUUsQ0FDMUUsQ0FBQztJQUNGLE9BQU8sQ0FDTCxLQUFLLElBQUk7UUFDUCxJQUFJO1FBQ0osUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDZCxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNsQixJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNkLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQ2YsQ0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZyb21Ob2RlUHJvdmlkZXJDaGFpbiB9IGZyb20gJ0Bhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXJzJztcbmltcG9ydCB7IENyZWRlbnRpYWxzIH0gZnJvbSAnQGF3cy1zZGsvdHlwZXMnO1xuaW1wb3J0ICogYXMgYXdzNCBmcm9tICdhd3M0JztcblxuLy8gXCJcIndzczovL202ZzN3NnR0ZGguZXhlY3V0ZS1hcGkuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vcHJvZFwiO1wiXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRXZWJTb2NrZXRVcmwodXJsOiBzdHJpbmcsIGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHMpIHtcbiAgY29uc3QgdXJsUGFyc2VkID0gcGFyc2VVcmwodXJsKTtcbiAgY29uc3QgaG9zdFBhcnRzID0gdXJsUGFyc2VkIS5ob3N0LnNwbGl0KCcuJyk7XG5cbiAgY29uc29sZS5sb2coJ3VybFBhcnNlZCcsIHVybFBhcnNlZCk7XG5cbiAgaWYgKCFjcmVkZW50aWFscykge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzUHJvdmlkZXIgPSBmcm9tTm9kZVByb3ZpZGVyQ2hhaW4oKTtcbiAgICBjcmVkZW50aWFscyA9IGF3YWl0IGNyZWRlbnRpYWxzUHJvdmlkZXIoKTtcbiAgfVxuXG4gIGNvbnN0IEFXU19SRUdJT04gPSBob3N0UGFydHNbMl07IC8vIFRoZSByZWdpb24gb2YgeW91ciBBUEktZ2F0ZXdheVxuICBjb25zdCBTT0NLRVRfSE9TVCA9IGhvc3RQYXJ0c1swXTsgLy8gWW91ciBBUEktZ2F0ZXdheSBJRFxuICBjb25zdCBFTlYgPSB1cmxQYXJzZWQhLnBhdGhuYW1lIS5yZXBsYWNlKC9eXFwvLywgJycpOyAvLyBUaGUgc3RhZ2Ugb2YgeW91ciB0YXJnZXQgZGVwbG95bWVudFxuICBjb25zdCBXRUJTT0NLRVRfVVJMID0gYCR7U09DS0VUX0hPU1R9LmV4ZWN1dGUtYXBpLiR7QVdTX1JFR0lPTn0uYW1hem9uYXdzLmNvbWA7IC8vIERvbid0IHByZXBlbmQgd2l0aCB3c3MhXG4gIC8vIGNvbnN0IEFXU19SRUdJT04gPSBcImV1LXdlc3QtMVwiOyAvLyBUaGUgcmVnaW9uIG9mIHlvdXIgQVBJLWdhdGV3YXlcbiAgLy8gY29uc3QgU09DS0VUX0hPU1QgPSBcIm02ZzN3NnR0ZGhcIjsgLy8gWW91ciBBUEktZ2F0ZXdheSBJRFxuICAvLyBjb25zdCBFTlYgPSBcInByb2RcIjsgLy8gVGhlIHN0YWdlIG9mIHlvdXIgdGFyZ2V0IGRlcGxveW1lbnRcbiAgLy8gY29uc3QgV0VCU09DS0VUX1VSTCA9IGAke1NPQ0tFVF9IT1NUfS5leGVjdXRlLWFwaS4ke0FXU19SRUdJT059LmFtYXpvbmF3cy5jb21gOyAvLyBEb24ndCBwcmVwZW5kIHdpdGggd3NzIVxuXG4gIC8vIEdldCBhIHNpZ25lZCBwYXRoXG4gIGNvbnN0IHsgcGF0aCB9ID0gYXdzNC5zaWduKFxuICAgIHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICBob3N0OiBXRUJTT0NLRVRfVVJMLFxuICAgICAgLy8gcGF0aDogYC8ke0VOVn0/WC1BbXotU2VjdXJpdHktVG9rZW49JHtlbmNvZGVVUklDb21wb25lbnQoXG4gICAgICAvLyAgIGNyZWRlbnRpYWxzIS5TZXNzaW9uVG9rZW4hXG4gICAgICAvLyApfWAsXG4gICAgICBwYXRoOiBgLyR7RU5WfWAsXG4gICAgICBzZXJ2aWNlOiAnZXhlY3V0ZS1hcGknLFxuICAgICAgcmVnaW9uOiBBV1NfUkVHSU9OLFxuICAgICAgc2lnblF1ZXJ5OiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgYWNjZXNzS2V5SWQ6IGNyZWRlbnRpYWxzLmFjY2Vzc0tleUlkLFxuICAgICAgc2VjcmV0QWNjZXNzS2V5OiBjcmVkZW50aWFscy5zZWNyZXRBY2Nlc3NLZXksXG4gICAgICBzZXNzaW9uVG9rZW46IGNyZWRlbnRpYWxzLnNlc3Npb25Ub2tlbixcbiAgICB9XG4gICk7XG5cbiAgY29uc3QgdXJsMiA9IGB3c3M6Ly8ke1dFQlNPQ0tFVF9VUkx9JHtwYXRofWA7XG4gIGNvbnNvbGUubG9nKCdwYXRoJywgdXJsMik7XG4gIHJldHVybiB1cmwyO1xufVxuXG5mdW5jdGlvbiBwYXJzZVVybChocmVmOiBzdHJpbmcpIHtcbiAgY29uc3QgbWF0Y2ggPSBocmVmLm1hdGNoKFxuICAgIC9eKHdzcz86KVxcL1xcLygoW146Lz8jXSopKD86OihbMC05XSspKT8pKFsvXXswLDF9W14/I10qKShcXD9bXiNdKnwpKCMuKnwpJC9cbiAgKTtcbiAgcmV0dXJuIChcbiAgICBtYXRjaCAmJiB7XG4gICAgICBocmVmLFxuICAgICAgcHJvdG9jb2w6IG1hdGNoWzFdLFxuICAgICAgaG9zdDogbWF0Y2hbMl0sXG4gICAgICBob3N0bmFtZTogbWF0Y2hbM10sXG4gICAgICBwb3J0OiBtYXRjaFs0XSxcbiAgICAgIHBhdGhuYW1lOiBtYXRjaFs1XSxcbiAgICAgIHNlYXJjaDogbWF0Y2hbNl0sXG4gICAgICBoYXNoOiBtYXRjaFs3XSxcbiAgICB9XG4gICk7XG59XG4iXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { NativeAttributeValue } from '@aws-sdk/util-dynamodb';
|
|
2
|
+
import { DynamoDBRecord } from 'aws-lambda';
|
|
3
|
+
import { SpyEvent } from './SpyEvent';
|
|
4
|
+
export interface DynamoDBSpyEvent<TData = any> extends SpyEvent {
|
|
5
|
+
spyEventType: 'DynamoDB';
|
|
6
|
+
eventName: DynamoDBRecord['eventName'];
|
|
7
|
+
newImage: TData;
|
|
8
|
+
keys: Record<string, NativeAttributeValue>;
|
|
9
|
+
oldImage?: TData;
|
|
10
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1vREJTcHlFdmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbW1vbi9zcHlFdmVudHMvRHluYW1vREJTcHlFdmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmF0aXZlQXR0cmlidXRlVmFsdWUgfSBmcm9tICdAYXdzLXNkay91dGlsLWR5bmFtb2RiJztcbmltcG9ydCB7IER5bmFtb0RCUmVjb3JkIH0gZnJvbSAnYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBTcHlFdmVudCB9IGZyb20gJy4vU3B5RXZlbnQnO1xuXG4vLyBhc2Rhc2RcbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1vREJTcHlFdmVudDxURGF0YSA9IGFueT4gZXh0ZW5kcyBTcHlFdmVudCB7XG4gIHNweUV2ZW50VHlwZTogJ0R5bmFtb0RCJztcbiAgZXZlbnROYW1lOiBEeW5hbW9EQlJlY29yZFsnZXZlbnROYW1lJ107XG4gIG5ld0ltYWdlOiBURGF0YTtcbiAga2V5czogUmVjb3JkPHN0cmluZywgTmF0aXZlQXR0cmlidXRlVmFsdWU+O1xuICBvbGRJbWFnZT86IFREYXRhO1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1vREJTcHlFdmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbW1vbi9zcHlFdmVudHMvRHluYW1vREJTcHlFdmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmF0aXZlQXR0cmlidXRlVmFsdWUgfSBmcm9tICdAYXdzLXNkay91dGlsLWR5bmFtb2RiJztcbmltcG9ydCB7IER5bmFtb0RCUmVjb3JkIH0gZnJvbSAnYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBTcHlFdmVudCB9IGZyb20gJy4vU3B5RXZlbnQnO1xuXG4vLyBhc2Rhc2RcbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1vREJTcHlFdmVudDxURGF0YSA9IGFueT4gZXh0ZW5kcyBTcHlFdmVudCB7XG4gIHNweUV2ZW50VHlwZTogJ0R5bmFtb0RCJztcbiAgZXZlbnROYW1lOiBEeW5hbW9EQlJlY29yZFsnZXZlbnROYW1lJ107XG4gIG5ld0ltYWdlOiBURGF0YTtcbiAga2V5czogUmVjb3JkPHN0cmluZywgTmF0aXZlQXR0cmlidXRlVmFsdWU+O1xuICBvbGRJbWFnZT86IFREYXRhO1xufVxuIl19
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SpyEvent } from './SpyEvent';
|
|
2
|
+
export interface EventBridgeRuleSpyEvent<MessageType = any, EventBridgeDetailType extends string = string> extends SpyEvent {
|
|
3
|
+
spyEventType: 'EventBridgeRule';
|
|
4
|
+
detail: MessageType;
|
|
5
|
+
detailType: EventBridgeDetailType;
|
|
6
|
+
source: string;
|
|
7
|
+
time: string;
|
|
8
|
+
account: string;
|
|
9
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRCcmlkZ2VSdWxlU3B5RXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21tb24vc3B5RXZlbnRzL0V2ZW50QnJpZGdlUnVsZVNweUV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTcHlFdmVudCB9IGZyb20gJy4vU3B5RXZlbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50QnJpZGdlUnVsZVNweUV2ZW50PFxuICBNZXNzYWdlVHlwZSA9IGFueSxcbiAgRXZlbnRCcmlkZ2VEZXRhaWxUeXBlIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nXG4+IGV4dGVuZHMgU3B5RXZlbnQge1xuICBzcHlFdmVudFR5cGU6ICdFdmVudEJyaWRnZVJ1bGUnO1xuICBkZXRhaWw6IE1lc3NhZ2VUeXBlO1xuICBkZXRhaWxUeXBlOiBFdmVudEJyaWRnZURldGFpbFR5cGU7XG4gIHNvdXJjZTogc3RyaW5nO1xuICB0aW1lOiBzdHJpbmc7XG4gIGFjY291bnQ6IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRCcmlkZ2VSdWxlU3B5RXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21tb24vc3B5RXZlbnRzL0V2ZW50QnJpZGdlUnVsZVNweUV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTcHlFdmVudCB9IGZyb20gJy4vU3B5RXZlbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50QnJpZGdlUnVsZVNweUV2ZW50PFxuICBNZXNzYWdlVHlwZSA9IGFueSxcbiAgRXZlbnRCcmlkZ2VEZXRhaWxUeXBlIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nXG4+IGV4dGVuZHMgU3B5RXZlbnQge1xuICBzcHlFdmVudFR5cGU6ICdFdmVudEJyaWRnZVJ1bGUnO1xuICBkZXRhaWw6IE1lc3NhZ2VUeXBlO1xuICBkZXRhaWxUeXBlOiBFdmVudEJyaWRnZURldGFpbFR5cGU7XG4gIHNvdXJjZTogc3RyaW5nO1xuICB0aW1lOiBzdHJpbmc7XG4gIGFjY291bnQ6IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SpyEvent } from './SpyEvent';
|
|
2
|
+
export interface EventBridgeSpyEvent<MessageType = any, EventBridgeDetailType extends string = string> extends SpyEvent {
|
|
3
|
+
spyEventType: 'EventBridge';
|
|
4
|
+
detail: MessageType;
|
|
5
|
+
detailType: EventBridgeDetailType;
|
|
6
|
+
source: string;
|
|
7
|
+
time: string;
|
|
8
|
+
account: string;
|
|
9
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRCcmlkZ2VTcHlFdmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbW1vbi9zcHlFdmVudHMvRXZlbnRCcmlkZ2VTcHlFdmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3B5RXZlbnQgfSBmcm9tICcuL1NweUV2ZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBFdmVudEJyaWRnZVNweUV2ZW50PFxuICBNZXNzYWdlVHlwZSA9IGFueSxcbiAgRXZlbnRCcmlkZ2VEZXRhaWxUeXBlIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nXG4+IGV4dGVuZHMgU3B5RXZlbnQge1xuICBzcHlFdmVudFR5cGU6ICdFdmVudEJyaWRnZSc7XG4gIGRldGFpbDogTWVzc2FnZVR5cGU7XG4gIGRldGFpbFR5cGU6IEV2ZW50QnJpZGdlRGV0YWlsVHlwZTtcbiAgc291cmNlOiBzdHJpbmc7XG4gIHRpbWU6IHN0cmluZztcbiAgYWNjb3VudDogc3RyaW5nO1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRCcmlkZ2VTcHlFdmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbW1vbi9zcHlFdmVudHMvRXZlbnRCcmlkZ2VTcHlFdmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3B5RXZlbnQgfSBmcm9tICcuL1NweUV2ZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBFdmVudEJyaWRnZVNweUV2ZW50PFxuICBNZXNzYWdlVHlwZSA9IGFueSxcbiAgRXZlbnRCcmlkZ2VEZXRhaWxUeXBlIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nXG4+IGV4dGVuZHMgU3B5RXZlbnQge1xuICBzcHlFdmVudFR5cGU6ICdFdmVudEJyaWRnZSc7XG4gIGRldGFpbDogTWVzc2FnZVR5cGU7XG4gIGRldGFpbFR5cGU6IEV2ZW50QnJpZGdlRGV0YWlsVHlwZTtcbiAgc291cmNlOiBzdHJpbmc7XG4gIHRpbWU6IHN0cmluZztcbiAgYWNjb3VudDogc3RyaW5nO1xufVxuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SpyEvent } from './SpyEvent';
|
|
2
|
+
export interface FunctionConsoleSpyEvent<TRequest = any> extends SpyEvent {
|
|
3
|
+
spyEventType: 'FunctionConsole';
|
|
4
|
+
request: TRequest;
|
|
5
|
+
console: {
|
|
6
|
+
type: 'log' | 'debug' | 'info' | 'error' | 'warn';
|
|
7
|
+
message?: any;
|
|
8
|
+
optionalParams: any[];
|
|
9
|
+
};
|
|
10
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnVuY3Rpb25Db25zb2xlU3B5RXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21tb24vc3B5RXZlbnRzL0Z1bmN0aW9uQ29uc29sZVNweUV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTcHlFdmVudCB9IGZyb20gJy4vU3B5RXZlbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uQ29uc29sZVNweUV2ZW50PFRSZXF1ZXN0ID0gYW55PiBleHRlbmRzIFNweUV2ZW50IHtcbiAgc3B5RXZlbnRUeXBlOiAnRnVuY3Rpb25Db25zb2xlJztcbiAgcmVxdWVzdDogVFJlcXVlc3Q7XG4gIGNvbnNvbGU6IHtcbiAgICB0eXBlOiAnbG9nJyB8ICdkZWJ1ZycgfCAnaW5mbycgfCAnZXJyb3InIHwgJ3dhcm4nO1xuICAgIG1lc3NhZ2U/OiBhbnk7XG4gICAgb3B0aW9uYWxQYXJhbXM6IGFueVtdO1xuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnVuY3Rpb25Db25zb2xlU3B5RXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21tb24vc3B5RXZlbnRzL0Z1bmN0aW9uQ29uc29sZVNweUV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTcHlFdmVudCB9IGZyb20gJy4vU3B5RXZlbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uQ29uc29sZVNweUV2ZW50PFRSZXF1ZXN0ID0gYW55PiBleHRlbmRzIFNweUV2ZW50IHtcbiAgc3B5RXZlbnRUeXBlOiAnRnVuY3Rpb25Db25zb2xlJztcbiAgcmVxdWVzdDogVFJlcXVlc3Q7XG4gIGNvbnNvbGU6IHtcbiAgICB0eXBlOiAnbG9nJyB8ICdkZWJ1ZycgfCAnaW5mbycgfCAnZXJyb3InIHwgJ3dhcm4nO1xuICAgIG1lc3NhZ2U/OiBhbnk7XG4gICAgb3B0aW9uYWxQYXJhbXM6IGFueVtdO1xuICB9O1xufVxuIl19
|