serverless-spy 1.2.0 → 1.3.1
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/.jsii +3 -3
- package/README.md +15 -12
- package/cli/cli.ts +8 -1
- package/dist/releasetag.txt +1 -1
- package/extension/aws/Errors.js +124 -0
- package/extension/aws/HttpResponseStream.js +36 -0
- package/extension/aws/UserFunction.js +324 -0
- package/extension/aws/VerboseLog.js +53 -0
- package/extension/interceptor.ts +8 -7
- package/lib/cli/cli.js +7 -2
- package/lib/cli/cli.mjs +7 -2
- package/lib/cli/cli.ts +8 -1
- package/lib/extension/dist/layer/nodejs/node_modules/interceptor.js +531 -274
- package/lib/extension/dist/layer/nodejs/node_modules/interceptor.js.map +4 -4
- package/lib/listener/ServerlessSpyListener.d.ts +4 -1
- package/lib/listener/ServerlessSpyListener.js +1 -1
- package/lib/listener/ServerlessSpyListener.mjs +1 -1
- package/lib/listener/SpyHandlers.ts.d.ts +22 -0
- package/lib/listener/SpyHandlers.ts.js +1 -1
- package/lib/listener/SpyHandlers.ts.mjs +1 -1
- package/lib/src/ServerlessSpy.d.ts +1 -0
- package/lib/src/ServerlessSpy.js +20 -8
- package/lib/src/ServerlessSpy.mjs +19 -7
- package/listener/ServerlessSpyListener.ts +9 -0
- package/listener/SpyHandlers.ts.ts +50 -0
- package/package.json +1 -1
- package/doc/Contributors.md +0 -4
- package/extension/aws/Common.ts +0 -88
- package/extension/aws/Errors.ts +0 -140
- package/extension/aws/UserFunction.ts +0 -169
package/extension/interceptor.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Callback, Context, Handler } from 'aws-lambda';
|
|
2
|
+
import { serializeError } from 'serialize-error';
|
|
2
3
|
import { FunctionConsoleSpyEvent } from '../common/spyEvents/FunctionConsoleSpyEvent';
|
|
3
4
|
import { FunctionContext } from '../common/spyEvents/FunctionContext';
|
|
4
5
|
import { FunctionErrorSpyEvent } from '../common/spyEvents/FunctionErrorSpyEvent';
|
|
@@ -6,8 +7,8 @@ import { FunctionRequestSpyEvent } from '../common/spyEvents/FunctionRequestSpyE
|
|
|
6
7
|
import { FunctionResponseSpyEvent } from '../common/spyEvents/FunctionResponseSpyEvent';
|
|
7
8
|
import { SpyEventSender } from '../common/SpyEventSender';
|
|
8
9
|
import { envVariableNames } from '../src/common/envVariableNames';
|
|
10
|
+
// @ts-ignore
|
|
9
11
|
import { load } from './aws/UserFunction';
|
|
10
|
-
import { serializeError } from 'serialize-error';
|
|
11
12
|
|
|
12
13
|
const ORIGINAL_HANDLER_KEY = 'ORIGINAL_HANDLER';
|
|
13
14
|
|
|
@@ -35,11 +36,11 @@ const spyEventSender = new SpyEventSender({
|
|
|
35
36
|
// Wrap original handler.
|
|
36
37
|
// Handler can be async or non-async:
|
|
37
38
|
// https://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-handler.html
|
|
38
|
-
export const handler = (
|
|
39
|
+
export const handler = async (
|
|
39
40
|
event: any,
|
|
40
41
|
context: Context,
|
|
41
42
|
callback: Callback
|
|
42
|
-
): Promise<any
|
|
43
|
+
): Promise<any | undefined> => {
|
|
43
44
|
const contextSpy: FunctionContext = {
|
|
44
45
|
functionName: context.functionName,
|
|
45
46
|
awsRequestId: context.awsRequestId,
|
|
@@ -70,7 +71,7 @@ export const handler = (
|
|
|
70
71
|
});
|
|
71
72
|
promises.push(p);
|
|
72
73
|
|
|
73
|
-
const originalHandler = getOriginalHandler();
|
|
74
|
+
const originalHandler = await getOriginalHandler();
|
|
74
75
|
|
|
75
76
|
const fail = (error: any) => {
|
|
76
77
|
logError(error);
|
|
@@ -120,7 +121,7 @@ export const handler = (
|
|
|
120
121
|
|
|
121
122
|
// Async handler returns Promise
|
|
122
123
|
if (isPromise(result)) {
|
|
123
|
-
return new Promise((resolve, reject) => {
|
|
124
|
+
return await new Promise((resolve, reject) => {
|
|
124
125
|
(result as Promise<any>)
|
|
125
126
|
.then((response: any) =>
|
|
126
127
|
// The response is received via Promise
|
|
@@ -220,7 +221,7 @@ async function sendRawSpyEvent(data: any) {
|
|
|
220
221
|
await spyEventSender.publishSpyEvent(data);
|
|
221
222
|
}
|
|
222
223
|
|
|
223
|
-
function getOriginalHandler(): Handler {
|
|
224
|
+
async function getOriginalHandler(): Promise<Handler> {
|
|
224
225
|
log('Original handler', process.env[ORIGINAL_HANDLER_KEY]);
|
|
225
226
|
|
|
226
227
|
if (process.env[ORIGINAL_HANDLER_KEY] === undefined)
|
|
@@ -228,7 +229,7 @@ function getOriginalHandler(): Handler {
|
|
|
228
229
|
return load(
|
|
229
230
|
process.env.LAMBDA_TASK_ROOT!,
|
|
230
231
|
process.env[ORIGINAL_HANDLER_KEY]
|
|
231
|
-
) as Handler
|
|
232
|
+
) as Promise<Handler>;
|
|
232
233
|
}
|
|
233
234
|
|
|
234
235
|
function log(message: string, ...optionalParams: any[]) {
|
package/lib/cli/cli.js
CHANGED
|
@@ -30,7 +30,7 @@ async function run() {
|
|
|
30
30
|
});
|
|
31
31
|
progam.parse(process.argv);
|
|
32
32
|
if (!options.ws && !options.cdkoutput) {
|
|
33
|
-
throw new Error('--ws or --
|
|
33
|
+
throw new Error('--ws or --cdkoutput parameter not specified');
|
|
34
34
|
}
|
|
35
35
|
if (options.cdkoutput) {
|
|
36
36
|
const rawdata = fs.readFileSync(options.cdkoutput);
|
|
@@ -160,6 +160,11 @@ function getNpmModuleInstalledPath(npm) {
|
|
|
160
160
|
if (fs.existsSync(folderAsPackage)) {
|
|
161
161
|
return folderAsPackage;
|
|
162
162
|
}
|
|
163
|
+
// When boostrap ends up in importing projects root node_modules and not in serverless-spys node_modules
|
|
164
|
+
folderAsPackage = path.join(__dirname, '../../../../', 'node_modules', npm);
|
|
165
|
+
if (fs.existsSync(folderAsPackage)) {
|
|
166
|
+
return folderAsPackage;
|
|
167
|
+
}
|
|
163
168
|
throw new Error(`Can not find package in folder ${folder} and ${folderAsPackage}`);
|
|
164
169
|
}
|
|
165
170
|
function getCompiledJsPath() {
|
|
@@ -173,4 +178,4 @@ function getCompiledJsPath() {
|
|
|
173
178
|
}
|
|
174
179
|
throw new Error(`Can not find compiled files in folder ${folder} and ${folderAsPackage}`);
|
|
175
180
|
}
|
|
176
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vY2xpL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLDZCQUE2QjtBQUM3QiwrQkFBaUM7QUFDakMsa0NBQWtDO0FBQ2xDLDZCQUE2QjtBQUM3QiwrREFBa0U7QUFFbEUsTUFBTSxhQUFhLEdBQUcsSUFBQSxnQkFBUyxFQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUU3QyxrQ0FBa0M7QUFDbEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLElBQUssSUFBWSxDQUFDLE9BQU8sRUFBRTtJQUN6QixNQUFNLEdBQUksSUFBWSxDQUFDLE9BQU8sQ0FBQztDQUNoQztBQUVELEtBQUssVUFBVSxHQUFHO0lBQ2hCLElBQUksU0FBK0IsQ0FBQztJQUNwQyxJQUFJLFNBQWlELENBQUM7SUFFdEQsSUFBSSxPQUFZLENBQUM7SUFFakIsTUFBTTtTQUNILFdBQVcsQ0FBQywyQkFBMkIsQ0FBQztTQUN4QyxNQUFNLENBQUMsV0FBVyxFQUFFLGdCQUFnQixDQUFDO1NBQ3JDLE1BQU0sQ0FDTCx5QkFBeUIsRUFDekIsK0VBQStFLENBQ2hGO1NBQ0EsTUFBTSxDQUNMLHVCQUF1QixFQUN2Qix5RUFBeUUsQ0FDMUU7U0FDQSxNQUFNLENBQUMsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztTQUMxRCxNQUFNLENBQ0wsWUFBWSxFQUNaLG9FQUFvRSxFQUNwRSxNQUFNLENBQUMsR0FBRyxFQUNWLE1BQU0sQ0FDUDtTQUNBLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDOUIsT0FBTyxHQUFHLEdBQUcsQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FBQztJQUVMLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTNCLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtRQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7S0FDL0Q7SUFFRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUU7UUFDckIsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkQsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDM0MsU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDcEM7SUFFRCxJQUFJO1NBQ0QsWUFBWSxDQUFDLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFO1FBQ2xDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNmLElBQUk7Z0JBQ0YsdUNBQXVDO2dCQUN2QyxJQUFJLFFBQVEsR0FBVyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDekMseUJBQXlCO2dCQUN6QixRQUFRLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxVQUFVLEdBQUcsU0FBUyxDQUFDO2dCQUUzQixJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLHNCQUFzQixDQUFDLEVBQUU7b0JBQ25ELCtCQUErQjtvQkFDL0IsVUFBVSxHQUFHLGlCQUFpQixFQUFFLENBQUM7aUJBQ2xDO3FCQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQUU7b0JBQ2pELFFBQVEsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDcEQsTUFBTSxlQUFlLEdBQUcsTUFBTSx5QkFBeUIsQ0FDckQsV0FBVyxDQUNaLENBQUM7b0JBRUYsVUFBVSxHQUFHLGVBQWUsQ0FBQztpQkFDOUI7cUJBQU0sSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO29CQUN2RCxRQUFRLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDMUQsTUFBTSxlQUFlLEdBQUcsTUFBTSx5QkFBeUIsQ0FDckQsaUJBQWlCLENBQ2xCLENBQUM7b0JBRUYsVUFBVSxHQUFHLGVBQWUsQ0FBQztpQkFDOUI7cUJBQU07b0JBQ0wsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO3dCQUNyQixRQUFRLEdBQUcsY0FBYyxDQUFDO3FCQUMzQjtpQkFDRjtnQkFFRCxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzNDLGdEQUFnRDtnQkFFaEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDN0QsTUFBTSxTQUFTLEdBQVE7b0JBQ3JCLE9BQU8sRUFBRSxXQUFXO29CQUNwQixLQUFLLEVBQUUsaUJBQWlCO29CQUN4QixNQUFNLEVBQUUsVUFBVTtvQkFDbEIsT0FBTyxFQUFFLGtCQUFrQjtvQkFDM0IsTUFBTSxFQUFFLFdBQVc7b0JBQ25CLE1BQU0sRUFBRSxXQUFXO29CQUNuQixNQUFNLEVBQUUsV0FBVztvQkFDbkIsTUFBTSxFQUFFLGVBQWU7b0JBQ3ZCLE1BQU0sRUFBRSxXQUFXO29CQUNuQixNQUFNLEVBQUUsV0FBVztvQkFDbkIsT0FBTyxFQUFFLHVCQUF1QjtvQkFDaEMsTUFBTSxFQUFFLHNCQUFzQjtvQkFDOUIsTUFBTSxFQUFFLCtCQUErQjtvQkFDdkMsTUFBTSxFQUFFLHNCQUFzQjtvQkFDOUIsT0FBTyxFQUFFLGtCQUFrQjtpQkFDNUIsQ0FBQztnQkFFRixNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksMEJBQTBCLENBQUM7Z0JBRXJFLElBQUksT0FBTyxDQUFDLEdBQUcsS0FBSyxZQUFZLEVBQUU7b0JBQ2hDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztvQkFDaEUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2lCQUNsRDtxQkFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFO29CQUN4QyxJQUFJLEtBQXlCLENBQUM7b0JBQzlCLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRTt3QkFDZCxLQUFLLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQztxQkFDcEI7eUJBQU07d0JBQ0wsb0JBQW9CO3dCQUNwQixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDeEMsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUV4QixJQUFJLENBQUMsS0FBSyxFQUFFOzRCQUNWLEtBQUssR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO3lCQUMxQjt3QkFFRCxJQUFJLEtBQUssRUFBRTs0QkFDVCxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixDQUFDO3lCQUM3Qzs2QkFBTTs0QkFDTCxJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dDQUNyRCxLQUFLO29DQUNILFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUM7NkJBQzNEO3lCQUNGO3FCQUNGO29CQUVELElBQUksQ0FBQyxLQUFLLEVBQUU7d0JBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO3FCQUMxQztvQkFFRCxrQ0FBa0M7b0JBQ2xDLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBQSx1Q0FBcUIsRUFBQyxLQUFLLENBQUMsQ0FBQztvQkFDdkQsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztvQkFDekQsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7aUJBQ3BDO3FCQUFNO29CQUNMLElBQUk7d0JBQ0YsTUFBTSxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBRTlDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7d0JBQ3pELFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO3FCQUNoQztvQkFBQyxPQUFPLEtBQVUsRUFBRTt3QkFDbkIsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTs0QkFDM0IsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQzs0QkFDekQsUUFBUSxDQUFDLEdBQUcsQ0FDViw2QkFBNkIsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUMxQyxPQUFPLENBQ1IsQ0FBQzt5QkFDSDs2QkFBTTs0QkFDTCxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDOzRCQUN4QixRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUM7eUJBQzNDO3FCQUNGO2lCQUNGO2FBQ0Y7WUFBQyxPQUFPLEdBQVEsRUFBRTtnQkFDakIsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztnQkFDekQsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQ3BDO1FBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNQLENBQUMsQ0FBQztTQUNELE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFeEIsT0FBTyxDQUFDLEdBQUcsQ0FDVCxvREFBb0QsT0FBTyxDQUFDLElBQUksRUFBRSxDQUNuRSxDQUFDO0lBQ0YsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO1FBQ2hCLE1BQU0sTUFBTSxDQUFDLG9CQUFvQixPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztLQUNsRDtBQUNILENBQUM7QUFFRCxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRTNCLFNBQVMseUJBQXlCLENBQUMsR0FBVztJQUM1QyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzlELElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN6QixPQUFPLE1BQU0sQ0FBQztLQUNmO0lBRUQsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUUxRSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLEVBQUU7UUFDbEMsT0FBTyxlQUFlLENBQUM7S0FDeEI7SUFFRCxNQUFNLElBQUksS0FBSyxDQUNiLGtDQUFrQyxNQUFNLFFBQVEsZUFBZSxFQUFFLENBQ2xFLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxpQkFBaUI7SUFDeEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3BELElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN6QixPQUFPLE1BQU0sQ0FBQztLQUNmO0lBRUQsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRWhFLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsRUFBRTtRQUNsQyxPQUFPLGVBQWUsQ0FBQztLQUN4QjtJQUVELE1BQU0sSUFBSSxLQUFLLENBQ2IseUNBQXlDLE1BQU0sUUFBUSxlQUFlLEVBQUUsQ0FDekUsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBodHRwIGZyb20gJ2h0dHAnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0ICogYXMgcHJvZ2FtIGZyb20gJ2NhcG9yYWwnO1xuaW1wb3J0ICogYXMgb3BlbiBmcm9tICdvcGVuJztcbmltcG9ydCB7IGdldFNpZ25lZFdlYlNvY2tldFVybCB9IGZyb20gJy4uL2NvbW1vbi9nZXRXZWJTb2NrZXRVcmwnO1xuXG5jb25zdCByZWFkRmlsZUFzeW5jID0gcHJvbWlzaWZ5KGZzLnJlYWRGaWxlKTtcblxuLy9yZXNvbHZlIGlzc3VlIHdpdGggbW9kdWxlIGltcG9ydFxubGV0IG9wZW5lciA9IG9wZW47XG5pZiAoKG9wZW4gYXMgYW55KS5kZWZhdWx0KSB7XG4gIG9wZW5lciA9IChvcGVuIGFzIGFueSkuZGVmYXVsdDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuKCkge1xuICBsZXQgc3RhY2tMaXN0OiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgbGV0IGNka091dHB1dDogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj47XG5cbiAgbGV0IG9wdGlvbnM6IGFueTtcblxuICBwcm9nYW1cbiAgICAuZGVzY3JpcHRpb24oJ1NlcnZlcmxlc3NTcHkgd2ViIGNvbnNvbGUnKVxuICAgIC5vcHRpb24oJy0td3MgPHdzPicsICdXZWJzb2NrZXQgbGluaycpXG4gICAgLm9wdGlvbihcbiAgICAgICctLWNka291dHB1dCA8Y2Rrb3V0cHV0PicsXG4gICAgICAnQ0RLIG91dHB1dCBmaWxlIHRoYXQgY29udGFpbnMgV2Vic29ja2V0IGxpbmsgaW4gYSBwcm9wZXJ0eSBTZXJ2ZXJsZXNzU3B5V3NVcmwnXG4gICAgKVxuICAgIC5vcHRpb24oXG4gICAgICAnLS1jZGtzdGFjayA8Y2Rrc3RhY2s+JyxcbiAgICAgICdDREsgc3RhY2sgaW4gY2RrIG91dHB1dCBmaWxlLiBJZiBub3Qgc3BlY2lmaWVkIHRoZSBmaXJzdCBvbmUgaXMgcGlja2VkLidcbiAgICApXG4gICAgLm9wdGlvbignLS1vcGVuIDxvcGVuPicsICdPcGVuIGJyb3dzZXInLCBwcm9nYW0uQk9PTCwgdHJ1ZSlcbiAgICAub3B0aW9uKFxuICAgICAgJy0tcG9ydCA8cD4nLFxuICAgICAgYEEgcG9ydCBvbiBsb2NhbGhvc3Qgd2hlcmUgU2VydmVybGVzc1NweSB3ZWIgY29uc29sZSBpcyBhY2Nlc3NpYmxlLmAsXG4gICAgICBwcm9nYW0uSU5ULFxuICAgICAgJzM0NTYnXG4gICAgKVxuICAgIC5hY3Rpb24oKF9hcmdzLCBvcHQsIF9sb2dnZXIpID0+IHtcbiAgICAgIG9wdGlvbnMgPSBvcHQ7XG4gICAgfSk7XG5cbiAgcHJvZ2FtLnBhcnNlKHByb2Nlc3MuYXJndik7XG5cbiAgaWYgKCFvcHRpb25zLndzICYmICFvcHRpb25zLmNka291dHB1dCkge1xuICAgIHRocm93IG5ldyBFcnJvcignLS13cyBvciAtLWNka3N0YWNrIHBhcmFtZXRlciBub3Qgc3BlY2lmaWVkJyk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5jZGtvdXRwdXQpIHtcbiAgICBjb25zdCByYXdkYXRhID0gZnMucmVhZEZpbGVTeW5jKG9wdGlvbnMuY2Rrb3V0cHV0KTtcbiAgICBjZGtPdXRwdXQgPSBKU09OLnBhcnNlKHJhd2RhdGEudG9TdHJpbmcoKSk7XG4gICAgc3RhY2tMaXN0ID0gT2JqZWN0LmtleXMoY2RrT3V0cHV0KTtcbiAgfVxuXG4gIGh0dHBcbiAgICAuY3JlYXRlU2VydmVyKChyZXF1ZXN0LCByZXNwb25zZSkgPT4ge1xuICAgICAgdm9pZCAoYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vY29uc29sZS5sb2coJ3JlcXVlc3QgJywgcmVxdWVzdC51cmwpO1xuICAgICAgICAgIGxldCBmaWxlUGF0aDogc3RyaW5nID0gYC4ke3JlcXVlc3QudXJsfWA7XG4gICAgICAgICAgLy9yZW1vdmUgcXVlcnkgcGFyYW1ldGVyc1xuICAgICAgICAgIGZpbGVQYXRoID0gZmlsZVBhdGguc3BsaXQoJz8nKVswXTtcbiAgICAgICAgICBsZXQgcm9vdEZvbGRlciA9IF9fZGlybmFtZTtcblxuICAgICAgICAgIGlmIChyZXF1ZXN0LnVybD8uc3RhcnRzV2l0aCgnL3dlYlNlcnZlcmxlc3NTcHkuanMnKSkge1xuICAgICAgICAgICAgLy9nZXQgdHJhbnNwaWxlZCBUUyB0byBKUyBmaWxlc1xuICAgICAgICAgICAgcm9vdEZvbGRlciA9IGdldENvbXBpbGVkSnNQYXRoKCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0LnVybD8uc3RhcnRzV2l0aCgnL2Jvb3RzdHJhcC8nKSkge1xuICAgICAgICAgICAgZmlsZVBhdGggPSBmaWxlUGF0aC5zdWJzdHJpbmcoJy9ib290c3RyYXAvJy5sZW5ndGgpO1xuICAgICAgICAgICAgY29uc3QgYm9vdHN0cmFwRm9sZGVyID0gYXdhaXQgZ2V0TnBtTW9kdWxlSW5zdGFsbGVkUGF0aChcbiAgICAgICAgICAgICAgJ2Jvb3RzdHJhcCdcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJvb3RGb2xkZXIgPSBib290c3RyYXBGb2xkZXI7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0LnVybD8uc3RhcnRzV2l0aCgnL2Jvb3RzdHJhcC1pY29ucy8nKSkge1xuICAgICAgICAgICAgZmlsZVBhdGggPSBmaWxlUGF0aC5zdWJzdHJpbmcoJy9ib290c3RyYXAtaWNvbnMvJy5sZW5ndGgpO1xuICAgICAgICAgICAgY29uc3QgYm9vdHN0cmFwRm9sZGVyID0gYXdhaXQgZ2V0TnBtTW9kdWxlSW5zdGFsbGVkUGF0aChcbiAgICAgICAgICAgICAgJ2Jvb3RzdHJhcC1pY29ucydcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJvb3RGb2xkZXIgPSBib290c3RyYXBGb2xkZXI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmaWxlUGF0aCA9PT0gJy4vJykge1xuICAgICAgICAgICAgICBmaWxlUGF0aCA9ICcuL2luZGV4Lmh0bWwnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGZpbGVQYXRoID0gcGF0aC5qb2luKHJvb3RGb2xkZXIsIGZpbGVQYXRoKTtcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKGAke3JlcXVlc3QudXJsfSAtLT4gJHtmaWxlUGF0aH1gKTtcblxuICAgICAgICAgIGNvbnN0IGV4dG5hbWUgPSBTdHJpbmcocGF0aC5leHRuYW1lKGZpbGVQYXRoKSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICBjb25zdCBtaW1lVHlwZXM6IGFueSA9IHtcbiAgICAgICAgICAgICcuaHRtbCc6ICd0ZXh0L2h0bWwnLFxuICAgICAgICAgICAgJy5qcyc6ICd0ZXh0L2phdmFzY3JpcHQnLFxuICAgICAgICAgICAgJy5jc3MnOiAndGV4dC9jc3MnLFxuICAgICAgICAgICAgJy5qc29uJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgJy5wbmcnOiAnaW1hZ2UvcG5nJyxcbiAgICAgICAgICAgICcuanBnJzogJ2ltYWdlL2pwZycsXG4gICAgICAgICAgICAnLmdpZic6ICdpbWFnZS9naWYnLFxuICAgICAgICAgICAgJy5zdmcnOiAnaW1hZ2Uvc3ZnK3htbCcsXG4gICAgICAgICAgICAnLndhdic6ICdhdWRpby93YXYnLFxuICAgICAgICAgICAgJy5tcDQnOiAndmlkZW8vbXA0JyxcbiAgICAgICAgICAgICcud29mZic6ICdhcHBsaWNhdGlvbi9mb250LXdvZmYnLFxuICAgICAgICAgICAgJy50dGYnOiAnYXBwbGljYXRpb24vZm9udC10dGYnLFxuICAgICAgICAgICAgJy5lb3QnOiAnYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3QnLFxuICAgICAgICAgICAgJy5vdGYnOiAnYXBwbGljYXRpb24vZm9udC1vdGYnLFxuICAgICAgICAgICAgJy53YXNtJzogJ2FwcGxpY2F0aW9uL3dhc20nLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IG1pbWVUeXBlc1tleHRuYW1lXSB8fCAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcblxuICAgICAgICAgIGlmIChyZXF1ZXN0LnVybCA9PT0gJy9zdGFja0xpc3QnKSB7XG4gICAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoMjAwLCB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSk7XG4gICAgICAgICAgICByZXNwb25zZS5lbmQoSlNPTi5zdHJpbmdpZnkoc3RhY2tMaXN0KSwgJ3V0Zi04Jyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0LnVybD8ubWF0Y2goJ14vd3NVcmwnKSkge1xuICAgICAgICAgICAgbGV0IHdzVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy53cykge1xuICAgICAgICAgICAgICB3c1VybCA9IG9wdGlvbnMud3M7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBvcHRpb25zLmNka291dHB1dFxuICAgICAgICAgICAgICBjb25zdCB1cmxQYXRocyA9IHJlcXVlc3QudXJsLnNwbGl0KCcvJyk7XG4gICAgICAgICAgICAgIGxldCBzdGFjayA9IHVybFBhdGhzWzJdO1xuXG4gICAgICAgICAgICAgIGlmICghc3RhY2spIHtcbiAgICAgICAgICAgICAgICBzdGFjayA9IG9wdGlvbnMuY2Rrc3RhY2s7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoc3RhY2spIHtcbiAgICAgICAgICAgICAgICB3c1VybCA9IGNka091dHB1dFtzdGFja10uU2VydmVybGVzc1NweVdzVXJsO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChjZGtPdXRwdXQgJiYgY2RrT3V0cHV0W09iamVjdC5rZXlzKGNka091dHB1dClbMF1dKSB7XG4gICAgICAgICAgICAgICAgICB3c1VybCA9XG4gICAgICAgICAgICAgICAgICAgIGNka091dHB1dFtPYmplY3Qua2V5cyhjZGtPdXRwdXQpWzBdXS5TZXJ2ZXJsZXNzU3B5V3NVcmw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghd3NVcmwpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHdlYnNvY2tldCB1cmwnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhgV1MgVVJMOiAke3dzVXJsfWApO1xuICAgICAgICAgICAgY29uc3Qgc2lnbmVkV1NVcmwgPSBhd2FpdCBnZXRTaWduZWRXZWJTb2NrZXRVcmwod3NVcmwpO1xuICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDIwMCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvaHRtbCcgfSk7XG4gICAgICAgICAgICByZXNwb25zZS5lbmQoc2lnbmVkV1NVcmwsICd1dGYtOCcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZEZpbGVBc3luYyhmaWxlUGF0aCk7XG5cbiAgICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDIwMCwgeyAnQ29udGVudC1UeXBlJzogY29udGVudFR5cGUgfSk7XG4gICAgICAgICAgICAgIHJlc3BvbnNlLmVuZChjb250ZW50LCAndXRmLTgnKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgICAgaWYgKGVycm9yLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDQwNCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvaHRtbCcgfSk7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuZW5kKFxuICAgICAgICAgICAgICAgICAgYE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgJHtyZXF1ZXN0LnVybH1gLFxuICAgICAgICAgICAgICAgICAgJ3V0Zi04J1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDUwMCk7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuZW5kKGBFcnJvcjogJHtlcnJvci5jb2RlfSAuLlxcbmApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICAgIHJlc3BvbnNlLndyaXRlSGVhZCg1MDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L2h0bWwnIH0pO1xuICAgICAgICAgIHJlc3BvbnNlLmVuZChlcnIubWVzc2FnZSwgJ3V0Zi04Jyk7XG4gICAgICAgIH1cbiAgICAgIH0pKCk7XG4gICAgfSlcbiAgICAubGlzdGVuKG9wdGlvbnMucG9ydCk7XG5cbiAgY29uc29sZS5sb2coXG4gICAgYFNlcnZlcmxlc3NTb3kgY29uc29sZSBydW5pbmcgYXQgaHR0cDovL2xvY2FsaG9zdDoke29wdGlvbnMucG9ydH1gXG4gICk7XG4gIGlmIChvcHRpb25zLm9wZW4pIHtcbiAgICBhd2FpdCBvcGVuZXIoYGh0dHA6Ly9sb2NhbGhvc3Q6JHtvcHRpb25zLnBvcnR9YCk7XG4gIH1cbn1cblxucnVuKCkuY2F0Y2goY29uc29sZS5lcnJvcik7XG5cbmZ1bmN0aW9uIGdldE5wbU1vZHVsZUluc3RhbGxlZFBhdGgobnBtOiBzdHJpbmcpIHtcbiAgbGV0IGZvbGRlciA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8nLCAnbm9kZV9tb2R1bGVzJywgbnBtKTtcbiAgaWYgKGZzLmV4aXN0c1N5bmMoZm9sZGVyKSkge1xuICAgIHJldHVybiBmb2xkZXI7XG4gIH1cblxuICBsZXQgZm9sZGVyQXNQYWNrYWdlID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLy4uLycsICdub2RlX21vZHVsZXMnLCBucG0pO1xuXG4gIGlmIChmcy5leGlzdHNTeW5jKGZvbGRlckFzUGFja2FnZSkpIHtcbiAgICByZXR1cm4gZm9sZGVyQXNQYWNrYWdlO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBDYW4gbm90IGZpbmQgcGFja2FnZSBpbiBmb2xkZXIgJHtmb2xkZXJ9IGFuZCAke2ZvbGRlckFzUGFja2FnZX1gXG4gICk7XG59XG5cbmZ1bmN0aW9uIGdldENvbXBpbGVkSnNQYXRoKCkge1xuICBsZXQgZm9sZGVyID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLycsICdsaWIvY2xpJyk7XG4gIGlmIChmcy5leGlzdHNTeW5jKGZvbGRlcikpIHtcbiAgICByZXR1cm4gZm9sZGVyO1xuICB9XG5cbiAgbGV0IGZvbGRlckFzUGFja2FnZSA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi8nLCAnbGliL2NsaScpO1xuXG4gIGlmIChmcy5leGlzdHNTeW5jKGZvbGRlckFzUGFja2FnZSkpIHtcbiAgICByZXR1cm4gZm9sZGVyQXNQYWNrYWdlO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBDYW4gbm90IGZpbmQgY29tcGlsZWQgZmlsZXMgaW4gZm9sZGVyICR7Zm9sZGVyfSBhbmQgJHtmb2xkZXJBc1BhY2thZ2V9YFxuICApO1xufVxuIl19
|
|
181
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vY2xpL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLDZCQUE2QjtBQUM3QiwrQkFBaUM7QUFDakMsa0NBQWtDO0FBQ2xDLDZCQUE2QjtBQUM3QiwrREFBa0U7QUFFbEUsTUFBTSxhQUFhLEdBQUcsSUFBQSxnQkFBUyxFQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUU3QyxrQ0FBa0M7QUFDbEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLElBQUssSUFBWSxDQUFDLE9BQU8sRUFBRTtJQUN6QixNQUFNLEdBQUksSUFBWSxDQUFDLE9BQU8sQ0FBQztDQUNoQztBQUVELEtBQUssVUFBVSxHQUFHO0lBQ2hCLElBQUksU0FBK0IsQ0FBQztJQUNwQyxJQUFJLFNBQWlELENBQUM7SUFFdEQsSUFBSSxPQUFZLENBQUM7SUFFakIsTUFBTTtTQUNILFdBQVcsQ0FBQywyQkFBMkIsQ0FBQztTQUN4QyxNQUFNLENBQUMsV0FBVyxFQUFFLGdCQUFnQixDQUFDO1NBQ3JDLE1BQU0sQ0FDTCx5QkFBeUIsRUFDekIsK0VBQStFLENBQ2hGO1NBQ0EsTUFBTSxDQUNMLHVCQUF1QixFQUN2Qix5RUFBeUUsQ0FDMUU7U0FDQSxNQUFNLENBQUMsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztTQUMxRCxNQUFNLENBQ0wsWUFBWSxFQUNaLG9FQUFvRSxFQUNwRSxNQUFNLENBQUMsR0FBRyxFQUNWLE1BQU0sQ0FDUDtTQUNBLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDOUIsT0FBTyxHQUFHLEdBQUcsQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FBQztJQUVMLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFD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QWUsRUFBRSxDQUNsRSxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsaUJBQWlCO0lBQ3hCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNwRCxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDekIsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUVELElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUVoRSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLEVBQUU7UUFDbEMsT0FBTyxlQUFlLENBQUM7S0FDeEI7SUFFRCxNQUFNLElBQUksS0FBSyxDQUNiLHlDQUF5QyxNQUFNLFFBQVEsZUFBZSxFQUFFLENBQ3pFLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgaHR0cCBmcm9tICdodHRwJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJztcbmltcG9ydCAqIGFzIHByb2dhbSBmcm9tICdjYXBvcmFsJztcbmltcG9ydCAqIGFzIG9wZW4gZnJvbSAnb3Blbic7XG5pbXBvcnQgeyBnZXRTaWduZWRXZWJTb2NrZXRVcmwgfSBmcm9tICcuLi9jb21tb24vZ2V0V2ViU29ja2V0VXJsJztcblxuY29uc3QgcmVhZEZpbGVBc3luYyA9IHByb21pc2lmeShmcy5yZWFkRmlsZSk7XG5cbi8vcmVzb2x2ZSBpc3N1ZSB3aXRoIG1vZHVsZSBpbXBvcnRcbmxldCBvcGVuZXIgPSBvcGVuO1xuaWYgKChvcGVuIGFzIGFueSkuZGVmYXVsdCkge1xuICBvcGVuZXIgPSAob3BlbiBhcyBhbnkpLmRlZmF1bHQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1bigpIHtcbiAgbGV0IHN0YWNrTGlzdDogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gIGxldCBjZGtPdXRwdXQ6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+O1xuXG4gIGxldCBvcHRpb25zOiBhbnk7XG5cbiAgcHJvZ2FtXG4gICAgLmRlc2NyaXB0aW9uKCdTZXJ2ZXJsZXNzU3B5IHdlYiBjb25zb2xlJylcbiAgICAub3B0aW9uKCctLXdzIDx3cz4nLCAnV2Vic29ja2V0IGxpbmsnKVxuICAgIC5vcHRpb24oXG4gICAgICAnLS1jZGtvdXRwdXQgPGNka291dHB1dD4nLFxuICAgICAgJ0NESyBvdXRwdXQgZmlsZSB0aGF0IGNvbnRhaW5zIFdlYnNvY2tldCBsaW5rIGluIGEgcHJvcGVydHkgU2VydmVybGVzc1NweVdzVXJsJ1xuICAgIClcbiAgICAub3B0aW9uKFxuICAgICAgJy0tY2Rrc3RhY2sgPGNka3N0YWNrPicsXG4gICAgICAnQ0RLIHN0YWNrIGluIGNkayBvdXRwdXQgZmlsZS4gSWYgbm90IHNwZWNpZmllZCB0aGUgZmlyc3Qgb25lIGlzIHBpY2tlZC4nXG4gICAgKVxuICAgIC5vcHRpb24oJy0tb3BlbiA8b3Blbj4nLCAnT3BlbiBicm93c2VyJywgcHJvZ2FtLkJPT0wsIHRydWUpXG4gICAgLm9wdGlvbihcbiAgICAgICctLXBvcnQgPHA+JyxcbiAgICAgIGBBIHBvcnQgb24gbG9jYWxob3N0IHdoZXJlIFNlcnZlcmxlc3NTcHkgd2ViIGNvbnNvbGUgaXMgYWNjZXNzaWJsZS5gLFxuICAgICAgcHJvZ2FtLklOVCxcbiAgICAgICczNDU2J1xuICAgIClcbiAgICAuYWN0aW9uKChfYXJncywgb3B0LCBfbG9nZ2VyKSA9PiB7XG4gICAgICBvcHRpb25zID0gb3B0O1xuICAgIH0pO1xuXG4gIHByb2dhbS5wYXJzZShwcm9jZXNzLmFyZ3YpO1xuXG4gIGlmICghb3B0aW9ucy53cyAmJiAhb3B0aW9ucy5jZGtvdXRwdXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJy0td3Mgb3IgLS1jZGtvdXRwdXQgcGFyYW1ldGVyIG5vdCBzcGVjaWZpZWQnKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmNka291dHB1dCkge1xuICAgIGNvbnN0IHJhd2RhdGEgPSBmcy5yZWFkRmlsZVN5bmMob3B0aW9ucy5jZGtvdXRwdXQpO1xuICAgIGNka091dHB1dCA9IEpTT04ucGFyc2UocmF3ZGF0YS50b1N0cmluZygpKTtcbiAgICBzdGFja0xpc3QgPSBPYmplY3Qua2V5cyhjZGtPdXRwdXQpO1xuICB9XG5cbiAgaHR0cFxuICAgIC5jcmVhdGVTZXJ2ZXIoKHJlcXVlc3QsIHJlc3BvbnNlKSA9PiB7XG4gICAgICB2b2lkIChhc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy9jb25zb2xlLmxvZygncmVxdWVzdCAnLCByZXF1ZXN0LnVybCk7XG4gICAgICAgICAgbGV0IGZpbGVQYXRoOiBzdHJpbmcgPSBgLiR7cmVxdWVzdC51cmx9YDtcbiAgICAgICAgICAvL3JlbW92ZSBxdWVyeSBwYXJhbWV0ZXJzXG4gICAgICAgICAgZmlsZVBhdGggPSBmaWxlUGF0aC5zcGxpdCgnPycpWzBdO1xuICAgICAgICAgIGxldCByb290Rm9sZGVyID0gX19kaXJuYW1lO1xuXG4gICAgICAgICAgaWYgKHJlcXVlc3QudXJsPy5zdGFydHNXaXRoKCcvd2ViU2VydmVybGVzc1NweS5qcycpKSB7XG4gICAgICAgICAgICAvL2dldCB0cmFuc3BpbGVkIFRTIHRvIEpTIGZpbGVzXG4gICAgICAgICAgICByb290Rm9sZGVyID0gZ2V0Q29tcGlsZWRKc1BhdGgoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcXVlc3QudXJsPy5zdGFydHNXaXRoKCcvYm9vdHN0cmFwLycpKSB7XG4gICAgICAgICAgICBmaWxlUGF0aCA9IGZpbGVQYXRoLnN1YnN0cmluZygnL2Jvb3RzdHJhcC8nLmxlbmd0aCk7XG4gICAgICAgICAgICBjb25zdCBib290c3RyYXBGb2xkZXIgPSBhd2FpdCBnZXROcG1Nb2R1bGVJbnN0YWxsZWRQYXRoKFxuICAgICAgICAgICAgICAnYm9vdHN0cmFwJ1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgcm9vdEZvbGRlciA9IGJvb3RzdHJhcEZvbGRlcjtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcXVlc3QudXJsPy5zdGFydHNXaXRoKCcvYm9vdHN0cmFwLWljb25zLycpKSB7XG4gICAgICAgICAgICBmaWxlUGF0aCA9IGZpbGVQYXRoLnN1YnN0cmluZygnL2Jvb3RzdHJhcC1pY29ucy8nLmxlbmd0aCk7XG4gICAgICAgICAgICBjb25zdCBib290c3RyYXBGb2xkZXIgPSBhd2FpdCBnZXROcG1Nb2R1bGVJbnN0YWxsZWRQYXRoKFxuICAgICAgICAgICAgICAnYm9vdHN0cmFwLWljb25zJ1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgcm9vdEZvbGRlciA9IGJvb3RzdHJhcEZvbGRlcjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGZpbGVQYXRoID09PSAnLi8nKSB7XG4gICAgICAgICAgICAgIGZpbGVQYXRoID0gJy4vaW5kZXguaHRtbCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZmlsZVBhdGggPSBwYXRoLmpvaW4ocm9vdEZvbGRlciwgZmlsZVBhdGgpO1xuICAgICAgICAgIC8vY29uc29sZS5sb2coYCR7cmVxdWVzdC51cmx9IC0tPiAke2ZpbGVQYXRofWApO1xuXG4gICAgICAgICAgY29uc3QgZXh0bmFtZSA9IFN0cmluZyhwYXRoLmV4dG5hbWUoZmlsZVBhdGgpKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIGNvbnN0IG1pbWVUeXBlczogYW55ID0ge1xuICAgICAgICAgICAgJy5odG1sJzogJ3RleHQvaHRtbCcsXG4gICAgICAgICAgICAnLmpzJzogJ3RleHQvamF2YXNjcmlwdCcsXG4gICAgICAgICAgICAnLmNzcyc6ICd0ZXh0L2NzcycsXG4gICAgICAgICAgICAnLmpzb24nOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAnLnBuZyc6ICdpbWFnZS9wbmcnLFxuICAgICAgICAgICAgJy5qcGcnOiAnaW1hZ2UvanBnJyxcbiAgICAgICAgICAgICcuZ2lmJzogJ2ltYWdlL2dpZicsXG4gICAgICAgICAgICAnLnN2Zyc6ICdpbWFnZS9zdmcreG1sJyxcbiAgICAgICAgICAgICcud2F2JzogJ2F1ZGlvL3dhdicsXG4gICAgICAgICAgICAnLm1wNCc6ICd2aWRlby9tcDQnLFxuICAgICAgICAgICAgJy53b2ZmJzogJ2FwcGxpY2F0aW9uL2ZvbnQtd29mZicsXG4gICAgICAgICAgICAnLnR0Zic6ICdhcHBsaWNhdGlvbi9mb250LXR0ZicsXG4gICAgICAgICAgICAnLmVvdCc6ICdhcHBsaWNhdGlvbi92bmQubXMtZm9udG9iamVjdCcsXG4gICAgICAgICAgICAnLm90Zic6ICdhcHBsaWNhdGlvbi9mb250LW90ZicsXG4gICAgICAgICAgICAnLndhc20nOiAnYXBwbGljYXRpb24vd2FzbScsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gbWltZVR5cGVzW2V4dG5hbWVdIHx8ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO1xuXG4gICAgICAgICAgaWYgKHJlcXVlc3QudXJsID09PSAnL3N0YWNrTGlzdCcpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlLndyaXRlSGVhZCgyMDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KTtcbiAgICAgICAgICAgIHJlc3BvbnNlLmVuZChKU09OLnN0cmluZ2lmeShzdGFja0xpc3QpLCAndXRmLTgnKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcXVlc3QudXJsPy5tYXRjaCgnXi93c1VybCcpKSB7XG4gICAgICAgICAgICBsZXQgd3NVcmw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLndzKSB7XG4gICAgICAgICAgICAgIHdzVXJsID0gb3B0aW9ucy53cztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIG9wdGlvbnMuY2Rrb3V0cHV0XG4gICAgICAgICAgICAgIGNvbnN0IHVybFBhdGhzID0gcmVxdWVzdC51cmwuc3BsaXQoJy8nKTtcbiAgICAgICAgICAgICAgbGV0IHN0YWNrID0gdXJsUGF0aHNbMl07XG5cbiAgICAgICAgICAgICAgaWYgKCFzdGFjaykge1xuICAgICAgICAgICAgICAgIHN0YWNrID0gb3B0aW9ucy5jZGtzdGFjaztcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChzdGFjaykge1xuICAgICAgICAgICAgICAgIHdzVXJsID0gY2RrT3V0cHV0W3N0YWNrXS5TZXJ2ZXJsZXNzU3B5V3NVcmw7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGNka091dHB1dCAmJiBjZGtPdXRwdXRbT2JqZWN0LmtleXMoY2RrT3V0cHV0KVswXV0pIHtcbiAgICAgICAgICAgICAgICAgIHdzVXJsID1cbiAgICAgICAgICAgICAgICAgICAgY2RrT3V0cHV0W09iamVjdC5rZXlzKGNka091dHB1dClbMF1dLlNlcnZlcmxlc3NTcHlXc1VybDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF3c1VybCkge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3Npbmcgd2Vic29ja2V0IHVybCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKGBXUyBVUkw6ICR7d3NVcmx9YCk7XG4gICAgICAgICAgICBjb25zdCBzaWduZWRXU1VybCA9IGF3YWl0IGdldFNpZ25lZFdlYlNvY2tldFVybCh3c1VybCk7XG4gICAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoMjAwLCB7ICdDb250ZW50LVR5cGUnOiAndGV4dC9odG1sJyB9KTtcbiAgICAgICAgICAgIHJlc3BvbnNlLmVuZChzaWduZWRXU1VybCwgJ3V0Zi04Jyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZUFzeW5jKGZpbGVQYXRoKTtcblxuICAgICAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoMjAwLCB7ICdDb250ZW50LVR5cGUnOiBjb250ZW50VHlwZSB9KTtcbiAgICAgICAgICAgICAgcmVzcG9uc2UuZW5kKGNvbnRlbnQsICd1dGYtOCcpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgICAgICBpZiAoZXJyb3IuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoNDA0LCB7ICdDb250ZW50LVR5cGUnOiAndGV4dC9odG1sJyB9KTtcbiAgICAgICAgICAgICAgICByZXNwb25zZS5lbmQoXG4gICAgICAgICAgICAgICAgICBgTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSAke3JlcXVlc3QudXJsfWAsXG4gICAgICAgICAgICAgICAgICAndXRmLTgnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoNTAwKTtcbiAgICAgICAgICAgICAgICByZXNwb25zZS5lbmQoYEVycm9yOiAke2Vycm9yLmNvZGV9IC4uXFxuYCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDUwMCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvaHRtbCcgfSk7XG4gICAgICAgICAgcmVzcG9uc2UuZW5kKGVyci5tZXNzYWdlLCAndXRmLTgnKTtcbiAgICAgICAgfVxuICAgICAgfSkoKTtcbiAgICB9KVxuICAgIC5saXN0ZW4ob3B0aW9ucy5wb3J0KTtcblxuICBjb25zb2xlLmxvZyhcbiAgICBgU2VydmVybGVzc1NveSBjb25zb2xlIHJ1bmluZyBhdCBodHRwOi8vbG9jYWxob3N0OiR7b3B0aW9ucy5wb3J0fWBcbiAgKTtcbiAgaWYgKG9wdGlvbnMub3Blbikge1xuICAgIGF3YWl0IG9wZW5lcihgaHR0cDovL2xvY2FsaG9zdDoke29wdGlvbnMucG9ydH1gKTtcbiAgfVxufVxuXG5ydW4oKS5jYXRjaChjb25zb2xlLmVycm9yKTtcblxuZnVuY3Rpb24gZ2V0TnBtTW9kdWxlSW5zdGFsbGVkUGF0aChucG06IHN0cmluZykge1xuICBsZXQgZm9sZGVyID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLycsICdub2RlX21vZHVsZXMnLCBucG0pO1xuICBpZiAoZnMuZXhpc3RzU3luYyhmb2xkZXIpKSB7XG4gICAgcmV0dXJuIGZvbGRlcjtcbiAgfVxuXG4gIGxldCBmb2xkZXJBc1BhY2thZ2UgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vJywgJ25vZGVfbW9kdWxlcycsIG5wbSk7XG5cbiAgaWYgKGZzLmV4aXN0c1N5bmMoZm9sZGVyQXNQYWNrYWdlKSkge1xuICAgIHJldHVybiBmb2xkZXJBc1BhY2thZ2U7XG4gIH1cblxuICAvLyBXaGVuIGJvb3N0cmFwIGVuZHMgdXAgaW4gaW1wb3J0aW5nIHByb2plY3RzIHJvb3Qgbm9kZV9tb2R1bGVzIGFuZCBub3QgaW4gc2VydmVybGVzcy1zcHlzIG5vZGVfbW9kdWxlc1xuICBmb2xkZXJBc1BhY2thZ2UgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vLi4vLi4vJywgJ25vZGVfbW9kdWxlcycsIG5wbSk7XG5cbiAgaWYgKGZzLmV4aXN0c1N5bmMoZm9sZGVyQXNQYWNrYWdlKSkge1xuICAgIHJldHVybiBmb2xkZXJBc1BhY2thZ2U7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYENhbiBub3QgZmluZCBwYWNrYWdlIGluIGZvbGRlciAke2ZvbGRlcn0gYW5kICR7Zm9sZGVyQXNQYWNrYWdlfWBcbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0Q29tcGlsZWRKc1BhdGgoKSB7XG4gIGxldCBmb2xkZXIgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vJywgJ2xpYi9jbGknKTtcbiAgaWYgKGZzLmV4aXN0c1N5bmMoZm9sZGVyKSkge1xuICAgIHJldHVybiBmb2xkZXI7XG4gIH1cblxuICBsZXQgZm9sZGVyQXNQYWNrYWdlID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLy4uLycsICdsaWIvY2xpJyk7XG5cbiAgaWYgKGZzLmV4aXN0c1N5bmMoZm9sZGVyQXNQYWNrYWdlKSkge1xuICAgIHJldHVybiBmb2xkZXJBc1BhY2thZ2U7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYENhbiBub3QgZmluZCBjb21waWxlZCBmaWxlcyBpbiBmb2xkZXIgJHtmb2xkZXJ9IGFuZCAke2ZvbGRlckFzUGFja2FnZX1gXG4gICk7XG59XG4iXX0=
|
package/lib/cli/cli.mjs
CHANGED
|
@@ -28,7 +28,7 @@ async function run() {
|
|
|
28
28
|
});
|
|
29
29
|
progam.parse(process.argv);
|
|
30
30
|
if (!options.ws && !options.cdkoutput) {
|
|
31
|
-
throw new Error('--ws or --
|
|
31
|
+
throw new Error('--ws or --cdkoutput parameter not specified');
|
|
32
32
|
}
|
|
33
33
|
if (options.cdkoutput) {
|
|
34
34
|
const rawdata = fs.readFileSync(options.cdkoutput);
|
|
@@ -158,6 +158,11 @@ function getNpmModuleInstalledPath(npm) {
|
|
|
158
158
|
if (fs.existsSync(folderAsPackage)) {
|
|
159
159
|
return folderAsPackage;
|
|
160
160
|
}
|
|
161
|
+
// When boostrap ends up in importing projects root node_modules and not in serverless-spys node_modules
|
|
162
|
+
folderAsPackage = path.join(__dirname, '../../../../', 'node_modules', npm);
|
|
163
|
+
if (fs.existsSync(folderAsPackage)) {
|
|
164
|
+
return folderAsPackage;
|
|
165
|
+
}
|
|
161
166
|
throw new Error(`Can not find package in folder ${folder} and ${folderAsPackage}`);
|
|
162
167
|
}
|
|
163
168
|
function getCompiledJsPath() {
|
|
@@ -171,4 +176,4 @@ function getCompiledJsPath() {
|
|
|
171
176
|
}
|
|
172
177
|
throw new Error(`Can not find compiled files in folder ${folder} and ${folderAsPackage}`);
|
|
173
178
|
}
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vY2xpL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRSxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRTdDLGtDQUFrQztBQUNsQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUM7QUFDbEIsSUFBSyxJQUFZLENBQUMsT0FBTyxFQUFFO0lBQ3pCLE1BQU0sR0FBSSxJQUFZLENBQUMsT0FBTyxDQUFDO0NBQ2hDO0FBRUQsS0FBSyxVQUFVLEdBQUc7SUFDaEIsSUFBSSxTQUErQixDQUFDO0lBQ3BDLElBQUksU0FBaUQsQ0FBQztJQUV0RCxJQUFJLE9BQVksQ0FBQztJQUVqQixNQUFNO1NBQ0gsV0FBVyxDQUFDLDJCQUEyQixDQUFDO1NBQ3hDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUM7U0FDckMsTUFBTSxDQUNMLHlCQUF5QixFQUN6QiwrRUFBK0UsQ0FDaEY7U0FDQSxNQUFNLENBQ0wsdUJBQXVCLEVBQ3ZCLHlFQUF5RSxDQUMxRTtTQUNBLE1BQU0sQ0FBQyxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO1NBQzFELE1BQU0sQ0FDTCxZQUFZLEVBQ1osb0VBQW9FLEVBQ3BFLE1BQU0sQ0FBQyxHQUFH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QUFFLENBQ2xFLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxpQkFBaUI7SUFDeEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3BELElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN6QixPQUFPLE1BQU0sQ0FBQztLQUNmO0lBRUQsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRWhFLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsRUFBRTtRQUNsQyxPQUFPLGVBQWUsQ0FBQztLQUN4QjtJQUVELE1BQU0sSUFBSSxLQUFLLENBQ2IseUNBQXlDLE1BQU0sUUFBUSxlQUFlLEVBQUUsQ0FDekUsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBodHRwIGZyb20gJ2h0dHAnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0ICogYXMgcHJvZ2FtIGZyb20gJ2NhcG9yYWwnO1xuaW1wb3J0ICogYXMgb3BlbiBmcm9tICdvcGVuJztcbmltcG9ydCB7IGdldFNpZ25lZFdlYlNvY2tldFVybCB9IGZyb20gJy4uL2NvbW1vbi9nZXRXZWJTb2NrZXRVcmwnO1xuXG5jb25zdCByZWFkRmlsZUFzeW5jID0gcHJvbWlzaWZ5KGZzLnJlYWRGaWxlKTtcblxuLy9yZXNvbHZlIGlzc3VlIHdpdGggbW9kdWxlIGltcG9ydFxubGV0IG9wZW5lciA9IG9wZW47XG5pZiAoKG9wZW4gYXMgYW55KS5kZWZhdWx0KSB7XG4gIG9wZW5lciA9IChvcGVuIGFzIGFueSkuZGVmYXVsdDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuKCkge1xuICBsZXQgc3RhY2tMaXN0OiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgbGV0IGNka091dHB1dDogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj47XG5cbiAgbGV0IG9wdGlvbnM6IGFueTtcblxuICBwcm9nYW1cbiAgICAuZGVzY3JpcHRpb24oJ1NlcnZlcmxlc3NTcHkgd2ViIGNvbnNvbGUnKVxuICAgIC5vcHRpb24oJy0td3MgPHdzPicsICdXZWJzb2NrZXQgbGluaycpXG4gICAgLm9wdGlvbihcbiAgICAgICctLWNka291dHB1dCA8Y2Rrb3V0cHV0PicsXG4gICAgICAnQ0RLIG91dHB1dCBmaWxlIHRoYXQgY29udGFpbnMgV2Vic29ja2V0IGxpbmsgaW4gYSBwcm9wZXJ0eSBTZXJ2ZXJsZXNzU3B5V3NVcmwnXG4gICAgKVxuICAgIC5vcHRpb24oXG4gICAgICAnLS1jZGtzdGFjayA8Y2Rrc3RhY2s+JyxcbiAgICAgICdDREsgc3RhY2sgaW4gY2RrIG91dHB1dCBmaWxlLiBJZiBub3Qgc3BlY2lmaWVkIHRoZSBmaXJzdCBvbmUgaXMgcGlja2VkLidcbiAgICApXG4gICAgLm9wdGlvbignLS1vcGVuIDxvcGVuPicsICdPcGVuIGJyb3dzZXInLCBwcm9nYW0uQk9PTCwgdHJ1ZSlcbiAgICAub3B0aW9uKFxuICAgICAgJy0tcG9ydCA8cD4nLFxuICAgICAgYEEgcG9ydCBvbiBsb2NhbGhvc3Qgd2hlcmUgU2VydmVybGVzc1NweSB3ZWIgY29uc29sZSBpcyBhY2Nlc3NpYmxlLmAsXG4gICAgICBwcm9nYW0uSU5ULFxuICAgICAgJzM0NTYnXG4gICAgKVxuICAgIC5hY3Rpb24oKF9hcmdzLCBvcHQsIF9sb2dnZXIpID0+IHtcbiAgICAgIG9wdGlvbnMgPSBvcHQ7XG4gICAgfSk7XG5cbiAgcHJvZ2FtLnBhcnNlKHByb2Nlc3MuYXJndik7XG5cbiAgaWYgKCFvcHRpb25zLndzICYmICFvcHRpb25zLmNka291dHB1dCkge1xuICAgIHRocm93IG5ldyBFcnJvcignLS13cyBvciAtLWNka3N0YWNrIHBhcmFtZXRlciBub3Qgc3BlY2lmaWVkJyk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5jZGtvdXRwdXQpIHtcbiAgICBjb25zdCByYXdkYXRhID0gZnMucmVhZEZpbGVTeW5jKG9wdGlvbnMuY2Rrb3V0cHV0KTtcbiAgICBjZGtPdXRwdXQgPSBKU09OLnBhcnNlKHJhd2RhdGEudG9TdHJpbmcoKSk7XG4gICAgc3RhY2tMaXN0ID0gT2JqZWN0LmtleXMoY2RrT3V0cHV0KTtcbiAgfVxuXG4gIGh0dHBcbiAgICAuY3JlYXRlU2VydmVyKChyZXF1ZXN0LCByZXNwb25zZSkgPT4ge1xuICAgICAgdm9pZCAoYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vY29uc29sZS5sb2coJ3JlcXVlc3QgJywgcmVxdWVzdC51cmwpO1xuICAgICAgICAgIGxldCBmaWxlUGF0aDogc3RyaW5nID0gYC4ke3JlcXVlc3QudXJsfWA7XG4gICAgICAgICAgLy9yZW1vdmUgcXVlcnkgcGFyYW1ldGVyc1xuICAgICAgICAgIGZpbGVQYXRoID0gZmlsZVBhdGguc3BsaXQoJz8nKVswXTtcbiAgICAgICAgICBsZXQgcm9vdEZvbGRlciA9IF9fZGlybmFtZTtcblxuICAgICAgICAgIGlmIChyZXF1ZXN0LnVybD8uc3RhcnRzV2l0aCgnL3dlYlNlcnZlcmxlc3NTcHkuanMnKSkge1xuICAgICAgICAgICAgLy9nZXQgdHJhbnNwaWxlZCBUUyB0byBKUyBmaWxlc1xuICAgICAgICAgICAgcm9vdEZvbGRlciA9IGdldENvbXBpbGVkSnNQYXRoKCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0LnVybD8uc3RhcnRzV2l0aCgnL2Jvb3RzdHJhcC8nKSkge1xuICAgICAgICAgICAgZmlsZVBhdGggPSBmaWxlUGF0aC5zdWJzdHJpbmcoJy9ib290c3RyYXAvJy5sZW5ndGgpO1xuICAgICAgICAgICAgY29uc3QgYm9vdHN0cmFwRm9sZGVyID0gYXdhaXQgZ2V0TnBtTW9kdWxlSW5zdGFsbGVkUGF0aChcbiAgICAgICAgICAgICAgJ2Jvb3RzdHJhcCdcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJvb3RGb2xkZXIgPSBib290c3RyYXBGb2xkZXI7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0LnVybD8uc3RhcnRzV2l0aCgnL2Jvb3RzdHJhcC1pY29ucy8nKSkge1xuICAgICAgICAgICAgZmlsZVBhdGggPSBmaWxlUGF0aC5zdWJzdHJpbmcoJy9ib290c3RyYXAtaWNvbnMvJy5sZW5ndGgpO1xuICAgICAgICAgICAgY29uc3QgYm9vdHN0cmFwRm9sZGVyID0gYXdhaXQgZ2V0TnBtTW9kdWxlSW5zdGFsbGVkUGF0aChcbiAgICAgICAgICAgICAgJ2Jvb3RzdHJhcC1pY29ucydcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJvb3RGb2xkZXIgPSBib290c3RyYXBGb2xkZXI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmaWxlUGF0aCA9PT0gJy4vJykge1xuICAgICAgICAgICAgICBmaWxlUGF0aCA9ICcuL2luZGV4Lmh0bWwnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGZpbGVQYXRoID0gcGF0aC5qb2luKHJvb3RGb2xkZXIsIGZpbGVQYXRoKTtcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKGAke3JlcXVlc3QudXJsfSAtLT4gJHtmaWxlUGF0aH1gKTtcblxuICAgICAgICAgIGNvbnN0IGV4dG5hbWUgPSBTdHJpbmcocGF0aC5leHRuYW1lKGZpbGVQYXRoKSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICBjb25zdCBtaW1lVHlwZXM6IGFueSA9IHtcbiAgICAgICAgICAgICcuaHRtbCc6ICd0ZXh0L2h0bWwnLFxuICAgICAgICAgICAgJy5qcyc6ICd0ZXh0L2phdmFzY3JpcHQnLFxuICAgICAgICAgICAgJy5jc3MnOiAndGV4dC9jc3MnLFxuICAgICAgICAgICAgJy5qc29uJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgJy5wbmcnOiAnaW1hZ2UvcG5nJyxcbiAgICAgICAgICAgICcuanBnJzogJ2ltYWdlL2pwZycsXG4gICAgICAgICAgICAnLmdpZic6ICdpbWFnZS9naWYnLFxuICAgICAgICAgICAgJy5zdmcnOiAnaW1hZ2Uvc3ZnK3htbCcsXG4gICAgICAgICAgICAnLndhdic6ICdhdWRpby93YXYnLFxuICAgICAgICAgICAgJy5tcDQnOiAndmlkZW8vbXA0JyxcbiAgICAgICAgICAgICcud29mZic6ICdhcHBsaWNhdGlvbi9mb250LXdvZmYnLFxuICAgICAgICAgICAgJy50dGYnOiAnYXBwbGljYXRpb24vZm9udC10dGYnLFxuICAgICAgICAgICAgJy5lb3QnOiAnYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3QnLFxuICAgICAgICAgICAgJy5vdGYnOiAnYXBwbGljYXRpb24vZm9udC1vdGYnLFxuICAgICAgICAgICAgJy53YXNtJzogJ2FwcGxpY2F0aW9uL3dhc20nLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IG1pbWVUeXBlc1tleHRuYW1lXSB8fCAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcblxuICAgICAgICAgIGlmIChyZXF1ZXN0LnVybCA9PT0gJy9zdGFja0xpc3QnKSB7XG4gICAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoMjAwLCB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSk7XG4gICAgICAgICAgICByZXNwb25zZS5lbmQoSlNPTi5zdHJpbmdpZnkoc3RhY2tMaXN0KSwgJ3V0Zi04Jyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0LnVybD8ubWF0Y2goJ14vd3NVcmwnKSkge1xuICAgICAgICAgICAgbGV0IHdzVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy53cykge1xuICAgICAgICAgICAgICB3c1VybCA9IG9wdGlvbnMud3M7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBvcHRpb25zLmNka291dHB1dFxuICAgICAgICAgICAgICBjb25zdCB1cmxQYXRocyA9IHJlcXVlc3QudXJsLnNwbGl0KCcvJyk7XG4gICAgICAgICAgICAgIGxldCBzdGFjayA9IHVybFBhdGhzWzJdO1xuXG4gICAgICAgICAgICAgIGlmICghc3RhY2spIHtcbiAgICAgICAgICAgICAgICBzdGFjayA9IG9wdGlvbnMuY2Rrc3RhY2s7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoc3RhY2spIHtcbiAgICAgICAgICAgICAgICB3c1VybCA9IGNka091dHB1dFtzdGFja10uU2VydmVybGVzc1NweVdzVXJsO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChjZGtPdXRwdXQgJiYgY2RrT3V0cHV0W09iamVjdC5rZXlzKGNka091dHB1dClbMF1dKSB7XG4gICAgICAgICAgICAgICAgICB3c1VybCA9XG4gICAgICAgICAgICAgICAgICAgIGNka091dHB1dFtPYmplY3Qua2V5cyhjZGtPdXRwdXQpWzBdXS5TZXJ2ZXJsZXNzU3B5V3NVcmw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghd3NVcmwpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHdlYnNvY2tldCB1cmwnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhgV1MgVVJMOiAke3dzVXJsfWApO1xuICAgICAgICAgICAgY29uc3Qgc2lnbmVkV1NVcmwgPSBhd2FpdCBnZXRTaWduZWRXZWJTb2NrZXRVcmwod3NVcmwpO1xuICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDIwMCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvaHRtbCcgfSk7XG4gICAgICAgICAgICByZXNwb25zZS5lbmQoc2lnbmVkV1NVcmwsICd1dGYtOCcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZEZpbGVBc3luYyhmaWxlUGF0aCk7XG5cbiAgICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDIwMCwgeyAnQ29udGVudC1UeXBlJzogY29udGVudFR5cGUgfSk7XG4gICAgICAgICAgICAgIHJlc3BvbnNlLmVuZChjb250ZW50LCAndXRmLTgnKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgICAgaWYgKGVycm9yLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDQwNCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvaHRtbCcgfSk7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuZW5kKFxuICAgICAgICAgICAgICAgICAgYE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgJHtyZXF1ZXN0LnVybH1gLFxuICAgICAgICAgICAgICAgICAgJ3V0Zi04J1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDUwMCk7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuZW5kKGBFcnJvcjogJHtlcnJvci5jb2RlfSAuLlxcbmApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICAgIHJlc3BvbnNlLndyaXRlSGVhZCg1MDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L2h0bWwnIH0pO1xuICAgICAgICAgIHJlc3BvbnNlLmVuZChlcnIubWVzc2FnZSwgJ3V0Zi04Jyk7XG4gICAgICAgIH1cbiAgICAgIH0pKCk7XG4gICAgfSlcbiAgICAubGlzdGVuKG9wdGlvbnMucG9ydCk7XG5cbiAgY29uc29sZS5sb2coXG4gICAgYFNlcnZlcmxlc3NTb3kgY29uc29sZSBydW5pbmcgYXQgaHR0cDovL2xvY2FsaG9zdDoke29wdGlvbnMucG9ydH1gXG4gICk7XG4gIGlmIChvcHRpb25zLm9wZW4pIHtcbiAgICBhd2FpdCBvcGVuZXIoYGh0dHA6Ly9sb2NhbGhvc3Q6JHtvcHRpb25zLnBvcnR9YCk7XG4gIH1cbn1cblxucnVuKCkuY2F0Y2goY29uc29sZS5lcnJvcik7XG5cbmZ1bmN0aW9uIGdldE5wbU1vZHVsZUluc3RhbGxlZFBhdGgobnBtOiBzdHJpbmcpIHtcbiAgbGV0IGZvbGRlciA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8nLCAnbm9kZV9tb2R1bGVzJywgbnBtKTtcbiAgaWYgKGZzLmV4aXN0c1N5bmMoZm9sZGVyKSkge1xuICAgIHJldHVybiBmb2xkZXI7XG4gIH1cblxuICBsZXQgZm9sZGVyQXNQYWNrYWdlID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLy4uLycsICdub2RlX21vZHVsZXMnLCBucG0pO1xuXG4gIGlmIChmcy5leGlzdHNTeW5jKGZvbGRlckFzUGFja2FnZSkpIHtcbiAgICByZXR1cm4gZm9sZGVyQXNQYWNrYWdlO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBDYW4gbm90IGZpbmQgcGFja2FnZSBpbiBmb2xkZXIgJHtmb2xkZXJ9IGFuZCAke2ZvbGRlckFzUGFja2FnZX1gXG4gICk7XG59XG5cbmZ1bmN0aW9uIGdldENvbXBpbGVkSnNQYXRoKCkge1xuICBsZXQgZm9sZGVyID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLycsICdsaWIvY2xpJyk7XG4gIGlmIChmcy5leGlzdHNTeW5jKGZvbGRlcikpIHtcbiAgICByZXR1cm4gZm9sZGVyO1xuICB9XG5cbiAgbGV0IGZvbGRlckFzUGFja2FnZSA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi8nLCAnbGliL2NsaScpO1xuXG4gIGlmIChmcy5leGlzdHNTeW5jKGZvbGRlckFzUGFja2FnZSkpIHtcbiAgICByZXR1cm4gZm9sZGVyQXNQYWNrYWdlO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBDYW4gbm90IGZpbmQgY29tcGlsZWQgZmlsZXMgaW4gZm9sZGVyICR7Zm9sZGVyfSBhbmQgJHtmb2xkZXJBc1BhY2thZ2V9YFxuICApO1xufVxuIl19
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vY2xpL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRSxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRTdDLGtDQUFrQztBQUNsQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUM7QUFDbEIsSUFBSyxJQUFZLENBQUMsT0FBTyxFQUFFO0lBQ3pCLE1BQU0sR0FBSSxJQUFZLENBQUMsT0FBTyxDQUFDO0NBQ2hDO0FBRUQsS0FBSyxVQUFVLEdBQUc7SUFDaEIsSUFBSSxTQUErQixDQUFDO0lBQ3BDLElBQUksU0FBaUQsQ0FBQztJQUV0RCxJQUFJLE9BQVksQ0FBQztJQUVqQixNQUFNO1NBQ0gsV0FBVyxDQUFDLDJCQUEyQixDQUFDO1NBQ3hDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUM7U0FDckMsTUFBTSxDQUNMLHlCQUF5QixFQUN6QiwrRUFBK0UsQ0FDaEY7U0FDQSxNQUFNLENBQ0wsdUJBQXVCLEVBQ3ZCLHlFQUF5RSxDQUMxRTtTQUNBLE1BQU0sQ0FBQyxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO1NBQzFELE1BQU0sQ0FDTCxZQUFZLEVBQ1osb0VBQW9FLEVBQ3BFLE1BQU0sQ0FBQyxHQUFH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U0FBUyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFNUUsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxFQUFFO1FBQ2xDLE9BQU8sZUFBZSxDQUFDO0tBQ3hCO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FDYixrQ0FBa0MsTUFBTSxRQUFRLGVBQWUsRUFBRSxDQUNsRSxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsaUJBQWlCO0lBQ3hCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNwRCxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDekIsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUVELElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUVoRSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLEVBQUU7UUFDbEMsT0FBTyxlQUFlLENBQUM7S0FDeEI7SUFFRCxNQUFNLElBQUksS0FBSyxDQUNiLHlDQUF5QyxNQUFNLFFBQVEsZUFBZSxFQUFFLENBQ3pFLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgaHR0cCBmcm9tICdodHRwJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJztcbmltcG9ydCAqIGFzIHByb2dhbSBmcm9tICdjYXBvcmFsJztcbmltcG9ydCAqIGFzIG9wZW4gZnJvbSAnb3Blbic7XG5pbXBvcnQgeyBnZXRTaWduZWRXZWJTb2NrZXRVcmwgfSBmcm9tICcuLi9jb21tb24vZ2V0V2ViU29ja2V0VXJsJztcblxuY29uc3QgcmVhZEZpbGVBc3luYyA9IHByb21pc2lmeShmcy5yZWFkRmlsZSk7XG5cbi8vcmVzb2x2ZSBpc3N1ZSB3aXRoIG1vZHVsZSBpbXBvcnRcbmxldCBvcGVuZXIgPSBvcGVuO1xuaWYgKChvcGVuIGFzIGFueSkuZGVmYXVsdCkge1xuICBvcGVuZXIgPSAob3BlbiBhcyBhbnkpLmRlZmF1bHQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1bigpIHtcbiAgbGV0IHN0YWNrTGlzdDogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gIGxldCBjZGtPdXRwdXQ6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+O1xuXG4gIGxldCBvcHRpb25zOiBhbnk7XG5cbiAgcHJvZ2FtXG4gICAgLmRlc2NyaXB0aW9uKCdTZXJ2ZXJsZXNzU3B5IHdlYiBjb25zb2xlJylcbiAgICAub3B0aW9uKCctLXdzIDx3cz4nLCAnV2Vic29ja2V0IGxpbmsnKVxuICAgIC5vcHRpb24oXG4gICAgICAnLS1jZGtvdXRwdXQgPGNka291dHB1dD4nLFxuICAgICAgJ0NESyBvdXRwdXQgZmlsZSB0aGF0IGNvbnRhaW5zIFdlYnNvY2tldCBsaW5rIGluIGEgcHJvcGVydHkgU2VydmVybGVzc1NweVdzVXJsJ1xuICAgIClcbiAgICAub3B0aW9uKFxuICAgICAgJy0tY2Rrc3RhY2sgPGNka3N0YWNrPicsXG4gICAgICAnQ0RLIHN0YWNrIGluIGNkayBvdXRwdXQgZmlsZS4gSWYgbm90IHNwZWNpZmllZCB0aGUgZmlyc3Qgb25lIGlzIHBpY2tlZC4nXG4gICAgKVxuICAgIC5vcHRpb24oJy0tb3BlbiA8b3Blbj4nLCAnT3BlbiBicm93c2VyJywgcHJvZ2FtLkJPT0wsIHRydWUpXG4gICAgLm9wdGlvbihcbiAgICAgICctLXBvcnQgPHA+JyxcbiAgICAgIGBBIHBvcnQgb24gbG9jYWxob3N0IHdoZXJlIFNlcnZlcmxlc3NTcHkgd2ViIGNvbnNvbGUgaXMgYWNjZXNzaWJsZS5gLFxuICAgICAgcHJvZ2FtLklOVCxcbiAgICAgICczNDU2J1xuICAgIClcbiAgICAuYWN0aW9uKChfYXJncywgb3B0LCBfbG9nZ2VyKSA9PiB7XG4gICAgICBvcHRpb25zID0gb3B0O1xuICAgIH0pO1xuXG4gIHByb2dhbS5wYXJzZShwcm9jZXNzLmFyZ3YpO1xuXG4gIGlmICghb3B0aW9ucy53cyAmJiAhb3B0aW9ucy5jZGtvdXRwdXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJy0td3Mgb3IgLS1jZGtvdXRwdXQgcGFyYW1ldGVyIG5vdCBzcGVjaWZpZWQnKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmNka291dHB1dCkge1xuICAgIGNvbnN0IHJhd2RhdGEgPSBmcy5yZWFkRmlsZVN5bmMob3B0aW9ucy5jZGtvdXRwdXQpO1xuICAgIGNka091dHB1dCA9IEpTT04ucGFyc2UocmF3ZGF0YS50b1N0cmluZygpKTtcbiAgICBzdGFja0xpc3QgPSBPYmplY3Qua2V5cyhjZGtPdXRwdXQpO1xuICB9XG5cbiAgaHR0cFxuICAgIC5jcmVhdGVTZXJ2ZXIoKHJlcXVlc3QsIHJlc3BvbnNlKSA9PiB7XG4gICAgICB2b2lkIChhc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy9jb25zb2xlLmxvZygncmVxdWVzdCAnLCByZXF1ZXN0LnVybCk7XG4gICAgICAgICAgbGV0IGZpbGVQYXRoOiBzdHJpbmcgPSBgLiR7cmVxdWVzdC51cmx9YDtcbiAgICAgICAgICAvL3JlbW92ZSBxdWVyeSBwYXJhbWV0ZXJzXG4gICAgICAgICAgZmlsZVBhdGggPSBmaWxlUGF0aC5zcGxpdCgnPycpWzBdO1xuICAgICAgICAgIGxldCByb290Rm9sZGVyID0gX19kaXJuYW1lO1xuXG4gICAgICAgICAgaWYgKHJlcXVlc3QudXJsPy5zdGFydHNXaXRoKCcvd2ViU2VydmVybGVzc1NweS5qcycpKSB7XG4gICAgICAgICAgICAvL2dldCB0cmFuc3BpbGVkIFRTIHRvIEpTIGZpbGVzXG4gICAgICAgICAgICByb290Rm9sZGVyID0gZ2V0Q29tcGlsZWRKc1BhdGgoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcXVlc3QudXJsPy5zdGFydHNXaXRoKCcvYm9vdHN0cmFwLycpKSB7XG4gICAgICAgICAgICBmaWxlUGF0aCA9IGZpbGVQYXRoLnN1YnN0cmluZygnL2Jvb3RzdHJhcC8nLmxlbmd0aCk7XG4gICAgICAgICAgICBjb25zdCBib290c3RyYXBGb2xkZXIgPSBhd2FpdCBnZXROcG1Nb2R1bGVJbnN0YWxsZWRQYXRoKFxuICAgICAgICAgICAgICAnYm9vdHN0cmFwJ1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgcm9vdEZvbGRlciA9IGJvb3RzdHJhcEZvbGRlcjtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcXVlc3QudXJsPy5zdGFydHNXaXRoKCcvYm9vdHN0cmFwLWljb25zLycpKSB7XG4gICAgICAgICAgICBmaWxlUGF0aCA9IGZpbGVQYXRoLnN1YnN0cmluZygnL2Jvb3RzdHJhcC1pY29ucy8nLmxlbmd0aCk7XG4gICAgICAgICAgICBjb25zdCBib290c3RyYXBGb2xkZXIgPSBhd2FpdCBnZXROcG1Nb2R1bGVJbnN0YWxsZWRQYXRoKFxuICAgICAgICAgICAgICAnYm9vdHN0cmFwLWljb25zJ1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgcm9vdEZvbGRlciA9IGJvb3RzdHJhcEZvbGRlcjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGZpbGVQYXRoID09PSAnLi8nKSB7XG4gICAgICAgICAgICAgIGZpbGVQYXRoID0gJy4vaW5kZXguaHRtbCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZmlsZVBhdGggPSBwYXRoLmpvaW4ocm9vdEZvbGRlciwgZmlsZVBhdGgpO1xuICAgICAgICAgIC8vY29uc29sZS5sb2coYCR7cmVxdWVzdC51cmx9IC0tPiAke2ZpbGVQYXRofWApO1xuXG4gICAgICAgICAgY29uc3QgZXh0bmFtZSA9IFN0cmluZyhwYXRoLmV4dG5hbWUoZmlsZVBhdGgpKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIGNvbnN0IG1pbWVUeXBlczogYW55ID0ge1xuICAgICAgICAgICAgJy5odG1sJzogJ3RleHQvaHRtbCcsXG4gICAgICAgICAgICAnLmpzJzogJ3RleHQvamF2YXNjcmlwdCcsXG4gICAgICAgICAgICAnLmNzcyc6ICd0ZXh0L2NzcycsXG4gICAgICAgICAgICAnLmpzb24nOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAnLnBuZyc6ICdpbWFnZS9wbmcnLFxuICAgICAgICAgICAgJy5qcGcnOiAnaW1hZ2UvanBnJyxcbiAgICAgICAgICAgICcuZ2lmJzogJ2ltYWdlL2dpZicsXG4gICAgICAgICAgICAnLnN2Zyc6ICdpbWFnZS9zdmcreG1sJyxcbiAgICAgICAgICAgICcud2F2JzogJ2F1ZGlvL3dhdicsXG4gICAgICAgICAgICAnLm1wNCc6ICd2aWRlby9tcDQnLFxuICAgICAgICAgICAgJy53b2ZmJzogJ2FwcGxpY2F0aW9uL2ZvbnQtd29mZicsXG4gICAgICAgICAgICAnLnR0Zic6ICdhcHBsaWNhdGlvbi9mb250LXR0ZicsXG4gICAgICAgICAgICAnLmVvdCc6ICdhcHBsaWNhdGlvbi92bmQubXMtZm9udG9iamVjdCcsXG4gICAgICAgICAgICAnLm90Zic6ICdhcHBsaWNhdGlvbi9mb250LW90ZicsXG4gICAgICAgICAgICAnLndhc20nOiAnYXBwbGljYXRpb24vd2FzbScsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gbWltZVR5cGVzW2V4dG5hbWVdIHx8ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO1xuXG4gICAgICAgICAgaWYgKHJlcXVlc3QudXJsID09PSAnL3N0YWNrTGlzdCcpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlLndyaXRlSGVhZCgyMDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KTtcbiAgICAgICAgICAgIHJlc3BvbnNlLmVuZChKU09OLnN0cmluZ2lmeShzdGFja0xpc3QpLCAndXRmLTgnKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcXVlc3QudXJsPy5tYXRjaCgnXi93c1VybCcpKSB7XG4gICAgICAgICAgICBsZXQgd3NVcmw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLndzKSB7XG4gICAgICAgICAgICAgIHdzVXJsID0gb3B0aW9ucy53cztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIG9wdGlvbnMuY2Rrb3V0cHV0XG4gICAgICAgICAgICAgIGNvbnN0IHVybFBhdGhzID0gcmVxdWVzdC51cmwuc3BsaXQoJy8nKTtcbiAgICAgICAgICAgICAgbGV0IHN0YWNrID0gdXJsUGF0aHNbMl07XG5cbiAgICAgICAgICAgICAgaWYgKCFzdGFjaykge1xuICAgICAgICAgICAgICAgIHN0YWNrID0gb3B0aW9ucy5jZGtzdGFjaztcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChzdGFjaykge1xuICAgICAgICAgICAgICAgIHdzVXJsID0gY2RrT3V0cHV0W3N0YWNrXS5TZXJ2ZXJsZXNzU3B5V3NVcmw7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGNka091dHB1dCAmJiBjZGtPdXRwdXRbT2JqZWN0LmtleXMoY2RrT3V0cHV0KVswXV0pIHtcbiAgICAgICAgICAgICAgICAgIHdzVXJsID1cbiAgICAgICAgICAgICAgICAgICAgY2RrT3V0cHV0W09iamVjdC5rZXlzKGNka091dHB1dClbMF1dLlNlcnZlcmxlc3NTcHlXc1VybDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF3c1VybCkge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3Npbmcgd2Vic29ja2V0IHVybCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKGBXUyBVUkw6ICR7d3NVcmx9YCk7XG4gICAgICAgICAgICBjb25zdCBzaWduZWRXU1VybCA9IGF3YWl0IGdldFNpZ25lZFdlYlNvY2tldFVybCh3c1VybCk7XG4gICAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoMjAwLCB7ICdDb250ZW50LVR5cGUnOiAndGV4dC9odG1sJyB9KTtcbiAgICAgICAgICAgIHJlc3BvbnNlLmVuZChzaWduZWRXU1VybCwgJ3V0Zi04Jyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZUFzeW5jKGZpbGVQYXRoKTtcblxuICAgICAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoMjAwLCB7ICdDb250ZW50LVR5cGUnOiBjb250ZW50VHlwZSB9KTtcbiAgICAgICAgICAgICAgcmVzcG9uc2UuZW5kKGNvbnRlbnQsICd1dGYtOCcpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgICAgICBpZiAoZXJyb3IuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoNDA0LCB7ICdDb250ZW50LVR5cGUnOiAndGV4dC9odG1sJyB9KTtcbiAgICAgICAgICAgICAgICByZXNwb25zZS5lbmQoXG4gICAgICAgICAgICAgICAgICBgTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSAke3JlcXVlc3QudXJsfWAsXG4gICAgICAgICAgICAgICAgICAndXRmLTgnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoNTAwKTtcbiAgICAgICAgICAgICAgICByZXNwb25zZS5lbmQoYEVycm9yOiAke2Vycm9yLmNvZGV9IC4uXFxuYCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDUwMCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvaHRtbCcgfSk7XG4gICAgICAgICAgcmVzcG9uc2UuZW5kKGVyci5tZXNzYWdlLCAndXRmLTgnKTtcbiAgICAgICAgfVxuICAgICAgfSkoKTtcbiAgICB9KVxuICAgIC5saXN0ZW4ob3B0aW9ucy5wb3J0KTtcblxuICBjb25zb2xlLmxvZyhcbiAgICBgU2VydmVybGVzc1NveSBjb25zb2xlIHJ1bmluZyBhdCBodHRwOi8vbG9jYWxob3N0OiR7b3B0aW9ucy5wb3J0fWBcbiAgKTtcbiAgaWYgKG9wdGlvbnMub3Blbikge1xuICAgIGF3YWl0IG9wZW5lcihgaHR0cDovL2xvY2FsaG9zdDoke29wdGlvbnMucG9ydH1gKTtcbiAgfVxufVxuXG5ydW4oKS5jYXRjaChjb25zb2xlLmVycm9yKTtcblxuZnVuY3Rpb24gZ2V0TnBtTW9kdWxlSW5zdGFsbGVkUGF0aChucG06IHN0cmluZykge1xuICBsZXQgZm9sZGVyID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLycsICdub2RlX21vZHVsZXMnLCBucG0pO1xuICBpZiAoZnMuZXhpc3RzU3luYyhmb2xkZXIpKSB7XG4gICAgcmV0dXJuIGZvbGRlcjtcbiAgfVxuXG4gIGxldCBmb2xkZXJBc1BhY2thZ2UgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vJywgJ25vZGVfbW9kdWxlcycsIG5wbSk7XG5cbiAgaWYgKGZzLmV4aXN0c1N5bmMoZm9sZGVyQXNQYWNrYWdlKSkge1xuICAgIHJldHVybiBmb2xkZXJBc1BhY2thZ2U7XG4gIH1cblxuICAvLyBXaGVuIGJvb3N0cmFwIGVuZHMgdXAgaW4gaW1wb3J0aW5nIHByb2plY3RzIHJvb3Qgbm9kZV9tb2R1bGVzIGFuZCBub3QgaW4gc2VydmVybGVzcy1zcHlzIG5vZGVfbW9kdWxlc1xuICBmb2xkZXJBc1BhY2thZ2UgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vLi4vLi4vJywgJ25vZGVfbW9kdWxlcycsIG5wbSk7XG5cbiAgaWYgKGZzLmV4aXN0c1N5bmMoZm9sZGVyQXNQYWNrYWdlKSkge1xuICAgIHJldHVybiBmb2xkZXJBc1BhY2thZ2U7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYENhbiBub3QgZmluZCBwYWNrYWdlIGluIGZvbGRlciAke2ZvbGRlcn0gYW5kICR7Zm9sZGVyQXNQYWNrYWdlfWBcbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0Q29tcGlsZWRKc1BhdGgoKSB7XG4gIGxldCBmb2xkZXIgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vJywgJ2xpYi9jbGknKTtcbiAgaWYgKGZzLmV4aXN0c1N5bmMoZm9sZGVyKSkge1xuICAgIHJldHVybiBmb2xkZXI7XG4gIH1cblxuICBsZXQgZm9sZGVyQXNQYWNrYWdlID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLy4uLycsICdsaWIvY2xpJyk7XG5cbiAgaWYgKGZzLmV4aXN0c1N5bmMoZm9sZGVyQXNQYWNrYWdlKSkge1xuICAgIHJldHVybiBmb2xkZXJBc1BhY2thZ2U7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYENhbiBub3QgZmluZCBjb21waWxlZCBmaWxlcyBpbiBmb2xkZXIgJHtmb2xkZXJ9IGFuZCAke2ZvbGRlckFzUGFja2FnZX1gXG4gICk7XG59XG4iXX0=
|
package/lib/cli/cli.ts
CHANGED
|
@@ -46,7 +46,7 @@ async function run() {
|
|
|
46
46
|
progam.parse(process.argv);
|
|
47
47
|
|
|
48
48
|
if (!options.ws && !options.cdkoutput) {
|
|
49
|
-
throw new Error('--ws or --
|
|
49
|
+
throw new Error('--ws or --cdkoutput parameter not specified');
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
if (options.cdkoutput) {
|
|
@@ -195,6 +195,13 @@ function getNpmModuleInstalledPath(npm: string) {
|
|
|
195
195
|
return folderAsPackage;
|
|
196
196
|
}
|
|
197
197
|
|
|
198
|
+
// When boostrap ends up in importing projects root node_modules and not in serverless-spys node_modules
|
|
199
|
+
folderAsPackage = path.join(__dirname, '../../../../', 'node_modules', npm);
|
|
200
|
+
|
|
201
|
+
if (fs.existsSync(folderAsPackage)) {
|
|
202
|
+
return folderAsPackage;
|
|
203
|
+
}
|
|
204
|
+
|
|
198
205
|
throw new Error(
|
|
199
206
|
`Can not find package in folder ${folder} and ${folderAsPackage}`
|
|
200
207
|
);
|