@dcl/sdk 7.0.6-4197661608.commit-41efaad → 7.0.6-4217957637.commit-a393ef7

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 (88) hide show
  1. package/package.json +6 -33
  2. package/cli/commands/build/helpers.d.ts +0 -21
  3. package/cli/commands/build/helpers.js +0 -50
  4. package/cli/commands/build/helpers.ts +0 -89
  5. package/cli/commands/build/index.d.ts +0 -19
  6. package/cli/commands/build/index.js +0 -69
  7. package/cli/commands/build/index.ts +0 -91
  8. package/cli/commands/init/index.d.ts +0 -17
  9. package/cli/commands/init/index.js +0 -53
  10. package/cli/commands/init/index.ts +0 -69
  11. package/cli/commands/init/repos.d.ts +0 -9
  12. package/cli/commands/init/repos.js +0 -12
  13. package/cli/commands/init/repos.ts +0 -17
  14. package/cli/commands/preview/bff.d.ts +0 -3
  15. package/cli/commands/preview/bff.js +0 -54
  16. package/cli/commands/preview/bff.ts +0 -63
  17. package/cli/commands/preview/catalyst.d.ts +0 -5
  18. package/cli/commands/preview/catalyst.js +0 -24
  19. package/cli/commands/preview/catalyst.ts +0 -31
  20. package/cli/commands/preview/coordinates.d.ts +0 -20
  21. package/cli/commands/preview/coordinates.js +0 -90
  22. package/cli/commands/preview/coordinates.ts +0 -146
  23. package/cli/commands/preview/endpoints.d.ts +0 -10
  24. package/cli/commands/preview/endpoints.js +0 -485
  25. package/cli/commands/preview/endpoints.ts +0 -578
  26. package/cli/commands/preview/eth.d.ts +0 -2
  27. package/cli/commands/preview/eth.js +0 -6
  28. package/cli/commands/preview/eth.ts +0 -3
  29. package/cli/commands/preview/index.d.ts +0 -20
  30. package/cli/commands/preview/index.js +0 -71
  31. package/cli/commands/preview/index.ts +0 -91
  32. package/cli/commands/preview/port.d.ts +0 -1
  33. package/cli/commands/preview/port.js +0 -21
  34. package/cli/commands/preview/port.ts +0 -15
  35. package/cli/commands/preview/project.d.ts +0 -14
  36. package/cli/commands/preview/project.js +0 -77
  37. package/cli/commands/preview/project.ts +0 -112
  38. package/cli/commands/preview/types.d.ts +0 -18
  39. package/cli/commands/preview/types.js +0 -3
  40. package/cli/commands/preview/types.ts +0 -26
  41. package/cli/commands/preview/wire.d.ts +0 -2
  42. package/cli/commands/preview/wire.js +0 -92
  43. package/cli/commands/preview/wire.ts +0 -107
  44. package/cli/commands/preview/ws.d.ts +0 -7
  45. package/cli/commands/preview/ws.js +0 -16
  46. package/cli/commands/preview/ws.ts +0 -24
  47. package/cli/commands/start/index.d.ts +0 -29
  48. package/cli/commands/start/index.js +0 -126
  49. package/cli/commands/start/index.ts +0 -145
  50. package/cli/components/fetch.d.ts +0 -5
  51. package/cli/components/fetch.js +0 -34
  52. package/cli/components/fetch.ts +0 -11
  53. package/cli/components/fs.d.ts +0 -11
  54. package/cli/components/fs.js +0 -60
  55. package/cli/components/fs.ts +0 -53
  56. package/cli/components/index.d.ts +0 -7
  57. package/cli/components/index.js +0 -13
  58. package/cli/components/index.ts +0 -14
  59. package/cli/index.d.ts +0 -7
  60. package/cli/index.js +0 -76
  61. package/cli/index.ts +0 -85
  62. package/cli/utils/args.d.ts +0 -10
  63. package/cli/utils/args.js +0 -16
  64. package/cli/utils/args.ts +0 -18
  65. package/cli/utils/commands.d.ts +0 -3
  66. package/cli/utils/commands.js +0 -24
  67. package/cli/utils/commands.ts +0 -28
  68. package/cli/utils/error.d.ts +0 -2
  69. package/cli/utils/error.js +0 -7
  70. package/cli/utils/error.ts +0 -1
  71. package/cli/utils/exec.d.ts +0 -8
  72. package/cli/utils/exec.js +0 -32
  73. package/cli/utils/exec.ts +0 -42
  74. package/cli/utils/fs.d.ts +0 -10
  75. package/cli/utils/fs.js +0 -26
  76. package/cli/utils/fs.ts +0 -41
  77. package/cli/utils/log.d.ts +0 -5
  78. package/cli/utils/log.js +0 -29
  79. package/cli/utils/log.ts +0 -39
  80. package/cli/utils/object.d.ts +0 -9
  81. package/cli/utils/object.js +0 -45
  82. package/cli/utils/object.ts +0 -62
  83. package/cli/utils/out-messages.d.ts +0 -1
  84. package/cli/utils/out-messages.js +0 -8
  85. package/cli/utils/out-messages.ts +0 -3
  86. package/cli/utils/prompt.d.ts +0 -1
  87. package/cli/utils/prompt.js +0 -17
  88. package/cli/utils/prompt.ts +0 -11
