@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
@@ -5,130 +5,175 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.ListCommand = void 0;
7
7
 
8
- var _chalk = _interopRequireDefault(require("chalk"));
8
+ var _jsxRuntime = require("react/jsx-runtime");
9
9
 
10
- var _slugify = _interopRequireDefault(require("slugify"));
10
+ var _jillCommon = require("@jujulego/jill-common");
11
11
 
12
- var _path = _interopRequireDefault(require("path"));
12
+ var _ink = require("ink");
13
13
 
14
- var _project = require("../project.command");
14
+ var _inkSpinner = _interopRequireDefault(require("ink-spinner"));
15
15
 
16
- var _pipeline = require("../pipeline");
16
+ var path = _interopRequireWildcard(require("path"));
17
17
 
18
- var _filters = require("../filters");
18
+ var _react = require("react");
19
19
 
20
- var _cliList = require("../utils/cli-list");
20
+ var _slugify = _interopRequireDefault(require("slugify"));
21
21
 
22
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
+ var _command = require("../command");
23
23
 
24
- 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; }
24
+ var _project = require("../wrappers/project.wrapper");
25
25
 
26
- // Constants
27
- const LONG_ATTRIBUTES = ['name', 'version', 'root'];
28
- const JSON_ATTRIBUTES = ['name', 'version', 'slug', 'root'];
29
- const DEFAULT_ATTRIBUTES = ['name'];
30
- const EXTRACTORS = {
31
- name: wks => wks.name,
32
- version: (wks, json) => wks.manifest.version || (json ? undefined : _chalk.default.grey('unset')),
33
- root: wks => wks.cwd,
34
- slug: wks => (0, _slugify.default)(wks.name)
35
- }; // Command
26
+ var _List = require("../components/List");
36
27
 
37
- class ListCommand extends _project.ProjectCommand {
38
- constructor(...args) {
39
- super(...args);
28
+ 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); }
40
29
 
41
- _defineProperty(this, "name", ['list', 'ls']);
30
+ 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; }
42
31
 
43
- _defineProperty(this, "description", 'List workspaces');
32
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
+
34
+ var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
35
+ function adopt(value) {
36
+ return value instanceof P ? value : new P(function (resolve) {
37
+ resolve(value);
38
+ });
44
39
  }
45
40
 
