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,223 +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
- var _index2 = require("../../utils/index.js");
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- 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); }
19
-
20
- 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; }
21
-
22
- function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
23
-
24
- var id = 0;
25
-
26
- function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
27
-
28
- var _env = /*#__PURE__*/_classPrivateFieldLooseKey("env");
29
-
30
- var _funOptions = /*#__PURE__*/_classPrivateFieldLooseKey("funOptions");
31
-
32
- var _options = /*#__PURE__*/_classPrivateFieldLooseKey("options");
33
-
34
- var _runner = /*#__PURE__*/_classPrivateFieldLooseKey("runner");
35
-
36
- class HandlerRunner {
37
- constructor(funOptions, options, env, v3Utils) {
38
- Object.defineProperty(this, _env, {
39
- writable: true,
40
- value: null
41
- });
42
- Object.defineProperty(this, _funOptions, {
43
- writable: true,
44
- value: null
45
- });
46
- Object.defineProperty(this, _options, {
47
- writable: true,
48
- value: null
49
- });
50
- Object.defineProperty(this, _runner, {
51
- writable: true,
52
- value: null
53
- });
54
- _classPrivateFieldLooseBase(this, _env)[_env] = env;
55
- _classPrivateFieldLooseBase(this, _funOptions)[_funOptions] = funOptions;
56
- _classPrivateFieldLooseBase(this, _options)[_options] = options;
57
-
58
- if (v3Utils) {
59
- this.log = v3Utils.log;
60
- this.progress = v3Utils.progress;
61
- this.writeText = v3Utils.writeText;
62
- this.v3Utils = v3Utils;
63
- }
64
- }
65
-
66
- async _loadRunner() {
67
- const {
68
- useDocker,
69
- useChildProcesses,
70
- useWorkerThreads,
71
- allowCache
72
- } = _classPrivateFieldLooseBase(this, _options)[_options];
73
-
74
- const {
75
- functionKey,
76
- handlerName,
77
- handlerPath,
78
- handlerModuleNesting,
79
- runtime,
80
- timeout
81
- } = _classPrivateFieldLooseBase(this, _funOptions)[_funOptions];
82
-
83
- if (this.log) {
84
- this.log.debug(`Loading handler... (${handlerPath})`);
85
- } else {
86
- (0, _debugLog.default)(`Loading handler... (${handlerPath})`);
87
- }
88
-
89
- if (useDocker) {
90
- // https://github.com/lambci/docker-lambda/issues/329
91
- if (runtime === 'nodejs14.x') {
92
- if (this.log) {
93
- this.log.warning('"nodejs14.x" runtime is not supported with docker. See https://github.com/lambci/docker-lambda/issues/329');
94
- } else {
95
- (0, _serverlessLog.logWarning)('"nodejs14.x" runtime is not supported with docker. See https://github.com/lambci/docker-lambda/issues/329');
96
- }
97
-
98
- throw new Error('Unsupported runtime');
99
- }
100
-
101
- if (runtime === 'python3.9') {
102
- if (this.log) {
103
- this.log.warning('"python3.9" runtime is not supported with docker.');
104
- } else {
105
- (0, _serverlessLog.logWarning)('"python3.9" runtime is not supported with docker.');
106
- }
107
-
108
- throw new Error('Unsupported runtime');
109
- }
110
-
111
- const dockerOptions = {
112
- host: _classPrivateFieldLooseBase(this, _options)[_options].dockerHost,
113
- hostServicePath: _classPrivateFieldLooseBase(this, _options)[_options].dockerHostServicePath,
114
- layersDir: _classPrivateFieldLooseBase(this, _options)[_options].layersDir,
115
- network: _classPrivateFieldLooseBase(this, _options)[_options].dockerNetwork,
116
- readOnly: _classPrivateFieldLooseBase(this, _options)[_options].dockerReadOnly
117
- };
118
- const {
119
- default: DockerRunner
120
- } = await Promise.resolve().then(() => _interopRequireWildcard(require('./docker-runner/index.js')));
121
- return new DockerRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], dockerOptions, this.v3Utils);
122
- }
123
-
124
- if (_index.supportedNodejs.has(runtime)) {
125
- if (useChildProcesses) {
126
- const {
127
- default: ChildProcessRunner
128
- } = await Promise.resolve().then(() => _interopRequireWildcard(require('./child-process-runner/index.js')));
129
- return new ChildProcessRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], allowCache, this.v3Utils);
130
- }
131
-
132
- if (useWorkerThreads) {
133
- // worker threads
134
- this._verifyWorkerThreadCompatibility();
135
-
136
- const {
137
- default: WorkerThreadRunner
138
- } = await Promise.resolve().then(() => _interopRequireWildcard(require('./worker-thread-runner/index.js')));
139
- return new WorkerThreadRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], allowCache);
140
- }
141
-
142
- const {
143
- default: InProcessRunner
144
- } = await Promise.resolve().then(() => _interopRequireWildcard(require('./in-process-runner/index.js')));
145
- return new InProcessRunner(functionKey, handlerPath, handlerName, handlerModuleNesting, _classPrivateFieldLooseBase(this, _env)[_env], timeout, allowCache);
146
- }
147
-
148
- if (_index.supportedGo.has(runtime)) {
149
- const {
150
- default: GoRunner
151
- } = await Promise.resolve().then(() => _interopRequireWildcard(require('./go-runner/index.js')));
152
- return new GoRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], this.v3Utils);
153
- }
154
-
155
- if (_index.supportedPython.has(runtime)) {
156
- const {
157
- default: PythonRunner
158
- } = await Promise.resolve().then(() => _interopRequireWildcard(require('./python-runner/index.js')));
159
- return new PythonRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], allowCache, this.v3Utils);
160
- }
161
-
162
- if (_index.supportedRuby.has(runtime)) {
163
- const {
164
- default: RubyRunner
165
- } = await Promise.resolve().then(() => _interopRequireWildcard(require('./ruby-runner/index.js')));
166
- return new RubyRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], allowCache, this.v3Utils);
167
- }
168
-
169
- if (_index.supportedJava.has(runtime)) {
170
- const {
171
- default: JavaRunner
172
- } = await Promise.resolve().then(() => _interopRequireWildcard(require('./java-runner/index.js')));
173
- return new JavaRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], allowCache, this.v3Utils);
174
- } // TODO FIXME
175
-
176
-
177
- throw new Error('Unsupported runtime');
178
- }
179
-
180
- _verifyWorkerThreadCompatibility() {
181
- const {
182
- node: currentVersion
183
- } = process.versions;
184
- const requiredVersionRange = '>=11.7.0';
185
- const versionIsSatisfied = (0, _index2.satisfiesVersionRange)(currentVersion, requiredVersionRange); // we're happy
186
-
187
- if (!versionIsSatisfied) {
188
- if (this.log) {
189
- this.log.warning(`"worker threads" require node.js version ${requiredVersionRange}, but found version ${currentVersion}.
190
- To use this feature you have to update node.js to a later version.
191
- `);
192
- } else {
193
- (0, _serverlessLog.logWarning)(`"worker threads" require node.js version ${requiredVersionRange}, but found version ${currentVersion}.
194
- To use this feature you have to update node.js to a later version.
195
- `);
196
- }
197
-
198
- throw new Error('"worker threads" are not supported with this node.js version');
199
- }
200
- } // TEMP TODO FIXME
201
-
202
-
203
- isDockerRunner() {
204
- return _classPrivateFieldLooseBase(this, _runner)[_runner] && _classPrivateFieldLooseBase(this, _runner)[_runner].constructor.name === 'DockerRunner';
205
- } // () => Promise<void>
206
-
207
-
208
- cleanup() {
209
- // TODO console.log('handler runner cleanup')
210
- return _classPrivateFieldLooseBase(this, _runner)[_runner].cleanup();
211
- }
212
-
213
- async run(event, context) {
214
- if (_classPrivateFieldLooseBase(this, _runner)[_runner] == null) {
215
- _classPrivateFieldLooseBase(this, _runner)[_runner] = await this._loadRunner();
216
- }
217
-
218
- return _classPrivateFieldLooseBase(this, _runner)[_runner].run(event, context);
219
- }
220
-
221
- }
222
-
223
- exports.default = HandlerRunner;
@@ -1,132 +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 _handlerModuleNesting = /*#__PURE__*/_classPrivateFieldLooseKey("handlerModuleNesting");
31
-
32
- var _timeout = /*#__PURE__*/_classPrivateFieldLooseKey("timeout");
33
-
34
- var _allowCache = /*#__PURE__*/_classPrivateFieldLooseKey("allowCache");
35
-
36
- class ChildProcessRunner {
37
- constructor(funOptions, env, allowCache, v3Utils) {
38
- Object.defineProperty(this, _env, {
39
- writable: true,
40
- value: null
41
- });
42
- Object.defineProperty(this, _functionKey, {
43
- writable: true,
44
- value: null
45
- });
46
- Object.defineProperty(this, _handlerName, {
47
- writable: true,
48
- value: null
49
- });
50
- Object.defineProperty(this, _handlerPath, {
51
- writable: true,
52
- value: null
53
- });
54
- Object.defineProperty(this, _handlerModuleNesting, {
55
- writable: true,
56
- value: null
57
- });
58
- Object.defineProperty(this, _timeout, {
59
- writable: true,
60
- value: null
61
- });
62
- Object.defineProperty(this, _allowCache, {
63
- writable: true,
64
- value: false
65
- });
66
- const {
67
- functionKey,
68
- handlerName,
69
- handlerPath,
70
- handlerModuleNesting,
71
- timeout
72
- } = funOptions;
73
-
74
- if (v3Utils) {
75
- this.log = v3Utils.log;
76
- this.progress = v3Utils.progress;
77
- this.writeText = v3Utils.writeText;
78
- this.v3Utils = v3Utils;
79
- }
80
-
81
- _classPrivateFieldLooseBase(this, _env)[_env] = env;
82
- _classPrivateFieldLooseBase(this, _functionKey)[_functionKey] = functionKey;
83
- _classPrivateFieldLooseBase(this, _handlerName)[_handlerName] = handlerName;
84
- _classPrivateFieldLooseBase(this, _handlerPath)[_handlerPath] = handlerPath;
85
- _classPrivateFieldLooseBase(this, _handlerModuleNesting)[_handlerModuleNesting] = handlerModuleNesting;
86
- _classPrivateFieldLooseBase(this, _timeout)[_timeout] = timeout;
87
- _classPrivateFieldLooseBase(this, _allowCache)[_allowCache] = allowCache;
88
- } // no-op
89
- // () => void
90
-
91
-
92
- cleanup() {}
93
-
94
- async run(event, context) {
95
- const childProcess = (0, _execa.node)(childProcessHelperPath, [_classPrivateFieldLooseBase(this, _functionKey)[_functionKey], _classPrivateFieldLooseBase(this, _handlerName)[_handlerName], _classPrivateFieldLooseBase(this, _handlerPath)[_handlerPath], _classPrivateFieldLooseBase(this, _handlerModuleNesting)[_handlerModuleNesting]], {
96
- env: _classPrivateFieldLooseBase(this, _env)[_env],
97
- stdio: 'inherit'
98
- });
99
- const message = new Promise((resolve, reject) => {
100
- childProcess.on('message', data => {
101
- if (data.error) reject(data.error);else resolve(data);
102
- });
103
- }).finally(() => {
104
- childProcess.kill();
105
- });
106
- childProcess.send({
107
- context,
108
- event,
109
- allowCache: _classPrivateFieldLooseBase(this, _allowCache)[_allowCache],
110
- timeout: _classPrivateFieldLooseBase(this, _timeout)[_timeout]
111
- });
112
- let result;
113
-
114
- try {
115
- result = await message;
116
- } catch (err) {
117
- // TODO
118
- if (this.log) {
119
- this.log.error(err);
120
- } else {
121
- console.log(err);
122
- }
123
-
124
- throw err;
125
- }
126
-
127
- return result;
128
- }
129
-
130
- }
131
-
132
- exports.default = ChildProcessRunner;
@@ -1,40 +0,0 @@
1
- "use strict";
2
-
3
- var _index = _interopRequireDefault(require("../in-process-runner/index.js"));
4
-
5
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6
-
7
- // TODO handle this:
8
- process.on('uncaughtException', err => {
9
- const {
10
- constructor: {
11
- name
12
- },
13
- message,
14
- stack
15
- } = err;
16
- process.send({
17
- // process.send() can't serialize an Error object, so we help it out a bit
18
- error: {
19
- constructor: {
20
- name
21
- },
22
- message,
23
- stack
24
- }
25
- });
26
- });
27
- const [,, functionKey, handlerName, handlerPath] = process.argv;
28
- process.on('message', async messageData => {
29
- const {
30
- context,
31
- event,
32
- allowCache,
33
- timeout
34
- } = messageData; // TODO we could probably cache this in the module scope?
35
-
36
- const inProcessRunner = new _index.default(functionKey, handlerPath, handlerName, process.env, timeout, allowCache);
37
- const result = await inProcessRunner.run(event, context); // TODO check serializeability (contains function, symbol etc)
38
-
39
- process.send(result);
40
- });
@@ -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 }; }