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,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 _invocationsRoute.default;
10
- }
11
- });
12
-
13
- var _invocationsRoute = _interopRequireDefault(require("./invocationsRoute.js"));
14
-
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -1,90 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = invocationsRoute;
7
-
8
- var _buffer = require("buffer");
9
-
10
- var _nodeFetch = require("node-fetch");
11
-
12
- var _InvocationsController = _interopRequireDefault(require("./InvocationsController.js"));
13
-
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
- const {
17
- parse
18
- } = JSON; // https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html
19
-
20
- function invocationsRoute(lambda, options, v3Utils) {
21
- const invocationsController = new _InvocationsController.default(lambda, v3Utils);
22
- return {
23
- async handler(request, h) {
24
- const {
25
- headers,
26
- params: {
27
- functionName
28
- },
29
- payload
30
- } = request;
31
-
32
- const _headers = new _nodeFetch.Headers(headers);
33
-
34
- const clientContextHeader = _headers.get('x-amz-client-context');
35
-
36
- const invocationType = _headers.get('x-amz-invocation-type'); // default is undefined
37
-
38
-
39
- let clientContext; // check client context header was set
40
-
41
- if (clientContextHeader) {
42
- const clientContextBuffer = _buffer.Buffer.from(clientContextHeader, 'base64');
43
-
44
- clientContext = parse(clientContextBuffer.toString('utf-8'));
45
- } // check if payload was set, if not, default event is an empty object
46
-
47
-
48
- const event = payload.length > 0 ? parse(payload.toString('utf-8')) : {};
49
- const invokeResults = await invocationsController.invoke(functionName, invocationType, event, clientContext); // Return with correct status codes
50
-
51
- let resultPayload = '';
52
- let statusCode = 200;
53
- let functionError = null;
54
-
55
- if (invokeResults) {
56
- const isPayloadDefined = typeof invokeResults.Payload !== 'undefined';
57
- resultPayload = isPayloadDefined ? invokeResults.Payload : '';
58
- statusCode = invokeResults.StatusCode || 200;
59
- functionError = invokeResults.FunctionError || null;
60
- }
61
-
62
- const response = h.response(resultPayload).code(statusCode);
63
-
64
- if (functionError) {
65
- // AWS Invoke documentation is wrong. The header for error type is
66
- // 'x-amzn-ErrorType' in production, not 'X-Amz-Function-Error'
67
- response.header('x-amzn-ErrorType', functionError);
68
- }
69
-
70
- if (invokeResults && invokeResults.UnhandledError) {
71
- response.header('X-Amz-Function-Error', 'Unhandled');
72
- }
73
-
74
- return response;
75
- },
76
-
77
- method: 'POST',
78
- options: {
79
- payload: {
80
- // allow: ['binary/octet-stream'],
81
- defaultContentType: 'binary/octet-stream',
82
- // request.payload will be a raw buffer
83
- parse: false
84
- },
85
- cors: options.corsConfig,
86
- tags: ['api']
87
- },
88
- path: '/2015-03-31/functions/{functionName}/invocations'
89
- };
90
- }
@@ -1,38 +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 _lambda = /*#__PURE__*/_classPrivateFieldLooseKey("lambda");
15
-
16
- class InvokeAsyncController {
17
- constructor(lambda) {
18
- Object.defineProperty(this, _lambda, {
19
- writable: true,
20
- value: null
21
- });
22
- _classPrivateFieldLooseBase(this, _lambda)[_lambda] = lambda;
23
- }
24
-
25
- async invokeAsync(functionName, event) {
26
- const lambdaFunction = _classPrivateFieldLooseBase(this, _lambda)[_lambda].getByFunctionName(functionName);
27
-
28
- lambdaFunction.setEvent(event); // don't await result!
29
-
30
- lambdaFunction.runHandler();
31
- return {
32
- StatusCode: 202
33
- };
34
- }
35
-
36
- }
37
-
38
- exports.default = InvokeAsyncController;
@@ -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 _invokeAsyncRoute.default;
10
- }
11
- });
12
-
13
- var _invokeAsyncRoute = _interopRequireDefault(require("./invokeAsyncRoute.js"));
14
-
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -1,43 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = invokeRoute;
7
-
8
- var _InvokeAsyncController = _interopRequireDefault(require("./InvokeAsyncController.js"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
- const {
13
- parse
14
- } = JSON; // https://docs.aws.amazon.com/lambda/latest/dg/API_InvokeAsync.html
15
-
16
- function invokeRoute(lambda, options) {
17
- const invokeAsyncController = new _InvokeAsyncController.default(lambda);
18
- return {
19
- handler(request) {
20
- const {
21
- params: {
22
- functionName
23
- },
24
- payload
25
- } = request;
26
- const event = parse(payload.toString('utf-8'));
27
- return invokeAsyncController.invokeAsync(functionName, event);
28
- },
29
-
30
- method: 'POST',
31
- options: {
32
- payload: {
33
- // allow: ['binary/octet-stream'],
34
- defaultContentType: 'binary/octet-stream',
35
- // request.payload will be a raw buffer
36
- parse: false
37
- },
38
- cors: options.corsConfig,
39
- tags: ['api']
40
- },
41
- path: '/2014-11-13/functions/{functionName}/invoke-async/'
42
- };
43
- }
package/dist/main.js DELETED
@@ -1,11 +0,0 @@
1
- 'use strict'; // UNCOMMENT FOR DEVELOPMENT:
2
- //
3
- // const { resolve } = require('path')
4
- //
5
- // // eslint-disable-next-line import/no-extraneous-dependencies
6
- // require('@babel/register')({
7
- // configFile: resolve(__dirname, '../babel.config.js'),
8
- // ignore: [/node_modules/],
9
- // })
10
-
11
- module.exports = require('./index.js').default;
@@ -1,91 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = serverlessLog;
7
- exports.logLayers = logLayers;
8
- exports.logRoutes = logRoutes;
9
- exports.logWarning = logWarning;
10
- exports.setLog = setLog;
11
-
12
- var _boxen = _interopRequireDefault(require("boxen"));
13
-
14
- var _chalk = _interopRequireDefault(require("chalk"));
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- const {
19
- max
20
- } = Math;
21
-
22
- const blue = _chalk.default.keyword('dodgerblue');
23
-
24
- const grey = _chalk.default.keyword('grey');
25
-
26
- const lime = _chalk.default.keyword('lime');
27
-
28
- const orange = _chalk.default.keyword('orange');
29
-
30
- const peachpuff = _chalk.default.keyword('peachpuff');
31
-
32
- const plum = _chalk.default.keyword('plum');
33
-
34
- const red = _chalk.default.keyword('red');
35
-
36
- const yellow = _chalk.default.keyword('yellow');
37
-
38
- const colorMethodMapping = new Map([['DELETE', red], ['GET', blue], // ['HEAD', ...],
39
- ['PATCH', orange], ['POST', plum], ['PUT', blue]]);
40
- let log;
41
-
42
- function serverlessLog(msg) {
43
- if (log) {
44
- log(msg, 'offline');
45
- }
46
- }
47
-
48
- function logLayers(msg) {
49
- console.log(`offline: ${blue(msg)}`);
50
- }
51
-
52
- function setLog(serverlessLogRef) {
53
- log = serverlessLogRef;
54
- } // logs based on:
55
- // https://github.com/serverless/serverless/blob/master/lib/classes/CLI.js
56
-
57
-
58
- function logRoute(method, server, path, maxLength, dimPath = false) {
59
- var _colorMethodMapping$g;
60
-
61
- const methodColor = (_colorMethodMapping$g = colorMethodMapping.get(method)) !== null && _colorMethodMapping$g !== void 0 ? _colorMethodMapping$g : peachpuff;
62
- const methodFormatted = method.padEnd(maxLength, ' ');
63
- return `${methodColor(methodFormatted)} ${yellow.dim('|')} ${grey.dim(server)}${dimPath ? grey.dim(path) : lime(path)}`;
64
- }
65
-
66
- function getMaxHttpMethodNameLength(routeInfo) {
67
- return max(...routeInfo.map(({
68
- method
69
- }) => method.length));
70
- }
71
-
72
- function logRoutes(routeInfo) {
73
- const boxenOptions = {
74
- borderColor: 'yellow',
75
- dimBorder: true,
76
- margin: 1,
77
- padding: 1
78
- };
79
- const maxLength = getMaxHttpMethodNameLength(routeInfo);
80
- console.log((0, _boxen.default)(routeInfo.map(({
81
- method,
82
- path,
83
- server,
84
- invokePath
85
- }) => // eslint-disable-next-line prefer-template
86
- logRoute(method, server, path, maxLength) + '\n' + logRoute('POST', server, invokePath, maxLength, true)).join('\n'), boxenOptions));
87
- }
88
-
89
- function logWarning(msg) {
90
- console.log(`offline: ${red(msg)}`);
91
- }
@@ -1,27 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = checkDockerDaemon;
7
-
8
- var _execa = _interopRequireDefault(require("execa"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
- async function checkDockerDaemon() {
13
- let dockerServerOS;
14
-
15
- try {
16
- const {
17
- stdout
18
- } = await (0, _execa.default)('docker', ['version', '--format', '{{.Server.Os}}']);
19
- dockerServerOS = stdout;
20
- } catch (err) {
21
- throw new Error('The docker daemon is not running.');
22
- }
23
-
24
- if (dockerServerOS !== 'linux') {
25
- throw new Error('Please switch docker daemon to linux mode.');
26
- }
27
- }
@@ -1,27 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = checkGoVersion;
7
-
8
- var _execa = _interopRequireDefault(require("execa"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
- async function checkGoVersion() {
13
- let goVersion;
14
-
15
- try {
16
- const {
17
- stdout
18
- } = await (0, _execa.default)('go', ['version']);
19
-
20
- if (stdout.match(/go1.\d+/g)) {
21
- goVersion = '1.x';
22
- }
23
- } catch (err) {// @ignore
24
- }
25
-
26
- return goVersion;
27
- }
@@ -1,12 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = createApiKey;
7
-
8
- var _crypto = require("crypto");
9
-
10
- function createApiKey() {
11
- return (0, _crypto.createHash)('md5').digest('hex');
12
- }
@@ -1,14 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = createUniqueId;
7
-
8
- var _cuid = _interopRequireDefault(require("cuid"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
- function createUniqueId() {
13
- return (0, _cuid.default)();
14
- }
@@ -1,21 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = detectExecutable;
7
-
8
- var _execa = _interopRequireDefault(require("execa"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
- async function detectExecutable(exe, versionFlag = '--version') {
13
- try {
14
- const {
15
- failed
16
- } = await (0, _execa.default)(exe, [versionFlag]);
17
- return failed === false;
18
- } catch (err) {
19
- return false;
20
- }
21
- }
@@ -1,28 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = generateHapiPath;
7
-
8
- function generateHapiPath(path, options, serverless) {
9
- // path must start with '/'
10
- let hapiPath = path.startsWith('/') ? path : `/${path}`;
11
-
12
- if (!options.noPrependStageInUrl) {
13
- const stage = options.stage || serverless.service.provider.stage; // prepend the stage to path
14
-
15
- hapiPath = `/${stage}${hapiPath}`;
16
- }
17
-
18
- if (options.prefix) {
19
- hapiPath = `/${options.prefix}${hapiPath}`;
20
- }
21
-
22
- if (hapiPath !== '/' && hapiPath.endsWith('/') && (!options.noStripTrailingSlashInUrl || hapiPath.endsWith('+}/'))) {
23
- hapiPath = hapiPath.slice(0, -1);
24
- }
25
-
26
- hapiPath = hapiPath.replace(/\+}/g, '*}');
27
- return hapiPath;
28
- }
@@ -1,40 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = getHttpApiCorsConfig;
7
-
8
- var _debugLog = _interopRequireDefault(require("../debugLog.js"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
- function getHttpApiCorsConfig(httpApiCors, {
13
- log
14
- }) {
15
- if (httpApiCors === true) {
16
- // default values that should be set by serverless
17
- // https://www.serverless.com/framework/docs/providers/aws/events/http-api/
18
- const c = {
19
- allowedOrigins: ['*'],
20
- allowedHeaders: ['Content-Type', 'X-Amz-Date', 'Authorization', 'X-Api-Key', 'X-Amz-Security-Token', 'X-Amz-User-Agent'],
21
- allowedMethods: ['OPTIONS', 'GET', 'POST', 'PUT', 'DELETE', 'PATCH']
22
- };
23
-
24
- if (log) {
25
- log.debug('Using CORS policy', c);
26
- } else {
27
- (0, _debugLog.default)('Using CORS policy', c);
28
- }
29
-
30
- return c;
31
- }
32
-
33
- if (log) {
34
- log.debug('Using CORS policy', httpApiCors);
35
- } else {
36
- (0, _debugLog.default)('Using CORS policy', httpApiCors);
37
- }
38
-
39
- return httpApiCors;
40
- }
@@ -1,165 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "checkDockerDaemon", {
7
- enumerable: true,
8
- get: function () {
9
- return _checkDockerDaemon.default;
10
- }
11
- });
12
- Object.defineProperty(exports, "checkGoVersion", {
13
- enumerable: true,
14
- get: function () {
15
- return _checkGoVersion.default;
16
- }
17
- });
18
- Object.defineProperty(exports, "createApiKey", {
19
- enumerable: true,
20
- get: function () {
21
- return _createApiKey.default;
22
- }
23
- });
24
- Object.defineProperty(exports, "createUniqueId", {
25
- enumerable: true,
26
- get: function () {
27
- return _createUniqueId.default;
28
- }
29
- });
30
- exports.detectEncoding = detectEncoding;
31
- Object.defineProperty(exports, "detectExecutable", {
32
- enumerable: true,
33
- get: function () {
34
- return _detectExecutable.default;
35
- }
36
- });
37
- Object.defineProperty(exports, "formatToClfTime", {
38
- enumerable: true,
39
- get: function () {
40
- return _formatToClfTime.default;
41
- }
42
- });
43
- Object.defineProperty(exports, "generateHapiPath", {
44
- enumerable: true,
45
- get: function () {
46
- return _generateHapiPath.default;
47
- }
48
- });
49
- Object.defineProperty(exports, "getHttpApiCorsConfig", {
50
- enumerable: true,
51
- get: function () {
52
- return _getHttpApiCorsConfig.default;
53
- }
54
- });
55
- exports.isPlainObject = isPlainObject;
56
- Object.defineProperty(exports, "jsonPath", {
57
- enumerable: true,
58
- get: function () {
59
- return _jsonPath.default;
60
- }
61
- });
62
- Object.defineProperty(exports, "lowerCaseKeys", {
63
- enumerable: true,
64
- get: function () {
65
- return _lowerCaseKeys.default;
66
- }
67
- });
68
- exports.nullIfEmpty = nullIfEmpty;
69
- Object.defineProperty(exports, "parseHeaders", {
70
- enumerable: true,
71
- get: function () {
72
- return _parseHeaders.default;
73
- }
74
- });
75
- Object.defineProperty(exports, "parseMultiValueHeaders", {
76
- enumerable: true,
77
- get: function () {
78
- return _parseMultiValueHeaders.default;
79
- }
80
- });
81
- Object.defineProperty(exports, "parseMultiValueQueryStringParameters", {
82
- enumerable: true,
83
- get: function () {
84
- return _parseMultiValueQueryStringParameters.default;
85
- }
86
- });
87
- Object.defineProperty(exports, "parseQueryStringParameters", {
88
- enumerable: true,
89
- get: function () {
90
- return _parseQueryStringParameters.default;
91
- }
92
- });
93
- Object.defineProperty(exports, "satisfiesVersionRange", {
94
- enumerable: true,
95
- get: function () {
96
- return _satisfiesVersionRange.default;
97
- }
98
- });
99
- Object.defineProperty(exports, "splitHandlerPathAndName", {
100
- enumerable: true,
101
- get: function () {
102
- return _splitHandlerPathAndName.default;
103
- }
104
- });
105
- exports.toPlainOrEmptyObject = toPlainOrEmptyObject;
106
-
107
- var _createApiKey = _interopRequireDefault(require("./createApiKey.js"));
108
-
109
- var _createUniqueId = _interopRequireDefault(require("./createUniqueId.js"));
110
-
111
- var _detectExecutable = _interopRequireDefault(require("./detectExecutable.js"));
112
-
113
- var _formatToClfTime = _interopRequireDefault(require("./formatToClfTime.js"));
114
-
115
- var _getHttpApiCorsConfig = _interopRequireDefault(require("./getHttpApiCorsConfig.js"));
116
-
117
- var _jsonPath = _interopRequireDefault(require("./jsonPath.js"));
118
-
119
- var _lowerCaseKeys = _interopRequireDefault(require("./lowerCaseKeys.js"));
120
-
121
- var _parseHeaders = _interopRequireDefault(require("./parseHeaders.js"));
122
-
123
- var _parseMultiValueHeaders = _interopRequireDefault(require("./parseMultiValueHeaders.js"));
124
-
125
- var _parseMultiValueQueryStringParameters = _interopRequireDefault(require("./parseMultiValueQueryStringParameters.js"));
126
-
127
- var _parseQueryStringParameters = _interopRequireDefault(require("./parseQueryStringParameters.js"));
128
-
129
- var _satisfiesVersionRange = _interopRequireDefault(require("./satisfiesVersionRange.js"));
130
-
131
- var _splitHandlerPathAndName = _interopRequireDefault(require("./splitHandlerPathAndName.js"));
132
-
133
- var _checkDockerDaemon = _interopRequireDefault(require("./checkDockerDaemon.js"));
134
-
135
- var _checkGoVersion = _interopRequireDefault(require("./checkGoVersion.js"));
136
-
137
- var _generateHapiPath = _interopRequireDefault(require("./generateHapiPath.js"));
138
-
139
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
140
-
141
- // export { default as baseImage } from './baseImage.js'
142
- const {
143
- isArray
144
- } = Array;
145
- const {
146
- keys
147
- } = Object; // Detect the toString encoding from the request headers content-type
148
- // enhance if further content types need to be non utf8 encoded.
149
-
150
- function detectEncoding(request) {
151
- const contentType = request.headers['content-type'];
152
- return typeof contentType === 'string' && contentType.includes('multipart/form-data') ? 'binary' : 'utf8';
153
- }
154
-
155
- function nullIfEmpty(obj) {
156
- return obj && (keys(obj).length > 0 ? obj : null);
157
- }
158
-
159
- function isPlainObject(obj) {
160
- return typeof obj === 'object' && !isArray(obj) && obj != null;
161
- }
162
-
163
- function toPlainOrEmptyObject(obj) {
164
- return typeof obj === 'object' && !isArray(obj) ? obj : {};
165
- }
@@ -1,21 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = jsonPath;
7
-
8
- var _jsonpathPlus = require("jsonpath-plus");
9
-
10
- // import debugLog from '../debugLog.js'
11
- function jsonPath(json, path) {
12
- // debugLog('Calling jsonPath:', path)
13
- // NOTE: JSONPath returns undefined if 'json' is e.g. null, undefined, string,
14
- // number (anything other than JSON)
15
- const [result] = (0, _jsonpathPlus.JSONPath)({
16
- json,
17
- path
18
- }) || []; // debugLog('jsonPath resolved:', result)
19
-
20
- return result;
21
- }
@@ -1,14 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = parseHeaders;
7
- const {
8
- entries,
9
- fromEntries
10
- } = Object; // (obj: { [string]: string }): { [Lowercase<string>]: string }
11
-
12
- function parseHeaders(obj) {
13
- return fromEntries(entries(obj).map(([k, v]) => [k.toLowerCase(), v]));
14
- }