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,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,44 +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
- var _serverlessLog = require("../serverlessLog.js");
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- function getHttpApiCorsConfig(httpApiCors, {
15
- log
16
- }) {
17
- if (httpApiCors === true) {
18
- // default values that should be set by serverless
19
- // https://www.serverless.com/framework/docs/providers/aws/events/http-api/
20
- const c = {
21
- allowedOrigins: ['*'],
22
- allowedHeaders: ['Content-Type', 'X-Amz-Date', 'Authorization', 'X-Api-Key', 'X-Amz-Security-Token', 'X-Amz-User-Agent'],
23
- allowedMethods: ['OPTIONS', 'GET', 'POST', 'PUT', 'DELETE', 'PATCH']
24
- };
25
-
26
- if (log) {
27
- log.warning(c);
28
- } else {
29
- (0, _debugLog.default)(c);
30
- (0, _serverlessLog.logWarning)(c);
31
- }
32
-
33
- return c;
34
- }
35
-
36
- if (log) {
37
- log.warning(httpApiCors);
38
- } else {
39
- (0, _debugLog.default)(httpApiCors);
40
- (0, _serverlessLog.logWarning)(httpApiCors);
41
- }
42
-
43
- return httpApiCors;
44
- }
@@ -1,158 +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
- exports.nullIfEmpty = nullIfEmpty;
63
- Object.defineProperty(exports, "parseHeaders", {
64
- enumerable: true,
65
- get: function () {
66
- return _parseHeaders.default;
67
- }
68
- });
69
- Object.defineProperty(exports, "parseMultiValueHeaders", {
70
- enumerable: true,
71
- get: function () {
72
- return _parseMultiValueHeaders.default;
73
- }
74
- });
75
- Object.defineProperty(exports, "parseMultiValueQueryStringParameters", {
76
- enumerable: true,
77
- get: function () {
78
- return _parseMultiValueQueryStringParameters.default;
79
- }
80
- });
81
- Object.defineProperty(exports, "parseQueryStringParameters", {
82
- enumerable: true,
83
- get: function () {
84
- return _parseQueryStringParameters.default;
85
- }
86
- });
87
- Object.defineProperty(exports, "satisfiesVersionRange", {
88
- enumerable: true,
89
- get: function () {
90
- return _satisfiesVersionRange.default;
91
- }
92
- });
93
- Object.defineProperty(exports, "splitHandlerPathAndName", {
94
- enumerable: true,
95
- get: function () {
96
- return _splitHandlerPathAndName.default;
97
- }
98
- });
99
- exports.toPlainOrEmptyObject = toPlainOrEmptyObject;
100
-
101
- var _createApiKey = _interopRequireDefault(require("./createApiKey.js"));
102
-
103
- var _createUniqueId = _interopRequireDefault(require("./createUniqueId.js"));
104
-
105
- var _detectExecutable = _interopRequireDefault(require("./detectExecutable.js"));
106
-
107
- var _formatToClfTime = _interopRequireDefault(require("./formatToClfTime.js"));
108
-
109
- var _getHttpApiCorsConfig = _interopRequireDefault(require("./getHttpApiCorsConfig.js"));
110
-
111
- var _jsonPath = _interopRequireDefault(require("./jsonPath.js"));
112
-
113
- var _parseHeaders = _interopRequireDefault(require("./parseHeaders.js"));
114
-
115
- var _parseMultiValueHeaders = _interopRequireDefault(require("./parseMultiValueHeaders.js"));
116
-
117
- var _parseMultiValueQueryStringParameters = _interopRequireDefault(require("./parseMultiValueQueryStringParameters.js"));
118
-
119
- var _parseQueryStringParameters = _interopRequireDefault(require("./parseQueryStringParameters.js"));
120
-
121
- var _satisfiesVersionRange = _interopRequireDefault(require("./satisfiesVersionRange.js"));
122
-
123
- var _splitHandlerPathAndName = _interopRequireDefault(require("./splitHandlerPathAndName.js"));
124
-
125
- var _checkDockerDaemon = _interopRequireDefault(require("./checkDockerDaemon.js"));
126
-
127
- var _checkGoVersion = _interopRequireDefault(require("./checkGoVersion.js"));
128
-
129
- var _generateHapiPath = _interopRequireDefault(require("./generateHapiPath.js"));
130
-
131
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
132
-
133
- const {
134
- isArray
135
- } = Array;
136
- const {
137
- keys
138
- } = Object;
139
-
140
- // export { default as baseImage } from './baseImage.js'
141
- // Detect the toString encoding from the request headers content-type
142
- // enhance if further content types need to be non utf8 encoded.
143
- function detectEncoding(request) {
144
- const contentType = request.headers['content-type'];
145
- return typeof contentType === 'string' && contentType.includes('multipart/form-data') ? 'binary' : 'utf8';
146
- }
147
-
148
- function nullIfEmpty(obj) {
149
- return obj && (keys(obj).length > 0 ? obj : null);
150
- }
151
-
152
- function isPlainObject(obj) {
153
- return typeof obj === 'object' && !isArray(obj) && obj != null;
154
- }
155
-
156
- function toPlainOrEmptyObject(obj) {
157
- return typeof obj === 'object' && !isArray(obj) ? obj : {};
158
- }
@@ -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,23 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = parseHeaders;
7
-
8
- var _unflatten = _interopRequireDefault(require("./unflatten.js"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
- const {
13
- fromEntries
14
- } = Object; // (rawHeaders: Array<string>): { [string]: string }
15
-
16
- function parseHeaders(rawHeaders) {
17
- if (rawHeaders.length === 0) {
18
- return null;
19
- }
20
-
21
- const unflattened = (0, _unflatten.default)(rawHeaders, 2);
22
- return fromEntries(unflattened);
23
- }