serverless-spy 0.0.41 → 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.
Files changed (63) hide show
  1. package/.jsii +2 -3
  2. package/cli/cli.ts +53 -12
  3. package/cli/package.json +1 -4
  4. package/dist/releasetag.txt +1 -1
  5. package/lib/cli/cli.js +37 -13
  6. package/lib/cli/cli.mjs +37 -13
  7. package/lib/cli/cli.ts +53 -12
  8. package/lib/cli/package.json +1 -4
  9. package/lib/src/ServerlessSpy.js +1 -1
  10. package/package.json +1 -3
  11. package/node_modules/expand-tilde/LICENSE +0 -21
  12. package/node_modules/expand-tilde/README.md +0 -80
  13. package/node_modules/expand-tilde/index.js +0 -22
  14. package/node_modules/expand-tilde/package.json +0 -67
  15. package/node_modules/get-installed-path/CHANGELOG.md +0 -99
  16. package/node_modules/get-installed-path/LICENSE +0 -21
  17. package/node_modules/get-installed-path/README.md +0 -282
  18. package/node_modules/get-installed-path/dist/index.es.js +0 -181
  19. package/node_modules/get-installed-path/dist/index.js +0 -188
  20. package/node_modules/get-installed-path/package.json +0 -101
  21. package/node_modules/global-modules/LICENSE +0 -21
  22. package/node_modules/global-modules/README.md +0 -75
  23. package/node_modules/global-modules/index.js +0 -31
  24. package/node_modules/global-modules/package.json +0 -72
  25. package/node_modules/global-prefix/LICENSE +0 -21
  26. package/node_modules/global-prefix/README.md +0 -78
  27. package/node_modules/global-prefix/index.js +0 -96
  28. package/node_modules/global-prefix/node_modules/which/CHANGELOG.md +0 -152
  29. package/node_modules/global-prefix/node_modules/which/LICENSE +0 -15
  30. package/node_modules/global-prefix/node_modules/which/README.md +0 -51
  31. package/node_modules/global-prefix/node_modules/which/bin/which +0 -52
  32. package/node_modules/global-prefix/node_modules/which/package.json +0 -30
  33. package/node_modules/global-prefix/node_modules/which/which.js +0 -135
  34. package/node_modules/global-prefix/package.json +0 -75
  35. package/node_modules/homedir-polyfill/LICENSE +0 -21
  36. package/node_modules/homedir-polyfill/README.md +0 -96
  37. package/node_modules/homedir-polyfill/index.js +0 -9
  38. package/node_modules/homedir-polyfill/package.json +0 -62
  39. package/node_modules/homedir-polyfill/polyfill.js +0 -81
  40. package/node_modules/ini/LICENSE +0 -15
  41. package/node_modules/ini/README.md +0 -102
  42. package/node_modules/ini/ini.js +0 -206
  43. package/node_modules/ini/package.json +0 -33
  44. package/node_modules/is-windows/LICENSE +0 -21
  45. package/node_modules/is-windows/README.md +0 -95
  46. package/node_modules/is-windows/index.js +0 -27
  47. package/node_modules/is-windows/package.json +0 -71
  48. package/node_modules/isexe/.npmignore +0 -2
  49. package/node_modules/isexe/LICENSE +0 -15
  50. package/node_modules/isexe/README.md +0 -51
  51. package/node_modules/isexe/index.js +0 -57
  52. package/node_modules/isexe/mode.js +0 -41
  53. package/node_modules/isexe/package.json +0 -31
  54. package/node_modules/isexe/test/basic.js +0 -221
  55. package/node_modules/isexe/windows.js +0 -42
  56. package/node_modules/parse-passwd/LICENSE +0 -21
  57. package/node_modules/parse-passwd/README.md +0 -86
  58. package/node_modules/parse-passwd/index.js +0 -56
  59. package/node_modules/parse-passwd/package.json +0 -55
  60. package/node_modules/resolve-dir/LICENSE +0 -21
  61. package/node_modules/resolve-dir/README.md +0 -88
  62. package/node_modules/resolve-dir/index.js +0 -22
  63. package/node_modules/resolve-dir/package.json +0 -73
package/.jsii CHANGED
@@ -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.41",
3549
- "fingerprint": "wh3hDZxLnMPucWcE7bbnpIypScqSqpWWGbk9BTYjF5Q="
3547
+ "version": "0.0.42",
3548
+ "fingerprint": "FkpLMmbunFaFfMfPx/u3+Ga3z7yogdXMmPX+LAo0Dtw="
3550
3549
  }
package/cli/cli.ts CHANGED
@@ -4,12 +4,17 @@ import * as http from 'http';
4
4
  import * as path from 'path';
5
5
  import { promisify } from 'util';
6
6
  import * as progam from 'caporal';
7
- import { getInstalledPath } from 'get-installed-path';
8
- import open from 'open';
7
+ import * as open from 'open';
9
8
  import { getSignedWebSocketUrl } from '../common/getWebSocketUrl';
10
9
 
11
10
  const readFileAsync = promisify(fs.readFile);