package/cli/index.js DELETED
@@ -1,76 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k;
5
- var desc = Object.getOwnPropertyDescriptor(m, k);
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k]; } };
8
- }
9
- Object.defineProperty(o, k2, desc);
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- o[k2] = m[k];
13
- }));
14
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
- Object.defineProperty(o, "default", { enumerable: true, value: v });
16
- }) : function(o, v) {
17
- o["default"] = v;
18
- });
19
- var __importStar = (this && this.__importStar) || function (mod) {
20
- if (mod && mod.__esModule) return mod;
21
- var result = {};
22
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
- __setModuleDefault(result, mod);
24
- return result;
25
- };
26
- Object.defineProperty(exports, "__esModule", { value: true });
27
- const args_1 = require("./utils/args");
28
- const out_messages_1 = require("./utils/out-messages");
29
- const log = __importStar(require("./utils/log"));
30
- const error_1 = require("./utils/error");
31
- const commands_1 = require("./utils/commands");
32
- const components_1 = require("./components");
33
- const listCommandsStr = (commands) => (0, out_messages_1.toStringList)(commands.map(($) => `npx @dcl/sdk ${$}`));
34
- const handleError = (err) => {
35
- if (err instanceof error_1.CliError) {
36
- log.fail(err.message);
37
- }
38
- else {
39
- console.error(err);
40
- log.warn(`Developer: All errors thrown must be an instance of "CliError"`);
41
- }
42
- process.exitCode = 1;
43
- };
44
- const commandFnsAreValid = (fns) => {
45
- const { help, main } = fns;
46
- if (!help || !main) {
47
- throw new error_1.CliError(`Command does not follow implementation rules:
48
- * Requires a "help" function
49
- * Requires a "main" function
50
- `);
51
- }
52
- return true;
53
- };
54
- async function main() {
55
- const helpMessage = (commands) => `Here is the list of commands:\n${listCommandsStr(commands)}`;
56
- const args = (0, args_1.getArgs)();
57
- const command = process.argv[2];
58
- const needsHelp = args['--help'];
59
- const components = (0, components_1.initComponents)();
60
- const commands = await (0, commands_1.getCommands)(components);
61
- if (!commands.includes(command)) {
62
- if (needsHelp) {
63
- log.info(helpMessage(commands));
64
- return;
65
- }
66
- throw new error_1.CliError(`Command ${command} is invalid. ${helpMessage(commands)}`);
67
- }
68
- const cmd = require(`${commands_1.COMMANDS_PATH}/${command}`);
69
- if (commandFnsAreValid(cmd)) {
70
- const options = { args: cmd.args, components };
71
- needsHelp ? await cmd.help(options) : await cmd.main(options);
72
- }
73
- process.exit(process.exitCode || 0);
74
- }
75
- main().catch(handleError);
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9BLHVDQUFzQztBQUN0Qyx1REFBbUQ7QUFDbkQsaURBQWtDO0FBQ2xDLHlDQUF3QztBQUN4QywrQ0FBNkQ7QUFDN0QsNkNBQTREO0FBZ0I1RCxNQUFNLGVBQWUsR0FBRyxDQUFDLFFBQWtCLEVBQUUsRUFBRSxDQUFDLElBQUEsMkJBQVksRUFBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBRXRHLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBVSxFQUFFLEVBQUU7SUFDakMsSUFBSSxHQUFHLFlBQVksZ0JBQVEsRUFBRTtRQUMzQixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtLQUN0QjtTQUFNO1FBRUwsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNsQixHQUFHLENBQUMsSUFBSSxDQUFDLGdFQUFnRSxDQUFDLENBQUE7S0FDM0U7SUFHRCxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQTtBQUN0QixDQUFDLENBQUE7QUFFRCxNQUFNLGtCQUFrQixHQUFHLENBQUMsR0FBZ0IsRUFBZ0MsRUFBRTtJQUM1RSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQTtJQUMxQixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQ2xCLE1BQU0sSUFBSSxnQkFBUSxDQUFDOzs7S0FHbEIsQ0FBQyxDQUFBO0tBQ0g7SUFDRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUMsQ0FBQTtBQUVELEtBQUssVUFBVSxJQUFJO0lBQ2pCLE1BQU0sV0FBVyxHQUFHLENBQUMsUUFBa0IsRUFBRSxFQUFFLENBQUMsa0NBQWtDLGVBQWUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFBO0lBQ3pHLE1BQU0sSUFBSSxHQUFHLElBQUEsY0FBTyxHQUFFLENBQUE7SUFDdEIsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMvQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDaEMsTUFBTSxVQUFVLEdBQWtCLElBQUEsMkJBQWMsR0FBRSxDQUFBO0lBRWxELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSxzQkFBVyxFQUFDLFVBQVUsQ0FBQyxDQUFBO0lBRTlDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQy9CLElBQUksU0FBUyxFQUFFO1lBQ2IsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtZQUMvQixPQUFNO1NBQ1A7UUFDRCxNQUFNLElBQUksZ0JBQVEsQ0FBQyxXQUFXLE9BQU8sZ0JBQWdCLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7S0FDOUU7SUFHRCxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyx3QkFBYSxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFFbEQsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUMzQixNQUFNLE9BQU8sR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFBO1FBQzlDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7S0FDOUQ7SUFJRCxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUE7QUFDckMsQ0FBQztBQUVELElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuLypcbiAgaXN0YW5idWwgaWdub3JlIGZpbGVcbiAgRG9lc24ndCBtYWtlIHNlbnNlIHRvIHRlc3QgdGhpcyBmaWxlXG4qL1xuXG5pbXBvcnQgeyBnZXRBcmdzIH0gZnJvbSAnLi91dGlscy9hcmdzJ1xuaW1wb3J0IHsgdG9TdHJpbmdMaXN0IH0gZnJvbSAnLi91dGlscy9vdXQtbWVzc2FnZXMnXG5pbXBvcnQgKiBhcyBsb2cgZnJvbSAnLi91dGlscy9sb2cnXG5pbXBvcnQgeyBDbGlFcnJvciB9IGZyb20gJy4vdXRpbHMvZXJyb3InXG5pbXBvcnQgeyBDT01NQU5EU19QQVRILCBnZXRDb21tYW5kcyB9IGZyb20gJy4vdXRpbHMvY29tbWFuZHMnXG5pbXBvcnQgeyBDbGlDb21wb25lbnRzLCBpbml0Q29tcG9uZW50cyB9IGZyb20gJy4vY29tcG9uZW50cydcblxuZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcbiAgYXJnczogUmV0dXJuVHlwZTx0eXBlb2YgZ2V0QXJncz5cbiAgY29tcG9uZW50czogQ2xpQ29tcG9uZW50c1xufVxuXG4vLyBsZWF2aW5nIGFyZ3MgYXMgXCJhbnlcIiBzaW5jZSB3ZSBkb24ndCBrbm93IHlldCBpZiB3ZSB3aWxsIHVzZSB0aGVtXG50eXBlIEZpbGVGbiA9IChvcHRpb25zOiBPcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+XG5cbmludGVyZmFjZSBGaWxlRXhwb3J0cyB7XG4gIGhlbHA/OiBGaWxlRm5cbiAgbWFpbj86IEZpbGVGblxuICBhcmdzPzogUmV0dXJuVHlwZTx0eXBlb2YgZ2V0QXJncz5cbn1cblxuY29uc3QgbGlzdENvbW1hbmRzU3RyID0gKGNvbW1hbmRzOiBzdHJpbmdbXSkgPT4gdG9TdHJpbmdMaXN0KGNvbW1hbmRzLm1hcCgoJCkgPT4gYG5weCBAZGNsL3NkayAkeyR9YCkpXG5cbmNvbnN0IGhhbmRsZUVycm9yID0gKGVycjogRXJyb3IpID0+IHtcbiAgaWYgKGVyciBpbnN0YW5jZW9mIENsaUVycm9yKSB7XG4gICAgbG9nLmZhaWwoZXJyLm1lc3NhZ2UpXG4gIH0gZWxzZSB7XG4gICAgLy8gbG9nIHdpdGggY29uc29sZSB0byBzaG93IHN0YWNrdHJhY2UgYW5kIGRlYnVnIGluZm9ybWF0aW9uXG4gICAgY29uc29sZS5lcnJvcihlcnIpXG4gICAgbG9nLndhcm4oYERldmVsb3BlcjogQWxsIGVycm9ycyB0aHJvd24gbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBcIkNsaUVycm9yXCJgKVxuICB9XG5cbiAgLy8gc2V0IGFuIGV4aXQgY29kZSBidXQgbm90IGZpbmlzaCB0aGUgcHJvZ3JhbSBpbW1lZGlhdGVseSB0byBjbG9zZSBhbnkgcGVuZGluZyB3b3JrXG4gIHByb2Nlc3MuZXhpdENvZGUgPSAxXG59XG5cbmNvbnN0IGNvbW1hbmRGbnNBcmVWYWxpZCA9IChmbnM6IEZpbGVFeHBvcnRzKTogZm5zIGlzIFJlcXVpcmVkPEZpbGVFeHBvcnRzPiA9PiB7XG4gIGNvbnN0IHsgaGVscCwgbWFpbiB9ID0gZm5zXG4gIGlmICghaGVscCB8fCAhbWFpbikge1xuICAgIHRocm93IG5ldyBDbGlFcnJvcihgQ29tbWFuZCBkb2VzIG5vdCBmb2xsb3cgaW1wbGVtZW50YXRpb24gcnVsZXM6XG4gICAgICAqIFJlcXVpcmVzIGEgXCJoZWxwXCIgZnVuY3Rpb25cbiAgICAgICogUmVxdWlyZXMgYSBcIm1haW5cIiBmdW5jdGlvblxuICAgIGApXG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgY29uc3QgaGVscE1lc3NhZ2UgPSAoY29tbWFuZHM6IHN0cmluZ1tdKSA9PiBgSGVyZSBpcyB0aGUgbGlzdCBvZiBjb21tYW5kczpcXG4ke2xpc3RDb21tYW5kc1N0cihjb21tYW5kcyl9YFxuICBjb25zdCBhcmdzID0gZ2V0QXJncygpXG4gIGNvbnN0IGNvbW1hbmQgPSBwcm9jZXNzLmFyZ3ZbMl1cbiAgY29uc3QgbmVlZHNIZWxwID0gYXJnc1snLS1oZWxwJ11cbiAgY29uc3QgY29tcG9uZW50czogQ2xpQ29tcG9uZW50cyA9IGluaXRDb21wb25lbnRzKClcblxuICBjb25zdCBjb21tYW5kcyA9IGF3YWl0IGdldENvbW1hbmRzKGNvbXBvbmVudHMpXG5cbiAgaWYgKCFjb21tYW5kcy5pbmNsdWRlcyhjb21tYW5kKSkge1xuICAgIGlmIChuZWVkc0hlbHApIHtcbiAgICAgIGxvZy5pbmZvKGhlbHBNZXNzYWdlKGNvbW1hbmRzKSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0aHJvdyBuZXcgQ2xpRXJyb3IoYENvbW1hbmQgJHtjb21tYW5kfSBpcyBpbnZhbGlkLiAke2hlbHBNZXNzYWdlKGNvbW1hbmRzKX1gKVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXNcbiAgY29uc3QgY21kID0gcmVxdWlyZShgJHtDT01NQU5EU19QQVRIfS8ke2NvbW1hbmR9YClcblxuICBpZiAoY29tbWFuZEZuc0FyZVZhbGlkKGNtZCkpIHtcbiAgICBjb25zdCBvcHRpb25zID0geyBhcmdzOiBjbWQuYXJncywgY29tcG9uZW50cyB9XG4gICAgbmVlZHNIZWxwID8gYXdhaXQgY21kLmhlbHAob3B0aW9ucykgOiBhd2FpdCBjbWQubWFpbihvcHRpb25zKVxuICB9XG5cbiAgLy8gcm9sbHVwIHdhdGNoZXIgbGVhdmVzIG1hbnkgb3BlbiBGU1dhdGNoZXIgZXZlbiBpbiBidWlsZCBtb2RlLiB3ZSBtdXN0IGNhbGxcbiAgLy8gcHJvY2Vzcy5leGl0IGF0IHRoaXMgcG9pbnQgdG8gcHJldmVudCB0aGUgcHJvZ3JhbSBoYWx0aW5nIGZvcmV2ZXJcbiAgcHJvY2Vzcy5leGl0KHByb2Nlc3MuZXhpdENvZGUgfHwgMClcbn1cblxubWFpbigpLmNhdGNoKGhhbmRsZUVycm9yKVxuIl19
package/cli/index.ts DELETED
@@ -1,85 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /*
4
- istanbul ignore file
5
- Doesn't make sense to test this file
6
- */
7
-
8
- import { getArgs } from './utils/args'
9
- import { toStringList } from './utils/out-messages'
10
- import * as log from './utils/log'
11
- import { CliError } from './utils/error'
12
- import { COMMANDS_PATH, getCommands } from './utils/commands'
13
- import { CliComponents, initComponents } from './components'
14
-
15
- export interface Options {
16
- args: ReturnType<typeof getArgs>
17
- components: CliComponents
18
- }
19
-
20
- // leaving args as "any" since we don't know yet if we will use them
21
- type FileFn = (options: Options) => Promise<void>
22
-
23
- interface FileExports {
24
- help?: FileFn
25
- main?: FileFn
26
- args?: ReturnType<typeof getArgs>
27
- }
28
-
29
- const listCommandsStr = (commands: string[]) => toStringList(commands.map(($) => `npx @dcl/sdk ${$}`))
30
-
31
- const handleError = (err: Error) => {
32
- if (err instanceof CliError) {
33
- log.fail(err.message)
34
- } else {
35
- // log with console to show stacktrace and debug information
36
- console.error(err)
37
- log.warn(`Developer: All errors thrown must be an instance of "CliError"`)
38
- }
39
-
40
- // set an exit code but not finish the program immediately to close any pending work
41
- process.exitCode = 1
42
- }
43
-
44
- const commandFnsAreValid = (fns: FileExports): fns is Required<FileExports> => {
45
- const { help, main } = fns
46
- if (!help || !main) {
47
- throw new CliError(`Command does not follow implementation rules:
48
- * Requires a "help" function
49
- * Requires a "main" function
50
- `)
51
- }
52
- return true
53
- }
54
-
55
- async function main() {
56
- const helpMessage = (commands: string[]) => `Here is the list of commands:\n${listCommandsStr(commands)}`
57
- const args = getArgs()
58
- const command = process.argv[2]
59
- const needsHelp = args['--help']
60
- const components: CliComponents = initComponents()
61
-
62
- const commands = await getCommands(components)
63
-
64
- if (!commands.includes(command)) {
65
- if (needsHelp) {
66
- log.info(helpMessage(commands))
67
- return
68
- }
69
- throw new CliError(`Command ${command} is invalid. ${helpMessage(commands)}`)
70
- }
71
-
72
- // eslint-disable-next-line @typescript-eslint/no-var-requires
73
- const cmd = require(`${COMMANDS_PATH}/${command}`)
74
-
75
- if (commandFnsAreValid(cmd)) {
76
- const options = { args: cmd.args, components }
77
- needsHelp ? await cmd.help(options) : await cmd.main(options)
78
- }
79
-
80
- // rollup watcher leaves many open FSWatcher even in build mode. we must call
81
- // process.exit at this point to prevent the program halting forever
82
- process.exit(process.exitCode || 0)
83
- }
84
-
85
- main().catch(handleError)
@@ -1,10 +0,0 @@
1
- import { Result } from 'arg';
2
- export type Args = {
3
- [key: string]: string | StringConstructor | NumberConstructor | BooleanConstructor;
4
- };
5
- export declare const DEFAULT_ARGS: {
6
- '--help': BooleanConstructor;
7
- '-h': string;
8
- };
9
- export declare function getArgs(): Result<typeof DEFAULT_ARGS>;
10
- export declare function getArgs<T extends Args>(args: T): Result<typeof DEFAULT_ARGS & T>;
package/cli/utils/args.js DELETED
@@ -1,16 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getArgs = exports.DEFAULT_ARGS = void 0;
7
- const arg_1 = __importDefault(require("arg"));
8
- exports.DEFAULT_ARGS = {
9
- '--help': Boolean,
10
- '-h': '--help'
11
- };
12
- function getArgs(args) {
13
- return (0, arg_1.default)(Object.assign(Object.assign({}, exports.DEFAULT_ARGS), args), { permissive: true });
14
- }
15
- exports.getArgs = getArgs;
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFyZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBQWlDO0FBUXBCLFFBQUEsWUFBWSxHQUFHO0lBQzFCLFFBQVEsRUFBRSxPQUFPO0lBQ2pCLElBQUksRUFBRSxRQUFRO0NBQ2YsQ0FBQTtBQUlELFNBQWdCLE9BQU8sQ0FBaUIsSUFBUTtJQUM5QyxPQUFPLElBQUEsYUFBRyxrQ0FBTSxvQkFBWSxHQUFLLElBQUksR0FBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0FBQ2hFLENBQUM7QUFGRCwwQkFFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhcmcsIHsgUmVzdWx0IH0gZnJvbSAnYXJnJ1xuXG5leHBvcnQgdHlwZSBBcmdzID0ge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBTdHJpbmdDb25zdHJ1Y3RvciB8IE51bWJlckNvbnN0cnVjdG9yIHwgQm9vbGVhbkNvbnN0cnVjdG9yXG59XG5cbi8vIHVwZGF0aW5nIHRvIFRTIDQuOSB3aWxsIHByZXZlbnQgbG9zaW5nIHR5cGVzIHdoZW5cbi8vIGVuZm9yY2luZyB0eXBlIHRvIGJlIFwiQXJnc1wiIGJ5IHVzaW5nIFwic2F0aXNmaWVzIEFyZ3NcIlxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQVJHUyA9IHtcbiAgJy0taGVscCc6IEJvb2xlYW4sXG4gICctaCc6ICctLWhlbHAnXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBcmdzKCk6IFJlc3VsdDx0eXBlb2YgREVGQVVMVF9BUkdTPlxuZXhwb3J0IGZ1bmN0aW9uIGdldEFyZ3M8VCBleHRlbmRzIEFyZ3M+KGFyZ3M6IFQpOiBSZXN1bHQ8dHlwZW9mIERFRkFVTFRfQVJHUyAmIFQ+XG5leHBvcnQgZnVuY3Rpb24gZ2V0QXJnczxUIGV4dGVuZHMgQXJncz4oYXJncz86IFQpIHtcbiAgcmV0dXJuIGFyZyh7IC4uLkRFRkFVTFRfQVJHUywgLi4uYXJncyB9LCB7IHBlcm1pc3NpdmU6IHRydWUgfSlcbn1cbiJdfQ==
package/cli/utils/args.ts DELETED
@@ -1,18 +0,0 @@
1
- import arg, { Result } from 'arg'
2
-
3
- export type Args = {
4
- [key: string]: string | StringConstructor | NumberConstructor | BooleanConstructor
5
- }
6
-
7
- // updating to TS 4.9 will prevent losing types when
8
- // enforcing type to be "Args" by using "satisfies Args"
9
- export const DEFAULT_ARGS = {
10
- '--help': Boolean,
11
- '-h': '--help'
12
- }
13
-
14
- export function getArgs(): Result<typeof DEFAULT_ARGS>
15
- export function getArgs<T extends Args>(args: T): Result<typeof DEFAULT_ARGS & T>
16
- export function getArgs<T extends Args>(args?: T) {
17
- return arg({ ...DEFAULT_ARGS, ...args }, { permissive: true })
18
- }
@@ -1,3 +0,0 @@
1
- import { CliComponents } from '../components';
2
- export declare const COMMANDS_PATH: string;
3
- export declare const getCommands: ({ fs }: Pick<CliComponents, 'fs'>) => Promise<string[]>;
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getCommands = exports.COMMANDS_PATH = void 0;
4
- const path_1 = require("path");
5
- const error_1 = require("./error");
6
- exports.COMMANDS_PATH = (0, path_1.resolve)(__dirname, '../commands');
7
- const getCommands = async ({ fs }) => {
8
- const commandDirs = await fs.readdir(exports.COMMANDS_PATH);
9
- const commands = commandDirs.map(async (dir) => {
10
- const path = (0, path_1.resolve)(exports.COMMANDS_PATH, dir);
11
- const statDir = await fs.stat(path);
12
- if (!statDir.isDirectory()) {
13
- throw new error_1.CliError('Developer: All commands must be inside a folder');
14
- }
15
- const statIndex = await fs.stat(`${path}/index.js`);
16
- if (!statIndex.isFile()) {
17
- throw new error_1.CliError('Developer: All commands must have an "index.js" file inside');
18
- }
19
- return dir;
20
- });
21
- return Promise.all(commands);
22
- };
23
- exports.getCommands = getCommands;
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb21tYW5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBOEI7QUFFOUIsbUNBQWtDO0FBRXJCLFFBQUEsYUFBYSxHQUFHLElBQUEsY0FBTyxFQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQTtBQUV2RCxNQUFNLFdBQVcsR0FBRyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQTZCLEVBQXFCLEVBQUU7SUFDeEYsTUFBTSxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLHFCQUFhLENBQUMsQ0FBQTtJQUVuRCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUM3QyxNQUFNLElBQUksR0FBRyxJQUFBLGNBQU8sRUFBQyxxQkFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBRXhDLE1BQU0sT0FBTyxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUVuQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQzFCLE1BQU0sSUFBSSxnQkFBUSxDQUFDLGlEQUFpRCxDQUFDLENBQUE7U0FDdEU7UUFFRCxNQUFNLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFBO1FBQ25ELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDdkIsTUFBTSxJQUFJLGdCQUFRLENBQUMsNkRBQTZELENBQUMsQ0FBQTtTQUNsRjtRQUVELE9BQU8sR0FBRyxDQUFBO0lBQ1osQ0FBQyxDQUFDLENBQUE7SUFFRixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUE7QUFDOUIsQ0FBQyxDQUFBO0FBckJZLFFBQUEsV0FBVyxlQXFCdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAncGF0aCdcbmltcG9ydCB7IENsaUNvbXBvbmVudHMgfSBmcm9tICcuLi9jb21wb25lbnRzJ1xuaW1wb3J0IHsgQ2xpRXJyb3IgfSBmcm9tICcuL2Vycm9yJ1xuXG5leHBvcnQgY29uc3QgQ09NTUFORFNfUEFUSCA9IHJlc29sdmUoX19kaXJuYW1lLCAnLi4vY29tbWFuZHMnKVxuXG5leHBvcnQgY29uc3QgZ2V0Q29tbWFuZHMgPSBhc3luYyAoeyBmcyB9OiBQaWNrPENsaUNvbXBvbmVudHMsICdmcyc+KTogUHJvbWlzZTxzdHJpbmdbXT4gPT4ge1xuICBjb25zdCBjb21tYW5kRGlycyA9IGF3YWl0IGZzLnJlYWRkaXIoQ09NTUFORFNfUEFUSClcblxuICBjb25zdCBjb21tYW5kcyA9IGNvbW1hbmREaXJzLm1hcChhc3luYyAoZGlyKSA9PiB7XG4gICAgY29uc3QgcGF0aCA9IHJlc29sdmUoQ09NTUFORFNfUEFUSCwgZGlyKVxuXG4gICAgY29uc3Qgc3RhdERpciA9IGF3YWl0IGZzLnN0YXQocGF0aClcblxuICAgIGlmICghc3RhdERpci5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICB0aHJvdyBuZXcgQ2xpRXJyb3IoJ0RldmVsb3BlcjogQWxsIGNvbW1hbmRzIG11c3QgYmUgaW5zaWRlIGEgZm9sZGVyJylcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0SW5kZXggPSBhd2FpdCBmcy5zdGF0KGAke3BhdGh9L2luZGV4LmpzYClcbiAgICBpZiAoIXN0YXRJbmRleC5pc0ZpbGUoKSkge1xuICAgICAgdGhyb3cgbmV3IENsaUVycm9yKCdEZXZlbG9wZXI6IEFsbCBjb21tYW5kcyBtdXN0IGhhdmUgYW4gXCJpbmRleC5qc1wiIGZpbGUgaW5zaWRlJylcbiAgICB9XG5cbiAgICByZXR1cm4gZGlyXG4gIH0pXG5cbiAgcmV0dXJuIFByb21pc2UuYWxsKGNvbW1hbmRzKVxufVxuIl19
@@ -1,28 +0,0 @@
1
- import { resolve } from 'path'
2
- import { CliComponents } from '../components'
3
- import { CliError } from './error'
4
-
5
- export const COMMANDS_PATH = resolve(__dirname, '../commands')
6
-
7
- export const getCommands = async ({ fs }: Pick<CliComponents, 'fs'>): Promise<string[]> => {
8
- const commandDirs = await fs.readdir(COMMANDS_PATH)
9
-
10
- const commands = commandDirs.map(async (dir) => {
11
- const path = resolve(COMMANDS_PATH, dir)
12
-
13
- const statDir = await fs.stat(path)
14
-
15
- if (!statDir.isDirectory()) {
16
- throw new CliError('Developer: All commands must be inside a folder')
17
- }
18
-
19
- const statIndex = await fs.stat(`${path}/index.js`)
20
- if (!statIndex.isFile()) {
21
- throw new CliError('Developer: All commands must have an "index.js" file inside')
22
- }
23
-
24
- return dir
25
- })
26
-
27
- return Promise.all(commands)
28
- }
@@ -1,2 +0,0 @@
1
- export declare class CliError extends Error {
2
- }
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CliError = void 0;
4
- class CliError extends Error {
5
- }
6
- exports.CliError = CliError;
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxNQUFhLFFBQVMsU0FBUSxLQUFLO0NBQUc7QUFBdEMsNEJBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIENsaUVycm9yIGV4dGVuZHMgRXJyb3Ige31cbiJdfQ==
@@ -1 +0,0 @@
1
- export class CliError extends Error {}
@@ -1,8 +0,0 @@
1
- interface Options {
2
- env: {
3
- [key: string]: string;
4
- };
5
- silent: boolean;
6
- }
7
- export declare function exec(cwd: string, command: string, args: string[], { env, silent }?: Partial<Options>): Promise<void>;
8
- export {};
package/cli/utils/exec.js DELETED
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.exec = void 0;
4
- const child_process_1 = require("child_process");
5
- function exec(cwd, command, args, { env, silent } = {}) {
6
- return new Promise((resolve, reject) => {
7
- const child = (0, child_process_1.spawn)(command, args, {
8
- shell: true,
9
- cwd,
10
- env: Object.assign(Object.assign(Object.assign({}, process.env), { NODE_ENV: '' }), env)
11
- });
12
- if (!silent) {
13
- child.stdout.pipe(process.stdout);
14
- child.stderr.pipe(process.stderr);
15
- }
16
- child.stdout.on('data', (data) => {
17
- if (data.toString().indexOf('The compiler is watching file changes...') !== -1) {
18
- return resolve(undefined);
19
- }
20
- });
21
- child.on('close', (code) => {
22
- if (code !== 0) {
23
- const _ = `${command} ${args.join(' ')}`;
24
- reject(new Error(`Command "${_}" exited with code ${code}. Please try running the command manually`));
25
- return;
26
- }
27
- resolve(undefined);
28
- });
29
- });
30
- }
31
- exports.exec = exec;
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImV4ZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQXFDO0FBT3JDLFNBQWdCLElBQUksQ0FDbEIsR0FBVyxFQUNYLE9BQWUsRUFDZixJQUFjLEVBQ2QsRUFBRSxHQUFHLEVBQUUsTUFBTSxLQUF1QixFQUFFO0lBRXRDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDckMsTUFBTSxLQUFLLEdBQUcsSUFBQSxxQkFBSyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7WUFDakMsS0FBSyxFQUFFLElBQUk7WUFDWCxHQUFHO1lBQ0gsR0FBRyxnREFBTyxPQUFPLENBQUMsR0FBRyxLQUFFLFFBQVEsRUFBRSxFQUFFLEtBQUssR0FBRyxDQUFFO1NBQzlDLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDakMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1NBQ2xDO1FBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDL0IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLDBDQUEwQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQzlFLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO2FBQzFCO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFFRixLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFO1lBQ2pDLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRTtnQkFDZCxNQUFNLENBQUMsR0FBRyxHQUFHLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUE7Z0JBQ3hDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsc0JBQXNCLElBQUksMkNBQTJDLENBQUMsQ0FBQyxDQUFBO2dCQUNyRyxPQUFNO2FBQ1A7WUFFRCxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDcEIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFsQ0Qsb0JBa0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJ1xuXG5pbnRlcmZhY2UgT3B0aW9ucyB7XG4gIGVudjogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxuICBzaWxlbnQ6IGJvb2xlYW5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4ZWMoXG4gIGN3ZDogc3RyaW5nLFxuICBjb21tYW5kOiBzdHJpbmcsXG4gIGFyZ3M6IHN0cmluZ1tdLFxuICB7IGVudiwgc2lsZW50IH06IFBhcnRpYWw8T3B0aW9ucz4gPSB7fVxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgY2hpbGQgPSBzcGF3bihjb21tYW5kLCBhcmdzLCB7XG4gICAgICBzaGVsbDogdHJ1ZSxcbiAgICAgIGN3ZCxcbiAgICAgIGVudjogeyAuLi5wcm9jZXNzLmVudiwgTk9ERV9FTlY6ICcnLCAuLi5lbnYgfVxuICAgIH0pXG5cbiAgICBpZiAoIXNpbGVudCkge1xuICAgICAgY2hpbGQuc3Rkb3V0LnBpcGUocHJvY2Vzcy5zdGRvdXQpXG4gICAgICBjaGlsZC5zdGRlcnIucGlwZShwcm9jZXNzLnN0ZGVycilcbiAgICB9XG5cbiAgICBjaGlsZC5zdGRvdXQub24oJ2RhdGEnLCAoZGF0YSkgPT4ge1xuICAgICAgaWYgKGRhdGEudG9TdHJpbmcoKS5pbmRleE9mKCdUaGUgY29tcGlsZXIgaXMgd2F0Y2hpbmcgZmlsZSBjaGFuZ2VzLi4uJykgIT09IC0xKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKHVuZGVmaW5lZClcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgY2hpbGQub24oJ2Nsb3NlJywgKGNvZGU6IG51bWJlcikgPT4ge1xuICAgICAgaWYgKGNvZGUgIT09IDApIHtcbiAgICAgICAgY29uc3QgXyA9IGAke2NvbW1hbmR9ICR7YXJncy5qb2luKCcgJyl9YFxuICAgICAgICByZWplY3QobmV3IEVycm9yKGBDb21tYW5kIFwiJHtffVwiIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfS4gUGxlYXNlIHRyeSBydW5uaW5nIHRoZSBjb21tYW5kIG1hbnVhbGx5YCkpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICByZXNvbHZlKHVuZGVmaW5lZClcbiAgICB9KVxuICB9KVxufVxuIl19
package/cli/utils/exec.ts DELETED
@@ -1,42 +0,0 @@
1
- import { spawn } from 'child_process'
2
-
3
- interface Options {
4
- env: { [key: string]: string }
5
- silent: boolean
6
- }
7
-
8
- export function exec(
9
- cwd: string,
10
- command: string,
11
- args: string[],
12
- { env, silent }: Partial<Options> = {}
13
- ): Promise<void> {
14
- return new Promise((resolve, reject) => {
15
- const child = spawn(command, args, {
16
- shell: true,
17
- cwd,
18
- env: { ...process.env, NODE_ENV: '', ...env }
19
- })
20
-
21
- if (!silent) {
22
- child.stdout.pipe(process.stdout)
23
- child.stderr.pipe(process.stderr)
24
- }
25
-
26
- child.stdout.on('data', (data) => {
27
- if (data.toString().indexOf('The compiler is watching file changes...') !== -1) {
28
- return resolve(undefined)
29
- }
30
- })
31
-
32
- child.on('close', (code: number) => {
33
- if (code !== 0) {
34
- const _ = `${command} ${args.join(' ')}`
35
- reject(new Error(`Command "${_}" exited with code ${code}. Please try running the command manually`))
36
- return
37
- }
38
-
39
- resolve(undefined)
40
- })
41
- })
42
- }
package/cli/utils/fs.d.ts DELETED
@@ -1,10 +0,0 @@
1
- import { IFileSystemComponent } from '../components/fs';
2
- import { IFetchComponent } from '../components/fetch';
3
- export declare function isDirectoryEmpty(components: {
4
- fs: IFileSystemComponent;
5
- }, dir: string): Promise<boolean>;
6
- export declare function download(components: {
7
- fs: IFileSystemComponent;
8
- fetch: IFetchComponent;
9
- }, url: string, dest: string): Promise<string>;
10
- export declare function extract(path: string, dest: string): Promise<string>;
package/cli/utils/fs.js DELETED
@@ -1,26 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.extract = exports.download = exports.isDirectoryEmpty = void 0;
7
- const extract_zip_1 = __importDefault(require("extract-zip"));
8
- const path_1 = require("path");
9
- async function isDirectoryEmpty(components, dir) {
10
- const files = await components.fs.readdir(dir);
11
- return !files.length;
12
- }
13
- exports.isDirectoryEmpty = isDirectoryEmpty;
14
- async function download(components, url, dest) {
15
- const data = await (await components.fetch.fetch(url)).arrayBuffer();
16
- await components.fs.writeFile(dest, Buffer.from(data));
17
- return dest;
18
- }
19
- exports.download = download;
20
- async function extract(path, dest) {
21
- const destPath = (0, path_1.resolve)(dest);
22
- await (0, extract_zip_1.default)((0, path_1.resolve)(path), { dir: destPath });
23
- return destPath;
24
- }
25
- exports.extract = extract;
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw4REFBb0M7QUFDcEMsK0JBQThCO0FBUXZCLEtBQUssVUFBVSxnQkFBZ0IsQ0FBQyxVQUF3QyxFQUFFLEdBQVc7SUFDMUYsTUFBTSxLQUFLLEdBQUcsTUFBTSxVQUFVLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUM5QyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQTtBQUN0QixDQUFDO0FBSEQsNENBR0M7QUFPTSxLQUFLLFVBQVUsUUFBUSxDQUM1QixVQUFnRSxFQUNoRSxHQUFXLEVBQ1gsSUFBWTtJQUlaLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDcEUsTUFBTSxVQUFVLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ3RELE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQztBQVZELDRCQVVDO0FBT00sS0FBSyxVQUFVLE9BQU8sQ0FBQyxJQUFZLEVBQUUsSUFBWTtJQUN0RCxNQUFNLFFBQVEsR0FBRyxJQUFBLGNBQU8sRUFBQyxJQUFJLENBQUMsQ0FBQTtJQUM5QixNQUFNLElBQUEscUJBQVUsRUFBQyxJQUFBLGNBQU8sRUFBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQ2xELE9BQU8sUUFBUSxDQUFBO0FBQ2pCLENBQUM7QUFKRCwwQkFJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBleHRyYWN0WmlwIGZyb20gJ2V4dHJhY3QtemlwJ1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ3BhdGgnXG5pbXBvcnQgeyBJRmlsZVN5c3RlbUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZnMnXG5pbXBvcnQgeyBJRmV0Y2hDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2ZldGNoJ1xuXG4vKipcbiAqIENoZWNrJ3MgaWYgZGlyZWN0b3J5IGlzIGVtcHR5XG4gKiBAcGFyYW0gZGlyIERpcmVjdG9yeSB0byBjaGVjayBmb3IgZW1wdHluZXNzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpc0RpcmVjdG9yeUVtcHR5KGNvbXBvbmVudHM6IHsgZnM6IElGaWxlU3lzdGVtQ29tcG9uZW50IH0sIGRpcjogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IGZpbGVzID0gYXdhaXQgY29tcG9uZW50cy5mcy5yZWFkZGlyKGRpcilcbiAgcmV0dXJuICFmaWxlcy5sZW5ndGhcbn1cblxuLyoqXG4gKiBEb3dubG9hZCBhIGZpbGVcbiAqIEBwYXJhbSB1cmwgVVJMIG9mIHRoZSBmaWxlXG4gKiBAcGFyYW0gZGVzdCBQYXRoIHRvIHdoZXJlIHRvIHNhdmUgdGhlIGZpbGVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRvd25sb2FkKFxuICBjb21wb25lbnRzOiB7IGZzOiBJRmlsZVN5c3RlbUNvbXBvbmVudDsgZmV0Y2g6IElGZXRjaENvbXBvbmVudCB9LFxuICB1cmw6IHN0cmluZyxcbiAgZGVzdDogc3RyaW5nXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICAvLyB3ZSBzaG91bGQgcmVtb3ZlIHRoaXMgcGFja2FnZSBhbmQgdXNlIHRoZSBuYXRpdmUgXCJmZXRjaFwiIHdoZW4gTm9kZVxuICAvLyByZWxlYXNlcyBpdCBhcyBzdGFibGU6IGh0dHBzOi8vbm9kZWpzLm9yZy9kb2NzL2xhdGVzdC12MTgueC9hcGkvZ2xvYmFscy5odG1sI2ZldGNoXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCAoYXdhaXQgY29tcG9uZW50cy5mZXRjaC5mZXRjaCh1cmwpKS5hcnJheUJ1ZmZlcigpXG4gIGF3YWl0IGNvbXBvbmVudHMuZnMud3JpdGVGaWxlKGRlc3QsIEJ1ZmZlci5mcm9tKGRhdGEpKVxuICByZXR1cm4gZGVzdFxufVxuXG4vKipcbiAqIEV4dHJhY3RzIGEgLnppcCBmaWxlXG4gKiBAcGFyYW0gdXJsIFBhdGggb2YgdGhlIHppcCBmaWxlXG4gKiBAcGFyYW0gZGVzdCBQYXRoIHRvIHdoZXJlIHRvIGV4dHJhY3QgdGhlIHppcCBmaWxlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHRyYWN0KHBhdGg6IHN0cmluZywgZGVzdDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgZGVzdFBhdGggPSByZXNvbHZlKGRlc3QpXG4gIGF3YWl0IGV4dHJhY3RaaXAocmVzb2x2ZShwYXRoKSwgeyBkaXI6IGRlc3RQYXRoIH0pXG4gIHJldHVybiBkZXN0UGF0aFxufVxuIl19
package/cli/utils/fs.ts DELETED
@@ -1,41 +0,0 @@
1
- import extractZip from 'extract-zip'
2
- import { resolve } from 'path'
3
- import { IFileSystemComponent } from '../components/fs'
4
- import { IFetchComponent } from '../components/fetch'
5
-
6
- /**
7
- * Check's if directory is empty
8
- * @param dir Directory to check for emptyness
9
- */
10
- export async function isDirectoryEmpty(components: { fs: IFileSystemComponent }, dir: string): Promise<boolean> {
11
- const files = await components.fs.readdir(dir)
12
- return !files.length
13
- }
14
-
15
- /**
16
- * Download a file
17
- * @param url URL of the file
18
- * @param dest Path to where to save the file
19
- */
20
- export async function download(
21
- components: { fs: IFileSystemComponent; fetch: IFetchComponent },
22
- url: string,
23
- dest: string
24
- ): Promise<string> {
25
- // we should remove this package and use the native "fetch" when Node
26
- // releases it as stable: https://nodejs.org/docs/latest-v18.x/api/globals.html#fetch
27
- const data = await (await components.fetch.fetch(url)).arrayBuffer()
28
- await components.fs.writeFile(dest, Buffer.from(data))
29
- return dest
30
- }
31
-
32
- /**
33
- * Extracts a .zip file
34
- * @param url Path of the zip file
35
- * @param dest Path to where to extract the zip file
36
- */
37
- export async function extract(path: string, dest: string): Promise<string> {
38
- const destPath = resolve(dest)
39
- await extractZip(resolve(path), { dir: destPath })
40
- return destPath
41
- }
@@ -1,5 +0,0 @@
1
- export declare function log(message: string): void;
2
- export declare function fail(message: string): void;
3
- export declare function warn(message: string): void;
4
- export declare function info(message: string): void;
5
- export declare function succeed(message: string): void;
package/cli/utils/log.js DELETED
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.succeed = exports.info = exports.warn = exports.fail = exports.log = void 0;
4
- const colorette_1 = require("colorette");
5
- const stderr = (...parameters) => process.stderr.write(`${parameters.join('')}\n`);
6
- const colors = (0, colorette_1.createColors)({
7
- useColor: process.env.FORCE_COLOR !== '0' && !process.env.NO_COLOR
8
- });
9
- function log(message) {
10
- stderr(message);
11
- }
12
- exports.log = log;
13
- function fail(message) {
14
- stderr(colors.redBright(' Error: '), message);
15
- }
16
- exports.fail = fail;
17
- function warn(message) {
18
- stderr(colors.yellow('Warning: '), message);
19
- }
20
- exports.warn = warn;
21
- function info(message) {
22
- stderr(colors.blueBright(' Info: '), message);
23
- }
24
- exports.info = info;
25
- function succeed(message) {
26
- stderr(colors.green('Success: '), message);
27
- }
28
- exports.succeed = succeed;
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibG9nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUF3QztBQVl4QyxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsVUFBOEIsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUl0RyxNQUFNLE1BQU0sR0FBRyxJQUFBLHdCQUFZLEVBQUM7SUFDMUIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUTtDQUNuRSxDQUFDLENBQUE7QUFFRixTQUFnQixHQUFHLENBQUMsT0FBZTtJQUNqQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7QUFDakIsQ0FBQztBQUZELGtCQUVDO0FBRUQsU0FBZ0IsSUFBSSxDQUFDLE9BQWU7SUFDbEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDaEQsQ0FBQztBQUZELG9CQUVDO0FBRUQsU0FBZ0IsSUFBSSxDQUFDLE9BQWU7SUFDbEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDN0MsQ0FBQztBQUZELG9CQUVDO0FBRUQsU0FBZ0IsSUFBSSxDQUFDLE9BQWU7SUFDbEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDakQsQ0FBQztBQUZELG9CQUVDO0FBRUQsU0FBZ0IsT0FBTyxDQUFDLE9BQWU7SUFDckMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDNUMsQ0FBQztBQUZELDBCQUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQ29sb3JzIH0gZnJvbSAnY29sb3JldHRlJ1xuXG4vKipcbiAqIFRoaXMgZmlsZSBpbWl0YXRlcyBcImNhcmdvXCIgbG9ncy4gVGhlIHdvcmRzIGFyZSBhbGlnbmVkIHdpdGggdGhlIGNvbG9uIGxpa2UgdGhpczpcbiAqICAgICAgICBWXG4gKiAgIEVycm9yOiBzb21lIHRleHQgcHJvdmlkZWQgYXMgYXJndW1lblxuICogICAgSW5mbzogc29tZSB0ZXh0IHByb3ZpZGVkIGFzIGFyZ3VtZW5cbiAqIFN1Y2Nlc3M6IHNvbWUgdGV4dCBwcm92aWRlZCBhcyBhcmd1bWVuXG4gKiBXYXJuaW5nOiBzb21lIHRleHQgcHJvdmlkZWQgYXMgYXJndW1lblxuICogICAgICAgIF5cbiAqL1xuXG5jb25zdCBzdGRlcnIgPSAoLi4ucGFyYW1ldGVyczogcmVhZG9ubHkgdW5rbm93bltdKSA9PiBwcm9jZXNzLnN0ZGVyci53cml0ZShgJHtwYXJhbWV0ZXJzLmpvaW4oJycpfVxcbmApXG5cbi8vIEBzZWUgaHR0cHM6Ly9uby1jb2xvci5vcmdcbi8vIEBzZWUgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvY2hhbGtcbmNvbnN0IGNvbG9ycyA9IGNyZWF0ZUNvbG9ycyh7XG4gIHVzZUNvbG9yOiBwcm9jZXNzLmVudi5GT1JDRV9DT0xPUiAhPT0gJzAnICYmICFwcm9jZXNzLmVudi5OT19DT0xPUlxufSlcblxuZXhwb3J0IGZ1bmN0aW9uIGxvZyhtZXNzYWdlOiBzdHJpbmcpIHtcbiAgc3RkZXJyKG1lc3NhZ2UpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmYWlsKG1lc3NhZ2U6IHN0cmluZykge1xuICBzdGRlcnIoY29sb3JzLnJlZEJyaWdodCgnICBFcnJvcjogJyksIG1lc3NhZ2UpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3YXJuKG1lc3NhZ2U6IHN0cmluZykge1xuICBzdGRlcnIoY29sb3JzLnllbGxvdygnV2FybmluZzogJyksIG1lc3NhZ2UpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmZvKG1lc3NhZ2U6IHN0cmluZykge1xuICBzdGRlcnIoY29sb3JzLmJsdWVCcmlnaHQoJyAgIEluZm86ICcpLCBtZXNzYWdlKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VjY2VlZChtZXNzYWdlOiBzdHJpbmcpIHtcbiAgc3RkZXJyKGNvbG9ycy5ncmVlbignU3VjY2VzczogJyksIG1lc3NhZ2UpXG59XG4iXX0=
package/cli/utils/log.ts DELETED
@@ -1,39 +0,0 @@
1
- import { createColors } from 'colorette'
2
-
3
- /**
4
- * This file imitates "cargo" logs. The words are aligned with the colon like this:
5
- * V
6
- * Error: some text provided as argumen
7
- * Info: some text provided as argumen
8
- * Success: some text provided as argumen
9
- * Warning: some text provided as argumen
10
- * ^
11
- */
12
-
13
- const stderr = (...parameters: readonly unknown[]) => process.stderr.write(`${parameters.join('')}\n`)
14
-
15
- // @see https://no-color.org
16
- // @see https://www.npmjs.com/package/chalk
17
- const colors = createColors({
18
- useColor: process.env.FORCE_COLOR !== '0' && !process.env.NO_COLOR
19
- })
20
-
21
- export function log(message: string) {
22
- stderr(message)
23
- }
24
-
25
- export function fail(message: string) {
26
- stderr(colors.redBright(' Error: '), message)
27
- }
28
-
29
- export function warn(message: string) {
30
- stderr(colors.yellow('Warning: '), message)
31
- }
32
-
33
- export function info(message: string) {
34
- stderr(colors.blueBright(' Info: '), message)
35
- }
36
-
37
- export function succeed(message: string) {
38
- stderr(colors.green('Success: '), message)
39
- }
@@ -1,9 +0,0 @@
1
- export type Primitive = string | number;
2
- export type Dict = {
3
- [key: string]: Dict | Primitive | Primitive[];
4
- };
5
- export declare const isPrimitive: (value: any) => value is Primitive;
6
- export declare const eqPrimitive: (value: Primitive, value2: Primitive) => boolean;
7
- export declare const isObject: (value: any) => value is Dict;
8
- export declare const isPrimitiveEqualTo: (val: Primitive, val2: any) => val2 is Primitive;
9
- export declare const hasPrimitiveKeys: <T extends Dict>(original: Record<string, unknown>, comparator: T) => boolean;
@@ -1,45 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hasPrimitiveKeys = exports.isPrimitiveEqualTo = exports.isObject = exports.eqPrimitive = exports.isPrimitive = void 0;
4
- const isPrimitive = (value) => (typeof value === 'string' && value.length > 0) || (typeof value === 'number' && !Number.isNaN(value));
5
- exports.isPrimitive = isPrimitive;
6
- const eqPrimitive = (value, value2) => value === value2;
7
- exports.eqPrimitive = eqPrimitive;
8
- const isObject = (value) => typeof value === 'object' && !Array.isArray(value) && value !== null;
9
- exports.isObject = isObject;
10
- const isPrimitiveEqualTo = (val, val2) => (0, exports.isPrimitive)(val2) && (0, exports.eqPrimitive)(val, val2);
11
- exports.isPrimitiveEqualTo = isPrimitiveEqualTo;
12
- const hasPrimitiveKeys = (original, comparator) => {
13
- for (const [key, value] of Object.entries(comparator)) {
14
- const originalValue = original[key];
15
- if (originalValue === undefined) {
16
- return false;
17
- }
18
- else if ((0, exports.isPrimitive)(value) && !(0, exports.isPrimitiveEqualTo)(value, originalValue)) {
19
- return false;
20
- }
21
- else if (Array.isArray(value)) {
22
- if (Array.isArray(originalValue)) {
23
- const set = new Set(value);
24
- for (const v of originalValue) {
25
- if (!set.has(v))
26
- return false;
27
- }
28
- }
29
- else {
30
- const foundPrimitive = value.some((val) => (0, exports.isPrimitive)(val) && (0, exports.isPrimitiveEqualTo)(val, originalValue));
31
- if (!foundPrimitive) {
32
- return false;
33
- }
34
- }
35
- }
36
- else if ((0, exports.isObject)(value)) {
37
- if ((0, exports.isObject)(originalValue) && !(0, exports.hasPrimitiveKeys)(originalValue, value)) {
38
- return false;
39
- }
40
- }
41
- }
42
- return true;
43
- };
44
- exports.hasPrimitiveKeys = hasPrimitiveKeys;
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsib2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU1PLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBVSxFQUFzQixFQUFFLENBQzVELENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7QUFEM0YsUUFBQSxXQUFXLGVBQ2dGO0FBS2pHLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBZ0IsRUFBRSxNQUFpQixFQUFXLEVBQUUsQ0FBQyxLQUFLLEtBQUssTUFBTSxDQUFBO0FBQWhGLFFBQUEsV0FBVyxlQUFxRTtBQUt0RixNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQVUsRUFBaUIsRUFBRSxDQUNwRCxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUE7QUFEekQsUUFBQSxRQUFRLFlBQ2lEO0FBSy9ELE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxHQUFjLEVBQUUsSUFBUyxFQUFxQixFQUFFLENBQ2pGLElBQUEsbUJBQVcsRUFBQyxJQUFJLENBQUMsSUFBSSxJQUFBLG1CQUFXLEVBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFBO0FBRGhDLFFBQUEsa0JBQWtCLHNCQUNjO0FBVXRDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBaUIsUUFBaUMsRUFBRSxVQUFhLEVBQVcsRUFBRTtJQUM1RyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUNyRCxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDbkMsSUFBSSxhQUFhLEtBQUssU0FBUyxFQUFFO1lBQy9CLE9BQU8sS0FBSyxDQUFBO1NBQ2I7YUFBTSxJQUFJLElBQUEsbUJBQVcsRUFBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUEsMEJBQWtCLEVBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxFQUFFO1lBQzFFLE9BQU8sS0FBSyxDQUFBO1NBQ2I7YUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUNoQyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtnQkFDMUIsS0FBSyxNQUFNLENBQUMsSUFBSSxhQUFhLEVBQUU7b0JBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFBRSxPQUFPLEtBQUssQ0FBQTtpQkFDOUI7YUFDRjtpQkFBTTtnQkFDTCxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFBLG1CQUFXLEVBQUMsR0FBRyxDQUFDLElBQUksSUFBQSwwQkFBa0IsRUFBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQTtnQkFDdEcsSUFBSSxDQUFDLGNBQWMsRUFBRTtvQkFDbkIsT0FBTyxLQUFLLENBQUE7aUJBQ2I7YUFDRjtTQUNGO2FBQU0sSUFBSSxJQUFBLGdCQUFRLEVBQUMsS0FBSyxDQUFDLEVBQUU7WUFDMUIsSUFBSSxJQUFBLGdCQUFRLEVBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFBLHdCQUFnQixFQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDdEUsT0FBTyxLQUFLLENBQUE7YUFDYjtTQUNGO0tBQ0Y7SUFFRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUMsQ0FBQTtBQTNCWSxRQUFBLGdCQUFnQixvQkEyQjVCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgUHJpbWl0aXZlID0gc3RyaW5nIHwgbnVtYmVyXG5leHBvcnQgdHlwZSBEaWN0ID0geyBba2V5OiBzdHJpbmddOiBEaWN0IHwgUHJpbWl0aXZlIHwgUHJpbWl0aXZlW10gfVxuXG4vKlxuICogUmV0dXJucyB0cnVlIGlmIHZhbHVlIGlzIGEgXCJQcmltaXRpdmVcIlxuICovXG5leHBvcnQgY29uc3QgaXNQcmltaXRpdmUgPSAodmFsdWU6IGFueSk6IHZhbHVlIGlzIFByaW1pdGl2ZSA9PlxuICAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGggPiAwKSB8fCAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiAhTnVtYmVyLmlzTmFOKHZhbHVlKSlcblxuLypcbiAqIFJldHVybnMgdHJ1ZSBpZiBib3RoIHBhcmFtZXRlcnMgYXJlIGVxdWFsXG4gKi9cbmV4cG9ydCBjb25zdCBlcVByaW1pdGl2ZSA9ICh2YWx1ZTogUHJpbWl0aXZlLCB2YWx1ZTI6IFByaW1pdGl2ZSk6IGJvb2xlYW4gPT4gdmFsdWUgPT09IHZhbHVlMlxuXG4vKlxuICogUmV0dXJucyB0cnVlIGlmIHZhbHVlIGlzIGEgSlMgT2JqZWN0XG4gKi9cbmV4cG9ydCBjb25zdCBpc09iamVjdCA9ICh2YWx1ZTogYW55KTogdmFsdWUgaXMgRGljdCA9PlxuICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZSAhPT0gbnVsbFxuXG4vKlxuICogUmV0dXJucyB0cnVlIGlmIHNlY29uZCBwYXJhbXRlciBpcyBhIFwiUHJpbWl0aXZlXCIgYW5kIGVxdWFsIHRvIGZpcnN0IHBhcmFtZXRlclxuICovXG5leHBvcnQgY29uc3QgaXNQcmltaXRpdmVFcXVhbFRvID0gKHZhbDogUHJpbWl0aXZlLCB2YWwyOiBhbnkpOiB2YWwyIGlzIFByaW1pdGl2ZSA9PlxuICBpc1ByaW1pdGl2ZSh2YWwyKSAmJiBlcVByaW1pdGl2ZSh2YWwsIHZhbDIpXG5cbi8qXG4gKiBSZXR1cm5zIHRydWUgaWYgXCJvcmlnaW5hbFwiIGhhcyBhbGwgb2YgdGhlIHByb3BzIGRlc2NyaWJlZCBpbiBcImNvbXBhcmF0b3JcIlxuICogTk9URTogY29tcGFyYXRvciBjYW4gcHJvdmlkZSBhIGxpc3Qgb2YgdmFsaWQgXCJQcmltaXRpdmVzXCIgdG8gbWF0Y2ggdmFsdWVzIGZyb20gXCJvcmlnaW5hbFwiXG4gKiBFWDpcbiAqIG9yaWdpbmFsID0geyBwcm9wMTogXCJzb21lLXZhbFwiIH1cbiAqIGNvbXBhcmF0b3IgPSB7IHByb3AxOiBbMSwgMiwgXCJzb21lLXZhbFwiXSB9XG4gKiB3aWxsIHJldHVybiB0cnVlXG4gKi9cbmV4cG9ydCBjb25zdCBoYXNQcmltaXRpdmVLZXlzID0gPFQgZXh0ZW5kcyBEaWN0PihvcmlnaW5hbDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGNvbXBhcmF0b3I6IFQpOiBib29sZWFuID0+IHtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoY29tcGFyYXRvcikpIHtcbiAgICBjb25zdCBvcmlnaW5hbFZhbHVlID0gb3JpZ2luYWxba2V5XVxuICAgIGlmIChvcmlnaW5hbFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0gZWxzZSBpZiAoaXNQcmltaXRpdmUodmFsdWUpICYmICFpc1ByaW1pdGl2ZUVxdWFsVG8odmFsdWUsIG9yaWdpbmFsVmFsdWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShvcmlnaW5hbFZhbHVlKSkge1xuICAgICAgICBjb25zdCBzZXQgPSBuZXcgU2V0KHZhbHVlKVxuICAgICAgICBmb3IgKGNvbnN0IHYgb2Ygb3JpZ2luYWxWYWx1ZSkge1xuICAgICAgICAgIGlmICghc2V0Lmhhcyh2KSkgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGZvdW5kUHJpbWl0aXZlID0gdmFsdWUuc29tZSgodmFsKSA9PiBpc1ByaW1pdGl2ZSh2YWwpICYmIGlzUHJpbWl0aXZlRXF1YWxUbyh2YWwsIG9yaWdpbmFsVmFsdWUpKVxuICAgICAgICBpZiAoIWZvdW5kUHJpbWl0aXZlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgaWYgKGlzT2JqZWN0KG9yaWdpbmFsVmFsdWUpICYmICFoYXNQcmltaXRpdmVLZXlzKG9yaWdpbmFsVmFsdWUsIHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuIl19