@statuser/cli 0.0.0-stage → 0.1.0
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/LICENSE +21 -0
- package/README.md +448 -2
- package/dist/client.js +163 -0
- package/dist/client.js.map +1 -0
- package/dist/commander-i18n.js +52 -0
- package/dist/commander-i18n.js.map +1 -0
- package/dist/commands/api.js +104 -0
- package/dist/commands/api.js.map +1 -0
- package/dist/commands/auth.js +104 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/catalog.js +72 -0
- package/dist/commands/catalog.js.map +1 -0
- package/dist/commands/config.js +302 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/heartbeat.js +199 -0
- package/dist/commands/heartbeat.js.map +1 -0
- package/dist/commands/incidents.js +265 -0
- package/dist/commands/incidents.js.map +1 -0
- package/dist/commands/maintenance.js +211 -0
- package/dist/commands/maintenance.js.map +1 -0
- package/dist/commands/reports.js +170 -0
- package/dist/commands/reports.js.map +1 -0
- package/dist/commands/scenarios.js +361 -0
- package/dist/commands/scenarios.js.map +1 -0
- package/dist/commands/servers-add.js +152 -0
- package/dist/commands/servers-add.js.map +1 -0
- package/dist/commands/servers-checks.js +56 -0
- package/dist/commands/servers-checks.js.map +1 -0
- package/dist/commands/servers.js +424 -0
- package/dist/commands/servers.js.map +1 -0
- package/dist/config.js +107 -0
- package/dist/config.js.map +1 -0
- package/dist/confirm.js +34 -0
- package/dist/confirm.js.map +1 -0
- package/dist/context.js +27 -0
- package/dist/context.js.map +1 -0
- package/dist/duration.js +20 -0
- package/dist/duration.js.map +1 -0
- package/dist/errors.js +73 -0
- package/dist/errors.js.map +1 -0
- package/dist/files.js +36 -0
- package/dist/files.js.map +1 -0
- package/dist/generated/openapi.js +6 -0
- package/dist/generated/openapi.js.map +1 -0
- package/dist/i18n.js +757 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.js +58 -0
- package/dist/index.js.map +1 -0
- package/dist/json-error.js +10 -0
- package/dist/json-error.js.map +1 -0
- package/dist/output.js +43 -0
- package/dist/output.js.map +1 -0
- package/dist/scenarios/config.js +228 -0
- package/dist/scenarios/config.js.map +1 -0
- package/dist/scenarios/plan.js +159 -0
- package/dist/scenarios/plan.js.map +1 -0
- package/dist/servers-config/export.js +72 -0
- package/dist/servers-config/export.js.map +1 -0
- package/dist/servers-config/fields.js +172 -0
- package/dist/servers-config/fields.js.map +1 -0
- package/dist/servers-config/forbidden-host.js +75 -0
- package/dist/servers-config/forbidden-host.js.map +1 -0
- package/dist/servers-config/host-pattern.js +6 -0
- package/dist/servers-config/host-pattern.js.map +1 -0
- package/dist/servers-config/parse.js +260 -0
- package/dist/servers-config/parse.js.map +1 -0
- package/dist/servers-config/plan.js +492 -0
- package/dist/servers-config/plan.js.map +1 -0
- package/dist/servers-update.js +157 -0
- package/dist/servers-update.js.map +1 -0
- package/dist/status-page.js +15 -0
- package/dist/status-page.js.map +1 -0
- package/dist/text-length.js +8 -0
- package/dist/text-length.js.map +1 -0
- package/dist/write-failure.js +37 -0
- package/dist/write-failure.js.map +1 -0
- package/package.json +70 -4
package/dist/i18n.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command, CommanderError } from 'commander';
|
|
3
|
+
import { CLI_VERSION } from './client.js';
|
|
4
|
+
import { registerApiCommand } from './commands/api.js';
|
|
5
|
+
import { registerAuthCommands } from './commands/auth.js';
|
|
6
|
+
import { registerCatalogCommands } from './commands/catalog.js';
|
|
7
|
+
import { registerConfigCommands } from './commands/config.js';
|
|
8
|
+
import { registerHeartbeatCommands } from './commands/heartbeat.js';
|
|
9
|
+
import { registerIncidentsCommands } from './commands/incidents.js';
|
|
10
|
+
import { registerReportsCommands } from './commands/reports.js';
|
|
11
|
+
import { registerMaintenanceCommands } from './commands/maintenance.js';
|
|
12
|
+
import { registerScenariosCommands } from './commands/scenarios.js';
|
|
13
|
+
import { registerServersCommands } from './commands/servers.js';
|
|
14
|
+
import { CliError, ExitCode, StatuserApiError } from './errors.js';
|
|
15
|
+
import { localizeCommander } from './commander-i18n.js';
|
|
16
|
+
import { t } from './i18n.js';
|
|
17
|
+
import { printErr } from './output.js';
|
|
18
|
+
const program = new Command()
|
|
19
|
+
.name('statuser')
|
|
20
|
+
.description(t.programDescription)
|
|
21
|
+
.version(CLI_VERSION, '-V, --version', t.versionOption)
|
|
22
|
+
.option('--json', t.optJson)
|
|
23
|
+
.option('--api-url <url>', t.optApiUrl)
|
|
24
|
+
.option('--debug', t.optDebug)
|
|
25
|
+
.showHelpAfterError()
|
|
26
|
+
.exitOverride();
|
|
27
|
+
localizeCommander(program);
|
|
28
|
+
registerAuthCommands(program);
|
|
29
|
+
registerApiCommand(program);
|
|
30
|
+
registerServersCommands(program);
|
|
31
|
+
registerCatalogCommands(program);
|
|
32
|
+
registerMaintenanceCommands(program);
|
|
33
|
+
registerScenariosCommands(program);
|
|
34
|
+
registerConfigCommands(program);
|
|
35
|
+
registerIncidentsCommands(program);
|
|
36
|
+
registerReportsCommands(program);
|
|
37
|
+
registerHeartbeatCommands(program);
|
|
38
|
+
// No top-level await: the standalone binary runs this as CommonJS.
|
|
39
|
+
program.parseAsync(process.argv).catch((error) => {
|
|
40
|
+
process.exitCode = handleError(error);
|
|
41
|
+
});
|
|
42
|
+
function handleError(error) {
|
|
43
|
+
if (error instanceof CommanderError) {
|
|
44
|
+
// Help and version also come through here, with exit code 0.
|
|
45
|
+
return error.exitCode === 0 ? ExitCode.Ok : ExitCode.Usage;
|
|
46
|
+
}
|
|
47
|
+
if (error instanceof StatuserApiError) {
|
|
48
|
+
printErr(error.status === 401 ? t.unauthorized : error.format());
|
|
49
|
+
return error.exitCode;
|
|
50
|
+
}
|
|
51
|
+
if (error instanceof CliError) {
|
|
52
|
+
printErr(error.message);
|
|
53
|
+
return error.exitCode;
|
|
54
|
+
}
|
|
55
|
+
printErr(error instanceof Error ? (error.stack ?? error.message) : String(error));
|
|
56
|
+
return ExitCode.Failure;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a JSON document broke, without quoting it: Node puts a fragment of
|
|
3
|
+
* the input into the SyntaxError message, and the input may be a config or
|
|
4
|
+
* a request body with passwords in it.
|
|
5
|
+
*/
|
|
6
|
+
export function jsonErrorPosition(error) {
|
|
7
|
+
const match = /position (\d+)/.exec(String(error?.message ?? ''));
|
|
8
|
+
return match?.[1] ?? '';
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=json-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-error.js","sourceRoot":"","sources":["../src/json-error.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAE,KAAe,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7E,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1B,CAAC"}
|
package/dist/output.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { t } from './i18n.js';
|
|
2
|
+
export function printJson(value) {
|
|
3
|
+
process.stdout.write(`${JSON.stringify(value, null, 2)}\n`);
|
|
4
|
+
}
|
|
5
|
+
export function printLine(line = '') {
|
|
6
|
+
process.stdout.write(`${line}\n`);
|
|
7
|
+
}
|
|
8
|
+
/** Progress and diagnostics go to stderr so `--json` stdout stays parseable. */
|
|
9
|
+
export function printErr(line) {
|
|
10
|
+
process.stderr.write(`${line}\n`);
|
|
11
|
+
}
|
|
12
|
+
export function printTable(headers, rows) {
|
|
13
|
+
const cells = rows.map((row) => row.map((cell) => cleanCell(cell)));
|
|
14
|
+
const widths = headers.map((header, i) => Math.max(header.length, ...cells.map((row) => row[i]?.length ?? 0)));
|
|
15
|
+
const format = (row) => row
|
|
16
|
+
.map((cell, i) => cell.padEnd(widths[i] ?? 0))
|
|
17
|
+
.join(' ')
|
|
18
|
+
.trimEnd();
|
|
19
|
+
printLine(format(headers));
|
|
20
|
+
for (const row of cells)
|
|
21
|
+
printLine(format(row));
|
|
22
|
+
}
|
|
23
|
+
/** Names are free text: a newline in one would break the table. */
|
|
24
|
+
function cleanCell(cell) {
|
|
25
|
+
if (cell === null || cell === undefined)
|
|
26
|
+
return '';
|
|
27
|
+
return String(cell).replace(/\s+/g, ' ');
|
|
28
|
+
}
|
|
29
|
+
const pad = (n) => String(n).padStart(2, '0');
|
|
30
|
+
/** Local time without seconds: a table cell, not a log timestamp. */
|
|
31
|
+
export function formatTime(iso) {
|
|
32
|
+
const d = new Date(iso);
|
|
33
|
+
if (Number.isNaN(d.getTime()))
|
|
34
|
+
return iso;
|
|
35
|
+
return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}`;
|
|
36
|
+
}
|
|
37
|
+
/** From start to end, or to now while still going. */
|
|
38
|
+
export function formatDuration(startIso, endIso, now = Date.now()) {
|
|
39
|
+
const end = endIso ? Date.parse(endIso) : now;
|
|
40
|
+
const minutes = Math.max(0, Math.round((end - Date.parse(startIso)) / 60_000));
|
|
41
|
+
return t.duration(Math.floor(minutes / 1440), Math.floor((minutes % 1440) / 60), minutes % 60);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { dirname, resolve } from 'node:path';
|
|
3
|
+
import { CliError, ExitCode } from '../errors.js';
|
|
4
|
+
import { t } from '../i18n.js';
|
|
5
|
+
import { jsonErrorPosition } from '../json-error.js';
|
|
6
|
+
import { textLength } from '../text-length.js';
|
|
7
|
+
// Mirrors the backend limits (`scenario.constants.ts`, `LocationCode`): the
|
|
8
|
+
// whole config is checked before the first write, so a typo in the fifth
|
|
9
|
+
// scenario does not leave the first four applied.
|
|
10
|
+
export const SCENARIO_TIMEOUTS = [15, 30, 45, 60, 120];
|
|
11
|
+
export const SCENARIO_LOCATIONS = [
|
|
12
|
+
'msk-1',
|
|
13
|
+
'spb-1',
|
|
14
|
+
'ala-1',
|
|
15
|
+
'nyc-1',
|
|
16
|
+
'ams-1',
|
|
17
|
+
];
|
|
18
|
+
// Hand-copied lists are pinned to the spec: a value the API adds or drops
|
|
19
|
+
// fails `tsc` on the next spec sync instead of silently falling behind.
|
|
20
|
+
const _timeoutsMatchApi = true;
|
|
21
|
+
const _locationsMatchApi = true;
|
|
22
|
+
void _timeoutsMatchApi;
|
|
23
|
+
void _locationsMatchApi;
|
|
24
|
+
export const SCENARIO_MIN_INTERVAL = 60;
|
|
25
|
+
export const SCENARIO_MAX_INTERVAL = 86_400;
|
|
26
|
+
export const SCENARIO_DEFAULT_TIMEOUT = 30;
|
|
27
|
+
export const SCENARIO_DEFAULT_INTERVAL = 300;
|
|
28
|
+
export const SCENARIO_DEFAULT_LOCATION = 'msk-1';
|
|
29
|
+
export const SCENARIO_SCRIPT_MAX_BYTES = 64 * 1024;
|
|
30
|
+
// `MaxLength` of a server name in the API.
|
|
31
|
+
const SCENARIO_NAME_MAX = 150;
|
|
32
|
+
// Same check as `assertScenarioScript` in the backend.
|
|
33
|
+
export const SCENARIO_HAS_TEST = /\btest(?:\.\w+)?\s*\(/;
|
|
34
|
+
const ENV_MAX_VARS = 20;
|
|
35
|
+
const ENV_VALUE_MAX_BYTES = 4 * 1024;
|
|
36
|
+
const ENV_NAME = /^[A-Z_][A-Z0-9_]{0,63}$/;
|
|
37
|
+
// Names the sandbox sets itself or that Node and Playwright read.
|
|
38
|
+
const ENV_RESERVED_PREFIXES = [
|
|
39
|
+
'PLAYWRIGHT_',
|
|
40
|
+
'PW_',
|
|
41
|
+
'PWTEST_',
|
|
42
|
+
'PWDEBUG',
|
|
43
|
+
'DEBUG',
|
|
44
|
+
'NODE_',
|
|
45
|
+
'LD_',
|
|
46
|
+
'STATUSER_',
|
|
47
|
+
];
|
|
48
|
+
const ENV_RESERVED_NAMES = [
|
|
49
|
+
'PATH',
|
|
50
|
+
'HOME',
|
|
51
|
+
'TMPDIR',
|
|
52
|
+
'CI',
|
|
53
|
+
'FORCE_COLOR',
|
|
54
|
+
'HTTP_PROXY',
|
|
55
|
+
'HTTPS_PROXY',
|
|
56
|
+
'NO_PROXY',
|
|
57
|
+
'ALL_PROXY',
|
|
58
|
+
];
|
|
59
|
+
const ENV_REFERENCE = /^\$(?:\{([A-Za-z_][A-Za-z0-9_]*)\}|([A-Za-z_][A-Za-z0-9_]*))$/;
|
|
60
|
+
export async function loadScenarioConfig(path, env = process.env,
|
|
61
|
+
// `scenarios deploy` needs the section; `apply` leaves scenarios alone
|
|
62
|
+
// when the file has none.
|
|
63
|
+
options = { required: true }) {
|
|
64
|
+
let text;
|
|
65
|
+
try {
|
|
66
|
+
text = await readFile(path, 'utf8');
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
throw new CliError(t.configNotFound(path), ExitCode.Usage);
|
|
70
|
+
}
|
|
71
|
+
const fail = (problem) => {
|
|
72
|
+
throw new CliError(t.configInvalid(path, problem), ExitCode.Usage);
|
|
73
|
+
};
|
|
74
|
+
let raw;
|
|
75
|
+
try {
|
|
76
|
+
raw = JSON.parse(text);
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
return fail(t.cfgJson(jsonErrorPosition(error)));
|
|
80
|
+
}
|
|
81
|
+
if (!isObject(raw))
|
|
82
|
+
return fail(t.cfgObject);
|
|
83
|
+
if (!isPositiveInt(raw.project_id)) {
|
|
84
|
+
return fail(`project_id: ${t.cfgPositiveInt}`);
|
|
85
|
+
}
|
|
86
|
+
// Without `required`, a missing or empty section means "do not manage".
|
|
87
|
+
if (!options.required &&
|
|
88
|
+
(raw.scenarios === undefined ||
|
|
89
|
+
(Array.isArray(raw.scenarios) && !raw.scenarios.length))) {
|
|
90
|
+
return { projectId: raw.project_id, scenarios: [] };
|
|
91
|
+
}
|
|
92
|
+
if (!Array.isArray(raw.scenarios) || !raw.scenarios.length) {
|
|
93
|
+
return fail(`scenarios: ${t.cfgNonEmptyArray}`);
|
|
94
|
+
}
|
|
95
|
+
const baseDir = dirname(resolve(path));
|
|
96
|
+
const names = new Set();
|
|
97
|
+
const scenarios = [];
|
|
98
|
+
for (const [index, item] of raw.scenarios.entries()) {
|
|
99
|
+
const at = `scenarios[${index}]`;
|
|
100
|
+
if (!isObject(item))
|
|
101
|
+
return fail(`${at}: ${t.cfgObject}`);
|
|
102
|
+
const name = typeof item.name === 'string' ? item.name.trim() : '';
|
|
103
|
+
if (!name)
|
|
104
|
+
return fail(`${at}.name: ${t.cfgRequired}`);
|
|
105
|
+
if (textLength(name) > SCENARIO_NAME_MAX) {
|
|
106
|
+
return fail(`${at}.name: ${t.cfgMaxLength(SCENARIO_NAME_MAX)}`);
|
|
107
|
+
}
|
|
108
|
+
if (names.has(name))
|
|
109
|
+
return fail(`${at}.name: ${t.cfgDuplicate(name)}`);
|
|
110
|
+
names.add(name);
|
|
111
|
+
if (item.id !== undefined && !isPositiveInt(item.id)) {
|
|
112
|
+
return fail(`${at}.id: ${t.cfgPositiveInt}`);
|
|
113
|
+
}
|
|
114
|
+
if (typeof item.file !== 'string' || !item.file) {
|
|
115
|
+
return fail(`${at}.file: ${t.cfgRequired}`);
|
|
116
|
+
}
|
|
117
|
+
const timeout = item.timeout ?? SCENARIO_DEFAULT_TIMEOUT;
|
|
118
|
+
if (!SCENARIO_TIMEOUTS.includes(timeout)) {
|
|
119
|
+
return fail(`${at}.timeout: ${t.cfgOneOf(SCENARIO_TIMEOUTS.join(', '))}`);
|
|
120
|
+
}
|
|
121
|
+
const interval = item.interval ?? SCENARIO_DEFAULT_INTERVAL;
|
|
122
|
+
if (!Number.isInteger(interval) ||
|
|
123
|
+
interval < SCENARIO_MIN_INTERVAL ||
|
|
124
|
+
interval > SCENARIO_MAX_INTERVAL) {
|
|
125
|
+
return fail(`${at}.interval: ${t.cfgRange(SCENARIO_MIN_INTERVAL, SCENARIO_MAX_INTERVAL)}`);
|
|
126
|
+
}
|
|
127
|
+
if (interval < timeout) {
|
|
128
|
+
return fail(`${at}.interval: ${t.cfgIntervalBelowTimeout}`);
|
|
129
|
+
}
|
|
130
|
+
const location = item.location ?? SCENARIO_DEFAULT_LOCATION;
|
|
131
|
+
if (!SCENARIO_LOCATIONS.includes(location)) {
|
|
132
|
+
return fail(`${at}.location: ${t.cfgOneOf(SCENARIO_LOCATIONS.join(', '))}`);
|
|
133
|
+
}
|
|
134
|
+
const file = resolve(baseDir, item.file);
|
|
135
|
+
let script;
|
|
136
|
+
try {
|
|
137
|
+
script = await readFile(file, 'utf8');
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
return fail(`${at}.file: ${t.cfgCannotRead(item.file)}`);
|
|
141
|
+
}
|
|
142
|
+
if (!script.trim())
|
|
143
|
+
return fail(`${at}.file: ${t.cfgFileEmpty(item.file)}`);
|
|
144
|
+
if (Buffer.byteLength(script, 'utf8') > SCENARIO_SCRIPT_MAX_BYTES) {
|
|
145
|
+
return fail(`${at}.file: ${t.cfgFileTooLarge}`);
|
|
146
|
+
}
|
|
147
|
+
// The backend rejects a script without any test(): the runner would
|
|
148
|
+
// report zero tests and the monitor stay green checking nothing.
|
|
149
|
+
if (!SCENARIO_HAS_TEST.test(script)) {
|
|
150
|
+
return fail(`${at}.file: ${t.cfgNoTest(item.file)}`);
|
|
151
|
+
}
|
|
152
|
+
let resolvedEnv;
|
|
153
|
+
if (item.env !== undefined) {
|
|
154
|
+
if (!isObject(item.env))
|
|
155
|
+
return fail(`${at}.env: ${t.cfgObject}`);
|
|
156
|
+
// No prototype: `__proto__` from the file must stay a key and fail the
|
|
157
|
+
// name check, not vanish — an empty env deletes every saved variable.
|
|
158
|
+
resolvedEnv = Object.create(null);
|
|
159
|
+
for (const [key, value] of Object.entries(item.env)) {
|
|
160
|
+
if (typeof value !== 'string') {
|
|
161
|
+
return fail(`${at}.env.${key}: ${t.cfgString}`);
|
|
162
|
+
}
|
|
163
|
+
resolvedEnv[key] = resolveEnvValue(value, name, env);
|
|
164
|
+
}
|
|
165
|
+
const problem = scenarioEnvProblem(resolvedEnv);
|
|
166
|
+
if (problem)
|
|
167
|
+
return fail(`${at}.env: ${problem}`);
|
|
168
|
+
}
|
|
169
|
+
scenarios.push({
|
|
170
|
+
id: item.id,
|
|
171
|
+
name,
|
|
172
|
+
file: item.file,
|
|
173
|
+
script,
|
|
174
|
+
interval: interval,
|
|
175
|
+
timeout: timeout,
|
|
176
|
+
location: location,
|
|
177
|
+
env: resolvedEnv,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
return { projectId: raw.project_id, scenarios };
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* The backend rules for scenario variables (`mergeScenarioEnv`). Checked
|
|
184
|
+
* before any write: a rejected name mid-deploy would leave earlier scenarios
|
|
185
|
+
* applied. Returns the problem or null.
|
|
186
|
+
*/
|
|
187
|
+
export function scenarioEnvProblem(env) {
|
|
188
|
+
const names = Object.keys(env);
|
|
189
|
+
if (names.length > ENV_MAX_VARS) {
|
|
190
|
+
return t.cfgEnvTooMany(ENV_MAX_VARS);
|
|
191
|
+
}
|
|
192
|
+
for (const name of names) {
|
|
193
|
+
if (!ENV_NAME.test(name) ||
|
|
194
|
+
ENV_RESERVED_NAMES.includes(name) ||
|
|
195
|
+
ENV_RESERVED_PREFIXES.some((prefix) => name.startsWith(prefix))) {
|
|
196
|
+
return t.cfgEnvName(name);
|
|
197
|
+
}
|
|
198
|
+
if (Buffer.byteLength(env[name], 'utf8') > ENV_VALUE_MAX_BYTES) {
|
|
199
|
+
return t.cfgEnvValue(name);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* `"$NAME"` / `"${NAME}"` reads the CI environment; `"$$…"` is a literal
|
|
206
|
+
* value starting with `$`; anything else is a
|
|
207
|
+
* literal. Secrets belong in CI variables, not in the committed config.
|
|
208
|
+
*/
|
|
209
|
+
export function resolveEnvValue(value, scenario, env) {
|
|
210
|
+
if (value.startsWith('$$'))
|
|
211
|
+
return value.slice(1);
|
|
212
|
+
const match = ENV_REFERENCE.exec(value);
|
|
213
|
+
if (!match)
|
|
214
|
+
return value;
|
|
215
|
+
const name = (match[1] ?? match[2]);
|
|
216
|
+
const resolved = env[name];
|
|
217
|
+
if (resolved === undefined) {
|
|
218
|
+
throw new CliError(t.envMissing(name, scenario), ExitCode.Usage);
|
|
219
|
+
}
|
|
220
|
+
return resolved;
|
|
221
|
+
}
|
|
222
|
+
function isObject(value) {
|
|
223
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
224
|
+
}
|
|
225
|
+
function isPositiveInt(value) {
|
|
226
|
+
return Number.isInteger(value) && value > 0;
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/scenarios/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { CliError, ExitCode } from '../errors.js';
|
|
2
|
+
import { t } from '../i18n.js';
|
|
3
|
+
/**
|
|
4
|
+
* Pure: compares the config with the account's scenario servers. Every
|
|
5
|
+
* conflict the API would reject mid-way is raised here, before any write.
|
|
6
|
+
*
|
|
7
|
+
* `servers` must hold ALL scenario servers of the account: the backend
|
|
8
|
+
* rejects a script already used anywhere in the account, not only in the
|
|
9
|
+
* project.
|
|
10
|
+
*/
|
|
11
|
+
export function buildDeployPlan(config, servers) {
|
|
12
|
+
const scenarios = servers.filter((s) => s.protocol === 'scenario');
|
|
13
|
+
const inProject = scenarios.filter((s) => s.project_id === config.projectId);
|
|
14
|
+
const matched = new Map();
|
|
15
|
+
const claimed = new Set();
|
|
16
|
+
for (const scenario of config.scenarios) {
|
|
17
|
+
const server = matchServer(scenario, scenarios, inProject, config.projectId);
|
|
18
|
+
if (server) {
|
|
19
|
+
// Two entries resolved to one server: an id pin plus a name match.
|
|
20
|
+
if (claimed.has(server.id))
|
|
21
|
+
fail(t.deployDuplicateName(scenario.name));
|
|
22
|
+
claimed.add(server.id);
|
|
23
|
+
}
|
|
24
|
+
matched.set(scenario, server);
|
|
25
|
+
}
|
|
26
|
+
// The backend checks the script only when it is set: on a create or a
|
|
27
|
+
// real change. Duplicates saved earlier stay editable, as on the API.
|
|
28
|
+
const writesScript = (scenario) => matched.get(scenario)?.scenario_script !== scenario.script;
|
|
29
|
+
const byScript = new Map();
|
|
30
|
+
for (const scenario of config.scenarios) {
|
|
31
|
+
const other = byScript.get(scenario.script);
|
|
32
|
+
if (other && (writesScript(other) || writesScript(scenario))) {
|
|
33
|
+
fail(t.deployDuplicateScript(other.name, scenario.name));
|
|
34
|
+
}
|
|
35
|
+
byScript.set(scenario.script, scenario);
|
|
36
|
+
}
|
|
37
|
+
// Who holds each script, replayed in execution order (the config's): a
|
|
38
|
+
// script freed by an earlier step may be taken by a later one, as on the
|
|
39
|
+
// API. A swap between two servers still clashes on its first PATCH and is
|
|
40
|
+
// left to two deploys.
|
|
41
|
+
const holders = new Map();
|
|
42
|
+
for (const server of scenarios) {
|
|
43
|
+
const list = holders.get(server.scenario_script ?? '') ?? [];
|
|
44
|
+
list.push(server);
|
|
45
|
+
holders.set(server.scenario_script ?? '', list);
|
|
46
|
+
}
|
|
47
|
+
for (const scenario of config.scenarios) {
|
|
48
|
+
if (!writesScript(scenario))
|
|
49
|
+
continue;
|
|
50
|
+
const own = matched.get(scenario);
|
|
51
|
+
const holder = (holders.get(scenario.script) ?? []).find((s) => s.id !== own?.id);
|
|
52
|
+
if (holder) {
|
|
53
|
+
fail(t.deployScriptTaken(scenario.name, holder.id, holder.project_id));
|
|
54
|
+
}
|
|
55
|
+
if (own) {
|
|
56
|
+
const old = own.scenario_script ?? '';
|
|
57
|
+
holders.set(old, (holders.get(old) ?? []).filter((s) => s.id !== own.id));
|
|
58
|
+
}
|
|
59
|
+
const taker = own ?? { id: -1, project_id: config.projectId };
|
|
60
|
+
holders.set(scenario.script, [
|
|
61
|
+
...(holders.get(scenario.script) ?? []),
|
|
62
|
+
taker,
|
|
63
|
+
]);
|
|
64
|
+
}
|
|
65
|
+
const steps = config.scenarios.map((scenario) => {
|
|
66
|
+
const server = matched.get(scenario);
|
|
67
|
+
if (!server) {
|
|
68
|
+
return {
|
|
69
|
+
kind: 'create',
|
|
70
|
+
scenario,
|
|
71
|
+
body: {
|
|
72
|
+
project_id: config.projectId,
|
|
73
|
+
protocol: 'scenario',
|
|
74
|
+
// The backend replaces it with a system host; any non-empty string.
|
|
75
|
+
host: 'scenario',
|
|
76
|
+
name: scenario.name,
|
|
77
|
+
scenario_script: scenario.script,
|
|
78
|
+
check_interval: scenario.interval,
|
|
79
|
+
request_timeout: scenario.timeout,
|
|
80
|
+
locations: [scenario.location],
|
|
81
|
+
is_follow_redirects: true,
|
|
82
|
+
is_ssl_check: false,
|
|
83
|
+
is_domain_check: false,
|
|
84
|
+
...(scenario.env ? { scenario_env: scenario.env } : {}),
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
return diff(scenario, server);
|
|
89
|
+
});
|
|
90
|
+
const unmanaged = inProject
|
|
91
|
+
.filter((s) => !claimed.has(s.id))
|
|
92
|
+
.map((s) => ({ id: s.id, name: s.name }));
|
|
93
|
+
return { projectId: config.projectId, steps, unmanaged };
|
|
94
|
+
}
|
|
95
|
+
function matchServer(scenario, scenarios, inProject, projectId) {
|
|
96
|
+
if (scenario.id !== undefined) {
|
|
97
|
+
const pinned = scenarios.find((s) => s.id === scenario.id);
|
|
98
|
+
if (!pinned)
|
|
99
|
+
fail(t.deployIdNotFound(scenario.name, scenario.id));
|
|
100
|
+
if (pinned.project_id !== projectId) {
|
|
101
|
+
fail(t.deployIdOtherProject(scenario.name, pinned.id, pinned.project_id));
|
|
102
|
+
}
|
|
103
|
+
return pinned;
|
|
104
|
+
}
|
|
105
|
+
const byName = inProject.filter((s) => s.name === scenario.name);
|
|
106
|
+
if (byName.length > 1)
|
|
107
|
+
fail(t.deployDuplicateName(scenario.name));
|
|
108
|
+
return byName[0];
|
|
109
|
+
}
|
|
110
|
+
function diff(scenario, server) {
|
|
111
|
+
const body = {};
|
|
112
|
+
const fields = [];
|
|
113
|
+
if (server.name !== scenario.name) {
|
|
114
|
+
body.name = scenario.name;
|
|
115
|
+
fields.push('name');
|
|
116
|
+
}
|
|
117
|
+
if (server.scenario_script !== scenario.script) {
|
|
118
|
+
body.scenario_script = scenario.script;
|
|
119
|
+
fields.push('script');
|
|
120
|
+
}
|
|
121
|
+
if (server.check_interval !== scenario.interval) {
|
|
122
|
+
body.check_interval = scenario.interval;
|
|
123
|
+
// Older backends cap a PATCHed interval at an hour unless `protocol` is
|
|
124
|
+
// in the body; sending the unchanged protocol is harmless on newer ones.
|
|
125
|
+
body.protocol = 'scenario';
|
|
126
|
+
fields.push('interval');
|
|
127
|
+
}
|
|
128
|
+
if (server.request_timeout !== scenario.timeout) {
|
|
129
|
+
body.request_timeout = scenario.timeout;
|
|
130
|
+
fields.push('timeout');
|
|
131
|
+
}
|
|
132
|
+
if (server.locations.length !== 1 ||
|
|
133
|
+
server.locations[0] !== scenario.location) {
|
|
134
|
+
body.locations = [scenario.location];
|
|
135
|
+
fields.push('location');
|
|
136
|
+
}
|
|
137
|
+
if (scenario.env) {
|
|
138
|
+
// Values never come back from the API, so a set env is always sent.
|
|
139
|
+
// `scenario_env` is a merge patch: names absent from the config are
|
|
140
|
+
// deleted explicitly with null.
|
|
141
|
+
const patch = { ...scenario.env };
|
|
142
|
+
for (const key of server.scenario_env_keys ?? []) {
|
|
143
|
+
if (!(key in scenario.env))
|
|
144
|
+
patch[key] = null;
|
|
145
|
+
}
|
|
146
|
+
if (Object.keys(patch).length) {
|
|
147
|
+
body.scenario_env = patch;
|
|
148
|
+
fields.push('env');
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
if (!fields.length) {
|
|
152
|
+
return { kind: 'unchanged', scenario, serverId: server.id };
|
|
153
|
+
}
|
|
154
|
+
return { kind: 'update', scenario, serverId: server.id, fields, body };
|
|
155
|
+
}
|
|
156
|
+
function fail(message) {
|
|
157
|
+
throw new CliError(message, ExitCode.Usage);
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/scenarios/plan.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAC;AAkC/B;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAqB,EACrB,OAAyB;IAEzB,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC;IAE7E,MAAM,OAAO,GAAG,IAAI,GAAG,EAA+C,CAAC;IACvE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,WAAW,CACxB,QAAQ,EACR,SAAS,EACT,SAAS,EACT,MAAM,CAAC,SAAS,CACjB,CAAC;QACF,IAAI,MAAM,EAAE,CAAC;YACX,mEAAmE;YACnE,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAAE,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,sEAAsE;IACtE,sEAAsE;IACtE,MAAM,YAAY,GAAG,CAAC,QAAyB,EAAE,EAAE,CACjD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,eAAe,KAAK,QAAQ,CAAC,MAAM,CAAC;IAC7D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IACpD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,uEAAuE;IACvE,yEAAyE;IACzE,0EAA0E;IAC1E,uBAAuB;IACvB,MAAM,OAAO,GAAG,IAAI,GAAG,EAA4B,CAAC;IACpD,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IACD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACxC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;YAAE,SAAS;QACtC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CACtD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,CACxB,CAAC;QACF,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CACT,GAAG,EACH,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CACxD,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GACT,GAAG,IAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,SAAS,EAAqB,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC3B,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACvC,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAe,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,QAAQ;gBACR,IAAI,EAAE;oBACJ,UAAU,EAAE,MAAM,CAAC,SAAS;oBAC5B,QAAQ,EAAE,UAAU;oBACpB,oEAAoE;oBACpE,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,eAAe,EAAE,QAAQ,CAAC,MAAM;oBAChC,cAAc,EAAE,QAAQ,CAAC,QAAQ;oBACjC,eAAe,EAAE,QAAQ,CAAC,OAAO;oBACjC,SAAS,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBAC9B,mBAAmB,EAAE,IAAI;oBACzB,YAAY,EAAE,KAAK;oBACnB,eAAe,EAAE,KAAK;oBACtB,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACxD;aACF,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,SAAS;SACxB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACjC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC3D,CAAC;AAED,SAAS,WAAW,CAClB,QAAyB,EACzB,SAA2B,EAC3B,SAA2B,EAC3B,SAAiB;IAEjB,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,IAAI,CAAC,QAAyB,EAAE,MAAsB;IAC7D,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,MAAM,CAAC,eAAe,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC/C,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,MAAM,CAAC,cAAc,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAChD,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACxC,wEAAwE;QACxE,yEAAyE;QACzE,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,MAAM,CAAC,eAAe,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;QAChD,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC;IACD,IACE,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAC7B,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,QAAQ,EACzC,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;QACjB,oEAAoE;QACpE,oEAAoE;QACpE,gCAAgC;QAChC,MAAM,KAAK,GAAkC,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;QACjE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,iBAAiB,IAAI,EAAE,EAAE,CAAC;YACjD,IAAI,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAChD,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YAC9B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;IAC9D,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACzE,CAAC;AAED,SAAS,IAAI,CAAC,OAAe;IAC3B,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9C,CAAC"}
|