serverless-offline 8.8.1 → 9.0.0

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.
Files changed (235) hide show
  1. package/README.md +3 -3
  2. package/package.json +33 -57
  3. package/src/ServerlessOffline.js +412 -0
  4. package/src/config/commandOptions.js +155 -0
  5. package/src/config/constants.js +22 -0
  6. package/{dist → src}/config/defaultOptions.js +8 -17
  7. package/src/config/index.js +4 -0
  8. package/src/config/supportedRuntimes.js +47 -0
  9. package/src/events/authCanExecuteResource.js +35 -0
  10. package/src/events/authFunctionNameExtractor.js +75 -0
  11. package/src/events/authMatchPolicyResource.js +71 -0
  12. package/src/events/authValidateContext.js +51 -0
  13. package/src/events/http/Endpoint.js +135 -0
  14. package/src/events/http/Http.js +50 -0
  15. package/src/events/http/HttpEventDefinition.js +20 -0
  16. package/src/events/http/HttpServer.js +1277 -0
  17. package/src/events/http/OfflineEndpoint.js +33 -0
  18. package/src/events/http/authJWTSettingsExtractor.js +70 -0
  19. package/src/events/http/createAuthScheme.js +176 -0
  20. package/src/events/http/createJWTAuthScheme.js +106 -0
  21. package/src/events/http/index.js +1 -0
  22. package/src/events/http/javaHelpers.js +102 -0
  23. package/src/events/http/lambda-events/LambdaIntegrationEvent.js +57 -0
  24. package/src/events/http/lambda-events/LambdaProxyIntegrationEvent.js +233 -0
  25. package/src/events/http/lambda-events/LambdaProxyIntegrationEventV2.js +190 -0
  26. package/src/events/http/lambda-events/VelocityContext.js +147 -0
  27. package/src/events/http/lambda-events/index.js +4 -0
  28. package/src/events/http/lambda-events/renderVelocityTemplateObject.js +93 -0
  29. package/{dist → src}/events/http/parseResources.js +73 -78
  30. package/src/events/http/payloadSchemaValidator.js +13 -0
  31. package/{dist → src}/events/http/templates/offline-default.req.vm +0 -0
  32. package/{dist → src}/events/http/templates/offline-default.res.vm +0 -0
  33. package/src/events/schedule/Schedule.js +131 -0
  34. package/src/events/schedule/ScheduleEvent.js +18 -0
  35. package/src/events/schedule/ScheduleEventDefinition.js +21 -0
  36. package/src/events/schedule/index.js +1 -0
  37. package/src/events/websocket/HttpServer.js +69 -0
  38. package/src/events/websocket/WebSocket.js +52 -0
  39. package/src/events/websocket/WebSocketClients.js +462 -0
  40. package/src/events/websocket/WebSocketEventDefinition.js +18 -0
  41. package/src/events/websocket/WebSocketServer.js +73 -0
  42. package/src/events/websocket/http-routes/_catchAll/catchAllRoute.js +16 -0
  43. package/src/events/websocket/http-routes/_catchAll/index.js +1 -0
  44. package/src/events/websocket/http-routes/connections/ConnectionsController.js +28 -0
  45. package/src/events/websocket/http-routes/connections/connectionsRoutes.js +70 -0
  46. package/src/events/websocket/http-routes/connections/index.js +1 -0
  47. package/src/events/websocket/http-routes/index.js +2 -0
  48. package/src/events/websocket/index.js +1 -0
  49. package/src/events/websocket/lambda-events/WebSocketAuthorizerEvent.js +65 -0
  50. package/src/events/websocket/lambda-events/WebSocketConnectEvent.js +68 -0
  51. package/src/events/websocket/lambda-events/WebSocketDisconnectEvent.js +31 -0
  52. package/src/events/websocket/lambda-events/WebSocketEvent.js +29 -0
  53. package/src/events/websocket/lambda-events/WebSocketRequestContext.js +67 -0
  54. package/src/events/websocket/lambda-events/index.js +4 -0
  55. package/src/index.js +12 -0
  56. package/src/lambda/HttpServer.js +108 -0
  57. package/src/lambda/Lambda.js +68 -0
  58. package/src/lambda/LambdaContext.js +33 -0
  59. package/src/lambda/LambdaFunction.js +308 -0
  60. package/src/lambda/LambdaFunctionPool.js +109 -0
  61. package/src/lambda/__tests__/LambdaContext.test.js +30 -0
  62. package/src/lambda/__tests__/LambdaFunction.test.js +196 -0
  63. package/src/lambda/__tests__/fixtures/Lambda/LambdaFunctionThatReturnsJSONObject.fixture.js +47 -0
  64. package/src/lambda/__tests__/fixtures/Lambda/LambdaFunctionThatReturnsNativeString.fixture.js +46 -0
  65. package/src/lambda/__tests__/fixtures/Lambda/package.json +3 -0
  66. package/src/lambda/__tests__/fixtures/lambdaFunction.fixture.js +145 -0
  67. package/src/lambda/__tests__/fixtures/package.json +3 -0
  68. package/src/lambda/__tests__/routes/invocations/InvocationsController.test.js +42 -0
  69. package/src/lambda/handler-runner/HandlerRunner.js +136 -0
  70. package/src/lambda/handler-runner/child-process-runner/ChildProcessRunner.js +72 -0
  71. package/src/lambda/handler-runner/child-process-runner/childProcessHelper.js +42 -0
  72. package/src/lambda/handler-runner/child-process-runner/index.js +1 -0
  73. package/src/lambda/handler-runner/docker-runner/DockerContainer.js +417 -0
  74. package/src/lambda/handler-runner/docker-runner/DockerImage.js +35 -0
  75. package/src/lambda/handler-runner/docker-runner/DockerRunner.js +63 -0
  76. package/src/lambda/handler-runner/docker-runner/index.js +1 -0
  77. package/src/lambda/handler-runner/go-runner/GoRunner.js +166 -0
  78. package/src/lambda/handler-runner/go-runner/index.js +1 -0
  79. package/src/lambda/handler-runner/in-process-runner/InProcessRunner.js +125 -0
  80. package/src/lambda/handler-runner/in-process-runner/index.js +1 -0
  81. package/src/lambda/handler-runner/index.js +1 -0
  82. package/src/lambda/handler-runner/java-runner/JavaRunner.js +114 -0
  83. package/src/lambda/handler-runner/java-runner/index.js +1 -0
  84. package/src/lambda/handler-runner/python-runner/PythonRunner.js +138 -0
  85. package/src/lambda/handler-runner/python-runner/index.js +1 -0
  86. package/{dist → src}/lambda/handler-runner/python-runner/invoke.py +0 -0
  87. package/src/lambda/handler-runner/ruby-runner/RubyRunner.js +107 -0
  88. package/src/lambda/handler-runner/ruby-runner/index.js +1 -0
  89. package/{dist → src}/lambda/handler-runner/ruby-runner/invoke.rb +0 -0
  90. package/src/lambda/handler-runner/worker-thread-runner/WorkerThreadRunner.js +70 -0
  91. package/src/lambda/handler-runner/worker-thread-runner/index.js +1 -0
  92. package/src/lambda/handler-runner/worker-thread-runner/workerThreadHelper.js +29 -0
  93. package/src/lambda/index.js +1 -0
  94. package/src/lambda/routes/index.js +2 -0
  95. package/src/lambda/routes/invocations/InvocationsController.js +102 -0
  96. package/src/lambda/routes/invocations/index.js +1 -0
  97. package/src/lambda/routes/invocations/invocationsRoute.js +77 -0
  98. package/src/lambda/routes/invoke-async/InvokeAsyncController.js +20 -0
  99. package/src/lambda/routes/invoke-async/index.js +1 -0
  100. package/src/lambda/routes/invoke-async/invokeAsyncRoute.js +33 -0
  101. package/src/utils/__tests__/createUniqueId.test.js +18 -0
  102. package/src/utils/__tests__/formatToClfTime.test.js +14 -0
  103. package/src/utils/__tests__/generateHapiPath.test.js +46 -0
  104. package/src/utils/__tests__/lowerCaseKeys.test.js +30 -0
  105. package/src/utils/__tests__/parseHeaders.test.js +13 -0
  106. package/src/utils/__tests__/parseMultiValueHeaders.test.js +24 -0
  107. package/src/utils/__tests__/parseMultiValueQueryStringParameters.test.js +159 -0
  108. package/src/utils/__tests__/parseQueryStringParameters.test.js +15 -0
  109. package/src/utils/__tests__/splitHandlerPathAndName.test.js +54 -0
  110. package/src/utils/__tests__/unflatten.test.js +32 -0
  111. package/src/utils/checkDockerDaemon.js +19 -0
  112. package/src/utils/checkGoVersion.js +16 -0
  113. package/src/utils/createApiKey.js +5 -0
  114. package/src/utils/createUniqueId.js +5 -0
  115. package/src/utils/detectExecutable.js +11 -0
  116. package/{dist → src}/utils/formatToClfTime.js +6 -14
  117. package/src/utils/generateHapiPath.js +26 -0
  118. package/src/utils/getHttpApiCorsConfig.js +28 -0
  119. package/src/utils/index.js +42 -0
  120. package/src/utils/jsonPath.js +13 -0
  121. package/src/utils/logRoutes.js +64 -0
  122. package/src/utils/lowerCaseKeys.js +6 -0
  123. package/src/utils/parseHeaders.js +14 -0
  124. package/src/utils/parseMultiValueHeaders.js +27 -0
  125. package/src/utils/parseMultiValueQueryStringParameters.js +31 -0
  126. package/src/utils/parseQueryStringParameters.js +15 -0
  127. package/src/utils/resolveJoins.js +29 -0
  128. package/src/utils/splitHandlerPathAndName.js +31 -0
  129. package/src/utils/unflatten.js +11 -0
  130. package/CHANGELOG.md +0 -78
  131. package/dist/ServerlessOffline.js +0 -508
  132. package/dist/config/commandOptions.js +0 -149
  133. package/dist/config/constants.js +0 -30
  134. package/dist/config/index.js +0 -55
  135. package/dist/config/supportedRuntimes.js +0 -40
  136. package/dist/debugLog.js +0 -12
  137. package/dist/events/authCanExecuteResource.js +0 -35
  138. package/dist/events/authFunctionNameExtractor.js +0 -87
  139. package/dist/events/authMatchPolicyResource.js +0 -62
  140. package/dist/events/authValidateContext.js +0 -53
  141. package/dist/events/http/Endpoint.js +0 -173
  142. package/dist/events/http/Http.js +0 -77
  143. package/dist/events/http/HttpEventDefinition.js +0 -36
  144. package/dist/events/http/HttpServer.js +0 -1370
  145. package/dist/events/http/OfflineEndpoint.js +0 -38
  146. package/dist/events/http/authJWTSettingsExtractor.js +0 -76
  147. package/dist/events/http/createAuthScheme.js +0 -184
  148. package/dist/events/http/createJWTAuthScheme.js +0 -159
  149. package/dist/events/http/index.js +0 -15
  150. package/dist/events/http/javaHelpers.js +0 -99
  151. package/dist/events/http/lambda-events/LambdaIntegrationEvent.js +0 -87
  152. package/dist/events/http/lambda-events/LambdaProxyIntegrationEvent.js +0 -246
  153. package/dist/events/http/lambda-events/LambdaProxyIntegrationEventV2.js +0 -225
  154. package/dist/events/http/lambda-events/VelocityContext.js +0 -170
  155. package/dist/events/http/lambda-events/index.js +0 -39
  156. package/dist/events/http/lambda-events/renderVelocityTemplateObject.js +0 -111
  157. package/dist/events/http/payloadSchemaValidator.js +0 -13
  158. package/dist/events/schedule/Schedule.js +0 -183
  159. package/dist/events/schedule/ScheduleEvent.js +0 -27
  160. package/dist/events/schedule/ScheduleEventDefinition.js +0 -36
  161. package/dist/events/schedule/index.js +0 -15
  162. package/dist/events/websocket/HttpServer.js +0 -114
  163. package/dist/events/websocket/WebSocket.js +0 -78
  164. package/dist/events/websocket/WebSocketClients.js +0 -577
  165. package/dist/events/websocket/WebSocketEventDefinition.js +0 -32
  166. package/dist/events/websocket/WebSocketServer.js +0 -139
  167. package/dist/events/websocket/http-routes/_catchAll/catchAllRoute.js +0 -33
  168. package/dist/events/websocket/http-routes/_catchAll/index.js +0 -15
  169. package/dist/events/websocket/http-routes/connections/ConnectionsController.js +0 -45
  170. package/dist/events/websocket/http-routes/connections/connectionsRoutes.js +0 -95
  171. package/dist/events/websocket/http-routes/connections/index.js +0 -15
  172. package/dist/events/websocket/http-routes/index.js +0 -23
  173. package/dist/events/websocket/index.js +0 -15
  174. package/dist/events/websocket/lambda-events/WebSocketAuthorizerEvent.js +0 -99
  175. package/dist/events/websocket/lambda-events/WebSocketConnectEvent.js +0 -101
  176. package/dist/events/websocket/lambda-events/WebSocketDisconnectEvent.js +0 -47
  177. package/dist/events/websocket/lambda-events/WebSocketEvent.js +0 -54
  178. package/dist/events/websocket/lambda-events/WebSocketRequestContext.js +0 -98
  179. package/dist/events/websocket/lambda-events/index.js +0 -39
  180. package/dist/index.js +0 -15
  181. package/dist/lambda/HttpServer.js +0 -124
  182. package/dist/lambda/Lambda.js +0 -117
  183. package/dist/lambda/LambdaContext.js +0 -53
  184. package/dist/lambda/LambdaFunction.js +0 -390
  185. package/dist/lambda/LambdaFunctionPool.js +0 -127
  186. package/dist/lambda/handler-runner/HandlerRunner.js +0 -195
  187. package/dist/lambda/handler-runner/child-process-runner/ChildProcessRunner.js +0 -124
  188. package/dist/lambda/handler-runner/child-process-runner/childProcessHelper.js +0 -49
  189. package/dist/lambda/handler-runner/child-process-runner/index.js +0 -15
  190. package/dist/lambda/handler-runner/docker-runner/DockerContainer.js +0 -515
  191. package/dist/lambda/handler-runner/docker-runner/DockerImage.js +0 -67
  192. package/dist/lambda/handler-runner/docker-runner/DockerRunner.js +0 -74
  193. package/dist/lambda/handler-runner/docker-runner/index.js +0 -15
  194. package/dist/lambda/handler-runner/go-runner/GoRunner.js +0 -230
  195. package/dist/lambda/handler-runner/go-runner/index.js +0 -15
  196. package/dist/lambda/handler-runner/in-process-runner/InProcessRunner.js +0 -228
  197. package/dist/lambda/handler-runner/in-process-runner/index.js +0 -15
  198. package/dist/lambda/handler-runner/index.js +0 -15
  199. package/dist/lambda/handler-runner/java-runner/JavaRunner.js +0 -153
  200. package/dist/lambda/handler-runner/java-runner/index.js +0 -15
  201. package/dist/lambda/handler-runner/python-runner/PythonRunner.js +0 -185
  202. package/dist/lambda/handler-runner/python-runner/index.js +0 -15
  203. package/dist/lambda/handler-runner/ruby-runner/RubyRunner.js +0 -147
  204. package/dist/lambda/handler-runner/ruby-runner/index.js +0 -15
  205. package/dist/lambda/handler-runner/worker-thread-runner/WorkerThreadRunner.js +0 -92
  206. package/dist/lambda/handler-runner/worker-thread-runner/index.js +0 -15
  207. package/dist/lambda/handler-runner/worker-thread-runner/workerThreadHelper.js +0 -31
  208. package/dist/lambda/index.js +0 -15
  209. package/dist/lambda/routes/index.js +0 -23
  210. package/dist/lambda/routes/invocations/InvocationsController.js +0 -142
  211. package/dist/lambda/routes/invocations/index.js +0 -15
  212. package/dist/lambda/routes/invocations/invocationsRoute.js +0 -90
  213. package/dist/lambda/routes/invoke-async/InvokeAsyncController.js +0 -38
  214. package/dist/lambda/routes/invoke-async/index.js +0 -15
  215. package/dist/lambda/routes/invoke-async/invokeAsyncRoute.js +0 -43
  216. package/dist/main.js +0 -11
  217. package/dist/serverlessLog.js +0 -91
  218. package/dist/utils/checkDockerDaemon.js +0 -27
  219. package/dist/utils/checkGoVersion.js +0 -27
  220. package/dist/utils/createApiKey.js +0 -12
  221. package/dist/utils/createUniqueId.js +0 -14
  222. package/dist/utils/detectExecutable.js +0 -21
  223. package/dist/utils/generateHapiPath.js +0 -28
  224. package/dist/utils/getHttpApiCorsConfig.js +0 -40
  225. package/dist/utils/index.js +0 -165
  226. package/dist/utils/jsonPath.js +0 -21
  227. package/dist/utils/lowerCaseKeys.js +0 -14
  228. package/dist/utils/parseHeaders.js +0 -23
  229. package/dist/utils/parseMultiValueHeaders.js +0 -36
  230. package/dist/utils/parseMultiValueQueryStringParameters.js +0 -40
  231. package/dist/utils/parseQueryStringParameters.js +0 -26
  232. package/dist/utils/resolveJoins.js +0 -36
  233. package/dist/utils/satisfiesVersionRange.js +0 -20
  234. package/dist/utils/splitHandlerPathAndName.js +0 -37
  235. package/dist/utils/unflatten.js +0 -18
