@jujulego/jill 1.1.18 → 2.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/dist/application.context.d.ts +28 -0
  2. package/dist/application.context.d.ts.map +1 -0
  3. package/dist/application.context.js +30 -0
  4. package/dist/application.context.js.map +1 -0
  5. package/dist/application.d.ts +7 -0
  6. package/dist/application.d.ts.map +1 -0
  7. package/dist/application.js +125 -0
  8. package/dist/application.js.map +1 -0
  9. package/dist/command.d.ts +7 -20
  10. package/dist/command.d.ts.map +1 -0
  11. package/dist/command.js +17 -62
  12. package/dist/command.js.map +1 -0
  13. package/dist/commands/each.command.d.ts +14 -13
  14. package/dist/commands/each.command.d.ts.map +1 -0
  15. package/dist/commands/each.command.js +144 -81
  16. package/dist/commands/each.command.js.map +1 -0
  17. package/dist/commands/list.command.d.ts +17 -14
  18. package/dist/commands/list.command.d.ts.map +1 -0
  19. package/dist/commands/list.command.js +199 -122
  20. package/dist/commands/list.command.js.map +1 -0
  21. package/dist/commands/run.command.d.ts +10 -11
  22. package/dist/commands/run.command.d.ts.map +1 -0
  23. package/dist/commands/run.command.js +73 -39
  24. package/dist/commands/run.command.js.map +1 -0
  25. package/dist/commands/tree.command.d.ts +7 -0
  26. package/dist/commands/tree.command.d.ts.map +1 -0
  27. package/dist/commands/tree.command.js +35 -0
  28. package/dist/commands/tree.command.js.map +1 -0
  29. package/dist/components/List.d.ts +9 -0
  30. package/dist/components/List.d.ts.map +1 -0
  31. package/dist/components/List.js +57 -0
  32. package/dist/components/List.js.map +1 -0
  33. package/dist/components/StaticLogs.d.ts +2 -0
  34. package/dist/components/StaticLogs.d.ts.map +1 -0
  35. package/dist/components/StaticLogs.js +77 -0
  36. package/dist/components/StaticLogs.js.map +1 -0
  37. package/dist/components/TaskSetSpinner.d.ts +6 -0
  38. package/dist/components/TaskSetSpinner.d.ts.map +1 -0
  39. package/dist/components/TaskSetSpinner.js +41 -0
  40. package/dist/components/TaskSetSpinner.js.map +1 -0
  41. package/dist/components/TaskSpinner.d.ts +6 -0
  42. package/dist/components/TaskSpinner.d.ts.map +1 -0
  43. package/dist/components/TaskSpinner.js +72 -0
  44. package/dist/components/TaskSpinner.js.map +1 -0
  45. package/dist/components/WorkspaceTree.d.ts +8 -0
  46. package/dist/components/WorkspaceTree.d.ts.map +1 -0
  47. package/dist/components/WorkspaceTree.js +153 -0
  48. package/dist/components/WorkspaceTree.js.map +1 -0
  49. package/dist/index.d.ts +1 -1
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +8 -8
  52. package/dist/index.js.map +1 -0
  53. package/dist/main.d.ts.map +1 -0
  54. package/dist/main.js +48 -21
  55. package/dist/main.js.map +1 -0
  56. package/dist/wrapper.d.ts +6 -0
  57. package/dist/wrapper.d.ts.map +1 -0
  58. package/dist/wrapper.js +30 -0
  59. package/dist/wrapper.js.map +1 -0
  60. package/dist/wrappers/project.wrapper.d.ts +7 -0
  61. package/dist/wrappers/project.wrapper.d.ts.map +1 -0
  62. package/dist/wrappers/project.wrapper.js +105 -0
  63. package/dist/wrappers/project.wrapper.js.map +1 -0
  64. package/dist/wrappers/workspace.wrapper.d.ts +5 -0
  65. package/dist/wrappers/workspace.wrapper.d.ts.map +1 -0
  66. package/dist/wrappers/workspace.wrapper.js +108 -0
  67. package/dist/wrappers/workspace.wrapper.js.map +1 -0
  68. package/package.json +43 -30
  69. package/dist/base.command.d.ts +0 -8
  70. package/dist/base.command.js +0 -33
  71. package/dist/commands/info.command.d.ts +0 -9
  72. package/dist/commands/info.command.js +0 -83
  73. package/dist/filters/affected.d.ts +0 -10
  74. package/dist/filters/affected.js +0 -80
  75. package/dist/filters/filter.d.ts +0 -8
  76. package/dist/filters/filter.js +0 -36
  77. package/dist/filters/index.d.ts +0 -2
  78. package/dist/filters/index.js +0 -22
  79. package/dist/logger.d.ts +0 -15
  80. package/dist/logger.js +0 -99
  81. package/dist/myr/commands/kill.command.d.ts +0 -11
  82. package/dist/myr/commands/kill.command.js +0 -52
  83. package/dist/myr/commands/list.command.d.ts +0 -18
  84. package/dist/myr/commands/list.command.js +0 -127
  85. package/dist/myr/commands/logs.command.d.ts +0 -11
  86. package/dist/myr/commands/logs.command.js +0 -83
  87. package/dist/myr/commands/spawn.command.d.ts +0 -11
  88. package/dist/myr/commands/spawn.command.js +0 -45
  89. package/dist/myr/commands/stop.command.d.ts +0 -7
  90. package/dist/myr/commands/stop.command.js +0 -43
  91. package/dist/myr/myr-client.d.ts +0 -22
  92. package/dist/myr/myr-client.js +0 -234
  93. package/dist/myr/myr.command.d.ts +0 -8
  94. package/dist/myr/myr.command.js +0 -46
  95. package/dist/myr/myr.process.d.ts +0 -1
  96. package/dist/myr/myr.process.js +0 -43
  97. package/dist/myr/watch.command.d.ts +0 -13
  98. package/dist/myr/watch.command.js +0 -87
  99. package/dist/pipeline.d.ts +0 -9
  100. package/dist/pipeline.js +0 -53
  101. package/dist/plugin.d.ts +0 -11
  102. package/dist/plugin.js +0 -40
  103. package/dist/project.command.d.ts +0 -13
  104. package/dist/project.command.js +0 -58
  105. package/dist/task-logger.d.ts +0 -14
  106. package/dist/task-logger.js +0 -66
  107. package/dist/utils/cli-list.d.ts +0 -15
  108. package/dist/utils/cli-list.js +0 -87
  109. package/dist/workspace.command.d.ts +0 -12
  110. package/dist/workspace.command.js +0 -55