12
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
+
13
18
  async function run() {
14
19
  let stackList: string[] | undefined;
15
20
  let cdkOutput: Record<string, Record<string, string>>;
@@ -27,11 +32,11 @@ async function run() {
27
32
  '--cdkstack <cdkstack>',
28
33
  'CDK stack in cdk output file. If not specified the first one is picked.'
29
34
  )
30
- .option('--open', 'Open browser', undefined, true)
35
+ .option('--open <open>', 'Open browser', progam.BOOL, true)
31
36
  .option(
32
37
  '--port <p>',
33
38
  `CDK stack in cdk output file. If not specified the first one is picked.`,
34
- undefined,
39
+ progam.INT,
35
40
  '3456'
36
41
  )
37
42
  .action((_args, opt, _logger) => {
@@ -62,19 +67,19 @@ async function run() {
62
67
 
63
68
  if (request.url?.startsWith('/webServerlessSpy.js')) {
64
69
  //get transpiled TS to JS files
65
- rootFolder = path.join(__dirname, `../lib/cli`);
70
+ rootFolder = getCompiledJsPath();
66
71
  } else if (request.url?.startsWith('/bootstrap/')) {
67
72
  filePath = filePath.substring('/bootstrap/'.length);
68
- const bootstrapFolder = await getInstalledPath('bootstrap', {
69
- local: true,
70
- });
73
+ const bootstrapFolder = await getNpmModuleInstalledPath(
74
+ 'bootstrap'
75
+ );
71
76
 
72
77
  rootFolder = bootstrapFolder;
73
78
  } else if (request.url?.startsWith('/bootstrap-icons/')) {
74
79
  filePath = filePath.substring('/bootstrap-icons/'.length);
75
- const bootstrapFolder = await getInstalledPath('bootstrap-icons', {
76
- local: true,
77
- });
80
+ const bootstrapFolder = await getNpmModuleInstalledPath(
81
+ 'bootstrap-icons'
82
+ );
78
83
 
79
84
  rootFolder = bootstrapFolder;
80
85
  } else {
@@ -171,7 +176,43 @@ async function run() {
171
176
  console.log(
172
177
  `ServerlessSoy console runing at http://localhost:${options.port}`
173
178
  );
174
- await open(`http://localhost:${options.port}`);
179
+ if (options.open) {
180
+ await opener(`http://localhost:${options.port}`);
181
+ }
175
182
  }
176
183
 
177
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
  }
@@ -1 +1 @@
1
- v0.0.41
1
+ v0.0.42
package/lib/cli/cli.js CHANGED
@@ -6,10 +6,14 @@ const http = require("http");
6
6
  const path = require("path");
7
7
  const util_1 = require("util");
8
8
  const progam = require("caporal");
9
- const get_installed_path_1 = require("get-installed-path");
10
- const open_1 = require("open");
9
+ const open = require("open");
11
10
  const getWebSocketUrl_1 = require("../common/getWebSocketUrl");
12
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
+ }
13
17
  async function run() {
14
18
  let stackList;
15
19
  let cdkOutput;
@@ -19,8 +23,8 @@ async function run() {
19
23
  .option('--ws <ws>', 'Websocket link')
20
24
  .option('--cdkoutput <cdkoutput>', 'CDK output file that contains Websocket link in a property ServerlessSpyWsUrl')
21
25
  .option('--cdkstack <cdkstack>', 'CDK stack in cdk output file. If not specified the first one is picked.')
22
- .option('--open', 'Open browser', undefined, true)
23
- .option('--port <p>', `CDK stack in cdk output file. If not specified the first one is picked.`, undefined, '3456')
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')
24
28
  .action((_args, opt, _logger) => {
25
29
  options = opt;
26
30
  });
@@ -44,20 +48,16 @@ async function run() {
44
48
  let rootFolder = __dirname;
45
49
  if (request.url?.startsWith('/webServerlessSpy.js')) {
46
50
  //get transpiled TS to JS files
47
- rootFolder = path.join(__dirname, `../lib/cli`);
51
+ rootFolder = getCompiledJsPath();
48
52
  }
49
53
  else if (request.url?.startsWith('/bootstrap/')) {
50
54
  filePath = filePath.substring('/bootstrap/'.length);
51
- const bootstrapFolder = await (0, get_installed_path_1.getInstalledPath)('bootstrap', {
52
- local: true,
53
- });
55
+ const bootstrapFolder = await getNpmModuleInstalledPath('bootstrap');
54
56
  rootFolder = bootstrapFolder;
55
57
  }
56
58
  else if (request.url?.startsWith('/bootstrap-icons/')) {
57
59
  filePath = filePath.substring('/bootstrap-icons/'.length);
58
- const bootstrapFolder = await (0, get_installed_path_1.getInstalledPath)('bootstrap-icons', {
59
- local: true,
60
- });
60
+ const bootstrapFolder = await getNpmModuleInstalledPath('bootstrap-icons');
61
61
  rootFolder = bootstrapFolder;
62
62
  }
63
63
  else {
@@ -146,7 +146,31 @@ async function run() {
146
146
  })
147
147
  .listen(options.port);
148
148
  console.log(`ServerlessSoy console runing at http://localhost:${options.port}`);
149
- await (0, open_1.default)(`http://localhost:${options.port}`);
149
+ if (options.open) {
150
+ await opener(`http://localhost:${options.port}`);
151
+ }
150
152
  }
151
153
  run().catch(console.error);
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vY2xpL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLDZCQUE2QjtBQUM3QiwrQkFBaUM7QUFDakMsa0NBQWtDO0FBQ2xDLDJEQUFzRDtBQUN0RCwrQkFBd0I7QUFDeEIsK0RBQWtFO0FBRWxFLE1BQU0sYUFBYSxHQUFHLElBQUEsZ0JBQVMsRUFBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFN0MsS0FBSyxVQUFVLEdBQUc7SUFDaEIsSUFBSSxTQUErQixDQUFDO0lBQ3BDLElBQUksU0FBaUQsQ0FBQztJQUV0RCxJQUFJLE9BQVksQ0FBQztJQUVqQixNQUFNO1NBQ0gsV0FBVyxDQUFDLGVBQWUsQ0FBQztTQUM1QixNQUFNLENBQUMsV0FBVyxFQUFFLGdCQUFnQixDQUFDO1NBQ3JDLE1BQU0sQ0FDTCx5QkFBeUIsRUFDekIsK0VBQStFLENBQ2hGO1NBQ0EsTUFBTSxDQUNMLHVCQUF1QixFQUN2Qix5RUFBeUUsQ0FDMUU7U0FDQSxNQUFNLENBQUMsUUFBUSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDO1NBQ2pELE1BQU0sQ0FDTCxZQUFZLEVBQ1oseUVBQXlFLEVBQ3pFLFNBQVMsRUFDVCxNQUFNLENBQ1A7U0FDQSxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQzlCLE9BQU8sR0FBRyxHQUFHLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFFTCxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUUzQixJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7UUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0tBQy9EO0lBRUQsSUFBSSxPQUFP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QUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDcEM7UUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1AsQ0FBQyxDQUFDO1NBQ0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV4QixPQUFPLENBQUMsR0FBRyxDQUNULG9EQUFvRCxPQUFPLENBQUMsSUFBSSxFQUFFLENBQ25FLENBQUM7SUFDRixNQUFNLElBQUEsY0FBSSxFQUFDLG9CQUFvQixPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSAndXRpbCc7XG5pbXBvcnQgKiBhcyBwcm9nYW0gZnJvbSAnY2Fwb3JhbCc7XG5pbXBvcnQgeyBnZXRJbnN0YWxsZWRQYXRoIH0gZnJvbSAnZ2V0LWluc3RhbGxlZC1wYXRoJztcbmltcG9ydCBvcGVuIGZyb20gJ29wZW4nO1xuaW1wb3J0IHsgZ2V0U2lnbmVkV2ViU29ja2V0VXJsIH0gZnJvbSAnLi4vY29tbW9uL2dldFdlYlNvY2tldFVybCc7XG5cbmNvbnN0IHJlYWRGaWxlQXN5bmMgPSBwcm9taXNpZnkoZnMucmVhZEZpbGUpO1xuXG5hc3luYyBmdW5jdGlvbiBydW4oKSB7XG4gIGxldCBzdGFja0xpc3Q6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICBsZXQgY2RrT3V0cHV0OiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PjtcblxuICBsZXQgb3B0aW9uczogYW55O1xuXG4gIHByb2dhbVxuICAgIC5kZXNjcmlwdGlvbignU2VydmVybGVzc1NweScpXG4gICAgLm9wdGlvbignLS13cyA8d3M+JywgJ1dlYnNvY2tldCBsaW5rJylcbiAgICAub3B0aW9uKFxuICAgICAgJy0tY2Rrb3V0cHV0IDxjZGtvdXRwdXQ+JyxcbiAgICAgICdDREsgb3V0cHV0IGZpbGUgdGhhdCBjb250YWlucyBXZWJzb2NrZXQgbGluayBpbiBhIHByb3BlcnR5IFNlcnZlcmxlc3NTcHlXc1VybCdcbiAgICApXG4gICAgLm9wdGlvbihcbiAgICAgICctLWNka3N0YWNrIDxjZGtzdGFjaz4nLFxuICAgICAgJ0NESyBzdGFjayBpbiBjZGsgb3V0cHV0IGZpbGUuIElmIG5vdCBzcGVjaWZpZWQgdGhlIGZpcnN0IG9uZSBpcyBwaWNrZWQuJ1xuICAgIClcbiAgICAub3B0aW9uKCctLW9wZW4nLCAnT3BlbiBicm93c2VyJywgdW5kZWZpbmVkLCB0cnVlKVxuICAgIC5vcHRpb24oXG4gICAgICAnLS1wb3J0IDxwPicsXG4gICAgICBgQ0RLIHN0YWNrIGluIGNkayBvdXRwdXQgZmlsZS4gSWYgbm90IHNwZWNpZmllZCB0aGUgZmlyc3Qgb25lIGlzIHBpY2tlZC5gLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgJzM0NTYnXG4gICAgKVxuICAgIC5hY3Rpb24oKF9hcmdzLCBvcHQsIF9sb2dnZXIpID0+IHtcbiAgICAgIG9wdGlvbnMgPSBvcHQ7XG4gICAgfSk7XG5cbiAgcHJvZ2FtLnBhcnNlKHByb2Nlc3MuYXJndik7XG5cbiAgaWYgKCFvcHRpb25zLndzICYmICFvcHRpb25zLmNka291dHB1dCkge1xuICAgIHRocm93IG5ldyBFcnJvcignLS13cyBvciAtLWNka3N0YWNrIHBhcmFtZXRlciBub3Qgc3BlY2lmaWVkJyk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5jZGtvdXRwdXQpIHtcbiAgICBjb25zdCByYXdkYXRhID0gZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihfX2Rpcm5hbWUsIG9wdGlvbnMuY2Rrb3V0cHV0KSk7XG4gICAgY2RrT3V0cHV0ID0gSlNPTi5wYXJzZShyYXdkYXRhLnRvU3RyaW5nKCkpO1xuICAgIHN0YWNrTGlzdCA9IE9iamVjdC5rZXlzKGNka091dHB1dCk7XG4gIH1cblxuICBodHRwXG4gICAgLmNyZWF0ZVNlcnZlcigocmVxdWVzdCwgcmVzcG9uc2UpID0+IHtcbiAgICAgIHZvaWQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKCdyZXF1ZXN0ICcsIHJlcXVlc3QudXJsKTtcbiAgICAgICAgICBsZXQgZmlsZVBhdGg6IHN0cmluZyA9IGAuJHtyZXF1ZXN0LnVybH1gO1xuICAgICAgICAgIC8vcmVtb3ZlIHF1ZXJ5IHBhcmFtZXRlcnNcbiAgICAgICAgICBmaWxlUGF0aCA9IGZpbGVQYXRoLnNwbGl0KCc/JylbMF07XG4gICAgICAgICAgbGV0IHJvb3RGb2xkZXIgPSBfX2Rpcm5hbWU7XG5cbiAgICAgICAgICBpZiAocmVxdWVzdC51cmw/LnN0YXJ0c1dpdGgoJy93ZWJTZXJ2ZXJsZXNzU3B5LmpzJykpIHtcbiAgICAgICAgICAgIC8vZ2V0IHRyYW5zcGlsZWQgVFMgdG8gSlMgZmlsZXNcbiAgICAgICAgICAgIHJvb3RGb2xkZXIgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCBgLi4vbGliL2NsaWApO1xuICAgICAgICAgIH0gZWxzZSBpZiAocmVxdWVzdC51cmw/LnN0YXJ0c1dpdGgoJy9ib290c3RyYXAvJykpIHtcbiAgICAgICAgICAgIGZpbGVQYXRoID0gZmlsZVBhdGguc3Vic3RyaW5nKCcvYm9vdHN0cmFwLycubGVuZ3RoKTtcbiAgICAgICAgICAgIGNvbnN0IGJvb3RzdHJhcEZvbGRlciA9IGF3YWl0IGdldEluc3RhbGxlZFBhdGgoJ2Jvb3RzdHJhcCcsIHtcbiAgICAgICAgICAgICAgbG9jYWw6IHRydWUsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcm9vdEZvbGRlciA9IGJvb3RzdHJhcEZvbGRlcjtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcXVlc3QudXJsPy5zdGFydHNXaXRoKCcvYm9vdHN0cmFwLWljb25zLycpKSB7XG4gICAgICAgICAgICBmaWxlUGF0aCA9IGZpbGVQYXRoLnN1YnN0cmluZygnL2Jvb3RzdHJhcC1pY29ucy8nLmxlbmd0aCk7XG4gICAgICAgICAgICBjb25zdCBib290c3RyYXBGb2xkZXIgPSBhd2FpdCBnZXRJbnN0YWxsZWRQYXRoKCdib290c3RyYXAtaWNvbnMnLCB7XG4gICAgICAgICAgICAgIGxvY2FsOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJvb3RGb2xkZXIgPSBib290c3RyYXBGb2xkZXI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmaWxlUGF0aCA9PT0gJy4vJykge1xuICAgICAgICAgICAgICBmaWxlUGF0aCA9ICcuL2luZGV4Lmh0bWwnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGZpbGVQYXRoID0gcGF0aC5qb2luKHJvb3RGb2xkZXIsIGZpbGVQYXRoKTtcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKGAke3JlcXVlc3QudXJsfSAtLT4gJHtmaWxlUGF0aH1gKTtcblxuICAgICAgICAgIGNvbnN0IGV4dG5hbWUgPSBTdHJpbmcocGF0aC5leHRuYW1lKGZpbGVQYXRoKSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICBjb25zdCBtaW1lVHlwZXM6IGFueSA9IHtcbiAgICAgICAgICAgICcuaHRtbCc6ICd0ZXh0L2h0bWwnLFxuICAgICAgICAgICAgJy5qcyc6ICd0ZXh0L2phdmFzY3JpcHQnLFxuICAgICAgICAgICAgJy5jc3MnOiAndGV4dC9jc3MnLFxuICAgICAgICAgICAgJy5qc29uJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgJy5wbmcnOiAnaW1hZ2UvcG5nJyxcbiAgICAgICAgICAgICcuanBnJzogJ2ltYWdlL2pwZycsXG4gICAgICAgICAgICAnLmdpZic6ICdpbWFnZS9naWYnLFxuICAgICAgICAgICAgJy5zdmcnOiAnaW1hZ2Uvc3ZnK3htbCcsXG4gICAgICAgICAgICAnLndhdic6ICdhdWRpby93YXYnLFxuICAgICAgICAgICAgJy5tcDQnOiAndmlkZW8vbXA0JyxcbiAgICAgICAgICAgICcud29mZic6ICdhcHBsaWNhdGlvbi9mb250LXdvZmYnLFxuICAgICAgICAgICAgJy50dGYnOiAnYXBwbGljYXRpb24vZm9udC10dGYnLFxuICAgICAgICAgICAgJy5lb3QnOiAnYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3QnLFxuICAgICAgICAgICAgJy5vdGYnOiAnYXBwbGljYXRpb24vZm9udC1vdGYnLFxuICAgICAgICAgICAgJy53YXNtJzogJ2FwcGxpY2F0aW9uL3dhc20nLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IG1pbWVUeXBlc1tleHRuYW1lXSB8fCAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcblxuICAgICAgICAgIGlmIChyZXF1ZXN0LnVybCA9PT0gJy9zdGFja0xpc3QnKSB7XG4gICAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoMjAwLCB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSk7XG4gICAgICAgICAgICByZXNwb25zZS5lbmQoSlNPTi5zdHJpbmdpZnkoc3RhY2tMaXN0KSwgJ3V0Zi04Jyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0LnVybD8ubWF0Y2goJ14vd3NVcmwnKSkge1xuICAgICAgICAgICAgbGV0IHdzVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy53cykge1xuICAgICAgICAgICAgICB3c1VybCA9IG9wdGlvbnMud3M7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBvcHRpb25zLmNka291dHB1dFxuICAgICAgICAgICAgICBjb25zdCB1cmxQYXRocyA9IHJlcXVlc3QudXJsLnNwbGl0KCcvJyk7XG4gICAgICAgICAgICAgIGxldCBzdGFjayA9IHVybFBhdGhzWzJdO1xuXG4gICAgICAgICAgICAgIGlmICghc3RhY2spIHtcbiAgICAgICAgICAgICAgICBzdGFjayA9IG9wdGlvbnMuY2Rrc3RhY2s7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoc3RhY2spIHtcbiAgICAgICAgICAgICAgICB3c1VybCA9IGNka091dHB1dFtzdGFja10uU2VydmVybGVzc1NweVdzVXJsO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChjZGtPdXRwdXQgJiYgY2RrT3V0cHV0W09iamVjdC5rZXlzKGNka091dHB1dClbMF1dKSB7XG4gICAgICAgICAgICAgICAgICB3c1VybCA9XG4gICAgICAgICAgICAgICAgICAgIGNka091dHB1dFtPYmplY3Qua2V5cyhjZGtPdXRwdXQpWzBdXS5TZXJ2ZXJsZXNzU3B5V3NVcmw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghd3NVcmwpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHdlYnNvY2tldCB1cmwnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhgV1MgVVJMOiAke3dzVXJsfWApO1xuICAgICAgICAgICAgY29uc3Qgc2lnbmVkV1NVcmwgPSBhd2FpdCBnZXRTaWduZWRXZWJTb2NrZXRVcmwod3NVcmwpO1xuICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDIwMCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvaHRtbCcgfSk7XG4gICAgICAgICAgICByZXNwb25zZS5lbmQoc2lnbmVkV1NVcmwsICd1dGYtOCcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZEZpbGVBc3luYyhmaWxlUGF0aCk7XG5cbiAgICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDIwMCwgeyAnQ29udGVudC1UeXBlJzogY29udGVudFR5cGUgfSk7XG4gICAgICAgICAgICAgIHJlc3BvbnNlLmVuZChjb250ZW50LCAndXRmLTgnKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgICAgaWYgKGVycm9yLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDQwNCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvaHRtbCcgfSk7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuZW5kKFxuICAgICAgICAgICAgICAgICAgYE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgJHtyZXF1ZXN0LnVybH1gLFxuICAgICAgICAgICAgICAgICAgJ3V0Zi04J1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDUwMCk7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuZW5kKGBFcnJvcjogJHtlcnJvci5jb2RlfSAuLlxcbmApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICAgIHJlc3BvbnNlLndyaXRlSGVhZCg1MDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L2h0bWwnIH0pO1xuICAgICAgICAgIHJlc3BvbnNlLmVuZChlcnIubWVzc2FnZSwgJ3V0Zi04Jyk7XG4gICAgICAgIH1cbiAgICAgIH0pKCk7XG4gICAgfSlcbiAgICAubGlzdGVuKG9wdGlvbnMucG9ydCk7XG5cbiAgY29uc29sZS5sb2coXG4gICAgYFNlcnZlcmxlc3NTb3kgY29uc29sZSBydW5pbmcgYXQgaHR0cDovL2xvY2FsaG9zdDoke29wdGlvbnMucG9ydH1gXG4gICk7XG4gIGF3YWl0IG9wZW4oYGh0dHA6Ly9sb2NhbGhvc3Q6JHtvcHRpb25zLnBvcnR9YCk7XG59XG5cbnJ1bigpLmNhdGNoKGNvbnNvbGUuZXJyb3IpO1xuIl19
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
@@ -4,10 +4,14 @@ import * as http from 'http';
4
4
  import * as path from 'path';
5
5
  import { promisify } from 'util';
6
6
  import * as progam from 'caporal';
7
- import { getInstalledPath } from 'get-installed-path';
8
- import open from 'open';
7
+ import * as open from 'open';
9
8
  import { getSignedWebSocketUrl } from '../common/getWebSocketUrl';
10
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
+ }
11
15
  async function run() {
12
16
  let stackList;
13
17
  let cdkOutput;
@@ -17,8 +21,8 @@ async function run() {
17
21
  .option('--ws <ws>', 'Websocket link')
18
22
  .option('--cdkoutput <cdkoutput>', 'CDK output file that contains Websocket link in a property ServerlessSpyWsUrl')
19
23
  .option('--cdkstack <cdkstack>', 'CDK stack in cdk output file. If not specified the first one is picked.')
20
- .option('--open', 'Open browser', undefined, true)
21
- .option('--port <p>', `CDK stack in cdk output file. If not specified the first one is picked.`, undefined, '3456')
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')
22
26
  .action((_args, opt, _logger) => {
23
27
  options = opt;
24
28
  });
@@ -42,20 +46,16 @@ async function run() {
42
46
  let rootFolder = __dirname;
43
47
  if (request.url?.startsWith('/webServerlessSpy.js')) {
44
48
  //get transpiled TS to JS files
45
- rootFolder = path.join(__dirname, `../lib/cli`);
49
+ rootFolder = getCompiledJsPath();
46
50
  }
47
51
  else if (request.url?.startsWith('/bootstrap/')) {
48
52
  filePath = filePath.substring('/bootstrap/'.length);
49
- const bootstrapFolder = await getInstalledPath('bootstrap', {
50
- local: true,
51
- });
53
+ const bootstrapFolder = await getNpmModuleInstalledPath('bootstrap');
52
54
  rootFolder = bootstrapFolder;
53
55
  }
54
56
  else if (request.url?.startsWith('/bootstrap-icons/')) {
55
57
  filePath = filePath.substring('/bootstrap-icons/'.length);
56
- const bootstrapFolder = await getInstalledPath('bootstrap-icons', {
57
- local: true,
58
- });
58
+ const bootstrapFolder = await getNpmModuleInstalledPath('bootstrap-icons');
59
59
  rootFolder = bootstrapFolder;
60
60
  }
61
61
  else {
@@ -144,7 +144,31 @@ async function run() {
144
144
  })
145
145
  .listen(options.port);
146
146
  console.log(`ServerlessSoy console runing at http://localhost:${options.port}`);
147
- await open(`http://localhost:${options.port}`);
147
+ if (options.open) {
148
+ await opener(`http://localhost:${options.port}`);
149
+ }
148
150
  }
149
151
  run().catch(console.error);
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vY2xpL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFbEUsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUU3QyxLQUFLLFVBQVUsR0FBRztJQUNoQixJQUFJLFNBQStCLENBQUM7SUFDcEMsSUFBSSxTQUFpRCxDQUFDO0lBRXRELElBQUksT0FBWSxDQUFDO0lBRWpCLE1BQU07U0FDSCxXQUFXLENBQUMsZUFBZSxDQUFDO1NBQzVCLE1BQU0sQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUM7U0FDckMsTUFBTSxDQUNMLHlCQUF5QixFQUN6QiwrRUFBK0UsQ0FDaEY7U0FDQSxNQUFNLENBQ0wsdUJBQXVCLEVBQ3ZCLHlFQUF5RSxDQUMxRTtTQUNBLE1BQU0sQ0FBQyxRQUFRLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUM7U0FDakQsTUFBTSxDQUNMLFlBQVksRUFDWix5RUFBeUUsRUFDekUsU0FBUyxFQUNULE1BQU0sQ0FDUDtTQUNBLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDOUIsT0FBTyxHQUFHLEdBQUcsQ0FBQztJ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QUFDLEdBQUcsQ0FBQyxVQUFVLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDO3lCQUMzQztxQkFDRjtpQkFDRjthQUNGO1lBQUMsT0FBTyxHQUFRLEVBQUU7Z0JBQ2pCLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7Z0JBQ3pELFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQzthQUNwQztRQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDUCxDQUFDLENBQUM7U0FDRCxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXhCLE9BQU8sQ0FBQyxHQUFHLENBQ1Qsb0RBQW9ELE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FDbkUsQ0FBQztJQUNGLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBRUQsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSAndXRpbCc7XG5pbXBvcnQgKiBhcyBwcm9nYW0gZnJvbSAnY2Fwb3JhbCc7XG5pbXBvcnQgeyBnZXRJbnN0YWxsZWRQYXRoIH0gZnJvbSAnZ2V0LWluc3RhbGxlZC1wYXRoJztcbmltcG9ydCBvcGVuIGZyb20gJ29wZW4nO1xuaW1wb3J0IHsgZ2V0U2lnbmVkV2ViU29ja2V0VXJsIH0gZnJvbSAnLi4vY29tbW9uL2dldFdlYlNvY2tldFVybCc7XG5cbmNvbnN0IHJlYWRGaWxlQXN5bmMgPSBwcm9taXNpZnkoZnMucmVhZEZpbGUpO1xuXG5hc3luYyBmdW5jdGlvbiBydW4oKSB7XG4gIGxldCBzdGFja0xpc3Q6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICBsZXQgY2RrT3V0cHV0OiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PjtcblxuICBsZXQgb3B0aW9uczogYW55O1xuXG4gIHByb2dhbVxuICAgIC5kZXNjcmlwdGlvbignU2VydmVybGVzc1NweScpXG4gICAgLm9wdGlvbignLS13cyA8d3M+JywgJ1dlYnNvY2tldCBsaW5rJylcbiAgICAub3B0aW9uKFxuICAgICAgJy0tY2Rrb3V0cHV0IDxjZGtvdXRwdXQ+JyxcbiAgICAgICdDREsgb3V0cHV0IGZpbGUgdGhhdCBjb250YWlucyBXZWJzb2NrZXQgbGluayBpbiBhIHByb3BlcnR5IFNlcnZlcmxlc3NTcHlXc1VybCdcbiAgICApXG4gICAgLm9wdGlvbihcbiAgICAgICctLWNka3N0YWNrIDxjZGtzdGFjaz4nLFxuICAgICAgJ0NESyBzdGFjayBpbiBjZGsgb3V0cHV0IGZpbGUuIElmIG5vdCBzcGVjaWZpZWQgdGhlIGZpcnN0IG9uZSBpcyBwaWNrZWQuJ1xuICAgIClcbiAgICAub3B0aW9uKCctLW9wZW4nLCAnT3BlbiBicm93c2VyJywgdW5kZWZpbmVkLCB0cnVlKVxuICAgIC5vcHRpb24oXG4gICAgICAnLS1wb3J0IDxwPicsXG4gICAgICBgQ0RLIHN0YWNrIGluIGNkayBvdXRwdXQgZmlsZS4gSWYgbm90IHNwZWNpZmllZCB0aGUgZmlyc3Qgb25lIGlzIHBpY2tlZC5gLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgJzM0NTYnXG4gICAgKVxuICAgIC5hY3Rpb24oKF9hcmdzLCBvcHQsIF9sb2dnZXIpID0+IHtcbiAgICAgIG9wdGlvbnMgPSBvcHQ7XG4gICAgfSk7XG5cbiAgcHJvZ2FtLnBhcnNlKHByb2Nlc3MuYXJndik7XG5cbiAgaWYgKCFvcHRpb25zLndzICYmICFvcHRpb25zLmNka291dHB1dCkge1xuICAgIHRocm93IG5ldyBFcnJvcignLS13cyBvciAtLWNka3N0YWNrIHBhcmFtZXRlciBub3Qgc3BlY2lmaWVkJyk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5jZGtvdXRwdXQpIHtcbiAgICBjb25zdCByYXdkYXRhID0gZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihfX2Rpcm5hbWUsIG9wdGlvbnMuY2Rrb3V0cHV0KSk7XG4gICAgY2RrT3V0cHV0ID0gSlNPTi5wYXJzZShyYXdkYXRhLnRvU3RyaW5nKCkpO1xuICAgIHN0YWNrTGlzdCA9IE9iamVjdC5rZXlzKGNka091dHB1dCk7XG4gIH1cblxuICBodHRwXG4gICAgLmNyZWF0ZVNlcnZlcigocmVxdWVzdCwgcmVzcG9uc2UpID0+IHtcbiAgICAgIHZvaWQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKCdyZXF1ZXN0ICcsIHJlcXVlc3QudXJsKTtcbiAgICAgICAgICBsZXQgZmlsZVBhdGg6IHN0cmluZyA9IGAuJHtyZXF1ZXN0LnVybH1gO1xuICAgICAgICAgIC8vcmVtb3ZlIHF1ZXJ5IHBhcmFtZXRlcnNcbiAgICAgICAgICBmaWxlUGF0aCA9IGZpbGVQYXRoLnNwbGl0KCc/JylbMF07XG4gICAgICAgICAgbGV0IHJvb3RGb2xkZXIgPSBfX2Rpcm5hbWU7XG5cbiAgICAgICAgICBpZiAocmVxdWVzdC51cmw/LnN0YXJ0c1dpdGgoJy93ZWJTZXJ2ZXJsZXNzU3B5LmpzJykpIHtcbiAgICAgICAgICAgIC8vZ2V0IHRyYW5zcGlsZWQgVFMgdG8gSlMgZmlsZXNcbiAgICAgICAgICAgIHJvb3RGb2xkZXIgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCBgLi4vbGliL2NsaWApO1xuICAgICAgICAgIH0gZWxzZSBpZiAocmVxdWVzdC51cmw/LnN0YXJ0c1dpdGgoJy9ib290c3RyYXAvJykpIHtcbiAgICAgICAgICAgIGZpbGVQYXRoID0gZmlsZVBhdGguc3Vic3RyaW5nKCcvYm9vdHN0cmFwLycubGVuZ3RoKTtcbiAgICAgICAgICAgIGNvbnN0IGJvb3RzdHJhcEZvbGRlciA9IGF3YWl0IGdldEluc3RhbGxlZFBhdGgoJ2Jvb3RzdHJhcCcsIHtcbiAgICAgICAgICAgICAgbG9jYWw6IHRydWUsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcm9vdEZvbGRlciA9IGJvb3RzdHJhcEZvbGRlcjtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcXVlc3QudXJsPy5zdGFydHNXaXRoKCcvYm9vdHN0cmFwLWljb25zLycpKSB7XG4gICAgICAgICAgICBmaWxlUGF0aCA9IGZpbGVQYXRoLnN1YnN0cmluZygnL2Jvb3RzdHJhcC1pY29ucy8nLmxlbmd0aCk7XG4gICAgICAgICAgICBjb25zdCBib290c3RyYXBGb2xkZXIgPSBhd2FpdCBnZXRJbnN0YWxsZWRQYXRoKCdib290c3RyYXAtaWNvbnMnLCB7XG4gICAgICAgICAgICAgIGxvY2FsOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJvb3RGb2xkZXIgPSBib290c3RyYXBGb2xkZXI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmaWxlUGF0aCA9PT0gJy4vJykge1xuICAgICAgICAgICAgICBmaWxlUGF0aCA9ICcuL2luZGV4Lmh0bWwnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGZpbGVQYXRoID0gcGF0aC5qb2luKHJvb3RGb2xkZXIsIGZpbGVQYXRoKTtcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKGAke3JlcXVlc3QudXJsfSAtLT4gJHtmaWxlUGF0aH1gKTtcblxuICAgICAgICAgIGNvbnN0IGV4dG5hbWUgPSBTdHJpbmcocGF0aC5leHRuYW1lKGZpbGVQYXRoKSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICBjb25zdCBtaW1lVHlwZXM6IGFueSA9IHtcbiAgICAgICAgICAgICcuaHRtbCc6ICd0ZXh0L2h0bWwnLFxuICAgICAgICAgICAgJy5qcyc6ICd0ZXh0L2phdmFzY3JpcHQnLFxuICAgICAgICAgICAgJy5jc3MnOiAndGV4dC9jc3MnLFxuICAgICAgICAgICAgJy5qc29uJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgJy5wbmcnOiAnaW1hZ2UvcG5nJyxcbiAgICAgICAgICAgICcuanBnJzogJ2ltYWdlL2pwZycsXG4gICAgICAgICAgICAnLmdpZic6ICdpbWFnZS9naWYnLFxuICAgICAgICAgICAgJy5zdmcnOiAnaW1hZ2Uvc3ZnK3htbCcsXG4gICAgICAgICAgICAnLndhdic6ICdhdWRpby93YXYnLFxuICAgICAgICAgICAgJy5tcDQnOiAndmlkZW8vbXA0JyxcbiAgICAgICAgICAgICcud29mZic6ICdhcHBsaWNhdGlvbi9mb250LXdvZmYnLFxuICAgICAgICAgICAgJy50dGYnOiAnYXBwbGljYXRpb24vZm9udC10dGYnLFxuICAgICAgICAgICAgJy5lb3QnOiAnYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3QnLFxuICAgICAgICAgICAgJy5vdGYnOiAnYXBwbGljYXRpb24vZm9udC1vdGYnLFxuICAgICAgICAgICAgJy53YXNtJzogJ2FwcGxpY2F0aW9uL3dhc20nLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IG1pbWVUeXBlc1tleHRuYW1lXSB8fCAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcblxuICAgICAgICAgIGlmIChyZXF1ZXN0LnVybCA9PT0gJy9zdGFja0xpc3QnKSB7XG4gICAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoMjAwLCB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSk7XG4gICAgICAgICAgICByZXNwb25zZS5lbmQoSlNPTi5zdHJpbmdpZnkoc3RhY2tMaXN0KSwgJ3V0Zi04Jyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0LnVybD8ubWF0Y2goJ14vd3NVcmwnKSkge1xuICAgICAgICAgICAgbGV0IHdzVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy53cykge1xuICAgICAgICAgICAgICB3c1VybCA9IG9wdGlvbnMud3M7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBvcHRpb25zLmNka291dHB1dFxuICAgICAgICAgICAgICBjb25zdCB1cmxQYXRocyA9IHJlcXVlc3QudXJsLnNwbGl0KCcvJyk7XG4gICAgICAgICAgICAgIGxldCBzdGFjayA9IHVybFBhdGhzWzJdO1xuXG4gICAgICAgICAgICAgIGlmICghc3RhY2spIHtcbiAgICAgICAgICAgICAgICBzdGFjayA9IG9wdGlvbnMuY2Rrc3RhY2s7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoc3RhY2spIHtcbiAgICAgICAgICAgICAgICB3c1VybCA9IGNka091dHB1dFtzdGFja10uU2VydmVybGVzc1NweVdzVXJsO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChjZGtPdXRwdXQgJiYgY2RrT3V0cHV0W09iamVjdC5rZXlzKGNka091dHB1dClbMF1dKSB7XG4gICAgICAgICAgICAgICAgICB3c1VybCA9XG4gICAgICAgICAgICAgICAgICAgIGNka091dHB1dFtPYmplY3Qua2V5cyhjZGtPdXRwdXQpWzBdXS5TZXJ2ZXJsZXNzU3B5V3NVcmw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghd3NVcmwpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHdlYnNvY2tldCB1cmwnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhgV1MgVVJMOiAke3dzVXJsfWApO1xuICAgICAgICAgICAgY29uc3Qgc2lnbmVkV1NVcmwgPSBhd2FpdCBnZXRTaWduZWRXZWJTb2NrZXRVcmwod3NVcmwpO1xuICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDIwMCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvaHRtbCcgfSk7XG4gICAgICAgICAgICByZXNwb25zZS5lbmQoc2lnbmVkV1NVcmwsICd1dGYtOCcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZEZpbGVBc3luYyhmaWxlUGF0aCk7XG5cbiAgICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDIwMCwgeyAnQ29udGVudC1UeXBlJzogY29udGVudFR5cGUgfSk7XG4gICAgICAgICAgICAgIHJlc3BvbnNlLmVuZChjb250ZW50LCAndXRmLTgnKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgICAgaWYgKGVycm9yLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDQwNCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvaHRtbCcgfSk7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuZW5kKFxuICAgICAgICAgICAgICAgICAgYE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgJHtyZXF1ZXN0LnVybH1gLFxuICAgICAgICAgICAgICAgICAgJ3V0Zi04J1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKDUwMCk7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuZW5kKGBFcnJvcjogJHtlcnJvci5jb2RlfSAuLlxcbmApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICAgIHJlc3BvbnNlLndyaXRlSGVhZCg1MDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L2h0bWwnIH0pO1xuICAgICAgICAgIHJlc3BvbnNlLmVuZChlcnIubWVzc2FnZSwgJ3V0Zi04Jyk7XG4gICAgICAgIH1cbiAgICAgIH0pKCk7XG4gICAgfSlcbiAgICAubGlzdGVuKG9wdGlvbnMucG9ydCk7XG5cbiAgY29uc29sZS5sb2coXG4gICAgYFNlcnZlcmxlc3NTb3kgY29uc29sZSBydW5pbmcgYXQgaHR0cDovL2xvY2FsaG9zdDoke29wdGlvbnMucG9ydH1gXG4gICk7XG4gIGF3YWl0IG9wZW4oYGh0dHA6Ly9sb2NhbGhvc3Q6JHtvcHRpb25zLnBvcnR9YCk7XG59XG5cbnJ1bigpLmNhdGNoKGNvbnNvbGUuZXJyb3IpO1xuIl19
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
@@ -4,12 +4,17 @@ import * as http from 'http';
4
4
  import * as path from 'path';
5
5
  import { promisify } from 'util';
6
6
  import * as progam from 'caporal';
7
- import { getInstalledPath } from 'get-installed-path';
8
- import open from 'open';
7
+ import * as open from 'open';
9
8
  import { getSignedWebSocketUrl } from '../common/getWebSocketUrl';
10
9
 
11
10
  const readFileAsync = promisify(fs.readFile);
12
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
+
13
18
  async function run() {
14
19
  let stackList: string[] | undefined;
15
20
  let cdkOutput: Record<string, Record<string, string>>;
@@ -27,11 +32,11 @@ async function run() {
27
32
  '--cdkstack <cdkstack>',
28
33
  'CDK stack in cdk output file. If not specified the first one is picked.'
29
34
  )
30
- .option('--open', 'Open browser', undefined, true)
35
+ .option('--open <open>', 'Open browser', progam.BOOL, true)
31
36
  .option(
32
37
  '--port <p>',
33
38
  `CDK stack in cdk output file. If not specified the first one is picked.`,
34
- undefined,
39
+ progam.INT,
35
40
  '3456'
36
41
  )
37
42
  .action((_args, opt, _logger) => {
@@ -62,19 +67,19 @@ async function run() {
62
67
 
63
68
  if (request.url?.startsWith('/webServerlessSpy.js')) {
64
69
  //get transpiled TS to JS files
65
- rootFolder = path.join(__dirname, `../lib/cli`);
70
+ rootFolder = getCompiledJsPath();
66
71
  } else if (request.url?.startsWith('/bootstrap/')) {
67
72
  filePath = filePath.substring('/bootstrap/'.length);
68
- const bootstrapFolder = await getInstalledPath('bootstrap', {
69
- local: true,
70
- });
73
+ const bootstrapFolder = await getNpmModuleInstalledPath(
74
+ 'bootstrap'
75
+ );
71
76
 
72
77
  rootFolder = bootstrapFolder;
73
78
  } else if (request.url?.startsWith('/bootstrap-icons/')) {
74
79
  filePath = filePath.substring('/bootstrap-icons/'.length);
75
- const bootstrapFolder = await getInstalledPath('bootstrap-icons', {
76
- local: true,
77
- });
80
+ const bootstrapFolder = await getNpmModuleInstalledPath(
81
+ 'bootstrap-icons'
82
+ );
78
83
 
79
84
  rootFolder = bootstrapFolder;
80
85
  } else {
@@ -171,7 +176,43 @@ async function run() {
171
176
  console.log(
172
177
  `ServerlessSoy console runing at http://localhost:${options.port}`
173
178
  );
174
- await open(`http://localhost:${options.port}`);
179
+ if (options.open) {
180
+ await opener(`http://localhost:${options.port}`);
181
+ }
175
182
  }
176
183
 
177
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
+ }
@@ -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
  }