serverless-offline 8.7.0 → 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 (234) hide show
  1. package/README.md +91 -95
  2. package/package.json +41 -69
  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/dist/ServerlessOffline.js +0 -507
  131. package/dist/checkEngine.js +0 -21
  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 -10
  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/http/Endpoint.js +0 -171
  141. package/dist/events/http/Http.js +0 -77
  142. package/dist/events/http/HttpEventDefinition.js +0 -36
  143. package/dist/events/http/HttpServer.js +0 -1363
  144. package/dist/events/http/OfflineEndpoint.js +0 -40
  145. package/dist/events/http/authJWTSettingsExtractor.js +0 -76
  146. package/dist/events/http/authValidateContext.js +0 -48
  147. package/dist/events/http/createAuthScheme.js +0 -184
  148. package/dist/events/http/createJWTAuthScheme.js +0 -155
  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 -85
  152. package/dist/events/http/lambda-events/LambdaProxyIntegrationEvent.js +0 -244
  153. package/dist/events/http/lambda-events/LambdaProxyIntegrationEventV2.js +0 -221
  154. package/dist/events/http/lambda-events/VelocityContext.js +0 -168
  155. package/dist/events/http/lambda-events/index.js +0 -39
  156. package/dist/events/http/lambda-events/renderVelocityTemplateObject.js +0 -108
  157. package/dist/events/http/payloadSchemaValidator.js +0 -13
  158. package/dist/events/schedule/Schedule.js +0 -182
  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 -112
  163. package/dist/events/websocket/WebSocket.js +0 -78
  164. package/dist/events/websocket/WebSocketClients.js +0 -550
  165. package/dist/events/websocket/WebSocketEventDefinition.js +0 -32
  166. package/dist/events/websocket/WebSocketServer.js +0 -140
  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 -19
  181. package/dist/lambda/HttpServer.js +0 -122
  182. package/dist/lambda/Lambda.js +0 -113
  183. package/dist/lambda/LambdaContext.js +0 -53
  184. package/dist/lambda/LambdaFunction.js +0 -391
  185. package/dist/lambda/LambdaFunctionPool.js +0 -127
  186. package/dist/lambda/handler-runner/HandlerRunner.js +0 -223
  187. package/dist/lambda/handler-runner/child-process-runner/ChildProcessRunner.js +0 -132
  188. package/dist/lambda/handler-runner/child-process-runner/childProcessHelper.js +0 -40
  189. package/dist/lambda/handler-runner/child-process-runner/index.js +0 -15
  190. package/dist/lambda/handler-runner/docker-runner/DockerContainer.js +0 -517
  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 -211
  195. package/dist/lambda/handler-runner/go-runner/index.js +0 -15
  196. package/dist/lambda/handler-runner/in-process-runner/InProcessRunner.js +0 -234
  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 -151
  200. package/dist/lambda/handler-runner/java-runner/index.js +0 -15
  201. package/dist/lambda/handler-runner/python-runner/PythonRunner.js +0 -180
  202. package/dist/lambda/handler-runner/python-runner/index.js +0 -15
  203. package/dist/lambda/handler-runner/ruby-runner/RubyRunner.js +0 -148
  204. package/dist/lambda/handler-runner/ruby-runner/index.js +0 -15
  205. package/dist/lambda/handler-runner/worker-thread-runner/WorkerThreadRunner.js +0 -94
  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 -30
  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 -44
  225. package/dist/utils/index.js +0 -158
  226. package/dist/utils/jsonPath.js +0 -21
  227. package/dist/utils/parseHeaders.js +0 -23
  228. package/dist/utils/parseMultiValueHeaders.js +0 -36
  229. package/dist/utils/parseMultiValueQueryStringParameters.js +0 -40
  230. package/dist/utils/parseQueryStringParameters.js +0 -26
  231. package/dist/utils/resolveJoins.js +0 -34
  232. package/dist/utils/satisfiesVersionRange.js +0 -20
  233. package/dist/utils/splitHandlerPathAndName.js +0 -41
  234. 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,19 +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
