geni-bioinfo 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/costs.js +56 -3
- package/dist/commands/log.d.ts +2 -2
- package/dist/commands/log.js +64 -83
- package/dist/commands/login.js +40 -6
- package/dist/commands/submission.js +8 -2
- package/dist/commands/task.js +15 -1
- package/dist/commands/workflow.js +75 -1
- package/dist/format.d.ts +4 -0
- package/dist/format.js +58 -19
- package/dist/index.js +1 -6
- package/package.json +1 -1
package/dist/commands/costs.js
CHANGED
|
@@ -46,10 +46,13 @@ addCommonOptions(exports.costsCommand
|
|
|
46
46
|
.command('submission')
|
|
47
47
|
.description('Per-submission cost breakdown')
|
|
48
48
|
.argument('[ids...]', 'Filter by submission IDs')
|
|
49
|
+
.option('--status <status>', 'Filter by submission status (case insensitive, e.g. succeeded, FAILED)')
|
|
49
50
|
.option('--limit <n>', 'Max results (1–200)', '50')
|
|
50
51
|
.option('--offset <n>', 'Pagination offset', '0')
|
|
51
52
|
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))).action(async (ids, opts) => {
|
|
52
53
|
const params = buildParams(opts);
|
|
54
|
+
if (opts.status)
|
|
55
|
+
params.set('submissionStatus', opts.status.toUpperCase());
|
|
53
56
|
ids.forEach(id => params.append('id', id));
|
|
54
57
|
params.set('limit', opts.limit);
|
|
55
58
|
params.set('offset', opts.offset);
|
|
@@ -77,6 +80,51 @@ addCommonOptions(exports.costsCommand
|
|
|
77
80
|
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/costs/instance-type${qs(buildParams(opts))}`));
|
|
78
81
|
(0, format_js_1.formatOutput)(opts.format === 'json' ? data : data.items, opts.format, format_js_1.analyticsByInstanceTypeColumns);
|
|
79
82
|
});
|
|
83
|
+
exports.costsCommand
|
|
84
|
+
.command('task')
|
|
85
|
+
.description('Per-task cost breakdown')
|
|
86
|
+
.argument('[ids...]', 'Filter by task IDs')
|
|
87
|
+
.option('--submission-id <id>', 'Filter by submission ID')
|
|
88
|
+
.option('--limit <n>', 'Max results (1–200)', '50')
|
|
89
|
+
.option('--offset <n>', 'Pagination offset', '0')
|
|
90
|
+
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
91
|
+
.action(async (ids, opts) => {
|
|
92
|
+
const params = new URLSearchParams();
|
|
93
|
+
ids.forEach(id => params.append('id', id));
|
|
94
|
+
if (opts.submissionId)
|
|
95
|
+
params.set('submissionId', opts.submissionId);
|
|
96
|
+
params.set('limit', opts.limit);
|
|
97
|
+
params.set('offset', opts.offset);
|
|
98
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/costs/task${qs(params)}`));
|
|
99
|
+
(0, format_js_1.formatOutput)(opts.format === 'json' ? data : data.items, opts.format, format_js_1.costsByTaskColumns);
|
|
100
|
+
});
|
|
101
|
+
addCommonOptions(exports.costsCommand
|
|
102
|
+
.command('instance')
|
|
103
|
+
.description('Per-instance cost breakdown')
|
|
104
|
+
.option('--environment-id <id>', 'Filter by environment ID')
|
|
105
|
+
.option('--engine-id <id>', 'Filter by engine ID')
|
|
106
|
+
.option('--queue-id <id>', 'Filter by queue ID')
|
|
107
|
+
.option('--instance-type <type>', 'Filter by EC2 instance type (e.g. m5.xlarge)')
|
|
108
|
+
.option('--execution-mode <mode>', 'Filter by execution mode (e.g. SPOT, ON_DEMAND)')
|
|
109
|
+
.option('--limit <n>', 'Max results (1–200)', '50')
|
|
110
|
+
.option('--offset <n>', 'Pagination offset', '0')
|
|
111
|
+
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))).action(async (opts) => {
|
|
112
|
+
const params = buildParams(opts);
|
|
113
|
+
if (opts.environmentId)
|
|
114
|
+
params.set('environmentId', opts.environmentId);
|
|
115
|
+
if (opts.engineId)
|
|
116
|
+
params.set('engineId', opts.engineId);
|
|
117
|
+
if (opts.queueId)
|
|
118
|
+
params.set('queueId', opts.queueId);
|
|
119
|
+
if (opts.instanceType)
|
|
120
|
+
params.set('instanceType', opts.instanceType);
|
|
121
|
+
if (opts.executionMode)
|
|
122
|
+
params.set('executionMode', opts.executionMode);
|
|
123
|
+
params.set('limit', opts.limit);
|
|
124
|
+
params.set('offset', opts.offset);
|
|
125
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/costs/instance${qs(params)}`));
|
|
126
|
+
(0, format_js_1.formatOutput)(opts.format === 'json' ? data : data.items, opts.format, format_js_1.costsByInstanceColumns);
|
|
127
|
+
});
|
|
80
128
|
addCommonOptions(exports.costsCommand
|
|
81
129
|
.command('engine')
|
|
82
130
|
.description('Cost grouped by engine')
|
|
@@ -104,8 +152,13 @@ addCommonOptions(exports.costsCommand
|
|
|
104
152
|
exports.costsCommand
|
|
105
153
|
.command('sync')
|
|
106
154
|
.description('Trigger a CUR actual-cost sync')
|
|
107
|
-
.
|
|
108
|
-
|
|
155
|
+
.option('--reset', 'Clear all actual cost data before syncing, forcing a full recalculation from CUR')
|
|
156
|
+
.action(async (opts) => {
|
|
157
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)('/costs/sync'), {
|
|
158
|
+
method: 'POST',
|
|
159
|
+
headers: { 'Content-Type': 'application/json' },
|
|
160
|
+
body: JSON.stringify({ reset: opts.reset ?? false }),
|
|
161
|
+
});
|
|
109
162
|
console.log(`Sync job enqueued: ${data.jobId}`);
|
|
110
163
|
});
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY29zdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQTJDO0FBQzNDLGtDQUEyQztBQUMzQyw0Q0FXcUI7QUFRckIsTUFBTSxPQUFPLEdBQUcscUJBQXFCLENBQUE7QUFFckMsU0FBUyxTQUFTLENBQUMsS0FBYTtJQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixLQUFLLEdBQUcsQ0FBQyxDQUFBO0lBQ2hGLE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsR0FBWTtJQUNwQyxPQUFPLEdBQUc7U0FDUCxNQUFNLENBQUMsMkJBQTJCLEVBQUUsNkJBQTZCLEVBQUUsU0FBUyxDQUFDO1NBQzdFLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSwyQkFBMkIsRUFBRSxTQUFTLENBQUM7U0FDekUsTUFBTSxDQUFDLDhCQUE4QixFQUFFLCtEQUErRCxDQUFDLENBQUE7QUFDNUcsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLElBQWM7SUFDakMsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQTtJQUVwQyxJQUFJLElBQUksQ0FBQyxTQUFTO1FBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxnQkFBZ0IsQ0FBQyxDQUFBO0lBRXpFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sZ0JBQWdCLENBQUMsQ0FBQTtRQUNuRCxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUNoQyxNQUFNLENBQUMsR0FBRyxD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QixNQUFNLElBQUksR0FBRyxNQUFNLElBQUEsZ0JBQVMsRUFBQyxJQUFBLGFBQU0sRUFBQyxhQUFhLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBc0IsQ0FBQTtJQUM1RixPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQTtBQUNqRCxDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQsIE9wdGlvbiB9IGZyb20gJ2NvbW1hbmRlcidcbmltcG9ydCB7IGFwaVVybCwgZmV0Y2hKc29uIH0gZnJvbSAnLi4vYXV0aCdcbmltcG9ydCB7XG4gIGZvcm1hdE91dHB1dCxcbiAgYW5hbHl0aWNzU3VtbWFyeUNvbHVtbnMsXG4gIGFuYWx5dGljc0J5U3VibWlzc2lvbkNvbHVtbnMsXG4gIGFuYWx5dGljc0J5RW52aXJvbm1lbnRDb2x1bW5zLFxuICBhbmFseXRpY3NCeVF1ZXVlQ29sdW1ucyxcbiAgYW5hbHl0aWNzQnlJbnN0YW5jZVR5cGVDb2x1bW5zLFxuICBhbmFseXRpY3NPdmVyVGltZUNvbHVtbnMsXG4gIGNvc3RzQnlFbmdpbmVDb2x1bW5zLFxuICBjb3N0c0J5RXhlY3V0aW9uTW9kZUNvbHVtbnMsXG4gIHR5cGUgT3V0cHV0Rm9ybWF0LFxufSBmcm9tICcuLi9mb3JtYXQuanMnXG5cbnR5cGUgQmFzZU9wdHMgPSB7XG4gIHN0YXJ0RGF0ZT86IHN0cmluZ1xuICBlbmREYXRlPzogc3RyaW5nXG4gIHN1Ym1pc3Npb25TdGF0dXM/OiBzdHJpbmdcbn1cblxuY29uc3QgREFURV9SRSA9IC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0kL1xuXG5mdW5jdGlvbiBwYXJzZURhdGUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghREFURV9SRS50ZXN0KHZhbHVlKSkgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBZWVlZLU1NLURELCBnb3QgXCIke3ZhbHVlfVwiYClcbiAgcmV0dXJuIHZhbHVlXG59XG5cbmZ1bmN0aW9uIGFkZENvbW1vbk9wdGlvbnMoY21kOiBDb21tYW5kKTogQ29tbWFuZCB7XG4gIHJldHVybiBjbWRcbiAgICAub3B0aW9uKCctLXN0YXJ0LWRhdGUgPFlZWVktTU0tREQ+JywgJ1N0YXJ0IGRhdGUgKFVUQywgaW5jbHVzaXZlKScsIHBhcnNlRGF0ZSlcbiAgICAub3B0aW9uKCctLWVuZC1kYXRlIDxZWVlZLU1NLUREPicsICdFbmQgZGF0ZSAoVVRDLCBpbmNsdXNpdmUpJywgcGFyc2VEYXRlKVxuICAgIC5vcHRpb24oJy0tc3VibWlzc2lvbi1zdGF0dXMgPHN0YXR1cz4nLCAnRmlsdGVyIGJ5IHN1Ym1pc3Npb24gc3RhdHVzIChlLmcuIFNVQ0NFRURFRCwgRkFJTEVELCBSVU5OSU5HKScpXG59XG5cbmZ1bmN0aW9uIGJ1aWxkUGFyYW1zKG9wdHM6IEJhc2VPcHRzKTogVVJMU2VhcmNoUGFyYW1zIHtcbiAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpXG5cbiAgaWYgKG9wdHMuc3RhcnREYXRlKSBwYXJhbXMuc2V0KCdmcm9tJywgYCR7b3B0cy5zdGFydERhdGV9VDAwOjAwOjAwLjAwMFpgKVxuXG4gIGlmIChvcHRzLmVuZERhdGUpIHtcbiAgICBjb25zdCBkID0gbmV3IERhdGUoYCR7b3B0cy5lbmREYXRlfVQwMDowMDowMC4wMDBaYClcbiAgICBkLnNldFVUQ0RhdGUoZC5nZXRVVENEYXRlKCkgKyAxKVxuICAgIHBhcmFtcy5zZXQoJ3RvJywgZC50b0lTT1N0cmluZygpKVxuICB9XG5cbiAgaWYgKG9wdHMuc3VibWlzc2lvblN0YXR1cykgcGFyYW1zLnNldCgnc3VibWlzc2lvblN0YXR1cycsIG9wdHMuc3VibWlzc2lvblN0YXR1cylcbiAgcmV0dXJuIHBhcmFtc1xufVxuXG5mdW5jdGlvbiBxcyhwYXJhbXM6IFVSTFNlYXJjaFBhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHMgPSBwYXJhbXMudG9TdHJpbmcoKVxuICByZXR1cm4gcyA/IGA/JHtzfWAgOiAnJ1xufVxuXG5leHBvcnQgY29uc3QgY29zdHNDb21tYW5kID0gbmV3IENvbW1hbmQoJ2Nvc3RzJylcbiAgLmRlc2NyaXB0aW9uKCdWaWV3IGNvc3QgYW5hbHl0aWNzJylcblxuYWRkQ29tbW9uT3B0aW9ucyhcbiAgY29zdHNDb21tYW5kXG4gICAgLmNvbW1hbmQoJ3N1bW1hcnknKVxuICAgIC5kZXNjcmlwdGlvbignT3ZlcmFsbCBjb3N0IHRvdGFscyBmb3IgdGhlIHRlbmFudCcpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0JykuY2hvaWNlcyhbJ3RhYmxlJywgJ2pzb24nLCAnY3N2J10pLmRlZmF1bHQoJ3RhYmxlJykpXG4pLmFjdGlvbihhc3luYyAob3B0czogQmFzZU9wdHMgJiB7IGZvcm1hdDogT3V0cHV0Rm9ybWF0IH0pID0+IHtcbiAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoSnNvbihhcGlVcmwoYC9jb3N0cy9zdW1tYXJ5JHtxcyhidWlsZFBhcmFtcyhvcHRzKSl9YCkpXG4gIGZvcm1hdE91dHB1dChkYXRhLCBvcHRzLmZvcm1hdCwgYW5hbHl0aWNzU3VtbWFyeUNvbHVtbnMpXG59KVxuXG5hZGRDb21tb25PcHRpb25zKFxuICBjb3N0c0NvbW1hbmRcbiAgICAuY29tbWFuZCgnc3VibWlzc2lvbicpXG4gICAgLmRlc2NyaXB0aW9uKCdQZXItc3VibWlzc2lvbiBjb3N0IGJyZWFrZG93bicpXG4gICAgLmFyZ3VtZW50KCdbaWRzLi4uXScsICdGaWx0ZXIgYnkgc3VibWlzc2lvbiBJRHMnKVxuICAgIC5vcHRpb24oJy0tbGltaXQgPG4+JywgJ01heCByZXN1bHRzICgx4oCTMjAwKScsICc1MCcpXG4gICAgLm9wdGlvbignLS1vZmZzZXQgPG4+JywgJ1BhZ2luYXRpb24gb2Zmc2V0JywgJzAnKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdCcpLmNob2ljZXMoWyd0YWJsZScsICdqc29uJywgJ2NzdiddKS5kZWZhdWx0KCd0YWJsZScpKVxuKS5hY3Rpb24oYXN5bmMgKGlkczogc3RyaW5nW10sIG9wdHM6IEJhc2VPcHRzICYgeyBsaW1pdDogc3RyaW5nOyBvZmZzZXQ6IHN0cmluZzsgZm9ybWF0OiBPdXRwdXRGb3JtYXQgfSkgPT4ge1xuICBjb25zdCBwYXJhbXMgPSBidWlsZFBhcmFtcyhvcHRzKVxuICBpZHMuZm9yRWFjaChpZCA9PiBwYXJhbXMuYXBwZW5kKCdpZCcsIGlkKSlcbiAgcGFyYW1zLnNldCgnbGltaXQnLCBvcHRzLmxpbWl0KVxuICBwYXJhbXMuc2V0KCdvZmZzZXQnLCBvcHRzLm9mZnNldClcbiAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoSnNvbihhcGlVcmwoYC9jb3N0cy9zdWJtaXNzaW9uJHtxcyhwYXJhbXMpfWApKSBhcyB7IGl0ZW1zOiB1bmtub3duW10gfVxuICBmb3JtYXRPdXRwdXQob3B0cy5mb3JtYXQgPT09ICdqc29uJyA/IGRhdGEgOiBkYXRhLml0ZW1zLCBvcHRzLmZvcm1hdCwgYW5hbHl0aWNzQnlTdWJtaXNzaW9uQ29sdW1ucylcbn0pXG5cbmFkZENvbW1vbk9wdGlvbnMoXG4gIGNvc3RzQ29tbWFuZFxuICAgIC5jb21tYW5kKCdlbnZpcm9ubWVudCcpXG4gICAgLmRlc2NyaXB0aW9uKCdDb3N0IGdyb3VwZWQgYnkgZW52aXJvbm1lbnQnKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdCcpLmNob2ljZXMoWyd0YWJsZScsICdqc29uJywgJ2NzdiddKS5kZWZhdWx0KCd0YWJsZScpKVxuKS5hY3Rpb24oYXN5bmMgKG9wdHM6IEJhc2VPcHRzICYgeyBmb3JtYXQ6IE91dHB1dEZvcm1hdCB9KSA9PiB7XG4gIGNvbnN0IGRhdGEgPSBhd2FpdCBmZXRjaEpzb24oYXBpVXJsKGAvY29zdHMvZW52aXJvbm1lbnQke3FzKGJ1aWxkUGFyYW1zKG9wdHMpKX1gKSkgYXMgeyBpdGVtczogdW5rbm93bltdIH1cbiAgZm9ybWF0T3V0cHV0KG9wdHMuZm9ybWF0ID09PSAnanNvbicgPyBkYXRhIDogZGF0YS5pdGVtcywgb3B0cy5mb3JtYXQsIGFuYWx5dGljc0J5RW52aXJvbm1lbnRDb2x1bW5zKVxufSlcblxuYWRkQ29tbW9uT3B0aW9ucyhcbiAgY29zdHNDb21tYW5kXG4gICAgLmNvbW1hbmQoJ3F1ZXVlJylcbiAgICAuZGVzY3JpcHRpb24oJ0Nvc3QgZ3JvdXBlZCBieSBxdWV1ZScpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0JykuY2hvaWNlcyhbJ3RhYmxlJywgJ2pzb24nLCAnY3N2J10pLmRlZmF1bHQoJ3RhYmxlJykpXG4pLmFjdGlvbihhc3luYyAob3B0czogQmFzZU9wdHMgJiB7IGZvcm1hdDogT3V0cHV0Rm9ybWF0IH0pID0+IHtcbiAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoSnNvbihhcGlVcmwoYC9jb3N0cy9xdWV1ZSR7cXMoYnVpbGRQYXJhbXMob3B0cykpfWApKSBhcyB7IGl0ZW1zOiB1bmtub3duW10gfVxuICBmb3JtYXRPdXRwdXQob3B0cy5mb3JtYXQgPT09ICdqc29uJyA/IGRhdGEgOiBkYXRhLml0ZW1zLCBvcHRzLmZvcm1hdCwgYW5hbHl0aWNzQnlRdWV1ZUNvbHVtbnMpXG59KVxuXG5hZGRDb21tb25PcHRpb25zKFxuICBjb3N0c0NvbW1hbmRcbiAgICAuY29tbWFuZCgnaW5zdGFuY2UtdHlwZScpXG4gICAgLmRlc2NyaXB0aW9uKCdDb3N0IGdyb3VwZWQgYnkgRUMyIGluc3RhbmNlIHR5cGUgYW5kIG1hcmtldCB0eXBlJylcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQnKS5jaG9pY2VzKFsndGFibGUnLCAnanNvbicsICdjc3YnXSkuZGVmYXVsdCgndGFibGUnKSlcbikuYWN0aW9uKGFzeW5jIChvcHRzOiBCYXNlT3B0cyAmIHsgZm9ybWF0OiBPdXRwdXRGb3JtYXQgfSkgPT4ge1xuICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hKc29uKGFwaVVybChgL2Nvc3RzL2luc3RhbmNlLXR5cGUke3FzKGJ1aWxkUGFyYW1zKG9wdHMpKX1gKSkgYXMgeyBpdGVtczogdW5rbm93bltdIH1cbiAgZm9ybWF0T3V0cHV0KG9wdHMuZm9ybWF0ID09PSAnanNvbicgPyBkYXRhIDogZGF0YS5pdGVtcywgb3B0cy5mb3JtYXQsIGFuYWx5dGljc0J5SW5zdGFuY2VUeXBlQ29sdW1ucylcbn0pXG5cbmFkZENvbW1vbk9wdGlvbnMoXG4gIGNvc3RzQ29tbWFuZFxuICAgIC5jb21tYW5kKCdlbmdpbmUnKVxuICAgIC5kZXNjcmlwdGlvbignQ29zdCBncm91cGVkIGJ5IGVuZ2luZScpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0JykuY2hvaWNlcyhbJ3RhYmxlJywgJ2pzb24nLCAnY3N2J10pLmRlZmF1bHQoJ3RhYmxlJykpXG4pLmFjdGlvbihhc3luYyAob3B0czogQmFzZU9wdHMgJiB7IGZvcm1hdDogT3V0cHV0Rm9ybWF0IH0pID0+IHtcbiAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoSnNvbihhcGlVcmwoYC9jb3N0cy9lbmdpbmUke3FzKGJ1aWxkUGFyYW1zKG9wdHMpKX1gKSkgYXMgeyBpdGVtczogdW5rbm93bltdIH1cbiAgZm9ybWF0T3V0cHV0KG9wdHMuZm9ybWF0ID09PSAnanNvbicgPyBkYXRhIDogZGF0YS5pdGVtcywgb3B0cy5mb3JtYXQsIGNvc3RzQnlFbmdpbmVDb2x1bW5zKVxufSlcblxuYWRkQ29tbW9uT3B0aW9ucyhcbiAgY29zdHNDb21tYW5kXG4gICAgLmNvbW1hbmQoJ2V4ZWN1dGlvbi1tb2RlJylcbiAgICAuZGVzY3JpcHRpb24oJ0Nvc3QgZ3JvdXBlZCBieSBleGVjdXRpb24gbW9kZSAoc3BvdCAvIG9uLWRlbWFuZCknKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdCcpLmNob2ljZXMoWyd0YWJsZScsICdqc29uJywgJ2NzdiddKS5kZWZhdWx0KCd0YWJsZScpKVxuKS5hY3Rpb24oYXN5bmMgKG9wdHM6IEJhc2VPcHRzICYgeyBmb3JtYXQ6IE91dHB1dEZvcm1hdCB9KSA9PiB7XG4gIGNvbnN0IGRhdGEgPSBhd2FpdCBmZXRjaEpzb24oYXBpVXJsKGAvY29zdHMvZXhlY3V0aW9uLW1vZGUke3FzKGJ1aWxkUGFyYW1zKG9wdHMpKX1gKSkgYXMgeyBpdGVtczogdW5rbm93bltdIH1cbiAgZm9ybWF0T3V0cHV0KG9wdHMuZm9ybWF0ID09PSAnanNvbicgPyBkYXRhIDogZGF0YS5pdGVtcywgb3B0cy5mb3JtYXQsIGNvc3RzQnlFeGVjdXRpb25Nb2RlQ29sdW1ucylcbn0pXG5cbmFkZENvbW1vbk9wdGlvbnMoXG4gIGNvc3RzQ29tbWFuZFxuICAgIC5jb21tYW5kKCdvdmVyLXRpbWUnKVxuICAgIC5kZXNjcmlwdGlvbignQ29zdCBidWNrZXRlZCBieSB0aW1lIHBlcmlvZCcpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWludGVydmFsIDxpbnRlcnZhbD4nLCAnVGltZSBidWNrZXQgc2l6ZScpLmNob2ljZXMoWydkYXknLCAnd2VlaycsICdtb250aCddKS5kZWZhdWx0KCdkYXknKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQnKS5jaG9pY2VzKFsndGFibGUnLCAnanNvbicsICdjc3YnXSkuZGVmYXVsdCgndGFibGUnKSlcbikuYWN0aW9uKGFzeW5jIChvcHRzOiBCYXNlT3B0cyAmIHsgaW50ZXJ2YWw6IHN0cmluZzsgZm9ybWF0OiBPdXRwdXRGb3JtYXQgfSkgPT4ge1xuICBjb25zdCBwYXJhbXMgPSBidWlsZFBhcmFtcyhvcHRzKVxuICBwYXJhbXMuc2V0KCdpbnRlcnZhbCcsIG9wdHMuaW50ZXJ2YWwpXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCBmZXRjaEpzb24oYXBpVXJsKGAvY29zdHMvb3Zlci10aW1lJHtxcyhwYXJhbXMpfWApKSBhcyB7IGl0ZW1zOiB1bmtub3duW10gfVxuICBmb3JtYXRPdXRwdXQob3B0cy5mb3JtYXQgPT09ICdqc29uJyA/IGRhdGEgOiBkYXRhLml0ZW1zLCBvcHRzLmZvcm1hdCwgYW5hbHl0aWNzT3ZlclRpbWVDb2x1bW5zKVxufSlcblxuY29zdHNDb21tYW5kXG4gIC5jb21tYW5kKCdzeW5jJylcbiAgLmRlc2NyaXB0aW9uKCdUcmlnZ2VyIGEgQ1VSIGFjdHVhbC1jb3N0IHN5bmMnKVxuICAuYWN0aW9uKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hKc29uKGFwaVVybCgnL2Nvc3RzL3N5bmMnKSwgeyBtZXRob2Q6ICdQT1NUJyB9KSBhcyB7IGpvYklkOiBzdHJpbmcgfVxuICAgIGNvbnNvbGUubG9nKGBTeW5jIGpvYiBlbnF1ZXVlZDogJHtkYXRhLmpvYklkfWApXG4gIH0pXG4iXX0=
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY29zdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQTJDO0FBQzNDLGtDQUEyQztBQUMzQyw0Q0FhcUI7QUFRckIsTUFBTSxPQUFPLEdBQUcscUJBQXFCLENBQUE7QUFFckMsU0FBUyxTQUFTLENBQUMsS0FBYTtJQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixLQUFLLEdBQUcsQ0FBQyxDQUFBO0lBQ2hGLE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsR0FBWTtJQUNwQyxPQUFPLEdBQUc7U0FDUCxNQUFNLENBQUMsMkJBQTJCLEVBQUUsNkJBQTZCLEVBQUUsU0FBUyxDQUFDO1NBQzdFLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSwyQkFBMkIsRUFBRSxTQUFTLENBQUM7U0FDekUsTUFBTSxDQUFDLDhCQUE4QixFQUFFLCtEQUErRCxDQUFDLENBQUE7QUFDNUcsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLElBQWM7SUFDakMsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQTtJQUVwQyxJQUFJLElBQUksQ0FBQyxTQUFTO1FBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxnQkFBZ0IsQ0FBQyxDQUFBO0lBRXpFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sZ0JBQWdCLENBQUMsQ0FBQTtRQUNuRCxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUNoQyxNQUFNLENBQUMsR0FBRyxD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YUFBYSxDQUFDLEVBQUU7UUFDbEQsTUFBTSxFQUFFLE1BQU07UUFDZCxPQUFPLEVBQUUsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUU7UUFDL0MsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEVBQUUsQ0FBQztLQUNyRCxDQUFzQixDQUFBO0lBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO0FBQ2pELENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCwgT3B0aW9uIH0gZnJvbSAnY29tbWFuZGVyJ1xuaW1wb3J0IHsgYXBpVXJsLCBmZXRjaEpzb24gfSBmcm9tICcuLi9hdXRoJ1xuaW1wb3J0IHtcbiAgZm9ybWF0T3V0cHV0LFxuICBhbmFseXRpY3NTdW1tYXJ5Q29sdW1ucyxcbiAgYW5hbHl0aWNzQnlTdWJtaXNzaW9uQ29sdW1ucyxcbiAgYW5hbHl0aWNzQnlFbnZpcm9ubWVudENvbHVtbnMsXG4gIGFuYWx5dGljc0J5UXVldWVDb2x1bW5zLFxuICBhbmFseXRpY3NCeUluc3RhbmNlVHlwZUNvbHVtbnMsXG4gIGFuYWx5dGljc092ZXJUaW1lQ29sdW1ucyxcbiAgY29zdHNCeUVuZ2luZUNvbHVtbnMsXG4gIGNvc3RzQnlFeGVjdXRpb25Nb2RlQ29sdW1ucyxcbiAgY29zdHNCeVRhc2tDb2x1bW5zLFxuICBjb3N0c0J5SW5zdGFuY2VDb2x1bW5zLFxuICB0eXBlIE91dHB1dEZvcm1hdCxcbn0gZnJvbSAnLi4vZm9ybWF0LmpzJ1xuXG50eXBlIEJhc2VPcHRzID0ge1xuICBzdGFydERhdGU/OiBzdHJpbmdcbiAgZW5kRGF0ZT86IHN0cmluZ1xuICBzdWJtaXNzaW9uU3RhdHVzPzogc3RyaW5nXG59XG5cbmNvbnN0IERBVEVfUkUgPSAvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9JC9cblxuZnVuY3Rpb24gcGFyc2VEYXRlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoIURBVEVfUkUudGVzdCh2YWx1ZSkpIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgWVlZWS1NTS1ERCwgZ290IFwiJHt2YWx1ZX1cImApXG4gIHJldHVybiB2YWx1ZVxufVxuXG5mdW5jdGlvbiBhZGRDb21tb25PcHRpb25zKGNtZDogQ29tbWFuZCk6IENvbW1hbmQge1xuICByZXR1cm4gY21kXG4gICAgLm9wdGlvbignLS1zdGFydC1kYXRlIDxZWVlZLU1NLUREPicsICdTdGFydCBkYXRlIChVVEMsIGluY2x1c2l2ZSknLCBwYXJzZURhdGUpXG4gICAgLm9wdGlvbignLS1lbmQtZGF0ZSA8WVlZWS1NTS1ERD4nLCAnRW5kIGRhdGUgKFVUQywgaW5jbHVzaXZlKScsIHBhcnNlRGF0ZSlcbiAgICAub3B0aW9uKCctLXN1Ym1pc3Npb24tc3RhdHVzIDxzdGF0dXM+JywgJ0ZpbHRlciBieSBzdWJtaXNzaW9uIHN0YXR1cyAoZS5nLiBTVUNDRUVERUQsIEZBSUxFRCwgUlVOTklORyknKVxufVxuXG5mdW5jdGlvbiBidWlsZFBhcmFtcyhvcHRzOiBCYXNlT3B0cyk6IFVSTFNlYXJjaFBhcmFtcyB7XG4gIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKVxuXG4gIGlmIChvcHRzLnN0YXJ0RGF0ZSkgcGFyYW1zLnNldCgnZnJvbScsIGAke29wdHMuc3RhcnREYXRlfVQwMDowMDowMC4wMDBaYClcblxuICBpZiAob3B0cy5lbmREYXRlKSB7XG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKGAke29wdHMuZW5kRGF0ZX1UMDA6MDA6MDAuMDAwWmApXG4gICAgZC5zZXRVVENEYXRlKGQuZ2V0VVRDRGF0ZSgpICsgMSlcbiAgICBwYXJhbXMuc2V0KCd0bycsIGQudG9JU09TdHJpbmcoKSlcbiAgfVxuXG4gIGlmIChvcHRzLnN1Ym1pc3Npb25TdGF0dXMpIHBhcmFtcy5zZXQoJ3N1Ym1pc3Npb25TdGF0dXMnLCBvcHRzLnN1Ym1pc3Npb25TdGF0dXMpXG4gIHJldHVybiBwYXJhbXNcbn1cblxuZnVuY3Rpb24gcXMocGFyYW1zOiBVUkxTZWFyY2hQYXJhbXMpOiBzdHJpbmcge1xuICBjb25zdCBzID0gcGFyYW1zLnRvU3RyaW5nKClcbiAgcmV0dXJuIHMgPyBgPyR7c31gIDogJydcbn1cblxuZXhwb3J0IGNvbnN0IGNvc3RzQ29tbWFuZCA9IG5ldyBDb21tYW5kKCdjb3N0cycpXG4gIC5kZXNjcmlwdGlvbignVmlldyBjb3N0IGFuYWx5dGljcycpXG5cbmFkZENvbW1vbk9wdGlvbnMoXG4gIGNvc3RzQ29tbWFuZFxuICAgIC5jb21tYW5kKCdzdW1tYXJ5JylcbiAgICAuZGVzY3JpcHRpb24oJ092ZXJhbGwgY29zdCB0b3RhbHMgZm9yIHRoZSB0ZW5hbnQnKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdCcpLmNob2ljZXMoWyd0YWJsZScsICdqc29uJywgJ2NzdiddKS5kZWZhdWx0KCd0YWJsZScpKVxuKS5hY3Rpb24oYXN5bmMgKG9wdHM6IEJhc2VPcHRzICYgeyBmb3JtYXQ6IE91dHB1dEZvcm1hdCB9KSA9PiB7XG4gIGNvbnN0IGRhdGEgPSBhd2FpdCBmZXRjaEpzb24oYXBpVXJsKGAvY29zdHMvc3VtbWFyeSR7cXMoYnVpbGRQYXJhbXMob3B0cykpfWApKVxuICBmb3JtYXRPdXRwdXQoZGF0YSwgb3B0cy5mb3JtYXQsIGFuYWx5dGljc1N1bW1hcnlDb2x1bW5zKVxufSlcblxuYWRkQ29tbW9uT3B0aW9ucyhcbiAgY29zdHNDb21tYW5kXG4gICAgLmNvbW1hbmQoJ3N1Ym1pc3Npb24nKVxuICAgIC5kZXNjcmlwdGlvbignUGVyLXN1Ym1pc3Npb24gY29zdCBicmVha2Rvd24nKVxuICAgIC5hcmd1bWVudCgnW2lkcy4uLl0nLCAnRmlsdGVyIGJ5IHN1Ym1pc3Npb24gSURzJylcbiAgICAub3B0aW9uKCctLXN0YXR1cyA8c3RhdHVzPicsICdGaWx0ZXIgYnkgc3VibWlzc2lvbiBzdGF0dXMgKGNhc2UgaW5zZW5zaXRpdmUsIGUuZy4gc3VjY2VlZGVkLCBGQUlMRUQpJylcbiAgICAub3B0aW9uKCctLWxpbWl0IDxuPicsICdNYXggcmVzdWx0cyAoMeKAkzIwMCknLCAnNTAnKVxuICAgIC5vcHRpb24oJy0tb2Zmc2V0IDxuPicsICdQYWdpbmF0aW9uIG9mZnNldCcsICcwJylcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQnKS5jaG9pY2VzKFsndGFibGUnLCAnanNvbicsICdjc3YnXSkuZGVmYXVsdCgndGFibGUnKSlcbikuYWN0aW9uKGFzeW5jIChpZHM6IHN0cmluZ1tdLCBvcHRzOiBCYXNlT3B0cyAmIHsgc3RhdHVzPzogc3RyaW5nOyBsaW1pdDogc3RyaW5nOyBvZmZzZXQ6IHN0cmluZzsgZm9ybWF0OiBPdXRwdXRGb3JtYXQgfSkgPT4ge1xuICBjb25zdCBwYXJhbXMgPSBidWlsZFBhcmFtcyhvcHRzKVxuICBpZiAob3B0cy5zdGF0dXMpIHBhcmFtcy5zZXQoJ3N1Ym1pc3Npb25TdGF0dXMnLCBvcHRzLnN0YXR1cy50b1VwcGVyQ2FzZSgpKVxuICBpZHMuZm9yRWFjaChpZCA9PiBwYXJhbXMuYXBwZW5kKCdpZCcsIGlkKSlcbiAgcGFyYW1zLnNldCgnbGltaXQnLCBvcHRzLmxpbWl0KVxuICBwYXJhbXMuc2V0KCdvZmZzZXQnLCBvcHRzLm9mZnNldClcbiAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoSnNvbihhcGlVcmwoYC9jb3N0cy9zdWJtaXNzaW9uJHtxcyhwYXJhbXMpfWApKSBhcyB7IGl0ZW1zOiB1bmtub3duW10gfVxuICBmb3JtYXRPdXRwdXQob3B0cy5mb3JtYXQgPT09ICdqc29uJyA/IGRhdGEgOiBkYXRhLml0ZW1zLCBvcHRzLmZvcm1hdCwgYW5hbHl0aWNzQnlTdWJtaXNzaW9uQ29sdW1ucylcbn0pXG5cbmFkZENvbW1vbk9wdGlvbnMoXG4gIGNvc3RzQ29tbWFuZFxuICAgIC5jb21tYW5kKCdlbnZpcm9ubWVudCcpXG4gICAgLmRlc2NyaXB0aW9uKCdDb3N0IGdyb3VwZWQgYnkgZW52aXJvbm1lbnQnKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdCcpLmNob2ljZXMoWyd0YWJsZScsICdqc29uJywgJ2NzdiddKS5kZWZhdWx0KCd0YWJsZScpKVxuKS5hY3Rpb24oYXN5bmMgKG9wdHM6IEJhc2VPcHRzICYgeyBmb3JtYXQ6IE91dHB1dEZvcm1hdCB9KSA9PiB7XG4gIGNvbnN0IGRhdGEgPSBhd2FpdCBmZXRjaEpzb24oYXBpVXJsKGAvY29zdHMvZW52aXJvbm1lbnQke3FzKGJ1aWxkUGFyYW1zKG9wdHMpKX1gKSkgYXMgeyBpdGVtczogdW5rbm93bltdIH1cbiAgZm9ybWF0T3V0cHV0KG9wdHMuZm9ybWF0ID09PSAnanNvbicgPyBkYXRhIDogZGF0YS5pdGVtcywgb3B0cy5mb3JtYXQsIGFuYWx5dGljc0J5RW52aXJvbm1lbnRDb2x1bW5zKVxufSlcblxuYWRkQ29tbW9uT3B0aW9ucyhcbiAgY29zdHNDb21tYW5kXG4gICAgLmNvbW1hbmQoJ3F1ZXVlJylcbiAgICAuZGVzY3JpcHRpb24oJ0Nvc3QgZ3JvdXBlZCBieSBxdWV1ZScpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0JykuY2hvaWNlcyhbJ3RhYmxlJywgJ2pzb24nLCAnY3N2J10pLmRlZmF1bHQoJ3RhYmxlJykpXG4pLmFjdGlvbihhc3luYyAob3B0czogQmFzZU9wdHMgJiB7IGZvcm1hdDogT3V0cHV0Rm9ybWF0IH0pID0+IHtcbiAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoSnNvbihhcGlVcmwoYC9jb3N0cy9xdWV1ZSR7cXMoYnVpbGRQYXJhbXMob3B0cykpfWApKSBhcyB7IGl0ZW1zOiB1bmtub3duW10gfVxuICBmb3JtYXRPdXRwdXQob3B0cy5mb3JtYXQgPT09ICdqc29uJyA/IGRhdGEgOiBkYXRhLml0ZW1zLCBvcHRzLmZvcm1hdCwgYW5hbHl0aWNzQnlRdWV1ZUNvbHVtbnMpXG59KVxuXG5hZGRDb21tb25PcHRpb25zKFxuICBjb3N0c0NvbW1hbmRcbiAgICAuY29tbWFuZCgnaW5zdGFuY2UtdHlwZScpXG4gICAgLmRlc2NyaXB0aW9uKCdDb3N0IGdyb3VwZWQgYnkgRUMyIGluc3RhbmNlIHR5cGUgYW5kIG1hcmtldCB0eXBlJylcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQnKS5jaG9pY2VzKFsndGFibGUnLCAnanNvbicsICdjc3YnXSkuZGVmYXVsdCgndGFibGUnKSlcbikuYWN0aW9uKGFzeW5jIChvcHRzOiBCYXNlT3B0cyAmIHsgZm9ybWF0OiBPdXRwdXRGb3JtYXQgfSkgPT4ge1xuICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hKc29uKGFwaVVybChgL2Nvc3RzL2luc3RhbmNlLXR5cGUke3FzKGJ1aWxkUGFyYW1zKG9wdHMpKX1gKSkgYXMgeyBpdGVtczogdW5rbm93bltdIH1cbiAgZm9ybWF0T3V0cHV0KG9wdHMuZm9ybWF0ID09PSAnanNvbicgPyBkYXRhIDogZGF0YS5pdGVtcywgb3B0cy5mb3JtYXQsIGFuYWx5dGljc0J5SW5zdGFuY2VUeXBlQ29sdW1ucylcbn0pXG5cbmNvc3RzQ29tbWFuZFxuICAuY29tbWFuZCgndGFzaycpXG4gIC5kZXNjcmlwdGlvbignUGVyLXRhc2sgY29zdCBicmVha2Rvd24nKVxuICAuYXJndW1lbnQoJ1tpZHMuLi5dJywgJ0ZpbHRlciBieSB0YXNrIElEcycpXG4gIC5vcHRpb24oJy0tc3VibWlzc2lvbi1pZCA8aWQ+JywgJ0ZpbHRlciBieSBzdWJtaXNzaW9uIElEJylcbiAgLm9wdGlvbignLS1saW1pdCA8bj4nLCAnTWF4IHJlc3VsdHMgKDHigJMyMDApJywgJzUwJylcbiAgLm9wdGlvbignLS1vZmZzZXQgPG4+JywgJ1BhZ2luYXRpb24gb2Zmc2V0JywgJzAnKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQnKS5jaG9pY2VzKFsndGFibGUnLCAnanNvbicsICdjc3YnXSkuZGVmYXVsdCgndGFibGUnKSlcbiAgLmFjdGlvbihhc3luYyAoaWRzOiBzdHJpbmdbXSwgb3B0czogeyBzdWJtaXNzaW9uSWQ/OiBzdHJpbmc7IGxpbWl0OiBzdHJpbmc7IG9mZnNldDogc3RyaW5nOyBmb3JtYXQ6IE91dHB1dEZvcm1hdCB9KSA9PiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpXG4gICAgaWRzLmZvckVhY2goaWQgPT4gcGFyYW1zLmFwcGVuZCgnaWQnLCBpZCkpXG4gICAgaWYgKG9wdHMuc3VibWlzc2lvbklkKSBwYXJhbXMuc2V0KCdzdWJtaXNzaW9uSWQnLCBvcHRzLnN1Ym1pc3Npb25JZClcbiAgICBwYXJhbXMuc2V0KCdsaW1pdCcsIG9wdHMubGltaXQpXG4gICAgcGFyYW1zLnNldCgnb2Zmc2V0Jywgb3B0cy5vZmZzZXQpXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoSnNvbihhcGlVcmwoYC9jb3N0cy90YXNrJHtxcyhwYXJhbXMpfWApKSBhcyB7IGl0ZW1zOiB1bmtub3duW10gfVxuICAgIGZvcm1hdE91dHB1dChvcHRzLmZvcm1hdCA9PT0gJ2pzb24nID8gZGF0YSA6IGRhdGEuaXRlbXMsIG9wdHMuZm9ybWF0LCBjb3N0c0J5VGFza0NvbHVtbnMpXG4gIH0pXG5cbmFkZENvbW1vbk9wdGlvbnMoXG4gIGNvc3RzQ29tbWFuZFxuICAgIC5jb21tYW5kKCdpbnN0YW5jZScpXG4gICAgLmRlc2NyaXB0aW9uKCdQZXItaW5zdGFuY2UgY29zdCBicmVha2Rvd24nKVxuICAgIC5vcHRpb24oJy0tZW52aXJvbm1lbnQtaWQgPGlkPicsICAgJ0ZpbHRlciBieSBlbnZpcm9ubWVudCBJRCcpXG4gICAgLm9wdGlvbignLS1lbmdpbmUtaWQgPGlkPicsICAgICAgICAnRmlsdGVyIGJ5IGVuZ2luZSBJRCcpXG4gICAgLm9wdGlvbignLS1xdWV1ZS1pZCA8aWQ+JywgICAgICAgICAnRmlsdGVyIGJ5IHF1ZXVlIElEJylcbiAgICAub3B0aW9uKCctLWluc3RhbmNlLXR5cGUgPHR5cGU+JywgICdGaWx0ZXIgYnkgRUMyIGluc3RhbmNlIHR5cGUgKGUuZy4gbTUueGxhcmdlKScpXG4gICAgLm9wdGlvbignLS1leGVjdXRpb24tbW9kZSA8bW9kZT4nLCAnRmlsdGVyIGJ5IGV4ZWN1dGlvbiBtb2RlIChlLmcuIFNQT1QsIE9OX0RFTUFORCknKVxuICAgIC5vcHRpb24oJy0tbGltaXQgPG4+JywgICdNYXggcmVzdWx0cyAoMeKAkzIwMCknLCAnNTAnKVxuICAgIC5vcHRpb24oJy0tb2Zmc2V0IDxuPicsICdQYWdpbmF0aW9uIG9mZnNldCcsICcwJylcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQnKS5jaG9pY2VzKFsndGFibGUnLCAnanNvbicsICdjc3YnXSkuZGVmYXVsdCgndGFibGUnKSlcbikuYWN0aW9uKGFzeW5jIChvcHRzOiBCYXNlT3B0cyAmIHtcbiAgZW52aXJvbm1lbnRJZD86IHN0cmluZzsgZW5naW5lSWQ/OiBzdHJpbmc7IHF1ZXVlSWQ/OiBzdHJpbmc7XG4gIGluc3RhbmNlVHlwZT86IHN0cmluZzsgZXhlY3V0aW9uTW9kZT86IHN0cmluZztcbiAgbGltaXQ6IHN0cmluZzsgb2Zmc2V0OiBzdHJpbmc7IGZvcm1hdDogT3V0cHV0Rm9ybWF0XG59KSA9PiB7XG4gIGNvbnN0IHBhcmFtcyA9IGJ1aWxkUGFyYW1zKG9wdHMpXG4gIGlmIChvcHRzLmVudmlyb25tZW50SWQpIHBhcmFtcy5zZXQoJ2Vudmlyb25tZW50SWQnLCBvcHRzLmVudmlyb25tZW50SWQpXG4gIGlmIChvcHRzLmVuZ2luZUlkKSAgICAgIHBhcmFtcy5zZXQoJ2VuZ2luZUlkJywgb3B0cy5lbmdpbmVJZClcbiAgaWYgKG9wdHMucXVldWVJZCkgICAgICAgcGFyYW1zLnNldCgncXVldWVJZCcsIG9wdHMucXVldWVJZClcbiAgaWYgKG9wdHMuaW5zdGFuY2VUeXBlKSAgcGFyYW1zLnNldCgnaW5zdGFuY2VUeXBlJywgb3B0cy5pbnN0YW5jZVR5cGUpXG4gIGlmIChvcHRzLmV4ZWN1dGlvbk1vZGUpIHBhcmFtcy5zZXQoJ2V4ZWN1dGlvbk1vZGUnLCBvcHRzLmV4ZWN1dGlvbk1vZGUpXG4gIHBhcmFtcy5zZXQoJ2xpbWl0Jywgb3B0cy5saW1pdClcbiAgcGFyYW1zLnNldCgnb2Zmc2V0Jywgb3B0cy5vZmZzZXQpXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCBmZXRjaEpzb24oYXBpVXJsKGAvY29zdHMvaW5zdGFuY2Uke3FzKHBhcmFtcyl9YCkpIGFzIHsgaXRlbXM6IHVua25vd25bXSB9XG4gIGZvcm1hdE91dHB1dChvcHRzLmZvcm1hdCA9PT0gJ2pzb24nID8gZGF0YSA6IGRhdGEuaXRlbXMsIG9wdHMuZm9ybWF0LCBjb3N0c0J5SW5zdGFuY2VDb2x1bW5zKVxufSlcblxuYWRkQ29tbW9uT3B0aW9ucyhcbiAgY29zdHNDb21tYW5kXG4gICAgLmNvbW1hbmQoJ2VuZ2luZScpXG4gICAgLmRlc2NyaXB0aW9uKCdDb3N0IGdyb3VwZWQgYnkgZW5naW5lJylcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQnKS5jaG9pY2VzKFsndGFibGUnLCAnanNvbicsICdjc3YnXSkuZGVmYXVsdCgndGFibGUnKSlcbikuYWN0aW9uKGFzeW5jIChvcHRzOiBCYXNlT3B0cyAmIHsgZm9ybWF0OiBPdXRwdXRGb3JtYXQgfSkgPT4ge1xuICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hKc29uKGFwaVVybChgL2Nvc3RzL2VuZ2luZSR7cXMoYnVpbGRQYXJhbXMob3B0cykpfWApKSBhcyB7IGl0ZW1zOiB1bmtub3duW10gfVxuICBmb3JtYXRPdXRwdXQob3B0cy5mb3JtYXQgPT09ICdqc29uJyA/IGRhdGEgOiBkYXRhLml0ZW1zLCBvcHRzLmZvcm1hdCwgY29zdHNCeUVuZ2luZUNvbHVtbnMpXG59KVxuXG5hZGRDb21tb25PcHRpb25zKFxuICBjb3N0c0NvbW1hbmRcbiAgICAuY29tbWFuZCgnZXhlY3V0aW9uLW1vZGUnKVxuICAgIC5kZXNjcmlwdGlvbignQ29zdCBncm91cGVkIGJ5IGV4ZWN1dGlvbiBtb2RlIChzcG90IC8gb24tZGVtYW5kKScpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0JykuY2hvaWNlcyhbJ3RhYmxlJywgJ2pzb24nLCAnY3N2J10pLmRlZmF1bHQoJ3RhYmxlJykpXG4pLmFjdGlvbihhc3luYyAob3B0czogQmFzZU9wdHMgJiB7IGZvcm1hdDogT3V0cHV0Rm9ybWF0IH0pID0+IHtcbiAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoSnNvbihhcGlVcmwoYC9jb3N0cy9leGVjdXRpb24tbW9kZSR7cXMoYnVpbGRQYXJhbXMob3B0cykpfWApKSBhcyB7IGl0ZW1zOiB1bmtub3duW10gfVxuICBmb3JtYXRPdXRwdXQob3B0cy5mb3JtYXQgPT09ICdqc29uJyA/IGRhdGEgOiBkYXRhLml0ZW1zLCBvcHRzLmZvcm1hdCwgY29zdHNCeUV4ZWN1dGlvbk1vZGVDb2x1bW5zKVxufSlcblxuYWRkQ29tbW9uT3B0aW9ucyhcbiAgY29zdHNDb21tYW5kXG4gICAgLmNvbW1hbmQoJ292ZXItdGltZScpXG4gICAgLmRlc2NyaXB0aW9uKCdDb3N0IGJ1Y2tldGVkIGJ5IHRpbWUgcGVyaW9kJylcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0taW50ZXJ2YWwgPGludGVydmFsPicsICdUaW1lIGJ1Y2tldCBzaXplJykuY2hvaWNlcyhbJ2RheScsICd3ZWVrJywgJ21vbnRoJ10pLmRlZmF1bHQoJ2RheScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdCcpLmNob2ljZXMoWyd0YWJsZScsICdqc29uJywgJ2NzdiddKS5kZWZhdWx0KCd0YWJsZScpKVxuKS5hY3Rpb24oYXN5bmMgKG9wdHM6IEJhc2VPcHRzICYgeyBpbnRlcnZhbDogc3RyaW5nOyBmb3JtYXQ6IE91dHB1dEZvcm1hdCB9KSA9PiB7XG4gIGNvbnN0IHBhcmFtcyA9IGJ1aWxkUGFyYW1zKG9wdHMpXG4gIHBhcmFtcy5zZXQoJ2ludGVydmFsJywgb3B0cy5pbnRlcnZhbClcbiAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoSnNvbihhcGlVcmwoYC9jb3N0cy9vdmVyLXRpbWUke3FzKHBhcmFtcyl9YCkpIGFzIHsgaXRlbXM6IHVua25vd25bXSB9XG4gIGZvcm1hdE91dHB1dChvcHRzLmZvcm1hdCA9PT0gJ2pzb24nID8gZGF0YSA6IGRhdGEuaXRlbXMsIG9wdHMuZm9ybWF0LCBhbmFseXRpY3NPdmVyVGltZUNvbHVtbnMpXG59KVxuXG5jb3N0c0NvbW1hbmRcbiAgLmNvbW1hbmQoJ3N5bmMnKVxuICAuZGVzY3JpcHRpb24oJ1RyaWdnZXIgYSBDVVIgYWN0dWFsLWNvc3Qgc3luYycpXG4gIC5vcHRpb24oJy0tcmVzZXQnLCAnQ2xlYXIgYWxsIGFjdHVhbCBjb3N0IGRhdGEgYmVmb3JlIHN5bmNpbmcsIGZvcmNpbmcgYSBmdWxsIHJlY2FsY3VsYXRpb24gZnJvbSBDVVInKVxuICAuYWN0aW9uKGFzeW5jIChvcHRzOiB7IHJlc2V0PzogYm9vbGVhbiB9KSA9PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoSnNvbihhcGlVcmwoJy9jb3N0cy9zeW5jJyksIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHJlc2V0OiBvcHRzLnJlc2V0ID8/IGZhbHNlIH0pLFxuICAgIH0pIGFzIHsgam9iSWQ6IHN0cmluZyB9XG4gICAgY29uc29sZS5sb2coYFN5bmMgam9iIGVucXVldWVkOiAke2RhdGEuam9iSWR9YClcbiAgfSlcbiJdfQ==
|
package/dist/commands/log.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const
|
|
2
|
+
export declare const logsSubcommand: Command;
|
|
3
|
+
export declare const taskLogsSubcommand: Command;
|
package/dist/commands/log.js
CHANGED
|
@@ -1,99 +1,80 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.taskLogsSubcommand = exports.logsSubcommand = void 0;
|
|
4
4
|
const commander_1 = require("commander");
|
|
5
5
|
const auth_1 = require("../auth");
|
|
6
6
|
const format_js_1 = require("../format.js");
|
|
7
|
-
exports.
|
|
8
|
-
.description('
|
|
9
|
-
|
|
10
|
-
.
|
|
11
|
-
.
|
|
12
|
-
.
|
|
7
|
+
exports.logsSubcommand = new commander_1.Command('logs')
|
|
8
|
+
.description('View logs for a submission')
|
|
9
|
+
.argument('<submission-id>', 'Submission ID')
|
|
10
|
+
.option('--tail', 'Show last N lines instead of all logs')
|
|
11
|
+
.option('--limit <n>', 'Number of lines to show with --tail', '50')
|
|
12
|
+
.option('--follow', 'Continuously poll for new log lines')
|
|
13
13
|
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
14
|
-
.action(async (opts) => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
data
|
|
14
|
+
.action(async (submissionId, opts) => {
|
|
15
|
+
if (opts.tail || opts.follow) {
|
|
16
|
+
const limit = parseInt(opts.limit, 10);
|
|
17
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/submission-logs?submissionId=${submissionId}&limit=${limit}`));
|
|
18
|
+
let lastTimestamp = printLogLines(data.items);
|
|
19
|
+
if (opts.follow) {
|
|
20
|
+
await pollLogs(lastTimestamp, async (since) => {
|
|
21
|
+
const res = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/submission-logs?submissionId=${submissionId}&since=${encodeURIComponent(since)}`));
|
|
22
|
+
return res.items;
|
|
23
|
+
}, (items) => {
|
|
24
|
+
lastTimestamp = printLogLines(items) ?? lastTimestamp;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
18
27
|
}
|
|
19
28
|
else {
|
|
20
|
-
(0,
|
|
29
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/submission-logs?submissionId=${submissionId}`));
|
|
30
|
+
if (opts.format === 'table') {
|
|
31
|
+
data.items.forEach(item => console.log(item.message));
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
(0, format_js_1.formatOutput)(opts.format === 'json' ? data : data.items, opts.format, format_js_1.submissionLogColumns);
|
|
35
|
+
}
|
|
21
36
|
}
|
|
22
37
|
});
|
|
23
|
-
exports.
|
|
24
|
-
.
|
|
25
|
-
.
|
|
26
|
-
.option('--
|
|
38
|
+
exports.taskLogsSubcommand = new commander_1.Command('logs')
|
|
39
|
+
.description('View logs for a task')
|
|
40
|
+
.argument('<task-id>', 'Task ID')
|
|
41
|
+
.option('--tail', 'Show last N lines instead of all logs')
|
|
42
|
+
.option('--limit <n>', 'Number of lines to show with --tail', '50')
|
|
27
43
|
.option('--follow', 'Continuously poll for new log lines')
|
|
28
|
-
.
|
|
29
|
-
const limit = parseInt(opts.limit, 10);
|
|
30
|
-
const url = submissionId
|
|
31
|
-
? `/submission-logs?submissionId=${submissionId}&limit=${limit}`
|
|
32
|
-
: `/submission-logs?limit=${limit}`;
|
|
33
|
-
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(url));
|
|
34
|
-
let lastTimestamp = printLogLines(data.items);
|
|
35
|
-
if (opts.follow) {
|
|
36
|
-
await pollLogs(lastTimestamp, async (since) => {
|
|
37
|
-
const base = submissionId
|
|
38
|
-
? `/submission-logs?submissionId=${submissionId}`
|
|
39
|
-
: `/submission-logs`;
|
|
40
|
-
const res = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`${base}&since=${encodeURIComponent(since)}`));
|
|
41
|
-
return res.items;
|
|
42
|
-
}, (items) => {
|
|
43
|
-
lastTimestamp = printLogLines(items) ?? lastTimestamp;
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
exports.taskLogCommand = new commander_1.Command('task-log')
|
|
48
|
-
.description('Manage task logs');
|
|
49
|
-
exports.taskLogCommand
|
|
50
|
-
.command('list')
|
|
51
|
-
.description('List task logs for a submission')
|
|
52
|
-
.requiredOption('--submission-id <id>', 'Submission ID')
|
|
53
|
-
.option('--task-id <id>', 'Task ID (optional, filter by specific task)')
|
|
44
|
+
.option('--short', 'Omit task ID prefix')
|
|
54
45
|
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
55
|
-
.action(async (opts) => {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
46
|
+
.action(async (taskId, opts) => {
|
|
47
|
+
if (opts.tail || opts.follow) {
|
|
48
|
+
const limit = parseInt(opts.limit, 10);
|
|
49
|
+
const buildUrl = (since) => {
|
|
50
|
+
const params = new URLSearchParams();
|
|
51
|
+
params.set('taskId', taskId);
|
|
52
|
+
if (since)
|
|
53
|
+
params.set('since', since);
|
|
54
|
+
else
|
|
55
|
+
params.set('limit', String(limit));
|
|
56
|
+
return `/task-logs?${params}`;
|
|
57
|
+
};
|
|
58
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(buildUrl()));
|
|
59
|
+
const id = (item) => opts.short ? undefined : (item.jobName ?? item.taskId ?? taskId);
|
|
60
|
+
let lastTimestamp = printTaskLogLines(data.items, id);
|
|
61
|
+
if (opts.follow) {
|
|
62
|
+
await pollLogs(lastTimestamp, async (since) => {
|
|
63
|
+
const res = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(buildUrl(since)));
|
|
64
|
+
return res.items;
|
|
65
|
+
}, (items) => {
|
|
66
|
+
lastTimestamp = printTaskLogLines(items, id) ?? lastTimestamp;
|
|
67
|
+
});
|
|
68
|
+
}
|
|
62
69
|
}
|
|
63
70
|
else {
|
|
64
|
-
(0,
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
.option('--limit <n>', 'Number of recent log lines to show', '50')
|
|
72
|
-
.option('--follow', 'Continuously poll for new log lines')
|
|
73
|
-
.option('--short', 'Omit task ID prefix')
|
|
74
|
-
.action(async (submissionId, opts) => {
|
|
75
|
-
const limit = parseInt(opts.limit, 10);
|
|
76
|
-
const buildUrl = (since) => {
|
|
77
|
-
const params = new URLSearchParams();
|
|
78
|
-
params.set('submissionId', submissionId);
|
|
79
|
-
if (opts.taskId)
|
|
80
|
-
params.set('taskId', opts.taskId);
|
|
81
|
-
if (since)
|
|
82
|
-
params.set('since', since);
|
|
83
|
-
else
|
|
84
|
-
params.set('limit', String(limit));
|
|
85
|
-
return `/task-logs?${params}`;
|
|
86
|
-
};
|
|
87
|
-
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(buildUrl()));
|
|
88
|
-
const id = (item) => opts.short ? undefined : (item.jobName ?? item.taskId ?? opts.taskId);
|
|
89
|
-
let lastTimestamp = printTaskLogLines(data.items, id);
|
|
90
|
-
if (opts.follow) {
|
|
91
|
-
await pollLogs(lastTimestamp, async (since) => {
|
|
92
|
-
const res = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(buildUrl(since)));
|
|
93
|
-
return res.items;
|
|
94
|
-
}, (items) => {
|
|
95
|
-
lastTimestamp = printTaskLogLines(items, id) ?? lastTimestamp;
|
|
96
|
-
});
|
|
71
|
+
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/task-logs?taskId=${taskId}`));
|
|
72
|
+
if (opts.format === 'table') {
|
|
73
|
+
data.items.forEach(item => console.log(item.message));
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
(0, format_js_1.formatOutput)(opts.format === 'json' ? data : data.items, opts.format, format_js_1.taskLogColumns);
|
|
77
|
+
}
|
|
97
78
|
}
|
|
98
79
|
});
|
|
99
80
|
function printLogLines(items, id) {
|
|
@@ -142,4 +123,4 @@ async function pollLogs(initialTimestamp, fetch, onItems) {
|
|
|
142
123
|
});
|
|
143
124
|
});
|
|
144
125
|
}
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2xvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBMkM7QUFDM0Msa0NBQTJDO0FBQzNDLDRDQUFvRztBQUV2RixRQUFBLG9CQUFvQixHQUFHLElBQUksbUJBQU8sQ0FBQyxnQkFBZ0IsQ0FBQztLQUM5RCxXQUFXLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtBQUV4Qyw0QkFBb0I7S0FDakIsT0FBTyxDQUFDLE1BQU0sQ0FBQztLQUNmLFdBQVcsQ0FBQyw0QkFBNEIsQ0FBQztLQUN6QyxjQUFjLENBQUMsc0JBQXNCLEVBQUUsZUFBZSxDQUFDO0tBQ3ZELFNBQVMsQ0FBQyxJQUFJLGtCQUFNLENBQUMsbUJBQW1CLEVBQUUsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUM5RyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQW9ELEVBQUUsRUFBRTtJQUNyRSxNQUFNLElBQUksR0FBRyxNQUFNLElBQUEsZ0JBQVMsRUFBQyxJQUFBLGFBQU0sRUFBQyxpQ0FBaUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQXlCLENBQUE7SUFDbEgsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLE9BQU8sRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUErQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7SUFDbEYsQ0FBQztTQUFNLENBQUM7UUFDTixJQUFBLHdCQUFZLEVBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENB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Q3JCLGdCQUFvQyxFQUNwQyxLQUE0QyxFQUM1QyxPQUFtQztJQUVuQyxJQUFJLEtBQUssR0FBRyxnQkFBZ0IsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQ3hELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUM3QixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDdEMsSUFBSSxDQUFDO2dCQUNILE1BQU0sS0FBSyxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUNoQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3JCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtvQkFDZCxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO2dCQUMzQyxDQUFDO1lBQ0gsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCx5Q0FBeUM7WUFDM0MsQ0FBQztRQUNILENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUVSLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtZQUN4QixhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDdkIsT0FBTyxFQUFFLENBQUE7UUFDWCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQsIE9wdGlvbiB9IGZyb20gJ2NvbW1hbmRlcidcbmltcG9ydCB7IGFwaVVybCwgZmV0Y2hKc29uIH0gZnJvbSAnLi4vYXV0aCdcbmltcG9ydCB7IGZvcm1hdE91dHB1dCwgc3VibWlzc2lvbkxvZ0NvbHVtbnMsIHRhc2tMb2dDb2x1bW5zLCB0eXBlIE91dHB1dEZvcm1hdCB9IGZyb20gJy4uL2Zvcm1hdC5qcydcblxuZXhwb3J0IGNvbnN0IHN1Ym1pc3Npb25Mb2dDb21tYW5kID0gbmV3IENvbW1hbmQoJ3N1Ym1pc3Npb24tbG9nJylcbiAgLmRlc2NyaXB0aW9uKCdNYW5hZ2Ugc3VibWlzc2lvbiBsb2dzJylcblxuc3VibWlzc2lvbkxvZ0NvbW1hbmRcbiAgLmNvbW1hbmQoJ2xpc3QnKVxuICAuZGVzY3JpcHRpb24oJ0xpc3QgbG9ncyBmb3IgYSBzdWJtaXNzaW9uJylcbiAgLnJlcXVpcmVkT3B0aW9uKCctLXN1Ym1pc3Npb24taWQgPGlkPicsICdTdWJtaXNzaW9uIElEJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0JykuY2hvaWNlcyhbJ3RhYmxlJywgJ2pzb24nLCAnY3N2J10pLmRlZmF1bHQoJ3RhYmxlJykpXG4gIC5hY3Rpb24oYXN5bmMgKG9wdHM6IHsgc3VibWlzc2lvbklkOiBzdHJpbmc7IGZvcm1hdDogT3V0cHV0Rm9ybWF0IH0pID0+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hKc29uKGFwaVVybChgL3N1Ym1pc3Npb24tbG9ncz9zdWJtaXNzaW9uSWQ9JHtvcHRzLnN1Ym1pc3Npb25JZH1gKSkgYXMgeyBpdGVtczogdW5rbm93bltdIH1cbiAgICBpZiAob3B0cy5mb3JtYXQgPT09ICd0YWJsZScpIHtcbiAgICAgIChkYXRhLml0ZW1zIGFzIHsgbWVzc2FnZTogc3RyaW5nIH1bXSkuZm9yRWFjaChpdGVtID0+IGNvbnNvbGUubG9nKGl0ZW0ubWVzc2FnZSkpXG4gICAgfSBlbHNlIHtcbiAgICAgIGZvcm1hdE91dHB1dChvcHRzLmZvcm1hdCA9PT0gJ2pzb24nID8gZGF0YSA6IGRhdGEuaXRlbXMsIG9wdHMuZm9ybWF0LCBzdWJtaXNzaW9uTG9nQ29sdW1ucylcbiAgICB9XG4gIH0pXG5cbnN1Ym1pc3Npb25Mb2dDb21tYW5kXG4gIC5jb21tYW5kKCd0YWlsIFtzdWJtaXNzaW9uLWlkXScpXG4gIC5kZXNjcmlwdGlvbignVGFpbCBsb2dzIGZvciBhIHN1Ym1pc3Npb24nKVxuICAub3B0aW9uKCctLWxpbWl0IDxuPicsICdOdW1iZXIgb2YgcmVjZW50IGxvZyBsaW5lcyB0byBzaG93JywgJzUwJylcbiAgLm9wdGlvbignLS1mb2xsb3cnLCAnQ29udGludW91c2x5IHBvbGwgZm9yIG5ldyBsb2cgbGluZXMnKVxuICAuYWN0aW9uKGFzeW5jIChzdWJtaXNzaW9uSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCwgb3B0czogeyBsaW1pdDogc3RyaW5nOyBmb2xsb3c6IGJvb2xlYW4gfSkgPT4ge1xuICAgIGNvbnN0IGxpbWl0ID0gcGFyc2VJbnQob3B0cy5saW1pdCwgMTApXG4gICAgY29uc3QgdXJsID0gc3VibWlzc2lvbklkXG4gICAgICA/IGAvc3VibWlzc2lvbi1sb2dzP3N1Ym1pc3Npb25JZD0ke3N1Ym1pc3Npb25JZH0mbGltaXQ9JHtsaW1pdH1gXG4gICAgICA6IGAvc3VibWlzc2lvbi1sb2dzP2xpbWl0PSR7bGltaXR9YFxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmZXRjaEpzb24oYXBpVXJsKHVybCkpIGFzIHsgaXRlbXM6IExvZ0l0ZW1bXSB9XG4gICAgbGV0IGxhc3RUaW1lc3RhbXAgPSBwcmludExvZ0xpbmVzKGRhdGEuaXRlbXMpXG5cbiAgICBpZiAob3B0cy5mb2xsb3cpIHtcbiAgICAgIGF3YWl0IHBvbGxMb2dzKGxhc3RUaW1lc3RhbXAsIGFzeW5jIChzaW5jZSkgPT4ge1xuICAgICAgICBjb25zdCBiYXNlID0gc3VibWlzc2lvbklkXG4gICAgICAgICAgPyBgL3N1Ym1pc3Npb24tbG9ncz9zdWJtaXNzaW9uSWQ9JHtzdWJtaXNzaW9uSWR9YFxuICAgICAgICAgIDogYC9zdWJtaXNzaW9uLWxvZ3NgXG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoSnNvbihhcGlVcmwoYCR7YmFzZX0mc2luY2U9JHtlbmNvZGVVUklDb21wb25lbnQoc2luY2UpfWApKSBhcyB7IGl0ZW1zOiBMb2dJdGVtW10gfVxuICAgICAgICByZXR1cm4gcmVzLml0ZW1zXG4gICAgICB9LCAoaXRlbXMpID0+IHtcbiAgICAgICAgbGFzdFRpbWVzdGFtcCA9IHByaW50TG9nTGluZXMoaXRlbXMpID8/IGxhc3RUaW1lc3RhbXBcbiAgICAgIH0pXG4gICAgfVxuICB9KVxuXG5leHBvcnQgY29uc3QgdGFza0xvZ0NvbW1hbmQgPSBuZXcgQ29tbWFuZCgndGFzay1sb2cnKVxuICAuZGVzY3JpcHRpb24oJ01hbmFnZSB0YXNrIGxvZ3MnKVxuXG50YXNrTG9nQ29tbWFuZFxuICAuY29tbWFuZCgnbGlzdCcpXG4gIC5kZXNjcmlwdGlvbignTGlzdCB0YXNrIGxvZ3MgZm9yIGEgc3VibWlzc2lvbicpXG4gIC5yZXF1aXJlZE9wdGlvbignLS1zdWJtaXNzaW9uLWlkIDxpZD4nLCAnU3VibWlzc2lvbiBJRCcpXG4gIC5vcHRpb24oJy0tdGFzay1pZCA8aWQ+JywgJ1Rhc2sgSUQgKG9wdGlvbmFsLCBmaWx0ZXIgYnkgc3BlY2lmaWMgdGFzayknKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQnKS5jaG9pY2VzKFsndGFibGUnLCAnanNvbicsICdjc3YnXSkuZGVmYXVsdCgndGFibGUnKSlcbiAgLmFjdGlvbihhc3luYyAob3B0czogeyBzdWJtaXNzaW9uSWQ6IHN0cmluZzsgdGFza0lkPzogc3RyaW5nOyBmb3JtYXQ6IE91dHB1dEZvcm1hdCB9KSA9PiB7XG4gICAgbGV0IHVybCA9IGAvdGFzay1sb2dzP3N1Ym1pc3Npb25JZD0ke29wdHMuc3VibWlzc2lvbklkfWBcbiAgICBpZiAob3B0cy50YXNrSWQpIHVybCArPSBgJnRhc2tJZD0ke29wdHMudGFza0lkfWBcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hKc29uKGFwaVVybCh1cmwpKSBhcyB7IGl0ZW1zOiB1bmtub3duW10gfVxuICAgIGlmIChvcHRzLmZvcm1hdCA9PT0gJ3RhYmxlJykge1xuICAgICAgKGRhdGEuaXRlbXMgYXMgeyBtZXNzYWdlOiBzdHJpbmcgfVtdKS5mb3JFYWNoKGl0ZW0gPT4gY29uc29sZS5sb2coaXRlbS5tZXNzYWdlKSlcbiAgICB9IGVsc2Uge1xuICAgICAgZm9ybWF0T3V0cHV0KG9wdHMuZm9ybWF0ID09PSAnanNvbicgPyBkYXRhIDogZGF0YS5pdGVtcywgb3B0cy5mb3JtYXQsIHRhc2tMb2dDb2x1bW5zKVxuICAgIH1cbiAgfSlcblxudGFza0xvZ0NvbW1hbmRcbiAgLmNvbW1hbmQoJ3RhaWwgPHN1Ym1pc3Npb24taWQ+JylcbiAgLmRlc2NyaXB0aW9uKCdUYWlsIGxvZ3MgZm9yIGEgc3VibWlzc2lvbiBvciB0YXNrJylcbiAgLm9wdGlvbignLS10YXNrLWlkIDxpZD4nLCAnVGFzayBJRCAob3B0aW9uYWwsIGZpbHRlciBieSBzcGVjaWZpYyB0YXNrKScpXG4gIC5vcHRpb24oJy0tbGltaXQgPG4+JywgJ051bWJlciBvZiByZWNlbnQgbG9nIGxpbmVzIHRvIHNob3cnLCAnNTAnKVxuICAub3B0aW9uKCctLWZvbGxvdycsICdDb250aW51b3VzbHkgcG9sbCBmb3IgbmV3IGxvZyBsaW5lcycpXG4gIC5vcHRpb24oJy0tc2hvcnQnLCAnT21pdCB0YXNrIElEIHByZWZpeCcpXG4gIC5hY3Rpb24oYXN5bmMgKHN1Ym1pc3Npb25JZDogc3RyaW5nLCBvcHRzOiB7IHRhc2tJZD86IHN0cmluZzsgbGltaXQ6IHN0cmluZzsgZm9sbG93OiBib29sZWFuOyBzaG9ydDogYm9vbGVhbiB9KSA9PiB7XG4gICAgY29uc3QgbGltaXQgPSBwYXJzZUludChvcHRzLmxpbWl0LCAxMClcbiAgICBjb25zdCBidWlsZFVybCA9IChzaW5jZT86IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpXG4gICAgICBwYXJhbXMuc2V0KCdzdWJtaXNzaW9uSWQnLCBzdWJtaXNzaW9uSWQpXG4gICAgICBpZiAob3B0cy50YXNrSWQpIHBhcmFtcy5zZXQoJ3Rhc2tJZCcsIG9wdHMudGFza0lkKVxuICAgICAgaWYgKHNpbmNlKSBwYXJhbXMuc2V0KCdzaW5jZScsIHNpbmNlKVxuICAgICAgZWxzZSBwYXJhbXMuc2V0KCdsaW1pdCcsIFN0cmluZyhsaW1pdCkpXG4gICAgICByZXR1cm4gYC90YXNrLWxvZ3M/JHtwYXJhbXN9YFxuICAgIH1cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hKc29uKGFwaVVybChidWlsZFVybCgpKSkgYXMgeyBpdGVtczogVGFza0xvZ0l0ZW1bXSB9XG4gICAgY29uc3QgaWQgPSAoaXRlbTogVGFza0xvZ0l0ZW0pID0+IG9wdHMuc2hvcnQgPyB1bmRlZmluZWQgOiAoaXRlbS5qb2JOYW1lID8/IGl0ZW0udGFza0lkID8/IG9wdHMudGFza0lkKVxuICAgIGxldCBsYXN0VGltZXN0YW1wID0gcHJpbnRUYXNrTG9nTGluZXMoZGF0YS5pdGVtcywgaWQpXG5cbiAgICBpZiAob3B0cy5mb2xsb3cpIHtcbiAgICAgIGF3YWl0IHBvbGxMb2dzKGxhc3RUaW1lc3RhbXAsIGFzeW5jIChzaW5jZSkgPT4ge1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaEpzb24oYXBpVXJsKGJ1aWxkVXJsKHNpbmNlKSkpIGFzIHsgaXRlbXM6IFRhc2tMb2dJdGVtW10gfVxuICAgICAgICByZXR1cm4gcmVzLml0ZW1zXG4gICAgICB9LCAoaXRlbXMpID0+IHtcbiAgICAgICAgbGFzdFRpbWVzdGFtcCA9IHByaW50VGFza0xvZ0xpbmVzKGl0ZW1zLCBpZCkgPz8gbGFzdFRpbWVzdGFtcFxuICAgICAgfSlcbiAgICB9XG4gIH0pXG5cbmludGVyZmFjZSBMb2dJdGVtIHtcbiAgdGltZXN0YW1wOiBzdHJpbmdcbiAgbWVzc2FnZTogc3RyaW5nXG59XG5cbmludGVyZmFjZSBUYXNrTG9nSXRlbSBleHRlbmRzIExvZ0l0ZW0ge1xuICB0YXNrSWQ/OiBzdHJpbmdcbiAgam9iTmFtZT86IHN0cmluZ1xufVxuXG5mdW5jdGlvbiBwcmludExvZ0xpbmVzKGl0ZW1zOiBMb2dJdGVtW10sIGlkPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgY29uc3QgdHMgPSBuZXcgRGF0ZShpdGVtLnRpbWVzdGFtcCkudG9JU09TdHJpbmcoKVxuICAgIGlmIChpZCkge1xuICAgICAgY29uc29sZS5sb2coYCR7dHN9ICAke2lkfSAgJHtpdGVtLm1lc3NhZ2V9YClcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coYCR7dHN9ICAke2l0ZW0ubWVzc2FnZX1gKVxuICAgIH1cbiAgfVxuICByZXR1cm4gaXRlbXMubGVuZ3RoID4gMCA/IGl0ZW1zW2l0ZW1zLmxlbmd0aCAtIDFdLnRpbWVzdGFtcCA6IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBwcmludFRhc2tMb2dMaW5lcyhpdGVtczogVGFza0xvZ0l0ZW1bXSwgaWQ6IChpdGVtOiBUYXNrTG9nSXRlbSkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgY29uc3QgdHMgPSBuZXcgRGF0ZShpdGVtLnRpbWVzdGFtcCkudG9JU09TdHJpbmcoKVxuICAgIGNvbnN0IHByZWZpeCA9IGlkKGl0ZW0pXG4gICAgaWYgKHByZWZpeCkge1xuICAgICAgY29uc29sZS5sb2coYCR7dHN9ICAke3ByZWZpeH0gICR7aXRlbS5tZXNzYWdlfWApXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKGAke3RzfSAgJHtpdGVtLm1lc3NhZ2V9YClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGl0ZW1zLmxlbmd0aCA+IDAgPyBpdGVtc1tpdGVtcy5sZW5ndGggLSAxXS50aW1lc3RhbXAgOiB1bmRlZmluZWRcbn1cblxuYXN5bmMgZnVuY3Rpb24gcG9sbExvZ3MoXG4gIGluaXRpYWxUaW1lc3RhbXA6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgZmV0Y2g6IChzaW5jZTogc3RyaW5nKSA9PiBQcm9taXNlPExvZ0l0ZW1bXT4sXG4gIG9uSXRlbXM6IChpdGVtczogTG9nSXRlbVtdKSA9PiB2b2lkLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGxldCBzaW5jZSA9IGluaXRpYWxUaW1lc3RhbXAgPz8gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSBhd2FpdCBmZXRjaChzaW5jZSlcbiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBvbkl0ZW1zKGl0ZW1zKVxuICAgICAgICAgIHNpbmNlID0gaXRlbXNbaXRlbXMubGVuZ3RoIC0gMV0udGltZXN0YW1wXG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBpZ25vcmUgdHJhbnNpZW50IGVycm9ycyBkdXJpbmcgcG9sbGluZ1xuICAgICAgfVxuICAgIH0sIDMwMDApXG5cbiAgICBwcm9jZXNzLm9uKCdTSUdJTlQnLCAoKSA9PiB7XG4gICAgICBjbGVhckludGVydmFsKGludGVydmFsKVxuICAgICAgcmVzb2x2ZSgpXG4gICAgfSlcbiAgfSlcbn1cbiJdfQ==
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2xvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBMkM7QUFDM0Msa0NBQTJDO0FBQzNDLDRDQUFvRztBQUV2RixRQUFBLGNBQWMsR0FBRyxJQUFJLG1CQUFPLENBQUMsTUFBTSxDQUFDO0tBQzlDLFdBQVcsQ0FBQyw0QkFBNEIsQ0FBQztLQUN6QyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsZUFBZSxDQUFDO0tBQzVDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsdUNBQXVDLENBQUM7S0FDekQsTUFBTSxDQUFDLGFBQWEsRUFBRSxxQ0FBcUMsRUFBRSxJQUFJLENBQUM7S0FDbEUsTUFBTSxDQUFDLFVBQVUsRUFBRSxxQ0FBcUMsQ0FBQztLQUN6RCxTQUFTLENBQUMsSUFBSSxrQkFBTSxDQUFDLG1CQUFtQixFQUFFLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDOUcsTUFBTSxDQUFDLEtBQUssRUFBRSxZQUFvQixFQUFFLElBQTZFLEVBQUUsRUFBRTtJQUNwSCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzdCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ3RDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBQSxnQkFBUyxFQUFDLElBQUEsYUFBTSxFQUFDLGlDQUFpQyxZQUFZLFVBQVUsS0FBSyxFQUFFLENBQUMsQ0FBeUIsQ0FBQTtRQUM1SCxJQUFJLGFBQWEsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzdDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLE1B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O0lBQ0osQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCwgT3B0aW9uIH0gZnJvbSAnY29tbWFuZGVyJ1xuaW1wb3J0IHsgYXBpVXJsLCBmZXRjaEpzb24gfSBmcm9tICcuLi9hdXRoJ1xuaW1wb3J0IHsgZm9ybWF0T3V0cHV0LCBzdWJtaXNzaW9uTG9nQ29sdW1ucywgdGFza0xvZ0NvbHVtbnMsIHR5cGUgT3V0cHV0Rm9ybWF0IH0gZnJvbSAnLi4vZm9ybWF0LmpzJ1xuXG5leHBvcnQgY29uc3QgbG9nc1N1YmNvbW1hbmQgPSBuZXcgQ29tbWFuZCgnbG9ncycpXG4gIC5kZXNjcmlwdGlvbignVmlldyBsb2dzIGZvciBhIHN1Ym1pc3Npb24nKVxuICAuYXJndW1lbnQoJzxzdWJtaXNzaW9uLWlkPicsICdTdWJtaXNzaW9uIElEJylcbiAgLm9wdGlvbignLS10YWlsJywgJ1Nob3cgbGFzdCBOIGxpbmVzIGluc3RlYWQgb2YgYWxsIGxvZ3MnKVxuICAub3B0aW9uKCctLWxpbWl0IDxuPicsICdOdW1iZXIgb2YgbGluZXMgdG8gc2hvdyB3aXRoIC0tdGFpbCcsICc1MCcpXG4gIC5vcHRpb24oJy0tZm9sbG93JywgJ0NvbnRpbnVvdXNseSBwb2xsIGZvciBuZXcgbG9nIGxpbmVzJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0JykuY2hvaWNlcyhbJ3RhYmxlJywgJ2pzb24nLCAnY3N2J10pLmRlZmF1bHQoJ3RhYmxlJykpXG4gIC5hY3Rpb24oYXN5bmMgKHN1Ym1pc3Npb25JZDogc3RyaW5nLCBvcHRzOiB7IHRhaWw6IGJvb2xlYW47IGxpbWl0OiBzdHJpbmc7IGZvbGxvdzogYm9vbGVhbjsgZm9ybWF0OiBPdXRwdXRGb3JtYXQgfSkgPT4ge1xuICAgIGlmIChvcHRzLnRhaWwgfHwgb3B0cy5mb2xsb3cpIHtcbiAgICAgIGNvbnN0IGxpbWl0ID0gcGFyc2VJbnQob3B0cy5saW1pdCwgMTApXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hKc29uKGFwaVVybChgL3N1Ym1pc3Npb24tbG9ncz9zdWJtaXNzaW9uSWQ9JHtzdWJtaXNzaW9uSWR9JmxpbWl0PSR7bGltaXR9YCkpIGFzIHsgaXRlbXM6IExvZ0l0ZW1bXSB9XG4gICAgICBsZXQgbGFzdFRpbWVzdGFtcCA9IHByaW50TG9nTGluZXMoZGF0YS5pdGVtcylcbiAgICAgIGlmIChvcHRzLmZvbGxvdykge1xuICAgICAgICBhd2FpdCBwb2xsTG9ncyhsYXN0VGltZXN0YW1wLCBhc3luYyAoc2luY2UpID0+IHtcbiAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaEpzb24oYXBpVXJsKGAvc3VibWlzc2lvbi1sb2dzP3N1Ym1pc3Npb25JZD0ke3N1Ym1pc3Npb25JZH0mc2luY2U9JHtlbmNvZGVVUklDb21wb25lbnQoc2luY2UpfWApKSBhcyB7IGl0ZW1zOiBMb2dJdGVtW10gfVxuICAgICAgICAgIHJldHVybiByZXMuaXRlbXNcbiAgICAgICAgfSwgKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgbGFzdFRpbWVzdGFtcCA9IHByaW50TG9nTGluZXMoaXRlbXMpID8/IGxhc3RUaW1lc3RhbXBcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoSnNvbihhcGlVcmwoYC9zdWJtaXNzaW9uLWxvZ3M/c3VibWlzc2lvbklkPSR7c3VibWlzc2lvbklkfWApKSBhcyB7IGl0ZW1zOiB1bmtub3duW10gfVxuICAgICAgaWYgKG9wdHMuZm9ybWF0ID09PSAndGFibGUnKSB7XG4gICAgICAgIChkYXRhLml0ZW1zIGFzIHsgbWVzc2FnZTogc3RyaW5nIH1bXSkuZm9yRWFjaChpdGVtID0+IGNvbnNvbGUubG9nKGl0ZW0ubWVzc2FnZSkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3JtYXRPdXRwdXQob3B0cy5mb3JtYXQgPT09ICdqc29uJyA/IGRhdGEgOiBkYXRhLml0ZW1zLCBvcHRzLmZvcm1hdCwgc3VibWlzc2lvbkxvZ0NvbHVtbnMpXG4gICAgICB9XG4gICAgfVxuICB9KVxuXG5leHBvcnQgY29uc3QgdGFza0xvZ3NTdWJjb21tYW5kID0gbmV3IENvbW1hbmQoJ2xvZ3MnKVxuICAuZGVzY3JpcHRpb24oJ1ZpZXcgbG9ncyBmb3IgYSB0YXNrJylcbiAgLmFyZ3VtZW50KCc8dGFzay1pZD4nLCAnVGFzayBJRCcpXG4gIC5vcHRpb24oJy0tdGFpbCcsICdTaG93IGxhc3QgTiBsaW5lcyBpbnN0ZWFkIG9mIGFsbCBsb2dzJylcbiAgLm9wdGlvbignLS1saW1pdCA8bj4nLCAnTnVtYmVyIG9mIGxpbmVzIHRvIHNob3cgd2l0aCAtLXRhaWwnLCAnNTAnKVxuICAub3B0aW9uKCctLWZvbGxvdycsICdDb250aW51b3VzbHkgcG9sbCBmb3IgbmV3IGxvZyBsaW5lcycpXG4gIC5vcHRpb24oJy0tc2hvcnQnLCAnT21pdCB0YXNrIElEIHByZWZpeCcpXG4gIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdCcpLmNob2ljZXMoWyd0YWJsZScsICdqc29uJywgJ2NzdiddKS5kZWZhdWx0KCd0YWJsZScpKVxuICAuYWN0aW9uKGFzeW5jICh0YXNrSWQ6IHN0cmluZywgb3B0czogeyB0YWlsOiBib29sZWFuOyBsaW1pdDogc3RyaW5nOyBmb2xsb3c6IGJvb2xlYW47IHNob3J0OiBib29sZWFuOyBmb3JtYXQ6IE91dHB1dEZvcm1hdCB9KSA9PiB7XG4gICAgaWYgKG9wdHMudGFpbCB8fCBvcHRzLmZvbGxvdykge1xuICAgICAgY29uc3QgbGltaXQgPSBwYXJzZUludChvcHRzLmxpbWl0LCAxMClcbiAgICAgIGNvbnN0IGJ1aWxkVXJsID0gKHNpbmNlPzogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKVxuICAgICAgICBwYXJhbXMuc2V0KCd0YXNrSWQnLCB0YXNrSWQpXG4gICAgICAgIGlmIChzaW5jZSkgcGFyYW1zLnNldCgnc2luY2UnLCBzaW5jZSlcbiAgICAgICAgZWxzZSBwYXJhbXMuc2V0KCdsaW1pdCcsIFN0cmluZyhsaW1pdCkpXG4gICAgICAgIHJldHVybiBgL3Rhc2stbG9ncz8ke3BhcmFtc31gXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hKc29uKGFwaVVybChidWlsZFVybCgpKSkgYXMgeyBpdGVtczogVGFza0xvZ0l0ZW1bXSB9XG4gICAgICBjb25zdCBpZCA9IChpdGVtOiBUYXNrTG9nSXRlbSkgPT4gb3B0cy5zaG9ydCA/IHVuZGVmaW5lZCA6IChpdGVtLmpvYk5hbWUgPz8gaXRlbS50YXNrSWQgPz8gdGFza0lkKVxuICAgICAgbGV0IGxhc3RUaW1lc3RhbXAgPSBwcmludFRhc2tMb2dMaW5lcyhkYXRhLml0ZW1zLCBpZClcbiAgICAgIGlmIChvcHRzLmZvbGxvdykge1xuICAgICAgICBhd2FpdCBwb2xsTG9ncyhsYXN0VGltZXN0YW1wLCBhc3luYyAoc2luY2UpID0+IHtcbiAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaEpzb24oYXBpVXJsKGJ1aWxkVXJsKHNpbmNlKSkpIGFzIHsgaXRlbXM6IFRhc2tMb2dJdGVtW10gfVxuICAgICAgICAgIHJldHVybiByZXMuaXRlbXNcbiAgICAgICAgfSwgKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgbGFzdFRpbWVzdGFtcCA9IHByaW50VGFza0xvZ0xpbmVzKGl0ZW1zLCBpZCkgPz8gbGFzdFRpbWVzdGFtcFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hKc29uKGFwaVVybChgL3Rhc2stbG9ncz90YXNrSWQ9JHt0YXNrSWR9YCkpIGFzIHsgaXRlbXM6IHVua25vd25bXSB9XG4gICAgICBpZiAob3B0cy5mb3JtYXQgPT09ICd0YWJsZScpIHtcbiAgICAgICAgKGRhdGEuaXRlbXMgYXMgeyBtZXNzYWdlOiBzdHJpbmcgfVtdKS5mb3JFYWNoKGl0ZW0gPT4gY29uc29sZS5sb2coaXRlbS5tZXNzYWdlKSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvcm1hdE91dHB1dChvcHRzLmZvcm1hdCA9PT0gJ2pzb24nID8gZGF0YSA6IGRhdGEuaXRlbXMsIG9wdHMuZm9ybWF0LCB0YXNrTG9nQ29sdW1ucylcbiAgICAgIH1cbiAgICB9XG4gIH0pXG5cbmludGVyZmFjZSBMb2dJdGVtIHtcbiAgdGltZXN0YW1wOiBzdHJpbmdcbiAgbWVzc2FnZTogc3RyaW5nXG59XG5cbmludGVyZmFjZSBUYXNrTG9nSXRlbSBleHRlbmRzIExvZ0l0ZW0ge1xuICB0YXNrSWQ/OiBzdHJpbmdcbiAgam9iTmFtZT86IHN0cmluZ1xufVxuXG5mdW5jdGlvbiBwcmludExvZ0xpbmVzKGl0ZW1zOiBMb2dJdGVtW10sIGlkPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgY29uc3QgdHMgPSBuZXcgRGF0ZShpdGVtLnRpbWVzdGFtcCkudG9JU09TdHJpbmcoKVxuICAgIGlmIChpZCkge1xuICAgICAgY29uc29sZS5sb2coYCR7dHN9ICAke2lkfSAgJHtpdGVtLm1lc3NhZ2V9YClcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coYCR7dHN9ICAke2l0ZW0ubWVzc2FnZX1gKVxuICAgIH1cbiAgfVxuICByZXR1cm4gaXRlbXMubGVuZ3RoID4gMCA/IGl0ZW1zW2l0ZW1zLmxlbmd0aCAtIDFdLnRpbWVzdGFtcCA6IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBwcmludFRhc2tMb2dMaW5lcyhpdGVtczogVGFza0xvZ0l0ZW1bXSwgaWQ6IChpdGVtOiBUYXNrTG9nSXRlbSkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgY29uc3QgdHMgPSBuZXcgRGF0ZShpdGVtLnRpbWVzdGFtcCkudG9JU09TdHJpbmcoKVxuICAgIGNvbnN0IHByZWZpeCA9IGlkKGl0ZW0pXG4gICAgaWYgKHByZWZpeCkge1xuICAgICAgY29uc29sZS5sb2coYCR7dHN9ICAke3ByZWZpeH0gICR7aXRlbS5tZXNzYWdlfWApXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKGAke3RzfSAgJHtpdGVtLm1lc3NhZ2V9YClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGl0ZW1zLmxlbmd0aCA+IDAgPyBpdGVtc1tpdGVtcy5sZW5ndGggLSAxXS50aW1lc3RhbXAgOiB1bmRlZmluZWRcbn1cblxuYXN5bmMgZnVuY3Rpb24gcG9sbExvZ3MoXG4gIGluaXRpYWxUaW1lc3RhbXA6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgZmV0Y2g6IChzaW5jZTogc3RyaW5nKSA9PiBQcm9taXNlPExvZ0l0ZW1bXT4sXG4gIG9uSXRlbXM6IChpdGVtczogTG9nSXRlbVtdKSA9PiB2b2lkLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGxldCBzaW5jZSA9IGluaXRpYWxUaW1lc3RhbXAgPz8gbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSBhd2FpdCBmZXRjaChzaW5jZSlcbiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBvbkl0ZW1zKGl0ZW1zKVxuICAgICAgICAgIHNpbmNlID0gaXRlbXNbaXRlbXMubGVuZ3RoIC0gMV0udGltZXN0YW1wXG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBpZ25vcmUgdHJhbnNpZW50IGVycm9ycyBkdXJpbmcgcG9sbGluZ1xuICAgICAgfVxuICAgIH0sIDMwMDApXG5cbiAgICBwcm9jZXNzLm9uKCdTSUdJTlQnLCAoKSA9PiB7XG4gICAgICBjbGVhckludGVydmFsKGludGVydmFsKVxuICAgICAgcmVzb2x2ZSgpXG4gICAgfSlcbiAgfSlcbn1cbiJdfQ==
|
package/dist/commands/login.js
CHANGED
|
@@ -2,23 +2,57 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.loginCommand = void 0;
|
|
4
4
|
const commander_1 = require("commander");
|
|
5
|
+
const readline_1 = require("readline");
|
|
5
6
|
const auth_1 = require("../auth");
|
|
7
|
+
async function prompt(question) {
|
|
8
|
+
const rl = (0, readline_1.createInterface)({ input: process.stdin, output: process.stdout });
|
|
9
|
+
return new Promise(resolve => rl.question(question, answer => { rl.close(); resolve(answer); }));
|
|
10
|
+
}
|
|
11
|
+
async function promptPassword(question) {
|
|
12
|
+
process.stdout.write(question);
|
|
13
|
+
process.stdin.setRawMode(true);
|
|
14
|
+
process.stdin.resume();
|
|
15
|
+
process.stdin.setEncoding('utf8');
|
|
16
|
+
return new Promise(resolve => {
|
|
17
|
+
let password = '';
|
|
18
|
+
process.stdin.on('data', function handler(ch) {
|
|
19
|
+
if (ch === '\n' || ch === '\r' || ch === '') {
|
|
20
|
+
process.stdin.setRawMode(false);
|
|
21
|
+
process.stdin.pause();
|
|
22
|
+
process.stdin.removeListener('data', handler);
|
|
23
|
+
process.stdout.write('\n');
|
|
24
|
+
resolve(password);
|
|
25
|
+
}
|
|
26
|
+
else if (ch === '' || ch === '\b') {
|
|
27
|
+
if (password.length > 0) {
|
|
28
|
+
password = password.slice(0, -1);
|
|
29
|
+
process.stdout.write('\b \b');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
password += ch;
|
|
34
|
+
process.stdout.write('*');
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
}
|
|
6
39
|
exports.loginCommand = new commander_1.Command('login')
|
|
7
40
|
.description('Login into GENI Workflows and store credentials')
|
|
8
|
-
.option('--email <email>', 'User email')
|
|
9
41
|
.option('--password <password>', 'User password')
|
|
10
42
|
.action(async (opts) => {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
43
|
+
const email = await prompt('Email: ');
|
|
44
|
+
const password = opts.password ?? await promptPassword('Password: ');
|
|
45
|
+
if (!email || !password) {
|
|
46
|
+
console.error('Email and password are required.');
|
|
47
|
+
process.exit(1);
|
|
14
48
|
}
|
|
15
49
|
const res = await fetch((0, auth_1.apiUrl)('/auth/login'), {
|
|
16
50
|
method: 'POST',
|
|
17
51
|
headers: { 'Content-Type': 'application/json' },
|
|
18
|
-
body: JSON.stringify({ email
|
|
52
|
+
body: JSON.stringify({ email, password }),
|
|
19
53
|
});
|
|
20
54
|
const data = await (0, auth_1.readJsonResponse)(res, { method: 'POST', url: (0, auth_1.apiUrl)('/auth/login') });
|
|
21
55
|
(0, auth_1.saveCredentials)(data.accessToken);
|
|
22
56
|
console.log('Logged in. Credentials saved to ~/.geni/credentials.json');
|
|
23
57
|
});
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvbG9naW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQW9DO0FBQ3BDLHVDQUEyQztBQUMzQyxrQ0FBb0U7QUFFcEUsS0FBSyxVQUFVLE1BQU0sQ0FBQyxRQUFnQjtJQUNwQyxNQUFNLEVBQUUsR0FBRyxJQUFBLDBCQUFlLEVBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDN0UsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRyxDQUFDO0FBRUQsS0FBSyxVQUFVLGNBQWMsQ0FBQyxRQUFnQjtJQUM1QyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3ZCLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDM0IsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxTQUFTLE9BQU8sQ0FBQyxFQUFVO1lBQ2xELElBQUksRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDN0MsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3RCLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDOUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNCLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwQixDQUFDO2lCQUFNLElBQUksRUFBRSxLQUFLLEdBQUcsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3JDLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDeEIsUUFBUSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2pDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNoQyxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFFBQVEsSUFBSSxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRVksUUFBQSxZQUFZLEdBQUcsSUFBSSxtQkFBTyxDQUFDLE9BQU8sQ0FBQztLQUM3QyxXQUFXLENBQUMsaURBQWlELENBQUM7S0FDOUQsTUFBTSxDQUFDLHVCQUF1QixFQUFFLGVBQWUsQ0FBQztLQUNoRCxNQUFNLENBQUMsS0FBSyxFQUFFLElBQTJCLEVBQUUsRUFBRTtJQUM1QyxNQUFNLEtBQUssR0FBRyxNQUFNLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLE1BQU0sY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3JFLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN4QixPQUFPLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFDbEQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxLQUFLLENBQUMsSUFBQSxhQUFNLEVBQUMsYUFBYSxDQUFDLEVBQUU7UUFDN0MsTUFBTSxFQUFFLE1BQU07UUFDZCxPQUFPLEVBQUUsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUU7UUFDL0MsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUM7S0FDMUMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFBLHVCQUFnQixFQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUEsYUFBTSxFQUFDLGFBQWEsQ0FBQyxFQUFFLENBRXRGLENBQUM7SUFDRixJQUFBLHNCQUFlLEVBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMERBQTBELENBQUMsQ0FBQztBQUMxRSxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgY3JlYXRlSW50ZXJmYWNlIH0gZnJvbSAncmVhZGxpbmUnO1xuaW1wb3J0IHsgYXBpVXJsLCByZWFkSnNvblJlc3BvbnNlLCBzYXZlQ3JlZGVudGlhbHMgfSBmcm9tICcuLi9hdXRoJztcblxuYXN5bmMgZnVuY3Rpb24gcHJvbXB0KHF1ZXN0aW9uOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBybCA9IGNyZWF0ZUludGVyZmFjZSh7IGlucHV0OiBwcm9jZXNzLnN0ZGluLCBvdXRwdXQ6IHByb2Nlc3Muc3Rkb3V0IH0pO1xuICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBybC5xdWVzdGlvbihxdWVzdGlvbiwgYW5zd2VyID0+IHsgcmwuY2xvc2UoKTsgcmVzb2x2ZShhbnN3ZXIpOyB9KSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHByb21wdFBhc3N3b3JkKHF1ZXN0aW9uOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBwcm9jZXNzLnN0ZG91dC53cml0ZShxdWVzdGlvbik7XG4gIHByb2Nlc3Muc3RkaW4uc2V0UmF3TW9kZSh0cnVlKTtcbiAgcHJvY2Vzcy5zdGRpbi5yZXN1bWUoKTtcbiAgcHJvY2Vzcy5zdGRpbi5zZXRFbmNvZGluZygndXRmOCcpO1xuICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgbGV0IHBhc3N3b3JkID0gJyc7XG4gICAgcHJvY2Vzcy5zdGRpbi5vbignZGF0YScsIGZ1bmN0aW9uIGhhbmRsZXIoY2g6IHN0cmluZykge1xuICAgICAgaWYgKGNoID09PSAnXFxuJyB8fCBjaCA9PT0gJ1xccicgfHwgY2ggPT09ICdcdTAwMDMnKSB7XG4gICAgICAgIHByb2Nlc3Muc3RkaW4uc2V0UmF3TW9kZShmYWxzZSk7XG4gICAgICAgIHByb2Nlc3Muc3RkaW4ucGF1c2UoKTtcbiAgICAgICAgcHJvY2Vzcy5zdGRpbi5yZW1vdmVMaXN0ZW5lcignZGF0YScsIGhhbmRsZXIpO1xuICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnXFxuJyk7XG4gICAgICAgIHJlc29sdmUocGFzc3dvcmQpO1xuICAgICAgfSBlbHNlIGlmIChjaCA9PT0gJ38nIHx8IGNoID09PSAnXFxiJykge1xuICAgICAgICBpZiAocGFzc3dvcmQubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHBhc3N3b3JkID0gcGFzc3dvcmQuc2xpY2UoMCwgLTEpO1xuICAgICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCdcXGIgXFxiJyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhc3N3b3JkICs9IGNoO1xuICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnKicpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGNvbnN0IGxvZ2luQ29tbWFuZCA9IG5ldyBDb21tYW5kKCdsb2dpbicpXG4gIC5kZXNjcmlwdGlvbignTG9naW4gaW50byBHRU5JIFdvcmtmbG93cyBhbmQgc3RvcmUgY3JlZGVudGlhbHMnKVxuICAub3B0aW9uKCctLXBhc3N3b3JkIDxwYXNzd29yZD4nLCAnVXNlciBwYXNzd29yZCcpXG4gIC5hY3Rpb24oYXN5bmMgKG9wdHM6IHsgcGFzc3dvcmQ/OiBzdHJpbmcgfSkgPT4ge1xuICAgIGNvbnN0IGVtYWlsID0gYXdhaXQgcHJvbXB0KCdFbWFpbDogJyk7XG4gICAgY29uc3QgcGFzc3dvcmQgPSBvcHRzLnBhc3N3b3JkID8/IGF3YWl0IHByb21wdFBhc3N3b3JkKCdQYXNzd29yZDogJyk7XG4gICAgaWYgKCFlbWFpbCB8fCAhcGFzc3dvcmQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0VtYWlsIGFuZCBwYXNzd29yZCBhcmUgcmVxdWlyZWQuJyk7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGFwaVVybCgnL2F1dGgvbG9naW4nKSwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgZW1haWwsIHBhc3N3b3JkIH0pLFxuICAgIH0pO1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZWFkSnNvblJlc3BvbnNlKHJlcywgeyBtZXRob2Q6ICdQT1NUJywgdXJsOiBhcGlVcmwoJy9hdXRoL2xvZ2luJykgfSkgYXMge1xuICAgICAgYWNjZXNzVG9rZW46IHN0cmluZztcbiAgICB9O1xuICAgIHNhdmVDcmVkZW50aWFscyhkYXRhLmFjY2Vzc1Rva2VuKTtcbiAgICBjb25zb2xlLmxvZygnTG9nZ2VkIGluLiBDcmVkZW50aWFscyBzYXZlZCB0byB+Ly5nZW5pL2NyZWRlbnRpYWxzLmpzb24nKTtcbiAgfSk7XG4iXX0=
|
|
@@ -10,6 +10,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
10
10
|
const auth_1 = require("../auth");
|
|
11
11
|
const errors_1 = require("../errors");
|
|
12
12
|
const format_js_1 = require("../format.js");
|
|
13
|
+
const log_js_1 = require("./log.js");
|
|
13
14
|
function parseTimeToSeconds(value) {
|
|
14
15
|
const parts = value.split(':').map(Number);
|
|
15
16
|
if (parts.length !== 3 || parts.some(isNaN)) {
|
|
@@ -25,12 +26,16 @@ exports.submissionCommand
|
|
|
25
26
|
.description('List submissions')
|
|
26
27
|
.option('--status <status>', 'Filter by status (SUBMITTED, SUCCEEDED, FAILED)')
|
|
27
28
|
.option('--limit <n>', 'Maximum number of results to return', '10')
|
|
29
|
+
.addOption(new commander_1.Option('--sort <field>', 'Sort field').choices(['started', 'stopped', 'updated']).default('updated'))
|
|
30
|
+
.addOption(new commander_1.Option('--sort-order <order>', 'Sort order').choices(['ascending', 'descending']).default('ascending'))
|
|
28
31
|
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
29
32
|
.action(async (opts) => {
|
|
30
33
|
const params = new URLSearchParams();
|
|
31
34
|
if (opts.status)
|
|
32
35
|
params.set('status', opts.status);
|
|
33
36
|
params.set('limit', opts.limit);
|
|
37
|
+
params.set('sort', opts.sort);
|
|
38
|
+
params.set('sortOrder', opts.sortOrder === 'descending' ? 'desc' : 'asc');
|
|
34
39
|
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/submissions?${params}`));
|
|
35
40
|
(0, format_js_1.formatOutput)(opts.format === 'json' ? data : data.items, opts.format, format_js_1.submissionColumns);
|
|
36
41
|
});
|
|
@@ -40,7 +45,7 @@ exports.submissionCommand
|
|
|
40
45
|
.addOption(new commander_1.Option('--format <format>', 'Output format').choices(['table', 'json', 'csv']).default('table'))
|
|
41
46
|
.action(async (id, opts) => {
|
|
42
47
|
const data = await (0, auth_1.fetchJson)((0, auth_1.apiUrl)(`/submissions/${id}`));
|
|
43
|
-
(0, format_js_1.
|
|
48
|
+
(0, format_js_1.formatDetail)(data, opts.format, format_js_1.submissionColumns);
|
|
44
49
|
});
|
|
45
50
|
exports.submissionCommand
|
|
46
51
|
.command('create')
|
|
@@ -108,4 +113,5 @@ exports.submissionCommand
|
|
|
108
113
|
const data = await (0, auth_1.readJsonResponse)(res, { method: 'POST', url });
|
|
109
114
|
console.log(`${data.message} (${data.submissionId})`);
|
|
110
115
|
});
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibWlzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9zdWJtaXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHlDQUEyQztBQUMzQyw0Q0FBbUI7QUFDbkIsZ0RBQXVCO0FBQ3ZCLGtDQUE2RTtBQUM3RSxzQ0FBMkM7QUFDM0MsNENBQWlGO0FBRWpGLFNBQVMsa0JBQWtCLENBQUMsS0FBYTtJQUN2QyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMxQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM1QyxNQUFNLElBQUEsd0JBQWUsRUFDbkIsdURBQXVELEVBQ3ZELG1CQUFtQixDQUNwQixDQUFBO0lBQ0gsQ0FBQztJQUNELE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQTtJQUNwQyxPQUFPLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0FBQ3pELENBQUM7QUFHWSxRQUFBLGlCQUFpQixHQUFHLElBQUksbUJBQU8sQ0FBQyxZQUFZLENBQUM7S0FDdkQsV0FBVyxDQUFDLDZCQUE2QixDQUFDLENBQUE7QUFFN0MseUJBQWlCO0tBQ2QsT0FBTyxDQUFDLE1BQU0sQ0FBQztLQUNmLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQztLQUMvQixNQUFNLENBQUMsbUJBQW1CLEVBQUUsaURBQWlELENBQUM7S0FDOUUsTUFBTSxDQUFDLGFBQWEsRUFBRSxxQ0FBcUMsRUFBRSxJQUFJLENBQUM7S0FDbEUsU0FBUyxDQUFDLElBQUksa0JBQU0sQ0FB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QUFJLENBQUMsUUFBUSxDQUFBO0lBQ2hELElBQUksSUFBSSxDQUFDLE9BQU87UUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDN0MsTUFBTSxHQUFHLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxFQUFFO1FBQzNCLE1BQU0sRUFBRSxNQUFNO1FBQ2QsT0FBTyxFQUFFLEVBQUUsR0FBRyxJQUFBLHFCQUFjLEdBQUUsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUU7UUFDcEUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO0tBQzNCLENBQUMsQ0FBQTtJQUNGLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBQSx1QkFBZ0IsRUFBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUE4QyxDQUFBO0lBQzlHLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFBO0FBQ3ZELENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCwgT3B0aW9uIH0gZnJvbSAnY29tbWFuZGVyJ1xuaW1wb3J0IGZzIGZyb20gJ2ZzJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCB7IGFwaVVybCwgZmV0Y2hKc29uLCBnZXRBdXRoSGVhZGVycywgcmVhZEpzb25SZXNwb25zZSB9IGZyb20gJy4uL2F1dGgnXG5pbXBvcnQgeyBpbnZhbGlkQXJndW1lbnQgfSBmcm9tICcuLi9lcnJvcnMnXG5pbXBvcnQgeyBmb3JtYXRPdXRwdXQsIHN1Ym1pc3Npb25Db2x1bW5zLCB0eXBlIE91dHB1dEZvcm1hdCB9IGZyb20gJy4uL2Zvcm1hdC5qcydcblxuZnVuY3Rpb24gcGFyc2VUaW1lVG9TZWNvbmRzKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICBjb25zdCBwYXJ0cyA9IHZhbHVlLnNwbGl0KCc6JykubWFwKE51bWJlcilcbiAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMyB8fCBwYXJ0cy5zb21lKGlzTmFOKSkge1xuICAgIHRocm93IGludmFsaWRBcmd1bWVudChcbiAgICAgICdUaW1lIG11c3QgYmUgaW4gREQ6SEg6TU0gZm9ybWF0IChkYXlzOmhvdXJzOm1pbnV0ZXMpLicsXG4gICAgICAnRXhhbXBsZTogMDA6MTI6MzAnLFxuICAgIClcbiAgfVxuICBjb25zdCBbZGF5cywgaG91cnMsIG1pbnV0ZXNdID0gcGFydHNcbiAgcmV0dXJuIChkYXlzICogODY0MDApICsgKGhvdXJzICogMzYwMCkgKyAobWludXRlcyAqIDYwKVxufVxuXG5cbmV4cG9ydCBjb25zdCBzdWJtaXNzaW9uQ29tbWFuZCA9IG5ldyBDb21tYW5kKCdzdWJtaXNzaW9uJylcbiAgLmRlc2NyaXB0aW9uKCdNYW5hZ2Ugd29ya2Zsb3cgc3VibWlzc2lvbnMnKVxuXG5zdWJtaXNzaW9uQ29tbWFuZFxuICAuY29tbWFuZCgnbGlzdCcpXG4gIC5kZXNjcmlwdGlvbignTGlzdCBzdWJtaXNzaW9ucycpXG4gIC5vcHRpb24oJy0tc3RhdHVzIDxzdGF0dXM+JywgJ0ZpbHRlciBieSBzdGF0dXMgKFNVQk1JVFRFRCwgU1VDQ0VFREVELCBGQUlMRUQpJylcbiAgLm9wdGlvbignLS1saW1pdCA8bj4nLCAnTWF4aW11bSBudW1iZXIgb2YgcmVzdWx0cyB0byByZXR1cm4nLCAnMTAnKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQnKS5jaG9pY2VzKFsndGFibGUnLCAnanNvbicsICdjc3YnXSkuZGVmYXVsdCgndGFibGUnKSlcbiAgLmFjdGlvbihhc3luYyAob3B0czogeyBzdGF0dXM/OiBzdHJpbmc7IGxpbWl0OiBzdHJpbmc7IGZvcm1hdDogT3V0cHV0Rm9ybWF0IH0pID0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKClcbiAgICBpZiAob3B0cy5zdGF0dXMpIHBhcmFtcy5zZXQoJ3N0YXR1cycsIG9wdHMuc3RhdHVzKVxuICAgIHBhcmFtcy5zZXQoJ2xpbWl0Jywgb3B0cy5saW1pdClcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hKc29uKGFwaVVybChgL3N1Ym1pc3Npb25zPyR7cGFyYW1zfWApKSBhcyB7IGl0ZW1zOiB1bmtub3duW10gfVxuICAgIGZvcm1hdE91dHB1dChvcHRzLmZvcm1hdCA9PT0gJ2pzb24nID8gZGF0YSA6IGRhdGEuaXRlbXMsIG9wdHMuZm9ybWF0LCBzdWJtaXNzaW9uQ29sdW1ucylcbiAgfSlcblxuc3VibWlzc2lvbkNvbW1hbmRcbiAgLmNvbW1hbmQoJ2dldCA8aWQ+JylcbiAgLmRlc2NyaXB0aW9uKCdHZXQgYSBzdWJtaXNzaW9uIGJ5IElEJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0JykuY2hvaWNlcyhbJ3RhYmxlJywgJ2pzb24nLCAnY3N2J10pLmRlZmF1bHQoJ3RhYmxlJykpXG4gIC5hY3Rpb24oYXN5bmMgKGlkOiBzdHJpbmcsIG9wdHM6IHsgZm9ybWF0OiBPdXRwdXRGb3JtYXQgfSkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmZXRjaEpzb24oYXBpVXJsKGAvc3VibWlzc2lvbnMvJHtpZH1gKSlcbiAgICBmb3JtYXRPdXRwdXQoZGF0YSwgb3B0cy5mb3JtYXQsIHN1Ym1pc3Npb25Db2x1bW5zKVxuICB9KVxuXG5zdWJtaXNzaW9uQ29tbWFuZFxuICAuY29tbWFuZCgnY3JlYXRlJylcbiAgLmRlc2NyaXB0aW9uKCdTdWJtaXQgYSB3b3JrZmxvdyBydW4nKVxuICAucmVxdWlyZWRPcHRpb24oJy0td29ya2Zsb3ctbmFtZSA8bmFtZT4nLCAnV29ya2Zsb3cgbmFtZScpXG4gIC5vcHRpb24oJy0td29ya2Zsb3ctdmVyc2lvbiA8dmVyc2lvbj4nLCAnV29ya2Zsb3cgdmVyc2lvbicpXG4gIC5yZXF1aXJlZE9wdGlvbignLS1wYXJhbXMtZmlsZSA8ZmlsZT4nLCAnUGF0aCB0byBwYXJhbXMgZmlsZSAoLmpzb24vLnlhbWwvLnltbCknKVxuICAucmVxdWlyZWRPcHRpb24oJy0tZW5naW5lLWlkIDxpZD4nLCAnRW5naW5lIElEJylcbiAgLnJlcXVpcmVkT3B0aW9uKCctLXF1ZXVlLWlkIDxpZD4nLCAnUXVldWUgSUQnKVxuICAucmVxdWlyZWRPcHRpb24oJy0tb3V0cHV0LWZvbGRlciA8czMtdXJpPicsICdTMyBVUkkgcHJlZml4IGZvciB3b3JrZmxvdyBvdXRwdXQgZmlsZXMgKGUuZy4gczM6Ly9teS1idWNrZXQvb3V0cHV0cy8pJylcbiAgLm9wdGlvbignLS1hbGVydC10aW1lIDxERDpISDpNTT4nLCAnQWxlcnQgdGltZSBvdmVycmlkZSAoREQ6SEg6TU0pJylcbiAgLm9wdGlvbignLS1jYW5jZWwtdGltZSA8REQ6SEg6TU0+JywgJ0NhbmNlbCB0aW1lIG92ZXJyaWRlIChERDpISDpNTSknKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQnKS5jaG9pY2VzKFsndGFibGUnLCAnanNvbicsICdjc3YnXSkuZGVmYXVsdCgndGFibGUnKSlcbiAgLmFjdGlvbihhc3luYyAob3B0czoge1xuICAgIHdvcmtmbG93TmFtZTogc3RyaW5nXG4gICAgd29ya2Zsb3dWZXJzaW9uPzogc3RyaW5nXG4gICAgcGFyYW1zRmlsZTogc3RyaW5nXG4gICAgZW5naW5lSWQ6IHN0cmluZ1xuICAgIHF1ZXVlSWQ6IHN0cmluZ1xuICAgIG91dHB1dEZvbGRlcjogc3RyaW5nXG4gICAgYWxlcnRUaW1lPzogc3RyaW5nXG4gICAgY2FuY2VsVGltZT86IHN0cmluZ1xuICAgIGZvcm1hdDogT3V0cHV0Rm9ybWF0XG4gIH0pID0+IHtcbiAgICBjb25zdCBmb3JtID0gbmV3IEZvcm1EYXRhKClcbiAgICBmb3JtLmFwcGVuZCgnd29ya2Zsb3dOYW1lJywgb3B0cy53b3JrZmxvd05hbWUpXG4gICAgaWYgKG9wdHMud29ya2Zsb3dWZXJzaW9uKSBmb3JtLmFwcGVuZCgnd29ya2Zsb3dWZXJzaW9uJywgb3B0cy53b3JrZmxvd1ZlcnNpb24pXG4gICAgZm9ybS5hcHBlbmQoJ2VuZ2luZUlkJywgb3B0cy5lbmdpbmVJZClcbiAgICBmb3JtLmFwcGVuZCgncXVldWVJZCcsIG9wdHMucXVldWVJZClcbiAgICBmb3JtLmFwcGVuZCgnb3V0cHV0Jywgb3B0cy5vdXRwdXRGb2xkZXIpXG4gICAgaWYgKG9wdHMuYWxlcnRUaW1lKSBmb3JtLmFwcGVuZCgnYWxlcnRUaW1lU2Vjb25kcycsIFN0cmluZyhwYXJzZVRpbWVUb1NlY29uZHMob3B0cy5hbGVydFRpbWUpKSlcbiAgICBpZiAob3B0cy5jYW5jZWxUaW1lKSBmb3JtLmFwcGVuZCgnY2FuY2VsVGltZVNlY29uZHMnLCBTdHJpbmcocGFyc2VUaW1lVG9TZWNvbmRzKG9wdHMuY2FuY2VsVGltZSkpKVxuICAgIGNvbnN0IHBhcmFtc0J1ZmZlciA9IGF3YWl0IGZzLnByb21pc2VzLnJlYWRGaWxlKG9wdHMucGFyYW1zRmlsZSlcbiAgICBmb3JtLmFwcGVuZCgncGFyYW1zJywgbmV3IEJsb2IoW3BhcmFtc0J1ZmZlcl0pLCBwYXRoLmJhc2VuYW1lKG9wdHMucGFyYW1zRmlsZSkpXG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChhcGlVcmwoJy9zdWJtaXNzaW9ucycpLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IGdldEF1dGhIZWFkZXJzKCksXG4gICAgICBib2R5OiBmb3JtLFxuICAgIH0pXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlYWRKc29uUmVzcG9uc2UocmVzLCB7IG1ldGhvZDogJ1BPU1QnLCB1cmw6IGFwaVVybCgnL3N1Ym1pc3Npb25zJykgfSlcbiAgICBmb3JtYXRPdXRwdXQoZGF0YSwgb3B0cy5mb3JtYXQsIHN1Ym1pc3Npb25Db2x1bW5zKVxuICB9KVxuXG5zdWJtaXNzaW9uQ29tbWFuZFxuICAuY29tbWFuZCgnY2FuY2VsIDxpZD4nKVxuICAuZGVzY3JpcHRpb24oJ0NhbmNlbCBhIHJ1bm5pbmcgc3VibWlzc2lvbicpXG4gIC5hY3Rpb24oYXN5bmMgKGlkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCB1cmwgPSBhcGlVcmwoYC9zdWJtaXNzaW9ucy8ke2lkfS9jYW5jZWxgKVxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKHVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiBnZXRBdXRoSGVhZGVycygpLFxuICAgIH0pXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlYWRKc29uUmVzcG9uc2UocmVzLCB7IG1ldGhvZDogJ1BPU1QnLCB1cmwgfSkgYXMgeyBzdWJtaXNzaW9uSWQ6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH1cbiAgICBjb25zb2xlLmxvZyhgJHtkYXRhLm1lc3NhZ2V9ICgke2RhdGEuc3VibWlzc2lvbklkfSlgKVxuICB9KVxuXG5zdWJtaXNzaW9uQ29tbWFuZFxuICAuY29tbWFuZCgncmV0cnkgPGlkPicpXG4gIC5kZXNjcmlwdGlvbignUmV0cnkgYSBmYWlsZWQgc3VibWlzc2lvbicpXG4gIC5vcHRpb24oJy0tZW5naW5lLWlkIDxpZD4nLCAnVXNlIGEgZGlmZmVyZW50IGVuZ2luZScpXG4gIC5vcHRpb24oJy0tcXVldWUtaWQgPGlkPicsICdVc2UgYSBkaWZmZXJlbnQgcXVldWUnKVxuICAuYWN0aW9uKGFzeW5jIChpZDogc3RyaW5nLCBvcHRzOiB7IGVuZ2luZUlkPzogc3RyaW5nOyBxdWV1ZUlkPzogc3RyaW5nIH0pID0+IHtcbiAgICBjb25zdCB1cmwgPSBhcGlVcmwoYC9zdWJtaXNzaW9ucy8ke2lkfS9yZXRyeWApXG4gICAgY29uc3QgYm9keTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9XG4gICAgaWYgKG9wdHMuZW5naW5lSWQpIGJvZHkuZW5naW5lSWQgPSBvcHRzLmVuZ2luZUlkXG4gICAgaWYgKG9wdHMucXVldWVJZCkgYm9keS5xdWV1ZUlkID0gb3B0cy5xdWV1ZUlkXG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2godXJsLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHsgLi4uZ2V0QXV0aEhlYWRlcnMoKSwgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoYm9keSksXG4gICAgfSlcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVhZEpzb25SZXNwb25zZShyZXMsIHsgbWV0aG9kOiAnUE9TVCcsIHVybCB9KSBhcyB7IHN1Ym1pc3Npb25JZDogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfVxuICAgIGNvbnNvbGUubG9nKGAke2RhdGEubWVzc2FnZX0gKCR7ZGF0YS5zdWJtaXNzaW9uSWR9KWApXG4gIH0pXG4iXX0=
|
|
116
|
+
exports.submissionCommand.addCommand(log_js_1.logsSubcommand);
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibWlzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9zdWJtaXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHlDQUEyQztBQUMzQyw0Q0FBbUI7QUFDbkIsZ0RBQXVCO0FBQ3ZCLGtDQUE2RTtBQUM3RSxzQ0FBMkM7QUFDM0MsNENBQStGO0FBQy9GLHFDQUF5QztBQUV6QyxTQUFTLGtCQUFrQixDQUFDLEtBQWE7SUFDdkMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDMUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDNUMsTUFBTSxJQUFBLHdCQUFlLEVBQ25CLHVEQUF1RCxFQUN2RCxtQkFBbUIsQ0FDcEIsQ0FBQTtJQUNILENBQUM7SUFDRCxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUE7SUFDcEMsT0FBTyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQTtBQUN6RCxDQUFDO0FBR1ksUUFBQSxpQkFBaUIsR0FBRyxJQUFJLG1CQUFPLENBQUMsWUFBWSxDQUFDO0tBQ3ZELFdBQVcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO0FBRTdDLHlCQUFpQjtLQUNkLE9BQU8sQ0FBQyxNQUFNLENBQUM7S0FDZixXQUFXLENBQUMsa0JBQWtCLENBQUM7S0FDL0IsTUFBTSxDQUFDLG1CQUFtQixFQUFFLGlEQUFpRCxDQUFDO0tBQzlFLE1BQU0sQ0FBQyxhQUFhLEVBQUUscUNBQXFDLEVBQUUsSUFBSSxDQUFDO0tBQ2xFLFNBQVMsQ0FBQyxJ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QUFZLEdBQUcsQ0FBQyxDQUFBO0FBQ3ZELENBQUMsQ0FBQyxDQUFBO0FBRUoseUJBQWlCLENBQUMsVUFBVSxDQUFDLHVCQUFjLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQsIE9wdGlvbiB9IGZyb20gJ2NvbW1hbmRlcidcbmltcG9ydCBmcyBmcm9tICdmcydcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQgeyBhcGlVcmwsIGZldGNoSnNvbiwgZ2V0QXV0aEhlYWRlcnMsIHJlYWRKc29uUmVzcG9uc2UgfSBmcm9tICcuLi9hdXRoJ1xuaW1wb3J0IHsgaW52YWxpZEFyZ3VtZW50IH0gZnJvbSAnLi4vZXJyb3JzJ1xuaW1wb3J0IHsgZm9ybWF0RGV0YWlsLCBmb3JtYXRPdXRwdXQsIHN1Ym1pc3Npb25Db2x1bW5zLCB0eXBlIE91dHB1dEZvcm1hdCB9IGZyb20gJy4uL2Zvcm1hdC5qcydcbmltcG9ydCB7IGxvZ3NTdWJjb21tYW5kIH0gZnJvbSAnLi9sb2cuanMnXG5cbmZ1bmN0aW9uIHBhcnNlVGltZVRvU2Vjb25kcyh2YWx1ZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgY29uc3QgcGFydHMgPSB2YWx1ZS5zcGxpdCgnOicpLm1hcChOdW1iZXIpXG4gIGlmIChwYXJ0cy5sZW5ndGggIT09IDMgfHwgcGFydHMuc29tZShpc05hTikpIHtcbiAgICB0aHJvdyBpbnZhbGlkQXJndW1lbnQoXG4gICAgICAnVGltZSBtdXN0IGJlIGluIEREOkhIOk1NIGZvcm1hdCAoZGF5czpob3VyczptaW51dGVzKS4nLFxuICAgICAgJ0V4YW1wbGU6IDAwOjEyOjMwJyxcbiAgICApXG4gIH1cbiAgY29uc3QgW2RheXMsIGhvdXJzLCBtaW51dGVzXSA9IHBhcnRzXG4gIHJldHVybiAoZGF5cyAqIDg2NDAwKSArIChob3VycyAqIDM2MDApICsgKG1pbnV0ZXMgKiA2MClcbn1cblxuXG5leHBvcnQgY29uc3Qgc3VibWlzc2lvbkNvbW1hbmQgPSBuZXcgQ29tbWFuZCgnc3VibWlzc2lvbicpXG4gIC5kZXNjcmlwdGlvbignTWFuYWdlIHdvcmtmbG93IHN1Ym1pc3Npb25zJylcblxuc3VibWlzc2lvbkNvbW1hbmRcbiAgLmNvbW1hbmQoJ2xpc3QnKVxuICAuZGVzY3JpcHRpb24oJ0xpc3Qgc3VibWlzc2lvbnMnKVxuICAub3B0aW9uKCctLXN0YXR1cyA8c3RhdHVzPicsICdGaWx0ZXIgYnkgc3RhdHVzIChTVUJNSVRURUQsIFNVQ0NFRURFRCwgRkFJTEVEKScpXG4gIC5vcHRpb24oJy0tbGltaXQgPG4+JywgJ01heGltdW0gbnVtYmVyIG9mIHJlc3VsdHMgdG8gcmV0dXJuJywgJzEwJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXNvcnQgPGZpZWxkPicsICdTb3J0IGZpZWxkJykuY2hvaWNlcyhbJ3N0YXJ0ZWQnLCAnc3RvcHBlZCcsICd1cGRhdGVkJ10pLmRlZmF1bHQoJ3VwZGF0ZWQnKSlcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXNvcnQtb3JkZXIgPG9yZGVyPicsICdTb3J0IG9yZGVyJykuY2hvaWNlcyhbJ2FzY2VuZGluZycsICdkZXNjZW5kaW5nJ10pLmRlZmF1bHQoJ2FzY2VuZGluZycpKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQnKS5jaG9pY2VzKFsndGFibGUnLCAnanNvbicsICdjc3YnXSkuZGVmYXVsdCgndGFibGUnKSlcbiAgLmFjdGlvbihhc3luYyAob3B0czogeyBzdGF0dXM/OiBzdHJpbmc7IGxpbWl0OiBzdHJpbmc7IHNvcnQ6IHN0cmluZzsgc29ydE9yZGVyOiBzdHJpbmc7IGZvcm1hdDogT3V0cHV0Rm9ybWF0IH0pID0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKClcbiAgICBpZiAob3B0cy5zdGF0dXMpIHBhcmFtcy5zZXQoJ3N0YXR1cycsIG9wdHMuc3RhdHVzKVxuICAgIHBhcmFtcy5zZXQoJ2xpbWl0Jywgb3B0cy5saW1pdClcbiAgICBwYXJhbXMuc2V0KCdzb3J0Jywgb3B0cy5zb3J0KVxuICAgIHBhcmFtcy5zZXQoJ3NvcnRPcmRlcicsIG9wdHMuc29ydE9yZGVyID09PSAnZGVzY2VuZGluZycgPyAnZGVzYycgOiAnYXNjJylcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hKc29uKGFwaVVybChgL3N1Ym1pc3Npb25zPyR7cGFyYW1zfWApKSBhcyB7IGl0ZW1zOiB1bmtub3duW10gfVxuICAgIGZvcm1hdE91dHB1dChvcHRzLmZvcm1hdCA9PT0gJ2pzb24nID8gZGF0YSA6IGRhdGEuaXRlbXMsIG9wdHMuZm9ybWF0LCBzdWJtaXNzaW9uQ29sdW1ucylcbiAgfSlcblxuc3VibWlzc2lvbkNvbW1hbmRcbiAgLmNvbW1hbmQoJ2dldCA8aWQ+JylcbiAgLmRlc2NyaXB0aW9uKCdHZXQgYSBzdWJtaXNzaW9uIGJ5IElEJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0JykuY2hvaWNlcyhbJ3RhYmxlJywgJ2pzb24nLCAnY3N2J10pLmRlZmF1bHQoJ3RhYmxlJykpXG4gIC5hY3Rpb24oYXN5bmMgKGlkOiBzdHJpbmcsIG9wdHM6IHsgZm9ybWF0OiBPdXRwdXRGb3JtYXQgfSkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmZXRjaEpzb24oYXBpVXJsKGAvc3VibWlzc2lvbnMvJHtpZH1gKSlcbiAgICBmb3JtYXREZXRhaWwoZGF0YSwgb3B0cy5mb3JtYXQsIHN1Ym1pc3Npb25Db2x1bW5zKVxuICB9KVxuXG5zdWJtaXNzaW9uQ29tbWFuZFxuICAuY29tbWFuZCgnY3JlYXRlJylcbiAgLmRlc2NyaXB0aW9uKCdTdWJtaXQgYSB3b3JrZmxvdyBydW4nKVxuICAucmVxdWlyZWRPcHRpb24oJy0td29ya2Zsb3ctbmFtZSA8bmFtZT4nLCAnV29ya2Zsb3cgbmFtZScpXG4gIC5vcHRpb24oJy0td29ya2Zsb3ctdmVyc2lvbiA8dmVyc2lvbj4nLCAnV29ya2Zsb3cgdmVyc2lvbicpXG4gIC5yZXF1aXJlZE9wdGlvbignLS1wYXJhbXMtZmlsZSA8ZmlsZT4nLCAnUGF0aCB0byBwYXJhbXMgZmlsZSAoLmpzb24vLnlhbWwvLnltbCknKVxuICAucmVxdWlyZWRPcHRpb24oJy0tZW5naW5lLWlkIDxpZD4nLCAnRW5naW5lIElEJylcbiAgLnJlcXVpcmVkT3B0aW9uKCctLXF1ZXVlLWlkIDxpZD4nLCAnUXVldWUgSUQnKVxuICAucmVxdWlyZWRPcHRpb24oJy0tb3V0cHV0LWZvbGRlciA8czMtdXJpPicsICdTMyBVUkkgcHJlZml4IGZvciB3b3JrZmxvdyBvdXRwdXQgZmlsZXMgKGUuZy4gczM6Ly9teS1idWNrZXQvb3V0cHV0cy8pJylcbiAgLm9wdGlvbignLS1hbGVydC10aW1lIDxERDpISDpNTT4nLCAnQWxlcnQgdGltZSBvdmVycmlkZSAoREQ6SEg6TU0pJylcbiAgLm9wdGlvbignLS1jYW5jZWwtdGltZSA8REQ6SEg6TU0+JywgJ0NhbmNlbCB0aW1lIG92ZXJyaWRlIChERDpISDpNTSknKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQnKS5jaG9pY2VzKFsndGFibGUnLCAnanNvbicsICdjc3YnXSkuZGVmYXVsdCgndGFibGUnKSlcbiAgLmFjdGlvbihhc3luYyAob3B0czoge1xuICAgIHdvcmtmbG93TmFtZTogc3RyaW5nXG4gICAgd29ya2Zsb3dWZXJzaW9uPzogc3RyaW5nXG4gICAgcGFyYW1zRmlsZTogc3RyaW5nXG4gICAgZW5naW5lSWQ6IHN0cmluZ1xuICAgIHF1ZXVlSWQ6IHN0cmluZ1xuICAgIG91dHB1dEZvbGRlcjogc3RyaW5nXG4gICAgYWxlcnRUaW1lPzogc3RyaW5nXG4gICAgY2FuY2VsVGltZT86IHN0cmluZ1xuICAgIGZvcm1hdDogT3V0cHV0Rm9ybWF0XG4gIH0pID0+IHtcbiAgICBjb25zdCBmb3JtID0gbmV3IEZvcm1EYXRhKClcbiAgICBmb3JtLmFwcGVuZCgnd29ya2Zsb3dOYW1lJywgb3B0cy53b3JrZmxvd05hbWUpXG4gICAgaWYgKG9wdHMud29ya2Zsb3dWZXJzaW9uKSBmb3JtLmFwcGVuZCgnd29ya2Zsb3dWZXJzaW9uJywgb3B0cy53b3JrZmxvd1ZlcnNpb24pXG4gICAgZm9ybS5hcHBlbmQoJ2VuZ2luZUlkJywgb3B0cy5lbmdpbmVJZClcbiAgICBmb3JtLmFwcGVuZCgncXVldWVJZCcsIG9wdHMucXVldWVJZClcbiAgICBmb3JtLmFwcGVuZCgnb3V0cHV0Jywgb3B0cy5vdXRwdXRGb2xkZXIpXG4gICAgaWYgKG9wdHMuYWxlcnRUaW1lKSBmb3JtLmFwcGVuZCgnYWxlcnRUaW1lU2Vjb25kcycsIFN0cmluZyhwYXJzZVRpbWVUb1NlY29uZHMob3B0cy5hbGVydFRpbWUpKSlcbiAgICBpZiAob3B0cy5jYW5jZWxUaW1lKSBmb3JtLmFwcGVuZCgnY2FuY2VsVGltZVNlY29uZHMnLCBTdHJpbmcocGFyc2VUaW1lVG9TZWNvbmRzKG9wdHMuY2FuY2VsVGltZSkpKVxuICAgIGNvbnN0IHBhcmFtc0J1ZmZlciA9IGF3YWl0IGZzLnByb21pc2VzLnJlYWRGaWxlKG9wdHMucGFyYW1zRmlsZSlcbiAgICBmb3JtLmFwcGVuZCgncGFyYW1zJywgbmV3IEJsb2IoW3BhcmFtc0J1ZmZlcl0pLCBwYXRoLmJhc2VuYW1lKG9wdHMucGFyYW1zRmlsZSkpXG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChhcGlVcmwoJy9zdWJtaXNzaW9ucycpLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IGdldEF1dGhIZWFkZXJzKCksXG4gICAgICBib2R5OiBmb3JtLFxuICAgIH0pXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlYWRKc29uUmVzcG9uc2UocmVzLCB7IG1ldGhvZDogJ1BPU1QnLCB1cmw6IGFwaVVybCgnL3N1Ym1pc3Npb25zJykgfSlcbiAgICBmb3JtYXRPdXRwdXQoZGF0YSwgb3B0cy5mb3JtYXQsIHN1Ym1pc3Npb25Db2x1bW5zKVxuICB9KVxuXG5zdWJtaXNzaW9uQ29tbWFuZFxuICAuY29tbWFuZCgnY2FuY2VsIDxpZD4nKVxuICAuZGVzY3JpcHRpb24oJ0NhbmNlbCBhIHJ1bm5pbmcgc3VibWlzc2lvbicpXG4gIC5hY3Rpb24oYXN5bmMgKGlkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCB1cmwgPSBhcGlVcmwoYC9zdWJtaXNzaW9ucy8ke2lkfS9jYW5jZWxgKVxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKHVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiBnZXRBdXRoSGVhZGVycygpLFxuICAgIH0pXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlYWRKc29uUmVzcG9uc2UocmVzLCB7IG1ldGhvZDogJ1BPU1QnLCB1cmwgfSkgYXMgeyBzdWJtaXNzaW9uSWQ6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH1cbiAgICBjb25zb2xlLmxvZyhgJHtkYXRhLm1lc3NhZ2V9ICgke2RhdGEuc3VibWlzc2lvbklkfSlgKVxuICB9KVxuXG5zdWJtaXNzaW9uQ29tbWFuZFxuICAuY29tbWFuZCgncmV0cnkgPGlkPicpXG4gIC5kZXNjcmlwdGlvbignUmV0cnkgYSBmYWlsZWQgc3VibWlzc2lvbicpXG4gIC5vcHRpb24oJy0tZW5naW5lLWlkIDxpZD4nLCAnVXNlIGEgZGlmZmVyZW50IGVuZ2luZScpXG4gIC5vcHRpb24oJy0tcXVldWUtaWQgPGlkPicsICdVc2UgYSBkaWZmZXJlbnQgcXVldWUnKVxuICAuYWN0aW9uKGFzeW5jIChpZDogc3RyaW5nLCBvcHRzOiB7IGVuZ2luZUlkPzogc3RyaW5nOyBxdWV1ZUlkPzogc3RyaW5nIH0pID0+IHtcbiAgICBjb25zdCB1cmwgPSBhcGlVcmwoYC9zdWJtaXNzaW9ucy8ke2lkfS9yZXRyeWApXG4gICAgY29uc3QgYm9keTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9XG4gICAgaWYgKG9wdHMuZW5naW5lSWQpIGJvZHkuZW5naW5lSWQgPSBvcHRzLmVuZ2luZUlkXG4gICAgaWYgKG9wdHMucXVldWVJZCkgYm9keS5xdWV1ZUlkID0gb3B0cy5xdWV1ZUlkXG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2godXJsLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHsgLi4uZ2V0QXV0aEhlYWRlcnMoKSwgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoYm9keSksXG4gICAgfSlcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVhZEpzb25SZXNwb25zZShyZXMsIHsgbWV0aG9kOiAnUE9TVCcsIHVybCB9KSBhcyB7IHN1Ym1pc3Npb25JZDogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfVxuICAgIGNvbnNvbGUubG9nKGAke2RhdGEubWVzc2FnZX0gKCR7ZGF0YS5zdWJtaXNzaW9uSWR9KWApXG4gIH0pXG5cbnN1Ym1pc3Npb25Db21tYW5kLmFkZENvbW1hbmQobG9nc1N1YmNvbW1hbmQpXG4iXX0=
|