serverless-offline 8.2.0 → 8.5.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.
- package/README.md +157 -116
- package/dist/ServerlessOffline.js +98 -26
- package/dist/config/commandOptions.js +4 -0
- package/dist/config/constants.js +1 -1
- package/dist/config/defaultOptions.js +1 -0
- package/dist/events/http/Endpoint.js +27 -9
- package/dist/events/http/Http.js +3 -3
- package/dist/events/http/HttpServer.js +355 -82
- package/dist/events/http/authFunctionNameExtractor.js +14 -8
- package/dist/events/http/authJWTSettingsExtractor.js +14 -7
- package/dist/events/http/createAuthScheme.js +44 -9
- package/dist/events/http/createJWTAuthScheme.js +52 -13
- package/dist/events/http/lambda-events/LambdaIntegrationEvent.js +7 -6
- package/dist/events/http/lambda-events/LambdaProxyIntegrationEvent.js +38 -7
- package/dist/events/http/lambda-events/LambdaProxyIntegrationEventV2.js +37 -6
- package/dist/events/http/lambda-events/VelocityContext.js +4 -4
- package/dist/events/http/lambda-events/index.js +4 -4
- package/dist/events/http/lambda-events/renderVelocityTemplateObject.js +19 -7
- package/dist/events/schedule/Schedule.js +45 -10
- package/dist/events/websocket/HttpServer.js +24 -7
- package/dist/events/websocket/WebSocket.js +14 -6
- package/dist/events/websocket/WebSocketClients.js +127 -38
- package/dist/events/websocket/WebSocketServer.js +79 -11
- package/dist/events/websocket/http-routes/_catchAll/catchAllRoute.js +9 -2
- package/dist/events/websocket/http-routes/connections/ConnectionsController.js +1 -1
- package/dist/events/websocket/http-routes/connections/connectionsRoutes.js +28 -5
- package/dist/events/websocket/lambda-events/WebSocketConnectEvent.js +5 -5
- package/dist/events/websocket/lambda-events/WebSocketDisconnectEvent.js +1 -1
- package/dist/events/websocket/lambda-events/WebSocketEvent.js +3 -3
- package/dist/events/websocket/lambda-events/WebSocketRequestContext.js +4 -4
- package/dist/lambda/HttpServer.js +34 -10
- package/dist/lambda/Lambda.js +15 -7
- package/dist/lambda/LambdaContext.js +1 -1
- package/dist/lambda/LambdaFunction.js +40 -23
- package/dist/lambda/LambdaFunctionPool.js +9 -8
- package/dist/lambda/handler-runner/HandlerRunner.js +51 -16
- package/dist/lambda/handler-runner/child-process-runner/ChildProcessRunner.js +21 -8
- package/dist/lambda/handler-runner/child-process-runner/childProcessHelper.js +1 -10
- package/dist/lambda/handler-runner/docker-runner/DockerContainer.js +168 -69
- package/dist/lambda/handler-runner/docker-runner/DockerImage.js +21 -5
- package/dist/lambda/handler-runner/docker-runner/DockerRunner.js +4 -4
- package/dist/lambda/handler-runner/go-runner/GoRunner.js +211 -0
- package/dist/lambda/handler-runner/go-runner/index.js +15 -0
- package/dist/lambda/handler-runner/in-process-runner/InProcessRunner.js +16 -22
- package/dist/lambda/handler-runner/java-runner/JavaRunner.js +26 -14
- package/dist/lambda/handler-runner/python-runner/PythonRunner.js +20 -7
- package/dist/lambda/handler-runner/ruby-runner/RubyRunner.js +22 -24
- package/dist/lambda/handler-runner/worker-thread-runner/WorkerThreadRunner.js +2 -2
- package/dist/lambda/handler-runner/worker-thread-runner/workerThreadHelper.js +1 -11
- package/dist/lambda/routes/invocations/InvocationsController.js +30 -11
- package/dist/lambda/routes/invocations/invocationsRoute.js +4 -3
- package/dist/lambda/routes/invoke-async/InvokeAsyncController.js +2 -6
- package/dist/serverlessLog.js +1 -1
- package/dist/utils/checkGoVersion.js +27 -0
- package/dist/utils/getHttpApiCorsConfig.js +18 -5
- package/dist/utils/index.js +24 -16
- package/package.json +86 -37
|
@@ -11,7 +11,8 @@ var _debugLog = _interopRequireDefault(require("../../../../debugLog.js"));
|
|
|
11
11
|
|
|
12
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
13
|
|
|
14
|
-
function connectionsRoutes(webSocketClients) {
|
|
14
|
+
function connectionsRoutes(webSocketClients, v3Utils) {
|
|
15
|
+
const log = v3Utils && v3Utils.log;
|
|
15
16
|
const connectionsController = new _ConnectionsController.default(webSocketClients);
|
|
16
17
|
return [{
|
|
17
18
|
method: 'POST',
|
|
@@ -30,14 +31,25 @@ function connectionsRoutes(webSocketClients) {
|
|
|
30
31
|
payload,
|
|
31
32
|
url
|
|
32
33
|
} = request;
|
|
33
|
-
|
|
34
|
+
|
|
35
|
+
if (log) {
|
|
36
|
+
log.debug(`got POST to ${url}`);
|
|
37
|
+
} else {
|
|
38
|
+
(0, _debugLog.default)(`got POST to ${url}`);
|
|
39
|
+
}
|
|
40
|
+
|
|
34
41
|
const clientExisted = await connectionsController.send(connectionId, payload);
|
|
35
42
|
|
|
36
43
|
if (!clientExisted) {
|
|
37
44
|
return h.response(null).code(410);
|
|
38
45
|
}
|
|
39
46
|
|
|
40
|
-
(
|
|
47
|
+
if (log) {
|
|
48
|
+
log.debug(`sent data to connection:${connectionId}`);
|
|
49
|
+
} else {
|
|
50
|
+
(0, _debugLog.default)(`sent data to connection:${connectionId}`);
|
|
51
|
+
}
|
|
52
|
+
|
|
41
53
|
return null;
|
|
42
54
|
}
|
|
43
55
|
|
|
@@ -57,14 +69,25 @@ function connectionsRoutes(webSocketClients) {
|
|
|
57
69
|
},
|
|
58
70
|
url
|
|
59
71
|
} = request;
|
|
60
|
-
|
|
72
|
+
|
|
73
|
+
if (log) {
|
|
74
|
+
log.debug(`got DELETE to ${url}`);
|
|
75
|
+
} else {
|
|
76
|
+
(0, _debugLog.default)(`got DELETE to ${url}`);
|
|
77
|
+
}
|
|
78
|
+
|
|
61
79
|
const clientExisted = connectionsController.remove(connectionId);
|
|
62
80
|
|
|
63
81
|
if (!clientExisted) {
|
|
64
82
|
return h.response(null).code(410);
|
|
65
83
|
}
|
|
66
84
|
|
|
67
|
-
(
|
|
85
|
+
if (log) {
|
|
86
|
+
log.debug(`closed connection:${connectionId}`);
|
|
87
|
+
} else {
|
|
88
|
+
(0, _debugLog.default)(`closed connection:${connectionId}`);
|
|
89
|
+
}
|
|
90
|
+
|
|
68
91
|
return h.response(null).code(204);
|
|
69
92
|
}
|
|
70
93
|
|
|
@@ -17,15 +17,15 @@ var id = 0;
|
|
|
17
17
|
|
|
18
18
|
function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
|
|
19
19
|
|
|
20
|
-
var _connectionId = _classPrivateFieldLooseKey("connectionId");
|
|
20
|
+
var _connectionId = /*#__PURE__*/_classPrivateFieldLooseKey("connectionId");
|
|
21
21
|
|
|
22
|
-
var _httpsProtocol = _classPrivateFieldLooseKey("httpsProtocol");
|
|
22
|
+
var _httpsProtocol = /*#__PURE__*/_classPrivateFieldLooseKey("httpsProtocol");
|
|
23
23
|
|
|
24
|
-
var _rawHeaders = _classPrivateFieldLooseKey("rawHeaders");
|
|
24
|
+
var _rawHeaders = /*#__PURE__*/_classPrivateFieldLooseKey("rawHeaders");
|
|
25
25
|
|
|
26
|
-
var _url = _classPrivateFieldLooseKey("url");
|
|
26
|
+
var _url = /*#__PURE__*/_classPrivateFieldLooseKey("url");
|
|
27
27
|
|
|
28
|
-
var _websocketPort = _classPrivateFieldLooseKey("websocketPort");
|
|
28
|
+
var _websocketPort = /*#__PURE__*/_classPrivateFieldLooseKey("websocketPort");
|
|
29
29
|
|
|
30
30
|
class WebSocketConnectEvent {
|
|
31
31
|
constructor(connectionId, request, options) {
|
|
@@ -17,7 +17,7 @@ var id = 0;
|
|
|
17
17
|
|
|
18
18
|
function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
|
|
19
19
|
|
|
20
|
-
var _connectionId = _classPrivateFieldLooseKey("connectionId");
|
|
20
|
+
var _connectionId = /*#__PURE__*/_classPrivateFieldLooseKey("connectionId");
|
|
21
21
|
|
|
22
22
|
class WebSocketDisconnectEvent {
|
|
23
23
|
constructor(connectionId) {
|
|
@@ -15,11 +15,11 @@ var id = 0;
|
|
|
15
15
|
|
|
16
16
|
function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
|
|
17
17
|
|
|
18
|
-
var _connectionId = _classPrivateFieldLooseKey("connectionId");
|
|
18
|
+
var _connectionId = /*#__PURE__*/_classPrivateFieldLooseKey("connectionId");
|
|
19
19
|
|
|
20
|
-
var _payload = _classPrivateFieldLooseKey("payload");
|
|
20
|
+
var _payload = /*#__PURE__*/_classPrivateFieldLooseKey("payload");
|
|
21
21
|
|
|
22
|
-
var _route = _classPrivateFieldLooseKey("route");
|
|
22
|
+
var _route = /*#__PURE__*/_classPrivateFieldLooseKey("route");
|
|
23
23
|
|
|
24
24
|
class WebSocketEvent {
|
|
25
25
|
constructor(connectionId, route, payload) {
|
|
@@ -18,13 +18,13 @@ const {
|
|
|
18
18
|
} = Date;
|
|
19
19
|
const connectedAt = new Map();
|
|
20
20
|
|
|
21
|
-
var _connectionId = _classPrivateFieldLooseKey("connectionId");
|
|
21
|
+
var _connectionId = /*#__PURE__*/_classPrivateFieldLooseKey("connectionId");
|
|
22
22
|
|
|
23
|
-
var _eventType = _classPrivateFieldLooseKey("eventType");
|
|
23
|
+
var _eventType = /*#__PURE__*/_classPrivateFieldLooseKey("eventType");
|
|
24
24
|
|
|
25
|
-
var _route = _classPrivateFieldLooseKey("route");
|
|
25
|
+
var _route = /*#__PURE__*/_classPrivateFieldLooseKey("route");
|
|
26
26
|
|
|
27
|
-
var _connectedAt = _classPrivateFieldLooseKey("connectedAt");
|
|
27
|
+
var _connectedAt = /*#__PURE__*/_classPrivateFieldLooseKey("connectedAt");
|
|
28
28
|
|
|
29
29
|
class WebSocketRequestContext {
|
|
30
30
|
constructor(eventType, route, connectionId) {
|
|
@@ -21,14 +21,14 @@ var id = 0;
|
|
|
21
21
|
|
|
22
22
|
function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
|
|
23
23
|
|
|
24
|
-
var _lambda = _classPrivateFieldLooseKey("lambda");
|
|
24
|
+
var _lambda = /*#__PURE__*/_classPrivateFieldLooseKey("lambda");
|
|
25
25
|
|
|
26
|
-
var _options = _classPrivateFieldLooseKey("options");
|
|
26
|
+
var _options = /*#__PURE__*/_classPrivateFieldLooseKey("options");
|
|
27
27
|
|
|
28
|
-
var _server = _classPrivateFieldLooseKey("server");
|
|
28
|
+
var _server = /*#__PURE__*/_classPrivateFieldLooseKey("server");
|
|
29
29
|
|
|
30
30
|
class HttpServer {
|
|
31
|
-
constructor(options, lambda) {
|
|
31
|
+
constructor(options, lambda, v3Utils) {
|
|
32
32
|
Object.defineProperty(this, _lambda, {
|
|
33
33
|
writable: true,
|
|
34
34
|
value: null
|
|
@@ -51,12 +51,20 @@ class HttpServer {
|
|
|
51
51
|
host,
|
|
52
52
|
port: lambdaPort
|
|
53
53
|
};
|
|
54
|
+
|
|
55
|
+
if (v3Utils) {
|
|
56
|
+
this.log = v3Utils.log;
|
|
57
|
+
this.progress = v3Utils.progress;
|
|
58
|
+
this.writeText = v3Utils.writeText;
|
|
59
|
+
this.v3Utils = v3Utils;
|
|
60
|
+
}
|
|
61
|
+
|
|
54
62
|
_classPrivateFieldLooseBase(this, _server)[_server] = new _hapi.Server(serverOptions);
|
|
55
63
|
}
|
|
56
64
|
|
|
57
65
|
async start() {
|
|
58
66
|
// add routes
|
|
59
|
-
const _invocationsRoute = (0, _index.invocationsRoute)(_classPrivateFieldLooseBase(this, _lambda)[_lambda], _classPrivateFieldLooseBase(this, _options)[_options]);
|
|
67
|
+
const _invocationsRoute = (0, _index.invocationsRoute)(_classPrivateFieldLooseBase(this, _lambda)[_lambda], _classPrivateFieldLooseBase(this, _options)[_options], this.v3Utils);
|
|
60
68
|
|
|
61
69
|
const _invokeAsyncRoute = (0, _index.invokeAsyncRoute)(_classPrivateFieldLooseBase(this, _lambda)[_lambda], _classPrivateFieldLooseBase(this, _options)[_options]);
|
|
62
70
|
|
|
@@ -71,19 +79,35 @@ class HttpServer {
|
|
|
71
79
|
try {
|
|
72
80
|
await _classPrivateFieldLooseBase(this, _server)[_server].start();
|
|
73
81
|
} catch (err) {
|
|
74
|
-
|
|
82
|
+
if (this.log) {
|
|
83
|
+
this.log.error(`Unexpected error while starting serverless-offline lambda server on port ${lambdaPort}:`, err);
|
|
84
|
+
} else {
|
|
85
|
+
console.error(`Unexpected error while starting serverless-offline lambda server on port ${lambdaPort}:`, err);
|
|
86
|
+
}
|
|
87
|
+
|
|
75
88
|
process.exit(1);
|
|
76
89
|
}
|
|
77
90
|
|
|
78
|
-
(
|
|
91
|
+
if (this.log) {
|
|
92
|
+
this.log.notice(`Offline [http for lambda] listening on http${httpsProtocol ? 's' : ''}://${host}:${lambdaPort}`);
|
|
93
|
+
} else {
|
|
94
|
+
(0, _serverlessLog.default)(`Offline [http for lambda] listening on http${httpsProtocol ? 's' : ''}://${host}:${lambdaPort}`);
|
|
95
|
+
} // Print all the invocation routes to debug
|
|
96
|
+
|
|
79
97
|
|
|
80
98
|
const basePath = `http${httpsProtocol ? 's' : ''}://${host}:${lambdaPort}`;
|
|
81
99
|
|
|
82
100
|
const funcNamePairs = _classPrivateFieldLooseBase(this, _lambda)[_lambda].listFunctionNamePairs();
|
|
83
101
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
102
|
+
if (this.log) {
|
|
103
|
+
this.log.notice([`Function names exposed for local invocation by aws-sdk:`, ..._classPrivateFieldLooseBase(this, _lambda)[_lambda].listFunctionNames().map(functionName => ` * ${funcNamePairs[functionName]}: ${functionName}`)].join('\n'));
|
|
104
|
+
this.log.debug([`Lambda Invocation Routes (for AWS SDK or AWS CLI):`, ..._classPrivateFieldLooseBase(this, _lambda)[_lambda].listFunctionNames().map(functionName => ` * ${_invocationsRoute.method} ${basePath}${_invocationsRoute.path.replace('{functionName}', functionName)}`)].join('\n'));
|
|
105
|
+
this.log.debug([`Lambda Async Invocation Routes (for AWS SDK or AWS CLI):`, ..._classPrivateFieldLooseBase(this, _lambda)[_lambda].listFunctionNames().map(functionName => ` * ${_invokeAsyncRoute.method} ${basePath}${_invokeAsyncRoute.path.replace('{functionName}', functionName)}`)].join('\n'));
|
|
106
|
+
} else {
|
|
107
|
+
(0, _serverlessLog.default)([`Function names exposed for local invocation by aws-sdk:`, ..._classPrivateFieldLooseBase(this, _lambda)[_lambda].listFunctionNames().map(functionName => ` * ${funcNamePairs[functionName]}: ${functionName}`)].join('\n'));
|
|
108
|
+
(0, _debugLog.default)([`Lambda Invocation Routes (for AWS SDK or AWS CLI):`, ..._classPrivateFieldLooseBase(this, _lambda)[_lambda].listFunctionNames().map(functionName => ` * ${_invocationsRoute.method} ${basePath}${_invocationsRoute.path.replace('{functionName}', functionName)}`)].join('\n'));
|
|
109
|
+
(0, _debugLog.default)([`Lambda Async Invocation Routes (for AWS SDK or AWS CLI):`, ..._classPrivateFieldLooseBase(this, _lambda)[_lambda].listFunctionNames().map(functionName => ` * ${_invokeAsyncRoute.method} ${basePath}${_invokeAsyncRoute.path.replace('{functionName}', functionName)}`)].join('\n'));
|
|
110
|
+
}
|
|
87
111
|
} // stops the server
|
|
88
112
|
|
|
89
113
|
|
package/dist/lambda/Lambda.js
CHANGED
|
@@ -17,16 +17,16 @@ var id = 0;
|
|
|
17
17
|
|
|
18
18
|
function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
|
|
19
19
|
|
|
20
|
-
var _httpServer = _classPrivateFieldLooseKey("httpServer");
|
|
20
|
+
var _httpServer = /*#__PURE__*/_classPrivateFieldLooseKey("httpServer");
|
|
21
21
|
|
|
22
|
-
var _lambdas = _classPrivateFieldLooseKey("lambdas");
|
|
22
|
+
var _lambdas = /*#__PURE__*/_classPrivateFieldLooseKey("lambdas");
|
|
23
23
|
|
|
24
|
-
var _lambdaFunctionNamesKeys = _classPrivateFieldLooseKey("lambdaFunctionNamesKeys");
|
|
24
|
+
var _lambdaFunctionNamesKeys = /*#__PURE__*/_classPrivateFieldLooseKey("lambdaFunctionNamesKeys");
|
|
25
25
|
|
|
26
|
-
var _lambdaFunctionPool = _classPrivateFieldLooseKey("lambdaFunctionPool");
|
|
26
|
+
var _lambdaFunctionPool = /*#__PURE__*/_classPrivateFieldLooseKey("lambdaFunctionPool");
|
|
27
27
|
|
|
28
28
|
class Lambda {
|
|
29
|
-
constructor(serverless, options) {
|
|
29
|
+
constructor(serverless, options, v3Utils) {
|
|
30
30
|
Object.defineProperty(this, _httpServer, {
|
|
31
31
|
writable: true,
|
|
32
32
|
value: null
|
|
@@ -43,8 +43,16 @@ class Lambda {
|
|
|
43
43
|
writable: true,
|
|
44
44
|
value: null
|
|
45
45
|
});
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
|
|
47
|
+
if (v3Utils) {
|
|
48
|
+
this.log = v3Utils.log;
|
|
49
|
+
this.progress = v3Utils.progress;
|
|
50
|
+
this.writeText = v3Utils.writeText;
|
|
51
|
+
this.v3Utils = v3Utils;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
_classPrivateFieldLooseBase(this, _httpServer)[_httpServer] = new _HttpServer.default(options, this, v3Utils);
|
|
55
|
+
_classPrivateFieldLooseBase(this, _lambdaFunctionPool)[_lambdaFunctionPool] = new _LambdaFunctionPool.default(serverless, options, v3Utils);
|
|
48
56
|
}
|
|
49
57
|
|
|
50
58
|
_create(functionKey, functionDefinition) {
|
|
@@ -11,7 +11,7 @@ var id = 0;
|
|
|
11
11
|
|
|
12
12
|
function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
|
|
13
13
|
|
|
14
|
-
var _context = _classPrivateFieldLooseKey("context");
|
|
14
|
+
var _context = /*#__PURE__*/_classPrivateFieldLooseKey("context");
|
|
15
15
|
|
|
16
16
|
// class for creating a LambdaContext
|
|
17
17
|
// http://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-context.html
|
|
@@ -40,43 +40,43 @@ const {
|
|
|
40
40
|
ceil
|
|
41
41
|
} = Math;
|
|
42
42
|
|
|
43
|
-
var _artifact = _classPrivateFieldLooseKey("artifact");
|
|
43
|
+
var _artifact = /*#__PURE__*/_classPrivateFieldLooseKey("artifact");
|
|
44
44
|
|
|
45
|
-
var _clientContext = _classPrivateFieldLooseKey("clientContext");
|
|
45
|
+
var _clientContext = /*#__PURE__*/_classPrivateFieldLooseKey("clientContext");
|
|
46
46
|
|
|
47
|
-
var _codeDir = _classPrivateFieldLooseKey("codeDir");
|
|
47
|
+
var _codeDir = /*#__PURE__*/_classPrivateFieldLooseKey("codeDir");
|
|
48
48
|
|
|
49
|
-
var _event = _classPrivateFieldLooseKey("event");
|
|
49
|
+
var _event = /*#__PURE__*/_classPrivateFieldLooseKey("event");
|
|
50
50
|
|
|
51
|
-
var _executionTimeEnded = _classPrivateFieldLooseKey("executionTimeEnded");
|
|
51
|
+
var _executionTimeEnded = /*#__PURE__*/_classPrivateFieldLooseKey("executionTimeEnded");
|
|
52
52
|
|
|
53
|
-
var _executionTimeStarted = _classPrivateFieldLooseKey("executionTimeStarted");
|
|
53
|
+
var _executionTimeStarted = /*#__PURE__*/_classPrivateFieldLooseKey("executionTimeStarted");
|
|
54
54
|
|
|
55
|
-
var _functionKey = _classPrivateFieldLooseKey("functionKey");
|
|
55
|
+
var _functionKey = /*#__PURE__*/_classPrivateFieldLooseKey("functionKey");
|
|
56
56
|
|
|
57
|
-
var _functionName = _classPrivateFieldLooseKey("functionName");
|
|
57
|
+
var _functionName = /*#__PURE__*/_classPrivateFieldLooseKey("functionName");
|
|
58
58
|
|
|
59
|
-
var _handlerRunner = _classPrivateFieldLooseKey("handlerRunner");
|
|
59
|
+
var _handlerRunner = /*#__PURE__*/_classPrivateFieldLooseKey("handlerRunner");
|
|
60
60
|
|
|
61
|
-
var _idleTimeStarted = _classPrivateFieldLooseKey("idleTimeStarted");
|
|
61
|
+
var _idleTimeStarted = /*#__PURE__*/_classPrivateFieldLooseKey("idleTimeStarted");
|
|
62
62
|
|
|
63
|
-
var _initialized = _classPrivateFieldLooseKey("initialized");
|
|
63
|
+
var _initialized = /*#__PURE__*/_classPrivateFieldLooseKey("initialized");
|
|
64
64
|
|
|
65
|
-
var _lambdaContext = _classPrivateFieldLooseKey("lambdaContext");
|
|
65
|
+
var _lambdaContext = /*#__PURE__*/_classPrivateFieldLooseKey("lambdaContext");
|
|
66
66
|
|
|
67
|
-
var _lambdaDir = _classPrivateFieldLooseKey("lambdaDir");
|
|
67
|
+
var _lambdaDir = /*#__PURE__*/_classPrivateFieldLooseKey("lambdaDir");
|
|
68
68
|
|
|
69
|
-
var _memorySize = _classPrivateFieldLooseKey("memorySize");
|
|
69
|
+
var _memorySize = /*#__PURE__*/_classPrivateFieldLooseKey("memorySize");
|
|
70
70
|
|
|
71
|
-
var _region = _classPrivateFieldLooseKey("region");
|
|
71
|
+
var _region = /*#__PURE__*/_classPrivateFieldLooseKey("region");
|
|
72
72
|
|
|
73
|
-
var _runtime = _classPrivateFieldLooseKey("runtime");
|
|
73
|
+
var _runtime = /*#__PURE__*/_classPrivateFieldLooseKey("runtime");
|
|
74
74
|
|
|
75
|
-
var _timeout = _classPrivateFieldLooseKey("timeout");
|
|
75
|
+
var _timeout = /*#__PURE__*/_classPrivateFieldLooseKey("timeout");
|
|
76
76
|
|
|
77
77
|
class LambdaFunction {
|
|
78
78
|
// can be 'BUSY' or 'IDLE'
|
|
79
|
-
constructor(functionKey, functionDefinition, serverless, options) {
|
|
79
|
+
constructor(functionKey, functionDefinition, serverless, options, v3Utils) {
|
|
80
80
|
var _functionDefinition$p;
|
|
81
81
|
|
|
82
82
|
Object.defineProperty(this, _artifact, {
|
|
@@ -158,10 +158,18 @@ class LambdaFunction {
|
|
|
158
158
|
provider,
|
|
159
159
|
package: servicePackage = {}
|
|
160
160
|
}
|
|
161
|
-
} = serverless;
|
|
161
|
+
} = serverless;
|
|
162
|
+
|
|
163
|
+
if (v3Utils) {
|
|
164
|
+
this.log = v3Utils.log;
|
|
165
|
+
this.progress = v3Utils.progress;
|
|
166
|
+
this.writeText = v3Utils.writeText;
|
|
167
|
+
this.v3Utils = v3Utils;
|
|
168
|
+
} // TEMP options.location, for compatibility with serverless-webpack:
|
|
162
169
|
// https://github.com/dherault/serverless-offline/issues/787
|
|
163
170
|
// TODO FIXME look into better way to work with serverless-webpack
|
|
164
171
|
|
|
172
|
+
|
|
165
173
|
const _servicePath = (0, _path.resolve)(servicePath, options.location || '');
|
|
166
174
|
|
|
167
175
|
const {
|
|
@@ -216,7 +224,7 @@ class LambdaFunction {
|
|
|
216
224
|
servicePackage: servicePackage.artifact ? (0, _path.resolve)(_servicePath, servicePackage.artifact) : undefined,
|
|
217
225
|
functionPackage: functionPackage.artifact ? (0, _path.resolve)(_servicePath, functionPackage.artifact) : undefined
|
|
218
226
|
};
|
|
219
|
-
_classPrivateFieldLooseBase(this, _handlerRunner)[_handlerRunner] = new _index.default(funOptions, options, env);
|
|
227
|
+
_classPrivateFieldLooseBase(this, _handlerRunner)[_handlerRunner] = new _index.default(funOptions, options, env, v3Utils);
|
|
220
228
|
_classPrivateFieldLooseBase(this, _lambdaContext)[_lambdaContext] = new _LambdaContext.default(name, memorySize);
|
|
221
229
|
}
|
|
222
230
|
|
|
@@ -236,8 +244,13 @@ class LambdaFunction {
|
|
|
236
244
|
// print message but keep working (don't error out or exit process)
|
|
237
245
|
if (!_index2.supportedRuntimes.has(_classPrivateFieldLooseBase(this, _runtime)[_runtime])) {
|
|
238
246
|
// this.printBlankLine(); // TODO
|
|
239
|
-
|
|
240
|
-
|
|
247
|
+
if (this.log) {
|
|
248
|
+
this.log.warning();
|
|
249
|
+
this.log.warning(`Warning: found unsupported runtime '${_classPrivateFieldLooseBase(this, _runtime)[_runtime]}' for function '${_classPrivateFieldLooseBase(this, _functionKey)[_functionKey]}'`);
|
|
250
|
+
} else {
|
|
251
|
+
console.log('');
|
|
252
|
+
(0, _serverlessLog.default)(`Warning: found unsupported runtime '${_classPrivateFieldLooseBase(this, _runtime)[_runtime]}' for function '${_classPrivateFieldLooseBase(this, _functionKey)[_functionKey]}'`);
|
|
253
|
+
}
|
|
241
254
|
}
|
|
242
255
|
} // based on:
|
|
243
256
|
// https://github.com/serverless/serverless/blob/v1.50.0/lib/plugins/aws/invokeLocal/index.js#L108
|
|
@@ -358,7 +371,11 @@ class LambdaFunction {
|
|
|
358
371
|
|
|
359
372
|
|
|
360
373
|
if (!_classPrivateFieldLooseBase(this, _handlerRunner)[_handlerRunner].isDockerRunner()) {
|
|
361
|
-
|
|
374
|
+
if (this.log) {
|
|
375
|
+
this.log.notice(`(λ: ${_classPrivateFieldLooseBase(this, _functionKey)[_functionKey]}) RequestId: ${requestId} Duration: ${this._executionTimeInMillis().toFixed(2)} ms Billed Duration: ${this._billedExecutionTimeInMillis()} ms`);
|
|
376
|
+
} else {
|
|
377
|
+
(0, _serverlessLog.default)(`(λ: ${_classPrivateFieldLooseBase(this, _functionKey)[_functionKey]}) RequestId: ${requestId} Duration: ${this._executionTimeInMillis().toFixed(2)} ms Billed Duration: ${this._billedExecutionTimeInMillis()} ms`);
|
|
378
|
+
}
|
|
362
379
|
}
|
|
363
380
|
|
|
364
381
|
this.status = 'IDLE';
|
|
@@ -15,16 +15,16 @@ var id = 0;
|
|
|
15
15
|
|
|
16
16
|
function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
|
|
17
17
|
|
|
18
|
-
var _options = _classPrivateFieldLooseKey("options");
|
|
18
|
+
var _options = /*#__PURE__*/_classPrivateFieldLooseKey("options");
|
|
19
19
|
|
|
20
|
-
var _pool = _classPrivateFieldLooseKey("pool");
|
|
20
|
+
var _pool = /*#__PURE__*/_classPrivateFieldLooseKey("pool");
|
|
21
21
|
|
|
22
|
-
var _serverless = _classPrivateFieldLooseKey("serverless");
|
|
22
|
+
var _serverless = /*#__PURE__*/_classPrivateFieldLooseKey("serverless");
|
|
23
23
|
|
|
24
|
-
var _timerRef = _classPrivateFieldLooseKey("timerRef");
|
|
24
|
+
var _timerRef = /*#__PURE__*/_classPrivateFieldLooseKey("timerRef");
|
|
25
25
|
|
|
26
26
|
class LambdaFunctionPool {
|
|
27
|
-
constructor(serverless, options) {
|
|
27
|
+
constructor(serverless, options, v3Utils) {
|
|
28
28
|
Object.defineProperty(this, _options, {
|
|
29
29
|
writable: true,
|
|
30
30
|
value: null
|
|
@@ -42,7 +42,8 @@ class LambdaFunctionPool {
|
|
|
42
42
|
value: null
|
|
43
43
|
});
|
|
44
44
|
_classPrivateFieldLooseBase(this, _options)[_options] = options;
|
|
45
|
-
_classPrivateFieldLooseBase(this, _serverless)[_serverless] = serverless;
|
|
45
|
+
_classPrivateFieldLooseBase(this, _serverless)[_serverless] = serverless;
|
|
46
|
+
this.v3Utils = v3Utils; // start cleaner
|
|
46
47
|
|
|
47
48
|
this._startCleanTimer();
|
|
48
49
|
}
|
|
@@ -98,7 +99,7 @@ class LambdaFunctionPool {
|
|
|
98
99
|
let lambdaFunction; // we don't have any instances
|
|
99
100
|
|
|
100
101
|
if (lambdaFunctions == null) {
|
|
101
|
-
lambdaFunction = new _LambdaFunction.default(functionKey, functionDefinition, _classPrivateFieldLooseBase(this, _serverless)[_serverless], _classPrivateFieldLooseBase(this, _options)[_options]);
|
|
102
|
+
lambdaFunction = new _LambdaFunction.default(functionKey, functionDefinition, _classPrivateFieldLooseBase(this, _serverless)[_serverless], _classPrivateFieldLooseBase(this, _options)[_options], this.v3Utils);
|
|
102
103
|
|
|
103
104
|
_classPrivateFieldLooseBase(this, _pool)[_pool].set(functionKey, new Set([lambdaFunction]));
|
|
104
105
|
|
|
@@ -112,7 +113,7 @@ class LambdaFunctionPool {
|
|
|
112
113
|
}) => status === 'IDLE'); // we don't have any IDLE instances
|
|
113
114
|
|
|
114
115
|
if (lambdaFunction == null) {
|
|
115
|
-
lambdaFunction = new _LambdaFunction.default(functionKey, functionDefinition, _classPrivateFieldLooseBase(this, _serverless)[_serverless], _classPrivateFieldLooseBase(this, _options)[_options]);
|
|
116
|
+
lambdaFunction = new _LambdaFunction.default(functionKey, functionDefinition, _classPrivateFieldLooseBase(this, _serverless)[_serverless], _classPrivateFieldLooseBase(this, _options)[_options], this.v3Utils);
|
|
116
117
|
lambdaFunctions.add(lambdaFunction); // console.log(`${lambdaFunctions.size} lambdaFunctions`)
|
|
117
118
|
|
|
118
119
|
return lambdaFunction;
|
|
@@ -15,9 +15,9 @@ var _index2 = require("../../utils/index.js");
|
|
|
15
15
|
|
|
16
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
17
|
|
|
18
|
-
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var
|
|
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
19
|
|
|
20
|
-
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
|
|
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
21
|
|
|
22
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
23
|
|
|
@@ -25,16 +25,16 @@ var id = 0;
|
|
|
25
25
|
|
|
26
26
|
function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
|
|
27
27
|
|
|
28
|
-
var _env = _classPrivateFieldLooseKey("env");
|
|
28
|
+
var _env = /*#__PURE__*/_classPrivateFieldLooseKey("env");
|
|
29
29
|
|
|
30
|
-
var _funOptions = _classPrivateFieldLooseKey("funOptions");
|
|
30
|
+
var _funOptions = /*#__PURE__*/_classPrivateFieldLooseKey("funOptions");
|
|
31
31
|
|
|
32
|
-
var _options = _classPrivateFieldLooseKey("options");
|
|
32
|
+
var _options = /*#__PURE__*/_classPrivateFieldLooseKey("options");
|
|
33
33
|
|
|
34
|
-
var _runner = _classPrivateFieldLooseKey("runner");
|
|
34
|
+
var _runner = /*#__PURE__*/_classPrivateFieldLooseKey("runner");
|
|
35
35
|
|
|
36
36
|
class HandlerRunner {
|
|
37
|
-
constructor(funOptions, options, env) {
|
|
37
|
+
constructor(funOptions, options, env, v3Utils) {
|
|
38
38
|
Object.defineProperty(this, _env, {
|
|
39
39
|
writable: true,
|
|
40
40
|
value: null
|
|
@@ -54,6 +54,13 @@ class HandlerRunner {
|
|
|
54
54
|
_classPrivateFieldLooseBase(this, _env)[_env] = env;
|
|
55
55
|
_classPrivateFieldLooseBase(this, _funOptions)[_funOptions] = funOptions;
|
|
56
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
|
+
}
|
|
57
64
|
}
|
|
58
65
|
|
|
59
66
|
async _loadRunner() {
|
|
@@ -72,17 +79,31 @@ class HandlerRunner {
|
|
|
72
79
|
timeout
|
|
73
80
|
} = _classPrivateFieldLooseBase(this, _funOptions)[_funOptions];
|
|
74
81
|
|
|
75
|
-
(
|
|
82
|
+
if (this.log) {
|
|
83
|
+
this.log.debug(`Loading handler... (${handlerPath})`);
|
|
84
|
+
} else {
|
|
85
|
+
(0, _debugLog.default)(`Loading handler... (${handlerPath})`);
|
|
86
|
+
}
|
|
76
87
|
|
|
77
88
|
if (useDocker) {
|
|
78
89
|
// https://github.com/lambci/docker-lambda/issues/329
|
|
79
90
|
if (runtime === 'nodejs14.x') {
|
|
80
|
-
(
|
|
91
|
+
if (this.log) {
|
|
92
|
+
this.log.warning('"nodejs14.x" runtime is not supported with docker. See https://github.com/lambci/docker-lambda/issues/329');
|
|
93
|
+
} else {
|
|
94
|
+
(0, _serverlessLog.logWarning)('"nodejs14.x" runtime is not supported with docker. See https://github.com/lambci/docker-lambda/issues/329');
|
|
95
|
+
}
|
|
96
|
+
|
|
81
97
|
throw new Error('Unsupported runtime');
|
|
82
98
|
}
|
|
83
99
|
|
|
84
100
|
if (runtime === 'python3.9') {
|
|
85
|
-
(
|
|
101
|
+
if (this.log) {
|
|
102
|
+
this.log.warning('"python3.9" runtime is not supported with docker.');
|
|
103
|
+
} else {
|
|
104
|
+
(0, _serverlessLog.logWarning)('"python3.9" runtime is not supported with docker.');
|
|
105
|
+
}
|
|
106
|
+
|
|
86
107
|
throw new Error('Unsupported runtime');
|
|
87
108
|
}
|
|
88
109
|
|
|
@@ -96,7 +117,7 @@ class HandlerRunner {
|
|
|
96
117
|
const {
|
|
97
118
|
default: DockerRunner
|
|
98
119
|
} = await Promise.resolve().then(() => _interopRequireWildcard(require('./docker-runner/index.js')));
|
|
99
|
-
return new DockerRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], dockerOptions);
|
|
120
|
+
return new DockerRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], dockerOptions, this.v3Utils);
|
|
100
121
|
}
|
|
101
122
|
|
|
102
123
|
if (_index.supportedNodejs.has(runtime)) {
|
|
@@ -104,7 +125,7 @@ class HandlerRunner {
|
|
|
104
125
|
const {
|
|
105
126
|
default: ChildProcessRunner
|
|
106
127
|
} = await Promise.resolve().then(() => _interopRequireWildcard(require('./child-process-runner/index.js')));
|
|
107
|
-
return new ChildProcessRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], allowCache);
|
|
128
|
+
return new ChildProcessRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], allowCache, this.v3Utils);
|
|
108
129
|
}
|
|
109
130
|
|
|
110
131
|
if (useWorkerThreads) {
|
|
@@ -123,25 +144,32 @@ class HandlerRunner {
|
|
|
123
144
|
return new InProcessRunner(functionKey, handlerPath, handlerName, _classPrivateFieldLooseBase(this, _env)[_env], timeout, allowCache);
|
|
124
145
|
}
|
|
125
146
|
|
|
147
|
+
if (_index.supportedGo.has(runtime)) {
|
|
148
|
+
const {
|
|
149
|
+
default: GoRunner
|
|
150
|
+
} = await Promise.resolve().then(() => _interopRequireWildcard(require('./go-runner/index.js')));
|
|
151
|
+
return new GoRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], this.v3Utils);
|
|
152
|
+
}
|
|
153
|
+
|
|
126
154
|
if (_index.supportedPython.has(runtime)) {
|
|
127
155
|
const {
|
|
128
156
|
default: PythonRunner
|
|
129
157
|
} = await Promise.resolve().then(() => _interopRequireWildcard(require('./python-runner/index.js')));
|
|
130
|
-
return new PythonRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], allowCache);
|
|
158
|
+
return new PythonRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], allowCache, this.v3Utils);
|
|
131
159
|
}
|
|
132
160
|
|
|
133
161
|
if (_index.supportedRuby.has(runtime)) {
|
|
134
162
|
const {
|
|
135
163
|
default: RubyRunner
|
|
136
164
|
} = await Promise.resolve().then(() => _interopRequireWildcard(require('./ruby-runner/index.js')));
|
|
137
|
-
return new RubyRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], allowCache);
|
|
165
|
+
return new RubyRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], allowCache, this.v3Utils);
|
|
138
166
|
}
|
|
139
167
|
|
|
140
168
|
if (_index.supportedJava.has(runtime)) {
|
|
141
169
|
const {
|
|
142
170
|
default: JavaRunner
|
|
143
171
|
} = await Promise.resolve().then(() => _interopRequireWildcard(require('./java-runner/index.js')));
|
|
144
|
-
return new JavaRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], allowCache);
|
|
172
|
+
return new JavaRunner(_classPrivateFieldLooseBase(this, _funOptions)[_funOptions], _classPrivateFieldLooseBase(this, _env)[_env], allowCache, this.v3Utils);
|
|
145
173
|
} // TODO FIXME
|
|
146
174
|
|
|
147
175
|
|
|
@@ -156,9 +184,16 @@ class HandlerRunner {
|
|
|
156
184
|
const versionIsSatisfied = (0, _index2.satisfiesVersionRange)(currentVersion, requiredVersionRange); // we're happy
|
|
157
185
|
|
|
158
186
|
if (!versionIsSatisfied) {
|
|
159
|
-
(
|
|
187
|
+
if (this.log) {
|
|
188
|
+
this.log.warning(`"worker threads" require node.js version ${requiredVersionRange}, but found version ${currentVersion}.
|
|
189
|
+
To use this feature you have to update node.js to a later version.
|
|
190
|
+
`);
|
|
191
|
+
} else {
|
|
192
|
+
(0, _serverlessLog.logWarning)(`"worker threads" require node.js version ${requiredVersionRange}, but found version ${currentVersion}.
|
|
160
193
|
To use this feature you have to update node.js to a later version.
|
|
161
194
|
`);
|
|
195
|
+
}
|
|
196
|
+
|
|
162
197
|
throw new Error('"worker threads" are not supported with this node.js version');
|
|
163
198
|
}
|
|
164
199
|
} // TEMP TODO FIXME
|
|
@@ -19,20 +19,20 @@ function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + n
|
|
|
19
19
|
|
|
20
20
|
const childProcessHelperPath = _path.default.resolve(__dirname, 'childProcessHelper.js');
|
|
21
21
|
|
|
22
|
-
var _env = _classPrivateFieldLooseKey("env");
|
|
22
|
+
var _env = /*#__PURE__*/_classPrivateFieldLooseKey("env");
|
|
23
23
|
|
|
24
|
-
var _functionKey = _classPrivateFieldLooseKey("functionKey");
|
|
24
|
+
var _functionKey = /*#__PURE__*/_classPrivateFieldLooseKey("functionKey");
|
|
25
25
|
|
|
26
|
-
var _handlerName = _classPrivateFieldLooseKey("handlerName");
|
|
26
|
+
var _handlerName = /*#__PURE__*/_classPrivateFieldLooseKey("handlerName");
|
|
27
27
|
|
|
28
|
-
var _handlerPath = _classPrivateFieldLooseKey("handlerPath");
|
|
28
|
+
var _handlerPath = /*#__PURE__*/_classPrivateFieldLooseKey("handlerPath");
|
|
29
29
|
|
|
30
|
-
var _timeout = _classPrivateFieldLooseKey("timeout");
|
|
30
|
+
var _timeout = /*#__PURE__*/_classPrivateFieldLooseKey("timeout");
|
|
31
31
|
|
|
32
|
-
var _allowCache = _classPrivateFieldLooseKey("allowCache");
|
|
32
|
+
var _allowCache = /*#__PURE__*/_classPrivateFieldLooseKey("allowCache");
|
|
33
33
|
|
|
34
34
|
class ChildProcessRunner {
|
|
35
|
-
constructor(funOptions, env, allowCache) {
|
|
35
|
+
constructor(funOptions, env, allowCache, v3Utils) {
|
|
36
36
|
Object.defineProperty(this, _env, {
|
|
37
37
|
writable: true,
|
|
38
38
|
value: null
|
|
@@ -63,6 +63,14 @@ class ChildProcessRunner {
|
|
|
63
63
|
handlerPath,
|
|
64
64
|
timeout
|
|
65
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
|
+
|
|
66
74
|
_classPrivateFieldLooseBase(this, _env)[_env] = env;
|
|
67
75
|
_classPrivateFieldLooseBase(this, _functionKey)[_functionKey] = functionKey;
|
|
68
76
|
_classPrivateFieldLooseBase(this, _handlerName)[_handlerName] = handlerName;
|
|
@@ -99,7 +107,12 @@ class ChildProcessRunner {
|
|
|
99
107
|
result = await message;
|
|
100
108
|
} catch (err) {
|
|
101
109
|
// TODO
|
|
102
|
-
|
|
110
|
+
if (this.log) {
|
|
111
|
+
this.log.error(err);
|
|
112
|
+
} else {
|
|
113
|
+
console.log(err);
|
|
114
|
+
}
|
|
115
|
+
|
|
103
116
|
throw err;
|
|
104
117
|
}
|
|
105
118
|
|