serverless-spy 0.0.40 → 0.0.42
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 -4
- package/cli/cli.ts +54 -12
- package/cli/package.json +1 -4
- package/dist/releasetag.txt +1 -1
- package/lib/cli/cli.d.ts +1 -0
- package/lib/cli/cli.js +38 -13
- package/lib/cli/cli.mjs +38 -13
- package/lib/cli/cli.ts +54 -12
- package/lib/cli/package.json +1 -4
- package/lib/src/ServerlessSpy.js +1 -1
- package/package.json +2 -4
- package/node_modules/expand-tilde/LICENSE +0 -21
- package/node_modules/expand-tilde/README.md +0 -80
- package/node_modules/expand-tilde/index.js +0 -22
- package/node_modules/expand-tilde/package.json +0 -67
- package/node_modules/get-installed-path/CHANGELOG.md +0 -99
- package/node_modules/get-installed-path/LICENSE +0 -21
- package/node_modules/get-installed-path/README.md +0 -282
- package/node_modules/get-installed-path/dist/index.es.js +0 -181
- package/node_modules/get-installed-path/dist/index.js +0 -188
- package/node_modules/get-installed-path/package.json +0 -101
- package/node_modules/global-modules/LICENSE +0 -21
- package/node_modules/global-modules/README.md +0 -75
- package/node_modules/global-modules/index.js +0 -31
- package/node_modules/global-modules/package.json +0 -72
- package/node_modules/global-prefix/LICENSE +0 -21
- package/node_modules/global-prefix/README.md +0 -78
- package/node_modules/global-prefix/index.js +0 -96
- package/node_modules/global-prefix/node_modules/which/CHANGELOG.md +0 -152
- package/node_modules/global-prefix/node_modules/which/LICENSE +0 -15
- package/node_modules/global-prefix/node_modules/which/README.md +0 -51
- package/node_modules/global-prefix/node_modules/which/bin/which +0 -52
- package/node_modules/global-prefix/node_modules/which/package.json +0 -30
- package/node_modules/global-prefix/node_modules/which/which.js +0 -135
- package/node_modules/global-prefix/package.json +0 -75
- package/node_modules/homedir-polyfill/LICENSE +0 -21
- package/node_modules/homedir-polyfill/README.md +0 -96
- package/node_modules/homedir-polyfill/index.js +0 -9
- package/node_modules/homedir-polyfill/package.json +0 -62
- package/node_modules/homedir-polyfill/polyfill.js +0 -81
- package/node_modules/ini/LICENSE +0 -15
- package/node_modules/ini/README.md +0 -102
- package/node_modules/ini/ini.js +0 -206
- package/node_modules/ini/package.json +0 -33
- package/node_modules/is-windows/LICENSE +0 -21
- package/node_modules/is-windows/README.md +0 -95
- package/node_modules/is-windows/index.js +0 -27
- package/node_modules/is-windows/package.json +0 -71
- package/node_modules/isexe/.npmignore +0 -2
- package/node_modules/isexe/LICENSE +0 -15
- package/node_modules/isexe/README.md +0 -51
- package/node_modules/isexe/index.js +0 -57
- package/node_modules/isexe/mode.js +0 -41
- package/node_modules/isexe/package.json +0 -31
- package/node_modules/isexe/test/basic.js +0 -221
- package/node_modules/isexe/windows.js +0 -42
- package/node_modules/parse-passwd/LICENSE +0 -21
- package/node_modules/parse-passwd/README.md +0 -86
- package/node_modules/parse-passwd/index.js +0 -56
- package/node_modules/parse-passwd/package.json +0 -55
- package/node_modules/resolve-dir/LICENSE +0 -21
- package/node_modules/resolve-dir/README.md +0 -88
- package/node_modules/resolve-dir/index.js +0 -22
- package/node_modules/resolve-dir/package.json +0 -73
package/.jsii
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
]
|
|
8
8
|
},
|
|
9
9
|
"bin": {
|
|
10
|
-
"
|
|
10
|
+
"sspy": "lib/cli/cli.js"
|
|
11
11
|
},
|
|
12
12
|
"bundled": {
|
|
13
13
|
"@aws-sdk/client-apigatewaymanagementapi": "^3.179.0",
|
|
@@ -28,7 +28,6 @@
|
|
|
28
28
|
"bootstrap": "^5.2.1",
|
|
29
29
|
"bootstrap-icons": "^1.9.1",
|
|
30
30
|
"caporal": "^1.4.0",
|
|
31
|
-
"get-installed-path": "^4.0.8",
|
|
32
31
|
"json-format-highlight": "^1.0.4",
|
|
33
32
|
"open": "^8.4.0",
|
|
34
33
|
"ws": "^8.9.0"
|
|
@@ -3545,6 +3544,6 @@
|
|
|
3545
3544
|
"symbolId": "src/ServerlessSpy:SpyFilter"
|
|
3546
3545
|
}
|
|
3547
3546
|
},
|
|
3548
|
-
"version": "0.0.
|
|
3549
|
-
"fingerprint": "
|
|
3547
|
+
"version": "0.0.42",
|
|
3548
|
+
"fingerprint": "FkpLMmbunFaFfMfPx/u3+Ga3z7yogdXMmPX+LAo0Dtw="
|
|
3550
3549
|
}
|
package/cli/cli.ts
CHANGED
|
@@ -1,14 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
1
2
|
import * as fs from 'fs';
|
|
2
3
|
import * as http from 'http';
|
|
3
4
|
import * as path from 'path';
|
|
4
5
|
import { promisify } from 'util';
|
|
5
6
|
import * as progam from 'caporal';
|
|
6
|
-
import
|
|
7
|
-
import open from 'open';
|
|
7
|
+
import * as open from 'open';
|
|
8
8
|
import { getSignedWebSocketUrl } from '../common/getWebSocketUrl';
|
|
9
9
|
|
|
10
10
|
const readFileAsync = promisify(fs.readFile);
|
|
11
11
|
|
|
12
|
+
//resolve issue with module import
|
|
13
|
+
let opener = open;
|
|
14
|
+
if ((open as any).default) {
|
|
15
|
+
opener = (open as any).default;
|
|
16
|
+
}
|
|
17
|
+
|
|
12
18
|
async function run() {
|
|
13
19
|
let stackList: string[] | undefined;
|
|
14
20
|
let cdkOutput: Record<string, Record<string, string>>;
|
|
@@ -26,11 +32,11 @@ async function run() {
|
|
|
26
32
|
'--cdkstack <cdkstack>',
|
|
27
33
|
'CDK stack in cdk output file. If not specified the first one is picked.'
|
|
28
34
|
)
|
|
29
|
-
.option('--open', 'Open browser',
|
|
35
|
+
.option('--open <open>', 'Open browser', progam.BOOL, true)
|
|
30
36
|
.option(
|
|
31
37
|
'--port <p>',
|
|
32
38
|
`CDK stack in cdk output file. If not specified the first one is picked.`,
|
|
33
|
-
|
|
39
|
+
progam.INT,
|
|
34
40
|
'3456'
|
|
35
41
|
)
|
|
36
42
|
.action((_args, opt, _logger) => {
|
|
@@ -61,19 +67,19 @@ async function run() {
|
|
|
61
67
|
|
|
62
68
|
if (request.url?.startsWith('/webServerlessSpy.js')) {
|
|
63
69
|
//get transpiled TS to JS files
|
|
64
|
-
rootFolder =
|
|
70
|
+
rootFolder = getCompiledJsPath();
|
|
65
71
|
} else if (request.url?.startsWith('/bootstrap/')) {
|
|
66
72
|
filePath = filePath.substring('/bootstrap/'.length);
|
|
67
|
-
const bootstrapFolder = await
|
|
68
|
-
|
|
69
|
-
|
|
73
|
+
const bootstrapFolder = await getNpmModuleInstalledPath(
|
|
74
|
+
'bootstrap'
|
|
75
|
+
);
|
|
70
76
|
|
|
71
77
|
rootFolder = bootstrapFolder;
|
|
72
78
|
} else if (request.url?.startsWith('/bootstrap-icons/')) {
|
|
73
79
|
filePath = filePath.substring('/bootstrap-icons/'.length);
|
|
74
|
-
const bootstrapFolder = await
|
|
75
|
-
|
|
76
|
-
|
|
80
|
+
const bootstrapFolder = await getNpmModuleInstalledPath(
|
|
81
|
+
'bootstrap-icons'
|
|
82
|
+
);
|
|
77
83
|
|
|
78
84
|
rootFolder = bootstrapFolder;
|
|
79
85
|
} else {
|
|
@@ -170,7 +176,43 @@ async function run() {
|
|
|
170
176
|
console.log(
|
|
171
177
|
`ServerlessSoy console runing at http://localhost:${options.port}`
|
|
172
178
|
);
|
|
173
|
-
|
|
179
|
+
if (options.open) {
|
|
180
|
+
await opener(`http://localhost:${options.port}`);
|
|
181
|
+
}
|
|
174
182
|
}
|
|
175
183
|
|
|
176
184
|
run().catch(console.error);
|
|
185
|
+
|
|
186
|
+
function getNpmModuleInstalledPath(npm: string) {
|
|
187
|
+
let folder = path.join(__dirname, '../', 'node_modules', npm);
|
|
188
|
+
if (fs.existsSync(folder)) {
|
|
189
|
+
return folder;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
let folderAsPackage = path.join(__dirname, '../../', 'node_modules', npm);
|
|
193
|
+
|
|
194
|
+
if (fs.existsSync(folderAsPackage)) {
|
|
195
|
+
return folderAsPackage;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
throw new Error(
|
|
199
|
+
`Can not find package in folder ${folder} and ${folderAsPackage}`
|
|
200
|
+
);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
function getCompiledJsPath() {
|
|
204
|
+
let folder = path.join(__dirname, '../', 'lib/cli');
|
|
205
|
+
if (fs.existsSync(folder)) {
|
|
206
|
+
return folder;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
let folderAsPackage = path.join(__dirname, '../../', 'lib/cli');
|
|
210
|
+
|
|
211
|
+
if (fs.existsSync(folderAsPackage)) {
|
|
212
|
+
return folderAsPackage;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
throw new Error(
|
|
216
|
+
`Can not find compiled files in folder ${folder} and ${folderAsPackage}`
|
|
217
|
+
);
|
|
218
|
+
}
|
package/cli/package.json
CHANGED
|
@@ -13,11 +13,8 @@
|
|
|
13
13
|
"bootstrap": "^5.2.1",
|
|
14
14
|
"bootstrap-icons": "^1.9.1",
|
|
15
15
|
"caporal": "^1.4.0",
|
|
16
|
-
"get-installed-path": "^4.0.8",
|
|
17
16
|
"json-format-highlight": "^1.0.4",
|
|
18
17
|
"open": "^8.4.0"
|
|
19
18
|
},
|
|
20
|
-
"devDependencies": {
|
|
21
|
-
"@types/get-installed-path": "^4.0.1"
|
|
22
|
-
}
|
|
19
|
+
"devDependencies": {}
|
|
23
20
|
}
|
package/dist/releasetag.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
v0.0.
|
|
1
|
+
v0.0.42
|
package/lib/cli/cli.d.ts
CHANGED
package/lib/cli/cli.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
1
2
|
"use strict";
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
4
|
const fs = require("fs");
|
|
@@ -5,10 +6,14 @@ const http = require("http");
|
|
|
5
6
|
const path = require("path");
|
|
6
7
|
const util_1 = require("util");
|
|
7
8
|
const progam = require("caporal");
|
|
8
|
-
const
|
|
9
|
-
const open_1 = require("open");
|
|
9
|
+
const open = require("open");
|
|
10
10
|
const getWebSocketUrl_1 = require("../common/getWebSocketUrl");
|
|
11
11
|
const readFileAsync = (0, util_1.promisify)(fs.readFile);
|
|
12
|
+
//resolve issue with module import
|
|
13
|
+
let opener = open;
|
|
14
|
+
if (open.default) {
|
|
15
|
+
opener = open.default;
|
|
16
|
+
}
|
|
12
17
|
async function run() {
|
|
13
18
|
let stackList;
|
|
14
19
|
let cdkOutput;
|
|
@@ -18,8 +23,8 @@ async function run() {
|
|
|
18
23
|
.option('--ws <ws>', 'Websocket link')
|
|
19
24
|
.option('--cdkoutput <cdkoutput>', 'CDK output file that contains Websocket link in a property ServerlessSpyWsUrl')
|
|
20
25
|
.option('--cdkstack <cdkstack>', 'CDK stack in cdk output file. If not specified the first one is picked.')
|
|
21
|
-
.option('--open', 'Open browser',
|
|
22
|
-
.option('--port <p>', `CDK stack in cdk output file. If not specified the first one is picked.`,
|
|
26
|
+
.option('--open <open>', 'Open browser', progam.BOOL, true)
|
|
27
|
+
.option('--port <p>', `CDK stack in cdk output file. If not specified the first one is picked.`, progam.INT, '3456')
|
|
23
28
|
.action((_args, opt, _logger) => {
|
|
24
29
|
options = opt;
|
|
25
30
|
});
|
|
@@ -43,20 +48,16 @@ async function run() {
|
|
|
43
48
|
let rootFolder = __dirname;
|
|
44
49
|
if (request.url?.startsWith('/webServerlessSpy.js')) {
|
|
45
50
|
//get transpiled TS to JS files
|
|
46
|
-
rootFolder =
|
|
51
|
+
rootFolder = getCompiledJsPath();
|
|
47
52
|
}
|
|
48
53
|
else if (request.url?.startsWith('/bootstrap/')) {
|
|
49
54
|
filePath = filePath.substring('/bootstrap/'.length);
|
|
50
|
-
const bootstrapFolder = await (
|
|
51
|
-
local: true,
|
|
52
|
-
});
|
|
55
|
+
const bootstrapFolder = await getNpmModuleInstalledPath('bootstrap');
|
|
53
56
|
rootFolder = bootstrapFolder;
|
|
54
57
|
}
|
|
55
58
|
else if (request.url?.startsWith('/bootstrap-icons/')) {
|
|
56
59
|
filePath = filePath.substring('/bootstrap-icons/'.length);
|
|
57
|
-
const bootstrapFolder = await (
|
|
58
|
-
local: true,
|
|
59
|
-
});
|
|
60
|
+
const bootstrapFolder = await getNpmModuleInstalledPath('bootstrap-icons');
|
|
60
61
|
rootFolder = bootstrapFolder;
|
|
61
62
|
}
|
|
62
63
|
else {
|
|
@@ -145,7 +146,31 @@ async function run() {
|
|
|
145
146
|
})
|
|
146
147
|
.listen(options.port);
|
|
147
148
|
console.log(`ServerlessSoy console runing at http://localhost:${options.port}`);
|
|
148
|
-
|
|
149
|
+
if (options.open) {
|
|
150
|
+
await opener(`http://localhost:${options.port}`);
|
|
151
|
+
}
|
|
149
152
|
}
|
|
150
153
|
run().catch(console.error);
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vY2xpL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsNkJBQTZCO0FBQzdCLCtCQUFpQztBQUNqQyxrQ0FBa0M7QUFDbEMsMkRBQXNEO0FBQ3RELCtCQUF3QjtBQUN4QiwrREFBa0U7QUFFbEUsTUFBTSxhQUFhLEdBQUcsSUFBQSxnQkFBUyxFQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUU3QyxLQUFLLFVBQVUsR0FBRztJQUNoQixJQUFJLFNBQStCLENBQUM7SUFDcEMsSUFBSSxTQUFpRCxDQUFDO0lBRXRELElBQUksT0FBWSxDQUFDO0lBRWpCLE1BQU07U0FDSCxXQUFXLENBQUMsZUFBZSxDQUFDO1NBQzVCLE1BQU0sQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUM7U0FDckMsTUFBTSxDQUNMLHlCQUF5QixFQUN6QiwrRUFBK0UsQ0FDaEY7U0FDQSxNQUFNLENBQ0wsdUJBQXVCLEVBQ3ZCLHlFQUF5RSxDQUMxRTtTQUNBLE1BQU0sQ0FBQyxRQUFRLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUM7U0FDakQsTUFBTSxDQUNMLFlBQVksRUFDWix5RUFBeUUsRUFDekUsU0FBUyxFQUNULE1BQU0sQ0FDUDtTQUNBLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDOUIsT0FBTyxHQUFHLEdBQUcsQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FBQztJQUVMLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTNCLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtRQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7S0FDL0Q7SUFFRCxJQUFJLE9BQU8s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QyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQzthQUNwQztRQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDUCxDQUFDLENBQUM7U0FDRCxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXhCLE9BQU8sQ0FBQyxHQUFHLENBQ1Qsb0RBQW9ELE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FDbkUsQ0FBQztJQUNGLE1BQU0sSUFBQSxjQUFJLEVBQUMsb0JBQW9CLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFFRCxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgaHR0cCBmcm9tICdodHRwJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJztcbmltcG9ydCAqIGFzIHByb2dhbSBmcm9tICdjYXBvcmFsJztcbmltcG9ydCB7IGdldEluc3RhbGxlZFBhdGggfSBmcm9tICdnZXQtaW5zdGFsbGVkLXBhdGgnO1xuaW1wb3J0IG9wZW4gZnJvbSAnb3Blbic7XG5pbXBvcnQgeyBnZXRTaWduZWRXZWJTb2NrZXRVcmwgfSBmcm9tICcuLi9jb21tb24vZ2V0V2ViU29ja2V0VXJsJztcblxuY29uc3QgcmVhZEZpbGVBc3luYyA9IHByb21pc2lmeShmcy5yZWFkRmlsZSk7XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1bigpIHtcbiAgbGV0IHN0YWNrTGlzdDogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gIGxldCBjZGtPdXRwdXQ6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+O1xuXG4gIGxldCBvcHRpb25zOiBhbnk7XG5cbiAgcHJvZ2FtXG4gICAgLmRlc2NyaXB0aW9uKCdTZXJ2ZXJsZXNzU3B5JylcbiAgICAub3B0aW9uKCctLXdzIDx3cz4nLCAnV2Vic29ja2V0IGxpbmsnKVxuICAgIC5vcHRpb24oXG4gICAgICAnLS1jZGtvdXRwdXQgPGNka291dHB1dD4nLFxuICAgICAgJ0NESyBvdXRwdXQgZmlsZSB0aGF0IGNvbnRhaW5zIFdlYnNvY2tldCBsaW5rIGluIGEgcHJvcGVydHkgU2VydmVybGVzc1NweVdzVXJsJ1xuICAgIClcbiAgICAub3B0aW9uKFxuICAgICAgJy0tY2Rrc3RhY2sgPGNka3N0YWNrPicsXG4gICAgICAnQ0RLIHN0YWNrIGluIGNkayBvdXRwdXQgZmlsZS4gSWYgbm90IHNwZWNpZmllZCB0aGUgZmlyc3Qgb25lIGlzIHBpY2tlZC4nXG4gICAgKVxuICAgIC5vcHRpb24oJy0tb3BlbicsICdPcGVuIGJyb3dzZXInLCB1bmRlZmluZWQsIHRydWUpXG4gICAgLm9wdGlvbihcbiAgICAgICctLXBvcnQgPHA+JyxcbiAgICAgIGBDREsgc3RhY2sgaW4gY2RrIG91dHB1dCBmaWxlLiBJZiBub3Qgc3BlY2lmaWVkIHRoZSBmaXJzdCBvbmUgaXMgcGlja2VkLmAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICAnMzQ1NidcbiAgICApXG4gICAgLmFjdGlvbigoX2FyZ3MsIG9wdCwgX2xvZ2dlcikgPT4ge1xuICAgICAgb3B0aW9ucyA9IG9wdDtcbiAgICB9KTtcblxuICBwcm9nYW0ucGFyc2UocHJvY2Vzcy5hcmd2KTtcblxuICBpZiAoIW9wdGlvbnMud3MgJiYgIW9wdGlvbnMuY2Rrb3V0cHV0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCctLXdzIG9yIC0tY2Rrc3RhY2sgcGFyYW1ldGVyIG5vdCBzcGVjaWZpZWQnKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmNka291dHB1dCkge1xuICAgIGNvbnN0IHJhd2RhdGEgPSBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKF9fZGlybmFtZSwgb3B0aW9ucy5jZGtvdXRwdXQpKTtcbiAgICBjZGtPdXRwdXQgPSBKU09OLnBhcnNlKHJhd2RhdGEudG9TdHJpbmcoKSk7XG4gICAgc3RhY2tMaXN0ID0gT2JqZWN0LmtleXMoY2RrT3V0cHV0KTtcbiAgfVxuXG4gIGh0dHBcbiAgICAuY3JlYXRlU2VydmVyKChyZXF1ZXN0LCByZXNwb25zZSkgPT4ge1xuICAgICAgdm9pZCAoYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vY29uc29sZS5sb2coJ3JlcXVlc3QgJywgcmVxdWVzdC51cmwpO1xuICAgICAgICAgIGxldCBmaWxlUGF0aDogc3RyaW5nID0gYC4ke3JlcXVlc3QudXJsfWA7XG4gICAgICAgICAgLy9yZW1vdmUgcXVlcnkgcGFyYW1ldGVyc1xuICAgICAgICAgIGZpbGVQYXRoID0gZmlsZVBhdGguc3BsaXQoJz8nKVswXTtcbiAgICAgICAgICBsZXQgcm9vdEZvbGRlciA9IF9fZGlybmFtZTtcblxuICAgICAgICAgIGlmIChyZXF1ZXN0LnVybD8uc3RhcnRzV2l0aCgnL3dlYlNlcnZlcmxlc3NTcHkuanMnKSkge1xuICAgICAgICAgICAgLy9nZXQgdHJhbnNwaWxlZCBUUyB0byBKUyBmaWxlc1xuICAgICAgICAgICAgcm9vdEZvbGRlciA9IHBhdGguam9pbihfX2Rpcm5hbWUsIGAuLi9saWIvY2xpYCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0LnVybD8uc3RhcnRzV2l0aCgnL2Jvb3RzdHJhcC8nKSkge1xuICAgICAgICAgICAgZmlsZVBhdGggPSBmaWxlUGF0aC5zdWJzdHJpbmcoJy9ib290c3RyYXAvJy5sZW5ndGgpO1xuICAgICAgICAgICAgY29uc3QgYm9vdHN0cmFwRm9sZGVyID0gYXdhaXQgZ2V0SW5zdGFsbGVkUGF0aCgnYm9vdHN0cmFwJywge1xuICAgICAgICAgICAgICBsb2NhbDogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByb290Rm9sZGVyID0gYm9vdHN0cmFwRm9sZGVyO1xuICAgICAgICAgIH0gZWxzZSBpZiAocmVxdWVzdC51cmw/LnN0YXJ0c1dpdGgoJy9ib290c3RyYXAtaWNvbnMvJykpIHtcbiAgICAgICAgICAgIGZpbGVQYXRoID0gZmlsZVBhdGguc3Vic3RyaW5nKCcvYm9vdHN0cmFwLWljb25zLycubGVuZ3RoKTtcbiAgICAgICAgICAgIGNvbnN0IGJvb3RzdHJhcEZvbGRlciA9IGF3YWl0IGdldEluc3RhbGxlZFBhdGgoJ2Jvb3RzdHJhcC1pY29ucycsIHtcbiAgICAgICAgICAgICAgbG9jYWw6IHRydWUsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcm9vdEZvbGRlciA9IGJvb3RzdHJhcEZvbGRlcjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGZpbGVQYXRoID09PSAnLi8nKSB7XG4gICAgICAgICAgICAgIGZpbGVQYXRoID0gJy4vaW5kZXguaHRtbCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZmlsZVBhdGggPSBwYXRoLmpvaW4ocm9vdEZvbGRlciwgZmlsZVBhdGgpO1xuICAgICAgICAgIC8vY29uc29sZS5sb2coYCR7cmVxdWVzdC51cmx9IC0tPiAke2ZpbGVQYXRofWApO1xuXG4gICAgICAgICAgY29uc3QgZXh0bmFtZSA9IFN0cmluZyhwYXRoLmV4dG5hbWUoZmlsZVBhdGgpKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIGNvbnN0IG1pbWVUeXBlczogYW55ID0ge1xuICAgICAgICAgICAgJy5odG1sJzogJ3RleHQvaHRtbCcsXG4gICAgICAgICAgICAnLmpzJzogJ3RleHQvamF2YXNjcmlwdCcsXG4gICAgICAgICAgICAnLmNzcyc6ICd0ZXh0L2NzcycsXG4gICAgICAgICAgICAnLmpzb24nOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAnLnBuZyc6ICdpbWFnZS9wbmcnLFxuICAgICAgICAgICAgJy5qcGcnOiAnaW1hZ2UvanBnJyxcbiAgICAgICAgICAgICcuZ2lmJzogJ2ltYWdlL2dpZicsXG4gICAgICAgICAgICAnLnN2Zyc6ICdpbWFnZS9zdmcreG1sJyxcbiAgICAgICAgICAgICcud2F2JzogJ2F1ZGlvL3dhdicsXG4gICAgICAgICAgICAnLm1wNCc6ICd2aWRlby9tcDQnLFxuICAgICAgICAgICAgJy53b2ZmJzogJ2FwcGxpY2F0aW9uL2ZvbnQtd29mZicsXG4gICAgICAgICAgICAnLnR0Zic6ICdhcHBsaWNhdGlvbi9mb250LXR0ZicsXG4gICAgICAgICAgICAnLmVvdCc6ICdhcHBsaWNhdGlvbi92bmQubXMtZm9udG9iamVjdCcsXG4gICAgICAgICAgICAnLm90Zic6ICdhcHBsaWNhdGlvbi9mb250LW90ZicsXG4gICAgICAgICAgICAnLndhc20nOiAnYXBwbGljYXRpb24vd2FzbScsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gbWltZVR5cGVzW2V4dG5hbWVdIHx8ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO1xuXG4gICAgICAgICAgaWYgKHJlcXVlc3QudXJsID09PSAnL3N0YWNrTGlzdCcpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlLndyaXRlSGVhZCgyMDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KTtcbiAgICAgICAgICAgIHJlc3BvbnNlLmVuZChKU09OLnN0cmluZ2lmeShzdGFja0xpc3QpLCAndXRmLTgnKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcXVlc3QudXJsPy5tYXRjaCgnXi93c1VybCcpKSB7XG4gICAgICAgICAgICBsZXQgd3NVcmw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLndzKSB7XG4gICAgICAgICAgICAgIHdzVXJsID0gb3B0aW9ucy53cztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIG9wdGlvbnMuY2Rrb3V0cHV0XG4gICAgICAgICAgICAgIGNvbnN0IHVybFBhdGhzID0gcmVxdWVzdC51cmwuc3BsaXQoJy8nKTtcbiAgICAgICAgICAgICAgbGV0IHN0YWNrID0gdXJsUGF0aHNbMl07XG5cbiAgICAgICAgICAgICAgaWYgKCFzdGFjaykge1xuICAgICAgICAgICAgICAgIHN0YWNrID0gb3B0aW9ucy5jZGtzdGFjaztcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChzdGFjaykge1xuICAgICAgICAgICAgICAgIHdzVXJsID0gY2RrT3V0cHV0W3N0YWNrXS5TZXJ2ZXJsZXNzU3B5V3NVcmw7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGNka091dHB1dCAmJiBjZGtPdXRwdXRbT2JqZWN0LmtleXMoY2RrT3V0cHV0KVswXV0pIHtcbiAgICAgICAgICAgICAgICAgIHdzVXJsID1cbiAgICAgICAgICAgICAgICAgICAgY2RrT3V0cHV0W09iamVjdC5rZXlzKGNka091dHB1dClbMF1dLlNlcnZlcmxlc3NTcHlXc1VybDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF3c1VybCkge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3Npbmcgd2Vic29ja2V0IHVybCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKGBXUyBVUkw6ICR7d3NVcmx9YCk7XG4gICAgICAgICAgICBjb25zdCBzaWduZWRXU1VybCA9IGF3YWl0IGdldFNpZ25lZFdlYlNvY2tldFVybCh3c1VybCk7XG4gICAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoMjAwLCB7ICdDb250ZW50LVR5cGUnOiAndGV4dC9odG1sJyB9KTtcbiAgICAgICAgICAgIHJlc3BvbnNlLmVuZChzaWduZWRXU1VybCwgJ3V0Zi04Jyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZUFzeW5jKGZpbGVQYXRoKTtcblxuICAgICAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoMjAwLCB7ICdDb250ZW50LVR5cGUnOiBjb250ZW50VHlwZSB9KTtcbiAgICAgICAgICAgICAgcmVzcG9uc2UuZW5kKGNvbnRlbnQsICd1dGYtOCcpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgICAgICBpZiAoZXJyb3IuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoNDA0LCB7ICdDb250ZW50LVR5cGUnOiAndGV4dC9odG1sJyB9KTtcbiAgICAgICAgICAgICAgICByZXNwb25zZS5lbmQoXG4gICAgICAgICAgICAgICAgICBgTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSAke3JlcXVlc3QudXJsfWAsXG4gICAgICAgICAgICAgICAgICAndXRmLTgnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoNTAwKTtcbiAgICAgICAgICAgICAgICByZXNwb25zZS5lbmQoYEVycm9yOiAke2Vycm9yLmNvZGV9IC4uXFxuYCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDUwMCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvaHRtbCcgfSk7XG4gICAgICAgICAgcmVzcG9uc2UuZW5kKGVyci5tZXNzYWdlLCAndXRmLTgnKTtcbiAgICAgICAgfVxuICAgICAgfSkoKTtcbiAgICB9KVxuICAgIC5saXN0ZW4ob3B0aW9ucy5wb3J0KTtcblxuICBjb25zb2xlLmxvZyhcbiAgICBgU2VydmVybGVzc1NveSBjb25zb2xlIHJ1bmluZyBhdCBodHRwOi8vbG9jYWxob3N0OiR7b3B0aW9ucy5wb3J0fWBcbiAgKTtcbiAgYXdhaXQgb3BlbihgaHR0cDovL2xvY2FsaG9zdDoke29wdGlvbnMucG9ydH1gKTtcbn1cblxucnVuKCkuY2F0Y2goY29uc29sZS5lcnJvcik7XG4iXX0=
|
|
154
|
+
function getNpmModuleInstalledPath(npm) {
|
|
155
|
+
let folder = path.join(__dirname, '../', 'node_modules', npm);
|
|
156
|
+
if (fs.existsSync(folder)) {
|
|
157
|
+
return folder;
|
|
158
|
+
}
|
|
159
|
+
let folderAsPackage = path.join(__dirname, '../../', 'node_modules', npm);
|
|
160
|
+
if (fs.existsSync(folderAsPackage)) {
|
|
161
|
+
return folderAsPackage;
|
|
162
|
+
}
|
|
163
|
+
throw new Error(`Can not find package in folder ${folder} and ${folderAsPackage}`);
|
|
164
|
+
}
|
|
165
|
+
function getCompiledJsPath() {
|
|
166
|
+
let folder = path.join(__dirname, '../', 'lib/cli');
|
|
167
|
+
if (fs.existsSync(folder)) {
|
|
168
|
+
return folder;
|
|
169
|
+
}
|
|
170
|
+
let folderAsPackage = path.join(__dirname, '../../', 'lib/cli');
|
|
171
|
+
if (fs.existsSync(folderAsPackage)) {
|
|
172
|
+
return folderAsPackage;
|
|
173
|
+
}
|
|
174
|
+
throw new Error(`Can not find compiled files in folder ${folder} and ${folderAsPackage}`);
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vY2xpL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLDZCQUE2QjtBQUM3QiwrQkFBaUM7QUFDakMsa0NBQWtDO0FBQ2xDLDZCQUE2QjtBQUM3QiwrREFBa0U7QUFFbEUsTUFBTSxhQUFhLEdBQUcsSUFBQSxnQkFBUyxFQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUU3QyxrQ0FBa0M7QUFDbEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLElBQUssSUFBWSxDQUFDLE9BQU8sRUFBRTtJQUN6QixNQUFNLEdBQUksSUFBWSxDQUFDLE9BQU8sQ0FBQztDQUNoQztBQUVELEtBQUssVUFBVSxHQUFHO0lBQ2hCLElBQUksU0FBK0IsQ0FBQztJQUNwQyxJQUFJLFNBQWlELENBQUM7SUFFdEQsSUFBSSxPQUFZLENBQUM7SUFFakIsTUFBTTtTQUNILFdBQVcsQ0FBQyxlQUFlLENBQUM7U0FDNUIsTUFBTSxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQztTQUNyQyxNQUFNLENBQ0wseUJBQXlCLEVBQ3pCLCtFQUErRSxDQUNoRjtTQUNBLE1BQU0sQ0FDTCx1QkFBdUIsRUFDdkIseUVBQXlFLENBQzFFO1NBQ0EsTUFBTSxDQUFDLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7U0FDMUQsTUFBTSxDQUNMLFlBQVksRUFDWix5RUFBeUUsRUFDekUsTUFBTSxDQUFDLEdBQUcsRUFDVixNQUFNLENBQ1A7U0FDQSxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQzlCLE9BQU8sR0FBRyxHQUFHLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFFTCxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJ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RUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN6QixPQUFPLE1BQU0sQ0FBQztLQUNmO0lBRUQsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRWhFLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsRUFBRTtRQUNsQyxPQUFPLGVBQWUsQ0FBQztLQUN4QjtJQUVELE1BQU0sSUFBSSxLQUFLLENBQ2IseUNBQXlDLE1BQU0sUUFBUSxlQUFlLEVBQUUsQ0FDekUsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBodHRwIGZyb20gJ2h0dHAnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0ICogYXMgcHJvZ2FtIGZyb20gJ2NhcG9yYWwnO1xuaW1wb3J0ICogYXMgb3BlbiBmcm9tICdvcGVuJztcbmltcG9ydCB7IGdldFNpZ25lZFdlYlNvY2tldFVybCB9IGZyb20gJy4uL2NvbW1vbi9nZXRXZWJTb2NrZXRVcmwnO1xuXG5jb25zdCByZWFkRmlsZUFzeW5jID0gcHJvbWlzaWZ5KGZzLnJlYWRGaWxlKTtcblxuLy9yZXNvbHZlIGlzc3VlIHdpdGggbW9kdWxlIGltcG9ydFxubGV0IG9wZW5lciA9IG9wZW47XG5pZiAoKG9wZW4gYXMgYW55KS5kZWZhdWx0KSB7XG4gIG9wZW5lciA9IChvcGVuIGFzIGFueSkuZGVmYXVsdDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuKCkge1xuICBsZXQgc3RhY2tMaXN0OiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgbGV0IGNka091dHB1dDogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj47XG5cbiAgbGV0IG9wdGlvbnM6IGFueTtcblxuICBwcm9nYW1cbiAgICAuZGVzY3JpcHRpb24oJ1NlcnZlcmxlc3NTcHknKVxuICAgIC5vcHRpb24oJy0td3MgPHdzPicsICdXZWJzb2NrZXQgbGluaycpXG4gICAgLm9wdGlvbihcbiAgICAgICctLWNka291dHB1dCA8Y2Rrb3V0cHV0PicsXG4gICAgICAnQ0RLIG91dHB1dCBmaWxlIHRoYXQgY29udGFpbnMgV2Vic29ja2V0IGxpbmsgaW4gYSBwcm9wZXJ0eSBTZXJ2ZXJsZXNzU3B5V3NVcmwnXG4gICAgKVxuICAgIC5vcHRpb24oXG4gICAgICAnLS1jZGtzdGFjayA8Y2Rrc3RhY2s+JyxcbiAgICAgICdDREsgc3RhY2sgaW4gY2RrIG91dHB1dCBmaWxlLiBJZiBub3Qgc3BlY2lmaWVkIHRoZSBmaXJzdCBvbmUgaXMgcGlja2VkLidcbiAgICApXG4gICAgLm9wdGlvbignLS1vcGVuIDxvcGVuPicsICdPcGVuIGJyb3dzZXInLCBwcm9nYW0uQk9PTCwgdHJ1ZSlcbiAgICAub3B0aW9uKFxuICAgICAgJy0tcG9ydCA8cD4nLFxuICAgICAgYENESyBzdGFjayBpbiBjZGsgb3V0cHV0IGZpbGUuIElmIG5vdCBzcGVjaWZpZWQgdGhlIGZpcnN0IG9uZSBpcyBwaWNrZWQuYCxcbiAgICAgIHByb2dhbS5JTlQsXG4gICAgICAnMzQ1NidcbiAgICApXG4gICAgLmFjdGlvbigoX2FyZ3MsIG9wdCwgX2xvZ2dlcikgPT4ge1xuICAgICAgb3B0aW9ucyA9IG9wdDtcbiAgICB9KTtcblxuICBwcm9nYW0ucGFyc2UocHJvY2Vzcy5hcmd2KTtcblxuICBpZiAoIW9wdGlvbnMud3MgJiYgIW9wdGlvbnMuY2Rrb3V0cHV0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCctLXdzIG9yIC0tY2Rrc3RhY2sgcGFyYW1ldGVyIG5vdCBzcGVjaWZpZWQnKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmNka291dHB1dCkge1xuICAgIGNvbnN0IHJhd2RhdGEgPSBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKF9fZGlybmFtZSwgb3B0aW9ucy5jZGtvdXRwdXQpKTtcbiAgICBjZGtPdXRwdXQgPSBKU09OLnBhcnNlKHJhd2RhdGEudG9TdHJpbmcoKSk7XG4gICAgc3RhY2tMaXN0ID0gT2JqZWN0LmtleXMoY2RrT3V0cHV0KTtcbiAgfVxuXG4gIGh0dHBcbiAgICAuY3JlYXRlU2VydmVyKChyZXF1ZXN0LCByZXNwb25zZSkgPT4ge1xuICAgICAgdm9pZCAoYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vY29uc29sZS5sb2coJ3JlcXVlc3QgJywgcmVxdWVzdC51cmwpO1xuICAgICAgICAgIGxldCBmaWxlUGF0aDogc3RyaW5nID0gYC4ke3JlcXVlc3QudXJsfWA7XG4gICAgICAgICAgLy9yZW1vdmUgcXVlcnkgcGFyYW1ldGVyc1xuICAgICAgICAgIGZpbGVQYXRoID0gZmlsZVBhdGguc3BsaXQoJz8nKVswXTtcbiAgICAgICAgICBsZXQgcm9vdEZvbGRlciA9IF9fZGlybmFtZTtcblxuICAgICAgICAgIGlmIChyZXF1ZXN0LnVybD8uc3RhcnRzV2l0aCgnL3dlYlNlcnZlcmxlc3NTcHkuanMnKSkge1xuICAgICAgICAgICAgLy9nZXQgdHJhbnNwaWxlZCBUUyB0byBKUyBmaWxlc1xuICAgICAgICAgICAgcm9vdEZvbGRlciA9IGdldENvbXBpbGVkSnNQYXRoKCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0LnVybD8uc3RhcnRzV2l0aCgnL2Jvb3RzdHJhcC8nKSkge1xuICAgICAgICAgICAgZmlsZVBhdGggPSBmaWxlUGF0aC5zdWJzdHJpbmcoJy9ib290c3RyYXAvJy5sZW5ndGgpO1xuICAgICAgICAgICAgY29uc3QgYm9vdHN0cmFwRm9sZGVyID0gYXdhaXQgZ2V0TnBtTW9kdWxlSW5zdGFsbGVkUGF0aChcbiAgICAgICAgICAgICAgJ2Jvb3RzdHJhcCdcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJvb3RGb2xkZXIgPSBib290c3RyYXBGb2xkZXI7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0LnVybD8uc3RhcnRzV2l0aCgnL2Jvb3RzdHJhcC1pY29ucy8nKSkge1xuICAgICAgICAgICAgZmlsZVBhdGggPSBmaWxlUGF0aC5zdWJzdHJpbmcoJy9ib290c3RyYXAtaWNvbnMvJy5sZW5ndGgpO1xuICAgICAgICAgICAgY29uc3QgYm9vdHN0cmFwRm9sZGVyID0gYXdhaXQgZ2V0TnBtTW9kdWxlSW5zdGFsbGVkUGF0aChcbiAgICAgICAgICAgICAgJ2Jvb3RzdHJhcC1pY29ucydcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJvb3RGb2xkZXIgPSBib290c3RyYXBGb2xkZXI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmaWxlUGF0aCA9PT0gJy4vJykge1xuICAgICAgICAgICAgICBmaWxlUGF0aCA9ICcuL2luZGV4Lmh0bWwnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGZpbGVQYXRoID0gcGF0aC5qb2luKHJvb3RGb2xkZXIsIGZpbGVQYXRoKTtcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKGAke3JlcXVlc3QudXJsfSAtLT4gJHtmaWxlUGF0aH1gKTtcblxuICAgICAgICAgIGNvbnN0IGV4dG5hbWUgPSBTdHJpbmcocGF0aC5leHRuYW1lKGZpbGVQYXRoKSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICBjb25zdCBtaW1lVHlwZXM6IGFueSA9IHtcbiAgICAgICAgICAgICcuaHRtbCc6ICd0ZXh0L2h0bWwnLFxuICAgICAgICAgICAgJy5qcyc6ICd0ZXh0L2phdmFzY3JpcHQnLFxuICAgICAgICAgICAgJy5jc3MnOiAndGV4dC9jc3MnLFxuICAgICAgICAgICAgJy5qc29uJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgJy5wbmcnOiAnaW1hZ2UvcG5nJyxcbiAgICAgICAgICAgICcuanBnJzogJ2ltYWdlL2pwZycsXG4gICAgICAgICAgICAnLmdpZic6ICdpbWFnZS9naWYnLFxuICAgICAgICAgICAgJy5zdmcnOiAnaW1hZ2Uvc3ZnK3htbCcsXG4gICAgICAgICAgICAnLndhdic6ICdhdWRpby93YXYnLFxuICAgICAgICAgICAgJy5tcDQnOiAndmlkZW8vbXA0JyxcbiAgICAgICAgICAgICcud29mZic6ICdhcHBsaWNhdGlvbi9mb250LXdvZmYnLFxuICAgICAgICAgICAgJy50dGYnOiAnYXBwbGljYXRpb24vZm9udC10dGYnLFxuICAgICAgICAgICAgJy5lb3QnOiAnYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3QnLFxuICAgICAgICAgICAgJy5vdGYnOiAnYXBwbGljYXRpb24vZm9udC1vdGYnLFxuICAgICAgICAgICAgJy53YXNtJzogJ2FwcGxpY2F0aW9uL3dhc20nLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IG1pbWVUeXBlc1tleHRuYW1lXSB8fCAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcblxuICAgICAgICAgIGlmIChyZXF1ZXN0LnVybCA9PT0gJy9zdGFja0xpc3QnKSB7XG4gICAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoMjAwLCB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSk7XG4gICAgICAgICAgICByZXNwb25zZS5lbmQoSlNPTi5zdHJpbmdpZnkoc3RhY2tMaXN0KSwgJ3V0Zi04Jyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0LnVybD8ubWF0Y2goJ14vd3NVcmwnKSkge1xuICAgICAgICAgICAgbGV0IHdzVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy53cykge1xuICAgICAgICAgICAgICB3c1VybCA9IG9wdGlvbnMud3M7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBvcHRpb25zLmNka291dHB1dFxuICAgICAgICAgICAgICBjb25zdCB1cmxQYXRocyA9IHJlcXVlc3QudXJsLnNwbGl0KCcvJyk7XG4gICAgICAgICAgICAgIGxldCBzdGFjayA9IHVybFBhdGhzWzJdO1xuXG4gICAgICAgICAgICAgIGlmICghc3RhY2spIHtcbiAgICAgICAgICAgICAgICBzdGFjayA9IG9wdGlvbnMuY2Rrc3RhY2s7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoc3RhY2spIHtcbiAgICAgICAgICAgICAgICB3c1VybCA9IGNka091dHB1dFtzdGFja10uU2VydmVybGVzc1NweVdzVXJsO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChjZGtPdXRwdXQgJiYgY2RrT3V0cHV0W09iamVjdC5rZXlzKGNka091dHB1dClbMF1dKSB7XG4gICAgICAgICAgICAgICAgICB3c1VybCA9XG4gICAgICAgICAgICAgICAgICAgIGNka091dHB1dFtPYmplY3Qua2V5cyhjZGtPdXRwdXQpWzBdXS5TZXJ2ZXJsZXNzU3B5V3NVcmw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghd3NVcmwpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHdlYnNvY2tldCB1cmwnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhgV1MgVVJMOiAke3dzVXJsfWApO1xuICAgICAgICAgICAgY29uc3Qgc2lnbmVkV1NVcmwgPSBhd2FpdCBnZXRTaWduZWRXZWJTb2NrZXRVcmwod3NVcmwpO1xuICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDIwMCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvaHRtbCcgfSk7XG4gICAgICAgICAgICByZXNwb25zZS5lbmQoc2lnbmVkV1NVcmwsICd1dGYtOCcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZEZpbGVBc3luYyhmaWxlUGF0aCk7XG5cbiAgICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDIwMCwgeyAnQ29udGVudC1UeXBlJzogY29udGVudFR5cGUgfSk7XG4gICAgICAgICAgICAgIHJlc3BvbnNlLmVuZChjb250ZW50LCAndXRmLTgnKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgICAgaWYgKGVycm9yLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDQwNCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvaHRtbCcgfSk7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuZW5kKFxuICAgICAgICAgICAgICAgICAgYE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgJHtyZXF1ZXN0LnVybH1gLFxuICAgICAgICAgICAgICAgICAgJ3V0Zi04J1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDUwMCk7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuZW5kKGBFcnJvcjogJHtlcnJvci5jb2RlfSAuLlxcbmApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICAgIHJlc3BvbnNlLndyaXRlSGVhZCg1MDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L2h0bWwnIH0pO1xuICAgICAgICAgIHJlc3BvbnNlLmVuZChlcnIubWVzc2FnZSwgJ3V0Zi04Jyk7XG4gICAgICAgIH1cbiAgICAgIH0pKCk7XG4gICAgfSlcbiAgICAubGlzdGVuKG9wdGlvbnMucG9ydCk7XG5cbiAgY29uc29sZS5sb2coXG4gICAgYFNlcnZlcmxlc3NTb3kgY29uc29sZSBydW5pbmcgYXQgaHR0cDovL2xvY2FsaG9zdDoke29wdGlvbnMucG9ydH1gXG4gICk7XG4gIGlmIChvcHRpb25zLm9wZW4pIHtcbiAgICBhd2FpdCBvcGVuZXIoYGh0dHA6Ly9sb2NhbGhvc3Q6JHtvcHRpb25zLnBvcnR9YCk7XG4gIH1cbn1cblxucnVuKCkuY2F0Y2goY29uc29sZS5lcnJvcik7XG5cbmZ1bmN0aW9uIGdldE5wbU1vZHVsZUluc3RhbGxlZFBhdGgobnBtOiBzdHJpbmcpIHtcbiAgbGV0IGZvbGRlciA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8nLCAnbm9kZV9tb2R1bGVzJywgbnBtKTtcbiAgaWYgKGZzLmV4aXN0c1N5bmMoZm9sZGVyKSkge1xuICAgIHJldHVybiBmb2xkZXI7XG4gIH1cblxuICBsZXQgZm9sZGVyQXNQYWNrYWdlID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLy4uLycsICdub2RlX21vZHVsZXMnLCBucG0pO1xuXG4gIGlmIChmcy5leGlzdHNTeW5jKGZvbGRlckFzUGFja2FnZSkpIHtcbiAgICByZXR1cm4gZm9sZGVyQXNQYWNrYWdlO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBDYW4gbm90IGZpbmQgcGFja2FnZSBpbiBmb2xkZXIgJHtmb2xkZXJ9IGFuZCAke2ZvbGRlckFzUGFja2FnZX1gXG4gICk7XG59XG5cbmZ1bmN0aW9uIGdldENvbXBpbGVkSnNQYXRoKCkge1xuICBsZXQgZm9sZGVyID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLycsICdsaWIvY2xpJyk7XG4gIGlmIChmcy5leGlzdHNTeW5jKGZvbGRlcikpIHtcbiAgICByZXR1cm4gZm9sZGVyO1xuICB9XG5cbiAgbGV0IGZvbGRlckFzUGFja2FnZSA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi8nLCAnbGliL2NsaScpO1xuXG4gIGlmIChmcy5leGlzdHNTeW5jKGZvbGRlckFzUGFja2FnZSkpIHtcbiAgICByZXR1cm4gZm9sZGVyQXNQYWNrYWdlO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBDYW4gbm90IGZpbmQgY29tcGlsZWQgZmlsZXMgaW4gZm9sZGVyICR7Zm9sZGVyfSBhbmQgJHtmb2xkZXJBc1BhY2thZ2V9YFxuICApO1xufVxuIl19
|
package/lib/cli/cli.mjs
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
1
2
|
import * as fs from 'fs';
|
|
2
3
|
import * as http from 'http';
|
|
3
4
|
import * as path from 'path';
|
|
4
5
|
import { promisify } from 'util';
|
|
5
6
|
import * as progam from 'caporal';
|
|
6
|
-
import
|
|
7
|
-
import open from 'open';
|
|
7
|
+
import * as open from 'open';
|
|
8
8
|
import { getSignedWebSocketUrl } from '../common/getWebSocketUrl';
|
|
9
9
|
const readFileAsync = promisify(fs.readFile);
|
|
10
|
+
//resolve issue with module import
|
|
11
|
+
let opener = open;
|
|
12
|
+
if (open.default) {
|
|
13
|
+
opener = open.default;
|
|
14
|
+
}
|
|
10
15
|
async function run() {
|
|
11
16
|
let stackList;
|
|
12
17
|
let cdkOutput;
|
|
@@ -16,8 +21,8 @@ async function run() {
|
|
|
16
21
|
.option('--ws <ws>', 'Websocket link')
|
|
17
22
|
.option('--cdkoutput <cdkoutput>', 'CDK output file that contains Websocket link in a property ServerlessSpyWsUrl')
|
|
18
23
|
.option('--cdkstack <cdkstack>', 'CDK stack in cdk output file. If not specified the first one is picked.')
|
|
19
|
-
.option('--open', 'Open browser',
|
|
20
|
-
.option('--port <p>', `CDK stack in cdk output file. If not specified the first one is picked.`,
|
|
24
|
+
.option('--open <open>', 'Open browser', progam.BOOL, true)
|
|
25
|
+
.option('--port <p>', `CDK stack in cdk output file. If not specified the first one is picked.`, progam.INT, '3456')
|
|
21
26
|
.action((_args, opt, _logger) => {
|
|
22
27
|
options = opt;
|
|
23
28
|
});
|
|
@@ -41,20 +46,16 @@ async function run() {
|
|
|
41
46
|
let rootFolder = __dirname;
|
|
42
47
|
if (request.url?.startsWith('/webServerlessSpy.js')) {
|
|
43
48
|
//get transpiled TS to JS files
|
|
44
|
-
rootFolder =
|
|
49
|
+
rootFolder = getCompiledJsPath();
|
|
45
50
|
}
|
|
46
51
|
else if (request.url?.startsWith('/bootstrap/')) {
|
|
47
52
|
filePath = filePath.substring('/bootstrap/'.length);
|
|
48
|
-
const bootstrapFolder = await
|
|
49
|
-
local: true,
|
|
50
|
-
});
|
|
53
|
+
const bootstrapFolder = await getNpmModuleInstalledPath('bootstrap');
|
|
51
54
|
rootFolder = bootstrapFolder;
|
|
52
55
|
}
|
|
53
56
|
else if (request.url?.startsWith('/bootstrap-icons/')) {
|
|
54
57
|
filePath = filePath.substring('/bootstrap-icons/'.length);
|
|
55
|
-
const bootstrapFolder = await
|
|
56
|
-
local: true,
|
|
57
|
-
});
|
|
58
|
+
const bootstrapFolder = await getNpmModuleInstalledPath('bootstrap-icons');
|
|
58
59
|
rootFolder = bootstrapFolder;
|
|
59
60
|
}
|
|
60
61
|
else {
|
|
@@ -143,7 +144,31 @@ async function run() {
|
|
|
143
144
|
})
|
|
144
145
|
.listen(options.port);
|
|
145
146
|
console.log(`ServerlessSoy console runing at http://localhost:${options.port}`);
|
|
146
|
-
|
|
147
|
+
if (options.open) {
|
|
148
|
+
await opener(`http://localhost:${options.port}`);
|
|
149
|
+
}
|
|
147
150
|
}
|
|
148
151
|
run().catch(console.error);
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vY2xpL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sS0FBSyxNQUFNLE1BQU0sU0FBUyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRSxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRTdDLEtBQUssVUFBVSxHQUFHO0lBQ2hCLElBQUksU0FBK0IsQ0FBQztJQUNwQyxJQUFJLFNBQWlELENBQUM7SUFFdEQsSUFBSSxPQUFZLENBQUM7SUFFakIsTUFBTTtTQUNILFdBQVcsQ0FBQyxlQUFlLENBQUM7U0FDNUIsTUFBTSxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQztTQUNyQyxNQUFNLENBQ0wseUJBQXlCLEVBQ3pCLCtFQUErRSxDQUNoRjtTQUNBLE1BQU0sQ0FDTCx1QkFBdUIsRUFDdkIseUVBQXlFLENBQzFFO1NBQ0EsTUFBTSxDQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQztTQUNqRCxNQUFNLENBQ0wsWUFBWSxFQUNaLHlFQUF5RSxFQUN6RSxTQUFTLEVBQ1QsTUFBTSxDQUNQO1NBQ0EsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUM5QixPQUFPLEdBQUcsR0FBRyxDQUFDO0lB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QUMsR0FBRyxDQUFDLFVBQVUsS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUM7eUJBQzNDO3FCQUNGO2lCQUNGO2FBQ0Y7WUFBQyxPQUFPLEdBQVEsRUFBRTtnQkFDakIsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztnQkFDekQsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQ3BDO1FBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNQLENBQUMsQ0FBQztTQUNELE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFeEIsT0FBTyxDQUFDLEdBQUcsQ0FDVCxvREFBb0QsT0FBTyxDQUFDLElBQUksRUFBRSxDQUNuRSxDQUFDO0lBQ0YsTUFBTSxJQUFJLENBQUMsb0JBQW9CLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFFRCxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgaHR0cCBmcm9tICdodHRwJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJztcbmltcG9ydCAqIGFzIHByb2dhbSBmcm9tICdjYXBvcmFsJztcbmltcG9ydCB7IGdldEluc3RhbGxlZFBhdGggfSBmcm9tICdnZXQtaW5zdGFsbGVkLXBhdGgnO1xuaW1wb3J0IG9wZW4gZnJvbSAnb3Blbic7XG5pbXBvcnQgeyBnZXRTaWduZWRXZWJTb2NrZXRVcmwgfSBmcm9tICcuLi9jb21tb24vZ2V0V2ViU29ja2V0VXJsJztcblxuY29uc3QgcmVhZEZpbGVBc3luYyA9IHByb21pc2lmeShmcy5yZWFkRmlsZSk7XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1bigpIHtcbiAgbGV0IHN0YWNrTGlzdDogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gIGxldCBjZGtPdXRwdXQ6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+O1xuXG4gIGxldCBvcHRpb25zOiBhbnk7XG5cbiAgcHJvZ2FtXG4gICAgLmRlc2NyaXB0aW9uKCdTZXJ2ZXJsZXNzU3B5JylcbiAgICAub3B0aW9uKCctLXdzIDx3cz4nLCAnV2Vic29ja2V0IGxpbmsnKVxuICAgIC5vcHRpb24oXG4gICAgICAnLS1jZGtvdXRwdXQgPGNka291dHB1dD4nLFxuICAgICAgJ0NESyBvdXRwdXQgZmlsZSB0aGF0IGNvbnRhaW5zIFdlYnNvY2tldCBsaW5rIGluIGEgcHJvcGVydHkgU2VydmVybGVzc1NweVdzVXJsJ1xuICAgIClcbiAgICAub3B0aW9uKFxuICAgICAgJy0tY2Rrc3RhY2sgPGNka3N0YWNrPicsXG4gICAgICAnQ0RLIHN0YWNrIGluIGNkayBvdXRwdXQgZmlsZS4gSWYgbm90IHNwZWNpZmllZCB0aGUgZmlyc3Qgb25lIGlzIHBpY2tlZC4nXG4gICAgKVxuICAgIC5vcHRpb24oJy0tb3BlbicsICdPcGVuIGJyb3dzZXInLCB1bmRlZmluZWQsIHRydWUpXG4gICAgLm9wdGlvbihcbiAgICAgICctLXBvcnQgPHA+JyxcbiAgICAgIGBDREsgc3RhY2sgaW4gY2RrIG91dHB1dCBmaWxlLiBJZiBub3Qgc3BlY2lmaWVkIHRoZSBmaXJzdCBvbmUgaXMgcGlja2VkLmAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICAnMzQ1NidcbiAgICApXG4gICAgLmFjdGlvbigoX2FyZ3MsIG9wdCwgX2xvZ2dlcikgPT4ge1xuICAgICAgb3B0aW9ucyA9IG9wdDtcbiAgICB9KTtcblxuICBwcm9nYW0ucGFyc2UocHJvY2Vzcy5hcmd2KTtcblxuICBpZiAoIW9wdGlvbnMud3MgJiYgIW9wdGlvbnMuY2Rrb3V0cHV0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCctLXdzIG9yIC0tY2Rrc3RhY2sgcGFyYW1ldGVyIG5vdCBzcGVjaWZpZWQnKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmNka291dHB1dCkge1xuICAgIGNvbnN0IHJhd2RhdGEgPSBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKF9fZGlybmFtZSwgb3B0aW9ucy5jZGtvdXRwdXQpKTtcbiAgICBjZGtPdXRwdXQgPSBKU09OLnBhcnNlKHJhd2RhdGEudG9TdHJpbmcoKSk7XG4gICAgc3RhY2tMaXN0ID0gT2JqZWN0LmtleXMoY2RrT3V0cHV0KTtcbiAgfVxuXG4gIGh0dHBcbiAgICAuY3JlYXRlU2VydmVyKChyZXF1ZXN0LCByZXNwb25zZSkgPT4ge1xuICAgICAgdm9pZCAoYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vY29uc29sZS5sb2coJ3JlcXVlc3QgJywgcmVxdWVzdC51cmwpO1xuICAgICAgICAgIGxldCBmaWxlUGF0aDogc3RyaW5nID0gYC4ke3JlcXVlc3QudXJsfWA7XG4gICAgICAgICAgLy9yZW1vdmUgcXVlcnkgcGFyYW1ldGVyc1xuICAgICAgICAgIGZpbGVQYXRoID0gZmlsZVBhdGguc3BsaXQoJz8nKVswXTtcbiAgICAgICAgICBsZXQgcm9vdEZvbGRlciA9IF9fZGlybmFtZTtcblxuICAgICAgICAgIGlmIChyZXF1ZXN0LnVybD8uc3RhcnRzV2l0aCgnL3dlYlNlcnZlcmxlc3NTcHkuanMnKSkge1xuICAgICAgICAgICAgLy9nZXQgdHJhbnNwaWxlZCBUUyB0byBKUyBmaWxlc1xuICAgICAgICAgICAgcm9vdEZvbGRlciA9IHBhdGguam9pbihfX2Rpcm5hbWUsIGAuLi9saWIvY2xpYCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0LnVybD8uc3RhcnRzV2l0aCgnL2Jvb3RzdHJhcC8nKSkge1xuICAgICAgICAgICAgZmlsZVBhdGggPSBmaWxlUGF0aC5zdWJzdHJpbmcoJy9ib290c3RyYXAvJy5sZW5ndGgpO1xuICAgICAgICAgICAgY29uc3QgYm9vdHN0cmFwRm9sZGVyID0gYXdhaXQgZ2V0SW5zdGFsbGVkUGF0aCgnYm9vdHN0cmFwJywge1xuICAgICAgICAgICAgICBsb2NhbDogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByb290Rm9sZGVyID0gYm9vdHN0cmFwRm9sZGVyO1xuICAgICAgICAgIH0gZWxzZSBpZiAocmVxdWVzdC51cmw/LnN0YXJ0c1dpdGgoJy9ib290c3RyYXAtaWNvbnMvJykpIHtcbiAgICAgICAgICAgIGZpbGVQYXRoID0gZmlsZVBhdGguc3Vic3RyaW5nKCcvYm9vdHN0cmFwLWljb25zLycubGVuZ3RoKTtcbiAgICAgICAgICAgIGNvbnN0IGJvb3RzdHJhcEZvbGRlciA9IGF3YWl0IGdldEluc3RhbGxlZFBhdGgoJ2Jvb3RzdHJhcC1pY29ucycsIHtcbiAgICAgICAgICAgICAgbG9jYWw6IHRydWUsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcm9vdEZvbGRlciA9IGJvb3RzdHJhcEZvbGRlcjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGZpbGVQYXRoID09PSAnLi8nKSB7XG4gICAgICAgICAgICAgIGZpbGVQYXRoID0gJy4vaW5kZXguaHRtbCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZmlsZVBhdGggPSBwYXRoLmpvaW4ocm9vdEZvbGRlciwgZmlsZVBhdGgpO1xuICAgICAgICAgIC8vY29uc29sZS5sb2coYCR7cmVxdWVzdC51cmx9IC0tPiAke2ZpbGVQYXRofWApO1xuXG4gICAgICAgICAgY29uc3QgZXh0bmFtZSA9IFN0cmluZyhwYXRoLmV4dG5hbWUoZmlsZVBhdGgpKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIGNvbnN0IG1pbWVUeXBlczogYW55ID0ge1xuICAgICAgICAgICAgJy5odG1sJzogJ3RleHQvaHRtbCcsXG4gICAgICAgICAgICAnLmpzJzogJ3RleHQvamF2YXNjcmlwdCcsXG4gICAgICAgICAgICAnLmNzcyc6ICd0ZXh0L2NzcycsXG4gICAgICAgICAgICAnLmpzb24nOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAnLnBuZyc6ICdpbWFnZS9wbmcnLFxuICAgICAgICAgICAgJy5qcGcnOiAnaW1hZ2UvanBnJyxcbiAgICAgICAgICAgICcuZ2lmJzogJ2ltYWdlL2dpZicsXG4gICAgICAgICAgICAnLnN2Zyc6ICdpbWFnZS9zdmcreG1sJyxcbiAgICAgICAgICAgICcud2F2JzogJ2F1ZGlvL3dhdicsXG4gICAgICAgICAgICAnLm1wNCc6ICd2aWRlby9tcDQnLFxuICAgICAgICAgICAgJy53b2ZmJzogJ2FwcGxpY2F0aW9uL2ZvbnQtd29mZicsXG4gICAgICAgICAgICAnLnR0Zic6ICdhcHBsaWNhdGlvbi9mb250LXR0ZicsXG4gICAgICAgICAgICAnLmVvdCc6ICdhcHBsaWNhdGlvbi92bmQubXMtZm9udG9iamVjdCcsXG4gICAgICAgICAgICAnLm90Zic6ICdhcHBsaWNhdGlvbi9mb250LW90ZicsXG4gICAgICAgICAgICAnLndhc20nOiAnYXBwbGljYXRpb24vd2FzbScsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gbWltZVR5cGVzW2V4dG5hbWVdIHx8ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO1xuXG4gICAgICAgICAgaWYgKHJlcXVlc3QudXJsID09PSAnL3N0YWNrTGlzdCcpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlLndyaXRlSGVhZCgyMDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9KTtcbiAgICAgICAgICAgIHJlc3BvbnNlLmVuZChKU09OLnN0cmluZ2lmeShzdGFja0xpc3QpLCAndXRmLTgnKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcXVlc3QudXJsPy5tYXRjaCgnXi93c1VybCcpKSB7XG4gICAgICAgICAgICBsZXQgd3NVcmw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLndzKSB7XG4gICAgICAgICAgICAgIHdzVXJsID0gb3B0aW9ucy53cztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIG9wdGlvbnMuY2Rrb3V0cHV0XG4gICAgICAgICAgICAgIGNvbnN0IHVybFBhdGhzID0gcmVxdWVzdC51cmwuc3BsaXQoJy8nKTtcbiAgICAgICAgICAgICAgbGV0IHN0YWNrID0gdXJsUGF0aHNbMl07XG5cbiAgICAgICAgICAgICAgaWYgKCFzdGFjaykge1xuICAgICAgICAgICAgICAgIHN0YWNrID0gb3B0aW9ucy5jZGtzdGFjaztcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChzdGFjaykge1xuICAgICAgICAgICAgICAgIHdzVXJsID0gY2RrT3V0cHV0W3N0YWNrXS5TZXJ2ZXJsZXNzU3B5V3NVcmw7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGNka091dHB1dCAmJiBjZGtPdXRwdXRbT2JqZWN0LmtleXMoY2RrT3V0cHV0KVswXV0pIHtcbiAgICAgICAgICAgICAgICAgIHdzVXJsID1cbiAgICAgICAgICAgICAgICAgICAgY2RrT3V0cHV0W09iamVjdC5rZXlzKGNka091dHB1dClbMF1dLlNlcnZlcmxlc3NTcHlXc1VybDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF3c1VybCkge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3Npbmcgd2Vic29ja2V0IHVybCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKGBXUyBVUkw6ICR7d3NVcmx9YCk7XG4gICAgICAgICAgICBjb25zdCBzaWduZWRXU1VybCA9IGF3YWl0IGdldFNpZ25lZFdlYlNvY2tldFVybCh3c1VybCk7XG4gICAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoMjAwLCB7ICdDb250ZW50LVR5cGUnOiAndGV4dC9odG1sJyB9KTtcbiAgICAgICAgICAgIHJlc3BvbnNlLmVuZChzaWduZWRXU1VybCwgJ3V0Zi04Jyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZUFzeW5jKGZpbGVQYXRoKTtcblxuICAgICAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoMjAwLCB7ICdDb250ZW50LVR5cGUnOiBjb250ZW50VHlwZSB9KTtcbiAgICAgICAgICAgICAgcmVzcG9uc2UuZW5kKGNvbnRlbnQsICd1dGYtOCcpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgICAgICBpZiAoZXJyb3IuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoNDA0LCB7ICdDb250ZW50LVR5cGUnOiAndGV4dC9odG1sJyB9KTtcbiAgICAgICAgICAgICAgICByZXNwb25zZS5lbmQoXG4gICAgICAgICAgICAgICAgICBgTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSAke3JlcXVlc3QudXJsfWAsXG4gICAgICAgICAgICAgICAgICAndXRmLTgnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoNTAwKTtcbiAgICAgICAgICAgICAgICByZXNwb25zZS5lbmQoYEVycm9yOiAke2Vycm9yLmNvZGV9IC4uXFxuYCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDUwMCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvaHRtbCcgfSk7XG4gICAgICAgICAgcmVzcG9uc2UuZW5kKGVyci5tZXNzYWdlLCAndXRmLTgnKTtcbiAgICAgICAgfVxuICAgICAgfSkoKTtcbiAgICB9KVxuICAgIC5saXN0ZW4ob3B0aW9ucy5wb3J0KTtcblxuICBjb25zb2xlLmxvZyhcbiAgICBgU2VydmVybGVzc1NveSBjb25zb2xlIHJ1bmluZyBhdCBodHRwOi8vbG9jYWxob3N0OiR7b3B0aW9ucy5wb3J0fWBcbiAgKTtcbiAgYXdhaXQgb3BlbihgaHR0cDovL2xvY2FsaG9zdDoke29wdGlvbnMucG9ydH1gKTtcbn1cblxucnVuKCkuY2F0Y2goY29uc29sZS5lcnJvcik7XG4iXX0=
|
|
152
|
+
function getNpmModuleInstalledPath(npm) {
|
|
153
|
+
let folder = path.join(__dirname, '../', 'node_modules', npm);
|
|
154
|
+
if (fs.existsSync(folder)) {
|
|
155
|
+
return folder;
|
|
156
|
+
}
|
|
157
|
+
let folderAsPackage = path.join(__dirname, '../../', 'node_modules', npm);
|
|
158
|
+
if (fs.existsSync(folderAsPackage)) {
|
|
159
|
+
return folderAsPackage;
|
|
160
|
+
}
|
|
161
|
+
throw new Error(`Can not find package in folder ${folder} and ${folderAsPackage}`);
|
|
162
|
+
}
|
|
163
|
+
function getCompiledJsPath() {
|
|
164
|
+
let folder = path.join(__dirname, '../', 'lib/cli');
|
|
165
|
+
if (fs.existsSync(folder)) {
|
|
166
|
+
return folder;
|
|
167
|
+
}
|
|
168
|
+
let folderAsPackage = path.join(__dirname, '../../', 'lib/cli');
|
|
169
|
+
if (fs.existsSync(folderAsPackage)) {
|
|
170
|
+
return folderAsPackage;
|
|
171
|
+
}
|
|
172
|
+
throw new Error(`Can not find compiled files in folder ${folder} and ${folderAsPackage}`);
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vY2xpL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRSxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRTdDLGtDQUFrQztBQUNsQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUM7QUFDbEIsSUFBSyxJQUFZLENBQUMsT0FBTyxFQUFFO0lBQ3pCLE1BQU0sR0FBSSxJQUFZLENBQUMsT0FBTyxDQUFDO0NBQ2hDO0FBRUQsS0FBSyxVQUFVLEdBQUc7SUFDaEIsSUFBSSxTQUErQixDQUFDO0lBQ3BDLElBQUksU0FBaUQsQ0FBQztJQUV0RCxJQUFJLE9BQVksQ0FBQztJQUVqQixNQUFNO1NBQ0gsV0FBVyxDQUFDLGVBQWUsQ0FBQztTQUM1QixNQUFNLENBQUMsV0FBVyxFQUFFLGdCQUFnQixDQUFDO1NBQ3JDLE1BQU0sQ0FDTCx5QkFBeUIsRUFDekIsK0VBQStFLENBQ2hGO1NBQ0EsTUFBTSxDQUNMLHVCQUF1QixFQUN2Qix5RUFBeUUsQ0FDMUU7U0FDQSxNQUFNLENBQUMsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztTQUMxRCxNQUFNLENBQ0wsWUFBWSxFQUNaLHlFQUF5RSxFQUN6RSxNQUFNLENBQUMsR0FBRyxF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S0FBSyxDQUNiLGtDQUFrQyxNQUFNLFFBQVEsZUFBZSxFQUFFLENBQ2xFLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxpQkFBaUI7SUFDeEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3BELElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN6QixPQUFPLE1BQU0sQ0FBQztLQUNmO0lBRUQsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRWhFLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsRUFBRTtRQUNsQyxPQUFPLGVBQWUsQ0FBQztLQUN4QjtJQUVELE1BQU0sSUFBSSxLQUFLLENBQ2IseUNBQXlDLE1BQU0sUUFBUSxlQUFlLEVBQUUsQ0FDekUsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBodHRwIGZyb20gJ2h0dHAnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0ICogYXMgcHJvZ2FtIGZyb20gJ2NhcG9yYWwnO1xuaW1wb3J0ICogYXMgb3BlbiBmcm9tICdvcGVuJztcbmltcG9ydCB7IGdldFNpZ25lZFdlYlNvY2tldFVybCB9IGZyb20gJy4uL2NvbW1vbi9nZXRXZWJTb2NrZXRVcmwnO1xuXG5jb25zdCByZWFkRmlsZUFzeW5jID0gcHJvbWlzaWZ5KGZzLnJlYWRGaWxlKTtcblxuLy9yZXNvbHZlIGlzc3VlIHdpdGggbW9kdWxlIGltcG9ydFxubGV0IG9wZW5lciA9IG9wZW47XG5pZiAoKG9wZW4gYXMgYW55KS5kZWZhdWx0KSB7XG4gIG9wZW5lciA9IChvcGVuIGFzIGFueSkuZGVmYXVsdDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuKCkge1xuICBsZXQgc3RhY2tMaXN0OiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgbGV0IGNka091dHB1dDogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj47XG5cbiAgbGV0IG9wdGlvbnM6IGFueTtcblxuICBwcm9nYW1cbiAgICAuZGVzY3JpcHRpb24oJ1NlcnZlcmxlc3NTcHknKVxuICAgIC5vcHRpb24oJy0td3MgPHdzPicsICdXZWJzb2NrZXQgbGluaycpXG4gICAgLm9wdGlvbihcbiAgICAgICctLWNka291dHB1dCA8Y2Rrb3V0cHV0PicsXG4gICAgICAnQ0RLIG91dHB1dCBmaWxlIHRoYXQgY29udGFpbnMgV2Vic29ja2V0IGxpbmsgaW4gYSBwcm9wZXJ0eSBTZXJ2ZXJsZXNzU3B5V3NVcmwnXG4gICAgKVxuICAgIC5vcHRpb24oXG4gICAgICAnLS1jZGtzdGFjayA8Y2Rrc3RhY2s+JyxcbiAgICAgICdDREsgc3RhY2sgaW4gY2RrIG91dHB1dCBmaWxlLiBJZiBub3Qgc3BlY2lmaWVkIHRoZSBmaXJzdCBvbmUgaXMgcGlja2VkLidcbiAgICApXG4gICAgLm9wdGlvbignLS1vcGVuIDxvcGVuPicsICdPcGVuIGJyb3dzZXInLCBwcm9nYW0uQk9PTCwgdHJ1ZSlcbiAgICAub3B0aW9uKFxuICAgICAgJy0tcG9ydCA8cD4nLFxuICAgICAgYENESyBzdGFjayBpbiBjZGsgb3V0cHV0IGZpbGUuIElmIG5vdCBzcGVjaWZpZWQgdGhlIGZpcnN0IG9uZSBpcyBwaWNrZWQuYCxcbiAgICAgIHByb2dhbS5JTlQsXG4gICAgICAnMzQ1NidcbiAgICApXG4gICAgLmFjdGlvbigoX2FyZ3MsIG9wdCwgX2xvZ2dlcikgPT4ge1xuICAgICAgb3B0aW9ucyA9IG9wdDtcbiAgICB9KTtcblxuICBwcm9nYW0ucGFyc2UocHJvY2Vzcy5hcmd2KTtcblxuICBpZiAoIW9wdGlvbnMud3MgJiYgIW9wdGlvbnMuY2Rrb3V0cHV0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCctLXdzIG9yIC0tY2Rrc3RhY2sgcGFyYW1ldGVyIG5vdCBzcGVjaWZpZWQnKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmNka291dHB1dCkge1xuICAgIGNvbnN0IHJhd2RhdGEgPSBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKF9fZGlybmFtZSwgb3B0aW9ucy5jZGtvdXRwdXQpKTtcbiAgICBjZGtPdXRwdXQgPSBKU09OLnBhcnNlKHJhd2RhdGEudG9TdHJpbmcoKSk7XG4gICAgc3RhY2tMaXN0ID0gT2JqZWN0LmtleXMoY2RrT3V0cHV0KTtcbiAgfVxuXG4gIGh0dHBcbiAgICAuY3JlYXRlU2VydmVyKChyZXF1ZXN0LCByZXNwb25zZSkgPT4ge1xuICAgICAgdm9pZCAoYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vY29uc29sZS5sb2coJ3JlcXVlc3QgJywgcmVxdWVzdC51cmwpO1xuICAgICAgICAgIGxldCBmaWxlUGF0aDogc3RyaW5nID0gYC4ke3JlcXVlc3QudXJsfWA7XG4gICAgICAgICAgLy9yZW1vdmUgcXVlcnkgcGFyYW1ldGVyc1xuICAgICAgICAgIGZpbGVQYXRoID0gZmlsZVBhdGguc3BsaXQoJz8nKVswXTtcbiAgICAgICAgICBsZXQgcm9vdEZvbGRlciA9IF9fZGlybmFtZTtcblxuICAgICAgICAgIGlmIChyZXF1ZXN0LnVybD8uc3RhcnRzV2l0aCgnL3dlYlNlcnZlcmxlc3NTcHkuanMnKSkge1xuICAgICAgICAgICAgLy9nZXQgdHJhbnNwaWxlZCBUUyB0byBKUyBmaWxlc1xuICAgICAgICAgICAgcm9vdEZvbGRlciA9IGdldENvbXBpbGVkSnNQYXRoKCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0LnVybD8uc3RhcnRzV2l0aCgnL2Jvb3RzdHJhcC8nKSkge1xuICAgICAgICAgICAgZmlsZVBhdGggPSBmaWxlUGF0aC5zdWJzdHJpbmcoJy9ib290c3RyYXAvJy5sZW5ndGgpO1xuICAgICAgICAgICAgY29uc3QgYm9vdHN0cmFwRm9sZGVyID0gYXdhaXQgZ2V0TnBtTW9kdWxlSW5zdGFsbGVkUGF0aChcbiAgICAgICAgICAgICAgJ2Jvb3RzdHJhcCdcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJvb3RGb2xkZXIgPSBib290c3RyYXBGb2xkZXI7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0LnVybD8uc3RhcnRzV2l0aCgnL2Jvb3RzdHJhcC1pY29ucy8nKSkge1xuICAgICAgICAgICAgZmlsZVBhdGggPSBmaWxlUGF0aC5zdWJzdHJpbmcoJy9ib290c3RyYXAtaWNvbnMvJy5sZW5ndGgpO1xuICAgICAgICAgICAgY29uc3QgYm9vdHN0cmFwRm9sZGVyID0gYXdhaXQgZ2V0TnBtTW9kdWxlSW5zdGFsbGVkUGF0aChcbiAgICAgICAgICAgICAgJ2Jvb3RzdHJhcC1pY29ucydcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJvb3RGb2xkZXIgPSBib290c3RyYXBGb2xkZXI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmaWxlUGF0aCA9PT0gJy4vJykge1xuICAgICAgICAgICAgICBmaWxlUGF0aCA9ICcuL2luZGV4Lmh0bWwnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGZpbGVQYXRoID0gcGF0aC5qb2luKHJvb3RGb2xkZXIsIGZpbGVQYXRoKTtcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKGAke3JlcXVlc3QudXJsfSAtLT4gJHtmaWxlUGF0aH1gKTtcblxuICAgICAgICAgIGNvbnN0IGV4dG5hbWUgPSBTdHJpbmcocGF0aC5leHRuYW1lKGZpbGVQYXRoKSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICBjb25zdCBtaW1lVHlwZXM6IGFueSA9IHtcbiAgICAgICAgICAgICcuaHRtbCc6ICd0ZXh0L2h0bWwnLFxuICAgICAgICAgICAgJy5qcyc6ICd0ZXh0L2phdmFzY3JpcHQnLFxuICAgICAgICAgICAgJy5jc3MnOiAndGV4dC9jc3MnLFxuICAgICAgICAgICAgJy5qc29uJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgJy5wbmcnOiAnaW1hZ2UvcG5nJyxcbiAgICAgICAgICAgICcuanBnJzogJ2ltYWdlL2pwZycsXG4gICAgICAgICAgICAnLmdpZic6ICdpbWFnZS9naWYnLFxuICAgICAgICAgICAgJy5zdmcnOiAnaW1hZ2Uvc3ZnK3htbCcsXG4gICAgICAgICAgICAnLndhdic6ICdhdWRpby93YXYnLFxuICAgICAgICAgICAgJy5tcDQnOiAndmlkZW8vbXA0JyxcbiAgICAgICAgICAgICcud29mZic6ICdhcHBsaWNhdGlvbi9mb250LXdvZmYnLFxuICAgICAgICAgICAgJy50dGYnOiAnYXBwbGljYXRpb24vZm9udC10dGYnLFxuICAgICAgICAgICAgJy5lb3QnOiAnYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3QnLFxuICAgICAgICAgICAgJy5vdGYnOiAnYXBwbGljYXRpb24vZm9udC1vdGYnLFxuICAgICAgICAgICAgJy53YXNtJzogJ2FwcGxpY2F0aW9uL3dhc20nLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IG1pbWVUeXBlc1tleHRuYW1lXSB8fCAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcblxuICAgICAgICAgIGlmIChyZXF1ZXN0LnVybCA9PT0gJy9zdGFja0xpc3QnKSB7XG4gICAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoMjAwLCB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSk7XG4gICAgICAgICAgICByZXNwb25zZS5lbmQoSlNPTi5zdHJpbmdpZnkoc3RhY2tMaXN0KSwgJ3V0Zi04Jyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0LnVybD8ubWF0Y2goJ14vd3NVcmwnKSkge1xuICAgICAgICAgICAgbGV0IHdzVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy53cykge1xuICAgICAgICAgICAgICB3c1VybCA9IG9wdGlvbnMud3M7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBvcHRpb25zLmNka291dHB1dFxuICAgICAgICAgICAgICBjb25zdCB1cmxQYXRocyA9IHJlcXVlc3QudXJsLnNwbGl0KCcvJyk7XG4gICAgICAgICAgICAgIGxldCBzdGFjayA9IHVybFBhdGhzWzJdO1xuXG4gICAgICAgICAgICAgIGlmICghc3RhY2spIHtcbiAgICAgICAgICAgICAgICBzdGFjayA9IG9wdGlvbnMuY2Rrc3RhY2s7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoc3RhY2spIHtcbiAgICAgICAgICAgICAgICB3c1VybCA9IGNka091dHB1dFtzdGFja10uU2VydmVybGVzc1NweVdzVXJsO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChjZGtPdXRwdXQgJiYgY2RrT3V0cHV0W09iamVjdC5rZXlzKGNka091dHB1dClbMF1dKSB7XG4gICAgICAgICAgICAgICAgICB3c1VybCA9XG4gICAgICAgICAgICAgICAgICAgIGNka091dHB1dFtPYmplY3Qua2V5cyhjZGtPdXRwdXQpWzBdXS5TZXJ2ZXJsZXNzU3B5V3NVcmw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghd3NVcmwpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHdlYnNvY2tldCB1cmwnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhgV1MgVVJMOiAke3dzVXJsfWApO1xuICAgICAgICAgICAgY29uc3Qgc2lnbmVkV1NVcmwgPSBhd2FpdCBnZXRTaWduZWRXZWJTb2NrZXRVcmwod3NVcmwpO1xuICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDIwMCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvaHRtbCcgfSk7XG4gICAgICAgICAgICByZXNwb25zZS5lbmQoc2lnbmVkV1NVcmwsICd1dGYtOCcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZEZpbGVBc3luYyhmaWxlUGF0aCk7XG5cbiAgICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDIwMCwgeyAnQ29udGVudC1UeXBlJzogY29udGVudFR5cGUgfSk7XG4gICAgICAgICAgICAgIHJlc3BvbnNlLmVuZChjb250ZW50LCAndXRmLTgnKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgICAgaWYgKGVycm9yLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDQwNCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvaHRtbCcgfSk7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuZW5kKFxuICAgICAgICAgICAgICAgICAgYE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgJHtyZXF1ZXN0LnVybH1gLFxuICAgICAgICAgICAgICAgICAgJ3V0Zi04J1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDUwMCk7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuZW5kKGBFcnJvcjogJHtlcnJvci5jb2RlfSAuLlxcbmApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICAgIHJlc3BvbnNlLndyaXRlSGVhZCg1MDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L2h0bWwnIH0pO1xuICAgICAgICAgIHJlc3BvbnNlLmVuZChlcnIubWVzc2FnZSwgJ3V0Zi04Jyk7XG4gICAgICAgIH1cbiAgICAgIH0pKCk7XG4gICAgfSlcbiAgICAubGlzdGVuKG9wdGlvbnMucG9ydCk7XG5cbiAgY29uc29sZS5sb2coXG4gICAgYFNlcnZlcmxlc3NTb3kgY29uc29sZSBydW5pbmcgYXQgaHR0cDovL2xvY2FsaG9zdDoke29wdGlvbnMucG9ydH1gXG4gICk7XG4gIGlmIChvcHRpb25zLm9wZW4pIHtcbiAgICBhd2FpdCBvcGVuZXIoYGh0dHA6Ly9sb2NhbGhvc3Q6JHtvcHRpb25zLnBvcnR9YCk7XG4gIH1cbn1cblxucnVuKCkuY2F0Y2goY29uc29sZS5lcnJvcik7XG5cbmZ1bmN0aW9uIGdldE5wbU1vZHVsZUluc3RhbGxlZFBhdGgobnBtOiBzdHJpbmcpIHtcbiAgbGV0IGZvbGRlciA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8nLCAnbm9kZV9tb2R1bGVzJywgbnBtKTtcbiAgaWYgKGZzLmV4aXN0c1N5bmMoZm9sZGVyKSkge1xuICAgIHJldHVybiBmb2xkZXI7XG4gIH1cblxuICBsZXQgZm9sZGVyQXNQYWNrYWdlID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLy4uLycsICdub2RlX21vZHVsZXMnLCBucG0pO1xuXG4gIGlmIChmcy5leGlzdHNTeW5jKGZvbGRlckFzUGFja2FnZSkpIHtcbiAgICByZXR1cm4gZm9sZGVyQXNQYWNrYWdlO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBDYW4gbm90IGZpbmQgcGFja2FnZSBpbiBmb2xkZXIgJHtmb2xkZXJ9IGFuZCAke2ZvbGRlckFzUGFja2FnZX1gXG4gICk7XG59XG5cbmZ1bmN0aW9uIGdldENvbXBpbGVkSnNQYXRoKCkge1xuICBsZXQgZm9sZGVyID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLycsICdsaWIvY2xpJyk7XG4gIGlmIChmcy5leGlzdHNTeW5jKGZvbGRlcikpIHtcbiAgICByZXR1cm4gZm9sZGVyO1xuICB9XG5cbiAgbGV0IGZvbGRlckFzUGFja2FnZSA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi8nLCAnbGliL2NsaScpO1xuXG4gIGlmIChmcy5leGlzdHNTeW5jKGZvbGRlckFzUGFja2FnZSkpIHtcbiAgICByZXR1cm4gZm9sZGVyQXNQYWNrYWdlO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBDYW4gbm90IGZpbmQgY29tcGlsZWQgZmlsZXMgaW4gZm9sZGVyICR7Zm9sZGVyfSBhbmQgJHtmb2xkZXJBc1BhY2thZ2V9YFxuICApO1xufVxuIl19
|
package/lib/cli/cli.ts
CHANGED
|
@@ -1,14 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
1
2
|
import * as fs from 'fs';
|
|
2
3
|
import * as http from 'http';
|
|
3
4
|
import * as path from 'path';
|
|
4
5
|
import { promisify } from 'util';
|
|
5
6
|
import * as progam from 'caporal';
|
|
6
|
-
import
|
|
7
|
-
import open from 'open';
|
|
7
|
+
import * as open from 'open';
|
|
8
8
|
import { getSignedWebSocketUrl } from '../common/getWebSocketUrl';
|
|
9
9
|
|
|
10
10
|
const readFileAsync = promisify(fs.readFile);
|
|
11
11
|
|
|
12
|
+
//resolve issue with module import
|
|
13
|
+
let opener = open;
|
|
14
|
+
if ((open as any).default) {
|
|
15
|
+
opener = (open as any).default;
|
|
16
|
+
}
|
|
17
|
+
|
|
12
18
|
async function run() {
|
|
13
19
|
let stackList: string[] | undefined;
|
|
14
20
|
let cdkOutput: Record<string, Record<string, string>>;
|
|
@@ -26,11 +32,11 @@ async function run() {
|
|
|
26
32
|
'--cdkstack <cdkstack>',
|
|
27
33
|
'CDK stack in cdk output file. If not specified the first one is picked.'
|
|
28
34
|
)
|
|
29
|
-
.option('--open', 'Open browser',
|
|
35
|
+
.option('--open <open>', 'Open browser', progam.BOOL, true)
|
|
30
36
|
.option(
|
|
31
37
|
'--port <p>',
|
|
32
38
|
`CDK stack in cdk output file. If not specified the first one is picked.`,
|
|
33
|
-
|
|
39
|
+
progam.INT,
|
|
34
40
|
'3456'
|
|
35
41
|
)
|
|
36
42
|
.action((_args, opt, _logger) => {
|
|
@@ -61,19 +67,19 @@ async function run() {
|
|
|
61
67
|
|
|
62
68
|
if (request.url?.startsWith('/webServerlessSpy.js')) {
|
|
63
69
|
//get transpiled TS to JS files
|
|
64
|
-
rootFolder =
|
|
70
|
+
rootFolder = getCompiledJsPath();
|
|
65
71
|
} else if (request.url?.startsWith('/bootstrap/')) {
|
|
66
72
|
filePath = filePath.substring('/bootstrap/'.length);
|
|
67
|
-
const bootstrapFolder = await
|
|
68
|
-
|
|
69
|
-
|
|
73
|
+
const bootstrapFolder = await getNpmModuleInstalledPath(
|
|
74
|
+
'bootstrap'
|
|
75
|
+
);
|
|
70
76
|
|
|
71
77
|
rootFolder = bootstrapFolder;
|
|
72
78
|
} else if (request.url?.startsWith('/bootstrap-icons/')) {
|
|
73
79
|
filePath = filePath.substring('/bootstrap-icons/'.length);
|
|
74
|
-
const bootstrapFolder = await
|
|
75
|
-
|
|
76
|
-
|
|
80
|
+
const bootstrapFolder = await getNpmModuleInstalledPath(
|
|
81
|
+
'bootstrap-icons'
|
|
82
|
+
);
|
|
77
83
|
|
|
78
84
|
rootFolder = bootstrapFolder;
|
|
79
85
|
} else {
|
|
@@ -170,7 +176,43 @@ async function run() {
|
|
|
170
176
|
console.log(
|
|
171
177
|
`ServerlessSoy console runing at http://localhost:${options.port}`
|
|
172
178
|
);
|
|
173
|
-
|
|
179
|
+
if (options.open) {
|
|
180
|
+
await opener(`http://localhost:${options.port}`);
|
|
181
|
+
}
|
|
174
182
|
}
|
|
175
183
|
|
|
176
184
|
run().catch(console.error);
|
|
185
|
+
|
|
186
|
+
function getNpmModuleInstalledPath(npm: string) {
|
|
187
|
+
let folder = path.join(__dirname, '../', 'node_modules', npm);
|
|
188
|
+
if (fs.existsSync(folder)) {
|
|
189
|
+
return folder;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
let folderAsPackage = path.join(__dirname, '../../', 'node_modules', npm);
|
|
193
|
+
|
|
194
|
+
if (fs.existsSync(folderAsPackage)) {
|
|
195
|
+
return folderAsPackage;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
throw new Error(
|
|
199
|
+
`Can not find package in folder ${folder} and ${folderAsPackage}`
|
|
200
|
+
);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
function getCompiledJsPath() {
|
|
204
|
+
let folder = path.join(__dirname, '../', 'lib/cli');
|
|
205
|
+
if (fs.existsSync(folder)) {
|
|
206
|
+
return folder;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
let folderAsPackage = path.join(__dirname, '../../', 'lib/cli');
|
|
210
|
+
|
|
211
|
+
if (fs.existsSync(folderAsPackage)) {
|
|
212
|
+
return folderAsPackage;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
throw new Error(
|
|
216
|
+
`Can not find compiled files in folder ${folder} and ${folderAsPackage}`
|
|
217
|
+
);
|
|
218
|
+
}
|
package/lib/cli/package.json
CHANGED
|
@@ -13,11 +13,8 @@
|
|
|
13
13
|
"bootstrap": "^5.2.1",
|
|
14
14
|
"bootstrap-icons": "^1.9.1",
|
|
15
15
|
"caporal": "^1.4.0",
|
|
16
|
-
"get-installed-path": "^4.0.8",
|
|
17
16
|
"json-format-highlight": "^1.0.4",
|
|
18
17
|
"open": "^8.4.0"
|
|
19
18
|
},
|
|
20
|
-
"devDependencies": {
|
|
21
|
-
"@types/get-installed-path": "^4.0.1"
|
|
22
|
-
}
|
|
19
|
+
"devDependencies": {}
|
|
23
20
|
}
|