46
- // Methods
47
- buildExtractor(attrs) {
48
- return (wks, json) => {
49
- const data = {};
41
+ return new (P || (P = Promise))(function (resolve, reject) {
42
+ function fulfilled(value) {
43
+ try {
44
+ step(generator.next(value));
45
+ } catch (e) {
46
+ reject(e);
47
+ }
48
+ }
50
49
 
51
- for (const attr of attrs) {
52
- data[attr] = EXTRACTORS[attr](wks, json);
50
+ function rejected(value) {
51
+ try {
52
+ step(generator["throw"](value));
53
+ } catch (e) {
54
+ reject(e);
53
55
  }
56
+ }
57
+
58
+ function step(result) {
59
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
60
+ }
54
61
 
55
- return data;
62
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
63
+ });
64
+ };
65
+
66
+ var __asyncValues = void 0 && (void 0).__asyncValues || function (o) {
67
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
68
+ var m = o[Symbol.asyncIterator],
69
+ i;
70
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () {
71
+ return this;
72
+ }, i);
73
+
74
+ function verb(n) {
75
+ i[n] = o[n] && function (v) {
76
+ return new Promise(function (resolve, reject) {
77
+ v = o[n](v), settle(resolve, reject, v.done, v.value);
78
+ });
56
79
  };
57
80
  }
58
81
 
59
- define(builder) {
60
- return super.define(y => builder(y).option('private', {
61
- type: 'boolean',
62
- group: 'Filters:',
63
- desc: 'Print only private workspaces'
64
- }).option('with-script', {
65
- type: 'array',
66
- string: true,
67
- group: 'Filters:',
68
- desc: 'Print only workspaces having the given script'
69
- }).option('affected', {
70
- alias: 'a',
71
- type: 'string',
72
- coerce: rev => rev === '' ? 'master' : rev,
73
- group: 'Affected:',
74
- desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master.\n' + 'Replaces %name by workspace name.'
75
- }).option('affected-rev-sort', {
76
- type: 'string',
77
- group: 'Affected:',
78
- desc: 'Sort applied to git tag / git branch command'
79
- }).option('affected-rev-fallback', {
80
- type: 'string',
81
- default: 'master',
82
- group: 'Affected:',
83
- desc: 'Fallback revision, used if no revision matching the given format is found'
84
- }).option('attrs', {
85
- type: 'array',
86
- choices: ['name', 'version', 'root', 'slug'],
87
- default: [],
88
- group: 'Format:',
89
- desc: 'Select printed attributes'
90
- }).option('headers', {
91
- type: 'boolean',
92
- group: 'Format:',
93
- desc: 'Prints columns headers'
94
- }).option('long', {
95
- alias: 'l',
96
- type: 'boolean',
97
- group: 'Format:',
98
- desc: 'Prints name, version and root of all workspaces'
99
- }).option('json', {
100
- type: 'boolean',
101
- group: 'Format:',
102
- desc: 'Prints data as a JSON array'
103
- }));
82
+ function settle(resolve, reject, d, v) {
83
+ Promise.resolve(v).then(function (v) {
84
+ resolve({
85
+ value: v,
86
+ done: d
87
+ });
88
+ }, reject);
104
89
  }
90
+ };
105
91
 
106
- async run(args) {
107
- await super.run(args); // Setup pipeline
108
-
109
- const pipeline = new _pipeline.Pipeline();
110
-
111
- if (args.private !== undefined) {
112
- pipeline.add(_filters.Filter.privateWorkspace(args.private));
113
- }
114
-
115
- if (args['with-script'] !== undefined) {
116
- pipeline.add(_filters.Filter.scripts(args['with-script']));
117
- }
118
-
119
- if (args.affected !== undefined) {
120
- pipeline.add(new _filters.AffectedFilter(args.affected, args['affected-rev-fallback'], args['affected-rev-sort']));
121
- } // Filter
122
-
92
+ // Constants
93
+ const LONG_ATTRIBUTES = ['name', 'version', 'root'];
94
+ const JSON_ATTRIBUTES = ['name', 'version', 'slug', 'root'];
95
+ const DEFAULT_ATTRIBUTES = ['name'];
96
+ const EXTRACTORS = {
97
+ name: wks => wks.name,
98
+ version: wks => wks.manifest.version || undefined,
99
+ root: (wks, json) => json ? wks.cwd : path.relative(process.cwd(), wks.cwd) || '.',
100
+ slug: wks => (0, _slugify.default)(wks.name)
101
+ }; // Utils
123
102
 
124
- const workspaces = [];
103
+ function buildExtractor(attrs) {
104
+ return (wks, json) => {
105
+ const data = {};
125
106
 
126
- for await (const wks of pipeline.filter(this.project.workspaces())) {
127
- workspaces.push(wks);
107
+ for (const attr of attrs) {
108
+ data[attr] = EXTRACTORS[attr](wks, json);
128
109
  }
129
110
 
130
- this.spinner.stop(); // Build data
131
-
111
+ return data;
112
+ };
113
+ } // Command
114
+
115
+
116
+ const {
117
+ wrapper,
118
+ useArgs
119
+ } = (0, _project.withProject)((0, _command.command)({
120
+ name: ['list', 'ls'],
121
+ description: 'List workspaces',
122
+ builder: yargs => yargs.option('private', {
123
+ type: 'boolean',
124
+ group: 'Filters:',
125
+ desc: 'Print only private workspaces'
126
+ }).option('with-script', {
127
+ type: 'array',
128
+ string: true,
129
+ group: 'Filters:',
130
+ desc: 'Print only workspaces having the given script'
131
+ }).option('affected', {
132
+ alias: 'a',
133
+ type: 'string',
134
+ coerce: rev => rev === '' ? 'master' : rev,
135
+ group: 'Affected:',
136
+ desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master.\n' + 'Replaces %name by workspace name.'
137
+ }).option('affected-rev-sort', {
138
+ type: 'string',
139
+ group: 'Affected:',
140
+ desc: 'Sort applied to git tag / git branch command'
141
+ }).option('affected-rev-fallback', {
142
+ type: 'string',
143
+ default: 'master',
144
+ group: 'Affected:',
145
+ desc: 'Fallback revision, used if no revision matching the given format is found'
146
+ }).option('attrs', {
147
+ type: 'array',
148
+ choices: ['name', 'version', 'root', 'slug'],
149
+ default: [],
150
+ group: 'Format:',
151
+ desc: 'Select printed attributes'
152
+ }).option('headers', {
153
+ type: 'boolean',
154
+ group: 'Format:',
155
+ desc: 'Prints columns headers'
156
+ }).option('long', {
157
+ alias: 'l',
158
+ type: 'boolean',
159
+ group: 'Format:',
160
+ desc: 'Prints name, version and root of all workspaces'
161
+ }).option('json', {
162
+ type: 'boolean',
163
+ group: 'Format:',
164
+ desc: 'Prints data as a JSON array'
165
+ })
166
+ })); // Component
167
+
168
+ const ListCommand = wrapper(function ListComponent() {
169
+ var _a;
170
+
171
+ const args = useArgs();
172
+ const project = (0, _project.useProject)(); // State
173
+
174
+ const [workspaces, setWorkspaces] = (0, _react.useState)(); // Memo
175
+
176
+ const attrs = (0, _react.useMemo)(() => {
132
177
  let attrs = args.attrs;
133
178
 
134
179
  if (args.attrs.length === 0) {
@@ -141,37 +186,69 @@ class ListCommand extends _project.ProjectCommand {
141
186
  }
142
187
  }
143
188
 
144
- const data = workspaces.map(wks => this.buildExtractor(attrs)(wks, args.json || false)); // Print data
189
+ return attrs;
190
+ }, [args]);
191
+ const data = (0, _react.useMemo)(() => {
192
+ return workspaces === null || workspaces === void 0 ? void 0 : workspaces.map(wks => {
193
+ var _a;
145
194
 
146
- if (args.json) {
147
- if (process.stdout.isTTY) {
148
- // Pretty print for ttys
149
- this.log(JSON.stringify(data, null, 2));
150
- } else {
151
- this.log(JSON.stringify(data));
152
- }
153
- } else {
154
- const list = new _cliList.CliList();
195
+ return buildExtractor(attrs)(wks, (_a = args.json) !== null && _a !== void 0 ? _a : false);
196
+ });
197
+ }, [attrs, args, workspaces]); // Effects
155
198
 
156
- if (args.headers ?? attrs.length > 1) {
157
- list.setHeaders(attrs);
158
- }
199
+ (0, _react.useEffect)(() => void (() => __awaiter(this, void 0, void 0, function* () {
200
+ var e_1, _b; // Setup pipeline
159
201
 
160
- for (const d of data) {
161
- if (d.root) {
162
- d.root = _path.default.relative(process.cwd(), d.root) || '.';
163
- }
164
202
 
165
- list.add(attrs.map(attr => d[attr] || ''));
166
- }
203
+ const pipeline = new _jillCommon.Pipeline();
204
+
205
+ if (args.private !== undefined) {
206
+ pipeline.add(_jillCommon.Filter.privateWorkspace(args.private));
207
+ }
208
+
209
+ if (args.withScript !== undefined) {
210
+ pipeline.add(_jillCommon.Filter.scripts(args.withScript));
211
+ }
212
+
213
+ if (args.affected !== undefined) {
214
+ pipeline.add(new _jillCommon.AffectedFilter(args.affected, args.affectedRevFallback, args.affectedRevSort));
215
+ } // Filter
216
+
167
217
 
168
- for (const d of list.lines()) {
169
- this.log(d);
218
+ const workspaces = [];
219
+
220
+ try {
221
+ for (var _c = __asyncValues(pipeline.filter(project.workspaces())), _d; _d = yield _c.next(), !_d.done;) {
222
+ const wks = _d.value;
223
+ workspaces.push(wks);
224
+ }
225
+ } catch (e_1_1) {
226
+ e_1 = {
227
+ error: e_1_1
228
+ };
229
+ } finally {
230
+ try {
231
+ if (_d && !_d.done && (_b = _c.return)) yield _b.call(_c);
232
+ } finally {
233
+ if (e_1) throw e_1.error;
170
234
  }
171
235
  }
172
- }
173
236
 
174
- }
237
+ setWorkspaces(workspaces);
238
+ }))(), [args]); // Render
175
239
 
240
+ if (!data) {
241
+ return (0, _jsxRuntime.jsxs)(_ink.Text, {
242
+ children: [(0, _jsxRuntime.jsx)(_inkSpinner.default, {}), " Loading workspaces"]
243
+ });
244
+ }
245
+
246
+ return (0, _jsxRuntime.jsx)(_List.List, {
247
+ attrs: attrs,
248
+ data: data,
249
+ json: args.json,
250
+ withoutHeaders: !((_a = args.headers) !== null && _a !== void 0 ? _a : attrs.length > 1)
251
+ });
252
+ });
176
253
  exports.ListCommand = ListCommand;
177
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbW1hbmRzL2xpc3QuY29tbWFuZC50cyJdLCJuYW1lcyI6WyJMT05HX0FUVFJJQlVURVMiLCJKU09OX0FUVFJJQlVURVMiLCJERUZBVUxUX0FUVFJJQlVURVMiLCJFWFRSQUNUT1JTIiwibmFtZSIsIndrcyIsInZlcnNpb24iLCJqc29uIiwibWFuaWZlc3QiLCJ1bmRlZmluZWQiLCJjaGFsayIsImdyZXkiLCJyb290IiwiY3dkIiwic2x1ZyIsIkxpc3RDb21tYW5kIiwiUHJvamVjdENvbW1hbmQiLCJidWlsZEV4dHJhY3RvciIsImF0dHJzIiwiZGF0YSIsImF0dHIiLCJkZWZpbmUiLCJidWlsZGVyIiwieSIsIm9wdGlvbiIsInR5cGUiLCJncm91cCIsImRlc2MiLCJzdHJpbmciLCJhbGlhcyIsImNvZXJjZSIsInJldiIsImRlZmF1bHQiLCJjaG9pY2VzIiwicnVuIiwiYXJncyIsInBpcGVsaW5lIiwiUGlwZWxpbmUiLCJwcml2YXRlIiwiYWRkIiwiRmlsdGVyIiwicHJpdmF0ZVdvcmtzcGFjZSIsInNjcmlwdHMiLCJhZmZlY3RlZCIsIkFmZmVjdGVkRmlsdGVyIiwid29ya3NwYWNlcyIsImZpbHRlciIsInByb2plY3QiLCJwdXNoIiwic3Bpbm5lciIsInN0b3AiLCJsZW5ndGgiLCJsb25nIiwibWFwIiwicHJvY2VzcyIsInN0ZG91dCIsImlzVFRZIiwibG9nIiwiSlNPTiIsInN0cmluZ2lmeSIsImxpc3QiLCJDbGlMaXN0IiwiaGVhZGVycyIsInNldEhlYWRlcnMiLCJkIiwicGF0aCIsInJlbGF0aXZlIiwibGluZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBdUJBO0FBQ0EsTUFBTUEsZUFBNEIsR0FBRyxDQUFDLE1BQUQsRUFBUyxTQUFULEVBQW9CLE1BQXBCLENBQXJDO0FBQ0EsTUFBTUMsZUFBNEIsR0FBRyxDQUFDLE1BQUQsRUFBUyxTQUFULEVBQW9CLE1BQXBCLEVBQTRCLE1BQTVCLENBQXJDO0FBQ0EsTUFBTUMsa0JBQStCLEdBQUcsQ0FBQyxNQUFELENBQXhDO0FBRUEsTUFBTUMsVUFBNEQsR0FBRztBQUNuRUMsRUFBQUEsSUFBSSxFQUFFQyxHQUFHLElBQUlBLEdBQUcsQ0FBQ0QsSUFEa0Q7QUFFbkVFLEVBQUFBLE9BQU8sRUFBRSxDQUFDRCxHQUFELEVBQU1FLElBQU4sS0FBZUYsR0FBRyxDQUFDRyxRQUFKLENBQWFGLE9BQWIsS0FBeUJDLElBQUksR0FBR0UsU0FBSCxHQUFlQyxlQUFNQyxJQUFOLENBQVcsT0FBWCxDQUE1QyxDQUYyQztBQUduRUMsRUFBQUEsSUFBSSxFQUFFUCxHQUFHLElBQUlBLEdBQUcsQ0FBQ1EsR0FIa0Q7QUFJbkVDLEVBQUFBLElBQUksRUFBRVQsR0FBRyxJQUFJLHNCQUFRQSxHQUFHLENBQUNELElBQVo7QUFKc0QsQ0FBckUsQyxDQU9BOztBQUNPLE1BQU1XLFdBQU4sU0FBMEJDLHVCQUExQixDQUFtRDtBQUFBO0FBQUE7O0FBQUEsa0NBRXhDLENBQUMsTUFBRCxFQUFTLElBQVQsQ0FGd0M7O0FBQUEseUNBR2pDLGlCQUhpQztBQUFBOztBQUt4RDtBQUNRQyxFQUFBQSxjQUFjLENBQUNDLEtBQUQsRUFBc0M7QUFDMUQsV0FBTyxDQUFDYixHQUFELEVBQU1FLElBQU4sS0FBd0I7QUFDN0IsWUFBTVksSUFBVSxHQUFHLEVBQW5COztBQUVBLFdBQUssTUFBTUMsSUFBWCxJQUFtQkYsS0FBbkIsRUFBMEI7QUFDeEJDLFFBQUFBLElBQUksQ0FBQ0MsSUFBRCxDQUFKLEdBQWFqQixVQUFVLENBQUNpQixJQUFELENBQVYsQ0FBaUJmLEdBQWpCLEVBQXNCRSxJQUF0QixDQUFiO0FBQ0Q7O0FBRUQsYUFBT1ksSUFBUDtBQUNELEtBUkQ7QUFTRDs7QUFFU0UsRUFBQUEsTUFBTSxDQUFPQyxPQUFQLEVBQXlEO0FBQ3ZFLFdBQU8sTUFBTUQsTUFBTixDQUFhRSxDQUFDLElBQUlELE9BQU8sQ0FBQ0MsQ0FBRCxDQUFQLENBQ3RCQyxNQURzQixDQUNmLFNBRGUsRUFDSjtBQUNqQkMsTUFBQUEsSUFBSSxFQUFFLFNBRFc7QUFFakJDLE1BQUFBLEtBQUssRUFBRSxVQUZVO0FBR2pCQyxNQUFBQSxJQUFJLEVBQUU7QUFIVyxLQURJLEVBTXRCSCxNQU5zQixDQU1mLGFBTmUsRUFNQTtBQUNyQkMsTUFBQUEsSUFBSSxFQUFFLE9BRGU7QUFFckJHLE1BQUFBLE1BQU0sRUFBRSxJQUZhO0FBR3JCRixNQUFBQSxLQUFLLEVBQUUsVUFIYztBQUlyQkMsTUFBQUEsSUFBSSxFQUFFO0FBSmUsS0FOQSxFQVl0QkgsTUFac0IsQ0FZZixVQVplLEVBWUg7QUFDbEJLLE1BQUFBLEtBQUssRUFBRSxHQURXO0FBRWxCSixNQUFBQSxJQUFJLEVBQUUsUUFGWTtBQUdsQkssTUFBQUEsTUFBTSxFQUFHQyxHQUFELElBQWlCQSxHQUFHLEtBQUssRUFBUixHQUFhLFFBQWIsR0FBd0JBLEdBSC9CO0FBSWxCTCxNQUFBQSxLQUFLLEVBQUUsV0FKVztBQUtsQkMsTUFBQUEsSUFBSSxFQUFFLHdIQUNKO0FBTmdCLEtBWkcsRUFvQnRCSCxNQXBCc0IsQ0FvQmYsbUJBcEJlLEVBb0JNO0FBQzNCQyxNQUFBQSxJQUFJLEVBQUUsUUFEcUI7QUFFM0JDLE1BQUFBLEtBQUssRUFBRSxXQUZvQjtBQUczQkMsTUFBQUEsSUFBSSxFQUFFO0FBSHFCLEtBcEJOLEVBeUJ0QkgsTUF6QnNCLENBeUJmLHVCQXpCZSxFQXlCVTtBQUMvQkMsTUFBQUEsSUFBSSxFQUFFLFFBRHlCO0FBRS9CTyxNQUFBQSxPQUFPLEVBQUUsUUFGc0I7QUFHL0JOLE1BQUFBLEtBQUssRUFBRSxXQUh3QjtBQUkvQkMsTUFBQUEsSUFBSSxFQUFFO0FBSnlCLEtBekJWLEVBK0J0QkgsTUEvQnNCLENBK0JmLE9BL0JlLEVBK0JOO0FBQ2ZDLE1BQUFBLElBQUksRUFBRSxPQURTO0FBRWZRLE1BQUFBLE9BQU8sRUFBRSxDQUFDLE1BQUQsRUFBUyxTQUFULEVBQW9CLE1BQXBCLEVBQTRCLE1BQTVCLENBRk07QUFHZkQsTUFBQUEsT0FBTyxFQUFFLEVBSE07QUFJZk4sTUFBQUEsS0FBSyxFQUFFLFNBSlE7QUFLZkMsTUFBQUEsSUFBSSxFQUFFO0FBTFMsS0EvQk0sRUFzQ3RCSCxNQXRDc0IsQ0FzQ2YsU0F0Q2UsRUFzQ0o7QUFDakJDLE1BQUFBLElBQUksRUFBRSxTQURXO0FBRWpCQyxNQUFBQSxLQUFLLEVBQUUsU0FGVTtBQUdqQkMsTUFBQUEsSUFBSSxFQUFFO0FBSFcsS0F0Q0ksRUEyQ3RCSCxNQTNDc0IsQ0EyQ2YsTUEzQ2UsRUEyQ1A7QUFDZEssTUFBQUEsS0FBSyxFQUFFLEdBRE87QUFFZEosTUFBQUEsSUFBSSxFQUFFLFNBRlE7QUFHZEMsTUFBQUEsS0FBSyxFQUFFLFNBSE87QUFJZEMsTUFBQUEsSUFBSSxFQUFFO0FBSlEsS0EzQ08sRUFpRHRCSCxNQWpEc0IsQ0FpRGYsTUFqRGUsRUFpRFA7QUFDZEMsTUFBQUEsSUFBSSxFQUFFLFNBRFE7QUFFZEMsTUFBQUEsS0FBSyxFQUFFLFNBRk87QUFHZEMsTUFBQUEsSUFBSSxFQUFFO0FBSFEsS0FqRE8sQ0FBbEIsQ0FBUDtBQXVERDs7QUFFa0IsUUFBSE8sR0FBRyxDQUFDQyxJQUFELEVBQW9EO0FBQ3JFLFVBQU0sTUFBTUQsR0FBTixDQUFVQyxJQUFWLENBQU4sQ0FEcUUsQ0FHckU7O0FBQ0EsVUFBTUMsUUFBUSxHQUFHLElBQUlDLGtCQUFKLEVBQWpCOztBQUVBLFFBQUlGLElBQUksQ0FBQ0csT0FBTCxLQUFpQjdCLFNBQXJCLEVBQWdDO0FBQzlCMkIsTUFBQUEsUUFBUSxDQUFDRyxHQUFULENBQWFDLGdCQUFPQyxnQkFBUCxDQUF3Qk4sSUFBSSxDQUFDRyxPQUE3QixDQUFiO0FBQ0Q7O0FBRUQsUUFBSUgsSUFBSSxDQUFDLGFBQUQsQ0FBSixLQUF3QjFCLFNBQTVCLEVBQXVDO0FBQ3JDMkIsTUFBQUEsUUFBUSxDQUFDRyxHQUFULENBQWFDLGdCQUFPRSxPQUFQLENBQWVQLElBQUksQ0FBQyxhQUFELENBQW5CLENBQWI7QUFDRDs7QUFFRCxRQUFJQSxJQUFJLENBQUNRLFFBQUwsS0FBa0JsQyxTQUF0QixFQUFpQztBQUMvQjJCLE1BQUFBLFFBQVEsQ0FBQ0csR0FBVCxDQUFhLElBQUlLLHVCQUFKLENBQ1hULElBQUksQ0FBQ1EsUUFETSxFQUVYUixJQUFJLENBQUMsdUJBQUQsQ0FGTyxFQUdYQSxJQUFJLENBQUMsbUJBQUQsQ0FITyxDQUFiO0FBS0QsS0FwQm9FLENBc0JyRTs7O0FBQ0EsVUFBTVUsVUFBdUIsR0FBRyxFQUFoQzs7QUFFQSxlQUFXLE1BQU14QyxHQUFqQixJQUF3QitCLFFBQVEsQ0FBQ1UsTUFBVCxDQUFnQixLQUFLQyxPQUFMLENBQWFGLFVBQWIsRUFBaEIsQ0FBeEIsRUFBb0U7QUFDbEVBLE1BQUFBLFVBQVUsQ0FBQ0csSUFBWCxDQUFnQjNDLEdBQWhCO0FBQ0Q7O0FBRUQsU0FBSzRDLE9BQUwsQ0FBYUMsSUFBYixHQTdCcUUsQ0ErQnJFOztBQUNBLFFBQUloQyxLQUFLLEdBQUdpQixJQUFJLENBQUNqQixLQUFqQjs7QUFFQSxRQUFJaUIsSUFBSSxDQUFDakIsS0FBTCxDQUFXaUMsTUFBWCxLQUFzQixDQUExQixFQUE2QjtBQUMzQixVQUFJaEIsSUFBSSxDQUFDaUIsSUFBVCxFQUFlO0FBQ2JsQyxRQUFBQSxLQUFLLEdBQUdsQixlQUFSO0FBQ0QsT0FGRCxNQUVPLElBQUltQyxJQUFJLENBQUM1QixJQUFULEVBQWU7QUFDcEJXLFFBQUFBLEtBQUssR0FBR2pCLGVBQVI7QUFDRCxPQUZNLE1BRUE7QUFDTGlCLFFBQUFBLEtBQUssR0FBR2hCLGtCQUFSO0FBQ0Q7QUFDRjs7QUFFRCxVQUFNaUIsSUFBSSxHQUFHMEIsVUFBVSxDQUFDUSxHQUFYLENBQWVoRCxHQUFHLElBQUksS0FBS1ksY0FBTCxDQUFvQkMsS0FBcEIsRUFBMkJiLEdBQTNCLEVBQWdDOEIsSUFBSSxDQUFDNUIsSUFBTCxJQUFhLEtBQTdDLENBQXRCLENBQWIsQ0E1Q3FFLENBOENyRTs7QUFDQSxRQUFJNEIsSUFBSSxDQUFDNUIsSUFBVCxFQUFlO0FBQ2IsVUFBSStDLE9BQU8sQ0FBQ0MsTUFBUixDQUFlQyxLQUFuQixFQUEwQjtBQUFFO0FBQzFCLGFBQUtDLEdBQUwsQ0FBU0MsSUFBSSxDQUFDQyxTQUFMLENBQWV4QyxJQUFmLEVBQXFCLElBQXJCLEVBQTJCLENBQTNCLENBQVQ7QUFDRCxPQUZELE1BRU87QUFDTCxhQUFLc0MsR0FBTCxDQUFTQyxJQUFJLENBQUNDLFNBQUwsQ0FBZXhDLElBQWYsQ0FBVDtBQUNEO0FBQ0YsS0FORCxNQU1PO0FBQ0wsWUFBTXlDLElBQUksR0FBRyxJQUFJQyxnQkFBSixFQUFiOztBQUVBLFVBQUkxQixJQUFJLENBQUMyQixPQUFMLElBQWlCNUMsS0FBSyxDQUFDaUMsTUFBTixHQUFlLENBQXBDLEVBQXdDO0FBQ3RDUyxRQUFBQSxJQUFJLENBQUNHLFVBQUwsQ0FBZ0I3QyxLQUFoQjtBQUNEOztBQUVELFdBQUssTUFBTThDLENBQVgsSUFBZ0I3QyxJQUFoQixFQUFzQjtBQUNwQixZQUFJNkMsQ0FBQyxDQUFDcEQsSUFBTixFQUFZO0FBQ1ZvRCxVQUFBQSxDQUFDLENBQUNwRCxJQUFGLEdBQVNxRCxjQUFLQyxRQUFMLENBQWNaLE9BQU8sQ0FBQ3pDLEdBQVIsRUFBZCxFQUE2Qm1ELENBQUMsQ0FBQ3BELElBQS9CLEtBQXdDLEdBQWpEO0FBQ0Q7O0FBRURnRCxRQUFBQSxJQUFJLENBQUNyQixHQUFMLENBQVNyQixLQUFLLENBQUNtQyxHQUFOLENBQVVqQyxJQUFJLElBQUk0QyxDQUFDLENBQUM1QyxJQUFELENBQUQsSUFBVyxFQUE3QixDQUFUO0FBQ0Q7O0FBRUQsV0FBSyxNQUFNNEMsQ0FBWCxJQUFnQkosSUFBSSxDQUFDTyxLQUFMLEVBQWhCLEVBQThCO0FBQzVCLGFBQUtWLEdBQUwsQ0FBU08sQ0FBVDtBQUNEO0FBQ0Y7QUFDRjs7QUFwSnVEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV29ya3NwYWNlIH0gZnJvbSAnQGp1anVsZWdvL2ppbGwtY29yZSc7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHNsdWdpZnkgZnJvbSAnc2x1Z2lmeSc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0IHsgUHJvamVjdEFyZ3MsIFByb2plY3RDb21tYW5kIH0gZnJvbSAnLi4vcHJvamVjdC5jb21tYW5kJztcbmltcG9ydCB7IFBpcGVsaW5lIH0gZnJvbSAnLi4vcGlwZWxpbmUnO1xuaW1wb3J0IHsgQWZmZWN0ZWRGaWx0ZXIsIEZpbHRlciB9IGZyb20gJy4uL2ZpbHRlcnMnO1xuaW1wb3J0IHsgQ2xpTGlzdCB9IGZyb20gJy4uL3V0aWxzL2NsaS1saXN0JztcbmltcG9ydCB7IEFyZ3VtZW50cywgQnVpbGRlciB9IGZyb20gJy4uL2NvbW1hbmQnO1xuXG4vLyBUeXBlc1xuZXhwb3J0IHR5cGUgQXR0cmlidXRlID0gJ25hbWUnIHwgJ3ZlcnNpb24nIHwgJ3Jvb3QnIHwgJ3NsdWcnO1xuZXhwb3J0IHR5cGUgRGF0YSA9IFBhcnRpYWw8UmVjb3JkPEF0dHJpYnV0ZSwgc3RyaW5nPj47XG5cbnR5cGUgRXh0cmFjdG9yPFQ+ID0gKHdrczogV29ya3NwYWNlLCBqc29uOiBib29sZWFuKSA9PiBUO1xuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RBcmdzIGV4dGVuZHMgUHJvamVjdEFyZ3Mge1xuICBwcml2YXRlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAnd2l0aC1zY3JpcHQnOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcblxuICBhZmZlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAnYWZmZWN0ZWQtcmV2LXNvcnQnOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICdhZmZlY3RlZC1yZXYtZmFsbGJhY2snOiBzdHJpbmc7XG5cbiAgYXR0cnM6IEF0dHJpYnV0ZVtdO1xuICBoZWFkZXJzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBsb25nOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBqc29uOiBib29sZWFuIHwgdW5kZWZpbmVkO1xufVxuXG4vLyBDb25zdGFudHNcbmNvbnN0IExPTkdfQVRUUklCVVRFUzogQXR0cmlidXRlW10gPSBbJ25hbWUnLCAndmVyc2lvbicsICdyb290J107XG5jb25zdCBKU09OX0FUVFJJQlVURVM6IEF0dHJpYnV0ZVtdID0gWyduYW1lJywgJ3ZlcnNpb24nLCAnc2x1ZycsICdyb290J107XG5jb25zdCBERUZBVUxUX0FUVFJJQlVURVM6IEF0dHJpYnV0ZVtdID0gWyduYW1lJ107XG5cbmNvbnN0IEVYVFJBQ1RPUlM6IFJlY29yZDxBdHRyaWJ1dGUsIEV4dHJhY3RvcjxzdHJpbmcgfCB1bmRlZmluZWQ+PiA9IHtcbiAgbmFtZTogd2tzID0+IHdrcy5uYW1lLFxuICB2ZXJzaW9uOiAod2tzLCBqc29uKSA9PiB3a3MubWFuaWZlc3QudmVyc2lvbiB8fCAoanNvbiA/IHVuZGVmaW5lZCA6IGNoYWxrLmdyZXkoJ3Vuc2V0JykpLFxuICByb290OiB3a3MgPT4gd2tzLmN3ZCxcbiAgc2x1Zzogd2tzID0+IHNsdWdpZnkod2tzLm5hbWUpXG59O1xuXG4vLyBDb21tYW5kXG5leHBvcnQgY2xhc3MgTGlzdENvbW1hbmQgZXh0ZW5kcyBQcm9qZWN0Q29tbWFuZDxMaXN0QXJncz4ge1xuICAvLyBBdHRyaWJ1dGVzXG4gIHJlYWRvbmx5IG5hbWUgPSBbJ2xpc3QnLCAnbHMnXTtcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24gPSAnTGlzdCB3b3Jrc3BhY2VzJztcblxuICAvLyBNZXRob2RzXG4gIHByaXZhdGUgYnVpbGRFeHRyYWN0b3IoYXR0cnM6IEF0dHJpYnV0ZVtdKTogRXh0cmFjdG9yPERhdGE+IHtcbiAgICByZXR1cm4gKHdrcywganNvbjogYm9vbGVhbikgPT4ge1xuICAgICAgY29uc3QgZGF0YTogRGF0YSA9IHt9O1xuXG4gICAgICBmb3IgKGNvbnN0IGF0dHIgb2YgYXR0cnMpIHtcbiAgICAgICAgZGF0YVthdHRyXSA9IEVYVFJBQ1RPUlNbYXR0cl0od2tzLCBqc29uKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkZWZpbmU8VCwgVT4oYnVpbGRlcjogQnVpbGRlcjxULCBVPik6IEJ1aWxkZXI8VCwgVSAmIExpc3RBcmdzPiB7XG4gICAgcmV0dXJuIHN1cGVyLmRlZmluZSh5ID0+IGJ1aWxkZXIoeSlcbiAgICAgIC5vcHRpb24oJ3ByaXZhdGUnLCB7XG4gICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgZ3JvdXA6ICdGaWx0ZXJzOicsXG4gICAgICAgIGRlc2M6ICdQcmludCBvbmx5IHByaXZhdGUgd29ya3NwYWNlcycsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbignd2l0aC1zY3JpcHQnLCB7XG4gICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgIHN0cmluZzogdHJ1ZSxcbiAgICAgICAgZ3JvdXA6ICdGaWx0ZXJzOicsXG4gICAgICAgIGRlc2M6ICdQcmludCBvbmx5IHdvcmtzcGFjZXMgaGF2aW5nIHRoZSBnaXZlbiBzY3JpcHQnLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb24oJ2FmZmVjdGVkJywge1xuICAgICAgICBhbGlhczogJ2EnLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgY29lcmNlOiAocmV2OiBzdHJpbmcpID0+IHJldiA9PT0gJycgPyAnbWFzdGVyJyA6IHJldixcbiAgICAgICAgZ3JvdXA6ICdBZmZlY3RlZDonLFxuICAgICAgICBkZXNjOiAnUHJpbnQgb25seSBhZmZlY3RlZCB3b3Jrc3BhY2VzIHRvd2FyZHMgZ2l2ZW4gZ2l0IHJldmlzaW9uLiBJZiBubyByZXZpc2lvbiBpcyBnaXZlbiwgaXQgd2lsbCBjaGVjayB0b3dhcmRzIG1hc3Rlci5cXG4nICtcbiAgICAgICAgICAnUmVwbGFjZXMgJW5hbWUgYnkgd29ya3NwYWNlIG5hbWUuJyxcbiAgICAgIH0pXG4gICAgICAub3B0aW9uKCdhZmZlY3RlZC1yZXYtc29ydCcsIHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGdyb3VwOiAnQWZmZWN0ZWQ6JyxcbiAgICAgICAgZGVzYzogJ1NvcnQgYXBwbGllZCB0byBnaXQgdGFnIC8gZ2l0IGJyYW5jaCBjb21tYW5kJyxcbiAgICAgIH0pXG4gICAgICAub3B0aW9uKCdhZmZlY3RlZC1yZXYtZmFsbGJhY2snLCB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZWZhdWx0OiAnbWFzdGVyJyxcbiAgICAgICAgZ3JvdXA6ICdBZmZlY3RlZDonLFxuICAgICAgICBkZXNjOiAnRmFsbGJhY2sgcmV2aXNpb24sIHVzZWQgaWYgbm8gcmV2aXNpb24gbWF0Y2hpbmcgdGhlIGdpdmVuIGZvcm1hdCBpcyBmb3VuZCcsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbignYXR0cnMnLCB7XG4gICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgIGNob2ljZXM6IFsnbmFtZScsICd2ZXJzaW9uJywgJ3Jvb3QnLCAnc2x1ZyddLFxuICAgICAgICBkZWZhdWx0OiBbXSBhcyBBdHRyaWJ1dGVbXSxcbiAgICAgICAgZ3JvdXA6ICdGb3JtYXQ6JyxcbiAgICAgICAgZGVzYzogJ1NlbGVjdCBwcmludGVkIGF0dHJpYnV0ZXMnXG4gICAgICB9KVxuICAgICAgLm9wdGlvbignaGVhZGVycycsIHtcbiAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICBncm91cDogJ0Zvcm1hdDonLFxuICAgICAgICBkZXNjOiAnUHJpbnRzIGNvbHVtbnMgaGVhZGVycydcbiAgICAgIH0pXG4gICAgICAub3B0aW9uKCdsb25nJywge1xuICAgICAgICBhbGlhczogJ2wnLFxuICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIGdyb3VwOiAnRm9ybWF0OicsXG4gICAgICAgIGRlc2M6ICdQcmludHMgbmFtZSwgdmVyc2lvbiBhbmQgcm9vdCBvZiBhbGwgd29ya3NwYWNlcycsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbignanNvbicsIHtcbiAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICBncm91cDogJ0Zvcm1hdDonLFxuICAgICAgICBkZXNjOiAnUHJpbnRzIGRhdGEgYXMgYSBKU09OIGFycmF5JyxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBydW4oYXJnczogQXJndW1lbnRzPExpc3RBcmdzPik6IFByb21pc2U8bnVtYmVyIHwgdm9pZD4ge1xuICAgIGF3YWl0IHN1cGVyLnJ1bihhcmdzKTtcblxuICAgIC8vIFNldHVwIHBpcGVsaW5lXG4gICAgY29uc3QgcGlwZWxpbmUgPSBuZXcgUGlwZWxpbmUoKTtcblxuICAgIGlmIChhcmdzLnByaXZhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcGlwZWxpbmUuYWRkKEZpbHRlci5wcml2YXRlV29ya3NwYWNlKGFyZ3MucHJpdmF0ZSkpO1xuICAgIH1cblxuICAgIGlmIChhcmdzWyd3aXRoLXNjcmlwdCddICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHBpcGVsaW5lLmFkZChGaWx0ZXIuc2NyaXB0cyhhcmdzWyd3aXRoLXNjcmlwdCddKSk7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3MuYWZmZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcGlwZWxpbmUuYWRkKG5ldyBBZmZlY3RlZEZpbHRlcihcbiAgICAgICAgYXJncy5hZmZlY3RlZCxcbiAgICAgICAgYXJnc1snYWZmZWN0ZWQtcmV2LWZhbGxiYWNrJ10sXG4gICAgICAgIGFyZ3NbJ2FmZmVjdGVkLXJldi1zb3J0J11cbiAgICAgICkpO1xuICAgIH1cblxuICAgIC8vIEZpbHRlclxuICAgIGNvbnN0IHdvcmtzcGFjZXM6IFdvcmtzcGFjZVtdID0gW107XG5cbiAgICBmb3IgYXdhaXQgKGNvbnN0IHdrcyBvZiBwaXBlbGluZS5maWx0ZXIodGhpcy5wcm9qZWN0LndvcmtzcGFjZXMoKSkpIHtcbiAgICAgIHdvcmtzcGFjZXMucHVzaCh3a3MpO1xuICAgIH1cblxuICAgIHRoaXMuc3Bpbm5lci5zdG9wKCk7XG5cbiAgICAvLyBCdWlsZCBkYXRhXG4gICAgbGV0IGF0dHJzID0gYXJncy5hdHRycztcblxuICAgIGlmIChhcmdzLmF0dHJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgaWYgKGFyZ3MubG9uZykge1xuICAgICAgICBhdHRycyA9IExPTkdfQVRUUklCVVRFUztcbiAgICAgIH0gZWxzZSBpZiAoYXJncy5qc29uKSB7XG4gICAgICAgIGF0dHJzID0gSlNPTl9BVFRSSUJVVEVTO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXR0cnMgPSBERUZBVUxUX0FUVFJJQlVURVM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IHdvcmtzcGFjZXMubWFwKHdrcyA9PiB0aGlzLmJ1aWxkRXh0cmFjdG9yKGF0dHJzKSh3a3MsIGFyZ3MuanNvbiB8fCBmYWxzZSkpO1xuXG4gICAgLy8gUHJpbnQgZGF0YVxuICAgIGlmIChhcmdzLmpzb24pIHtcbiAgICAgIGlmIChwcm9jZXNzLnN0ZG91dC5pc1RUWSkgeyAvLyBQcmV0dHkgcHJpbnQgZm9yIHR0eXNcbiAgICAgICAgdGhpcy5sb2coSlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgMikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2coSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsaXN0ID0gbmV3IENsaUxpc3QoKTtcblxuICAgICAgaWYgKGFyZ3MuaGVhZGVycyA/PyAoYXR0cnMubGVuZ3RoID4gMSkpIHtcbiAgICAgICAgbGlzdC5zZXRIZWFkZXJzKGF0dHJzKTtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBkIG9mIGRhdGEpIHtcbiAgICAgICAgaWYgKGQucm9vdCkge1xuICAgICAgICAgIGQucm9vdCA9IHBhdGgucmVsYXRpdmUocHJvY2Vzcy5jd2QoKSwgZC5yb290KSB8fCAnLic7XG4gICAgICAgIH1cblxuICAgICAgICBsaXN0LmFkZChhdHRycy5tYXAoYXR0ciA9PiBkW2F0dHJdIHx8ICcnKSk7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgZCBvZiBsaXN0LmxpbmVzKCkpIHtcbiAgICAgICAgdGhpcy5sb2coZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59Il0sImZpbGUiOiJjb21tYW5kcy9saXN0LmNvbW1hbmQuanMifQ==
254
+ //# sourceMappingURL=list.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["commands/list.command.js","commands/list.command.tsx"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__asyncValues","o","Symbol","asyncIterator","TypeError","m","i","call","__values","iterator","verb","n","v","settle","d","LONG_ATTRIBUTES","JSON_ATTRIBUTES","DEFAULT_ATTRIBUTES","EXTRACTORS","name","wks","version","manifest","undefined","root","json","cwd","path","relative","process","slug","buildExtractor","attrs","data","attr","wrapper","useArgs","description","builder","yargs","option","type","group","desc","string","alias","coerce","rev","default","choices","ListCommand","ListComponent","_a","args","project","workspaces","setWorkspaces","length","long","map","e_1","_b","pipeline","Pipeline","private","add","Filter","privateWorkspace","withScript","scripts","affected","AffectedFilter","affectedRevFallback","affectedRevSort","_c","filter","_d","push","e_1_1","error","return","Text","children","Spinner","List","withoutHeaders","headers"],"mappings":"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","file":"list.command.js","sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { AffectedFilter, Filter, Pipeline } from '@jujulego/jill-common';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport * as path from 'path';\nimport { useEffect, useMemo, useState } from 'react';\nimport slugify from 'slugify';\nimport { command } from '../command';\nimport { useProject, withProject } from '../wrappers/project.wrapper';\nimport { List } from '../components/List';\n// Constants\nconst LONG_ATTRIBUTES = ['name', 'version', 'root'];\nconst JSON_ATTRIBUTES = ['name', 'version', 'slug', 'root'];\nconst DEFAULT_ATTRIBUTES = ['name'];\nconst EXTRACTORS = {\n name: wks => wks.name,\n version: wks => wks.manifest.version || undefined,\n root: (wks, json) => json ? wks.cwd : path.relative(process.cwd(), wks.cwd) || '.',\n slug: wks => slugify(wks.name)\n};\n// Utils\nfunction buildExtractor(attrs) {\n return (wks, json) => {\n const data = {};\n for (const attr of attrs) {\n data[attr] = EXTRACTORS[attr](wks, json);\n }\n return data;\n };\n}\n// Command\nconst { wrapper, useArgs } = withProject(command({\n name: ['list', 'ls'],\n description: 'List workspaces',\n builder: (yargs) => yargs\n .option('private', {\n type: 'boolean',\n group: 'Filters:',\n desc: 'Print only private workspaces',\n })\n .option('with-script', {\n type: 'array',\n string: true,\n group: 'Filters:',\n desc: 'Print only workspaces having the given script',\n })\n .option('affected', {\n alias: 'a',\n type: 'string',\n coerce: (rev) => rev === '' ? 'master' : rev,\n group: 'Affected:',\n desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master.\\n' +\n 'Replaces %name by workspace name.',\n })\n .option('affected-rev-sort', {\n type: 'string',\n group: 'Affected:',\n desc: 'Sort applied to git tag / git branch command',\n })\n .option('affected-rev-fallback', {\n type: 'string',\n default: 'master',\n group: 'Affected:',\n desc: 'Fallback revision, used if no revision matching the given format is found',\n })\n .option('attrs', {\n type: 'array',\n choices: ['name', 'version', 'root', 'slug'],\n default: [],\n group: 'Format:',\n desc: 'Select printed attributes'\n })\n .option('headers', {\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints columns headers'\n })\n .option('long', {\n alias: 'l',\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints name, version and root of all workspaces',\n })\n .option('json', {\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints data as a JSON array',\n }),\n}));\n// Component\nexport const ListCommand = wrapper(function ListComponent() {\n var _a;\n const args = useArgs();\n const project = useProject();\n // State\n const [workspaces, setWorkspaces] = useState();\n // Memo\n const attrs = useMemo(() => {\n let attrs = args.attrs;\n if (args.attrs.length === 0) {\n if (args.long) {\n attrs = LONG_ATTRIBUTES;\n }\n else if (args.json) {\n attrs = JSON_ATTRIBUTES;\n }\n else {\n attrs = DEFAULT_ATTRIBUTES;\n }\n }\n return attrs;\n }, [args]);\n const data = useMemo(() => {\n return workspaces === null || workspaces === void 0 ? void 0 : workspaces.map(wks => { var _a; return buildExtractor(attrs)(wks, (_a = args.json) !== null && _a !== void 0 ? _a : false); });\n }, [attrs, args, workspaces]);\n // Effects\n useEffect(() => void (() => __awaiter(this, void 0, void 0, function* () {\n var e_1, _b;\n // Setup pipeline\n const pipeline = new Pipeline();\n if (args.private !== undefined) {\n pipeline.add(Filter.privateWorkspace(args.private));\n }\n if (args.withScript !== undefined) {\n pipeline.add(Filter.scripts(args.withScript));\n }\n if (args.affected !== undefined) {\n pipeline.add(new AffectedFilter(args.affected, args.affectedRevFallback, args.affectedRevSort));\n }\n // Filter\n const workspaces = [];\n try {\n for (var _c = __asyncValues(pipeline.filter(project.workspaces())), _d; _d = yield _c.next(), !_d.done;) {\n const wks = _d.value;\n workspaces.push(wks);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_b = _c.return)) yield _b.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n setWorkspaces(workspaces);\n }))(), [args]);\n // Render\n if (!data) {\n return _jsxs(Text, { children: [_jsx(Spinner, {}), \" Loading workspaces\"] });\n }\n return (_jsx(List, { attrs: attrs, data: data, json: args.json, withoutHeaders: !((_a = args.headers) !== null && _a !== void 0 ? _a : (attrs.length > 1)) }));\n});","import { AffectedFilter, Filter, Pipeline } from '@jujulego/jill-common';\nimport { Workspace } from '@jujulego/jill-core';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport * as path from 'path';\nimport { useEffect, useMemo, useState } from 'react';\nimport slugify from 'slugify';\n\nimport { command } from '../command';\nimport { useProject, withProject } from '../wrappers/project.wrapper';\nimport { List } from '../components/List';\n\n// Types\nexport type Attribute = 'name' | 'version' | 'root' | 'slug';\nexport type Data = Partial<Record<Attribute, string>>;\n\ntype Extractor<T> = (wks: Workspace, json: boolean) => T;\n\n// Constants\nconst LONG_ATTRIBUTES: Attribute[] = ['name', 'version', 'root'];\nconst JSON_ATTRIBUTES: Attribute[] = ['name', 'version', 'slug', 'root'];\nconst DEFAULT_ATTRIBUTES: Attribute[] = ['name'];\n\nconst EXTRACTORS: Record<Attribute, Extractor<string | undefined>> = {\n name: wks => wks.name,\n version: wks => wks.manifest.version || undefined,\n root: (wks, json) => json ? wks.cwd : path.relative(process.cwd(), wks.cwd) || '.',\n slug: wks => slugify(wks.name)\n};\n\n// Utils\nfunction buildExtractor(attrs: Attribute[]): Extractor<Data> {\n return (wks, json) => {\n const data: Data = {};\n\n for (const attr of attrs) {\n data[attr] = EXTRACTORS[attr](wks, json);\n }\n\n return data;\n };\n}\n\n// Command\nconst { wrapper, useArgs } = withProject(command({\n name: ['list', 'ls'],\n description: 'List workspaces',\n builder: (yargs) => yargs\n .option('private', {\n type: 'boolean',\n group: 'Filters:',\n desc: 'Print only private workspaces',\n })\n .option('with-script', {\n type: 'array',\n string: true,\n group: 'Filters:',\n desc: 'Print only workspaces having the given script',\n })\n .option('affected', {\n alias: 'a',\n type: 'string',\n coerce: (rev: string) => rev === '' ? 'master' : rev,\n group: 'Affected:',\n desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master.\\n' +\n 'Replaces %name by workspace name.',\n })\n .option('affected-rev-sort', {\n type: 'string',\n group: 'Affected:',\n desc: 'Sort applied to git tag / git branch command',\n })\n .option('affected-rev-fallback', {\n type: 'string',\n default: 'master',\n group: 'Affected:',\n desc: 'Fallback revision, used if no revision matching the given format is found',\n })\n .option('attrs', {\n type: 'array',\n choices: ['name', 'version', 'root', 'slug'],\n default: [] as Attribute[],\n group: 'Format:',\n desc: 'Select printed attributes'\n })\n .option('headers', {\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints columns headers'\n })\n .option('long', {\n alias: 'l',\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints name, version and root of all workspaces',\n })\n .option('json', {\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints data as a JSON array',\n }),\n}));\n\n// Component\nexport const ListCommand = wrapper(function ListComponent() {\n const args = useArgs();\n const project = useProject();\n\n // State\n const [workspaces, setWorkspaces] = useState<Workspace[]>();\n\n // Memo\n const attrs = useMemo(() => {\n let attrs = args.attrs;\n\n if (args.attrs.length === 0) {\n if (args.long) {\n attrs = LONG_ATTRIBUTES;\n } else if (args.json) {\n attrs = JSON_ATTRIBUTES;\n } else {\n attrs = DEFAULT_ATTRIBUTES;\n }\n }\n\n return attrs;\n }, [args]);\n\n const data = useMemo(() => {\n return workspaces?.map(wks => buildExtractor(attrs)(wks, args.json ?? false));\n }, [attrs, args, workspaces]);\n\n // Effects\n useEffect(() => void (async () => {\n // Setup pipeline\n const pipeline = new Pipeline();\n\n if (args.private !== undefined) {\n pipeline.add(Filter.privateWorkspace(args.private));\n }\n\n if (args.withScript !== undefined) {\n pipeline.add(Filter.scripts(args.withScript));\n }\n\n if (args.affected !== undefined) {\n pipeline.add(new AffectedFilter(\n args.affected,\n args.affectedRevFallback,\n args.affectedRevSort\n ));\n }\n\n // Filter\n const workspaces: Workspace[] = [];\n\n for await (const wks of pipeline.filter(project.workspaces())) {\n workspaces.push(wks);\n }\n\n setWorkspaces(workspaces);\n })(), [args]);\n\n // Render\n if (!data) {\n return <Text><Spinner /> Loading workspaces</Text>;\n }\n\n return (\n <List\n attrs={attrs}\n data={data}\n json={args.json}\n withoutHeaders={!(args.headers ?? (attrs.length > 1))}\n />\n );\n});\n"]}
@@ -1,13 +1,12 @@
1
1
  import { WorkspaceDepsMode } from '@jujulego/jill-core';
2
- import { Arguments, Builder } from '../command';
3
- import { WorkspaceArgs, WorkspaceCommand } from '../workspace.command';
4
- export interface RunArgs extends WorkspaceArgs {
2
+ export declare const RunCommand: import("../application.context").CommandComponent<Omit<Omit<{
5
3
  script: string;
6
- 'deps-mode': WorkspaceDepsMode;
7
- }
8
- export declare class RunCommand extends WorkspaceCommand<RunArgs> {
9
- readonly name = "run <script>";
10
- readonly description = "Run script inside workspace";
11
- protected define<T, U>(builder: Builder<T, U>): Builder<T, U & RunArgs>;
12
- protected run(args: Arguments<RunArgs>): Promise<number>;
13
- }
4
+ } & {
5
+ "deps-mode": WorkspaceDepsMode;
6
+ }, "workspace"> & {
7
+ workspace: string | undefined;
8
+ }, "project" | "package-manager"> & {
9
+ project: string | undefined;
10
+ } & {
11
+ "package-manager": import("@jujulego/jill-core").PackageManager | undefined;
12
+ }>;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["commands/run.command.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAyBjE,eAAO,MAAM,UAAU;;;;;;;;;;EAqBrB,CAAC","file":"run.command.d.ts","sourcesContent":["import { TaskSet, WorkspaceDepsMode } from '@jujulego/jill-core';\nimport { useEffect, useRef } from 'react';\n\nimport { command } from '../command';\nimport { withProject } from '../wrappers/project.wrapper';\nimport { useWorkspace, withWorkspace } from '../wrappers/workspace.wrapper';\nimport { TaskSetSpinner } from '../components/TaskSetSpinner';\n\n// Command\nconst { wrapper, useArgs } = withProject(withWorkspace(command({\n name: 'run <script>',\n description: 'Run script inside workspace',\n builder: (yargs) => yargs\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all' as WorkspaceDepsMode,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n})));\n\n// Component\nexport const RunCommand = wrapper(function InfoCommand() {\n const { script, depsMode, '--': rest = [] } = useArgs();\n const wks = useWorkspace();\n\n // Refs\n const tasks = useRef(new TaskSet());\n\n // Effects\n useEffect(() => void (async () => {\n const task = await wks.run(script, rest.map(arg => arg.toString()), {\n buildDeps: depsMode\n });\n\n tasks.current.add(task);\n tasks.current.start();\n })(), [script, depsMode, rest, wks]);\n\n // Render\n return (\n <TaskSetSpinner taskSet={tasks.current} />\n );\n});\n"]}
@@ -5,56 +5,90 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.RunCommand = void 0;
7
7
 
8
+ var _jsxRuntime = require("react/jsx-runtime");
9
+
8
10
  var _jillCore = require("@jujulego/jill-core");
9
11
 
10
- var _workspace = require("../workspace.command");
12
+ var _react = require("react");
11
13
 
12
- var _taskLogger = require("../task-logger");
14
+ var _command = require("../command");
13
15
 
14
- 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; }
16
+ var _project = require("../wrappers/project.wrapper");
15
17
 
16
- // Command
17
- class RunCommand extends _workspace.WorkspaceCommand {
18
- constructor(...args) {
19
- super(...args);
18
+ var _workspace = require("../wrappers/workspace.wrapper");
20
19
 
21
- _defineProperty(this, "name", 'run <script>');
20
+ var _TaskSetSpinner = require("../components/TaskSetSpinner");
22
21
 
23
- _defineProperty(this, "description", 'Run script inside workspace');
22
+ var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
23
+ function adopt(value) {
24
+ return value instanceof P ? value : new P(function (resolve) {
25
+ resolve(value);
26
+ });
24
27
  }
25
28
 
26
- // Methods
27
- define(builder) {
28
- return super.define(y => builder(y).positional('script', {
29
- type: 'string',
30
- demandOption: true
31
- }).option('deps-mode', {
32
- choice: ['all', 'prod', 'none'],
33
- default: 'all',
34
- desc: 'Dependency selection mode:\n' + ' - all = dependencies AND devDependencies\n' + ' - prod = dependencies\n' + ' - none = nothing'
35
- }));
36
- }
29
+ return new (P || (P = Promise))(function (resolve, reject) {
30
+ function fulfilled(value) {
31
+ try {
32
+ step(generator.next(value));
33
+ } catch (e) {
34
+ reject(e);
35
+ }
36
+ }
37
37
 
38
- async run(args) {
39
- await super.run(args);
40
- this.spinner.stop(); // Run build task
38
+ function rejected(value) {
39
+ try {
40
+ step(generator["throw"](value));
41
+ } catch (e) {
42
+ reject(e);
43
+ }
44
+ }
41
45
 
42
- const set = new _jillCore.TaskSet();
43
- const task = await this.workspace.run(args.script, args['--']?.map(arg => arg.toString()), {
44
- buildDeps: args['deps-mode']
45
- });
46
- set.add(task);
47
- const tlogger = new _taskLogger.TaskLogger();
48
- tlogger.on('spin-simple', tsk => tsk === task ? `Running ${args.script} in ${this.workspace.name} ...` : `Building ${tsk.context.workspace?.name} ...`);
49
- tlogger.on('fail', tsk => tsk === task ? `${args.script} failed` : `Failed to build ${tsk.context.workspace?.name}`);
50
- tlogger.on('succeed', tsk => tsk === task ? `${this.workspace.name} ${args.script} done` : `${tsk.context.workspace?.name} built`);
51
- tlogger.connect(set);
52
- set.start();
53
- const [result] = await set.waitFor('finished');
54
- return result.failed === 0 ? 0 : 1;
55
- }
46
+ function step(result) {
47
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
48
+ }
56
49
 
57
- }
50
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
51
+ });
52
+ };
58
53
 
54
+ // Command
55
+ const {
56
+ wrapper,
57
+ useArgs
58
+ } = (0, _project.withProject)((0, _workspace.withWorkspace)((0, _command.command)({
59
+ name: 'run <script>',
60
+ description: 'Run script inside workspace',
61
+ builder: yargs => yargs.positional('script', {
62
+ type: 'string',
63
+ demandOption: true
64
+ }).option('deps-mode', {
65
+ choice: ['all', 'prod', 'none'],
66
+ default: 'all',
67
+ desc: 'Dependency selection mode:\n' + ' - all = dependencies AND devDependencies\n' + ' - prod = dependencies\n' + ' - none = nothing'
68
+ })
69
+ }))); // Component
70
+
71
+ const RunCommand = wrapper(function InfoCommand() {
72
+ const {
73
+ script,
74
+ depsMode,
75
+ '--': rest = []
76
+ } = useArgs();
77
+ const wks = (0, _workspace.useWorkspace)(); // Refs
78
+
79
+ const tasks = (0, _react.useRef)(new _jillCore.TaskSet()); // Effects
80
+
81
+ (0, _react.useEffect)(() => void (() => __awaiter(this, void 0, void 0, function* () {
82
+ const task = yield wks.run(script, rest.map(arg => arg.toString()), {
83
+ buildDeps: depsMode
84
+ });
85
+ tasks.current.add(task);
86
+ tasks.current.start();
87
+ }))(), [script, depsMode, rest, wks]); // Render
88
+
89
+ return (0, _jsxRuntime.jsx)(_TaskSetSpinner.TaskSetSpinner, {
90
+ taskSet: tasks.current
91
+ });
92
+ });
59
93
  exports.RunCommand = RunCommand;
60
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbW1hbmRzL3J1bi5jb21tYW5kLnRzIl0sIm5hbWVzIjpbIlJ1bkNvbW1hbmQiLCJXb3Jrc3BhY2VDb21tYW5kIiwiZGVmaW5lIiwiYnVpbGRlciIsInkiLCJwb3NpdGlvbmFsIiwidHlwZSIsImRlbWFuZE9wdGlvbiIsIm9wdGlvbiIsImNob2ljZSIsImRlZmF1bHQiLCJkZXNjIiwicnVuIiwiYXJncyIsInNwaW5uZXIiLCJzdG9wIiwic2V0IiwiVGFza1NldCIsInRhc2siLCJ3b3Jrc3BhY2UiLCJzY3JpcHQiLCJtYXAiLCJhcmciLCJ0b1N0cmluZyIsImJ1aWxkRGVwcyIsImFkZCIsInRsb2dnZXIiLCJUYXNrTG9nZ2VyIiwib24iLCJ0c2siLCJuYW1lIiwiY29udGV4dCIsImNvbm5lY3QiLCJzdGFydCIsInJlc3VsdCIsIndhaXRGb3IiLCJmYWlsZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFHQTs7QUFDQTs7OztBQVFBO0FBQ08sTUFBTUEsVUFBTixTQUF5QkMsMkJBQXpCLENBQW1EO0FBQUE7QUFBQTs7QUFBQSxrQ0FFeEMsY0FGd0M7O0FBQUEseUNBR2pDLDZCQUhpQztBQUFBOztBQUt4RDtBQUNVQyxFQUFBQSxNQUFNLENBQU9DLE9BQVAsRUFBd0Q7QUFDdEUsV0FBTyxNQUFNRCxNQUFOLENBQWFFLENBQUMsSUFBSUQsT0FBTyxDQUFDQyxDQUFELENBQVAsQ0FDdEJDLFVBRHNCLENBQ1gsUUFEVyxFQUNEO0FBQUVDLE1BQUFBLElBQUksRUFBRSxRQUFSO0FBQWtCQyxNQUFBQSxZQUFZLEVBQUU7QUFBaEMsS0FEQyxFQUV0QkMsTUFGc0IsQ0FFZixXQUZlLEVBRUY7QUFDbkJDLE1BQUFBLE1BQU0sRUFBRSxDQUFDLEtBQUQsRUFBUSxNQUFSLEVBQWdCLE1BQWhCLENBRFc7QUFFbkJDLE1BQUFBLE9BQU8sRUFBRSxLQUZVO0FBR25CQyxNQUFBQSxJQUFJLEVBQUUsaUNBQ0osNkNBREksR0FFSiwwQkFGSSxHQUdKO0FBTmlCLEtBRkUsQ0FBbEIsQ0FBUDtBQVdEOztBQUVrQixRQUFIQyxHQUFHLENBQUNDLElBQUQsRUFBNEM7QUFDN0QsVUFBTSxNQUFNRCxHQUFOLENBQVVDLElBQVYsQ0FBTjtBQUNBLFNBQUtDLE9BQUwsQ0FBYUMsSUFBYixHQUY2RCxDQUk3RDs7QUFDQSxVQUFNQyxHQUFHLEdBQUcsSUFBSUMsaUJBQUosRUFBWjtBQUNBLFVBQU1DLElBQUksR0FBRyxNQUFNLEtBQUtDLFNBQUwsQ0FBZVAsR0FBZixDQUFtQkMsSUFBSSxDQUFDTyxNQUF4QixFQUFnQ1AsSUFBSSxDQUFDLElBQUQsQ0FBSixFQUFZUSxHQUFaLENBQWdCQyxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsUUFBSixFQUF2QixDQUFoQyxFQUF3RTtBQUN6RkMsTUFBQUEsU0FBUyxFQUFFWCxJQUFJLENBQUMsV0FBRDtBQUQwRSxLQUF4RSxDQUFuQjtBQUdBRyxJQUFBQSxHQUFHLENBQUNTLEdBQUosQ0FBUVAsSUFBUjtBQUVBLFVBQU1RLE9BQU8sR0FBRyxJQUFJQyxzQkFBSixFQUFoQjtBQUNBRCxJQUFBQSxPQUFPLENBQUNFLEVBQVIsQ0FBVyxhQUFYLEVBQTJCQyxHQUFELElBQVNBLEdBQUcsS0FBS1gsSUFBUixHQUFnQixXQUFVTCxJQUFJLENBQUNPLE1BQU8sT0FBTSxLQUFLRCxTQUFMLENBQWVXLElBQUssTUFBaEUsR0FBeUUsWUFBV0QsR0FBRyxDQUFDRSxPQUFKLENBQVlaLFNBQVosRUFBdUJXLElBQUssTUFBbko7QUFDQUosSUFBQUEsT0FBTyxDQUFDRSxFQUFSLENBQVcsTUFBWCxFQUFvQkMsR0FBRCxJQUFTQSxHQUFHLEtBQUtYLElBQVIsR0FBZ0IsR0FBRUwsSUFBSSxDQUFDTyxNQUFPLFNBQTlCLEdBQTBDLG1CQUFrQlMsR0FBRyxDQUFDRSxPQUFKLENBQVlaLFNBQVosRUFBdUJXLElBQUssRUFBcEg7QUFDQUosSUFBQUEsT0FBTyxDQUFDRSxFQUFSLENBQVcsU0FBWCxFQUF1QkMsR0FBRCxJQUFTQSxHQUFHLEtBQUtYLElBQVIsR0FBZ0IsR0FBRSxLQUFLQyxTQUFMLENBQWVXLElBQUssSUFBR2pCLElBQUksQ0FBQ08sTUFBTyxPQUFyRCxHQUErRCxHQUFFUyxHQUFHLENBQUNFLE9BQUosQ0FBWVosU0FBWixFQUF1QlcsSUFBSyxRQUE1SDtBQUNBSixJQUFBQSxPQUFPLENBQUNNLE9BQVIsQ0FBZ0JoQixHQUFoQjtBQUVBQSxJQUFBQSxHQUFHLENBQUNpQixLQUFKO0FBQ0EsVUFBTSxDQUFDQyxNQUFELElBQVcsTUFBTWxCLEdBQUcsQ0FBQ21CLE9BQUosQ0FBWSxVQUFaLENBQXZCO0FBQ0EsV0FBT0QsTUFBTSxDQUFDRSxNQUFQLEtBQWtCLENBQWxCLEdBQXNCLENBQXRCLEdBQTBCLENBQWpDO0FBQ0Q7O0FBeEN1RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhc2tTZXQsIFdvcmtzcGFjZURlcHNNb2RlIH0gZnJvbSAnQGp1anVsZWdvL2ppbGwtY29yZSc7XG5cbmltcG9ydCB7IEFyZ3VtZW50cywgQnVpbGRlciB9IGZyb20gJy4uL2NvbW1hbmQnO1xuaW1wb3J0IHsgV29ya3NwYWNlQXJncywgV29ya3NwYWNlQ29tbWFuZCB9IGZyb20gJy4uL3dvcmtzcGFjZS5jb21tYW5kJztcbmltcG9ydCB7IFRhc2tMb2dnZXIgfSBmcm9tICcuLi90YXNrLWxvZ2dlcic7XG5cbi8vIFR5cGVzXG5leHBvcnQgaW50ZXJmYWNlIFJ1bkFyZ3MgZXh0ZW5kcyBXb3Jrc3BhY2VBcmdzIHtcbiAgc2NyaXB0OiBzdHJpbmc7XG4gICdkZXBzLW1vZGUnOiBXb3Jrc3BhY2VEZXBzTW9kZTtcbn1cblxuLy8gQ29tbWFuZFxuZXhwb3J0IGNsYXNzIFJ1bkNvbW1hbmQgZXh0ZW5kcyBXb3Jrc3BhY2VDb21tYW5kPFJ1bkFyZ3M+IHtcbiAgLy8gQXR0cmlidXRlc1xuICByZWFkb25seSBuYW1lID0gJ3J1biA8c2NyaXB0Pic7XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uID0gJ1J1biBzY3JpcHQgaW5zaWRlIHdvcmtzcGFjZSc7XG5cbiAgLy8gTWV0aG9kc1xuICBwcm90ZWN0ZWQgZGVmaW5lPFQsIFU+KGJ1aWxkZXI6IEJ1aWxkZXI8VCwgVT4pOiBCdWlsZGVyPFQsIFUgJiBSdW5BcmdzPiB7XG4gICAgcmV0dXJuIHN1cGVyLmRlZmluZSh5ID0+IGJ1aWxkZXIoeSlcbiAgICAgIC5wb3NpdGlvbmFsKCdzY3JpcHQnLCB7IHR5cGU6ICdzdHJpbmcnLCBkZW1hbmRPcHRpb246IHRydWUgfSlcbiAgICAgIC5vcHRpb24oJ2RlcHMtbW9kZScsIHtcbiAgICAgICAgY2hvaWNlOiBbJ2FsbCcsICdwcm9kJywgJ25vbmUnXSxcbiAgICAgICAgZGVmYXVsdDogJ2FsbCcgYXMgV29ya3NwYWNlRGVwc01vZGUsXG4gICAgICAgIGRlc2M6ICdEZXBlbmRlbmN5IHNlbGVjdGlvbiBtb2RlOlxcbicgK1xuICAgICAgICAgICcgLSBhbGwgPSBkZXBlbmRlbmNpZXMgQU5EIGRldkRlcGVuZGVuY2llc1xcbicgK1xuICAgICAgICAgICcgLSBwcm9kID0gZGVwZW5kZW5jaWVzXFxuJyArXG4gICAgICAgICAgJyAtIG5vbmUgPSBub3RoaW5nJ1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHJ1bihhcmdzOiBBcmd1bWVudHM8UnVuQXJncz4pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGF3YWl0IHN1cGVyLnJ1bihhcmdzKTtcbiAgICB0aGlzLnNwaW5uZXIuc3RvcCgpO1xuXG4gICAgLy8gUnVuIGJ1aWxkIHRhc2tcbiAgICBjb25zdCBzZXQgPSBuZXcgVGFza1NldCgpO1xuICAgIGNvbnN0IHRhc2sgPSBhd2FpdCB0aGlzLndvcmtzcGFjZS5ydW4oYXJncy5zY3JpcHQsIGFyZ3NbJy0tJ10/Lm1hcChhcmcgPT4gYXJnLnRvU3RyaW5nKCkpLCB7XG4gICAgICBidWlsZERlcHM6IGFyZ3NbJ2RlcHMtbW9kZSddXG4gICAgfSk7XG4gICAgc2V0LmFkZCh0YXNrKTtcblxuICAgIGNvbnN0IHRsb2dnZXIgPSBuZXcgVGFza0xvZ2dlcigpO1xuICAgIHRsb2dnZXIub24oJ3NwaW4tc2ltcGxlJywgKHRzaykgPT4gdHNrID09PSB0YXNrID8gYFJ1bm5pbmcgJHthcmdzLnNjcmlwdH0gaW4gJHt0aGlzLndvcmtzcGFjZS5uYW1lfSAuLi5gIDogYEJ1aWxkaW5nICR7dHNrLmNvbnRleHQud29ya3NwYWNlPy5uYW1lfSAuLi5gKTtcbiAgICB0bG9nZ2VyLm9uKCdmYWlsJywgKHRzaykgPT4gdHNrID09PSB0YXNrID8gYCR7YXJncy5zY3JpcHR9IGZhaWxlZGAgOiBgRmFpbGVkIHRvIGJ1aWxkICR7dHNrLmNvbnRleHQud29ya3NwYWNlPy5uYW1lfWApO1xuICAgIHRsb2dnZXIub24oJ3N1Y2NlZWQnLCAodHNrKSA9PiB0c2sgPT09IHRhc2sgPyBgJHt0aGlzLndvcmtzcGFjZS5uYW1lfSAke2FyZ3Muc2NyaXB0fSBkb25lYCA6IGAke3Rzay5jb250ZXh0LndvcmtzcGFjZT8ubmFtZX0gYnVpbHRgKTtcbiAgICB0bG9nZ2VyLmNvbm5lY3Qoc2V0KTtcblxuICAgIHNldC5zdGFydCgpO1xuICAgIGNvbnN0IFtyZXN1bHRdID0gYXdhaXQgc2V0LndhaXRGb3IoJ2ZpbmlzaGVkJyk7XG4gICAgcmV0dXJuIHJlc3VsdC5mYWlsZWQgPT09IDAgPyAwIDogMTtcbiAgfVxufSJdLCJmaWxlIjoiY29tbWFuZHMvcnVuLmNvbW1hbmQuanMifQ==
94
+ //# sourceMappingURL=run.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["commands/run.command.js","commands/run.command.tsx"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","wrapper","useArgs","name","description","builder","yargs","positional","type","demandOption","option","choice","default","desc","RunCommand","InfoCommand","script","depsMode","rest","wks","tasks","TaskSet","task","run","map","arg","toString","buildDeps","current","add","start","TaskSetSpinner","taskSet"],"mappings":"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","file":"run.command.js","sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { TaskSet } from '@jujulego/jill-core';\nimport { useEffect, useRef } from 'react';\nimport { command } from '../command';\nimport { withProject } from '../wrappers/project.wrapper';\nimport { useWorkspace, withWorkspace } from '../wrappers/workspace.wrapper';\nimport { TaskSetSpinner } from '../components/TaskSetSpinner';\n// Command\nconst { wrapper, useArgs } = withProject(withWorkspace(command({\n name: 'run <script>',\n description: 'Run script inside workspace',\n builder: (yargs) => yargs\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all',\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n})));\n// Component\nexport const RunCommand = wrapper(function InfoCommand() {\n const { script, depsMode, '--': rest = [] } = useArgs();\n const wks = useWorkspace();\n // Refs\n const tasks = useRef(new TaskSet());\n // Effects\n useEffect(() => void (() => __awaiter(this, void 0, void 0, function* () {\n const task = yield wks.run(script, rest.map(arg => arg.toString()), {\n buildDeps: depsMode\n });\n tasks.current.add(task);\n tasks.current.start();\n }))(), [script, depsMode, rest, wks]);\n // Render\n return (_jsx(TaskSetSpinner, { taskSet: tasks.current }));\n});","import { TaskSet, WorkspaceDepsMode } from '@jujulego/jill-core';\nimport { useEffect, useRef } from 'react';\n\nimport { command } from '../command';\nimport { withProject } from '../wrappers/project.wrapper';\nimport { useWorkspace, withWorkspace } from '../wrappers/workspace.wrapper';\nimport { TaskSetSpinner } from '../components/TaskSetSpinner';\n\n// Command\nconst { wrapper, useArgs } = withProject(withWorkspace(command({\n name: 'run <script>',\n description: 'Run script inside workspace',\n builder: (yargs) => yargs\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all' as WorkspaceDepsMode,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n})));\n\n// Component\nexport const RunCommand = wrapper(function InfoCommand() {\n const { script, depsMode, '--': rest = [] } = useArgs();\n const wks = useWorkspace();\n\n // Refs\n const tasks = useRef(new TaskSet());\n\n // Effects\n useEffect(() => void (async () => {\n const task = await wks.run(script, rest.map(arg => arg.toString()), {\n buildDeps: depsMode\n });\n\n tasks.current.add(task);\n tasks.current.start();\n })(), [script, depsMode, rest, wks]);\n\n // Render\n return (\n <TaskSetSpinner taskSet={tasks.current} />\n );\n});\n"]}