@@ -1,83 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.LogsCommand = void 0;
7
-
8
- var _winston = require("winston");
9
-
10
- var _chalk = _interopRequireDefault(require("chalk"));
11
-
12
- var _project = require("../../project.command");
13
-
14
- var _myrClient = require("../myr-client");
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
19
-
20
- // Utils
21
- const printLog = _winston.format.combine({
22
- transform: info => Object.assign(info, {
23
- [Symbol.for('level')]: info.level
24
- })
25
- }, {
26
- transform: info => Object.assign(info, {
27
- context: info.task?.substr(0, 8) || info.context
28
- })
29
- }, _winston.format.printf(({
30
- context,
31
- message,
32
- timestamp
33
- }) => context ? (0, _chalk.default)`[jill-myr] {white ${new Date(timestamp).toLocaleString()}} {grey [${context}]} ${message}` : (0, _chalk.default)`[jill-myr] {white ${new Date(timestamp).toLocaleString()}} ${message}`), _winston.format.colorize({
34
- all: true
35
- })); // Command
36
-
37
-
38
- class LogsCommand extends _project.ProjectCommand {
39
- constructor(...args) {
40
- super(...args);
41
-
42
- _defineProperty(this, "name", 'logs');
43
-
44
- _defineProperty(this, "description", 'Request myr logs');
45
- }
46
-
47
- // Methods
48
- define(builder) {
49
- return super.define(y => builder(y).option('follow', {
50
- alias: 'f',
51
- type: 'boolean',
52
- default: false,
53
- description: 'Subscribe to logs stream'
54
- }));
55
- }
56
-
57
- async run(args) {
58
- await super.run(args); // Spawn task
59
-
60
- this.spinner.start('Connecting to myr');
61
- const client = new _myrClient.MyrClient(this.project);
62
- this.spinner.start('Requesting logs');
63
- const logs = await client.logs();
64
- this.spinner.stop();
65
-
66
- for (const log of logs) {
67
- printLog.transform(log);
68
- this.log(log[Symbol.for('message')]);
69
- } // Follow
70
-
71
-
72
- if (args.follow) {
73
- for await (const log of client.logs$()) {
74
- printLog.transform(log);
75
- this.log(log[Symbol.for('message')]);
76
- }
77
- }
78
- }
79
-
80
- }
81
-
82
- exports.LogsCommand = LogsCommand;
83
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm15ci9jb21tYW5kcy9sb2dzLmNvbW1hbmQudHMiXSwibmFtZXMiOlsicHJpbnRMb2ciLCJmb3JtYXQiLCJjb21iaW5lIiwidHJhbnNmb3JtIiwiaW5mbyIsIk9iamVjdCIsImFzc2lnbiIsIlN5bWJvbCIsImZvciIsImxldmVsIiwiY29udGV4dCIsInRhc2siLCJzdWJzdHIiLCJwcmludGYiLCJtZXNzYWdlIiwidGltZXN0YW1wIiwiRGF0ZSIsInRvTG9jYWxlU3RyaW5nIiwiY29sb3JpemUiLCJhbGwiLCJMb2dzQ29tbWFuZCIsIlByb2plY3RDb21tYW5kIiwiZGVmaW5lIiwiYnVpbGRlciIsInkiLCJvcHRpb24iLCJhbGlhcyIsInR5cGUiLCJkZWZhdWx0IiwiZGVzY3JpcHRpb24iLCJydW4iLCJhcmdzIiwic3Bpbm5lciIsInN0YXJ0IiwiY2xpZW50IiwiTXlyQ2xpZW50IiwicHJvamVjdCIsImxvZ3MiLCJzdG9wIiwibG9nIiwiZm9sbG93IiwibG9ncyQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7Ozs7O0FBUUE7QUFDQSxNQUFNQSxRQUFRLEdBQUdDLGdCQUFPQyxPQUFQLENBQ2Y7QUFBRUMsRUFBQUEsU0FBUyxFQUFHQyxJQUFELElBQVVDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjRixJQUFkLEVBQW9CO0FBQUUsS0FBQ0csTUFBTSxDQUFDQyxHQUFQLENBQVcsT0FBWCxDQUFELEdBQXVCSixJQUFJLENBQUNLO0FBQTlCLEdBQXBCO0FBQXZCLENBRGUsRUFFZjtBQUFFTixFQUFBQSxTQUFTLEVBQUdDLElBQUQsSUFBVUMsTUFBTSxDQUFDQyxNQUFQLENBQWNGLElBQWQsRUFBb0I7QUFBRU0sSUFBQUEsT0FBTyxFQUFFTixJQUFJLENBQUNPLElBQUwsRUFBV0MsTUFBWCxDQUFrQixDQUFsQixFQUFxQixDQUFyQixLQUEyQlIsSUFBSSxDQUFDTTtBQUEzQyxHQUFwQjtBQUF2QixDQUZlLEVBR2ZULGdCQUFPWSxNQUFQLENBQWMsQ0FBQztBQUFFSCxFQUFBQSxPQUFGO0FBQVdJLEVBQUFBLE9BQVg7QUFBb0JDLEVBQUFBO0FBQXBCLENBQUQsS0FBcUNMLE9BQU8sR0FDdEQsbUJBQU0scUJBQW9CLElBQUlNLElBQUosQ0FBU0QsU0FBVCxFQUFvQkUsY0FBcEIsRUFBcUMsWUFBV1AsT0FBUSxNQUFLSSxPQUFRLEVBRHpDLEdBRXRELG1CQUFNLHFCQUFvQixJQUFJRSxJQUFKLENBQVNELFNBQVQsRUFBb0JFLGNBQXBCLEVBQXFDLEtBQUlILE9BQVEsRUFGL0UsQ0FIZSxFQU9mYixnQkFBT2lCLFFBQVAsQ0FBZ0I7QUFBRUMsRUFBQUEsR0FBRyxFQUFFO0FBQVAsQ0FBaEIsQ0FQZSxDQUFqQixDLENBVUE7OztBQUNPLE1BQU1DLFdBQU4sU0FBMEJDLHVCQUExQixDQUFtRDtBQUFBO0FBQUE7O0FBQUEsa0NBRXhDLE1BRndDOztBQUFBLHlDQUdqQyxrQkFIaUM7QUFBQTs7QUFLeEQ7QUFDVUMsRUFBQUEsTUFBTSxDQUFPQyxPQUFQLEVBQXlEO0FBQ3ZFLFdBQU8sTUFBTUQsTUFBTixDQUFhRSxDQUFDLElBQUlELE9BQU8sQ0FBQ0MsQ0FBRCxDQUFQLENBQ3RCQyxNQURzQixDQUNmLFFBRGUsRUFDTDtBQUNoQkMsTUFBQUEsS0FBSyxFQUFFLEdBRFM7QUFFaEJDLE1BQUFBLElBQUksRUFBRSxTQUZVO0FBR2hCQyxNQUFBQSxPQUFPLEVBQUUsS0FITztBQUloQkMsTUFBQUEsV0FBVyxFQUFFO0FBSkcsS0FESyxDQUFsQixDQUFQO0FBUUQ7O0FBRWtCLFFBQUhDLEdBQUcsQ0FBQ0MsSUFBRCxFQUEyQztBQUM1RCxVQUFNLE1BQU1ELEdBQU4sQ0FBVUMsSUFBVixDQUFOLENBRDRELENBRzVEOztBQUNBLFNBQUtDLE9BQUwsQ0FBYUMsS0FBYixDQUFtQixtQkFBbkI7QUFDQSxVQUFNQyxNQUFNLEdBQUcsSUFBSUMsb0JBQUosQ0FBYyxLQUFLQyxPQUFuQixDQUFmO0FBRUEsU0FBS0osT0FBTCxDQUFhQyxLQUFiLENBQW1CLGlCQUFuQjtBQUNBLFVBQU1JLElBQUksR0FBRyxNQUFNSCxNQUFNLENBQUNHLElBQVAsRUFBbkI7QUFDQSxTQUFLTCxPQUFMLENBQWFNLElBQWI7O0FBRUEsU0FBSyxNQUFNQyxHQUFYLElBQWtCRixJQUFsQixFQUF3QjtBQUN0QnJDLE1BQUFBLFFBQVEsQ0FBQ0csU0FBVCxDQUFtQm9DLEdBQW5CO0FBQ0EsV0FBS0EsR0FBTCxDQUFTQSxHQUFHLENBQUNoQyxNQUFNLENBQUNDLEdBQVAsQ0FBVyxTQUFYLENBQUQsQ0FBWjtBQUNELEtBZDJELENBZ0I1RDs7O0FBQ0EsUUFBSXVCLElBQUksQ0FBQ1MsTUFBVCxFQUFpQjtBQUNmLGlCQUFXLE1BQU1ELEdBQWpCLElBQXdCTCxNQUFNLENBQUNPLEtBQVAsRUFBeEIsRUFBd0M7QUFDdEN6QyxRQUFBQSxRQUFRLENBQUNHLFNBQVQsQ0FBbUJvQyxHQUFuQjtBQUNBLGFBQUtBLEdBQUwsQ0FBU0EsR0FBRyxDQUFDaEMsTUFBTSxDQUFDQyxHQUFQLENBQVcsU0FBWCxDQUFELENBQVo7QUFDRDtBQUNGO0FBQ0Y7O0FBeEN1RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ3dpbnN0b24nO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcblxuaW1wb3J0IHsgUHJvamVjdEFyZ3MsIFByb2plY3RDb21tYW5kIH0gZnJvbSAnLi4vLi4vcHJvamVjdC5jb21tYW5kJztcbmltcG9ydCB7IE15ckNsaWVudCB9IGZyb20gJy4uL215ci1jbGllbnQnO1xuaW1wb3J0IHsgQXJndW1lbnRzLCBCdWlsZGVyIH0gZnJvbSAnLi4vLi4vY29tbWFuZCc7XG5cbi8vIFR5cGVzXG5leHBvcnQgaW50ZXJmYWNlIExvZ3NBcmdzIGV4dGVuZHMgUHJvamVjdEFyZ3Mge1xuICBmb2xsb3c6IGJvb2xlYW47XG59XG5cbi8vIFV0aWxzXG5jb25zdCBwcmludExvZyA9IGZvcm1hdC5jb21iaW5lKFxuICB7IHRyYW5zZm9ybTogKGluZm8pID0+IE9iamVjdC5hc3NpZ24oaW5mbywgeyBbU3ltYm9sLmZvcignbGV2ZWwnKV06IGluZm8ubGV2ZWwgfSkgfSxcbiAgeyB0cmFuc2Zvcm06IChpbmZvKSA9PiBPYmplY3QuYXNzaWduKGluZm8sIHsgY29udGV4dDogaW5mby50YXNrPy5zdWJzdHIoMCwgOCkgfHwgaW5mby5jb250ZXh0IH0pIH0sXG4gIGZvcm1hdC5wcmludGYoKHsgY29udGV4dCwgbWVzc2FnZSwgdGltZXN0YW1wIH0pID0+IGNvbnRleHRcbiAgICA/IGNoYWxrYFtqaWxsLW15cl0ge3doaXRlICR7bmV3IERhdGUodGltZXN0YW1wKS50b0xvY2FsZVN0cmluZygpfX0ge2dyZXkgWyR7Y29udGV4dH1dfSAke21lc3NhZ2V9YFxuICAgIDogY2hhbGtgW2ppbGwtbXlyXSB7d2hpdGUgJHtuZXcgRGF0ZSh0aW1lc3RhbXApLnRvTG9jYWxlU3RyaW5nKCl9fSAke21lc3NhZ2V9YFxuICApLFxuICBmb3JtYXQuY29sb3JpemUoeyBhbGw6IHRydWUgfSksXG4pO1xuXG4vLyBDb21tYW5kXG5leHBvcnQgY2xhc3MgTG9nc0NvbW1hbmQgZXh0ZW5kcyBQcm9qZWN0Q29tbWFuZDxMb2dzQXJncz4ge1xuICAvLyBBdHRyaWJ1dGVzXG4gIHJlYWRvbmx5IG5hbWUgPSAnbG9ncyc7XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uID0gJ1JlcXVlc3QgbXlyIGxvZ3MnO1xuXG4gIC8vIE1ldGhvZHNcbiAgcHJvdGVjdGVkIGRlZmluZTxULCBVPihidWlsZGVyOiBCdWlsZGVyPFQsIFU+KTogQnVpbGRlcjxULCBVICYgTG9nc0FyZ3M+IHtcbiAgICByZXR1cm4gc3VwZXIuZGVmaW5lKHkgPT4gYnVpbGRlcih5KVxuICAgICAgLm9wdGlvbignZm9sbG93Jywge1xuICAgICAgICBhbGlhczogJ2YnLFxuICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1N1YnNjcmliZSB0byBsb2dzIHN0cmVhbSdcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBydW4oYXJnczogQXJndW1lbnRzPExvZ3NBcmdzPik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHN1cGVyLnJ1bihhcmdzKTtcblxuICAgIC8vIFNwYXduIHRhc2tcbiAgICB0aGlzLnNwaW5uZXIuc3RhcnQoJ0Nvbm5lY3RpbmcgdG8gbXlyJyk7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IE15ckNsaWVudCh0aGlzLnByb2plY3QpO1xuXG4gICAgdGhpcy5zcGlubmVyLnN0YXJ0KCdSZXF1ZXN0aW5nIGxvZ3MnKTtcbiAgICBjb25zdCBsb2dzID0gYXdhaXQgY2xpZW50LmxvZ3MoKTtcbiAgICB0aGlzLnNwaW5uZXIuc3RvcCgpO1xuXG4gICAgZm9yIChjb25zdCBsb2cgb2YgbG9ncykge1xuICAgICAgcHJpbnRMb2cudHJhbnNmb3JtKGxvZyk7XG4gICAgICB0aGlzLmxvZyhsb2dbU3ltYm9sLmZvcignbWVzc2FnZScpXSk7XG4gICAgfVxuXG4gICAgLy8gRm9sbG93XG4gICAgaWYgKGFyZ3MuZm9sbG93KSB7XG4gICAgICBmb3IgYXdhaXQgKGNvbnN0IGxvZyBvZiBjbGllbnQubG9ncyQoKSkge1xuICAgICAgICBwcmludExvZy50cmFuc2Zvcm0obG9nKTtcbiAgICAgICAgdGhpcy5sb2cobG9nW1N5bWJvbC5mb3IoJ21lc3NhZ2UnKV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSJdLCJmaWxlIjoibXlyL2NvbW1hbmRzL2xvZ3MuY29tbWFuZC5qcyJ9
@@ -1,11 +0,0 @@
1
- import { Arguments, Builder } from '../../command';
2
- import { WorkspaceArgs, WorkspaceCommand } from '../../workspace.command';
3
- export interface SpawnArgs extends WorkspaceArgs {
4
- command: string;
5
- }
6
- export declare class SpawnCommand extends WorkspaceCommand<SpawnArgs> {
7
- readonly name = "spawn <command>";
8
- readonly description = "Spawn new task";
9
- protected define<T, U>(builder: Builder<T, U>): Builder<T, U & SpawnArgs>;
10
- protected run(args: Arguments<SpawnArgs>): Promise<number | void>;
11
- }
@@ -1,45 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.SpawnCommand = void 0;
7
-
8
- var _workspace = require("../../workspace.command");
9
-
10
- var _myrClient = require("../myr-client");
11
-
12
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
13
-
14
- // Command
15
- class SpawnCommand extends _workspace.WorkspaceCommand {
16
- constructor(...args) {
17
- super(...args);
18
-
19
- _defineProperty(this, "name", 'spawn <command>');
20
-
21
- _defineProperty(this, "description", 'Spawn new task');
22
- }
23
-
24
- // Methods
25
- define(builder) {
26
- return super.define(y => builder(y).positional('command', {
27
- type: 'string',
28
- demandOption: true
29
- }));
30
- }
31
-
32
- async run(args) {
33
- await super.run(args); // Spawn task
34
-
35
- this.spinner.start('Connecting to myr');
36
- const client = new _myrClient.MyrClient(this.project);
37
- this.spinner.start('Spawning task');
38
- const task = await client.spawn(this.workspace.cwd, args.command, args['--']?.map(arg => arg.toString()));
39
- this.spinner.succeed(`Task ${task.id} spawned`);
40
- }
41
-
42
- }
43
-
44
- exports.SpawnCommand = SpawnCommand;
45
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm15ci9jb21tYW5kcy9zcGF3bi5jb21tYW5kLnRzIl0sIm5hbWVzIjpbIlNwYXduQ29tbWFuZCIsIldvcmtzcGFjZUNvbW1hbmQiLCJkZWZpbmUiLCJidWlsZGVyIiwieSIsInBvc2l0aW9uYWwiLCJ0eXBlIiwiZGVtYW5kT3B0aW9uIiwicnVuIiwiYXJncyIsInNwaW5uZXIiLCJzdGFydCIsImNsaWVudCIsIk15ckNsaWVudCIsInByb2plY3QiLCJ0YXNrIiwic3Bhd24iLCJ3b3Jrc3BhY2UiLCJjd2QiLCJjb21tYW5kIiwibWFwIiwiYXJnIiwidG9TdHJpbmciLCJzdWNjZWVkIiwiaWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFDQTs7OztBQU9BO0FBQ08sTUFBTUEsWUFBTixTQUEyQkMsMkJBQTNCLENBQXVEO0FBQUE7QUFBQTs7QUFBQSxrQ0FFNUMsaUJBRjRDOztBQUFBLHlDQUdyQyxnQkFIcUM7QUFBQTs7QUFLNUQ7QUFDVUMsRUFBQUEsTUFBTSxDQUFPQyxPQUFQLEVBQTBEO0FBQ3hFLFdBQU8sTUFBTUQsTUFBTixDQUFhRSxDQUFDLElBQUlELE9BQU8sQ0FBQ0MsQ0FBRCxDQUFQLENBQ3RCQyxVQURzQixDQUNYLFNBRFcsRUFDQTtBQUFFQyxNQUFBQSxJQUFJLEVBQUUsUUFBUjtBQUFrQkMsTUFBQUEsWUFBWSxFQUFFO0FBQWhDLEtBREEsQ0FBbEIsQ0FBUDtBQUdEOztBQUVrQixRQUFIQyxHQUFHLENBQUNDLElBQUQsRUFBcUQ7QUFDdEUsVUFBTSxNQUFNRCxHQUFOLENBQVVDLElBQVYsQ0FBTixDQURzRSxDQUd0RTs7QUFDQSxTQUFLQyxPQUFMLENBQWFDLEtBQWIsQ0FBbUIsbUJBQW5CO0FBQ0EsVUFBTUMsTUFBTSxHQUFHLElBQUlDLG9CQUFKLENBQWMsS0FBS0MsT0FBbkIsQ0FBZjtBQUVBLFNBQUtKLE9BQUwsQ0FBYUMsS0FBYixDQUFtQixlQUFuQjtBQUNBLFVBQU1JLElBQUksR0FBRyxNQUFNSCxNQUFNLENBQUNJLEtBQVAsQ0FBYSxLQUFLQyxTQUFMLENBQWVDLEdBQTVCLEVBQWlDVCxJQUFJLENBQUNVLE9BQXRDLEVBQStDVixJQUFJLENBQUMsSUFBRCxDQUFKLEVBQVlXLEdBQVosQ0FBZ0JDLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxRQUFKLEVBQXZCLENBQS9DLENBQW5CO0FBRUEsU0FBS1osT0FBTCxDQUFhYSxPQUFiLENBQXNCLFFBQU9SLElBQUksQ0FBQ1MsRUFBRyxVQUFyQztBQUNEOztBQXZCMkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcmd1bWVudHMsIEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9jb21tYW5kJztcbmltcG9ydCB7IFdvcmtzcGFjZUFyZ3MsIFdvcmtzcGFjZUNvbW1hbmQgfSBmcm9tICcuLi8uLi93b3Jrc3BhY2UuY29tbWFuZCc7XG5pbXBvcnQgeyBNeXJDbGllbnQgfSBmcm9tICcuLi9teXItY2xpZW50JztcblxuLy8gVHlwZXNcbmV4cG9ydCBpbnRlcmZhY2UgU3Bhd25BcmdzIGV4dGVuZHMgV29ya3NwYWNlQXJncyB7XG4gIGNvbW1hbmQ6IHN0cmluZztcbn1cblxuLy8gQ29tbWFuZFxuZXhwb3J0IGNsYXNzIFNwYXduQ29tbWFuZCBleHRlbmRzIFdvcmtzcGFjZUNvbW1hbmQ8U3Bhd25BcmdzPiB7XG4gIC8vIEF0dHJpYnV0ZXNcbiAgcmVhZG9ubHkgbmFtZSA9ICdzcGF3biA8Y29tbWFuZD4nO1xuICByZWFkb25seSBkZXNjcmlwdGlvbiA9ICdTcGF3biBuZXcgdGFzayc7XG5cbiAgLy8gTWV0aG9kc1xuICBwcm90ZWN0ZWQgZGVmaW5lPFQsIFU+KGJ1aWxkZXI6IEJ1aWxkZXI8VCwgVT4pOiBCdWlsZGVyPFQsIFUgJiBTcGF3bkFyZ3M+IHtcbiAgICByZXR1cm4gc3VwZXIuZGVmaW5lKHkgPT4gYnVpbGRlcih5KVxuICAgICAgLnBvc2l0aW9uYWwoJ2NvbW1hbmQnLCB7IHR5cGU6ICdzdHJpbmcnLCBkZW1hbmRPcHRpb246IHRydWUgfSlcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHJ1bihhcmdzOiBBcmd1bWVudHM8U3Bhd25BcmdzPik6IFByb21pc2U8bnVtYmVyIHwgdm9pZD4ge1xuICAgIGF3YWl0IHN1cGVyLnJ1bihhcmdzKTtcblxuICAgIC8vIFNwYXduIHRhc2tcbiAgICB0aGlzLnNwaW5uZXIuc3RhcnQoJ0Nvbm5lY3RpbmcgdG8gbXlyJyk7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IE15ckNsaWVudCh0aGlzLnByb2plY3QpO1xuXG4gICAgdGhpcy5zcGlubmVyLnN0YXJ0KCdTcGF3bmluZyB0YXNrJyk7XG4gICAgY29uc3QgdGFzayA9IGF3YWl0IGNsaWVudC5zcGF3bih0aGlzLndvcmtzcGFjZS5jd2QsIGFyZ3MuY29tbWFuZCwgYXJnc1snLS0nXT8ubWFwKGFyZyA9PiBhcmcudG9TdHJpbmcoKSkpO1xuXG4gICAgdGhpcy5zcGlubmVyLnN1Y2NlZWQoYFRhc2sgJHt0YXNrLmlkfSBzcGF3bmVkYCk7XG4gIH1cbn0iXSwiZmlsZSI6Im15ci9jb21tYW5kcy9zcGF3bi5jb21tYW5kLmpzIn0=
@@ -1,7 +0,0 @@
1
- import { Arguments } from '../../command';
2
- import { ProjectArgs, ProjectCommand } from '../../project.command';
3
- export declare class StopCommand extends ProjectCommand {
4
- readonly name = "stop";
5
- readonly description = "Stop myr server. This will kill all running tasks";
6
- protected run(argv: Arguments<ProjectArgs>): Promise<void>;
7
- }
@@ -1,43 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.StopCommand = void 0;
7
-
8
- var _project = require("../../project.command");
9
-
10
- var _myrClient = require("../myr-client");
11
-
12
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
13
-
14
- // Command
15
- class StopCommand extends _project.ProjectCommand {
16
- constructor(...args) {
17
- super(...args);
18
-
19
- _defineProperty(this, "name", 'stop');
20
-
21
- _defineProperty(this, "description", 'Stop myr server. This will kill all running tasks');
22
- }
23
-
24
- // Methods
25
- async run(argv) {
26
- await super.run(argv); // Spawn task
27
-
28
- this.spinner.start('Stopping myr');
29
- const client = new _myrClient.MyrClient(this.project);
30
- const ok = await client.stop();
31
-
32
- if (ok) {
33
- this.spinner.succeed('myr stopped');
34
- } else {
35
- this.spinner.stop();
36
- this.logger.warn('myr was not running');
37
- }
38
- }
39
-
40
- }
41
-
42
- exports.StopCommand = StopCommand;
43
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm15ci9jb21tYW5kcy9zdG9wLmNvbW1hbmQudHMiXSwibmFtZXMiOlsiU3RvcENvbW1hbmQiLCJQcm9qZWN0Q29tbWFuZCIsInJ1biIsImFyZ3YiLCJzcGlubmVyIiwic3RhcnQiLCJjbGllbnQiLCJNeXJDbGllbnQiLCJwcm9qZWN0Iiwib2siLCJzdG9wIiwic3VjY2VlZCIsImxvZ2dlciIsIndhcm4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFDQTs7OztBQUVBO0FBQ08sTUFBTUEsV0FBTixTQUEwQkMsdUJBQTFCLENBQXlDO0FBQUE7QUFBQTs7QUFBQSxrQ0FFOUIsTUFGOEI7O0FBQUEseUNBR3ZCLG1EQUh1QjtBQUFBOztBQUs5QztBQUNtQixRQUFIQyxHQUFHLENBQUNDLElBQUQsRUFBOEM7QUFDL0QsVUFBTSxNQUFNRCxHQUFOLENBQVVDLElBQVYsQ0FBTixDQUQrRCxDQUcvRDs7QUFDQSxTQUFLQyxPQUFMLENBQWFDLEtBQWIsQ0FBbUIsY0FBbkI7QUFDQSxVQUFNQyxNQUFNLEdBQUcsSUFBSUMsb0JBQUosQ0FBYyxLQUFLQyxPQUFuQixDQUFmO0FBQ0EsVUFBTUMsRUFBRSxHQUFHLE1BQU1ILE1BQU0sQ0FBQ0ksSUFBUCxFQUFqQjs7QUFFQSxRQUFJRCxFQUFKLEVBQVE7QUFDTixXQUFLTCxPQUFMLENBQWFPLE9BQWIsQ0FBcUIsYUFBckI7QUFDRCxLQUZELE1BRU87QUFDTCxXQUFLUCxPQUFMLENBQWFNLElBQWI7QUFDQSxXQUFLRSxNQUFMLENBQVlDLElBQVosQ0FBaUIscUJBQWpCO0FBQ0Q7QUFDRjs7QUFwQjZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJndW1lbnRzIH0gZnJvbSAnLi4vLi4vY29tbWFuZCc7XG5pbXBvcnQgeyBQcm9qZWN0QXJncywgUHJvamVjdENvbW1hbmQgfSBmcm9tICcuLi8uLi9wcm9qZWN0LmNvbW1hbmQnO1xuaW1wb3J0IHsgTXlyQ2xpZW50IH0gZnJvbSAnLi4vbXlyLWNsaWVudCc7XG5cbi8vIENvbW1hbmRcbmV4cG9ydCBjbGFzcyBTdG9wQ29tbWFuZCBleHRlbmRzIFByb2plY3RDb21tYW5kIHtcbiAgLy8gQXR0cmlidXRlc1xuICByZWFkb25seSBuYW1lID0gJ3N0b3AnO1xuICByZWFkb25seSBkZXNjcmlwdGlvbiA9ICdTdG9wIG15ciBzZXJ2ZXIuIFRoaXMgd2lsbCBraWxsIGFsbCBydW5uaW5nIHRhc2tzJztcblxuICAvLyBNZXRob2RzXG4gIHByb3RlY3RlZCBhc3luYyBydW4oYXJndjogQXJndW1lbnRzPFByb2plY3RBcmdzPik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHN1cGVyLnJ1bihhcmd2KTtcblxuICAgIC8vIFNwYXduIHRhc2tcbiAgICB0aGlzLnNwaW5uZXIuc3RhcnQoJ1N0b3BwaW5nIG15cicpO1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBNeXJDbGllbnQodGhpcy5wcm9qZWN0KTtcbiAgICBjb25zdCBvayA9IGF3YWl0IGNsaWVudC5zdG9wKCk7XG5cbiAgICBpZiAob2spIHtcbiAgICAgIHRoaXMuc3Bpbm5lci5zdWNjZWVkKCdteXIgc3RvcHBlZCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNwaW5uZXIuc3RvcCgpO1xuICAgICAgdGhpcy5sb2dnZXIud2FybignbXlyIHdhcyBub3QgcnVubmluZycpO1xuICAgIH1cbiAgfVxufSJdLCJmaWxlIjoibXlyL2NvbW1hbmRzL3N0b3AuY29tbWFuZC5qcyJ9
@@ -1,22 +0,0 @@
1
- import { Project, Workspace } from '@jujulego/jill-core';
2
- import { Task } from '@jujulego/jill-myr';
3
- import { Repeater } from '@repeaterjs/repeater';
4
- import { DocumentNode } from 'graphql';
5
- export declare class MyrClient {
6
- readonly project: Project;
7
- private readonly _logger;
8
- private readonly _endpoint;
9
- private readonly _qclient;
10
- private readonly _sclient;
11
- constructor(project: Project);
12
- protected _autoStart<T>(fn: () => Promise<T>): Promise<T>;
13
- protected _subscription<T>(query: DocumentNode, variables: Record<string, unknown>): Repeater<T>;
14
- start(): Promise<void>;
15
- stop(): Promise<boolean>;
16
- tasks(): Promise<Task[]>;
17
- spawn(cwd: string, cmd: string, args?: string[]): Promise<Task>;
18
- spawnScript(wks: Workspace, script: string, args?: string[]): Promise<Task>;
19
- logs(): Promise<any[]>;
20
- logs$(): AsyncGenerator<any>;
21
- kill(id: string): Promise<Task | undefined>;
22
- }
@@ -1,234 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.MyrClient = void 0;
7
-
8
- var _jillCore = require("@jujulego/jill-core");
9
-
10
- var _jillMyr = require("@jujulego/jill-myr");
11
-
12
- var _repeater = require("@repeaterjs/repeater");
13
-
14
- var _child_process = require("child_process");
15
-
16
- var _graphql = require("graphql");
17
-
18
- var _graphqlRequest = require("graphql-request");
19
-
20
- var _graphqlWs = require("graphql-ws");
21
-
22
- var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
23
-
24
- var _path = _interopRequireDefault(require("path"));
25
-
26
- var _ws = _interopRequireDefault(require("ws"));
27
-
28
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
-
30
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
31
-
32
- // Class
33
- class MyrClient {
34
- // Attributes
35
- // Constructor
36
- constructor(project) {
37
- this.project = project;
38
-
39
- _defineProperty(this, "_logger", _jillCore.logger.child({
40
- context: MyrClient.name
41
- }));
42
-
43
- _defineProperty(this, "_endpoint", 'http://localhost:5001/graphql');
44
-
45
- _defineProperty(this, "_qclient", new _graphqlRequest.GraphQLClient(this._endpoint));
46
-
47
- _defineProperty(this, "_sclient", (0, _graphqlWs.createClient)({
48
- url: this._endpoint.replace(/^http/, 'ws'),
49
- webSocketImpl: _ws.default,
50
- lazy: true
51
- }));
52
- } // Methods
53
-
54
-
55
- async _autoStart(fn) {
56
- try {
57
- return await fn();
58
- } catch (error) {
59
- if (error.code !== 'ECONNREFUSED') throw error; // Start myr if connection impossible
60
-
61
- this._logger.verbose('Unable to connect to myr server, trying to start it');
62
-
63
- await this.start(); // Retry
64
-
65
- return await fn();
66
- }
67
- }
68
-
69
- _subscription(query, variables) {
70
- return new _repeater.Repeater((push, stop) => {
71
- this._sclient.subscribe({
72
- query: (0, _graphql.print)(query),
73
- variables
74
- }, {
75
- next(value) {
76
- push(value.data).then();
77
- },
78
-
79
- error(error) {
80
- stop(error);
81
- },
82
-
83
- complete() {
84
- stop();
85
- }
86
-
87
- });
88
- });
89
- }
90
-
91
- start() {
92
- const child = (0, _child_process.fork)(_path.default.resolve(__dirname, './myr.process'), [], {
93
- cwd: this.project.root,
94
- detached: true,
95
- stdio: ['ignore', 'pipe', 'pipe', 'ipc']
96
- }); // Transmit logs to logger
97
-
98
- child.stdout?.on('data', msg => {
99
- for (const line of msg.toString('utf-8').split('\n')) {
100
- if (!line) continue;
101
- const {
102
- level,
103
- message,
104
- ...meta
105
- } = JSON.parse(line);
106
-
107
- _jillCore.logger.log(level, message, meta);
108
- }
109
- });
110
- child.stderr?.on('data', msg => {
111
- _jillCore.logger.error(msg.toString('utf-8'));
112
- }); // Start server
113
-
114
- return new Promise((resolve, reject) => {
115
- child.on('message', msg => {
116
- if (msg === 'started') {
117
- resolve();
118
- } else {
119
- reject(msg);
120
- }
121
- });
122
- child.on('close', (code, signal) => {
123
- reject(new Error(`Myr process ended with code ${code} by signal ${signal}`));
124
- });
125
- child.send('start');
126
- });
127
- }
128
-
129
- async stop() {
130
- try {
131
- await this._qclient.request((0, _graphqlTag.default)`
132
- mutation Shutdown {
133
- shutdown
134
- }
135
- `);
136
- return true;
137
- } catch (error) {
138
- if (error.code !== 'ECONNREFUSED') throw error;
139
- return false;
140
- }
141
- }
142
-
143
- async tasks() {
144
- return await this._autoStart(async () => {
145
- const {
146
- tasks
147
- } = await this._qclient.request((0, _graphqlTag.default)`
148
- query Tasks {
149
- tasks {
150
- ...Task
151
- }
152
- }
153
-
154
- ${_jillMyr.TaskFragment}
155
- `);
156
- return tasks;
157
- });
158
- }
159
-
160
- async spawn(cwd, cmd, args = []) {
161
- return await this._autoStart(async () => {
162
- const {
163
- spawn
164
- } = await this._qclient.request((0, _graphqlTag.default)`
165
- mutation Spawn($cwd: String!, $cmd: String!, $args: [String!]!) {
166
- spawn(cwd: $cwd, cmd: $cmd, args: $args) {
167
- ...Task
168
- }
169
- }
170
-
171
- ${_jillMyr.TaskFragment}
172
- `, {
173
- cwd,
174
- cmd,
175
- args
176
- });
177
- return spawn;
178
- });
179
- }
180
-
181
- async spawnScript(wks, script, args = []) {
182
- return await this.spawn(wks.cwd, await wks.project.packageManager(), [script, ...args]);
183
- }
184
-
185
- async logs() {
186
- try {
187
- const res = await this._qclient.request((0, _graphqlTag.default)`
188
- query Logs {
189
- logs
190
- }
191
- `);
192
- return res.logs;
193
- } catch (error) {
194
- if (error.code !== 'ECONNREFUSED') throw error;
195
- return [];
196
- }
197
- }
198
-
199
- async *logs$() {
200
- try {
201
- for await (const {
202
- log
203
- } of this._subscription((0, _graphqlTag.default)`subscription Logs { log }`, {})) {
204
- yield log;
205
- }
206
- } catch (error) {
207
- if (error.code !== 'ECONNREFUSED') throw error;
208
- return;
209
- }
210
- }
211
-
212
- async kill(id) {
213
- return await this._autoStart(async () => {
214
- const {
215
- kill
216
- } = await this._qclient.request((0, _graphqlTag.default)`
217
- mutation Kill($id: ID!) {
218
- kill(id: $id) {
219
- ...Task
220
- }
221
- }
222
-
223
- ${_jillMyr.TaskFragment}
224
- `, {
225
- id
226
- });
227
- return kill;
228
- });
229
- }
230
-
231
- }
232
-
233
- exports.MyrClient = MyrClient;
234
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm15ci9teXItY2xpZW50LnRzIl0sIm5hbWVzIjpbIk15ckNsaWVudCIsImNvbnN0cnVjdG9yIiwicHJvamVjdCIsImxvZ2dlciIsImNoaWxkIiwiY29udGV4dCIsIm5hbWUiLCJHcmFwaFFMQ2xpZW50IiwiX2VuZHBvaW50IiwidXJsIiwicmVwbGFjZSIsIndlYlNvY2tldEltcGwiLCJXZWJTb2NrZXQiLCJsYXp5IiwiX2F1dG9TdGFydCIsImZuIiwiZXJyb3IiLCJjb2RlIiwiX2xvZ2dlciIsInZlcmJvc2UiLCJzdGFydCIsIl9zdWJzY3JpcHRpb24iLCJxdWVyeSIsInZhcmlhYmxlcyIsIlJlcGVhdGVyIiwicHVzaCIsInN0b3AiLCJfc2NsaWVudCIsInN1YnNjcmliZSIsIm5leHQiLCJ2YWx1ZSIsImRhdGEiLCJ0aGVuIiwiY29tcGxldGUiLCJwYXRoIiwicmVzb2x2ZSIsIl9fZGlybmFtZSIsImN3ZCIsInJvb3QiLCJkZXRhY2hlZCIsInN0ZGlvIiwic3Rkb3V0Iiwib24iLCJtc2ciLCJsaW5lIiwidG9TdHJpbmciLCJzcGxpdCIsImxldmVsIiwibWVzc2FnZSIsIm1ldGEiLCJKU09OIiwicGFyc2UiLCJsb2ciLCJzdGRlcnIiLCJQcm9taXNlIiwicmVqZWN0Iiwic2lnbmFsIiwiRXJyb3IiLCJzZW5kIiwiX3FjbGllbnQiLCJyZXF1ZXN0IiwidGFza3MiLCJUYXNrRnJhZ21lbnQiLCJzcGF3biIsImNtZCIsImFyZ3MiLCJzcGF3blNjcmlwdCIsIndrcyIsInNjcmlwdCIsInBhY2thZ2VNYW5hZ2VyIiwibG9ncyIsInJlcyIsImxvZ3MkIiwia2lsbCIsImlkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQVVBO0FBQ08sTUFBTUEsU0FBTixDQUFnQjtBQUNyQjtBQVVBO0FBQ0FDLEVBQUFBLFdBQVcsQ0FDQUMsT0FEQSxFQUVUO0FBQUEsU0FEU0EsT0FDVCxHQURTQSxPQUNUOztBQUFBLHFDQVp5QkMsaUJBQU9DLEtBQVAsQ0FBYTtBQUFFQyxNQUFBQSxPQUFPLEVBQUVMLFNBQVMsQ0FBQ007QUFBckIsS0FBYixDQVl6Qjs7QUFBQSx1Q0FYMkIsK0JBVzNCOztBQUFBLHNDQVYwQixJQUFJQyw2QkFBSixDQUFrQixLQUFLQyxTQUF2QixDQVUxQjs7QUFBQSxzQ0FUMEIsNkJBQWE7QUFDdkNDLE1BQUFBLEdBQUcsRUFBRSxLQUFLRCxTQUFMLENBQWVFLE9BQWYsQ0FBdUIsT0FBdkIsRUFBZ0MsSUFBaEMsQ0FEa0M7QUFFdkNDLE1BQUFBLGFBQWEsRUFBRUMsV0FGd0I7QUFHdkNDLE1BQUFBLElBQUksRUFBRTtBQUhpQyxLQUFiLENBUzFCO0FBQUUsR0FkaUIsQ0FnQnJCOzs7QUFDMEIsUUFBVkMsVUFBVSxDQUFJQyxFQUFKLEVBQXNDO0FBQzlELFFBQUk7QUFDRixhQUFPLE1BQU1BLEVBQUUsRUFBZjtBQUNELEtBRkQsQ0FFRSxPQUFPQyxLQUFQLEVBQWM7QUFDZCxVQUFJQSxLQUFLLENBQUNDLElBQU4sS0FBZSxjQUFuQixFQUFtQyxNQUFNRCxLQUFOLENBRHJCLENBR2Q7O0FBQ0EsV0FBS0UsT0FBTCxDQUFhQyxPQUFiLENBQXFCLHFEQUFyQjs7QUFDQSxZQUFNLEtBQUtDLEtBQUwsRUFBTixDQUxjLENBT2Q7O0FBQ0EsYUFBTyxNQUFNTCxFQUFFLEVBQWY7QUFDRDtBQUNGOztBQUVTTSxFQUFBQSxhQUFhLENBQUlDLEtBQUosRUFBeUJDLFNBQXpCLEVBQTBFO0FBQy9GLFdBQU8sSUFBSUMsa0JBQUosQ0FBZ0IsQ0FBQ0MsSUFBRCxFQUFPQyxJQUFQLEtBQWdCO0FBQ3JDLFdBQUtDLFFBQUwsQ0FBY0MsU0FBZCxDQUEyQjtBQUFFTixRQUFBQSxLQUFLLEVBQUUsb0JBQU1BLEtBQU4sQ0FBVDtBQUF1QkMsUUFBQUE7QUFBdkIsT0FBM0IsRUFBK0Q7QUFDN0RNLFFBQUFBLElBQUksQ0FBQ0MsS0FBRCxFQUFRO0FBQ1ZMLFVBQUFBLElBQUksQ0FBQ0ssS0FBSyxDQUFDQyxJQUFQLENBQUosQ0FBa0JDLElBQWxCO0FBQ0QsU0FINEQ7O0FBSTdEaEIsUUFBQUEsS0FBSyxDQUFDQSxLQUFELEVBQVE7QUFDWFUsVUFBQUEsSUFBSSxDQUFDVixLQUFELENBQUo7QUFDRCxTQU40RDs7QUFPN0RpQixRQUFBQSxRQUFRLEdBQUc7QUFDVFAsVUFBQUEsSUFBSTtBQUNMOztBQVQ0RCxPQUEvRDtBQVdELEtBWk0sQ0FBUDtBQWFEOztBQUVETixFQUFBQSxLQUFLLEdBQWtCO0FBQ3JCLFVBQU1oQixLQUFLLEdBQUcseUJBQUs4QixjQUFLQyxPQUFMLENBQWFDLFNBQWIsRUFBd0IsZUFBeEIsQ0FBTCxFQUErQyxFQUEvQyxFQUFtRDtBQUMvREMsTUFBQUEsR0FBRyxFQUFFLEtBQUtuQyxPQUFMLENBQWFvQyxJQUQ2QztBQUUvREMsTUFBQUEsUUFBUSxFQUFFLElBRnFEO0FBRy9EQyxNQUFBQSxLQUFLLEVBQUUsQ0FBQyxRQUFELEVBQVcsTUFBWCxFQUFtQixNQUFuQixFQUEyQixLQUEzQjtBQUh3RCxLQUFuRCxDQUFkLENBRHFCLENBT3JCOztBQUNBcEMsSUFBQUEsS0FBSyxDQUFDcUMsTUFBTixFQUFjQyxFQUFkLENBQWlCLE1BQWpCLEVBQTBCQyxHQUFELElBQWlCO0FBQ3hDLFdBQUssTUFBTUMsSUFBWCxJQUFtQkQsR0FBRyxDQUFDRSxRQUFKLENBQWEsT0FBYixFQUFzQkMsS0FBdEIsQ0FBNEIsSUFBNUIsQ0FBbkIsRUFBc0Q7QUFDcEQsWUFBSSxDQUFDRixJQUFMLEVBQVc7QUFFWCxjQUFNO0FBQUVHLFVBQUFBLEtBQUY7QUFBU0MsVUFBQUEsT0FBVDtBQUFrQixhQUFHQztBQUFyQixZQUE4QkMsSUFBSSxDQUFDQyxLQUFMLENBQVdQLElBQVgsQ0FBcEM7O0FBQ0F6Qyx5QkFBT2lELEdBQVAsQ0FBV0wsS0FBWCxFQUFrQkMsT0FBbEIsRUFBMkJDLElBQTNCO0FBQ0Q7QUFDRixLQVBEO0FBU0E3QyxJQUFBQSxLQUFLLENBQUNpRCxNQUFOLEVBQWNYLEVBQWQsQ0FBaUIsTUFBakIsRUFBMEJDLEdBQUQsSUFBaUI7QUFDeEN4Qyx1QkFBT2EsS0FBUCxDQUFhMkIsR0FBRyxDQUFDRSxRQUFKLENBQWEsT0FBYixDQUFiO0FBQ0QsS0FGRCxFQWpCcUIsQ0FxQnJCOztBQUNBLFdBQU8sSUFBSVMsT0FBSixDQUFrQixDQUFDbkIsT0FBRCxFQUFVb0IsTUFBVixLQUFxQjtBQUM1Q25ELE1BQUFBLEtBQUssQ0FBQ3NDLEVBQU4sQ0FBUyxTQUFULEVBQXFCQyxHQUFELElBQTRCO0FBQzlDLFlBQUlBLEdBQUcsS0FBSyxTQUFaLEVBQXVCO0FBQ3JCUixVQUFBQSxPQUFPO0FBQ1IsU0FGRCxNQUVPO0FBQ0xvQixVQUFBQSxNQUFNLENBQUNaLEdBQUQsQ0FBTjtBQUNEO0FBQ0YsT0FORDtBQVFBdkMsTUFBQUEsS0FBSyxDQUFDc0MsRUFBTixDQUFTLE9BQVQsRUFBa0IsQ0FBQ3pCLElBQUQsRUFBT3VDLE1BQVAsS0FBa0I7QUFDbENELFFBQUFBLE1BQU0sQ0FBQyxJQUFJRSxLQUFKLENBQVcsK0JBQThCeEMsSUFBSyxjQUFhdUMsTUFBTyxFQUFsRSxDQUFELENBQU47QUFDRCxPQUZEO0FBSUFwRCxNQUFBQSxLQUFLLENBQUNzRCxJQUFOLENBQVcsT0FBWDtBQUNELEtBZE0sQ0FBUDtBQWVEOztBQUVTLFFBQUpoQyxJQUFJLEdBQXFCO0FBQzdCLFFBQUk7QUFDRixZQUFNLEtBQUtpQyxRQUFMLENBQWNDLE9BQWQsQ0FBc0Isd0JBQUk7QUFDdEM7QUFDQTtBQUNBO0FBQ0EsS0FKWSxDQUFOO0FBTUEsYUFBTyxJQUFQO0FBQ0QsS0FSRCxDQVFFLE9BQU81QyxLQUFQLEVBQWM7QUFDZCxVQUFJQSxLQUFLLENBQUNDLElBQU4sS0FBZSxjQUFuQixFQUFtQyxNQUFNRCxLQUFOO0FBRW5DLGFBQU8sS0FBUDtBQUNEO0FBQ0Y7O0FBRVUsUUFBTDZDLEtBQUssR0FBb0I7QUFDN0IsV0FBTyxNQUFNLEtBQUsvQyxVQUFMLENBQWdCLFlBQVk7QUFDdkMsWUFBTTtBQUFFK0MsUUFBQUE7QUFBRixVQUFZLE1BQU0sS0FBS0YsUUFBTCxDQUFjQyxPQUFkLENBQXlDLHdCQUFJO0FBQzNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVlFLHFCQUFhO0FBQ3pCLE9BUjhCLENBQXhCO0FBVUEsYUFBT0QsS0FBUDtBQUNELEtBWlksQ0FBYjtBQWFEOztBQUVVLFFBQUxFLEtBQUssQ0FBQzFCLEdBQUQsRUFBYzJCLEdBQWQsRUFBMkJDLElBQWMsR0FBRyxFQUE1QyxFQUErRDtBQUN4RSxXQUFPLE1BQU0sS0FBS25ELFVBQUwsQ0FBZ0IsWUFBWTtBQUN2QyxZQUFNO0FBQUVpRCxRQUFBQTtBQUFGLFVBQVksTUFBTSxLQUFLSixRQUFMLENBQWNDLE9BQWQsQ0FBZ0Qsd0JBQUk7QUFDbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWUUscUJBQWE7QUFDekIsT0FSOEIsRUFRckI7QUFBRXpCLFFBQUFBLEdBQUY7QUFBTzJCLFFBQUFBLEdBQVA7QUFBWUMsUUFBQUE7QUFBWixPQVJxQixDQUF4QjtBQVVBLGFBQU9GLEtBQVA7QUFDRCxLQVpZLENBQWI7QUFhRDs7QUFFZ0IsUUFBWEcsV0FBVyxDQUFDQyxHQUFELEVBQWlCQyxNQUFqQixFQUFpQ0gsSUFBYyxHQUFHLEVBQWxELEVBQXFFO0FBQ3BGLFdBQU8sTUFBTSxLQUFLRixLQUFMLENBQVdJLEdBQUcsQ0FBQzlCLEdBQWYsRUFBb0IsTUFBTThCLEdBQUcsQ0FBQ2pFLE9BQUosQ0FBWW1FLGNBQVosRUFBMUIsRUFBd0QsQ0FBQ0QsTUFBRCxFQUFTLEdBQUdILElBQVosQ0FBeEQsQ0FBYjtBQUNEOztBQUVTLFFBQUpLLElBQUksR0FBbUI7QUFDM0IsUUFBSTtBQUNGLFlBQU1DLEdBQUcsR0FBRyxNQUFNLEtBQUtaLFFBQUwsQ0FBY0MsT0FBZCxDQUF1Qyx3QkFBSTtBQUNuRTtBQUNBO0FBQ0E7QUFDQSxPQUp3QixDQUFsQjtBQU1BLGFBQU9XLEdBQUcsQ0FBQ0QsSUFBWDtBQUNELEtBUkQsQ0FRRSxPQUFPdEQsS0FBUCxFQUFjO0FBQ2QsVUFBSUEsS0FBSyxDQUFDQyxJQUFOLEtBQWUsY0FBbkIsRUFBbUMsTUFBTUQsS0FBTjtBQUVuQyxhQUFPLEVBQVA7QUFDRDtBQUNGOztBQUVXLFNBQUx3RCxLQUFLLEdBQXdCO0FBQ2xDLFFBQUk7QUFDRixpQkFBVyxNQUFNO0FBQUVwQixRQUFBQTtBQUFGLE9BQWpCLElBQTRCLEtBQUsvQixhQUFMLENBQWlDLHdCQUFJLDJCQUFyQyxFQUFpRSxFQUFqRSxDQUE1QixFQUFrRztBQUNoRyxjQUFNK0IsR0FBTjtBQUNEO0FBQ0YsS0FKRCxDQUlFLE9BQU9wQyxLQUFQLEVBQWM7QUFDZCxVQUFJQSxLQUFLLENBQUNDLElBQU4sS0FBZSxjQUFuQixFQUFtQyxNQUFNRCxLQUFOO0FBRW5DO0FBQ0Q7QUFDRjs7QUFFUyxRQUFKeUQsSUFBSSxDQUFDQyxFQUFELEVBQXdDO0FBQ2hELFdBQU8sTUFBTSxLQUFLNUQsVUFBTCxDQUFnQixZQUFZO0FBQ3ZDLFlBQU07QUFBRTJELFFBQUFBO0FBQUYsVUFBVyxNQUFNLEtBQUtkLFFBQUwsQ0FBY0MsT0FBZCxDQUFrRCx3QkFBSTtBQUNuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZRSxxQkFBYTtBQUN6QixPQVI2QixFQVFwQjtBQUFFWSxRQUFBQTtBQUFGLE9BUm9CLENBQXZCO0FBVUEsYUFBT0QsSUFBUDtBQUNELEtBWlksQ0FBYjtBQWFEOztBQXJMb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsb2dnZXIsIFByb2plY3QsIFdvcmtzcGFjZSB9IGZyb20gJ0BqdWp1bGVnby9qaWxsLWNvcmUnO1xuaW1wb3J0IHsgU3Bhd25BcmdzLCBUYXNrLCBUYXNrRnJhZ21lbnQgfSBmcm9tICdAanVqdWxlZ28vamlsbC1teXInO1xuaW1wb3J0IHsgUmVwZWF0ZXIgfSBmcm9tICdAcmVwZWF0ZXJqcy9yZXBlYXRlcic7XG5pbXBvcnQgeyBmb3JrIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyBEb2N1bWVudE5vZGUsIHByaW50IH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgeyBHcmFwaFFMQ2xpZW50IH0gZnJvbSAnZ3JhcGhxbC1yZXF1ZXN0JztcbmltcG9ydCB7IGNyZWF0ZUNsaWVudCB9IGZyb20gJ2dyYXBocWwtd3MnO1xuaW1wb3J0IGdxbCBmcm9tICdncmFwaHFsLXRhZyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBXZWJTb2NrZXQgZnJvbSAnd3MnO1xuXG5cbi8vIFR5cGVzXG50eXBlIElMb2cgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiAmIHtcbiAgLy8gQXR0cmlidXRlc1xuICBsZXZlbDogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59O1xuXG4vLyBDbGFzc1xuZXhwb3J0IGNsYXNzIE15ckNsaWVudCB7XG4gIC8vIEF0dHJpYnV0ZXNcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyID0gbG9nZ2VyLmNoaWxkKHsgY29udGV4dDogTXlyQ2xpZW50Lm5hbWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VuZHBvaW50ID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6NTAwMS9ncmFwaHFsJztcbiAgcHJpdmF0ZSByZWFkb25seSBfcWNsaWVudCA9IG5ldyBHcmFwaFFMQ2xpZW50KHRoaXMuX2VuZHBvaW50KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2NsaWVudCA9IGNyZWF0ZUNsaWVudCh7XG4gICAgdXJsOiB0aGlzLl9lbmRwb2ludC5yZXBsYWNlKC9eaHR0cC8sICd3cycpLFxuICAgIHdlYlNvY2tldEltcGw6IFdlYlNvY2tldCxcbiAgICBsYXp5OiB0cnVlXG4gIH0pO1xuXG4gIC8vIENvbnN0cnVjdG9yXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IHByb2plY3Q6IFByb2plY3QsXG4gICkge31cblxuICAvLyBNZXRob2RzXG4gIHByb3RlY3RlZCBhc3luYyBfYXV0b1N0YXJ0PFQ+KGZuOiAoKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBmbigpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IuY29kZSAhPT0gJ0VDT05OUkVGVVNFRCcpIHRocm93IGVycm9yO1xuXG4gICAgICAvLyBTdGFydCBteXIgaWYgY29ubmVjdGlvbiBpbXBvc3NpYmxlXG4gICAgICB0aGlzLl9sb2dnZXIudmVyYm9zZSgnVW5hYmxlIHRvIGNvbm5lY3QgdG8gbXlyIHNlcnZlciwgdHJ5aW5nIHRvIHN0YXJ0IGl0Jyk7XG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0KCk7XG5cbiAgICAgIC8vIFJldHJ5XG4gICAgICByZXR1cm4gYXdhaXQgZm4oKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX3N1YnNjcmlwdGlvbjxUPihxdWVyeTogRG9jdW1lbnROb2RlLCB2YXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUmVwZWF0ZXI8VD4ge1xuICAgIHJldHVybiBuZXcgUmVwZWF0ZXI8VD4oKHB1c2gsIHN0b3ApID0+IHtcbiAgICAgIHRoaXMuX3NjbGllbnQuc3Vic2NyaWJlPFQ+KHsgcXVlcnk6IHByaW50KHF1ZXJ5KSwgdmFyaWFibGVzIH0sIHtcbiAgICAgICAgbmV4dCh2YWx1ZSkge1xuICAgICAgICAgIHB1c2godmFsdWUuZGF0YSEpLnRoZW4oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3IoZXJyb3IpIHtcbiAgICAgICAgICBzdG9wKGVycm9yKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGUoKSB7XG4gICAgICAgICAgc3RvcCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNoaWxkID0gZm9yayhwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi9teXIucHJvY2VzcycpLCBbXSwge1xuICAgICAgY3dkOiB0aGlzLnByb2plY3Qucm9vdCxcbiAgICAgIGRldGFjaGVkOiB0cnVlLFxuICAgICAgc3RkaW86IFsnaWdub3JlJywgJ3BpcGUnLCAncGlwZScsICdpcGMnXSxcbiAgICB9KTtcblxuICAgIC8vIFRyYW5zbWl0IGxvZ3MgdG8gbG9nZ2VyXG4gICAgY2hpbGQuc3Rkb3V0Py5vbignZGF0YScsIChtc2c6IEJ1ZmZlcikgPT4ge1xuICAgICAgZm9yIChjb25zdCBsaW5lIG9mIG1zZy50b1N0cmluZygndXRmLTgnKS5zcGxpdCgnXFxuJykpIHtcbiAgICAgICAgaWYgKCFsaW5lKSBjb250aW51ZTtcblxuICAgICAgICBjb25zdCB7IGxldmVsLCBtZXNzYWdlLCAuLi5tZXRhIH0gPSBKU09OLnBhcnNlKGxpbmUpIGFzIElMb2c7XG4gICAgICAgIGxvZ2dlci5sb2cobGV2ZWwsIG1lc3NhZ2UsIG1ldGEpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY2hpbGQuc3RkZXJyPy5vbignZGF0YScsIChtc2c6IEJ1ZmZlcikgPT4ge1xuICAgICAgbG9nZ2VyLmVycm9yKG1zZy50b1N0cmluZygndXRmLTgnKSk7XG4gICAgfSk7XG5cbiAgICAvLyBTdGFydCBzZXJ2ZXJcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY2hpbGQub24oJ21lc3NhZ2UnLCAobXNnOiAnc3RhcnRlZCcgfCBFcnJvcikgPT4ge1xuICAgICAgICBpZiAobXNnID09PSAnc3RhcnRlZCcpIHtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVqZWN0KG1zZyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBjaGlsZC5vbignY2xvc2UnLCAoY29kZSwgc2lnbmFsKSA9PiB7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoYE15ciBwcm9jZXNzIGVuZGVkIHdpdGggY29kZSAke2NvZGV9IGJ5IHNpZ25hbCAke3NpZ25hbH1gKSk7XG4gICAgICB9KTtcblxuICAgICAgY2hpbGQuc2VuZCgnc3RhcnQnKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHN0b3AoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuX3FjbGllbnQucmVxdWVzdChncWxgXG4gICAgICAgIG11dGF0aW9uIFNodXRkb3duIHtcbiAgICAgICAgICAgIHNodXRkb3duXG4gICAgICAgIH1cbiAgICBgKTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvci5jb2RlICE9PSAnRUNPTk5SRUZVU0VEJykgdGhyb3cgZXJyb3I7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyB0YXNrcygpOiBQcm9taXNlPFRhc2tbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl9hdXRvU3RhcnQoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgeyB0YXNrcyB9ID0gYXdhaXQgdGhpcy5fcWNsaWVudC5yZXF1ZXN0PHsgdGFza3M6IFRhc2tbXSB9PihncWxgXG4gICAgICAgICAgcXVlcnkgVGFza3Mge1xuICAgICAgICAgICAgICB0YXNrcyB7XG4gICAgICAgICAgICAgICAgICAuLi5UYXNrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAke1Rhc2tGcmFnbWVudH1cbiAgICAgIGApO1xuXG4gICAgICByZXR1cm4gdGFza3M7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzcGF3bihjd2Q6IHN0cmluZywgY21kOiBzdHJpbmcsIGFyZ3M6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPFRhc2s+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYXV0b1N0YXJ0KGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHsgc3Bhd24gfSA9IGF3YWl0IHRoaXMuX3FjbGllbnQucmVxdWVzdDx7IHNwYXduOlRhc2sgfSxTcGF3bkFyZ3M+KGdxbGBcbiAgICAgICAgICBtdXRhdGlvbiBTcGF3bigkY3dkOiBTdHJpbmchLCAkY21kOiBTdHJpbmchLCAkYXJnczogW1N0cmluZyFdISkge1xuICAgICAgICAgICAgICBzcGF3bihjd2Q6ICRjd2QsIGNtZDogJGNtZCwgYXJnczogJGFyZ3MpIHtcbiAgICAgICAgICAgICAgICAgIC4uLlRhc2tcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgICR7VGFza0ZyYWdtZW50fVxuICAgICAgYCwgeyBjd2QsIGNtZCwgYXJncyB9KTtcblxuICAgICAgcmV0dXJuIHNwYXduO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc3Bhd25TY3JpcHQod2tzOiBXb3Jrc3BhY2UsIHNjcmlwdDogc3RyaW5nLCBhcmdzOiBzdHJpbmdbXSA9IFtdKTogUHJvbWlzZTxUYXNrPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuc3Bhd24od2tzLmN3ZCwgYXdhaXQgd2tzLnByb2plY3QucGFja2FnZU1hbmFnZXIoKSwgW3NjcmlwdCwgLi4uYXJnc10pO1xuICB9XG5cbiAgYXN5bmMgbG9ncygpOiBQcm9taXNlPGFueVtdPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuX3FjbGllbnQucmVxdWVzdDx7IGxvZ3M6IGFueVtdIH0+KGdxbGBcbiAgICAgICAgICBxdWVyeSBMb2dzIHtcbiAgICAgICAgICAgICAgbG9nc1xuICAgICAgICAgIH1cbiAgICAgIGApO1xuXG4gICAgICByZXR1cm4gcmVzLmxvZ3M7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvci5jb2RlICE9PSAnRUNPTk5SRUZVU0VEJykgdGhyb3cgZXJyb3I7XG5cbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBhc3luYyogbG9ncyQoKTogQXN5bmNHZW5lcmF0b3I8YW55PiB7XG4gICAgdHJ5IHtcbiAgICAgIGZvciBhd2FpdCAoY29uc3QgeyBsb2cgfSBvZiB0aGlzLl9zdWJzY3JpcHRpb248eyBsb2c6IGFueSB9PihncWxgc3Vic2NyaXB0aW9uIExvZ3MgeyBsb2cgfWAsIHt9KSkge1xuICAgICAgICB5aWVsZCBsb2c7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvci5jb2RlICE9PSAnRUNPTk5SRUZVU0VEJykgdGhyb3cgZXJyb3I7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBhc3luYyBraWxsKGlkOiBzdHJpbmcpOiBQcm9taXNlPFRhc2sgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fYXV0b1N0YXJ0KGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHsga2lsbCB9ID0gYXdhaXQgdGhpcy5fcWNsaWVudC5yZXF1ZXN0PHsga2lsbDogVGFzayB8IHVuZGVmaW5lZCB9PihncWxgXG4gICAgICAgICAgbXV0YXRpb24gS2lsbCgkaWQ6IElEISkge1xuICAgICAgICAgICAgICBraWxsKGlkOiAkaWQpIHtcbiAgICAgICAgICAgICAgICAgIC4uLlRhc2tcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgICR7VGFza0ZyYWdtZW50fVxuICAgICAgYCwgeyBpZCB9KTtcblxuICAgICAgcmV0dXJuIGtpbGw7XG4gICAgfSk7XG4gIH1cbn0iXSwiZmlsZSI6Im15ci9teXItY2xpZW50LmpzIn0=
@@ -1,8 +0,0 @@
1
- import { Builder, Command } from '../command';
2
- export declare class MyrCommand extends Command {
3
- readonly name = "myr";
4
- readonly description = "Interact with myr server";
5
- readonly commands: readonly Command[];
6
- protected define<T, U>(builder: Builder<T, U>): Builder<T, U>;
7
- protected run(): number;
8
- }
@@ -1,46 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.MyrCommand = void 0;
7
-
8
- var _command = require("../command");
9
-
10
- var _kill = require("./commands/kill.command");
11
-
12
- var _list = require("./commands/list.command");
13
-
14
- var _logs = require("./commands/logs.command");
15
-
16
- var _spawn = require("./commands/spawn.command");
17
-
18
- var _stop = require("./commands/stop.command");
19
-
20
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
21
-
22
- // Command
23
- class MyrCommand extends _command.Command {
24
- constructor(...args) {
25
- super(...args);
26
-
27
- _defineProperty(this, "name", 'myr');
28
-
29
- _defineProperty(this, "description", 'Interact with myr server');
30
-
31
- _defineProperty(this, "commands", [new _kill.KillCommand(), new _list.ListCommand(), new _logs.LogsCommand(), new _spawn.SpawnCommand(), new _stop.StopCommand()]);
32
- }
33
-
34
- // Methods
35
- define(builder) {
36
- return yargs => this.commands.reduce((y, cmd) => cmd.setup(y), builder(yargs));
37
- }
38
-
39
- run() {
40
- return 0;
41
- }
42
-
43
- }
44
-
45
- exports.MyrCommand = MyrCommand;
46
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm15ci9teXIuY29tbWFuZC50cyJdLCJuYW1lcyI6WyJNeXJDb21tYW5kIiwiQ29tbWFuZCIsIktpbGxDb21tYW5kIiwiTGlzdENvbW1hbmQiLCJMb2dzQ29tbWFuZCIsIlNwYXduQ29tbWFuZCIsIlN0b3BDb21tYW5kIiwiZGVmaW5lIiwiYnVpbGRlciIsInlhcmdzIiwiY29tbWFuZHMiLCJyZWR1Y2UiLCJ5IiwiY21kIiwic2V0dXAiLCJydW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUVBO0FBQ08sTUFBTUEsVUFBTixTQUF5QkMsZ0JBQXpCLENBQWlDO0FBQUE7QUFBQTs7QUFBQSxrQ0FFdEIsS0FGc0I7O0FBQUEseUNBR2YsMEJBSGU7O0FBQUEsc0NBS0UsQ0FDdEMsSUFBSUMsaUJBQUosRUFEc0MsRUFFdEMsSUFBSUMsaUJBQUosRUFGc0MsRUFHdEMsSUFBSUMsaUJBQUosRUFIc0MsRUFJdEMsSUFBSUMsbUJBQUosRUFKc0MsRUFLdEMsSUFBSUMsaUJBQUosRUFMc0MsQ0FMRjtBQUFBOztBQWF0QztBQUNVQyxFQUFBQSxNQUFNLENBQU9DLE9BQVAsRUFBOEM7QUFDNUQsV0FBT0MsS0FBSyxJQUFJLEtBQUtDLFFBQUwsQ0FBY0MsTUFBZCxDQUFxQixDQUFDQyxDQUFELEVBQUlDLEdBQUosS0FBWUEsR0FBRyxDQUFDQyxLQUFKLENBQVVGLENBQVYsQ0FBakMsRUFBK0NKLE9BQU8sQ0FBQ0MsS0FBRCxDQUF0RCxDQUFoQjtBQUNEOztBQUVTTSxFQUFBQSxHQUFHLEdBQVc7QUFDdEIsV0FBTyxDQUFQO0FBQ0Q7O0FBcEJxQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1aWxkZXIsIENvbW1hbmQgfSBmcm9tICcuLi9jb21tYW5kJztcbmltcG9ydCB7IEtpbGxDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy9raWxsLmNvbW1hbmQnO1xuaW1wb3J0IHsgTGlzdENvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL2xpc3QuY29tbWFuZCc7XG5pbXBvcnQgeyBMb2dzQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvbG9ncy5jb21tYW5kJztcbmltcG9ydCB7IFNwYXduQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvc3Bhd24uY29tbWFuZCc7XG5pbXBvcnQgeyBTdG9wQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvc3RvcC5jb21tYW5kJztcblxuLy8gQ29tbWFuZFxuZXhwb3J0IGNsYXNzIE15ckNvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgLy8gUHJvcGVydGllc1xuICByZWFkb25seSBuYW1lID0gJ215cic7XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uID0gJ0ludGVyYWN0IHdpdGggbXlyIHNlcnZlcic7XG5cbiAgcmVhZG9ubHkgY29tbWFuZHM6IHJlYWRvbmx5IENvbW1hbmRbXSA9IFtcbiAgICBuZXcgS2lsbENvbW1hbmQoKSxcbiAgICBuZXcgTGlzdENvbW1hbmQoKSxcbiAgICBuZXcgTG9nc0NvbW1hbmQoKSxcbiAgICBuZXcgU3Bhd25Db21tYW5kKCksXG4gICAgbmV3IFN0b3BDb21tYW5kKCksXG4gIF07XG5cbiAgLy8gTWV0aG9kc1xuICBwcm90ZWN0ZWQgZGVmaW5lPFQsIFU+KGJ1aWxkZXI6IEJ1aWxkZXI8VCwgVT4pOiBCdWlsZGVyPFQsIFU+IHtcbiAgICByZXR1cm4geWFyZ3MgPT4gdGhpcy5jb21tYW5kcy5yZWR1Y2UoKHksIGNtZCkgPT4gY21kLnNldHVwKHkpLCBidWlsZGVyKHlhcmdzKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcnVuKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn0iXSwiZmlsZSI6Im15ci9teXIuY29tbWFuZC5qcyJ9
@@ -1 +0,0 @@
1
- export {};
@@ -1,43 +0,0 @@
1
- "use strict";
2
-
3
- var _jillCore = require("@jujulego/jill-core");
4
-
5
- var _jillMyr = require("@jujulego/jill-myr");
6
-
7
- var _winston = _interopRequireWildcard(require("winston"));
8
-
9
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
10
-
11
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
12
-
13
- // Setup logger
14
- const trans = new _winston.default.transports.Console({
15
- level: 'debug',
16
- format: _winston.format.combine(_winston.format.timestamp({
17
- format: () => new Date().toLocaleString()
18
- }), _winston.format.errors(), _winston.format.json()),
19
- consoleWarnLevels: [],
20
- stderrLevels: []
21
- });
22
-
23
- _jillCore.logger.add(trans); // Start server when parent is ready
24
-
25
-
26
- process.once('message', async () => {
27
- try {
28
- // Start server
29
- const server = await _jillMyr.MyrServer.createServer();
30
- await server.start();
31
-
32
- _jillCore.logger.remove(trans);
33
-
34
- process.send?.('started');
35
- } catch (error) {
36
- process.send?.({
37
- name: error.name,
38
- message: error.message
39
- });
40
- process.exit(1);
41
- }
42
- });
43
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm15ci9teXIucHJvY2Vzcy50cyJdLCJuYW1lcyI6WyJ0cmFucyIsIndpbnN0b24iLCJ0cmFuc3BvcnRzIiwiQ29uc29sZSIsImxldmVsIiwiZm9ybWF0IiwiY29tYmluZSIsInRpbWVzdGFtcCIsIkRhdGUiLCJ0b0xvY2FsZVN0cmluZyIsImVycm9ycyIsImpzb24iLCJjb25zb2xlV2FybkxldmVscyIsInN0ZGVyckxldmVscyIsImxvZ2dlciIsImFkZCIsInByb2Nlc3MiLCJvbmNlIiwic2VydmVyIiwiTXlyU2VydmVyIiwiY3JlYXRlU2VydmVyIiwic3RhcnQiLCJyZW1vdmUiLCJzZW5kIiwiZXJyb3IiLCJuYW1lIiwibWVzc2FnZSIsImV4aXQiXSwibWFwcGluZ3MiOiI7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBO0FBQ0EsTUFBTUEsS0FBSyxHQUFHLElBQUlDLGlCQUFRQyxVQUFSLENBQW1CQyxPQUF2QixDQUErQjtBQUMzQ0MsRUFBQUEsS0FBSyxFQUFFLE9BRG9DO0FBRTNDQyxFQUFBQSxNQUFNLEVBQUVBLGdCQUFPQyxPQUFQLENBQ05ELGdCQUFPRSxTQUFQLENBQWlCO0FBQUVGLElBQUFBLE1BQU0sRUFBRSxNQUFNLElBQUlHLElBQUosR0FBV0MsY0FBWDtBQUFoQixHQUFqQixDQURNLEVBRU5KLGdCQUFPSyxNQUFQLEVBRk0sRUFHTkwsZ0JBQU9NLElBQVAsRUFITSxDQUZtQztBQU8zQ0MsRUFBQUEsaUJBQWlCLEVBQUUsRUFQd0I7QUFRM0NDLEVBQUFBLFlBQVksRUFBRTtBQVI2QixDQUEvQixDQUFkOztBQVVBQyxpQkFBT0MsR0FBUCxDQUFXZixLQUFYLEUsQ0FFQTs7O0FBQ0FnQixPQUFPLENBQUNDLElBQVIsQ0FBYSxTQUFiLEVBQXdCLFlBQVk7QUFDbEMsTUFBSTtBQUNGO0FBQ0EsVUFBTUMsTUFBTSxHQUFHLE1BQU1DLG1CQUFVQyxZQUFWLEVBQXJCO0FBQ0EsVUFBTUYsTUFBTSxDQUFDRyxLQUFQLEVBQU47O0FBRUFQLHFCQUFPUSxNQUFQLENBQWN0QixLQUFkOztBQUNBZ0IsSUFBQUEsT0FBTyxDQUFDTyxJQUFSLEdBQWUsU0FBZjtBQUNELEdBUEQsQ0FPRSxPQUFPQyxLQUFQLEVBQWM7QUFDZFIsSUFBQUEsT0FBTyxDQUFDTyxJQUFSLEdBQWU7QUFBRUUsTUFBQUEsSUFBSSxFQUFFRCxLQUFLLENBQUNDLElBQWQ7QUFBb0JDLE1BQUFBLE9BQU8sRUFBRUYsS0FBSyxDQUFDRTtBQUFuQyxLQUFmO0FBQ0FWLElBQUFBLE9BQU8sQ0FBQ1csSUFBUixDQUFhLENBQWI7QUFDRDtBQUNGLENBWkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsb2dnZXIgfSBmcm9tICdAanVqdWxlZ28vamlsbC1jb3JlJztcbmltcG9ydCB7IE15clNlcnZlciB9IGZyb20gJ0BqdWp1bGVnby9qaWxsLW15cic7XG5pbXBvcnQgd2luc3RvbiwgeyBmb3JtYXQgfSBmcm9tICd3aW5zdG9uJztcblxuLy8gU2V0dXAgbG9nZ2VyXG5jb25zdCB0cmFucyA9IG5ldyB3aW5zdG9uLnRyYW5zcG9ydHMuQ29uc29sZSh7XG4gIGxldmVsOiAnZGVidWcnLFxuICBmb3JtYXQ6IGZvcm1hdC5jb21iaW5lKFxuICAgIGZvcm1hdC50aW1lc3RhbXAoeyBmb3JtYXQ6ICgpID0+IG5ldyBEYXRlKCkudG9Mb2NhbGVTdHJpbmcoKSB9KSxcbiAgICBmb3JtYXQuZXJyb3JzKCksXG4gICAgZm9ybWF0Lmpzb24oKVxuICApLFxuICBjb25zb2xlV2FybkxldmVsczogW10sXG4gIHN0ZGVyckxldmVsczogW11cbn0pO1xubG9nZ2VyLmFkZCh0cmFucyk7XG5cbi8vIFN0YXJ0IHNlcnZlciB3aGVuIHBhcmVudCBpcyByZWFkeVxucHJvY2Vzcy5vbmNlKCdtZXNzYWdlJywgYXN5bmMgKCkgPT4ge1xuICB0cnkge1xuICAgIC8vIFN0YXJ0IHNlcnZlclxuICAgIGNvbnN0IHNlcnZlciA9IGF3YWl0IE15clNlcnZlci5jcmVhdGVTZXJ2ZXIoKTtcbiAgICBhd2FpdCBzZXJ2ZXIuc3RhcnQoKTtcblxuICAgIGxvZ2dlci5yZW1vdmUodHJhbnMpO1xuICAgIHByb2Nlc3Muc2VuZD8uKCdzdGFydGVkJyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcHJvY2Vzcy5zZW5kPy4oeyBuYW1lOiBlcnJvci5uYW1lLCBtZXNzYWdlOiBlcnJvci5tZXNzYWdlIH0pO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxufSk7Il0sImZpbGUiOiJteXIvbXlyLnByb2Nlc3MuanMifQ==
@@ -1,13 +0,0 @@
1
- import { Arguments, Builder } from '../command';
2
- import { WorkspaceArgs, WorkspaceCommand } from '../workspace.command';
3
- export interface WatchArgs extends WorkspaceArgs {
4
- script: string;
5
- daemon: boolean;
6
- }
7
- export declare class WatchCommand extends WorkspaceCommand<WatchArgs> {
8
- readonly name = "watch <script>";
9
- readonly description = "Run script with watcher inside workspace and watch over deps";
10
- private spawnDepsTree;
11
- protected define<T, U>(builder: Builder<T, U>): Builder<T, U & WatchArgs>;
12
- protected run(args: Arguments<WatchArgs>): Promise<number>;
13
- }