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,98 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _index = require("../../../utils/index.js");
9
-
10
- function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
11
-
12
- var id = 0;
13
-
14
- function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
15
-
16
- const {
17
- now
18
- } = Date;
19
- const connectedAt = new Map();
20
-
21
- var _connectionId = /*#__PURE__*/_classPrivateFieldLooseKey("connectionId");
22
-
23
- var _eventType = /*#__PURE__*/_classPrivateFieldLooseKey("eventType");
24
-
25
- var _route = /*#__PURE__*/_classPrivateFieldLooseKey("route");
26
-
27
- var _connectedAt = /*#__PURE__*/_classPrivateFieldLooseKey("connectedAt");
28
-
29
- class WebSocketRequestContext {
30
- constructor(eventType, route, connectionId) {
31
- Object.defineProperty(this, _connectionId, {
32
- writable: true,
33
- value: null
34
- });
35
- Object.defineProperty(this, _eventType, {
36
- writable: true,
37
- value: null
38
- });
39
- Object.defineProperty(this, _route, {
40
- writable: true,
41
- value: null
42
- });
43
- Object.defineProperty(this, _connectedAt, {
44
- writable: true,
45
- value: null
46
- });
47
- _classPrivateFieldLooseBase(this, _connectionId)[_connectionId] = connectionId;
48
- _classPrivateFieldLooseBase(this, _eventType)[_eventType] = eventType;
49
- _classPrivateFieldLooseBase(this, _route)[_route] = route;
50
-
51
- if (eventType === 'CONNECT') {
52
- connectedAt.set(connectionId, now());
53
- }
54
-
55
- _classPrivateFieldLooseBase(this, _connectedAt)[_connectedAt] = connectedAt.get(connectionId);
56
-
57
- if (eventType === 'DISCONNECT') {
58
- connectedAt.delete(connectionId);
59
- }
60
- }
61
-
62
- create() {
63
- const timeEpoch = now();
64
- const requestContext = {
65
- apiId: 'private',
66
- connectedAt: _classPrivateFieldLooseBase(this, _connectedAt)[_connectedAt],
67
- connectionId: _classPrivateFieldLooseBase(this, _connectionId)[_connectionId],
68
- domainName: 'localhost',
69
- eventType: _classPrivateFieldLooseBase(this, _eventType)[_eventType],
70
- extendedRequestId: (0, _index.createUniqueId)(),
71
- identity: {
72
- accessKey: null,
73
- accountId: null,
74
- caller: null,
75
- cognitoAuthenticationProvider: null,
76
- cognitoAuthenticationType: null,
77
- cognitoIdentityId: null,
78
- cognitoIdentityPoolId: null,
79
- principalOrgId: null,
80
- sourceIp: '127.0.0.1',
81
- user: null,
82
- userAgent: null,
83
- userArn: null
84
- },
85
- messageDirection: 'IN',
86
- messageId: (0, _index.createUniqueId)(),
87
- requestId: (0, _index.createUniqueId)(),
88
- requestTime: (0, _index.formatToClfTime)(timeEpoch),
89
- requestTimeEpoch: timeEpoch,
90
- routeKey: _classPrivateFieldLooseBase(this, _route)[_route],
91
- stage: 'local'
92
- };
93
- return requestContext;
94
- }
95
-
96
- }
97
-
98
- exports.default = WebSocketRequestContext;
@@ -1,39 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "WebSocketAuthorizerEvent", {
7
- enumerable: true,
8
- get: function () {
9
- return _WebSocketAuthorizerEvent.default;
10
- }
11
- });
12
- Object.defineProperty(exports, "WebSocketConnectEvent", {
13
- enumerable: true,
14
- get: function () {
15
- return _WebSocketConnectEvent.default;
16
- }
17
- });
18
- Object.defineProperty(exports, "WebSocketDisconnectEvent", {
19
- enumerable: true,
20
- get: function () {
21
- return _WebSocketDisconnectEvent.default;
22
- }
23
- });
24
- Object.defineProperty(exports, "WebSocketEvent", {
25
- enumerable: true,
26
- get: function () {
27
- return _WebSocketEvent.default;
28
- }
29
- });
30
-
31
- var _WebSocketConnectEvent = _interopRequireDefault(require("./WebSocketConnectEvent.js"));
32
-
33
- var _WebSocketDisconnectEvent = _interopRequireDefault(require("./WebSocketDisconnectEvent.js"));
34
-
35
- var _WebSocketEvent = _interopRequireDefault(require("./WebSocketEvent.js"));
36
-
37
- var _WebSocketAuthorizerEvent = _interopRequireDefault(require("./WebSocketAuthorizerEvent.js"));
38
-
39
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
package/dist/index.js DELETED
@@ -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 _ServerlessOffline.default;
10
- }
11
- });
12
-
13
- var _ServerlessOffline = _interopRequireDefault(require("./ServerlessOffline.js"));
14
-
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -1,124 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _hapi = require("@hapi/hapi");
9
-
10
- var _process = require("process");
11
-
12
- var _index = require("./routes/index.js");
13
-
14
- var _serverlessLog = _interopRequireDefault(require("../serverlessLog.js"));
15
-
16
- var _debugLog = _interopRequireDefault(require("../debugLog.js"));
17
-
18
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
- function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
21
-
22
- var id = 0;
23
-
24
- function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
25
-
26
- var _lambda = /*#__PURE__*/_classPrivateFieldLooseKey("lambda");
27
-
28
- var _options = /*#__PURE__*/_classPrivateFieldLooseKey("options");
29
-
30
- var _server = /*#__PURE__*/_classPrivateFieldLooseKey("server");
31
-
32
- class HttpServer {
33
- constructor(options, lambda, v3Utils) {
34
- Object.defineProperty(this, _lambda, {
35
- writable: true,
36
- value: null
37
- });
38
- Object.defineProperty(this, _options, {
39
- writable: true,
40
- value: null
41
- });
42
- Object.defineProperty(this, _server, {
43
- writable: true,
44
- value: null
45
- });
46
- _classPrivateFieldLooseBase(this, _lambda)[_lambda] = lambda;
47
- _classPrivateFieldLooseBase(this, _options)[_options] = options;
48
- const {
49
- host,
50
- lambdaPort
51
- } = options;
52
- const serverOptions = {
53
- host,
54
- port: lambdaPort
55
- };
56
-
57
- if (v3Utils) {
58
- this.log = v3Utils.log;
59
- this.progress = v3Utils.progress;
60
- this.writeText = v3Utils.writeText;
61
- this.v3Utils = v3Utils;
62
- }
63
-
64
- _classPrivateFieldLooseBase(this, _server)[_server] = new _hapi.Server(serverOptions);
65
- }
66
-
67
- async start() {
68
- // add routes
69
- const _invocationsRoute = (0, _index.invocationsRoute)(_classPrivateFieldLooseBase(this, _lambda)[_lambda], _classPrivateFieldLooseBase(this, _options)[_options], this.v3Utils);
70
-
71
- const _invokeAsyncRoute = (0, _index.invokeAsyncRoute)(_classPrivateFieldLooseBase(this, _lambda)[_lambda], _classPrivateFieldLooseBase(this, _options)[_options]);
72
-
73
- _classPrivateFieldLooseBase(this, _server)[_server].route([_invokeAsyncRoute, _invocationsRoute]);
74
-
75
- const {
76
- host,
77
- httpsProtocol,
78
- lambdaPort
79
- } = _classPrivateFieldLooseBase(this, _options)[_options];
80
-
81
- try {
82
- await _classPrivateFieldLooseBase(this, _server)[_server].start();
83
- } catch (err) {
84
- if (this.log) {
85
- this.log.error(`Unexpected error while starting serverless-offline lambda server on port ${lambdaPort}:`, err);
86
- } else {
87
- console.error(`Unexpected error while starting serverless-offline lambda server on port ${lambdaPort}:`, err);
88
- }
89
-
90
- (0, _process.exit)(1);
91
- }
92
-
93
- if (this.log) {
94
- this.log.notice(`Offline [http for lambda] listening on http${httpsProtocol ? 's' : ''}://${host}:${lambdaPort}`);
95
- } else {
96
- (0, _serverlessLog.default)(`Offline [http for lambda] listening on http${httpsProtocol ? 's' : ''}://${host}:${lambdaPort}`);
97
- } // Print all the invocation routes to debug
98
-
99
-
100
- const basePath = `http${httpsProtocol ? 's' : ''}://${host}:${lambdaPort}`;
101
-
102
- const funcNamePairs = _classPrivateFieldLooseBase(this, _lambda)[_lambda].listFunctionNamePairs();
103
-
104
- if (this.log) {
105
- this.log.notice([`Function names exposed for local invocation by aws-sdk:`, ..._classPrivateFieldLooseBase(this, _lambda)[_lambda].listFunctionNames().map(functionName => ` * ${funcNamePairs[functionName]}: ${functionName}`)].join('\n'));
106
- this.log.debug([`Lambda Invocation Routes (for AWS SDK or AWS CLI):`, ..._classPrivateFieldLooseBase(this, _lambda)[_lambda].listFunctionNames().map(functionName => ` * ${_invocationsRoute.method} ${basePath}${_invocationsRoute.path.replace('{functionName}', functionName)}`)].join('\n'));
107
- this.log.debug([`Lambda Async Invocation Routes (for AWS SDK or AWS CLI):`, ..._classPrivateFieldLooseBase(this, _lambda)[_lambda].listFunctionNames().map(functionName => ` * ${_invokeAsyncRoute.method} ${basePath}${_invokeAsyncRoute.path.replace('{functionName}', functionName)}`)].join('\n'));
108
- } else {
109
- (0, _serverlessLog.default)([`Function names exposed for local invocation by aws-sdk:`, ..._classPrivateFieldLooseBase(this, _lambda)[_lambda].listFunctionNames().map(functionName => ` * ${funcNamePairs[functionName]}: ${functionName}`)].join('\n'));
110
- (0, _debugLog.default)([`Lambda Invocation Routes (for AWS SDK or AWS CLI):`, ..._classPrivateFieldLooseBase(this, _lambda)[_lambda].listFunctionNames().map(functionName => ` * ${_invocationsRoute.method} ${basePath}${_invocationsRoute.path.replace('{functionName}', functionName)}`)].join('\n'));
111
- (0, _debugLog.default)([`Lambda Async Invocation Routes (for AWS SDK or AWS CLI):`, ..._classPrivateFieldLooseBase(this, _lambda)[_lambda].listFunctionNames().map(functionName => ` * ${_invokeAsyncRoute.method} ${basePath}${_invokeAsyncRoute.path.replace('{functionName}', functionName)}`)].join('\n'));
112
- }
113
- } // stops the server
114
-
115
-
116
- stop(timeout) {
117
- return _classPrivateFieldLooseBase(this, _server)[_server].stop({
118
- timeout
119
- });
120
- }
121
-
122
- }
123
-
124
- exports.default = HttpServer;
@@ -1,117 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _HttpServer = _interopRequireDefault(require("./HttpServer.js"));
9
-
10
- var _LambdaFunctionPool = _interopRequireDefault(require("./LambdaFunctionPool.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
- const {
21
- assign
22
- } = Object;
23
-
24
- var _httpServer = /*#__PURE__*/_classPrivateFieldLooseKey("httpServer");
25
-
26
- var _lambdas = /*#__PURE__*/_classPrivateFieldLooseKey("lambdas");
27
-
28
- var _lambdaFunctionNamesKeys = /*#__PURE__*/_classPrivateFieldLooseKey("lambdaFunctionNamesKeys");
29
-
30
- var _lambdaFunctionPool = /*#__PURE__*/_classPrivateFieldLooseKey("lambdaFunctionPool");
31
-
32
- class Lambda {
33
- constructor(serverless, options, v3Utils) {
34
- Object.defineProperty(this, _httpServer, {
35
- writable: true,
36
- value: null
37
- });
38
- Object.defineProperty(this, _lambdas, {
39
- writable: true,
40
- value: new Map()
41
- });
42
- Object.defineProperty(this, _lambdaFunctionNamesKeys, {
43
- writable: true,
44
- value: new Map()
45
- });
46
- Object.defineProperty(this, _lambdaFunctionPool, {
47
- writable: true,
48
- value: null
49
- });
50
-
51
- if (v3Utils) {
52
- this.log = v3Utils.log;
53
- this.progress = v3Utils.progress;
54
- this.writeText = v3Utils.writeText;
55
- this.v3Utils = v3Utils;
56
- }
57
-
58
- _classPrivateFieldLooseBase(this, _httpServer)[_httpServer] = new _HttpServer.default(options, this, v3Utils);
59
- _classPrivateFieldLooseBase(this, _lambdaFunctionPool)[_lambdaFunctionPool] = new _LambdaFunctionPool.default(serverless, options, v3Utils);
60
- }
61
-
62
- _create(functionKey, functionDefinition) {
63
- _classPrivateFieldLooseBase(this, _lambdas)[_lambdas].set(functionKey, functionDefinition);
64
-
65
- _classPrivateFieldLooseBase(this, _lambdaFunctionNamesKeys)[_lambdaFunctionNamesKeys].set(functionDefinition.name, functionKey);
66
- }
67
-
68
- create(lambdas) {
69
- lambdas.forEach(({
70
- functionKey,
71
- functionDefinition
72
- }) => {
73
- this._create(functionKey, functionDefinition);
74
- });
75
- }
76
-
77
- get(functionKey) {
78
- const functionDefinition = _classPrivateFieldLooseBase(this, _lambdas)[_lambdas].get(functionKey);
79
-
80
- return _classPrivateFieldLooseBase(this, _lambdaFunctionPool)[_lambdaFunctionPool].get(functionKey, functionDefinition);
81
- }
82
-
83
- getByFunctionName(functionName) {
84
- const functionKey = _classPrivateFieldLooseBase(this, _lambdaFunctionNamesKeys)[_lambdaFunctionNamesKeys].get(functionName);
85
-
86
- return this.get(functionKey);
87
- }
88
-
89
- listFunctionNames() {
90
- const functionNames = Array.from(_classPrivateFieldLooseBase(this, _lambdaFunctionNamesKeys)[_lambdaFunctionNamesKeys].keys());
91
- return functionNames;
92
- }
93
-
94
- listFunctionNamePairs() {
95
- const funcNamePairs = Array.from(_classPrivateFieldLooseBase(this, _lambdaFunctionNamesKeys)[_lambdaFunctionNamesKeys]).reduce((obj, [key, value]) => assign(obj, {
96
- [key]: value
97
- }), // Be careful! Maps can have non-String keys; object literals can't.
98
- {});
99
- return funcNamePairs;
100
- }
101
-
102
- start() {
103
- return _classPrivateFieldLooseBase(this, _httpServer)[_httpServer].start();
104
- } // stops the server
105
-
106
-
107
- stop(timeout) {
108
- return _classPrivateFieldLooseBase(this, _httpServer)[_httpServer].stop(timeout);
109
- }
110
-
111
- cleanup() {
112
- return _classPrivateFieldLooseBase(this, _lambdaFunctionPool)[_lambdaFunctionPool].cleanup();
113
- }
114
-
115
- }
116
-
117
- exports.default = Lambda;
@@ -1,53 +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 _context = /*#__PURE__*/_classPrivateFieldLooseKey("context");
15
-
16
- // class for creating a LambdaContext
17
- // http://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-context.html
18
- class LambdaContext {
19
- constructor(functionName, memorySize) {
20
- Object.defineProperty(this, _context, {
21
- writable: true,
22
- value: null
23
- });
24
- _classPrivateFieldLooseBase(this, _context)[_context] = {
25
- awsRequestId: undefined,
26
- callbackWaitsForEmptyEventLoop: true,
27
- clientContext: undefined,
28
- functionName,
29
- functionVersion: `$LATEST`,
30
- identity: undefined,
31
- invokedFunctionArn: `offline_invokedFunctionArn_for_${functionName}`,
32
- logGroupName: `offline_logGroupName_for_${functionName}`,
33
- logStreamName: `offline_logStreamName_for_${functionName}`,
34
- memoryLimitInMB: String(memorySize) // NOTE: string in AWS
35
-
36
- };
37
- }
38
-
39
- setClientContext(clientContext) {
40
- _classPrivateFieldLooseBase(this, _context)[_context].clientContext = clientContext;
41
- }
42
-
43
- setRequestId(requestId) {
44
- _classPrivateFieldLooseBase(this, _context)[_context].awsRequestId = requestId;
45
- }
46
-
47
- create() {
48
- return _classPrivateFieldLooseBase(this, _context)[_context];
49
- }
50
-
51
- }
52
-
53
- exports.default = LambdaContext;