serverless-offline 8.8.0 → 9.1.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 (233) hide show
  1. package/README.md +12 -11
  2. package/package.json +33 -58
  3. package/src/ServerlessOffline.js +409 -0
  4. package/src/config/commandOptions.js +159 -0
  5. package/src/config/constants.js +22 -0
  6. package/{dist → src}/config/defaultOptions.js +9 -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 +1242 -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 +309 -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 +167 -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/splitHandlerPathAndName.js +31 -0
  128. package/src/utils/unflatten.js +11 -0
  129. package/dist/ServerlessOffline.js +0 -514
  130. package/dist/config/commandOptions.js +0 -149
  131. package/dist/config/constants.js +0 -30
  132. package/dist/config/index.js +0 -55
  133. package/dist/config/supportedRuntimes.js +0 -40
  134. package/dist/debugLog.js +0 -12
  135. package/dist/events/authCanExecuteResource.js +0 -35
  136. package/dist/events/authFunctionNameExtractor.js +0 -87
  137. package/dist/events/authMatchPolicyResource.js +0 -62
  138. package/dist/events/authValidateContext.js +0 -53
  139. package/dist/events/http/Endpoint.js +0 -173
  140. package/dist/events/http/Http.js +0 -77
  141. package/dist/events/http/HttpEventDefinition.js +0 -36
  142. package/dist/events/http/HttpServer.js +0 -1370
  143. package/dist/events/http/OfflineEndpoint.js +0 -38
  144. package/dist/events/http/authJWTSettingsExtractor.js +0 -76
  145. package/dist/events/http/createAuthScheme.js +0 -184
  146. package/dist/events/http/createJWTAuthScheme.js +0 -159
  147. package/dist/events/http/index.js +0 -15
  148. package/dist/events/http/javaHelpers.js +0 -99
  149. package/dist/events/http/lambda-events/LambdaIntegrationEvent.js +0 -87
  150. package/dist/events/http/lambda-events/LambdaProxyIntegrationEvent.js +0 -246
  151. package/dist/events/http/lambda-events/LambdaProxyIntegrationEventV2.js +0 -225
  152. package/dist/events/http/lambda-events/VelocityContext.js +0 -170
  153. package/dist/events/http/lambda-events/index.js +0 -39
  154. package/dist/events/http/lambda-events/renderVelocityTemplateObject.js +0 -111
  155. package/dist/events/http/payloadSchemaValidator.js +0 -13
  156. package/dist/events/schedule/Schedule.js +0 -183
  157. package/dist/events/schedule/ScheduleEvent.js +0 -27
  158. package/dist/events/schedule/ScheduleEventDefinition.js +0 -36
  159. package/dist/events/schedule/index.js +0 -15
  160. package/dist/events/websocket/HttpServer.js +0 -114
  161. package/dist/events/websocket/WebSocket.js +0 -78
  162. package/dist/events/websocket/WebSocketClients.js +0 -577
  163. package/dist/events/websocket/WebSocketEventDefinition.js +0 -32
  164. package/dist/events/websocket/WebSocketServer.js +0 -139
  165. package/dist/events/websocket/http-routes/_catchAll/catchAllRoute.js +0 -33
  166. package/dist/events/websocket/http-routes/_catchAll/index.js +0 -15
  167. package/dist/events/websocket/http-routes/connections/ConnectionsController.js +0 -45
  168. package/dist/events/websocket/http-routes/connections/connectionsRoutes.js +0 -95
  169. package/dist/events/websocket/http-routes/connections/index.js +0 -15
  170. package/dist/events/websocket/http-routes/index.js +0 -23
  171. package/dist/events/websocket/index.js +0 -15
  172. package/dist/events/websocket/lambda-events/WebSocketAuthorizerEvent.js +0 -99
  173. package/dist/events/websocket/lambda-events/WebSocketConnectEvent.js +0 -101
  174. package/dist/events/websocket/lambda-events/WebSocketDisconnectEvent.js +0 -47
  175. package/dist/events/websocket/lambda-events/WebSocketEvent.js +0 -54
  176. package/dist/events/websocket/lambda-events/WebSocketRequestContext.js +0 -98
  177. package/dist/events/websocket/lambda-events/index.js +0 -39
  178. package/dist/index.js +0 -15
  179. package/dist/lambda/HttpServer.js +0 -124
  180. package/dist/lambda/Lambda.js +0 -117
  181. package/dist/lambda/LambdaContext.js +0 -53
  182. package/dist/lambda/LambdaFunction.js +0 -390
  183. package/dist/lambda/LambdaFunctionPool.js +0 -127
  184. package/dist/lambda/handler-runner/HandlerRunner.js +0 -195
  185. package/dist/lambda/handler-runner/child-process-runner/ChildProcessRunner.js +0 -124
  186. package/dist/lambda/handler-runner/child-process-runner/childProcessHelper.js +0 -49
  187. package/dist/lambda/handler-runner/child-process-runner/index.js +0 -15
  188. package/dist/lambda/handler-runner/docker-runner/DockerContainer.js +0 -515
  189. package/dist/lambda/handler-runner/docker-runner/DockerImage.js +0 -67
  190. package/dist/lambda/handler-runner/docker-runner/DockerRunner.js +0 -74
  191. package/dist/lambda/handler-runner/docker-runner/index.js +0 -15
  192. package/dist/lambda/handler-runner/go-runner/GoRunner.js +0 -230
  193. package/dist/lambda/handler-runner/go-runner/index.js +0 -15
  194. package/dist/lambda/handler-runner/in-process-runner/InProcessRunner.js +0 -228
  195. package/dist/lambda/handler-runner/in-process-runner/index.js +0 -15
  196. package/dist/lambda/handler-runner/index.js +0 -15
  197. package/dist/lambda/handler-runner/java-runner/JavaRunner.js +0 -153
  198. package/dist/lambda/handler-runner/java-runner/index.js +0 -15
  199. package/dist/lambda/handler-runner/python-runner/PythonRunner.js +0 -185
  200. package/dist/lambda/handler-runner/python-runner/index.js +0 -15
  201. package/dist/lambda/handler-runner/ruby-runner/RubyRunner.js +0 -147
  202. package/dist/lambda/handler-runner/ruby-runner/index.js +0 -15
  203. package/dist/lambda/handler-runner/worker-thread-runner/WorkerThreadRunner.js +0 -92
  204. package/dist/lambda/handler-runner/worker-thread-runner/index.js +0 -15
  205. package/dist/lambda/handler-runner/worker-thread-runner/workerThreadHelper.js +0 -31
  206. package/dist/lambda/index.js +0 -15
  207. package/dist/lambda/routes/index.js +0 -23
  208. package/dist/lambda/routes/invocations/InvocationsController.js +0 -142
  209. package/dist/lambda/routes/invocations/index.js +0 -15
  210. package/dist/lambda/routes/invocations/invocationsRoute.js +0 -90
  211. package/dist/lambda/routes/invoke-async/InvokeAsyncController.js +0 -38
  212. package/dist/lambda/routes/invoke-async/index.js +0 -15
  213. package/dist/lambda/routes/invoke-async/invokeAsyncRoute.js +0 -43
  214. package/dist/main.js +0 -11
  215. package/dist/serverlessLog.js +0 -91
  216. package/dist/utils/checkDockerDaemon.js +0 -27
  217. package/dist/utils/checkGoVersion.js +0 -27
  218. package/dist/utils/createApiKey.js +0 -12
  219. package/dist/utils/createUniqueId.js +0 -14
  220. package/dist/utils/detectExecutable.js +0 -21
  221. package/dist/utils/generateHapiPath.js +0 -28
  222. package/dist/utils/getHttpApiCorsConfig.js +0 -40
  223. package/dist/utils/index.js +0 -165
  224. package/dist/utils/jsonPath.js +0 -21
  225. package/dist/utils/lowerCaseKeys.js +0 -14
  226. package/dist/utils/parseHeaders.js +0 -23
  227. package/dist/utils/parseMultiValueHeaders.js +0 -36
  228. package/dist/utils/parseMultiValueQueryStringParameters.js +0 -40
  229. package/dist/utils/parseQueryStringParameters.js +0 -26
  230. package/dist/utils/resolveJoins.js +0 -36
  231. package/dist/utils/satisfiesVersionRange.js +0 -20
  232. package/dist/utils/splitHandlerPathAndName.js +0 -37
  233. 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;