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.
- package/README.md +91 -95
- package/package.json +41 -69
- package/src/ServerlessOffline.js +412 -0
- package/src/config/commandOptions.js +155 -0
- package/src/config/constants.js +22 -0
- package/{dist → src}/config/defaultOptions.js +8 -17
- package/src/config/index.js +4 -0
- package/src/config/supportedRuntimes.js +47 -0
- package/src/events/authCanExecuteResource.js +35 -0
- package/src/events/authFunctionNameExtractor.js +75 -0
- package/src/events/authMatchPolicyResource.js +71 -0
- package/src/events/authValidateContext.js +51 -0
- package/src/events/http/Endpoint.js +135 -0
- package/src/events/http/Http.js +50 -0
- package/src/events/http/HttpEventDefinition.js +20 -0
- package/src/events/http/HttpServer.js +1277 -0
- package/src/events/http/OfflineEndpoint.js +33 -0
- package/src/events/http/authJWTSettingsExtractor.js +70 -0
- package/src/events/http/createAuthScheme.js +176 -0
- package/src/events/http/createJWTAuthScheme.js +106 -0
- package/src/events/http/index.js +1 -0
- package/src/events/http/javaHelpers.js +102 -0
- package/src/events/http/lambda-events/LambdaIntegrationEvent.js +57 -0
- package/src/events/http/lambda-events/LambdaProxyIntegrationEvent.js +233 -0
- package/src/events/http/lambda-events/LambdaProxyIntegrationEventV2.js +190 -0
- package/src/events/http/lambda-events/VelocityContext.js +147 -0
- package/src/events/http/lambda-events/index.js +4 -0
- package/src/events/http/lambda-events/renderVelocityTemplateObject.js +93 -0
- package/{dist → src}/events/http/parseResources.js +73 -78
- package/src/events/http/payloadSchemaValidator.js +13 -0
- package/{dist → src}/events/http/templates/offline-default.req.vm +0 -0
- package/{dist → src}/events/http/templates/offline-default.res.vm +0 -0
- package/src/events/schedule/Schedule.js +131 -0
- package/src/events/schedule/ScheduleEvent.js +18 -0
- package/src/events/schedule/ScheduleEventDefinition.js +21 -0
- package/src/events/schedule/index.js +1 -0
- package/src/events/websocket/HttpServer.js +69 -0
- package/src/events/websocket/WebSocket.js +52 -0
- package/src/events/websocket/WebSocketClients.js +462 -0
- package/src/events/websocket/WebSocketEventDefinition.js +18 -0
- package/src/events/websocket/WebSocketServer.js +73 -0
- package/src/events/websocket/http-routes/_catchAll/catchAllRoute.js +16 -0
- package/src/events/websocket/http-routes/_catchAll/index.js +1 -0
- package/src/events/websocket/http-routes/connections/ConnectionsController.js +28 -0
- package/src/events/websocket/http-routes/connections/connectionsRoutes.js +70 -0
- package/src/events/websocket/http-routes/connections/index.js +1 -0
- package/src/events/websocket/http-routes/index.js +2 -0
- package/src/events/websocket/index.js +1 -0
- package/src/events/websocket/lambda-events/WebSocketAuthorizerEvent.js +65 -0
- package/src/events/websocket/lambda-events/WebSocketConnectEvent.js +68 -0
- package/src/events/websocket/lambda-events/WebSocketDisconnectEvent.js +31 -0
- package/src/events/websocket/lambda-events/WebSocketEvent.js +29 -0
- package/src/events/websocket/lambda-events/WebSocketRequestContext.js +67 -0
- package/src/events/websocket/lambda-events/index.js +4 -0
- package/src/index.js +12 -0
- package/src/lambda/HttpServer.js +108 -0
- package/src/lambda/Lambda.js +68 -0
- package/src/lambda/LambdaContext.js +33 -0
- package/src/lambda/LambdaFunction.js +308 -0
- package/src/lambda/LambdaFunctionPool.js +109 -0
- package/src/lambda/__tests__/LambdaContext.test.js +30 -0
- package/src/lambda/__tests__/LambdaFunction.test.js +196 -0
- package/src/lambda/__tests__/fixtures/Lambda/LambdaFunctionThatReturnsJSONObject.fixture.js +47 -0
- package/src/lambda/__tests__/fixtures/Lambda/LambdaFunctionThatReturnsNativeString.fixture.js +46 -0
- package/src/lambda/__tests__/fixtures/Lambda/package.json +3 -0
- package/src/lambda/__tests__/fixtures/lambdaFunction.fixture.js +145 -0
- package/src/lambda/__tests__/fixtures/package.json +3 -0
- package/src/lambda/__tests__/routes/invocations/InvocationsController.test.js +42 -0
- package/src/lambda/handler-runner/HandlerRunner.js +136 -0
- package/src/lambda/handler-runner/child-process-runner/ChildProcessRunner.js +72 -0
- package/src/lambda/handler-runner/child-process-runner/childProcessHelper.js +42 -0
- package/src/lambda/handler-runner/child-process-runner/index.js +1 -0
- package/src/lambda/handler-runner/docker-runner/DockerContainer.js +417 -0
- package/src/lambda/handler-runner/docker-runner/DockerImage.js +35 -0
- package/src/lambda/handler-runner/docker-runner/DockerRunner.js +63 -0
- package/src/lambda/handler-runner/docker-runner/index.js +1 -0
- package/src/lambda/handler-runner/go-runner/GoRunner.js +166 -0
- package/src/lambda/handler-runner/go-runner/index.js +1 -0
- package/src/lambda/handler-runner/in-process-runner/InProcessRunner.js +125 -0
- package/src/lambda/handler-runner/in-process-runner/index.js +1 -0
- package/src/lambda/handler-runner/index.js +1 -0
- package/src/lambda/handler-runner/java-runner/JavaRunner.js +114 -0
- package/src/lambda/handler-runner/java-runner/index.js +1 -0
- package/src/lambda/handler-runner/python-runner/PythonRunner.js +138 -0
- package/src/lambda/handler-runner/python-runner/index.js +1 -0
- package/{dist → src}/lambda/handler-runner/python-runner/invoke.py +0 -0
- package/src/lambda/handler-runner/ruby-runner/RubyRunner.js +107 -0
- package/src/lambda/handler-runner/ruby-runner/index.js +1 -0
- package/{dist → src}/lambda/handler-runner/ruby-runner/invoke.rb +0 -0
- package/src/lambda/handler-runner/worker-thread-runner/WorkerThreadRunner.js +70 -0
- package/src/lambda/handler-runner/worker-thread-runner/index.js +1 -0
- package/src/lambda/handler-runner/worker-thread-runner/workerThreadHelper.js +29 -0
- package/src/lambda/index.js +1 -0
- package/src/lambda/routes/index.js +2 -0
- package/src/lambda/routes/invocations/InvocationsController.js +102 -0
- package/src/lambda/routes/invocations/index.js +1 -0
- package/src/lambda/routes/invocations/invocationsRoute.js +77 -0
- package/src/lambda/routes/invoke-async/InvokeAsyncController.js +20 -0
- package/src/lambda/routes/invoke-async/index.js +1 -0
- package/src/lambda/routes/invoke-async/invokeAsyncRoute.js +33 -0
- package/src/utils/__tests__/createUniqueId.test.js +18 -0
- package/src/utils/__tests__/formatToClfTime.test.js +14 -0
- package/src/utils/__tests__/generateHapiPath.test.js +46 -0
- package/src/utils/__tests__/lowerCaseKeys.test.js +30 -0
- package/src/utils/__tests__/parseHeaders.test.js +13 -0
- package/src/utils/__tests__/parseMultiValueHeaders.test.js +24 -0
- package/src/utils/__tests__/parseMultiValueQueryStringParameters.test.js +159 -0
- package/src/utils/__tests__/parseQueryStringParameters.test.js +15 -0
- package/src/utils/__tests__/splitHandlerPathAndName.test.js +54 -0
- package/src/utils/__tests__/unflatten.test.js +32 -0
- package/src/utils/checkDockerDaemon.js +19 -0
- package/src/utils/checkGoVersion.js +16 -0
- package/src/utils/createApiKey.js +5 -0
- package/src/utils/createUniqueId.js +5 -0
- package/src/utils/detectExecutable.js +11 -0
- package/{dist → src}/utils/formatToClfTime.js +6 -14
- package/src/utils/generateHapiPath.js +26 -0
- package/src/utils/getHttpApiCorsConfig.js +28 -0
- package/src/utils/index.js +42 -0
- package/src/utils/jsonPath.js +13 -0
- package/src/utils/logRoutes.js +64 -0
- package/src/utils/lowerCaseKeys.js +6 -0
- package/src/utils/parseHeaders.js +14 -0
- package/src/utils/parseMultiValueHeaders.js +27 -0
- package/src/utils/parseMultiValueQueryStringParameters.js +31 -0
- package/src/utils/parseQueryStringParameters.js +15 -0
- package/src/utils/resolveJoins.js +29 -0
- package/src/utils/splitHandlerPathAndName.js +31 -0
- package/src/utils/unflatten.js +11 -0
- package/dist/ServerlessOffline.js +0 -507
- package/dist/checkEngine.js +0 -21
- package/dist/config/commandOptions.js +0 -149
- package/dist/config/constants.js +0 -30
- package/dist/config/index.js +0 -55
- package/dist/config/supportedRuntimes.js +0 -40
- package/dist/debugLog.js +0 -10
- package/dist/events/authCanExecuteResource.js +0 -35
- package/dist/events/authFunctionNameExtractor.js +0 -87
- package/dist/events/authMatchPolicyResource.js +0 -62
- package/dist/events/http/Endpoint.js +0 -171
- package/dist/events/http/Http.js +0 -77
- package/dist/events/http/HttpEventDefinition.js +0 -36
- package/dist/events/http/HttpServer.js +0 -1363
- package/dist/events/http/OfflineEndpoint.js +0 -40
- package/dist/events/http/authJWTSettingsExtractor.js +0 -76
- package/dist/events/http/authValidateContext.js +0 -48
- package/dist/events/http/createAuthScheme.js +0 -184
- package/dist/events/http/createJWTAuthScheme.js +0 -155
- package/dist/events/http/index.js +0 -15
- package/dist/events/http/javaHelpers.js +0 -99
- package/dist/events/http/lambda-events/LambdaIntegrationEvent.js +0 -85
- package/dist/events/http/lambda-events/LambdaProxyIntegrationEvent.js +0 -244
- package/dist/events/http/lambda-events/LambdaProxyIntegrationEventV2.js +0 -221
- package/dist/events/http/lambda-events/VelocityContext.js +0 -168
- package/dist/events/http/lambda-events/index.js +0 -39
- package/dist/events/http/lambda-events/renderVelocityTemplateObject.js +0 -108
- package/dist/events/http/payloadSchemaValidator.js +0 -13
- package/dist/events/schedule/Schedule.js +0 -182
- package/dist/events/schedule/ScheduleEvent.js +0 -27
- package/dist/events/schedule/ScheduleEventDefinition.js +0 -36
- package/dist/events/schedule/index.js +0 -15
- package/dist/events/websocket/HttpServer.js +0 -112
- package/dist/events/websocket/WebSocket.js +0 -78
- package/dist/events/websocket/WebSocketClients.js +0 -550
- package/dist/events/websocket/WebSocketEventDefinition.js +0 -32
- package/dist/events/websocket/WebSocketServer.js +0 -140
- package/dist/events/websocket/http-routes/_catchAll/catchAllRoute.js +0 -33
- package/dist/events/websocket/http-routes/_catchAll/index.js +0 -15
- package/dist/events/websocket/http-routes/connections/ConnectionsController.js +0 -45
- package/dist/events/websocket/http-routes/connections/connectionsRoutes.js +0 -95
- package/dist/events/websocket/http-routes/connections/index.js +0 -15
- package/dist/events/websocket/http-routes/index.js +0 -23
- package/dist/events/websocket/index.js +0 -15
- package/dist/events/websocket/lambda-events/WebSocketAuthorizerEvent.js +0 -99
- package/dist/events/websocket/lambda-events/WebSocketConnectEvent.js +0 -101
- package/dist/events/websocket/lambda-events/WebSocketDisconnectEvent.js +0 -47
- package/dist/events/websocket/lambda-events/WebSocketEvent.js +0 -54
- package/dist/events/websocket/lambda-events/WebSocketRequestContext.js +0 -98
- package/dist/events/websocket/lambda-events/index.js +0 -39
- package/dist/index.js +0 -19
- package/dist/lambda/HttpServer.js +0 -122
- package/dist/lambda/Lambda.js +0 -113
- package/dist/lambda/LambdaContext.js +0 -53
- package/dist/lambda/LambdaFunction.js +0 -391
- package/dist/lambda/LambdaFunctionPool.js +0 -127
- package/dist/lambda/handler-runner/HandlerRunner.js +0 -223
- package/dist/lambda/handler-runner/child-process-runner/ChildProcessRunner.js +0 -132
- package/dist/lambda/handler-runner/child-process-runner/childProcessHelper.js +0 -40
- package/dist/lambda/handler-runner/child-process-runner/index.js +0 -15
- package/dist/lambda/handler-runner/docker-runner/DockerContainer.js +0 -517
- package/dist/lambda/handler-runner/docker-runner/DockerImage.js +0 -67
- package/dist/lambda/handler-runner/docker-runner/DockerRunner.js +0 -74
- package/dist/lambda/handler-runner/docker-runner/index.js +0 -15
- package/dist/lambda/handler-runner/go-runner/GoRunner.js +0 -211
- package/dist/lambda/handler-runner/go-runner/index.js +0 -15
- package/dist/lambda/handler-runner/in-process-runner/InProcessRunner.js +0 -234
- package/dist/lambda/handler-runner/in-process-runner/index.js +0 -15
- package/dist/lambda/handler-runner/index.js +0 -15
- package/dist/lambda/handler-runner/java-runner/JavaRunner.js +0 -151
- package/dist/lambda/handler-runner/java-runner/index.js +0 -15
- package/dist/lambda/handler-runner/python-runner/PythonRunner.js +0 -180
- package/dist/lambda/handler-runner/python-runner/index.js +0 -15
- package/dist/lambda/handler-runner/ruby-runner/RubyRunner.js +0 -148
- package/dist/lambda/handler-runner/ruby-runner/index.js +0 -15
- package/dist/lambda/handler-runner/worker-thread-runner/WorkerThreadRunner.js +0 -94
- package/dist/lambda/handler-runner/worker-thread-runner/index.js +0 -15
- package/dist/lambda/handler-runner/worker-thread-runner/workerThreadHelper.js +0 -30
- package/dist/lambda/index.js +0 -15
- package/dist/lambda/routes/index.js +0 -23
- package/dist/lambda/routes/invocations/InvocationsController.js +0 -142
- package/dist/lambda/routes/invocations/index.js +0 -15
- package/dist/lambda/routes/invocations/invocationsRoute.js +0 -90
- package/dist/lambda/routes/invoke-async/InvokeAsyncController.js +0 -38
- package/dist/lambda/routes/invoke-async/index.js +0 -15
- package/dist/lambda/routes/invoke-async/invokeAsyncRoute.js +0 -43
- package/dist/main.js +0 -11
- package/dist/serverlessLog.js +0 -91
- package/dist/utils/checkDockerDaemon.js +0 -27
- package/dist/utils/checkGoVersion.js +0 -27
- package/dist/utils/createApiKey.js +0 -12
- package/dist/utils/createUniqueId.js +0 -14
- package/dist/utils/detectExecutable.js +0 -21
- package/dist/utils/generateHapiPath.js +0 -28
- package/dist/utils/getHttpApiCorsConfig.js +0 -44
- package/dist/utils/index.js +0 -158
- package/dist/utils/jsonPath.js +0 -21
- package/dist/utils/parseHeaders.js +0 -23
- package/dist/utils/parseMultiValueHeaders.js +0 -36
- package/dist/utils/parseMultiValueQueryStringParameters.js +0 -40
- package/dist/utils/parseQueryStringParameters.js +0 -26
- package/dist/utils/resolveJoins.js +0 -34
- package/dist/utils/satisfiesVersionRange.js +0 -20
- package/dist/utils/splitHandlerPathAndName.js +0 -41
- package/dist/utils/unflatten.js +0 -18
|
@@ -1,507 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _updateNotifier = _interopRequireDefault(require("update-notifier"));
|
|
9
|
-
|
|
10
|
-
var _chalk = _interopRequireDefault(require("chalk"));
|
|
11
|
-
|
|
12
|
-
var _semver = require("semver");
|
|
13
|
-
|
|
14
|
-
var _debugLog = _interopRequireDefault(require("./debugLog.js"));
|
|
15
|
-
|
|
16
|
-
var _serverlessLog = _interopRequireWildcard(require("./serverlessLog.js"));
|
|
17
|
-
|
|
18
|
-
var _index = require("./utils/index.js");
|
|
19
|
-
|
|
20
|
-
var _index2 = require("./config/index.js");
|
|
21
|
-
|
|
22
|
-
var _package = _interopRequireDefault(require("../package.json"));
|
|
23
|
-
|
|
24
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
|
-
|
|
26
|
-
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); }
|
|
27
|
-
|
|
28
|
-
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; }
|
|
29
|
-
|
|
30
|
-
function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
|
|
31
|
-
|
|
32
|
-
var id = 0;
|
|
33
|
-
|
|
34
|
-
function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
|
|
35
|
-
|
|
36
|
-
var _cliOptions = /*#__PURE__*/_classPrivateFieldLooseKey("cliOptions");
|
|
37
|
-
|
|
38
|
-
var _http = /*#__PURE__*/_classPrivateFieldLooseKey("http");
|
|
39
|
-
|
|
40
|
-
var _options = /*#__PURE__*/_classPrivateFieldLooseKey("options");
|
|
41
|
-
|
|
42
|
-
var _schedule = /*#__PURE__*/_classPrivateFieldLooseKey("schedule");
|
|
43
|
-
|
|
44
|
-
var _webSocket = /*#__PURE__*/_classPrivateFieldLooseKey("webSocket");
|
|
45
|
-
|
|
46
|
-
var _lambda = /*#__PURE__*/_classPrivateFieldLooseKey("lambda");
|
|
47
|
-
|
|
48
|
-
var _serverless = /*#__PURE__*/_classPrivateFieldLooseKey("serverless");
|
|
49
|
-
|
|
50
|
-
class ServerlessOffline {
|
|
51
|
-
constructor(serverless, cliOptions, v3Utils) {
|
|
52
|
-
Object.defineProperty(this, _cliOptions, {
|
|
53
|
-
writable: true,
|
|
54
|
-
value: null
|
|
55
|
-
});
|
|
56
|
-
Object.defineProperty(this, _http, {
|
|
57
|
-
writable: true,
|
|
58
|
-
value: null
|
|
59
|
-
});
|
|
60
|
-
Object.defineProperty(this, _options, {
|
|
61
|
-
writable: true,
|
|
62
|
-
value: null
|
|
63
|
-
});
|
|
64
|
-
Object.defineProperty(this, _schedule, {
|
|
65
|
-
writable: true,
|
|
66
|
-
value: null
|
|
67
|
-
});
|
|
68
|
-
Object.defineProperty(this, _webSocket, {
|
|
69
|
-
writable: true,
|
|
70
|
-
value: null
|
|
71
|
-
});
|
|
72
|
-
Object.defineProperty(this, _lambda, {
|
|
73
|
-
writable: true,
|
|
74
|
-
value: null
|
|
75
|
-
});
|
|
76
|
-
Object.defineProperty(this, _serverless, {
|
|
77
|
-
writable: true,
|
|
78
|
-
value: null
|
|
79
|
-
});
|
|
80
|
-
_classPrivateFieldLooseBase(this, _cliOptions)[_cliOptions] = cliOptions;
|
|
81
|
-
_classPrivateFieldLooseBase(this, _serverless)[_serverless] = serverless;
|
|
82
|
-
|
|
83
|
-
if (v3Utils) {
|
|
84
|
-
this.log = v3Utils.log;
|
|
85
|
-
this.progress = v3Utils.progress;
|
|
86
|
-
this.writeText = v3Utils.writeText;
|
|
87
|
-
this.v3Utils = v3Utils;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
(0, _serverlessLog.setLog)((...args) => serverless.cli.log(...args));
|
|
91
|
-
this.commands = {
|
|
92
|
-
offline: {
|
|
93
|
-
// add start nested options
|
|
94
|
-
commands: {
|
|
95
|
-
start: {
|
|
96
|
-
lifecycleEvents: ['init', 'ready', 'end'],
|
|
97
|
-
options: _index2.commandOptions,
|
|
98
|
-
usage: 'Simulates API Gateway to call your lambda functions offline using backward compatible initialization.'
|
|
99
|
-
},
|
|
100
|
-
functionsUpdated: {
|
|
101
|
-
type: 'entrypoint',
|
|
102
|
-
lifecycleEvents: ['cleanup']
|
|
103
|
-
}
|
|
104
|
-
},
|
|
105
|
-
lifecycleEvents: ['start'],
|
|
106
|
-
options: _index2.commandOptions,
|
|
107
|
-
usage: 'Simulates API Gateway to call your lambda functions offline.'
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
this.hooks = {
|
|
111
|
-
'offline:start:init': this.start.bind(this),
|
|
112
|
-
'offline:start:ready': this.ready.bind(this),
|
|
113
|
-
'offline:functionsUpdated:cleanup': this.cleanupFunctions.bind(this),
|
|
114
|
-
'offline:start': this._startWithExplicitEnd.bind(this),
|
|
115
|
-
'offline:start:end': this.end.bind(this)
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
_printBlankLine() {
|
|
120
|
-
if (process.env.NODE_ENV !== 'test') {
|
|
121
|
-
if (this.log) {
|
|
122
|
-
this.log.notice();
|
|
123
|
-
} else {
|
|
124
|
-
console.log();
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
} // Entry point for the plugin (sls offline) when running 'sls offline start'
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
async start() {
|
|
131
|
-
// Put here so available everywhere, not just in handlers
|
|
132
|
-
process.env.IS_OFFLINE = true; // check if update is available
|
|
133
|
-
|
|
134
|
-
(0, _updateNotifier.default)({
|
|
135
|
-
pkg: _package.default
|
|
136
|
-
}).notify();
|
|
137
|
-
|
|
138
|
-
this._verifyServerlessVersionCompatibility();
|
|
139
|
-
|
|
140
|
-
this._mergeOptions();
|
|
141
|
-
|
|
142
|
-
const {
|
|
143
|
-
httpEvents,
|
|
144
|
-
lambdas,
|
|
145
|
-
scheduleEvents,
|
|
146
|
-
webSocketEvents
|
|
147
|
-
} = this._getEvents(); // if (lambdas.length > 0) {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
await this._createLambda(lambdas); // }
|
|
151
|
-
|
|
152
|
-
const eventModules = [];
|
|
153
|
-
|
|
154
|
-
if (httpEvents.length > 0) {
|
|
155
|
-
eventModules.push(this._createHttp(httpEvents));
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
if (!_classPrivateFieldLooseBase(this, _options)[_options].disableScheduledEvents && scheduleEvents.length > 0) {
|
|
159
|
-
eventModules.push(this._createSchedule(scheduleEvents));
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
if (webSocketEvents.length > 0) {
|
|
163
|
-
eventModules.push(this._createWebSocket(webSocketEvents));
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
await Promise.all(eventModules);
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
async ready() {
|
|
170
|
-
if (process.env.NODE_ENV !== 'test') {
|
|
171
|
-
await this._listenForTermination();
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
async end(skipExit) {
|
|
176
|
-
// TEMP FIXME
|
|
177
|
-
if (process.env.NODE_ENV === 'test' && skipExit === undefined) {
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
if (this.log) {
|
|
182
|
-
this.log.info('Halting offline server');
|
|
183
|
-
} else {
|
|
184
|
-
(0, _serverlessLog.default)('Halting offline server');
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
const eventModules = [];
|
|
188
|
-
|
|
189
|
-
if (_classPrivateFieldLooseBase(this, _lambda)[_lambda]) {
|
|
190
|
-
eventModules.push(_classPrivateFieldLooseBase(this, _lambda)[_lambda].cleanup());
|
|
191
|
-
eventModules.push(_classPrivateFieldLooseBase(this, _lambda)[_lambda].stop(_index2.SERVER_SHUTDOWN_TIMEOUT));
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
if (_classPrivateFieldLooseBase(this, _http)[_http]) {
|
|
195
|
-
eventModules.push(_classPrivateFieldLooseBase(this, _http)[_http].stop(_index2.SERVER_SHUTDOWN_TIMEOUT));
|
|
196
|
-
} // if (this.#schedule) {
|
|
197
|
-
// eventModules.push(this.#schedule.stop())
|
|
198
|
-
// }
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
if (_classPrivateFieldLooseBase(this, _webSocket)[_webSocket]) {
|
|
202
|
-
eventModules.push(_classPrivateFieldLooseBase(this, _webSocket)[_webSocket].stop(_index2.SERVER_SHUTDOWN_TIMEOUT));
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
await Promise.all(eventModules);
|
|
206
|
-
|
|
207
|
-
if (!skipExit) {
|
|
208
|
-
process.exit(0);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
async cleanupFunctions() {
|
|
213
|
-
if (_classPrivateFieldLooseBase(this, _lambda)[_lambda]) {
|
|
214
|
-
(0, _serverlessLog.default)('Forcing cleanup of Lambda functions');
|
|
215
|
-
await _classPrivateFieldLooseBase(this, _lambda)[_lambda].cleanup();
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Entry point for the plugin (sls offline) when running 'sls offline'
|
|
220
|
-
* The call to this.end() would terminate the process before 'offline:start:end' could be consumed
|
|
221
|
-
* by downstream plugins. When running sls offline that can be expected, but docs say that
|
|
222
|
-
* 'sls offline start' will provide the init and end hooks for other plugins to consume
|
|
223
|
-
* */
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
async _startWithExplicitEnd() {
|
|
227
|
-
await this.start();
|
|
228
|
-
await this.ready();
|
|
229
|
-
this.end();
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
async _listenForTermination() {
|
|
233
|
-
const command = await new Promise(resolve => {
|
|
234
|
-
process // SIGINT will be usually sent when user presses ctrl+c
|
|
235
|
-
.on('SIGINT', () => resolve('SIGINT')) // SIGTERM is a default termination signal in many cases,
|
|
236
|
-
// for example when "killing" a subprocess spawned in node
|
|
237
|
-
// with child_process methods
|
|
238
|
-
.on('SIGTERM', () => resolve('SIGTERM'));
|
|
239
|
-
});
|
|
240
|
-
|
|
241
|
-
if (this.log) {
|
|
242
|
-
this.log.info(`Got ${command} signal. Offline Halting...`);
|
|
243
|
-
} else {
|
|
244
|
-
(0, _serverlessLog.default)(`Got ${command} signal. Offline Halting...`);
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
async _createLambda(lambdas, skipStart) {
|
|
249
|
-
const {
|
|
250
|
-
default: Lambda
|
|
251
|
-
} = await Promise.resolve().then(() => _interopRequireWildcard(require('./lambda/index.js')));
|
|
252
|
-
_classPrivateFieldLooseBase(this, _lambda)[_lambda] = new Lambda(_classPrivateFieldLooseBase(this, _serverless)[_serverless], _classPrivateFieldLooseBase(this, _options)[_options], this.v3Utils);
|
|
253
|
-
|
|
254
|
-
_classPrivateFieldLooseBase(this, _lambda)[_lambda].create(lambdas);
|
|
255
|
-
|
|
256
|
-
if (!skipStart) {
|
|
257
|
-
await _classPrivateFieldLooseBase(this, _lambda)[_lambda].start();
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
async _createHttp(events, skipStart) {
|
|
262
|
-
const {
|
|
263
|
-
default: Http
|
|
264
|
-
} = await Promise.resolve().then(() => _interopRequireWildcard(require('./events/http/index.js')));
|
|
265
|
-
_classPrivateFieldLooseBase(this, _http)[_http] = new Http(_classPrivateFieldLooseBase(this, _serverless)[_serverless], _classPrivateFieldLooseBase(this, _options)[_options], _classPrivateFieldLooseBase(this, _lambda)[_lambda], this.v3Utils);
|
|
266
|
-
await _classPrivateFieldLooseBase(this, _http)[_http].registerPlugins();
|
|
267
|
-
|
|
268
|
-
_classPrivateFieldLooseBase(this, _http)[_http].create(events); // HTTP Proxy defined in Resource
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
_classPrivateFieldLooseBase(this, _http)[_http].createResourceRoutes(); // Not found handling
|
|
272
|
-
// we have to create the 404 routes last, otherwise we could have
|
|
273
|
-
// collisions with catch all routes, e.g. any (proxy+}
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
_classPrivateFieldLooseBase(this, _http)[_http].create404Route();
|
|
277
|
-
|
|
278
|
-
if (!skipStart) {
|
|
279
|
-
await _classPrivateFieldLooseBase(this, _http)[_http].start();
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
async _createSchedule(events) {
|
|
284
|
-
const {
|
|
285
|
-
default: Schedule
|
|
286
|
-
} = await Promise.resolve().then(() => _interopRequireWildcard(require('./events/schedule/index.js')));
|
|
287
|
-
_classPrivateFieldLooseBase(this, _schedule)[_schedule] = new Schedule(_classPrivateFieldLooseBase(this, _lambda)[_lambda], _classPrivateFieldLooseBase(this, _serverless)[_serverless].service.provider.region, this.v3Utils);
|
|
288
|
-
|
|
289
|
-
_classPrivateFieldLooseBase(this, _schedule)[_schedule].create(events);
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
async _createWebSocket(events) {
|
|
293
|
-
const {
|
|
294
|
-
default: WebSocket
|
|
295
|
-
} = await Promise.resolve().then(() => _interopRequireWildcard(require('./events/websocket/index.js')));
|
|
296
|
-
_classPrivateFieldLooseBase(this, _webSocket)[_webSocket] = new WebSocket(_classPrivateFieldLooseBase(this, _serverless)[_serverless], _classPrivateFieldLooseBase(this, _options)[_options], _classPrivateFieldLooseBase(this, _lambda)[_lambda], this.v3Utils);
|
|
297
|
-
|
|
298
|
-
_classPrivateFieldLooseBase(this, _webSocket)[_webSocket].create(events);
|
|
299
|
-
|
|
300
|
-
return _classPrivateFieldLooseBase(this, _webSocket)[_webSocket].start();
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
_mergeOptions() {
|
|
304
|
-
const {
|
|
305
|
-
service: {
|
|
306
|
-
custom = {},
|
|
307
|
-
provider
|
|
308
|
-
}
|
|
309
|
-
} = _classPrivateFieldLooseBase(this, _serverless)[_serverless];
|
|
310
|
-
|
|
311
|
-
const customOptions = custom[_index2.CUSTOM_OPTION]; // merge options
|
|
312
|
-
// order of Precedence: command line options, custom options, defaults.
|
|
313
|
-
|
|
314
|
-
_classPrivateFieldLooseBase(this, _options)[_options] = { ..._index2.defaultOptions,
|
|
315
|
-
...customOptions,
|
|
316
|
-
..._classPrivateFieldLooseBase(this, _cliOptions)[_cliOptions]
|
|
317
|
-
}; // Parse CORS options
|
|
318
|
-
|
|
319
|
-
_classPrivateFieldLooseBase(this, _options)[_options].corsAllowHeaders = _classPrivateFieldLooseBase(this, _options)[_options].corsAllowHeaders.replace(/\s/g, '').split(',');
|
|
320
|
-
_classPrivateFieldLooseBase(this, _options)[_options].corsAllowOrigin = _classPrivateFieldLooseBase(this, _options)[_options].corsAllowOrigin.replace(/\s/g, '').split(',');
|
|
321
|
-
_classPrivateFieldLooseBase(this, _options)[_options].corsExposedHeaders = _classPrivateFieldLooseBase(this, _options)[_options].corsExposedHeaders.replace(/\s/g, '').split(',');
|
|
322
|
-
|
|
323
|
-
if (_classPrivateFieldLooseBase(this, _options)[_options].corsDisallowCredentials) {
|
|
324
|
-
_classPrivateFieldLooseBase(this, _options)[_options].corsAllowCredentials = false;
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
_classPrivateFieldLooseBase(this, _options)[_options].corsConfig = {
|
|
328
|
-
credentials: _classPrivateFieldLooseBase(this, _options)[_options].corsAllowCredentials,
|
|
329
|
-
exposedHeaders: _classPrivateFieldLooseBase(this, _options)[_options].corsExposedHeaders,
|
|
330
|
-
headers: _classPrivateFieldLooseBase(this, _options)[_options].corsAllowHeaders,
|
|
331
|
-
origin: _classPrivateFieldLooseBase(this, _options)[_options].corsAllowOrigin
|
|
332
|
-
};
|
|
333
|
-
|
|
334
|
-
if (this.log) {
|
|
335
|
-
this.log.notice();
|
|
336
|
-
this.log.notice(`Starting Offline at stage ${provider.stage} ${_chalk.default.gray(`(${provider.region})`)}`);
|
|
337
|
-
this.log.notice();
|
|
338
|
-
this.log.debug('options:', _classPrivateFieldLooseBase(this, _options)[_options]);
|
|
339
|
-
} else {
|
|
340
|
-
(0, _serverlessLog.default)(`Starting Offline: ${provider.stage} ${provider.region}.`);
|
|
341
|
-
(0, _debugLog.default)('options:', _classPrivateFieldLooseBase(this, _options)[_options]);
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
_getEvents() {
|
|
346
|
-
const {
|
|
347
|
-
service
|
|
348
|
-
} = _classPrivateFieldLooseBase(this, _serverless)[_serverless];
|
|
349
|
-
|
|
350
|
-
const httpEvents = [];
|
|
351
|
-
const lambdas = [];
|
|
352
|
-
const scheduleEvents = [];
|
|
353
|
-
const webSocketEvents = [];
|
|
354
|
-
const functionKeys = service.getAllFunctions();
|
|
355
|
-
let hasPrivateHttpEvent = false;
|
|
356
|
-
functionKeys.forEach(functionKey => {
|
|
357
|
-
const functionDefinition = service.getFunction(functionKey);
|
|
358
|
-
lambdas.push({
|
|
359
|
-
functionKey,
|
|
360
|
-
functionDefinition
|
|
361
|
-
});
|
|
362
|
-
const events = service.getAllEventsInFunction(functionKey) || [];
|
|
363
|
-
events.forEach(event => {
|
|
364
|
-
const {
|
|
365
|
-
http,
|
|
366
|
-
httpApi,
|
|
367
|
-
schedule,
|
|
368
|
-
websocket
|
|
369
|
-
} = event;
|
|
370
|
-
|
|
371
|
-
if ((http || httpApi) && functionDefinition.handler) {
|
|
372
|
-
const httpEvent = {
|
|
373
|
-
functionKey,
|
|
374
|
-
handler: functionDefinition.handler,
|
|
375
|
-
http: http || httpApi
|
|
376
|
-
};
|
|
377
|
-
|
|
378
|
-
if (httpApi) {
|
|
379
|
-
// Ensure definitions for 'httpApi' events are objects so that they can be marked
|
|
380
|
-
// with an 'isHttpApi' property (they are handled differently to 'http' events)
|
|
381
|
-
if (typeof httpEvent.http === 'string') {
|
|
382
|
-
httpEvent.http = {
|
|
383
|
-
routeKey: httpEvent.http === '*' ? '$default' : httpEvent.http
|
|
384
|
-
};
|
|
385
|
-
} else if (typeof httpEvent.http === 'object') {
|
|
386
|
-
if (!httpEvent.http.method) {
|
|
387
|
-
if (this.log) {
|
|
388
|
-
this.log.warning(`Event definition is missing a method for function "${functionKey}"`);
|
|
389
|
-
} else {
|
|
390
|
-
(0, _serverlessLog.logWarning)(`Event definition is missing a method for function "${functionKey}"`);
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
httpEvent.http.method = '';
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
const resolvedMethod = httpEvent.http.method === '*' ? 'ANY' : httpEvent.http.method.toUpperCase();
|
|
397
|
-
httpEvent.http.routeKey = `${resolvedMethod} ${httpEvent.http.path}`; // Clear these properties to avoid confusion (they will be derived from the routeKey
|
|
398
|
-
// when needed later)
|
|
399
|
-
|
|
400
|
-
delete httpEvent.http.method;
|
|
401
|
-
delete httpEvent.http.path;
|
|
402
|
-
} else {
|
|
403
|
-
if (this.log) {
|
|
404
|
-
this.log.warning(`Event definition must be a string or object but received ${typeof httpEvent.http} for function "${functionKey}"`);
|
|
405
|
-
} else {
|
|
406
|
-
(0, _serverlessLog.logWarning)(`Event definition must be a string or object but received ${typeof httpEvent.http} for function "${functionKey}"`);
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
httpEvent.http.routeKey = '';
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
httpEvent.http.isHttpApi = true;
|
|
413
|
-
|
|
414
|
-
if (functionDefinition.httpApi && functionDefinition.httpApi.payload) {
|
|
415
|
-
httpEvent.http.payload = functionDefinition.httpApi.payload;
|
|
416
|
-
} else {
|
|
417
|
-
httpEvent.http.payload = service.provider.httpApi && service.provider.httpApi.payload ? service.provider.httpApi.payload : '2.0';
|
|
418
|
-
}
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
if (http && http.private) {
|
|
422
|
-
hasPrivateHttpEvent = true;
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
httpEvents.push(httpEvent);
|
|
426
|
-
}
|
|
427
|
-
|
|
428
|
-
if (schedule) {
|
|
429
|
-
scheduleEvents.push({
|
|
430
|
-
functionKey,
|
|
431
|
-
schedule
|
|
432
|
-
});
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
if (websocket) {
|
|
436
|
-
webSocketEvents.push({
|
|
437
|
-
functionKey,
|
|
438
|
-
websocket
|
|
439
|
-
});
|
|
440
|
-
}
|
|
441
|
-
});
|
|
442
|
-
}); // for simple API Key authentication model
|
|
443
|
-
|
|
444
|
-
if (hasPrivateHttpEvent) {
|
|
445
|
-
if (this.log) {
|
|
446
|
-
this.log.notice(`Key with token: ${_classPrivateFieldLooseBase(this, _options)[_options].apiKey}`);
|
|
447
|
-
} else {
|
|
448
|
-
(0, _serverlessLog.default)(`Key with token: ${_classPrivateFieldLooseBase(this, _options)[_options].apiKey}`);
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
if (_classPrivateFieldLooseBase(this, _options)[_options].noAuth) {
|
|
452
|
-
if (this.log) {
|
|
453
|
-
this.log.notice('Authorizers are turned off. You do not need to use x-api-key header.');
|
|
454
|
-
} else {
|
|
455
|
-
(0, _serverlessLog.default)('Authorizers are turned off. You do not need to use x-api-key header.');
|
|
456
|
-
}
|
|
457
|
-
} else if (this.log) {
|
|
458
|
-
this.log.notice('Remember to use x-api-key on the request headers');
|
|
459
|
-
} else {
|
|
460
|
-
(0, _serverlessLog.default)('Remember to use x-api-key on the request headers');
|
|
461
|
-
}
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
return {
|
|
465
|
-
httpEvents,
|
|
466
|
-
lambdas,
|
|
467
|
-
scheduleEvents,
|
|
468
|
-
webSocketEvents
|
|
469
|
-
};
|
|
470
|
-
} // TEMP FIXME quick fix to expose gateway server for testing, look for better solution
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
getApiGatewayServer() {
|
|
474
|
-
return _classPrivateFieldLooseBase(this, _http)[_http].getServer();
|
|
475
|
-
} // TODO: missing tests
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
_verifyServerlessVersionCompatibility() {
|
|
479
|
-
const currentVersion = _classPrivateFieldLooseBase(this, _serverless)[_serverless].version;
|
|
480
|
-
|
|
481
|
-
const requiredVersionRange = _package.default.peerDependencies.serverless;
|
|
482
|
-
|
|
483
|
-
if ((0, _semver.parse)(currentVersion).prerelease.length) {
|
|
484
|
-
// Do not validate, if run against serverless pre-release
|
|
485
|
-
return;
|
|
486
|
-
}
|
|
487
|
-
|
|
488
|
-
const versionIsSatisfied = (0, _index.satisfiesVersionRange)(currentVersion, requiredVersionRange);
|
|
489
|
-
|
|
490
|
-
if (!versionIsSatisfied) {
|
|
491
|
-
if (this.log) {
|
|
492
|
-
this.log.warning(`serverless-offline requires serverless version ${requiredVersionRange} but found version ${currentVersion}.
|
|
493
|
-
Be aware that functionality might be limited or contains bugs.
|
|
494
|
-
To avoid any issues update serverless to a later version.
|
|
495
|
-
`);
|
|
496
|
-
} else {
|
|
497
|
-
(0, _serverlessLog.logWarning)(`serverless-offline requires serverless version ${requiredVersionRange} but found version ${currentVersion}.
|
|
498
|
-
Be aware that functionality might be limited or contains bugs.
|
|
499
|
-
To avoid any issues update serverless to a later version.
|
|
500
|
-
`);
|
|
501
|
-
}
|
|
502
|
-
}
|
|
503
|
-
}
|
|
504
|
-
|
|
505
|
-
}
|
|
506
|
-
|
|
507
|
-
exports.default = ServerlessOffline;
|
package/dist/checkEngine.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _pleaseUpgradeNode = _interopRequireDefault(require("please-upgrade-node"));
|
|
4
|
-
|
|
5
|
-
var _package = _interopRequireDefault(require("../package.json"));
|
|
6
|
-
|
|
7
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
8
|
-
|
|
9
|
-
// NOTE: important, don't use any new javascript language features in this file!
|
|
10
|
-
// (other than es6 modules, which are transpiled)
|
|
11
|
-
const currentNodeVersion = process.versions.node;
|
|
12
|
-
|
|
13
|
-
const requiredNodeVersion = _package.default.engines.node.replace('>=', '');
|
|
14
|
-
|
|
15
|
-
(0, _pleaseUpgradeNode.default)(_package.default, {
|
|
16
|
-
message: function message() {
|
|
17
|
-
return (// eslint-disable-next-line prefer-template
|
|
18
|
-
'serverless-offline requires node.js version ' + requiredNodeVersion + ' or higher, but found version ' + currentNodeVersion + '. Please upgrade!'
|
|
19
|
-
);
|
|
20
|
-
}
|
|
21
|
-
});
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _default = {
|
|
8
|
-
apiKey: {
|
|
9
|
-
usage: 'Defines the API key value to be used for endpoints marked as private. Defaults to a random hash.',
|
|
10
|
-
type: 'string'
|
|
11
|
-
},
|
|
12
|
-
corsAllowHeaders: {
|
|
13
|
-
usage: 'Used to build the Access-Control-Allow-Headers header for CORS support.',
|
|
14
|
-
type: 'string'
|
|
15
|
-
},
|
|
16
|
-
corsAllowOrigin: {
|
|
17
|
-
usage: 'Used to build the Access-Control-Allow-Origin header for CORS support.',
|
|
18
|
-
type: 'string'
|
|
19
|
-
},
|
|
20
|
-
corsDisallowCredentials: {
|
|
21
|
-
usage: 'Used to override the Access-Control-Allow-Credentials default (which is true) to false.',
|
|
22
|
-
type: 'boolean'
|
|
23
|
-
},
|
|
24
|
-
corsExposedHeaders: {
|
|
25
|
-
usage: 'Used to build the Access-Control-Exposed-Headers response header for CORS support',
|
|
26
|
-
type: 'string'
|
|
27
|
-
},
|
|
28
|
-
disableCookieValidation: {
|
|
29
|
-
usage: 'Used to disable cookie-validation on hapi.js-server',
|
|
30
|
-
type: 'boolean'
|
|
31
|
-
},
|
|
32
|
-
disableScheduledEvents: {
|
|
33
|
-
usage: 'Disables all scheduled events. Overrides configurations in serverless.yml. Default: false',
|
|
34
|
-
type: 'boolean'
|
|
35
|
-
},
|
|
36
|
-
enforceSecureCookies: {
|
|
37
|
-
usage: 'Enforce secure cookies',
|
|
38
|
-
type: 'boolean'
|
|
39
|
-
},
|
|
40
|
-
hideStackTraces: {
|
|
41
|
-
usage: 'Hide the stack trace on lambda failure. Default: false',
|
|
42
|
-
type: 'boolean'
|
|
43
|
-
},
|
|
44
|
-
host: {
|
|
45
|
-
shortcut: 'o',
|
|
46
|
-
usage: 'The host name to listen on. Default: localhost',
|
|
47
|
-
type: 'string'
|
|
48
|
-
},
|
|
49
|
-
httpPort: {
|
|
50
|
-
usage: 'HTTP port to listen on. Default: 3000',
|
|
51
|
-
type: 'string'
|
|
52
|
-
},
|
|
53
|
-
httpsProtocol: {
|
|
54
|
-
shortcut: 'H',
|
|
55
|
-
usage: 'To enable HTTPS, specify directory (relative to your cwd, typically your project dir) for both cert.pem and key.pem files.',
|
|
56
|
-
type: 'string'
|
|
57
|
-
},
|
|
58
|
-
lambdaPort: {
|
|
59
|
-
usage: 'Lambda http port to listen on. Default: 3002',
|
|
60
|
-
type: 'string'
|
|
61
|
-
},
|
|
62
|
-
noPrependStageInUrl: {
|
|
63
|
-
usage: "Don't prepend http routes with the stage.",
|
|
64
|
-
type: 'boolean'
|
|
65
|
-
},
|
|
66
|
-
noStripTrailingSlashInUrl: {
|
|
67
|
-
usage: "Don't strip trailing slash from http routes.",
|
|
68
|
-
type: 'boolean'
|
|
69
|
-
},
|
|
70
|
-
noAuth: {
|
|
71
|
-
usage: 'Turns off all authorizers',
|
|
72
|
-
type: 'boolean'
|
|
73
|
-
},
|
|
74
|
-
ignoreJWTSignature: {
|
|
75
|
-
usage: "When using HttpApi with a JWT authorizer, don't check the signature of the JWT token. This should only be used for local development.",
|
|
76
|
-
type: 'boolean'
|
|
77
|
-
},
|
|
78
|
-
noTimeout: {
|
|
79
|
-
shortcut: 't',
|
|
80
|
-
usage: 'Disables the timeout feature.',
|
|
81
|
-
type: 'boolean'
|
|
82
|
-
},
|
|
83
|
-
prefix: {
|
|
84
|
-
shortcut: 'p',
|
|
85
|
-
usage: 'Adds a prefix to every path, to send your requests to http://localhost:3000/prefix/[your_path] instead.',
|
|
86
|
-
type: 'string'
|
|
87
|
-
},
|
|
88
|
-
printOutput: {
|
|
89
|
-
usage: 'Outputs your lambda response to the terminal.',
|
|
90
|
-
type: 'boolean'
|
|
91
|
-
},
|
|
92
|
-
resourceRoutes: {
|
|
93
|
-
usage: 'Turns on loading of your HTTP proxy settings from serverless.yml.',
|
|
94
|
-
type: 'boolean'
|
|
95
|
-
},
|
|
96
|
-
useChildProcesses: {
|
|
97
|
-
usage: 'Uses separate node processes for handlers',
|
|
98
|
-
type: 'boolean'
|
|
99
|
-
},
|
|
100
|
-
useWorkerThreads: {
|
|
101
|
-
usage: 'Uses worker threads for handlers. Requires node.js v11.7.0 or higher',
|
|
102
|
-
type: 'boolean'
|
|
103
|
-
},
|
|
104
|
-
websocketPort: {
|
|
105
|
-
usage: 'Websocket port to listen on. Default: 3001',
|
|
106
|
-
type: 'string'
|
|
107
|
-
},
|
|
108
|
-
webSocketHardTimeout: {
|
|
109
|
-
usage: 'Set WebSocket hard timeout in seconds to reproduce AWS limits (https://docs.aws.amazon.com/apigateway/latest/developerguide/limits.html#apigateway-execution-service-websocket-limits-table). Default: 7200 (2 hours)',
|
|
110
|
-
type: 'string'
|
|
111
|
-
},
|
|
112
|
-
webSocketIdleTimeout: {
|
|
113
|
-
usage: 'Set WebSocket idle timeout in seconds to reproduce AWS limits (https://docs.aws.amazon.com/apigateway/latest/developerguide/limits.html#apigateway-execution-service-websocket-limits-table). Default: 600 (10 minutes)',
|
|
114
|
-
type: 'string'
|
|
115
|
-
},
|
|
116
|
-
useDocker: {
|
|
117
|
-
usage: 'Uses docker for node/python/ruby/provided',
|
|
118
|
-
type: 'boolean'
|
|
119
|
-
},
|
|
120
|
-
layersDir: {
|
|
121
|
-
usage: 'The directory layers should be stored in. Default: {codeDir}/.serverless-offline/layers',
|
|
122
|
-
type: 'string'
|
|
123
|
-
},
|
|
124
|
-
dockerReadOnly: {
|
|
125
|
-
usage: 'Marks if the docker code layer should be read only. Default: true',
|
|
126
|
-
type: 'boolean'
|
|
127
|
-
},
|
|
128
|
-
functionCleanupIdleTimeSeconds: {
|
|
129
|
-
usage: 'Number of seconds until an idle function is eligible for cleanup',
|
|
130
|
-
type: 'string'
|
|
131
|
-
},
|
|
132
|
-
allowCache: {
|
|
133
|
-
usage: 'Allows the code of lambda functions to cache if supported',
|
|
134
|
-
type: 'boolean'
|
|
135
|
-
},
|
|
136
|
-
dockerHost: {
|
|
137
|
-
usage: 'The host name of Docker. Default: localhost',
|
|
138
|
-
type: 'string'
|
|
139
|
-
},
|
|
140
|
-
dockerHostServicePath: {
|
|
141
|
-
usage: 'Defines service path which is used by SLS running inside Docker container',
|
|
142
|
-
type: 'string'
|
|
143
|
-
},
|
|
144
|
-
dockerNetwork: {
|
|
145
|
-
usage: 'The network that the Docker container will connect to',
|
|
146
|
-
type: 'string'
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
exports.default = _default;
|