@@ -1,139 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _ws = require("ws");
9
-
10
- var _debugLog = _interopRequireDefault(require("../../debugLog.js"));
11
-
12
- var _serverlessLog = _interopRequireDefault(require("../../serverlessLog.js"));
13
-
14
- var _index = require("../../utils/index.js");
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
19
-
20
- var id = 0;
21
-
22
- function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
23
-
24
- var _options = /*#__PURE__*/_classPrivateFieldLooseKey("options");
25
-
26
- var _webSocketClients = /*#__PURE__*/_classPrivateFieldLooseKey("webSocketClients");
27
-
28
- var _connectionIds = /*#__PURE__*/_classPrivateFieldLooseKey("connectionIds");
29
-
30
- class WebSocketServer {
31
- constructor(options, webSocketClients, sharedServer, v3Utils) {
32
- Object.defineProperty(this, _options, {
33
- writable: true,
34
- value: null
35
- });
36
- Object.defineProperty(this, _webSocketClients, {
37
- writable: true,
38
- value: null
39
- });
40
- Object.defineProperty(this, _connectionIds, {
41
- writable: true,
42
- value: new Map()
43
- });
44
- _classPrivateFieldLooseBase(this, _options)[_options] = options;
45
- _classPrivateFieldLooseBase(this, _webSocketClients)[_webSocketClients] = webSocketClients;
46
-
47
- if (v3Utils) {
48
- this.log = v3Utils.log;
49
- this.progress = v3Utils.progress;
50
- this.writeText = v3Utils.writeText;
51
- this.v3Utils = v3Utils;
52
- }
53
-
54
- const server = new _ws.Server({
55
- server: sharedServer,
56
- verifyClient: ({
57
- req
58
- }, cb) => {
59
- const connectionId = (0, _index.createUniqueId)();
60
- const key = req.headers['sec-websocket-key'];
61
-
62
- if (this.log) {
63
- this.log.debug(`verifyClient:${key} ${connectionId}`);
64
- } else {
65
- (0, _debugLog.default)(`verifyClient:${key} ${connectionId}`);
66
- } // Use the websocket key to coorelate connection IDs
67
-
68
-
69
- _classPrivateFieldLooseBase(this, _connectionIds)[_connectionIds][key] = connectionId;
70
-
71
- _classPrivateFieldLooseBase(this, _webSocketClients)[_webSocketClients].verifyClient(connectionId, req).then(({
72
- verified,
73
- statusCode,
74
- message,
75
- headers
76
- }) => {
77
- try {
78
- if (!verified) {
79
- cb(false, statusCode, message, headers);
80
- return;
81
- }
82
-
83
- cb(true);
84
- } catch (e) {
85
- (0, _debugLog.default)(`Error verifying`, e);
86
- cb(false);
87
- }
88
- });
89
- }
90
- });
91
- server.on('connection', (webSocketClient, request) => {
92
- if (this.log) {
93
- this.log.notice('received connection');
94
- } else {
95
- console.log('received connection');
96
- }
97
-
98
- const {
99
- headers
100
- } = request;
101
- const key = headers['sec-websocket-key'];
102
-
103
- const connectionId = _classPrivateFieldLooseBase(this, _connectionIds)[_connectionIds][key];
104
-
105
- if (this.log) {
106
- this.log.debug(`connect:${connectionId}`);
107
- } else {
108
- (0, _debugLog.default)(`connect:${connectionId}`);
109
- }
110
-
111
- _classPrivateFieldLooseBase(this, _webSocketClients)[_webSocketClients].addClient(webSocketClient, connectionId);
112
- });
113
- }
114
-
115
- async start() {
116
- const {
117
- host,
118
- httpsProtocol,
119
- websocketPort
120
- } = _classPrivateFieldLooseBase(this, _options)[_options];
121
-
122
- if (this.log) {
123
- this.log.notice(`Offline [websocket] listening on ws${httpsProtocol ? 's' : ''}://${host}:${websocketPort}`);
124
- } else {
125
- (0, _serverlessLog.default)(`Offline [websocket] listening on ws${httpsProtocol ? 's' : ''}://${host}:${websocketPort}`);
126
- }
127
- } // no-op, we're re-using the http server
128
-
129
-
130
- stop() {}
131
-
132
- addRoute(functionKey, webSocketEvent) {
133
- _classPrivateFieldLooseBase(this, _webSocketClients)[_webSocketClients].addRoute(functionKey, webSocketEvent); // serverlessLog(`route '${route}'`)
134
-
135
- }
136
-
137
- }
138
-
139
- exports.default = WebSocketServer;
@@ -1,33 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = catchAllRoute;
7
-
8
- var _debugLog = _interopRequireDefault(require("../../../../debugLog.js"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
- function catchAllRoute(v3Utils) {
13
- const log = v3Utils && v3Utils.log;
14
- return {
15
- method: 'GET',
16
- path: '/{path*}',
17
-
18
- handler(request, h) {
19
- const {
20
- url
21
- } = request;
22
-
23
- if (log) {
24
- log.debug(`got GET to ${url}`);
25
- } else {
26
- (0, _debugLog.default)(`got GET to ${url}`);
27
- }
28
-
29
- return h.response(null).code(426);
30
- }
31
-
32
- };
33
- }
@@ -1,15 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "default", {
7
- enumerable: true,
8
- get: function () {
9
- return _catchAllRoute.default;
10
- }
11
- });
12
-
13
- var _catchAllRoute = _interopRequireDefault(require("./catchAllRoute.js"));
14
-
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -1,45 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
9
-
10
- var id = 0;
11
-
12
- function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
13
-
14
- var _webSocketClients = /*#__PURE__*/_classPrivateFieldLooseKey("webSocketClients");
15
-
16
- class ConnectionsController {
17
- constructor(webSocketClients) {
18
- Object.defineProperty(this, _webSocketClients, {
19
- writable: true,
20
- value: null
21
- });
22
- _classPrivateFieldLooseBase(this, _webSocketClients)[_webSocketClients] = webSocketClients;
23
- }
24
-
25
- send(connectionId, payload) {
26
- // TODO, is this correct?
27
- if (!payload) {
28
- return null;
29
- }
30
-
31
- const clientExisted = _classPrivateFieldLooseBase(this, _webSocketClients)[_webSocketClients].send(connectionId, // payload is a Buffer
32
- payload.toString('utf-8'));
33
-
34
- return clientExisted;
35
- }
36
-
37
- remove(connectionId) {
38
- const clientExisted = _classPrivateFieldLooseBase(this, _webSocketClients)[_webSocketClients].close(connectionId);
39
-
40
- return clientExisted;
41
- }
42
-
43
- }
44
-
45
- exports.default = ConnectionsController;
@@ -1,95 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = connectionsRoutes;
7
-
8
- var _ConnectionsController = _interopRequireDefault(require("./ConnectionsController.js"));
9
-
10
- var _debugLog = _interopRequireDefault(require("../../../../debugLog.js"));
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- function connectionsRoutes(webSocketClients, v3Utils) {
15
- const log = v3Utils && v3Utils.log;
16
- const connectionsController = new _ConnectionsController.default(webSocketClients);
17
- return [{
18
- method: 'POST',
19
- options: {
20
- payload: {
21
- parse: false
22
- }
23
- },
24
- path: '/@connections/{connectionId}',
25
-
26
- async handler(request, h) {
27
- const {
28
- params: {
29
- connectionId
30
- },
31
- payload,
32
- url
33
- } = request;
34
-
35
- if (log) {
36
- log.debug(`got POST to ${url}`);
37
- } else {
38
- (0, _debugLog.default)(`got POST to ${url}`);
39
- }
40
-
41
- const clientExisted = await connectionsController.send(connectionId, payload);
42
-
43
- if (!clientExisted) {
44
- return h.response(null).code(410);
45
- }
46
-
47
- if (log) {
48
- log.debug(`sent data to connection:${connectionId}`);
49
- } else {
50
- (0, _debugLog.default)(`sent data to connection:${connectionId}`);
51
- }
52
-
53
- return null;
54
- }
55
-
56
- }, {
57
- method: 'DELETE',
58
- options: {
59
- payload: {
60
- parse: false
61
- }
62
- },
63
- path: '/@connections/{connectionId}',
64
-
65
- handler(request, h) {
66
- const {
67
- params: {
68
- connectionId
69
- },
70
- url
71
- } = request;
72
-
73
- if (log) {
74
- log.debug(`got DELETE to ${url}`);
75
- } else {
76
- (0, _debugLog.default)(`got DELETE to ${url}`);
77
- }
78
-
79
- const clientExisted = connectionsController.remove(connectionId);
80
-
81
- if (!clientExisted) {
82
- return h.response(null).code(410);
83
- }
84
-
85
- if (log) {
86
- log.debug(`closed connection:${connectionId}`);
87
- } else {
88
- (0, _debugLog.default)(`closed connection:${connectionId}`);
89
- }
90
-
91
- return h.response(null).code(204);
92
- }
93
-
94
- }];
95
- }
@@ -1,15 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "default", {
7
- enumerable: true,
8
- get: function () {
9
- return _connectionsRoutes.default;
10
- }
11
- });
12
-
13
- var _connectionsRoutes = _interopRequireDefault(require("./connectionsRoutes.js"));
14
-
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -1,23 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "catchAllRoute", {
7
- enumerable: true,
8
- get: function () {
9
- return _index.default;
10
- }
11
- });
12
- Object.defineProperty(exports, "connectionsRoutes", {
13
- enumerable: true,
14
- get: function () {
15
- return _index2.default;
16
- }
17
- });
18
-
19
- var _index = _interopRequireDefault(require("./_catchAll/index.js"));
20
-
21
- var _index2 = _interopRequireDefault(require("./connections/index.js"));
22
-
23
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -1,15 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "default", {
7
- enumerable: true,
8
- get: function () {
9
- return _WebSocket.default;
10
- }
11
- });
12
-
13
- var _WebSocket = _interopRequireDefault(require("./WebSocket.js"));
14
-
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -1,99 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _WebSocketRequestContext = _interopRequireDefault(require("./WebSocketRequestContext.js"));
9
-
10
- var _index = require("../../../utils/index.js");
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
15
-
16
- var id = 0;
17
-
18
- function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
19
-
20
- var _connectionId = /*#__PURE__*/_classPrivateFieldLooseKey("connectionId");
21
-
22
- var _httpsProtocol = /*#__PURE__*/_classPrivateFieldLooseKey("httpsProtocol");
23
-
24
- var _rawHeaders = /*#__PURE__*/_classPrivateFieldLooseKey("rawHeaders");
25
-
26
- var _url = /*#__PURE__*/_classPrivateFieldLooseKey("url");
27
-
28
- var _websocketPort = /*#__PURE__*/_classPrivateFieldLooseKey("websocketPort");
29
-
30
- var _provider = /*#__PURE__*/_classPrivateFieldLooseKey("provider");
31
-
32
- class WebSocketAuthorizerEvent {
33
- constructor(connectionId, request, provider, options) {
34
- Object.defineProperty(this, _connectionId, {
35
- writable: true,
36
- value: null
37
- });
38
- Object.defineProperty(this, _httpsProtocol, {
39
- writable: true,
40
- value: null
41
- });
42
- Object.defineProperty(this, _rawHeaders, {
43
- writable: true,
44
- value: null
45
- });
46
- Object.defineProperty(this, _url, {
47
- writable: true,
48
- value: null
49
- });
50
- Object.defineProperty(this, _websocketPort, {
51
- writable: true,
52
- value: null
53
- });
54
- Object.defineProperty(this, _provider, {
55
- writable: true,
56
- value: null
57
- });
58
- const {
59
- httpsProtocol,
60
- websocketPort
61
- } = options;
62
- const {
63
- rawHeaders,
64
- url
65
- } = request;
66
- _classPrivateFieldLooseBase(this, _connectionId)[_connectionId] = connectionId;
67
- _classPrivateFieldLooseBase(this, _httpsProtocol)[_httpsProtocol] = httpsProtocol;
68
- _classPrivateFieldLooseBase(this, _rawHeaders)[_rawHeaders] = rawHeaders;
69
- _classPrivateFieldLooseBase(this, _url)[_url] = url;
70
- _classPrivateFieldLooseBase(this, _websocketPort)[_websocketPort] = websocketPort;
71
- _classPrivateFieldLooseBase(this, _provider)[_provider] = provider;
72
- }
73
-
74
- create() {
75
- const headers = (0, _index.parseHeaders)(_classPrivateFieldLooseBase(this, _rawHeaders)[_rawHeaders]);
76
- const multiValueHeaders = (0, _index.parseMultiValueHeaders)(_classPrivateFieldLooseBase(this, _rawHeaders)[_rawHeaders]);
77
- const multiValueQueryStringParameters = (0, _index.parseMultiValueQueryStringParameters)(_classPrivateFieldLooseBase(this, _url)[_url]);
78
- const queryStringParameters = (0, _index.parseQueryStringParameters)(_classPrivateFieldLooseBase(this, _url)[_url]);
79
- const requestContext = new _WebSocketRequestContext.default('CONNECT', '$connect', _classPrivateFieldLooseBase(this, _connectionId)[_connectionId]).create();
80
- return {
81
- type: 'REQUEST',
82
- methodArn: `arn:aws:execute-api:${_classPrivateFieldLooseBase(this, _provider)[_provider].region}:${requestContext.accountId}:${requestContext.apiId}/${requestContext.stage}/${requestContext.routeKey}`,
83
- headers,
84
- multiValueHeaders,
85
- // NOTE: multiValueQueryStringParameters and queryStringParameters
86
- // properties are only defined if they have values
87
- ...(multiValueQueryStringParameters && {
88
- multiValueQueryStringParameters
89
- }),
90
- ...(queryStringParameters && {
91
- queryStringParameters
92
- }),
93
- requestContext
94
- };
95
- }
96
-
97
- }
98
-
99
- exports.default = WebSocketAuthorizerEvent;
@@ -1,101 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _WebSocketRequestContext = _interopRequireDefault(require("./WebSocketRequestContext.js"));
9
-
10
- var _index = require("../../../utils/index.js");
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
15
-
16
- var id = 0;
17
-
18
- function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
19
-
20
- var _connectionId = /*#__PURE__*/_classPrivateFieldLooseKey("connectionId");
21
-
22
- var _httpsProtocol = /*#__PURE__*/_classPrivateFieldLooseKey("httpsProtocol");
23
-
24
- var _rawHeaders = /*#__PURE__*/_classPrivateFieldLooseKey("rawHeaders");
25
-
26
- var _url = /*#__PURE__*/_classPrivateFieldLooseKey("url");
27
-
28
- var _websocketPort = /*#__PURE__*/_classPrivateFieldLooseKey("websocketPort");
29
-
30
- class WebSocketConnectEvent {
31
- constructor(connectionId, request, options) {
32
- Object.defineProperty(this, _connectionId, {
33
- writable: true,
34
- value: null
35
- });
36
- Object.defineProperty(this, _httpsProtocol, {
37
- writable: true,
38
- value: null
39
- });
40
- Object.defineProperty(this, _rawHeaders, {
41
- writable: true,
42
- value: null
43
- });
44
- Object.defineProperty(this, _url, {
45
- writable: true,
46
- value: null
47
- });
48
- Object.defineProperty(this, _websocketPort, {
49
- writable: true,
50
- value: null
51
- });
52
- const {
53
- httpsProtocol,
54
- websocketPort
55
- } = options;
56
- const {
57
- rawHeaders,
58
- url
59
- } = request;
60
- _classPrivateFieldLooseBase(this, _connectionId)[_connectionId] = connectionId;
61
- _classPrivateFieldLooseBase(this, _httpsProtocol)[_httpsProtocol] = httpsProtocol;
62
- _classPrivateFieldLooseBase(this, _rawHeaders)[_rawHeaders] = rawHeaders;
63
- _classPrivateFieldLooseBase(this, _url)[_url] = url;
64
- _classPrivateFieldLooseBase(this, _websocketPort)[_websocketPort] = websocketPort;
65
- }
66
-
67
- create() {
68
- // const headers = {
69
- // Host: 'localhost',
70
- // 'Sec-WebSocket-Extensions': 'permessage-deflate; client_max_window_bits',
71
- // 'Sec-WebSocket-Key': createUniqueId(),
72
- // 'Sec-WebSocket-Version': '13',
73
- // 'X-Amzn-Trace-Id': `Root=${createUniqueId()}`,
74
- // 'X-Forwarded-For': '127.0.0.1',
75
- // 'X-Forwarded-Port': String(this.#websocketPort),
76
- // 'X-Forwarded-Proto': `http${this.#httpsProtocol ? 's' : ''}`,
77
- // }
78
- const headers = (0, _index.parseHeaders)(_classPrivateFieldLooseBase(this, _rawHeaders)[_rawHeaders]);
79
- const multiValueHeaders = (0, _index.parseMultiValueHeaders)(_classPrivateFieldLooseBase(this, _rawHeaders)[_rawHeaders]);
80
- const multiValueQueryStringParameters = (0, _index.parseMultiValueQueryStringParameters)(_classPrivateFieldLooseBase(this, _url)[_url]);
81
- const queryStringParameters = (0, _index.parseQueryStringParameters)(_classPrivateFieldLooseBase(this, _url)[_url]);
82
- const requestContext = new _WebSocketRequestContext.default('CONNECT', '$connect', _classPrivateFieldLooseBase(this, _connectionId)[_connectionId]).create();
83
- return {
84
- headers,
85
- isBase64Encoded: false,
86
- multiValueHeaders,
87
- // NOTE: multiValueQueryStringParameters and queryStringParameters
88
- // properties are only defined if they have values
89
- ...(multiValueQueryStringParameters && {
90
- multiValueQueryStringParameters
91
- }),
92
- ...(queryStringParameters && {
93
- queryStringParameters
94
- }),
95
- requestContext
96
- };
97
- }
98
-
99
- }
100
-
101
- exports.default = WebSocketConnectEvent;
@@ -1,47 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _WebSocketRequestContext = _interopRequireDefault(require("./WebSocketRequestContext.js"));
9
-
10
- var _index = require("../../../utils/index.js");
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
15
-
16
- var id = 0;
17
-
18
- function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
19
-
20
- var _connectionId = /*#__PURE__*/_classPrivateFieldLooseKey("connectionId");
21
-
22
- class WebSocketDisconnectEvent {
23
- constructor(connectionId) {
24
- Object.defineProperty(this, _connectionId, {
25
- writable: true,
26
- value: null
27
- });
28
- _classPrivateFieldLooseBase(this, _connectionId)[_connectionId] = connectionId;
29
- }
30
-
31
- create() {
32
- // TODO FIXME not sure where the headers come from
33
- const rawHeaders = ['Host', 'localhost', 'x-api-key', '', 'x-restapi', ''];
34
- const headers = (0, _index.parseHeaders)(rawHeaders);
35
- const multiValueHeaders = (0, _index.parseMultiValueHeaders)(rawHeaders);
36
- const requestContext = new _WebSocketRequestContext.default('DISCONNECT', '$disconnect', _classPrivateFieldLooseBase(this, _connectionId)[_connectionId]).create();
37
- return {
38
- headers,
39
- isBase64Encoded: false,
40
- multiValueHeaders,
41
- requestContext
42
- };
43
- }
44
-
45
- }
46
-
47
- exports.default = WebSocketDisconnectEvent;
@@ -1,54 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _WebSocketRequestContext = _interopRequireDefault(require("./WebSocketRequestContext.js"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
- function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
13
-
14
- var id = 0;
15
-
16
- function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
17
-
18
- var _connectionId = /*#__PURE__*/_classPrivateFieldLooseKey("connectionId");
19
-
20
- var _payload = /*#__PURE__*/_classPrivateFieldLooseKey("payload");
21
-
22
- var _route = /*#__PURE__*/_classPrivateFieldLooseKey("route");
23
-
24
- class WebSocketEvent {
25
- constructor(connectionId, route, payload) {
26
- Object.defineProperty(this, _connectionId, {
27
- writable: true,
28
- value: null
29
- });
30
- Object.defineProperty(this, _payload, {
31
- writable: true,
32
- value: null
33
- });
34
- Object.defineProperty(this, _route, {
35
- writable: true,
36
- value: null
37
- });
38
- _classPrivateFieldLooseBase(this, _connectionId)[_connectionId] = connectionId;
39
- _classPrivateFieldLooseBase(this, _payload)[_payload] = payload;
40
- _classPrivateFieldLooseBase(this, _route)[_route] = route;
41
- }
42
-
43
- create() {
44
- const requestContext = new _WebSocketRequestContext.default('MESSAGE', _classPrivateFieldLooseBase(this, _route)[_route], _classPrivateFieldLooseBase(this, _connectionId)[_connectionId]).create();
45
- return {
46
- body: _classPrivateFieldLooseBase(this, _payload)[_payload],
47
- isBase64Encoded: false,
48
- requestContext
49
- };
50
- }
51
-
52
- }
53
-
54
- exports.default = WebSocketEvent;