serverless-offline 8.8.0 → 9.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/README.md +12 -11
  2. package/package.json +33 -58
  3. package/src/ServerlessOffline.js +409 -0
  4. package/src/config/commandOptions.js +159 -0
  5. package/src/config/constants.js +22 -0
  6. package/{dist → src}/config/defaultOptions.js +9 -17
  7. package/src/config/index.js +4 -0
  8. package/src/config/supportedRuntimes.js +47 -0
  9. package/src/events/authCanExecuteResource.js +35 -0
  10. package/src/events/authFunctionNameExtractor.js +75 -0
  11. package/src/events/authMatchPolicyResource.js +71 -0
  12. package/src/events/authValidateContext.js +51 -0
  13. package/src/events/http/Endpoint.js +135 -0
  14. package/src/events/http/Http.js +50 -0
  15. package/src/events/http/HttpEventDefinition.js +20 -0
  16. package/src/events/http/HttpServer.js +1242 -0
  17. package/src/events/http/OfflineEndpoint.js +33 -0
  18. package/src/events/http/authJWTSettingsExtractor.js +70 -0
  19. package/src/events/http/createAuthScheme.js +176 -0
  20. package/src/events/http/createJWTAuthScheme.js +106 -0
  21. package/src/events/http/index.js +1 -0
  22. package/src/events/http/javaHelpers.js +102 -0
  23. package/src/events/http/lambda-events/LambdaIntegrationEvent.js +57 -0
  24. package/src/events/http/lambda-events/LambdaProxyIntegrationEvent.js +233 -0
  25. package/src/events/http/lambda-events/LambdaProxyIntegrationEventV2.js +190 -0
  26. package/src/events/http/lambda-events/VelocityContext.js +147 -0
  27. package/src/events/http/lambda-events/index.js +4 -0
  28. package/src/events/http/lambda-events/renderVelocityTemplateObject.js +93 -0
  29. package/{dist → src}/events/http/parseResources.js +73 -78
  30. package/src/events/http/payloadSchemaValidator.js +13 -0
  31. package/{dist → src}/events/http/templates/offline-default.req.vm +0 -0
  32. package/{dist → src}/events/http/templates/offline-default.res.vm +0 -0
  33. package/src/events/schedule/Schedule.js +131 -0
  34. package/src/events/schedule/ScheduleEvent.js +18 -0
  35. package/src/events/schedule/ScheduleEventDefinition.js +21 -0
  36. package/src/events/schedule/index.js +1 -0
  37. package/src/events/websocket/HttpServer.js +69 -0
  38. package/src/events/websocket/WebSocket.js +52 -0
  39. package/src/events/websocket/WebSocketClients.js +462 -0
  40. package/src/events/websocket/WebSocketEventDefinition.js +18 -0
  41. package/src/events/websocket/WebSocketServer.js +73 -0
  42. package/src/events/websocket/http-routes/_catchAll/catchAllRoute.js +16 -0
  43. package/src/events/websocket/http-routes/_catchAll/index.js +1 -0
  44. package/src/events/websocket/http-routes/connections/ConnectionsController.js +28 -0
  45. package/src/events/websocket/http-routes/connections/connectionsRoutes.js +70 -0
  46. package/src/events/websocket/http-routes/connections/index.js +1 -0
  47. package/src/events/websocket/http-routes/index.js +2 -0
  48. package/src/events/websocket/index.js +1 -0
  49. package/src/events/websocket/lambda-events/WebSocketAuthorizerEvent.js +65 -0
  50. package/src/events/websocket/lambda-events/WebSocketConnectEvent.js +68 -0
  51. package/src/events/websocket/lambda-events/WebSocketDisconnectEvent.js +31 -0
  52. package/src/events/websocket/lambda-events/WebSocketEvent.js +29 -0
  53. package/src/events/websocket/lambda-events/WebSocketRequestContext.js +67 -0
  54. package/src/events/websocket/lambda-events/index.js +4 -0
  55. package/src/index.js +12 -0
  56. package/src/lambda/HttpServer.js +108 -0
  57. package/src/lambda/Lambda.js +68 -0
  58. package/src/lambda/LambdaContext.js +33 -0
  59. package/src/lambda/LambdaFunction.js +309 -0
  60. package/src/lambda/LambdaFunctionPool.js +109 -0
  61. package/src/lambda/__tests__/LambdaContext.test.js +30 -0
  62. package/src/lambda/__tests__/LambdaFunction.test.js +196 -0
  63. package/src/lambda/__tests__/fixtures/Lambda/LambdaFunctionThatReturnsJSONObject.fixture.js +47 -0
  64. package/src/lambda/__tests__/fixtures/Lambda/LambdaFunctionThatReturnsNativeString.fixture.js +46 -0
  65. package/src/lambda/__tests__/fixtures/Lambda/package.json +3 -0
  66. package/src/lambda/__tests__/fixtures/lambdaFunction.fixture.js +145 -0
  67. package/src/lambda/__tests__/fixtures/package.json +3 -0
  68. package/src/lambda/__tests__/routes/invocations/InvocationsController.test.js +42 -0
  69. package/src/lambda/handler-runner/HandlerRunner.js +136 -0
  70. package/src/lambda/handler-runner/child-process-runner/ChildProcessRunner.js +72 -0
  71. package/src/lambda/handler-runner/child-process-runner/childProcessHelper.js +42 -0
  72. package/src/lambda/handler-runner/child-process-runner/index.js +1 -0
  73. package/src/lambda/handler-runner/docker-runner/DockerContainer.js +417 -0
  74. package/src/lambda/handler-runner/docker-runner/DockerImage.js +35 -0
  75. package/src/lambda/handler-runner/docker-runner/DockerRunner.js +63 -0
  76. package/src/lambda/handler-runner/docker-runner/index.js +1 -0
  77. package/src/lambda/handler-runner/go-runner/GoRunner.js +167 -0
  78. package/src/lambda/handler-runner/go-runner/index.js +1 -0
  79. package/src/lambda/handler-runner/in-process-runner/InProcessRunner.js +125 -0
  80. package/src/lambda/handler-runner/in-process-runner/index.js +1 -0
  81. package/src/lambda/handler-runner/index.js +1 -0
  82. package/src/lambda/handler-runner/java-runner/JavaRunner.js +114 -0
  83. package/src/lambda/handler-runner/java-runner/index.js +1 -0
  84. package/src/lambda/handler-runner/python-runner/PythonRunner.js +138 -0
  85. package/src/lambda/handler-runner/python-runner/index.js +1 -0
  86. package/{dist → src}/lambda/handler-runner/python-runner/invoke.py +0 -0
  87. package/src/lambda/handler-runner/ruby-runner/RubyRunner.js +107 -0
  88. package/src/lambda/handler-runner/ruby-runner/index.js +1 -0
  89. package/{dist → src}/lambda/handler-runner/ruby-runner/invoke.rb +0 -0
  90. package/src/lambda/handler-runner/worker-thread-runner/WorkerThreadRunner.js +70 -0
  91. package/src/lambda/handler-runner/worker-thread-runner/index.js +1 -0
  92. package/src/lambda/handler-runner/worker-thread-runner/workerThreadHelper.js +29 -0
  93. package/src/lambda/index.js +1 -0
  94. package/src/lambda/routes/index.js +2 -0
  95. package/src/lambda/routes/invocations/InvocationsController.js +102 -0
  96. package/src/lambda/routes/invocations/index.js +1 -0
  97. package/src/lambda/routes/invocations/invocationsRoute.js +77 -0
  98. package/src/lambda/routes/invoke-async/InvokeAsyncController.js +20 -0
  99. package/src/lambda/routes/invoke-async/index.js +1 -0
  100. package/src/lambda/routes/invoke-async/invokeAsyncRoute.js +33 -0
  101. package/src/utils/__tests__/createUniqueId.test.js +18 -0
  102. package/src/utils/__tests__/formatToClfTime.test.js +14 -0
  103. package/src/utils/__tests__/generateHapiPath.test.js +46 -0
  104. package/src/utils/__tests__/lowerCaseKeys.test.js +30 -0
  105. package/src/utils/__tests__/parseHeaders.test.js +13 -0
  106. package/src/utils/__tests__/parseMultiValueHeaders.test.js +24 -0
  107. package/src/utils/__tests__/parseMultiValueQueryStringParameters.test.js +159 -0
  108. package/src/utils/__tests__/parseQueryStringParameters.test.js +15 -0
  109. package/src/utils/__tests__/splitHandlerPathAndName.test.js +54 -0
  110. package/src/utils/__tests__/unflatten.test.js +32 -0
  111. package/src/utils/checkDockerDaemon.js +19 -0
  112. package/src/utils/checkGoVersion.js +16 -0
  113. package/src/utils/createApiKey.js +5 -0
  114. package/src/utils/createUniqueId.js +5 -0
  115. package/src/utils/detectExecutable.js +11 -0
  116. package/{dist → src}/utils/formatToClfTime.js +6 -14
  117. package/src/utils/generateHapiPath.js +26 -0
  118. package/src/utils/getHttpApiCorsConfig.js +28 -0
  119. package/src/utils/index.js +42 -0
  120. package/src/utils/jsonPath.js +13 -0
  121. package/src/utils/logRoutes.js +64 -0
  122. package/src/utils/lowerCaseKeys.js +6 -0
  123. package/src/utils/parseHeaders.js +14 -0
  124. package/src/utils/parseMultiValueHeaders.js +27 -0
  125. package/src/utils/parseMultiValueQueryStringParameters.js +31 -0
  126. package/src/utils/parseQueryStringParameters.js +15 -0
  127. package/src/utils/splitHandlerPathAndName.js +31 -0
  128. package/src/utils/unflatten.js +11 -0
  129. package/dist/ServerlessOffline.js +0 -514
  130. package/dist/config/commandOptions.js +0 -149
  131. package/dist/config/constants.js +0 -30
  132. package/dist/config/index.js +0 -55
  133. package/dist/config/supportedRuntimes.js +0 -40
  134. package/dist/debugLog.js +0 -12
  135. package/dist/events/authCanExecuteResource.js +0 -35
  136. package/dist/events/authFunctionNameExtractor.js +0 -87
  137. package/dist/events/authMatchPolicyResource.js +0 -62
  138. package/dist/events/authValidateContext.js +0 -53
  139. package/dist/events/http/Endpoint.js +0 -173
  140. package/dist/events/http/Http.js +0 -77
  141. package/dist/events/http/HttpEventDefinition.js +0 -36
  142. package/dist/events/http/HttpServer.js +0 -1370
  143. package/dist/events/http/OfflineEndpoint.js +0 -38
  144. package/dist/events/http/authJWTSettingsExtractor.js +0 -76
  145. package/dist/events/http/createAuthScheme.js +0 -184
  146. package/dist/events/http/createJWTAuthScheme.js +0 -159
  147. package/dist/events/http/index.js +0 -15
  148. package/dist/events/http/javaHelpers.js +0 -99
  149. package/dist/events/http/lambda-events/LambdaIntegrationEvent.js +0 -87
  150. package/dist/events/http/lambda-events/LambdaProxyIntegrationEvent.js +0 -246
  151. package/dist/events/http/lambda-events/LambdaProxyIntegrationEventV2.js +0 -225
  152. package/dist/events/http/lambda-events/VelocityContext.js +0 -170
  153. package/dist/events/http/lambda-events/index.js +0 -39
  154. package/dist/events/http/lambda-events/renderVelocityTemplateObject.js +0 -111
  155. package/dist/events/http/payloadSchemaValidator.js +0 -13
  156. package/dist/events/schedule/Schedule.js +0 -183
  157. package/dist/events/schedule/ScheduleEvent.js +0 -27
  158. package/dist/events/schedule/ScheduleEventDefinition.js +0 -36
  159. package/dist/events/schedule/index.js +0 -15
  160. package/dist/events/websocket/HttpServer.js +0 -114
  161. package/dist/events/websocket/WebSocket.js +0 -78
  162. package/dist/events/websocket/WebSocketClients.js +0 -577
  163. package/dist/events/websocket/WebSocketEventDefinition.js +0 -32
  164. package/dist/events/websocket/WebSocketServer.js +0 -139
  165. package/dist/events/websocket/http-routes/_catchAll/catchAllRoute.js +0 -33
  166. package/dist/events/websocket/http-routes/_catchAll/index.js +0 -15
  167. package/dist/events/websocket/http-routes/connections/ConnectionsController.js +0 -45
  168. package/dist/events/websocket/http-routes/connections/connectionsRoutes.js +0 -95
  169. package/dist/events/websocket/http-routes/connections/index.js +0 -15
  170. package/dist/events/websocket/http-routes/index.js +0 -23
  171. package/dist/events/websocket/index.js +0 -15
  172. package/dist/events/websocket/lambda-events/WebSocketAuthorizerEvent.js +0 -99
  173. package/dist/events/websocket/lambda-events/WebSocketConnectEvent.js +0 -101
  174. package/dist/events/websocket/lambda-events/WebSocketDisconnectEvent.js +0 -47
  175. package/dist/events/websocket/lambda-events/WebSocketEvent.js +0 -54
  176. package/dist/events/websocket/lambda-events/WebSocketRequestContext.js +0 -98
  177. package/dist/events/websocket/lambda-events/index.js +0 -39
  178. package/dist/index.js +0 -15
  179. package/dist/lambda/HttpServer.js +0 -124
  180. package/dist/lambda/Lambda.js +0 -117
  181. package/dist/lambda/LambdaContext.js +0 -53
  182. package/dist/lambda/LambdaFunction.js +0 -390
  183. package/dist/lambda/LambdaFunctionPool.js +0 -127
  184. package/dist/lambda/handler-runner/HandlerRunner.js +0 -195
  185. package/dist/lambda/handler-runner/child-process-runner/ChildProcessRunner.js +0 -124
  186. package/dist/lambda/handler-runner/child-process-runner/childProcessHelper.js +0 -49
  187. package/dist/lambda/handler-runner/child-process-runner/index.js +0 -15
  188. package/dist/lambda/handler-runner/docker-runner/DockerContainer.js +0 -515
  189. package/dist/lambda/handler-runner/docker-runner/DockerImage.js +0 -67
  190. package/dist/lambda/handler-runner/docker-runner/DockerRunner.js +0 -74
  191. package/dist/lambda/handler-runner/docker-runner/index.js +0 -15
  192. package/dist/lambda/handler-runner/go-runner/GoRunner.js +0 -230
  193. package/dist/lambda/handler-runner/go-runner/index.js +0 -15
  194. package/dist/lambda/handler-runner/in-process-runner/InProcessRunner.js +0 -228
  195. package/dist/lambda/handler-runner/in-process-runner/index.js +0 -15
  196. package/dist/lambda/handler-runner/index.js +0 -15
  197. package/dist/lambda/handler-runner/java-runner/JavaRunner.js +0 -153
  198. package/dist/lambda/handler-runner/java-runner/index.js +0 -15
  199. package/dist/lambda/handler-runner/python-runner/PythonRunner.js +0 -185
  200. package/dist/lambda/handler-runner/python-runner/index.js +0 -15
  201. package/dist/lambda/handler-runner/ruby-runner/RubyRunner.js +0 -147
  202. package/dist/lambda/handler-runner/ruby-runner/index.js +0 -15
  203. package/dist/lambda/handler-runner/worker-thread-runner/WorkerThreadRunner.js +0 -92
  204. package/dist/lambda/handler-runner/worker-thread-runner/index.js +0 -15
  205. package/dist/lambda/handler-runner/worker-thread-runner/workerThreadHelper.js +0 -31
  206. package/dist/lambda/index.js +0 -15
  207. package/dist/lambda/routes/index.js +0 -23
  208. package/dist/lambda/routes/invocations/InvocationsController.js +0 -142
  209. package/dist/lambda/routes/invocations/index.js +0 -15
  210. package/dist/lambda/routes/invocations/invocationsRoute.js +0 -90
  211. package/dist/lambda/routes/invoke-async/InvokeAsyncController.js +0 -38
  212. package/dist/lambda/routes/invoke-async/index.js +0 -15
  213. package/dist/lambda/routes/invoke-async/invokeAsyncRoute.js +0 -43
  214. package/dist/main.js +0 -11
  215. package/dist/serverlessLog.js +0 -91
  216. package/dist/utils/checkDockerDaemon.js +0 -27
  217. package/dist/utils/checkGoVersion.js +0 -27
  218. package/dist/utils/createApiKey.js +0 -12
  219. package/dist/utils/createUniqueId.js +0 -14
  220. package/dist/utils/detectExecutable.js +0 -21
  221. package/dist/utils/generateHapiPath.js +0 -28
  222. package/dist/utils/getHttpApiCorsConfig.js +0 -40
  223. package/dist/utils/index.js +0 -165
  224. package/dist/utils/jsonPath.js +0 -21
  225. package/dist/utils/lowerCaseKeys.js +0 -14
  226. package/dist/utils/parseHeaders.js +0 -23
  227. package/dist/utils/parseMultiValueHeaders.js +0 -36
  228. package/dist/utils/parseMultiValueQueryStringParameters.js +0 -40
  229. package/dist/utils/parseQueryStringParameters.js +0 -26
  230. package/dist/utils/resolveJoins.js +0 -36
  231. package/dist/utils/satisfiesVersionRange.js +0 -20
  232. package/dist/utils/splitHandlerPathAndName.js +0 -37
  233. package/dist/utils/unflatten.js +0 -18