- require("./checkEngine.js");
14
-
15
- require("object.fromentries/auto.js");
16
-
17
- var _ServerlessOffline = _interopRequireDefault(require("./ServerlessOffline.js"));
18
-
19
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -1,122 +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 _index = require("./routes/index.js");
11
-
12
- var _serverlessLog = _interopRequireDefault(require("../serverlessLog.js"));
13
-
14
- var _debugLog = _interopRequireDefault(require("../debugLog.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 _lambda = /*#__PURE__*/_classPrivateFieldLooseKey("lambda");
25
-
26
- var _options = /*#__PURE__*/_classPrivateFieldLooseKey("options");
27
-
28
- var _server = /*#__PURE__*/_classPrivateFieldLooseKey("server");
29
-
30
- class HttpServer {
31
- constructor(options, lambda, v3Utils) {
32
- Object.defineProperty(this, _lambda, {
33
- writable: true,
34
- value: null
35
- });
36
- Object.defineProperty(this, _options, {
37
- writable: true,
38
- value: null
39
- });
40
- Object.defineProperty(this, _server, {
41
- writable: true,
42
- value: null
43
- });
44
- _classPrivateFieldLooseBase(this, _lambda)[_lambda] = lambda;
45
- _classPrivateFieldLooseBase(this, _options)[_options] = options;
46
- const {
47
- host,
48
- lambdaPort
49
- } = options;
50
- const serverOptions = {
51
- host,
52
- port: lambdaPort
53
- };
54
-
55
- if (v3Utils) {
56
- this.log = v3Utils.log;
57
- this.progress = v3Utils.progress;
58
- this.writeText = v3Utils.writeText;
59
- this.v3Utils = v3Utils;
60
- }
61
-
62
- _classPrivateFieldLooseBase(this, _server)[_server] = new _hapi.Server(serverOptions);
63
- }
64
-
65
- async start() {
66
- // add routes
67
- const _invocationsRoute = (0, _index.invocationsRoute)(_classPrivateFieldLooseBase(this, _lambda)[_lambda], _classPrivateFieldLooseBase(this, _options)[_options], this.v3Utils);
68
-
69
- const _invokeAsyncRoute = (0, _index.invokeAsyncRoute)(_classPrivateFieldLooseBase(this, _lambda)[_lambda], _classPrivateFieldLooseBase(this, _options)[_options]);
70
-
71
- _classPrivateFieldLooseBase(this, _server)[_server].route([_invokeAsyncRoute, _invocationsRoute]);
72
-
73
- const {
74
- host,
75
- httpsProtocol,
76
- lambdaPort
77
- } = _classPrivateFieldLooseBase(this, _options)[_options];
78
-
79
- try {
80
- await _classPrivateFieldLooseBase(this, _server)[_server].start();
81
- } catch (err) {
82
- if (this.log) {
83
- this.log.error(`Unexpected error while starting serverless-offline lambda server on port ${lambdaPort}:`, err);
84
- } else {
85
- console.error(`Unexpected error while starting serverless-offline lambda server on port ${lambdaPort}:`, err);
86
- }
87
-
88
- process.exit(1);
89
- }
90
-
91
- if (this.log) {
92
- this.log.notice(`Offline [http for lambda] listening on http${httpsProtocol ? 's' : ''}://${host}:${lambdaPort}`);
93
- } else {
94
- (0, _serverlessLog.default)(`Offline [http for lambda] listening on http${httpsProtocol ? 's' : ''}://${host}:${lambdaPort}`);
95
- } // Print all the invocation routes to debug
96
-
97
-
98
- const basePath = `http${httpsProtocol ? 's' : ''}://${host}:${lambdaPort}`;
99
-
100
- const funcNamePairs = _classPrivateFieldLooseBase(this, _lambda)[_lambda].listFunctionNamePairs();
101
-
102
- if (this.log) {
103
- this.log.notice([`Function names exposed for local invocation by aws-sdk:`, ..._classPrivateFieldLooseBase(this, _lambda)[_lambda].listFunctionNames().map(functionName => ` * ${funcNamePairs[functionName]}: ${functionName}`)].join('\n'));
104
- 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'));
105
- 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'));
106
- } else {
107
- (0, _serverlessLog.default)([`Function names exposed for local invocation by aws-sdk:`, ..._classPrivateFieldLooseBase(this, _lambda)[_lambda].listFunctionNames().map(functionName => ` * ${funcNamePairs[functionName]}: ${functionName}`)].join('\n'));
108
- (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'));
109
- (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'));
110
- }
111
- } // stops the server
112
-
113
-
114
- stop(timeout) {
115
- return _classPrivateFieldLooseBase(this, _server)[_server].stop({
116
- timeout
117
- });
118
- }
119
-
120
- }
121
-
122
- exports.default = HttpServer;
@@ -1,113 +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
- var _httpServer = /*#__PURE__*/_classPrivateFieldLooseKey("httpServer");
21
-
22
- var _lambdas = /*#__PURE__*/_classPrivateFieldLooseKey("lambdas");
23
-
24
- var _lambdaFunctionNamesKeys = /*#__PURE__*/_classPrivateFieldLooseKey("lambdaFunctionNamesKeys");
25
-
26
- var _lambdaFunctionPool = /*#__PURE__*/_classPrivateFieldLooseKey("lambdaFunctionPool");
27
-
28
- class Lambda {
29
- constructor(serverless, options, v3Utils) {
30
- Object.defineProperty(this, _httpServer, {
31
- writable: true,
32
- value: null
33
- });
34
- Object.defineProperty(this, _lambdas, {
35
- writable: true,
36
- value: new Map()
37
- });
38
- Object.defineProperty(this, _lambdaFunctionNamesKeys, {
39
- writable: true,
40
- value: new Map()
41
- });
42
- Object.defineProperty(this, _lambdaFunctionPool, {
43
- writable: true,
44
- value: null
45
- });
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
- _classPrivateFieldLooseBase(this, _httpServer)[_httpServer] = new _HttpServer.default(options, this, v3Utils);
55
- _classPrivateFieldLooseBase(this, _lambdaFunctionPool)[_lambdaFunctionPool] = new _LambdaFunctionPool.default(serverless, options, v3Utils);
56
- }
57
-
58
- _create(functionKey, functionDefinition) {
59
- _classPrivateFieldLooseBase(this, _lambdas)[_lambdas].set(functionKey, functionDefinition);
60
-
61
- _classPrivateFieldLooseBase(this, _lambdaFunctionNamesKeys)[_lambdaFunctionNamesKeys].set(functionDefinition.name, functionKey);
62
- }
63
-
64
- create(lambdas) {
65
- lambdas.forEach(({
66
- functionKey,
67
- functionDefinition
68
- }) => {
69
- this._create(functionKey, functionDefinition);
70
- });
71
- }
72
-
73
- get(functionKey) {
74
- const functionDefinition = _classPrivateFieldLooseBase(this, _lambdas)[_lambdas].get(functionKey);
75
-
76
- return _classPrivateFieldLooseBase(this, _lambdaFunctionPool)[_lambdaFunctionPool].get(functionKey, functionDefinition);
77
- }
78
-
79
- getByFunctionName(functionName) {
80
- const functionKey = _classPrivateFieldLooseBase(this, _lambdaFunctionNamesKeys)[_lambdaFunctionNamesKeys].get(functionName);
81
-
82
- return this.get(functionKey);
83
- }
84
-
85
- listFunctionNames() {
86
- const functionNames = Array.from(_classPrivateFieldLooseBase(this, _lambdaFunctionNamesKeys)[_lambdaFunctionNamesKeys].keys());
87
- return functionNames;
88
- }
89
-
90
- listFunctionNamePairs() {
91
- const funcNamePairs = Array.from(_classPrivateFieldLooseBase(this, _lambdaFunctionNamesKeys)[_lambdaFunctionNamesKeys]).reduce((obj, [key, value]) => Object.assign(obj, {
92
- [key]: value
93
- }), // Be careful! Maps can have non-String keys; object literals can't.
94
- {});
95
- return funcNamePairs;
96
- }
97
-
98
- start() {
99
- return _classPrivateFieldLooseBase(this, _httpServer)[_httpServer].start();
100
- } // stops the server
101
-
102
-
103
- stop(timeout) {
104
- return _classPrivateFieldLooseBase(this, _httpServer)[_httpServer].stop(timeout);
105
- }
106
-
107
- cleanup() {
108
- return _classPrivateFieldLooseBase(this, _lambdaFunctionPool)[_lambdaFunctionPool].cleanup();
109
- }
110
-
111
- }
112
-
113
- 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;