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,85 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _renderVelocityTemplateObject = _interopRequireDefault(require("./renderVelocityTemplateObject.js"));
9
-
10
- var _VelocityContext = _interopRequireDefault(require("./VelocityContext.js"));
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
15
-
16
- var id = 0;
17
-
18
- function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
19
-
20
- const {
21
- parse
22
- } = JSON;
23
-
24
- var _path = /*#__PURE__*/_classPrivateFieldLooseKey("path");
25
-
26
- var _request = /*#__PURE__*/_classPrivateFieldLooseKey("request");
27
-
28
- var _requestTemplate = /*#__PURE__*/_classPrivateFieldLooseKey("requestTemplate");
29
-
30
- var _stage = /*#__PURE__*/_classPrivateFieldLooseKey("stage");
31
-
32
- class LambdaIntegrationEvent {
33
- constructor(request, stage, requestTemplate, path, v3Utils) {
34
- Object.defineProperty(this, _path, {
35
- writable: true,
36
- value: null
37
- });
38
- Object.defineProperty(this, _request, {
39
- writable: true,
40
- value: null
41
- });
42
- Object.defineProperty(this, _requestTemplate, {
43
- writable: true,
44
- value: null
45
- });
46
- Object.defineProperty(this, _stage, {
47
- writable: true,
48
- value: null
49
- });
50
- _classPrivateFieldLooseBase(this, _path)[_path] = path;
51
- _classPrivateFieldLooseBase(this, _request)[_request] = request;
52
- _classPrivateFieldLooseBase(this, _requestTemplate)[_requestTemplate] = requestTemplate;
53
- _classPrivateFieldLooseBase(this, _stage)[_stage] = stage;
54
- this.v3Utils = v3Utils;
55
- }
56
-
57
- create() {
58
- if (process.env.AUTHORIZER) {
59
- try {
60
- const authorizerContext = parse(process.env.AUTHORIZER);
61
-
62
- if (authorizerContext) {
63
- _classPrivateFieldLooseBase(this, _request)[_request].auth = { ..._classPrivateFieldLooseBase(this, _request)[_request].auth,
64
- credentials: {
65
- authorizer: authorizerContext
66
- }
67
- };
68
- }
69
- } catch (error) {
70
- if (this.log) {
71
- this.log.error('Could not parse process.env.AUTHORIZER, make sure it is correct JSON');
72
- } else {
73
- console.error('Serverless-offline: Could not parse process.env.AUTHORIZER, make sure it is correct JSON.');
74
- }
75
- }
76
- }
77
-
78
- const velocityContext = new _VelocityContext.default(_classPrivateFieldLooseBase(this, _request)[_request], _classPrivateFieldLooseBase(this, _stage)[_stage], _classPrivateFieldLooseBase(this, _request)[_request].payload || {}, _classPrivateFieldLooseBase(this, _path)[_path]).getContext();
79
- const event = (0, _renderVelocityTemplateObject.default)(_classPrivateFieldLooseBase(this, _requestTemplate)[_requestTemplate], velocityContext, this.v3Utils);
80
- return event;
81
- }
82
-
83
- }
84
-
85
- exports.default = LambdaIntegrationEvent;
@@ -1,244 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _buffer = require("buffer");
9
-
10
- var _jsonwebtoken = require("jsonwebtoken");
11
-
12
- var _index = require("../../../utils/index.js");
13
-
14
- function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
15
-
16
- var id = 0;
17
-
18
- function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
19
-
20
- const {
21
- byteLength
22
- } = _buffer.Buffer;
23
- const {
24
- parse
25
- } = JSON;
26
- const {
27
- assign
28
- } = Object; // https://serverless.com/framework/docs/providers/aws/events/apigateway/
29
- // https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html
30
- // http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-create-api-as-simple-proxy-for-lambda.html
31
-
32
- var _path = /*#__PURE__*/_classPrivateFieldLooseKey("path");
33
-
34
- var _routeKey = /*#__PURE__*/_classPrivateFieldLooseKey("routeKey");
35
-
36
- var _request = /*#__PURE__*/_classPrivateFieldLooseKey("request");
37
-
38
- var _stage = /*#__PURE__*/_classPrivateFieldLooseKey("stage");
39
-
40
- var _stageVariables = /*#__PURE__*/_classPrivateFieldLooseKey("stageVariables");
41
-
42
- var _additionalRequestContext = /*#__PURE__*/_classPrivateFieldLooseKey("additionalRequestContext");
43
-
44
- class LambdaProxyIntegrationEvent {
45
- constructor(request, stage, path, stageVariables, routeKey = null, additionalRequestContext = null, v3Utils) {
46
- Object.defineProperty(this, _path, {
47
- writable: true,
48
- value: null
49
- });
50
- Object.defineProperty(this, _routeKey, {
51
- writable: true,
52
- value: null
53
- });
54
- Object.defineProperty(this, _request, {
55
- writable: true,
56
- value: null
57
- });
58
- Object.defineProperty(this, _stage, {
59
- writable: true,
60
- value: null
61
- });
62
- Object.defineProperty(this, _stageVariables, {
63
- writable: true,
64
- value: null
65
- });
66
- Object.defineProperty(this, _additionalRequestContext, {
67
- writable: true,
68
- value: null
69
- });
70
- _classPrivateFieldLooseBase(this, _path)[_path] = path;
71
- _classPrivateFieldLooseBase(this, _routeKey)[_routeKey] = routeKey;
72
- _classPrivateFieldLooseBase(this, _request)[_request] = request;
73
- _classPrivateFieldLooseBase(this, _stage)[_stage] = stage;
74
- _classPrivateFieldLooseBase(this, _stageVariables)[_stageVariables] = stageVariables;
75
- _classPrivateFieldLooseBase(this, _additionalRequestContext)[_additionalRequestContext] = additionalRequestContext || {};
76
-
77
- if (v3Utils) {
78
- this.log = v3Utils.log;
79
- this.progress = v3Utils.progress;
80
- this.writeText = v3Utils.writeText;
81
- this.v3Utils = v3Utils;
82
- }
83
- }
84
-
85
- create() {
86
- const authPrincipalId = _classPrivateFieldLooseBase(this, _request)[_request].auth && _classPrivateFieldLooseBase(this, _request)[_request].auth.credentials && _classPrivateFieldLooseBase(this, _request)[_request].auth.credentials.principalId;
87
-
88
- const authContext = _classPrivateFieldLooseBase(this, _request)[_request].auth && _classPrivateFieldLooseBase(this, _request)[_request].auth.credentials && _classPrivateFieldLooseBase(this, _request)[_request].auth.credentials.context || {};
89
- let authAuthorizer;
90
-
91
- if (process.env.AUTHORIZER) {
92
- try {
93
- authAuthorizer = parse(process.env.AUTHORIZER);
94
- } catch (error) {
95
- if (this.log) {
96
- this.log.error('Could not parse process.env.AUTHORIZER, make sure it is correct JSON');
97
- } else {
98
- console.error('Serverless-offline: Could not parse process.env.AUTHORIZER, make sure it is correct JSON.');
99
- }
100
- }
101
- }
102
-
103
- let body = _classPrivateFieldLooseBase(this, _request)[_request].payload;
104
-
105
- const {
106
- rawHeaders,
107
- url
108
- } = _classPrivateFieldLooseBase(this, _request)[_request].raw.req; // NOTE FIXME request.raw.req.rawHeaders can only be null for testing (hapi shot inject())
109
-
110
-
111
- const headers = (0, _index.parseHeaders)(rawHeaders || []) || {};
112
-
113
- if (headers['sls-offline-authorizer-override']) {
114
- try {
115
- authAuthorizer = parse(headers['sls-offline-authorizer-override']);
116
- } catch (error) {
117
- if (this.log) {
118
- this.log.error('Could not parse header sls-offline-authorizer-override, make sure it is correct JSON');
119
- } else {
120
- console.error('Serverless-offline: Could not parse header sls-offline-authorizer-override make sure it is correct JSON.');
121
- }
122
- }
123
- }
124
-
125
- if (body) {
126
- if (typeof body !== 'string') {
127
- // this.#request.payload is NOT the same as the rawPayload
128
- body = _classPrivateFieldLooseBase(this, _request)[_request].rawPayload;
129
- }
130
-
131
- if (!headers['Content-Length'] && !headers['content-length'] && !headers['Content-length'] && (typeof body === 'string' || body instanceof _buffer.Buffer || body instanceof ArrayBuffer)) {
132
- headers['Content-Length'] = String(byteLength(body));
133
- } // Set a default Content-Type if not provided.
134
-
135
-
136
- if (!headers['Content-Type'] && !headers['content-type'] && !headers['Content-type']) {
137
- headers['Content-Type'] = 'application/json';
138
- }
139
- } else if (typeof body === 'undefined' || body === '') {
140
- body = null;
141
- } // clone own props
142
-
143
-
144
- const pathParams = { ..._classPrivateFieldLooseBase(this, _request)[_request].params
145
- };
146
- let token = headers.Authorization || headers.authorization;
147
-
148
- if (token && token.split(' ')[0] === 'Bearer') {
149
- ;
150
- [, token] = token.split(' ');
151
- }
152
-
153
- let claims;
154
- let scopes;
155
-
156
- if (token) {
157
- try {
158
- claims = (0, _jsonwebtoken.decode)(token) || undefined;
159
-
160
- if (claims && claims.scope) {
161
- scopes = claims.scope.split(' '); // In AWS HTTP Api the scope property is removed from the decoded JWT
162
- // I'm leaving this property because I'm not sure how all of the authorizers
163
- // for AWS REST Api handle JWT.
164
- // claims = { ...claims }
165
- // delete claims.scope
166
- }
167
- } catch (err) {// Do nothing
168
- }
169
- }
170
-
171
- const {
172
- headers: _headers,
173
- info: {
174
- received,
175
- remoteAddress
176
- },
177
- method,
178
- route
179
- } = _classPrivateFieldLooseBase(this, _request)[_request];
180
-
181
- const httpMethod = method.toUpperCase();
182
- const requestTime = (0, _index.formatToClfTime)(received);
183
- const requestTimeEpoch = received;
184
- const resource = _classPrivateFieldLooseBase(this, _routeKey)[_routeKey] || route.path.replace(`/${_classPrivateFieldLooseBase(this, _stage)[_stage]}`, '');
185
- return {
186
- body,
187
- headers,
188
- httpMethod,
189
- isBase64Encoded: false,
190
- // TODO hook up
191
- multiValueHeaders: (0, _index.parseMultiValueHeaders)( // NOTE FIXME request.raw.req.rawHeaders can only be null for testing (hapi shot inject())
192
- rawHeaders || []),
193
- multiValueQueryStringParameters: (0, _index.parseMultiValueQueryStringParameters)(url),
194
- path: _classPrivateFieldLooseBase(this, _path)[_path],
195
- pathParameters: (0, _index.nullIfEmpty)(pathParams),
196
- queryStringParameters: (0, _index.parseQueryStringParameters)(url),
197
- requestContext: {
198
- accountId: 'offlineContext_accountId',
199
- apiId: 'offlineContext_apiId',
200
- authorizer: authAuthorizer || assign(authContext, {
201
- claims,
202
- scopes,
203
- // 'principalId' should have higher priority
204
- principalId: authPrincipalId || process.env.PRINCIPAL_ID || 'offlineContext_authorizer_principalId' // See #24
205
-
206
- }),
207
- domainName: 'offlineContext_domainName',
208
- domainPrefix: 'offlineContext_domainPrefix',
209
- extendedRequestId: (0, _index.createUniqueId)(),
210
- httpMethod,
211
- identity: {
212
- accessKey: null,
213
- accountId: process.env.SLS_ACCOUNT_ID || 'offlineContext_accountId',
214
- apiKey: process.env.SLS_API_KEY || 'offlineContext_apiKey',
215
- apiKeyId: process.env.SLS_API_KEY_ID || 'offlineContext_apiKeyId',
216
- caller: process.env.SLS_CALLER || 'offlineContext_caller',
217
- cognitoAuthenticationProvider: _headers['cognito-authentication-provider'] || process.env.SLS_COGNITO_AUTHENTICATION_PROVIDER || 'offlineContext_cognitoAuthenticationProvider',
218
- cognitoAuthenticationType: process.env.SLS_COGNITO_AUTHENTICATION_TYPE || 'offlineContext_cognitoAuthenticationType',
219
- cognitoIdentityId: _headers['cognito-identity-id'] || process.env.SLS_COGNITO_IDENTITY_ID || 'offlineContext_cognitoIdentityId',
220
- cognitoIdentityPoolId: process.env.SLS_COGNITO_IDENTITY_POOL_ID || 'offlineContext_cognitoIdentityPoolId',
221
- principalOrgId: null,
222
- sourceIp: remoteAddress,
223
- user: 'offlineContext_user',
224
- userAgent: _headers['user-agent'] || '',
225
- userArn: 'offlineContext_userArn'
226
- },
227
- operationName: _classPrivateFieldLooseBase(this, _additionalRequestContext)[_additionalRequestContext].operationName,
228
- path: _classPrivateFieldLooseBase(this, _path)[_path],
229
- protocol: 'HTTP/1.1',
230
- requestId: (0, _index.createUniqueId)(),
231
- requestTime,
232
- requestTimeEpoch,
233
- resourceId: 'offlineContext_resourceId',
234
- resourcePath: route.path,
235
- stage: _classPrivateFieldLooseBase(this, _stage)[_stage]
236
- },
237
- resource,
238
- stageVariables: _classPrivateFieldLooseBase(this, _stageVariables)[_stageVariables]
239
- };
240
- }
241
-
242
- }
243
-
244
- exports.default = LambdaProxyIntegrationEvent;
@@ -1,221 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _buffer = require("buffer");
9
-
10
- var _jsonwebtoken = require("jsonwebtoken");
11
-
12
- var _index = require("../../../utils/index.js");
13
-
14
- function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
15
-
16
- var id = 0;
17
-
18
- function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
19
-
20
- const {
21
- byteLength
22
- } = _buffer.Buffer;
23
- const {
24
- parse
25
- } = JSON;
26
- const {
27
- assign
28
- } = Object; // https://www.serverless.com/framework/docs/providers/aws/events/http-api/
29
- // https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html
30
-
31
- var _routeKey = /*#__PURE__*/_classPrivateFieldLooseKey("routeKey");
32
-
33
- var _request = /*#__PURE__*/_classPrivateFieldLooseKey("request");
34
-
35
- var _stage = /*#__PURE__*/_classPrivateFieldLooseKey("stage");
36
-
37
- var _stageVariables = /*#__PURE__*/_classPrivateFieldLooseKey("stageVariables");
38
-
39
- var _additionalRequestContext = /*#__PURE__*/_classPrivateFieldLooseKey("additionalRequestContext");
40
-
41
- class LambdaProxyIntegrationEventV2 {
42
- constructor(request, stage, routeKey, stageVariables, additionalRequestContext, v3Utils) {
43
- Object.defineProperty(this, _routeKey, {
44
- writable: true,
45
- value: null
46
- });
47
- Object.defineProperty(this, _request, {
48
- writable: true,
49
- value: null
50
- });
51
- Object.defineProperty(this, _stage, {
52
- writable: true,
53
- value: null
54
- });
55
- Object.defineProperty(this, _stageVariables, {
56
- writable: true,
57
- value: null
58
- });
59
- Object.defineProperty(this, _additionalRequestContext, {
60
- writable: true,
61
- value: null
62
- });
63
- _classPrivateFieldLooseBase(this, _routeKey)[_routeKey] = routeKey;
64
- _classPrivateFieldLooseBase(this, _request)[_request] = request;
65
- _classPrivateFieldLooseBase(this, _stage)[_stage] = stage;
66
- _classPrivateFieldLooseBase(this, _stageVariables)[_stageVariables] = stageVariables;
67
- _classPrivateFieldLooseBase(this, _additionalRequestContext)[_additionalRequestContext] = additionalRequestContext || {};
68
-
69
- if (v3Utils) {
70
- this.log = v3Utils.log;
71
- this.progress = v3Utils.progress;
72
- this.writeText = v3Utils.writeText;
73
- this.v3Utils = v3Utils;
74
- }
75
- }
76
-
77
- create() {
78
- const authContext = _classPrivateFieldLooseBase(this, _request)[_request].auth && _classPrivateFieldLooseBase(this, _request)[_request].auth.credentials && _classPrivateFieldLooseBase(this, _request)[_request].auth.credentials.context || {};
79
- let authAuthorizer;
80
-
81
- if (process.env.AUTHORIZER) {
82
- try {
83
- authAuthorizer = parse(process.env.AUTHORIZER);
84
- } catch (error) {
85
- if (this.log) {
86
- this.log.error('Could not parse process.env.AUTHORIZER, make sure it is correct JSON');
87
- } else {
88
- console.error('Serverless-offline: Could not parse process.env.AUTHORIZER, make sure it is correct JSON.');
89
- }
90
- }
91
- }
92
-
93
- let body = _classPrivateFieldLooseBase(this, _request)[_request].payload;
94
-
95
- const {
96
- rawHeaders
97
- } = _classPrivateFieldLooseBase(this, _request)[_request].raw.req; // NOTE FIXME request.raw.req.rawHeaders can only be null for testing (hapi shot inject())
98
-
99
-
100
- const headers = (0, _index.parseHeaders)(rawHeaders || []) || {};
101
-
102
- if (headers['sls-offline-authorizer-override']) {
103
- try {
104
- authAuthorizer = parse(headers['sls-offline-authorizer-override']);
105
- } catch (error) {
106
- if (this.log) {
107
- this.log.error('Could not parse header sls-offline-authorizer-override, make sure it is correct JSON');
108
- } else {
109
- console.error('Serverless-offline: Could not parse header sls-offline-authorizer-override make sure it is correct JSON.');
110
- }
111
- }
112
- }
113
-
114
- if (body) {
115
- if (typeof body !== 'string') {
116
- // this.#request.payload is NOT the same as the rawPayload
117
- body = _classPrivateFieldLooseBase(this, _request)[_request].rawPayload;
118
- }
119
-
120
- if (!headers['Content-Length'] && !headers['content-length'] && !headers['Content-length'] && (typeof body === 'string' || body instanceof _buffer.Buffer || body instanceof ArrayBuffer)) {
121
- headers['Content-Length'] = String(byteLength(body));
122
- } // Set a default Content-Type if not provided.
123
-
124
-
125
- if (!headers['Content-Type'] && !headers['content-type'] && !headers['Content-type']) {
126
- headers['Content-Type'] = 'application/json';
127
- }
128
- } else if (typeof body === 'undefined' || body === '') {
129
- body = null;
130
- } // clone own props
131
-
132
-
133
- const pathParams = { ..._classPrivateFieldLooseBase(this, _request)[_request].params
134
- };
135
- let token = headers.Authorization || headers.authorization;
136
-
137
- if (token && token.split(' ')[0] === 'Bearer') {
138
- ;
139
- [, token] = token.split(' ');
140
- }
141
-
142
- let claims;
143
- let scopes;
144
-
145
- if (token) {
146
- try {
147
- claims = (0, _jsonwebtoken.decode)(token) || undefined;
148
-
149
- if (claims && claims.scope) {
150
- scopes = claims.scope.split(' '); // In AWS HTTP Api the scope property is removed from the decoded JWT
151
- // I'm leaving this property because I'm not sure how all of the authorizers
152
- // for AWS REST Api handle JWT.
153
- // claims = { ...claims }
154
- // delete claims.scope
155
- }
156
- } catch (err) {// Do nothing
157
- }
158
- }
159
-
160
- const {
161
- headers: _headers,
162
- info: {
163
- received,
164
- remoteAddress
165
- },
166
- method
167
- } = _classPrivateFieldLooseBase(this, _request)[_request];
168
-
169
- const httpMethod = method.toUpperCase();
170
- const requestTime = (0, _index.formatToClfTime)(received);
171
- const requestTimeEpoch = received;
172
- const cookies = Object.entries(_classPrivateFieldLooseBase(this, _request)[_request].state).flatMap(([key, value]) => {
173
- if (Array.isArray(value)) {
174
- return value.map(v => `${key}=${v}`);
175
- }
176
-
177
- return `${key}=${value}`;
178
- });
179
- return {
180
- version: '2.0',
181
- routeKey: _classPrivateFieldLooseBase(this, _routeKey)[_routeKey],
182
- rawPath: _classPrivateFieldLooseBase(this, _request)[_request].url.pathname,
183
- rawQueryString: _classPrivateFieldLooseBase(this, _request)[_request].url.searchParams.toString(),
184
- cookies,
185
- headers,
186
- queryStringParameters: _classPrivateFieldLooseBase(this, _request)[_request].url.search ? Object.fromEntries(Array.from(_classPrivateFieldLooseBase(this, _request)[_request].url.searchParams)) : null,
187
- requestContext: {
188
- accountId: 'offlineContext_accountId',
189
- apiId: 'offlineContext_apiId',
190
- authorizer: authAuthorizer || assign(authContext, {
191
- jwt: {
192
- claims,
193
- scopes
194
- }
195
- }),
196
- domainName: 'offlineContext_domainName',
197
- domainPrefix: 'offlineContext_domainPrefix',
198
- http: {
199
- method: httpMethod,
200
- path: _classPrivateFieldLooseBase(this, _request)[_request].url.pathname,
201
- protocol: 'HTTP/1.1',
202
- sourceIp: remoteAddress,
203
- userAgent: _headers['user-agent'] || ''
204
- },
205
- operationName: _classPrivateFieldLooseBase(this, _additionalRequestContext)[_additionalRequestContext].operationName,
206
- requestId: 'offlineContext_resourceId',
207
- routeKey: _classPrivateFieldLooseBase(this, _routeKey)[_routeKey],
208
- stage: _classPrivateFieldLooseBase(this, _stage)[_stage],
209
- time: requestTime,
210
- timeEpoch: requestTimeEpoch
211
- },
212
- body,
213
- pathParameters: (0, _index.nullIfEmpty)(pathParams),
214
- isBase64Encoded: false,
215
- stageVariables: _classPrivateFieldLooseBase(this, _stageVariables)[_stageVariables]
216
- };
217
- }
218
-
219
- }
220
-
221
- exports.default = LambdaProxyIntegrationEventV2;