@@ -1,195 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _debugLog = _interopRequireDefault(require("../../debugLog.js"));
9
-
10
- var _serverlessLog = require("../../serverlessLog.js");
11
-
12
- var _index = require("../../config/index.js");
13
-
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
-
18
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
-
20
- function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
21
-
22
- var id = 0;
23
-
24
- function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
25
-
26
- var _env = /*#__PURE__*/_classPrivateFieldLooseKey("env");
27
-
28
- var _funOptions = /*#__PURE__*/_classPrivateFieldLooseKey("funOptions");
29
-
30
- var _options = /*#__PURE__*/_classPrivateFieldLooseKey("options");
31
-
32
- var _runner = /*#__PURE__*/_classPrivateFieldLooseKey("runner");
33
-
34
- class HandlerRunner {
35
- constructor(funOptions, options, env, v3Utils) {
36
- Object.defineProperty(this, _env, {
37
- writable: true,
38
- value: null
39
- });
40
- Object.defineProperty(this, _funOptions, {
41
- writable: true,
42
- value: null
43
- });
44
- Object.defineProperty(this, _options, {
45
- writable: true,
46
- value: null
47
- });
48
- Object.defineProperty(this, _runner, {
49
- writable: true,
50
- value: null
51
- });
52
- _classPrivateFieldLooseBase(this, _env)[_env] = env;
53
- _classPrivateFieldLooseBase(this, _funOptions)[_funOptions] = funOptions;
54
- _classPrivateFieldLooseBase(this, _options)[_options] = options;
55
-
56
- if (v3Utils) {
57
- this.log = v3Utils.log;
58
- this.progress = v3Utils.progress;
59
- this.writeText = v3Utils.writeText;
60
- this.v3Utils = v3Utils;
61
- }
62
- }
63
-
64
- async _loadRunner() {
65
- const {
66
- useDocker,
67
- useChildProcesses,
68
- useWorkerThreads,
69
- allowCache
70
- } = _classPrivateFieldLooseBase(this, _options)[_options];
71
-
72
- const {
73
- functionKey,
74
- handlerName,
75
- handlerPath,
76
- runtime,
77
- timeout
78
- } = _classPrivateFieldLooseBase(this, _funOptions)[_funOptions];
79
-
80
- if (this.log) {
81
- this.log.debug(`Loading handler... (${handlerPath})`);
82
- } else {
83
- (0, _debugLog.default)(`Loading handler... (${handlerPath})`);
84
- }
85
-
86
- if (useDocker) {
87
- // https://github.com/lambci/docker-lambda/issues/329
88
- if (runtime === 'nodejs14.x') {
89
- if (this.log) {
90
- this.log.warning('"nodejs14.x" runtime is not supported with docker. See https://github.com/lambci/docker-lambda/issues/329');
91
- } else {
92
- (0, _serverlessLog.logWarning)('"nodejs14.x" runtime is not supported with docker. See https://github.com/lambci/docker-lambda/issues/329');
93
- }
94
-
95
- throw new Error('Unsupported runtime');
96
- }
97
-
98
- if (runtime === 'python3.9') {
99
- if (this.log) {
100
- this.log.warning('"python3.9" runtime is not supported with docker.');
101
- } else {
102
- (0, _serverlessLog.logWarning)('"python3.9" runtime is not supported with docker.');
103
- }
104
-
105
- throw new Error('Unsupported runtime');
106
- }
107
-
108
- const dockerOptions = {
109
- host: _classPrivateFieldLooseBase(this, _options)[_options].dockerHost,
110
- hostServicePath: _classPrivateFieldLooseBase(this, _options)[_options].dockerHostServicePath,
111
- layersDir: _classPrivateFieldLooseBase(this, _options)[_options].layersDir,
112
- network: _classPrivateFieldLooseBase(this, _options)[_options].dockerNetwork,
113
- readOnly: _classPrivateFieldLooseBase(this, _options)[_options].dockerReadOnly
114
- };
115
- const {
116
- default: DockerRunner
117
- } = await Promise.resolve().then(() => _interopRequireWildcard(require('./docker-runner/index.js')));
118
- return new DockerRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], dockerOptions, this.v3Utils);
119
- }
120
-
121
- if (_index.supportedNodejs.has(runtime)) {
122
- if (useChildProcesses) {
123
- const {
124
- default: ChildProcessRunner
125
- } = await Promise.resolve().then(() => _interopRequireWildcard(require('./child-process-runner/index.js')));
126
- return new ChildProcessRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], allowCache, this.v3Utils);
127
- }
128
-
129
- if (useWorkerThreads) {
130
- const {
131
- default: WorkerThreadRunner
132
- } = await Promise.resolve().then(() => _interopRequireWildcard(require('./worker-thread-runner/index.js')));
133
- return new WorkerThreadRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], allowCache);
134
- }
135
-
136
- const {
137
- default: InProcessRunner
138
- } = await Promise.resolve().then(() => _interopRequireWildcard(require('./in-process-runner/index.js')));
139
- return new InProcessRunner(functionKey, handlerPath, handlerName, _classPrivateFieldLooseBase(this, _env)[_env], timeout, allowCache);
140
- }
141
-
142
- if (_index.supportedGo.has(runtime)) {
143
- const {
144
- default: GoRunner
145
- } = await Promise.resolve().then(() => _interopRequireWildcard(require('./go-runner/index.js')));
146
- return new GoRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], this.v3Utils);
147
- }
148
-
149
- if (_index.supportedPython.has(runtime)) {
150
- const {
151
- default: PythonRunner
152
- } = await Promise.resolve().then(() => _interopRequireWildcard(require('./python-runner/index.js')));
153
- return new PythonRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], allowCache, this.v3Utils);
154
- }
155
-
156
- if (_index.supportedRuby.has(runtime)) {
157
- const {
158
- default: RubyRunner
159
- } = await Promise.resolve().then(() => _interopRequireWildcard(require('./ruby-runner/index.js')));
160
- return new RubyRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], allowCache, this.v3Utils);
161
- }
162
-
163
- if (_index.supportedJava.has(runtime)) {
164
- const {
165
- default: JavaRunner
166
- } = await Promise.resolve().then(() => _interopRequireWildcard(require('./java-runner/index.js')));
167
- return new JavaRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], allowCache, this.v3Utils);
168
- } // TODO FIXME
169
-
170
-
171
- throw new Error('Unsupported runtime');
172
- } // TEMP TODO FIXME
173
-
174
-
175
- isDockerRunner() {
176
- return _classPrivateFieldLooseBase(this, _runner)[_runner] && _classPrivateFieldLooseBase(this, _runner)[_runner].constructor.name === 'DockerRunner';
177
- } // () => Promise<void>
178
-
179
-
180
- cleanup() {
181
- // TODO console.log('handler runner cleanup')
182
- return _classPrivateFieldLooseBase(this, _runner)[_runner].cleanup();
183
- }
184
-
185
- async run(event, context) {
186
- if (_classPrivateFieldLooseBase(this, _runner)[_runner] == null) {
187
- _classPrivateFieldLooseBase(this, _runner)[_runner] = await this._loadRunner();
188
- }
189
-
190
- return _classPrivateFieldLooseBase(this, _runner)[_runner].run(event, context);
191
- }
192
-
193
- }
194
-
195
- exports.default = HandlerRunner;
@@ -1,124 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _path = _interopRequireDefault(require("path"));
9
-
10
- var _execa = require("execa");
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 childProcessHelperPath = _path.default.resolve(__dirname, 'childProcessHelper.js');
21
-
22
- var _env = /*#__PURE__*/_classPrivateFieldLooseKey("env");
23
-
24
- var _functionKey = /*#__PURE__*/_classPrivateFieldLooseKey("functionKey");
25
-
26
- var _handlerName = /*#__PURE__*/_classPrivateFieldLooseKey("handlerName");
27
-
28
- var _handlerPath = /*#__PURE__*/_classPrivateFieldLooseKey("handlerPath");
29
-
30
- var _timeout = /*#__PURE__*/_classPrivateFieldLooseKey("timeout");
31
-
32
- var _allowCache = /*#__PURE__*/_classPrivateFieldLooseKey("allowCache");
33
-
34
- class ChildProcessRunner {
35
- constructor(funOptions, env, allowCache, v3Utils) {
36
- Object.defineProperty(this, _env, {
37
- writable: true,
38
- value: null
39
- });
40
- Object.defineProperty(this, _functionKey, {
41
- writable: true,
42
- value: null
43
- });
44
- Object.defineProperty(this, _handlerName, {
45
- writable: true,
46
- value: null
47
- });
48
- Object.defineProperty(this, _handlerPath, {
49
- writable: true,
50
- value: null
51
- });
52
- Object.defineProperty(this, _timeout, {
53
- writable: true,
54
- value: null
55
- });
56
- Object.defineProperty(this, _allowCache, {
57
- writable: true,
58
- value: false
59
- });
60
- const {
61
- functionKey,
62
- handlerName,
63
- handlerPath,
64
- timeout
65
- } = funOptions;
66
-
67
- if (v3Utils) {
68
- this.log = v3Utils.log;
69
- this.progress = v3Utils.progress;
70
- this.writeText = v3Utils.writeText;
71
- this.v3Utils = v3Utils;
72
- }
73
-
74
- _classPrivateFieldLooseBase(this, _env)[_env] = env;
75
- _classPrivateFieldLooseBase(this, _functionKey)[_functionKey] = functionKey;
76
- _classPrivateFieldLooseBase(this, _handlerName)[_handlerName] = handlerName;
77
- _classPrivateFieldLooseBase(this, _handlerPath)[_handlerPath] = handlerPath;
78
- _classPrivateFieldLooseBase(this, _timeout)[_timeout] = timeout;
79
- _classPrivateFieldLooseBase(this, _allowCache)[_allowCache] = allowCache;
80
- } // no-op
81
- // () => void
82
-
83
-
84
- cleanup() {}
85
-
86
- async run(event, context) {
87
- const childProcess = (0, _execa.node)(childProcessHelperPath, [_classPrivateFieldLooseBase(this, _functionKey)[_functionKey], _classPrivateFieldLooseBase(this, _handlerName)[_handlerName], _classPrivateFieldLooseBase(this, _handlerPath)[_handlerPath]], {
88
- env: _classPrivateFieldLooseBase(this, _env)[_env],
89
- stdio: 'inherit'
90
- });
91
- const message = new Promise((resolve, reject) => {
92
- childProcess.on('message', data => {
93
- if (data.error) reject(data.error);else resolve(data);
94
- });
95
- }).finally(() => {
96
- childProcess.kill();
97
- });
98
- childProcess.send({
99
- context,
100
- event,
101
- allowCache: _classPrivateFieldLooseBase(this, _allowCache)[_allowCache],
102
- timeout: _classPrivateFieldLooseBase(this, _timeout)[_timeout]
103
- });
104
- let result;
105
-
106
- try {
107
- result = await message;
108
- } catch (err) {
109
- // TODO
110
- if (this.log) {
111
- this.log.error(err);
112
- } else {
113
- console.log(err);
114
- }
115
-
116
- throw err;
117
- }
118
-
119
- return result;
120
- }
121
-
122
- }
123
-
124
- exports.default = ChildProcessRunner;
@@ -1,49 +0,0 @@
1
- "use strict";
2
-
3
- var _process = _interopRequireWildcard(require("process"));
4
-
5
- var _index = _interopRequireDefault(require("../in-process-runner/index.js"));
6
-
7
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
-
9
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
10
-
11
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
12
-
13
- // TODO handle this:
14
- _process.default.on('uncaughtException', err => {
15
- const {
16
- constructor: {
17
- name
18
- },
19
- message,
20
- stack
21
- } = err;
22
-
23
- _process.default.send({
24
- // process.send() can't serialize an Error object, so we help it out a bit
25
- error: {
26
- constructor: {
27
- name
28
- },
29
- message,
30
- stack
31
- }
32
- });
33
- });
34
-
35
- const [,, functionKey, handlerName, handlerPath] = _process.argv;
36
-
37
- _process.default.on('message', async messageData => {
38
- const {
39
- context,
40
- event,
41
- allowCache,
42
- timeout
43
- } = messageData; // TODO we could probably cache this in the module scope?
44
-
45
- const inProcessRunner = new _index.default(functionKey, handlerPath, handlerName, _process.default.env, timeout, allowCache);
46
- const result = await inProcessRunner.run(event, context); // TODO check serializeability (contains function, symbol etc)
47
-
48
- _process.default.send(result);
49
- });
@@ -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 _ChildProcessRunner.default;
10
- }
11
- });
12
-
13
- var _ChildProcessRunner = _interopRequireDefault(require("./ChildProcessRunner.js"));
14
-
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }