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,168 +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 _jsStringEscape = _interopRequireDefault(require("js-string-escape"));
11
-
12
- var _jsonwebtoken = require("jsonwebtoken");
13
-
14
- var _index = require("../../../utils/index.js");
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
19
-
20
- var id = 0;
21
-
22
- function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
23
-
24
- const {
25
- parse,
26
- stringify
27
- } = JSON;
28
- const {
29
- assign,
30
- entries,
31
- fromEntries
32
- } = Object;
33
-
34
- function escapeJavaScript(x) {
35
- if (typeof x === 'string') {
36
- return (0, _jsStringEscape.default)(x).replace(/\\n/g, '\n'); // See #26,
37
- }
38
-
39
- if ((0, _index.isPlainObject)(x)) {
40
- const result = fromEntries(entries(x).map(([key, value]) => [key, (0, _jsStringEscape.default)(value)]));
41
- return stringify(result); // Is this really how APIG does it?
42
- }
43
-
44
- if (typeof x.toString === 'function') {
45
- return escapeJavaScript(x.toString());
46
- }
47
-
48
- return x;
49
- }
50
- /*
51
- Returns a context object that mocks APIG mapping template reference
52
- http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html
53
- */
54
-
55
-
56
- var _path = /*#__PURE__*/_classPrivateFieldLooseKey("path");
57
-
58
- var _payload = /*#__PURE__*/_classPrivateFieldLooseKey("payload");
59
-
60
- var _request = /*#__PURE__*/_classPrivateFieldLooseKey("request");
61
-
62
- var _stage = /*#__PURE__*/_classPrivateFieldLooseKey("stage");
63
-
64
- class VelocityContext {
65
- constructor(request, stage, payload, path) {
66
- Object.defineProperty(this, _path, {
67
- writable: true,
68
- value: null
69
- });
70
- Object.defineProperty(this, _payload, {
71
- writable: true,
72
- value: null
73
- });
74
- Object.defineProperty(this, _request, {
75
- writable: true,
76
- value: null
77
- });
78
- Object.defineProperty(this, _stage, {
79
- writable: true,
80
- value: null
81
- });
82
- _classPrivateFieldLooseBase(this, _path)[_path] = path;
83
- _classPrivateFieldLooseBase(this, _payload)[_payload] = payload;
84
- _classPrivateFieldLooseBase(this, _request)[_request] = request;
85
- _classPrivateFieldLooseBase(this, _stage)[_stage] = stage;
86
- }
87
-
88
- getContext() {
89
- const path = x => (0, _index.jsonPath)(_classPrivateFieldLooseBase(this, _payload)[_payload], x);
90
-
91
- const authPrincipalId = _classPrivateFieldLooseBase(this, _request)[_request].auth && _classPrivateFieldLooseBase(this, _request)[_request].auth.credentials && _classPrivateFieldLooseBase(this, _request)[_request].auth.credentials.principalId;
92
-
93
- let authorizer = _classPrivateFieldLooseBase(this, _request)[_request].auth && _classPrivateFieldLooseBase(this, _request)[_request].auth.credentials && _classPrivateFieldLooseBase(this, _request)[_request].auth.credentials.authorizer; // NOTE FIXME request.raw.req.rawHeaders can only be null for testing (hapi shot inject())
94
-
95
-
96
- const headers = (0, _index.parseHeaders)(_classPrivateFieldLooseBase(this, _request)[_request].raw.req.rawHeaders || []);
97
- let token = headers && (headers.Authorization || headers.authorization);
98
-
99
- if (token && token.split(' ')[0] === 'Bearer') {
100
- ;
101
- [, token] = token.split(' ');
102
- }
103
-
104
- if (!authorizer) authorizer = {};
105
- authorizer.principalId = authPrincipalId || process.env.PRINCIPAL_ID || 'offlineContext_authorizer_principalId'; // See #24
106
-
107
- if (token) {
108
- try {
109
- const claims = (0, _jsonwebtoken.decode)(token) || undefined;
110
-
111
- if (claims) {
112
- assign(authorizer, {
113
- claims
114
- });
115
- }
116
- } catch (err) {// Nothing
117
- }
118
- }
119
-
120
- return {
121
- context: {
122
- apiId: 'offlineContext_apiId',
123
- authorizer,
124
- httpMethod: _classPrivateFieldLooseBase(this, _request)[_request].method.toUpperCase(),
125
- identity: {
126
- accountId: 'offlineContext_accountId',
127
- apiKey: 'offlineContext_apiKey',
128
- apiKeyId: 'offlineContext_apiKeyId',
129
- caller: 'offlineContext_caller',
130
- cognitoAuthenticationProvider: 'offlineContext_cognitoAuthenticationProvider',
131
- cognitoAuthenticationType: 'offlineContext_cognitoAuthenticationType',
132
- sourceIp: _classPrivateFieldLooseBase(this, _request)[_request].info.remoteAddress,
133
- user: 'offlineContext_user',
134
- userAgent: _classPrivateFieldLooseBase(this, _request)[_request].headers['user-agent'] || '',
135
- userArn: 'offlineContext_userArn'
136
- },
137
- requestId: (0, _index.createUniqueId)(),
138
- resourceId: 'offlineContext_resourceId',
139
- resourcePath: _classPrivateFieldLooseBase(this, _path)[_path],
140
- stage: _classPrivateFieldLooseBase(this, _stage)[_stage]
141
- },
142
- input: {
143
- body: _classPrivateFieldLooseBase(this, _payload)[_payload],
144
- // Not a string yet, todo
145
- json: x => stringify(path(x)),
146
- params: x => typeof x === 'string' ? _classPrivateFieldLooseBase(this, _request)[_request].params[x] || _classPrivateFieldLooseBase(this, _request)[_request].query[x] || headers[x] : {
147
- header: headers,
148
- path: { ..._classPrivateFieldLooseBase(this, _request)[_request].params
149
- },
150
- querystring: { ..._classPrivateFieldLooseBase(this, _request)[_request].query
151
- }
152
- },
153
- path
154
- },
155
- util: {
156
- base64Decode: x => _buffer.Buffer.from(x.toString(), 'base64').toString('binary'),
157
- base64Encode: x => _buffer.Buffer.from(x.toString(), 'binary').toString('base64'),
158
- escapeJavaScript,
159
- parseJson: parse,
160
- urlDecode: x => decodeURIComponent(x.replace(/\+/g, ' ')),
161
- urlEncode: encodeURI
162
- }
163
- };
164
- }
165
-
166
- }
167
-
168
- exports.default = VelocityContext;
@@ -1,39 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "LambdaIntegrationEvent", {
7
- enumerable: true,
8
- get: function () {
9
- return _LambdaIntegrationEvent.default;
10
- }
11
- });
12
- Object.defineProperty(exports, "LambdaProxyIntegrationEvent", {
13
- enumerable: true,
14
- get: function () {
15
- return _LambdaProxyIntegrationEvent.default;
16
- }
17
- });
18
- Object.defineProperty(exports, "VelocityContext", {
19
- enumerable: true,
20
- get: function () {
21
- return _VelocityContext.default;
22
- }
23
- });
24
- Object.defineProperty(exports, "renderVelocityTemplateObject", {
25
- enumerable: true,
26
- get: function () {
27
- return _renderVelocityTemplateObject.default;
28
- }
29
- });
30
-
31
- var _LambdaIntegrationEvent = _interopRequireDefault(require("./LambdaIntegrationEvent.js"));
32
-
33
- var _LambdaProxyIntegrationEvent = _interopRequireDefault(require("./LambdaProxyIntegrationEvent.js"));
34
-
35
- var _renderVelocityTemplateObject = _interopRequireDefault(require("./renderVelocityTemplateObject.js"));
36
-
37
- var _VelocityContext = _interopRequireDefault(require("./VelocityContext.js"));
38
-
39
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -1,108 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = renderVelocityTemplateObject;
7
-
8
- var _velocityjs = require("velocityjs");
9
-
10
- var _javaHelpers = _interopRequireDefault(require("../javaHelpers.js"));
11
-
12
- var _debugLog = _interopRequireDefault(require("../../../debugLog.js"));
13
-
14
- var _index = require("../../../utils/index.js");
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- const {
19
- entries
20
- } = Object;
21
-
22
- function tryToParseJSON(string) {
23
- let parsed;
24
-
25
- try {
26
- parsed = JSON.parse(string);
27
- } catch (err) {// nothing! Some things are not meant to be parsed.
28
- }
29
-
30
- return parsed || string;
31
- }
32
-
33
- function renderVelocityString(velocityString, context, v3Utils) {
34
- const log = v3Utils && v3Utils.log; // runs in a "polluted" (extended) String.prototype replacement scope
35
-
36
- const renderResult = (0, _javaHelpers.default)(() => // This line can throw, but this function does not handle errors
37
- // Quick args explanation:
38
- // { escape: false } --> otherwise would escape &, < and > chars with html (&amp;, &lt; and &gt;)
39
- // render(context, null, true) --> null: no custom macros; true: silent mode, just like APIG
40
- new _velocityjs.Compile((0, _velocityjs.parse)(velocityString), {
41
- escape: false
42
- }).render(context, null, true));
43
-
44
- if (log) {
45
- log.debug('Velocity rendered:', renderResult || 'undefined');
46
- } else {
47
- (0, _debugLog.default)('Velocity rendered:', renderResult || 'undefined');
48
- } // Haaaa Velocity... this language sure loves strings a lot
49
-
50
-
51
- switch (renderResult) {
52
- case 'undefined':
53
- return undefined;
54
- // But we don't, we want JavaScript types
55
-
56
- case 'null':
57
- return null;
58
-
59
- case 'true':
60
- return true;
61
-
62
- case 'false':
63
- return false;
64
-
65
- default:
66
- return tryToParseJSON(renderResult);
67
- }
68
- }
69
- /*
70
- Deeply traverses a Serverless-style JSON (Velocity) template
71
- When it finds a string, assumes it's Velocity language and renders it.
72
- */
73
-
74
-
75
- function renderVelocityTemplateObject(templateObject, context, v3Utils) {
76
- const result = {};
77
- const log = v3Utils && v3Utils.log;
78
- let toProcess = templateObject; // In some projects, the template object is a string, let us see if it's JSON
79
-
80
- if (typeof toProcess === 'string') {
81
- toProcess = tryToParseJSON(toProcess);
82
- } // Let's check again
83
-
84
-
85
- if ((0, _index.isPlainObject)(toProcess)) {
86
- entries(toProcess).forEach(([key, value]) => {
87
- if (log) {
88
- log.debug('Processing key:', key, '- value:', value);
89
- } else {
90
- (0, _debugLog.default)('Processing key:', key, '- value:', value);
91
- }
92
-
93
- if (typeof value === 'string') {
94
- result[key] = renderVelocityString(value, context, v3Utils); // Go deeper
95
- } else if ((0, _index.isPlainObject)(value)) {
96
- result[key] = renderVelocityTemplateObject(value, context); // This should never happen: value should either be a string or a plain object
97
- } else {
98
- result[key] = value;
99
- }
100
- }); // Still a string? Maybe it's some complex Velocity stuff
101
- } else if (typeof toProcess === 'string') {
102
- // If the plugin threw here then you should consider reviewing your template or posting an issue.
103
- const alternativeResult = tryToParseJSON(renderVelocityString(toProcess, context, v3Utils));
104
- return (0, _index.isPlainObject)(alternativeResult) ? alternativeResult : result;
105
- }
106
-
107
- return result;
108
- }
@@ -1,13 +0,0 @@
1
- 'use strict';
2
-
3
- const {
4
- validate: validateJsonSchema
5
- } = require('jsonschema');
6
-
7
- exports.validate = function validate(model, body) {
8
- const result = validateJsonSchema(body, model);
9
-
10
- if (result.errors.length > 0) {
11
- throw new Error(`Request body validation failed: ${result.errors.map(e => e.message).join(', ')}`);
12
- }
13
- };
@@ -1,182 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _nodeSchedule = _interopRequireDefault(require("node-schedule"));
9
-
10
- var _ScheduleEvent = _interopRequireDefault(require("./ScheduleEvent.js"));
11
-
12
- var _ScheduleEventDefinition = _interopRequireDefault(require("./ScheduleEventDefinition.js"));
13
-
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
- function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
17
-
18
- var id = 0;
19
-
20
- function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
21
-
22
- // const CRON_LENGTH_WITH_YEAR = 6
23
- const {
24
- stringify
25
- } = JSON;
26
-
27
- var _lambda = /*#__PURE__*/_classPrivateFieldLooseKey("lambda");
28
-
29
- var _region = /*#__PURE__*/_classPrivateFieldLooseKey("region");
30
-
31
- class Schedule {
32
- constructor(lambda, region, v3Utils) {
33
- Object.defineProperty(this, _lambda, {
34
- writable: true,
35
- value: null
36
- });
37
- Object.defineProperty(this, _region, {
38
- writable: true,
39
- value: null
40
- });
41
- _classPrivateFieldLooseBase(this, _lambda)[_lambda] = lambda;
42
- _classPrivateFieldLooseBase(this, _region)[_region] = region;
43
-
44
- if (v3Utils) {
45
- this.log = v3Utils.log;
46
- this.progress = v3Utils.progress;
47
- this.writeText = v3Utils.writeText;
48
- this.v3Utils = v3Utils;
49
- }
50
- }
51
-
52
- _scheduleEvent(functionKey, scheduleEvent) {
53
- const {
54
- enabled,
55
- input,
56
- rate
57
- } = scheduleEvent;
58
-
59
- if (!enabled) {
60
- if (this.log) {
61
- this.log.notice(`Scheduling [${functionKey}] cron: disabled`);
62
- } else {
63
- console.log(`Scheduling [${functionKey}] cron: disabled`);
64
- }
65
-
66
- return;
67
- } // Convert string rate to array to support Serverless v2.57.0 and lower.
68
-
69
-
70
- let rates = rate;
71
-
72
- if (typeof rate === 'string') {
73
- rates = [rate];
74
- }
75
-
76
- rates.forEach(entry => {
77
- const cron = this._convertExpressionToCron(entry);
78
-
79
- if (this.log) {
80
- this.log.notice(`Scheduling [${functionKey}] cron: [${cron}] input: ${stringify(input)}`);
81
- } else {
82
- console.log(`Scheduling [${functionKey}] cron: [${cron}] input: ${stringify(input)}`);
83
- }
84
-
85
- _nodeSchedule.default.scheduleJob(cron, async () => {
86
- try {
87
- const lambdaFunction = _classPrivateFieldLooseBase(this, _lambda)[_lambda].get(functionKey);
88
-
89
- const event = input !== null && input !== void 0 ? input : new _ScheduleEvent.default(_classPrivateFieldLooseBase(this, _region)[_region]);
90
- lambdaFunction.setEvent(event);
91
- /* const result = */
92
-
93
- await lambdaFunction.runHandler();
94
-
95
- if (this.log) {
96
- this.log.notice(`Successfully invoked scheduled function: [${functionKey}]`);
97
- } else {
98
- console.log(`Successfully invoked scheduled function: [${functionKey}]`);
99
- }
100
- } catch (err) {
101
- if (this.log) {
102
- this.log.error(`Failed to execute scheduled function: [${functionKey}] Error: ${err}`);
103
- } else {
104
- console.log(`Failed to execute scheduled function: [${functionKey}] Error: ${err}`);
105
- }
106
- }
107
- });
108
- });
109
- } // _convertCronSyntax(cronString) {
110
- // if (cronString.split(' ').length < CRON_LENGTH_WITH_YEAR) {
111
- // return cronString
112
- // }
113
- //
114
- // return cronString.replace(/\s\S+$/, '')
115
- // }
116
-
117
-
118
- _convertRateToCron(rate) {
119
- const [number, unit] = rate.split(' ');
120
-
121
- switch (unit) {
122
- case 'minute':
123
- case 'minutes':
124
- return `*/${number} * * * *`;
125
-
126
- case 'hour':
127
- case 'hours':
128
- return `0 */${number} * * *`;
129
-
130
- case 'day':
131
- case 'days':
132
- return `0 0 */${number} * *`;
133
-
134
- default:
135
- if (this.log) {
136
- this.log.error(`scheduler: Invalid rate syntax '${rate}', will not schedule`);
137
- } else {
138
- console.log(`scheduler: Invalid rate syntax '${rate}', will not schedule`);
139
- }
140
-
141
- return null;
142
- }
143
- }
144
-
145
- _convertExpressionToCron(scheduleEvent) {
146
- const params = scheduleEvent.replace('rate(', '').replace('cron(', '').replace(')', '');
147
-
148
- if (scheduleEvent.startsWith('cron(')) {
149
- if (!this.log) console.log('schedule rate "cron" not yet supported!'); // return this._convertCronSyntax(params)
150
- }
151
-
152
- if (scheduleEvent.startsWith('rate(')) {
153
- return this._convertRateToCron(params);
154
- }
155
-
156
- if (this.log) {
157
- this.log.error('scheduler: invalid, schedule syntax');
158
- } else {
159
- console.log('scheduler: invalid, schedule syntax');
160
- }
161
-
162
- return undefined;
163
- }
164
-
165
- _create(functionKey, rawScheduleEventDefinition) {
166
- const scheduleEvent = new _ScheduleEventDefinition.default(rawScheduleEventDefinition);
167
-
168
- this._scheduleEvent(functionKey, scheduleEvent);
169
- }
170
-
171
- create(events) {
172
- events.forEach(({
173
- functionKey,
174
- schedule
175
- }) => {
176
- this._create(functionKey, schedule);
177
- });
178
- }
179
-
180
- }
181
-
182
- exports.default = Schedule;
@@ -1,27 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _index = require("../../utils/index.js");
9
-
10
- class ScheduleEvent {
11
- constructor(region) {
12
- // format of aws displaying the time, e.g.: 2020-02-09T14:13:57Z
13
- const time = new Date().toISOString().replace(/\.(.*)(?=Z)/g, '');
14
- this.account = (0, _index.createUniqueId)();
15
- this.detail = {};
16
- this['detail-type'] = 'Scheduled Event';
17
- this.id = (0, _index.createUniqueId)();
18
- this.region = region;
19
- this.resources = [];
20
- this.source = 'aws.events';
21
- this.time = time;
22
- this.version = '0';
23
- }
24
-
25
- }
26
-
27
- exports.default = ScheduleEvent;
@@ -1,36 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- const {
8
- assign
9
- } = Object;
10
-
11
- class ScheduleEventDefinition {
12
- constructor(rawHttpEventDefinition) {
13
- let enabled;
14
- let rate;
15
- let rest;
16
-
17
- if (typeof rawHttpEventDefinition === 'string') {
18
- rate = rawHttpEventDefinition;
19
- } else {
20
- ;
21
- ({
22
- rate,
23
- enabled,
24
- ...rest
25
- } = rawHttpEventDefinition);
26
- } // enabled: true (default)
27
-
28
-
29
- this.enabled = enabled == null ? true : enabled;
30
- this.rate = rate;
31
- assign(this, rest);
32
- }
33
-
34
- }
35
-
36
- exports.default = ScheduleEventDefinition;
@@ -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 _Schedule.default;
10
- }
11
- });
12
-
13
- var _Schedule = _interopRequireDefault(require("./Schedule.js"));
14
-
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }