@e2edev/e2e 0.2.0 → 0.4.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/README.md +32 -3
- package/dist/agent/act.d.ts.map +1 -1
- package/dist/agent/act.js +124 -71
- package/dist/agent/act.js.map +1 -1
- package/dist/agent/actions.d.ts +15 -0
- package/dist/agent/actions.d.ts.map +1 -1
- package/dist/agent/actions.js +59 -1
- package/dist/agent/actions.js.map +1 -1
- package/dist/agent/default-agent.d.ts +34 -4
- package/dist/agent/default-agent.d.ts.map +1 -1
- package/dist/agent/default-agent.js +28 -150
- package/dist/agent/default-agent.js.map +1 -1
- package/dist/agent/derived.d.ts +17 -0
- package/dist/agent/derived.d.ts.map +1 -0
- package/dist/agent/derived.js +45 -0
- package/dist/agent/derived.js.map +1 -0
- package/dist/agent/executor.d.ts +122 -2
- package/dist/agent/executor.d.ts.map +1 -1
- package/dist/agent/executor.js.map +1 -1
- package/dist/agent/index.js +1 -1
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/invocation.d.ts +4 -8
- package/dist/agent/invocation.d.ts.map +1 -1
- package/dist/agent/invocation.js +16 -42
- package/dist/agent/invocation.js.map +1 -1
- package/dist/agent/ledger.d.ts +14 -4
- package/dist/agent/ledger.d.ts.map +1 -1
- package/dist/agent/ledger.js +26 -5
- package/dist/agent/ledger.js.map +1 -1
- package/dist/agent/loop-guards.d.ts +14 -1
- package/dist/agent/loop-guards.d.ts.map +1 -1
- package/dist/agent/loop-guards.js +11 -8
- package/dist/agent/loop-guards.js.map +1 -1
- package/dist/agent/observation.d.ts +28 -7
- package/dist/agent/observation.d.ts.map +1 -1
- package/dist/agent/observation.js +52 -5
- package/dist/agent/observation.js.map +1 -1
- package/dist/agent/primitives.d.ts +86 -0
- package/dist/agent/primitives.d.ts.map +1 -0
- package/dist/agent/primitives.js +255 -0
- package/dist/agent/primitives.js.map +1 -0
- package/dist/agent/prompts.d.ts.map +1 -1
- package/dist/agent/prompts.js.map +1 -1
- package/dist/agent/public.d.ts +6 -3
- package/dist/agent/public.d.ts.map +1 -1
- package/dist/agent/public.js +4 -2
- package/dist/agent/public.js.map +1 -1
- package/dist/agent/replay.d.ts +1 -1
- package/dist/agent/replay.d.ts.map +1 -1
- package/dist/agent/replay.js +19 -2
- package/dist/agent/replay.js.map +1 -1
- package/dist/agent/step-cache.d.ts +5 -2
- package/dist/agent/step-cache.d.ts.map +1 -1
- package/dist/agent/step-cache.js +37 -5
- package/dist/agent/step-cache.js.map +1 -1
- package/dist/agent/tool-loop.d.ts +59 -5
- package/dist/agent/tool-loop.d.ts.map +1 -1
- package/dist/agent/tool-loop.js +77 -105
- package/dist/agent/tool-loop.js.map +1 -1
- package/dist/agent/tool.d.ts +11 -16
- package/dist/agent/tool.d.ts.map +1 -1
- package/dist/agent/tool.js +19 -13
- package/dist/agent/tool.js.map +1 -1
- package/dist/agent/usage.d.ts +27 -0
- package/dist/agent/usage.d.ts.map +1 -0
- package/dist/agent/usage.js +54 -0
- package/dist/agent/usage.js.map +1 -0
- package/dist/backend/index.d.ts +72 -6
- package/dist/backend/index.d.ts.map +1 -1
- package/dist/backend/index.js +4 -1
- package/dist/backend/index.js.map +1 -1
- package/dist/backend/session.d.ts.map +1 -1
- package/dist/backend/session.js +1 -0
- package/dist/backend/session.js.map +1 -1
- package/dist/backend/surface.d.ts +2 -0
- package/dist/backend/surface.d.ts.map +1 -1
- package/dist/backend/timing.d.ts +3 -0
- package/dist/backend/timing.d.ts.map +1 -0
- package/dist/backend/timing.js +8 -0
- package/dist/backend/timing.js.map +1 -0
- package/dist/cache/recorder.d.ts +2 -0
- package/dist/cache/recorder.d.ts.map +1 -1
- package/dist/cache/recorder.js +4 -1
- package/dist/cache/recorder.js.map +1 -1
- package/dist/cache/relocate.d.ts.map +1 -1
- package/dist/cache/relocate.js +11 -2
- package/dist/cache/relocate.js.map +1 -1
- package/dist/cache/trace.d.ts +11 -0
- package/dist/cache/trace.d.ts.map +1 -1
- package/dist/cache/trace.js +9 -0
- package/dist/cache/trace.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +32 -22
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/backends.d.ts +75 -0
- package/dist/cli/init/backends.d.ts.map +1 -0
- package/dist/cli/init/backends.js +98 -0
- package/dist/cli/init/backends.js.map +1 -0
- package/dist/cli/init/package.d.ts +43 -0
- package/dist/cli/init/package.d.ts.map +1 -0
- package/dist/cli/init/package.js +64 -0
- package/dist/cli/init/package.js.map +1 -0
- package/dist/cli/init/scaffold.d.ts +12 -0
- package/dist/cli/init/scaffold.d.ts.map +1 -0
- package/dist/cli/init/scaffold.js +36 -0
- package/dist/cli/init/scaffold.js.map +1 -0
- package/dist/cli/init.d.ts +8 -3
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +99 -72
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/signals.d.ts +23 -0
- package/dist/cli/signals.d.ts.map +1 -0
- package/dist/cli/signals.js +42 -0
- package/dist/cli/signals.js.map +1 -0
- package/dist/collect/registry.d.ts +14 -4
- package/dist/collect/registry.d.ts.map +1 -1
- package/dist/collect/registry.js +10 -10
- package/dist/collect/registry.js.map +1 -1
- package/dist/config/app.d.ts +50 -0
- package/dist/config/app.d.ts.map +1 -0
- package/dist/config/app.js +168 -0
- package/dist/config/app.js.map +1 -0
- package/dist/config/esm.d.ts +4 -0
- package/dist/config/esm.d.ts.map +1 -0
- package/dist/config/esm.js +35 -0
- package/dist/config/esm.js.map +1 -0
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +4 -0
- package/dist/config/load.js.map +1 -1
- package/dist/config/resolve.d.ts +6 -16
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +18 -110
- package/dist/config/resolve.js.map +1 -1
- package/dist/config/validate.d.ts +3 -1
- package/dist/config/validate.d.ts.map +1 -1
- package/dist/config/validate.js +17 -1
- package/dist/config/validate.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/errors.d.ts +9 -0
- package/dist/internal/errors.d.ts.map +1 -1
- package/dist/internal/errors.js +15 -0
- package/dist/internal/errors.js.map +1 -1
- package/dist/internal/time.d.ts +10 -0
- package/dist/internal/time.d.ts.map +1 -1
- package/dist/internal/time.js +45 -0
- package/dist/internal/time.js.map +1 -1
- package/dist/internal/urls.d.ts +2 -1
- package/dist/internal/urls.d.ts.map +1 -1
- package/dist/internal/urls.js +22 -2
- package/dist/internal/urls.js.map +1 -1
- package/dist/locator/engine.d.ts +5 -3
- package/dist/locator/engine.d.ts.map +1 -1
- package/dist/locator/engine.js +7 -6
- package/dist/locator/engine.js.map +1 -1
- package/dist/report/build.d.ts +0 -1
- package/dist/report/build.d.ts.map +1 -1
- package/dist/report/build.js +2 -3
- package/dist/report/build.js.map +1 -1
- package/dist/report/junit.d.ts +11 -0
- package/dist/report/junit.d.ts.map +1 -0
- package/dist/report/junit.js +202 -0
- package/dist/report/junit.js.map +1 -0
- package/dist/report/list.d.ts +2 -0
- package/dist/report/list.d.ts.map +1 -1
- package/dist/report/list.js +15 -0
- package/dist/report/list.js.map +1 -1
- package/dist/report/live-status.d.ts.map +1 -1
- package/dist/report/live-status.js +2 -1
- package/dist/report/live-status.js.map +1 -1
- package/dist/report/write.d.ts +2 -0
- package/dist/report/write.d.ts.map +1 -1
- package/dist/report/write.js +7 -3
- package/dist/report/write.js.map +1 -1
- package/dist/run/budget.d.ts +25 -0
- package/dist/run/budget.d.ts.map +1 -0
- package/dist/run/budget.js +38 -0
- package/dist/run/budget.js.map +1 -0
- package/dist/run/events.d.ts +15 -0
- package/dist/run/events.d.ts.map +1 -1
- package/dist/run/events.js.map +1 -1
- package/dist/run/execute.d.ts +8 -0
- package/dist/run/execute.d.ts.map +1 -1
- package/dist/run/execute.js +53 -8
- package/dist/run/execute.js.map +1 -1
- package/dist/run/fixture-legacy.d.ts +36 -0
- package/dist/run/fixture-legacy.d.ts.map +1 -0
- package/dist/run/fixture-legacy.js +143 -0
- package/dist/run/fixture-legacy.js.map +1 -0
- package/dist/run/fixture-recording.d.ts +15 -0
- package/dist/run/fixture-recording.d.ts.map +1 -0
- package/dist/run/fixture-recording.js +75 -0
- package/dist/run/fixture-recording.js.map +1 -0
- package/dist/run/fixtures.d.ts +6 -3
- package/dist/run/fixtures.d.ts.map +1 -1
- package/dist/run/fixtures.js +32 -166
- package/dist/run/fixtures.js.map +1 -1
- package/dist/run/in-process.d.ts.map +1 -1
- package/dist/run/in-process.js +11 -2
- package/dist/run/in-process.js.map +1 -1
- package/dist/run/managed-process.d.ts +49 -0
- package/dist/run/managed-process.d.ts.map +1 -0
- package/dist/run/managed-process.js +202 -0
- package/dist/run/managed-process.js.map +1 -0
- package/dist/run/realm.d.ts +43 -8
- package/dist/run/realm.d.ts.map +1 -1
- package/dist/run/realm.js +67 -24
- package/dist/run/realm.js.map +1 -1
- package/dist/run/runner.d.ts +11 -1
- package/dist/run/runner.d.ts.map +1 -1
- package/dist/run/runner.js +151 -33
- package/dist/run/runner.js.map +1 -1
- package/dist/run/scheduler.d.ts +8 -0
- package/dist/run/scheduler.d.ts.map +1 -1
- package/dist/run/scheduler.js +37 -3
- package/dist/run/scheduler.js.map +1 -1
- package/dist/run/serial.d.ts +2 -0
- package/dist/run/serial.d.ts.map +1 -1
- package/dist/run/serial.js +10 -0
- package/dist/run/serial.js.map +1 -1
- package/dist/run/steps.d.ts +1 -1
- package/dist/run/steps.d.ts.map +1 -1
- package/dist/run/steps.js +12 -9
- package/dist/run/steps.js.map +1 -1
- package/dist/run/worker/entry.js +17 -2
- package/dist/run/worker/entry.js.map +1 -1
- package/dist/run/worker/protocol.d.ts +9 -1
- package/dist/run/worker/protocol.d.ts.map +1 -1
- package/dist/run/worker/protocol.js.map +1 -1
- package/dist/run/worker/session.d.ts +12 -0
- package/dist/run/worker/session.d.ts.map +1 -1
- package/dist/run/worker/session.js +23 -1
- package/dist/run/worker/session.js.map +1 -1
- package/dist/types.d.ts +33 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/run/app-process.d.ts +0 -18
- package/dist/run/app-process.d.ts.map +0 -1
- package/dist/run/app-process.js +0 -112
- package/dist/run/app-process.js.map +0 -1
package/dist/cli/init.js
CHANGED
|
@@ -1,101 +1,128 @@
|
|
|
1
1
|
/** Non-destructive project scaffolding (spec 06-cli.md). */
|
|
2
|
+
import * as clack from '@clack/prompts';
|
|
3
|
+
import { spawnSync } from 'node:child_process';
|
|
2
4
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
3
5
|
import path from 'node:path';
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
export default defineConfig({
|
|
10
|
-
specVersion: '0.1',
|
|
11
|
-
app: {
|
|
12
|
-
url: process.env.APP_URL ?? 'http://localhost:3000',
|
|
13
|
-
},
|
|
14
|
-
// The runner ships no intelligence: you construct the agent and pass it in.
|
|
15
|
-
// createAgent builds the built-in one; its model comes from E2E_MODEL.
|
|
16
|
-
agent: createAgent({
|
|
17
|
-
system: 'You are a thorough QA agent. Verify every outcome on screen.',
|
|
18
|
-
}),
|
|
19
|
-
// The runner knows no platform: a target is served by the backend you pass.
|
|
20
|
-
targets: [{ name: 'web', platform: 'web', backend: playwright({ browser: 'chromium' }) }],
|
|
21
|
-
});
|
|
22
|
-
`;
|
|
23
|
-
const EXAMPLE_TEMPLATE = `import { test } from '@e2edev/playwright';
|
|
24
|
-
import { expect } from '@e2edev/e2e';
|
|
25
|
-
|
|
26
|
-
test('app opens', async ({ app, web }) => {
|
|
27
|
-
await app.open();
|
|
28
|
-
await expect(web).toHaveURL('/');
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
// Runs when E2E_MODEL and E2E_MODEL_API_KEY are set:
|
|
32
|
-
// test('the agent drives a flow', async ({ app, agent }) => {
|
|
33
|
-
// await app.open();
|
|
34
|
-
// await agent.act('one goal in plain language');
|
|
35
|
-
// await agent.assert('one question about the screen');
|
|
36
|
-
// });
|
|
37
|
-
`;
|
|
6
|
+
import { esmPackageHint } from '../config/esm.js';
|
|
7
|
+
import { getBackendPresets, DEFAULT_BACKEND_ID } from './init/backends.js';
|
|
8
|
+
import { addDependencies, detectPackageManager, readPackage, serializePackage } from './init/package.js';
|
|
9
|
+
import { createScaffold } from './init/scaffold.js';
|
|
38
10
|
const GITIGNORE_ENTRIES = [
|
|
11
|
+
'node_modules/',
|
|
39
12
|
'.e2e/artifacts/',
|
|
40
13
|
'.e2e/cache/',
|
|
41
14
|
'.e2e/sessions/',
|
|
42
15
|
'.e2e/report.json',
|
|
43
16
|
'.e2e/ai-trace.json',
|
|
17
|
+
'.e2e/junit.xml',
|
|
44
18
|
];
|
|
45
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* Runs `e2e init`. Every prompt happens before the first write, existing
|
|
21
|
+
* config and test files are never touched, and dependencies install only when
|
|
22
|
+
* the user asks.
|
|
23
|
+
*/
|
|
46
24
|
export async function init(cwd, options = {}) {
|
|
47
25
|
clack.intro('e2e init');
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
26
|
+
let pkg;
|
|
27
|
+
try {
|
|
28
|
+
pkg = readPackage(cwd);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
clack.log.error('invalid package.json; fix it before running e2e init');
|
|
32
|
+
return 2;
|
|
33
|
+
}
|
|
34
|
+
const existingConfig = ['e2e.config.ts', 'e2e.config.mts'].find((file) => existsSync(path.join(cwd, file)));
|
|
35
|
+
const examplePath = path.join('tests', 'example.e2e.ts');
|
|
36
|
+
const exampleExists = existsSync(path.join(cwd, examplePath));
|
|
37
|
+
if (existingConfig !== undefined)
|
|
38
|
+
clack.log.warn(`exists, not touching: ${existingConfig}`);
|
|
39
|
+
if (exampleExists)
|
|
40
|
+
clack.log.warn(`exists, not touching: ${examplePath}`);
|
|
41
|
+
if (pkg.original !== undefined) {
|
|
42
|
+
const hint = esmPackageHint(path.join(cwd, existingConfig ?? 'e2e.config.ts'));
|
|
43
|
+
if (hint !== undefined)
|
|
44
|
+
clack.log.warn(hint);
|
|
57
45
|
}
|
|
58
|
-
// The ignore list is reconciled on every run, not only the first: a project
|
|
59
|
-
// initialized before an entry existed (`.e2e/ai-trace.json`, say) picks it
|
|
60
|
-
// up by re-running init, without touching any scaffold file.
|
|
61
46
|
const gitignorePath = path.join(cwd, '.gitignore');
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
47
|
+
const existingIgnore = existsSync(gitignorePath) ? readFileSync(gitignorePath, 'utf8') : '';
|
|
48
|
+
const ignoreLines = existingIgnore.split(/\r?\n/);
|
|
49
|
+
const missingIgnore = GITIGNORE_ENTRIES.filter((entry) => !ignoreLines.includes(entry));
|
|
50
|
+
// Backend and AI are choices for a new config only; an existing config keeps its own dependencies.
|
|
51
|
+
let backend = DEFAULT_BACKEND_ID;
|
|
52
|
+
let ai = existingConfig === undefined;
|
|
53
|
+
if (existingConfig === undefined && !options.yes) {
|
|
54
|
+
const selectedBackend = await clack.select({
|
|
55
|
+
message: 'Which backend?',
|
|
56
|
+
initialValue: DEFAULT_BACKEND_ID,
|
|
57
|
+
options: getBackendPresets().map(({ id, label, hint }) => ({ value: id, label, hint })),
|
|
58
|
+
});
|
|
59
|
+
if (clack.isCancel(selectedBackend))
|
|
60
|
+
return cancelled();
|
|
61
|
+
backend = selectedBackend;
|
|
62
|
+
const enableAi = await clack.confirm({ message: 'Enable AI testing? Adds AI SDK v7.', initialValue: true });
|
|
63
|
+
if (clack.isCancel(enableAi))
|
|
64
|
+
return cancelled();
|
|
65
|
+
ai = enableAi;
|
|
66
|
+
}
|
|
67
|
+
const scaffold = createScaffold(backend, ai);
|
|
68
|
+
const { manifest, additions } = addDependencies(pkg.manifest, scaffold.dependencies);
|
|
69
|
+
if (additions.length > 0) {
|
|
70
|
+
clack.log.info(`add dev dependencies: ${additions.map(([name, version]) => `${name}@${version}`).join(', ')}`);
|
|
71
|
+
}
|
|
72
|
+
const files = [
|
|
73
|
+
...(pkg.original === undefined || additions.length > 0
|
|
74
|
+
? [{ relative: 'package.json', content: serializePackage(manifest, pkg.original), existing: pkg.original !== undefined }]
|
|
75
|
+
: []),
|
|
76
|
+
...(existingConfig === undefined ? [{ relative: 'e2e.config.ts', content: scaffold.config, existing: false }] : []),
|
|
77
|
+
...(exampleExists ? [] : [{ relative: examplePath, content: scaffold.example, existing: false }]),
|
|
78
|
+
];
|
|
79
|
+
if (files.length === 0 && missingIgnore.length === 0) {
|
|
67
80
|
clack.outro('nothing to create; project already initialized');
|
|
68
81
|
return 0;
|
|
69
82
|
}
|
|
70
|
-
if (options.yes
|
|
83
|
+
if (!options.yes) {
|
|
71
84
|
const actions = [
|
|
72
|
-
...(
|
|
73
|
-
|
|
74
|
-
: [`create ${remaining.map((file) => file.relative).join(', ')}`]),
|
|
75
|
-
...(missing.length === 0 ? [] : ['update .gitignore']),
|
|
85
|
+
...files.map((file) => `${file.existing ? 'update' : 'create'} ${file.relative}`),
|
|
86
|
+
...(missingIgnore.length > 0 ? ['update .gitignore'] : []),
|
|
76
87
|
];
|
|
77
|
-
const proceed = await clack.confirm({ message: `${actions.join('
|
|
78
|
-
if (clack.isCancel(proceed) || proceed
|
|
79
|
-
|
|
80
|
-
return 0;
|
|
81
|
-
}
|
|
88
|
+
const proceed = await clack.confirm({ message: `${actions.join(', ')}?` });
|
|
89
|
+
if (clack.isCancel(proceed) || !proceed)
|
|
90
|
+
return cancelled();
|
|
82
91
|
}
|
|
83
|
-
|
|
92
|
+
const manager = detectPackageManager(cwd, manifest);
|
|
93
|
+
let install = false;
|
|
94
|
+
if (!options.yes) {
|
|
95
|
+
const selected = await clack.confirm({ message: `Install dependencies with ${manager}?`, initialValue: true });
|
|
96
|
+
if (clack.isCancel(selected))
|
|
97
|
+
return cancelled();
|
|
98
|
+
install = selected;
|
|
99
|
+
}
|
|
100
|
+
for (const file of files) {
|
|
84
101
|
const absolute = path.join(cwd, file.relative);
|
|
85
102
|
mkdirSync(path.dirname(absolute), { recursive: true });
|
|
86
103
|
writeFileSync(absolute, file.content, 'utf8');
|
|
87
|
-
clack.log.success(
|
|
104
|
+
clack.log.success(`${file.existing ? 'updated' : 'created'} ${file.relative}`);
|
|
88
105
|
}
|
|
89
|
-
if (
|
|
90
|
-
const prefix =
|
|
91
|
-
writeFileSync(gitignorePath, `${
|
|
92
|
-
clack.log.success(`updated .gitignore (${
|
|
106
|
+
if (missingIgnore.length > 0) {
|
|
107
|
+
const prefix = existingIgnore === '' || existingIgnore.endsWith('\n') ? '' : '\n';
|
|
108
|
+
writeFileSync(gitignorePath, `${existingIgnore}${prefix}${missingIgnore.join('\n')}\n`, 'utf8');
|
|
109
|
+
clack.log.success(`updated .gitignore (${missingIgnore.length} entries)`);
|
|
93
110
|
}
|
|
94
|
-
if (
|
|
95
|
-
|
|
96
|
-
|
|
111
|
+
if (install) {
|
|
112
|
+
const result = spawnSync(manager, ['install'], { cwd, stdio: 'inherit', shell: process.platform === 'win32' });
|
|
113
|
+
if (result.error !== undefined || result.status !== 0) {
|
|
114
|
+
const reason = result.error?.message ?? `exit ${result.status ?? result.signal}`;
|
|
115
|
+
clack.log.error(`installation failed (${reason}); retry with ${manager} install`);
|
|
116
|
+
clack.outro('scaffold saved');
|
|
117
|
+
return result.signal === 'SIGINT' ? 130 : 2;
|
|
118
|
+
}
|
|
97
119
|
}
|
|
98
|
-
clack.outro(
|
|
120
|
+
clack.outro(`next: ${install ? '' : `${manager} install, then `}${scaffold.runCommand}`);
|
|
121
|
+
return 0;
|
|
122
|
+
}
|
|
123
|
+
/** Cancellation is only reachable before the first write, so nothing needs undoing. */
|
|
124
|
+
function cancelled() {
|
|
125
|
+
clack.cancel('cancelled; no changes were made');
|
|
99
126
|
return 0;
|
|
100
127
|
}
|
|
101
128
|
//# sourceMappingURL=init.js.map
|
package/dist/cli/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAE5D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What Ctrl-C means to the CLI, press by press. The runner installs no
|
|
3
|
+
* process handlers and never exits the process — a host embedding it passes
|
|
4
|
+
* its own signals — so process termination is owned here, by the one caller
|
|
5
|
+
* that is the process.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* The escalation ladder behind SIGINT and SIGTERM. The next rung is the first
|
|
9
|
+
* one not yet reached, so the state is the signals themselves: the first
|
|
10
|
+
* signal interrupts, the second forces, the third exits on the spot — the
|
|
11
|
+
* last resort for a teardown that is itself stuck.
|
|
12
|
+
*/
|
|
13
|
+
export declare class SignalLadder {
|
|
14
|
+
private readonly graceful;
|
|
15
|
+
private readonly forced;
|
|
16
|
+
/** Aborts on the first signal: the run interrupts and tears down. */
|
|
17
|
+
get interruptSignal(): AbortSignal;
|
|
18
|
+
/** Aborts on the second signal: every worker tears its backend down at once. */
|
|
19
|
+
get forceSignal(): AbortSignal;
|
|
20
|
+
/** Installs the process handlers; returns their removal. */
|
|
21
|
+
arm(exit?: (code: number) => void): () => void;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=signals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../src/cli/signals.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAEhD,qEAAqE;IACrE,IAAI,eAAe,IAAI,WAAW,CAEjC;IAED,gFAAgF;IAChF,IAAI,WAAW,IAAI,WAAW,CAE7B;IAED,4DAA4D;IAC5D,GAAG,CAAC,IAAI,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAmC,GAAG,MAAM,IAAI,CAY3E;CACF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What Ctrl-C means to the CLI, press by press. The runner installs no
|
|
3
|
+
* process handlers and never exits the process — a host embedding it passes
|
|
4
|
+
* its own signals — so process termination is owned here, by the one caller
|
|
5
|
+
* that is the process.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* The escalation ladder behind SIGINT and SIGTERM. The next rung is the first
|
|
9
|
+
* one not yet reached, so the state is the signals themselves: the first
|
|
10
|
+
* signal interrupts, the second forces, the third exits on the spot — the
|
|
11
|
+
* last resort for a teardown that is itself stuck.
|
|
12
|
+
*/
|
|
13
|
+
export class SignalLadder {
|
|
14
|
+
graceful = new AbortController();
|
|
15
|
+
forced = new AbortController();
|
|
16
|
+
/** Aborts on the first signal: the run interrupts and tears down. */
|
|
17
|
+
get interruptSignal() {
|
|
18
|
+
return this.graceful.signal;
|
|
19
|
+
}
|
|
20
|
+
/** Aborts on the second signal: every worker tears its backend down at once. */
|
|
21
|
+
get forceSignal() {
|
|
22
|
+
return this.forced.signal;
|
|
23
|
+
}
|
|
24
|
+
/** Installs the process handlers; returns their removal. */
|
|
25
|
+
arm(exit = (code) => process.exit(code)) {
|
|
26
|
+
const escalate = () => {
|
|
27
|
+
if (!this.graceful.signal.aborted)
|
|
28
|
+
this.graceful.abort();
|
|
29
|
+
else if (!this.forced.signal.aborted)
|
|
30
|
+
this.forced.abort();
|
|
31
|
+
else
|
|
32
|
+
exit(130);
|
|
33
|
+
};
|
|
34
|
+
process.on('SIGINT', escalate);
|
|
35
|
+
process.on('SIGTERM', escalate);
|
|
36
|
+
return () => {
|
|
37
|
+
process.removeListener('SIGINT', escalate);
|
|
38
|
+
process.removeListener('SIGTERM', escalate);
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=signals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signals.js","sourceRoot":"","sources":["../../src/cli/signals.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;GAKG;AACH,MAAM,OAAO,YAAY;IACN,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACjC,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IAEhD,qEAAqE;IACrE,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,gFAAgF;IAChF,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED,4DAA4D;IAC5D,GAAG,CAAC,IAAI,GAA2B,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7D,MAAM,QAAQ,GAAG,GAAS,EAAE;YAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO;gBAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;iBACpD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO;gBAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;;gBACrD,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC;QACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAChC,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC3C,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -24,13 +24,22 @@ export interface RegisteredTest {
|
|
|
24
24
|
readonly mode: TestMode;
|
|
25
25
|
readonly source: SourceLocation | undefined;
|
|
26
26
|
}
|
|
27
|
-
|
|
28
|
-
export interface RegisteredHook {
|
|
29
|
-
readonly kind: HookKind;
|
|
30
|
-
readonly fn: TestHookFn | SuiteHookFn;
|
|
27
|
+
interface HookBase {
|
|
31
28
|
readonly group: GroupNode | undefined;
|
|
32
29
|
readonly declarationIndex: number;
|
|
33
30
|
}
|
|
31
|
+
/** A per-test hook: runs with the attempt's fixtures. */
|
|
32
|
+
export interface TestHook extends HookBase {
|
|
33
|
+
readonly kind: 'beforeEach' | 'afterEach';
|
|
34
|
+
readonly fn: TestHookFn;
|
|
35
|
+
}
|
|
36
|
+
/** A suite hook: runs once per scope instance with suite fixtures only. */
|
|
37
|
+
export interface SuiteHook extends HookBase {
|
|
38
|
+
readonly kind: 'beforeAll' | 'afterAll';
|
|
39
|
+
readonly fn: SuiteHookFn;
|
|
40
|
+
}
|
|
41
|
+
export type RegisteredHook = TestHook | SuiteHook;
|
|
42
|
+
export type HookKind = RegisteredHook['kind'];
|
|
34
43
|
export interface ModuleRegistration {
|
|
35
44
|
readonly tests: readonly RegisteredTest[];
|
|
36
45
|
readonly hooks: readonly RegisteredHook[];
|
|
@@ -44,4 +53,5 @@ export declare function outermostSerialGroup(group: GroupNode | undefined): Grou
|
|
|
44
53
|
/** Runs `load` with a fresh collector active and returns everything it registered. */
|
|
45
54
|
export declare function collectModule(load: () => Promise<unknown>): Promise<ModuleRegistration>;
|
|
46
55
|
export declare const test: TestAPI;
|
|
56
|
+
export {};
|
|
47
57
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/collect/registry.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAQhF,OAAO,KAAK,EACV,eAAe,EACf,OAAO,EAEP,WAAW,EACX,OAAO,EAEP,MAAM,EACN,UAAU,EACV,WAAW,EACZ,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;CAC7C;AAED,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/collect/registry.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAQhF,OAAO,KAAK,EACV,eAAe,EACf,OAAO,EAEP,WAAW,EACX,OAAO,EAEP,MAAM,EACN,UAAU,EACV,WAAW,EACZ,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;CAC7C;AAED,UAAU,QAAQ;IAChB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,yDAAyD;AACzD,MAAM,WAAW,QAAS,SAAQ,QAAQ;IACxC,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,WAAW,CAAC;IAC1C,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC;CACzB;AAED,2EAA2E;AAC3E,MAAM,WAAW,SAAU,SAAQ,QAAQ;IACzC,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC;IACxC,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;CAC1B;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;AAClD,MAAM,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AAG9C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;CAC3C;AA0HD,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,EAAE,CAMpE;AAED,qDAAqD;AACrD,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,EAAE,CAElE;AAED,iEAAiE;AACjE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAExF;AAqDD,sFAAsF;AACtF,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAY7F;AAkDD,eAAO,MAAM,IAAI,EAAE,OAyCN,CAAC"}
|
package/dist/collect/registry.js
CHANGED
|
@@ -89,13 +89,13 @@ class Collector {
|
|
|
89
89
|
this.currentGroup = previous;
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
|
-
registerHook(
|
|
93
|
-
this.assertOpen(`test.${kind}()`);
|
|
94
|
-
if (typeof fn !== 'function')
|
|
95
|
-
throw new CollectionError(`${kind} hook must be a function`);
|
|
92
|
+
registerHook(hook) {
|
|
93
|
+
this.assertOpen(`test.${hook.kind}()`);
|
|
94
|
+
if (typeof hook.fn !== 'function') {
|
|
95
|
+
throw new CollectionError(`${hook.kind} hook must be a function`);
|
|
96
|
+
}
|
|
96
97
|
this.hooks.push({
|
|
97
|
-
|
|
98
|
-
fn,
|
|
98
|
+
...hook,
|
|
99
99
|
group: this.currentGroup,
|
|
100
100
|
declarationIndex: this.declarationCounter,
|
|
101
101
|
});
|
|
@@ -242,16 +242,16 @@ export const test = Object.assign(testFunction, {
|
|
|
242
242
|
requireCollector('test.describe()').registerDescribe(title, options, body);
|
|
243
243
|
},
|
|
244
244
|
beforeEach(fn) {
|
|
245
|
-
requireCollector('test.beforeEach()').registerHook('beforeEach', fn);
|
|
245
|
+
requireCollector('test.beforeEach()').registerHook({ kind: 'beforeEach', fn });
|
|
246
246
|
},
|
|
247
247
|
afterEach(fn) {
|
|
248
|
-
requireCollector('test.afterEach()').registerHook('afterEach', fn);
|
|
248
|
+
requireCollector('test.afterEach()').registerHook({ kind: 'afterEach', fn });
|
|
249
249
|
},
|
|
250
250
|
beforeAll(fn) {
|
|
251
|
-
requireCollector('test.beforeAll()').registerHook('beforeAll', fn);
|
|
251
|
+
requireCollector('test.beforeAll()').registerHook({ kind: 'beforeAll', fn });
|
|
252
252
|
},
|
|
253
253
|
afterAll(fn) {
|
|
254
|
-
requireCollector('test.afterAll()').registerHook('afterAll', fn);
|
|
254
|
+
requireCollector('test.afterAll()').registerHook({ kind: 'afterAll', fn });
|
|
255
255
|
},
|
|
256
256
|
// Type-only refinement: contributed fixtures are resolved from the backend
|
|
257
257
|
// at runtime, so the same test object serves every fixture shape.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/collect/registry.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/collect/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/** App, command, and service resolution (spec 05-config.md). */
|
|
2
|
+
import { type NormalizedBaseUrl } from '../internal/urls.ts';
|
|
3
|
+
import type { AppConfig, CommandConfig, E2EConfig } from '../types.ts';
|
|
4
|
+
/**
|
|
5
|
+
* How a spawned process counts as ready: a URL that answers, or the process
|
|
6
|
+
* itself exiting with code 0 (a migration, `docker compose up --wait`).
|
|
7
|
+
*/
|
|
8
|
+
export type Readiness = {
|
|
9
|
+
readonly readyUrl: string;
|
|
10
|
+
} | {
|
|
11
|
+
readonly waitForExit: true;
|
|
12
|
+
};
|
|
13
|
+
/** A command the runner spawns, named for error messages. */
|
|
14
|
+
export interface ResolvedCommand {
|
|
15
|
+
readonly label: string;
|
|
16
|
+
readonly command: CommandConfig;
|
|
17
|
+
}
|
|
18
|
+
/** One `app.services` entry with its readiness contract already decided. */
|
|
19
|
+
export interface ResolvedService extends ResolvedCommand {
|
|
20
|
+
readonly readiness: Readiness;
|
|
21
|
+
readonly teardown: ResolvedCommand | undefined;
|
|
22
|
+
}
|
|
23
|
+
export interface ResolvedApp {
|
|
24
|
+
/** False when no app URL was configured and `base` is a synthetic loopback placeholder. */
|
|
25
|
+
readonly configured: boolean;
|
|
26
|
+
readonly base: NormalizedBaseUrl;
|
|
27
|
+
readonly readyUrl: string;
|
|
28
|
+
readonly allowedOrigins: readonly string[];
|
|
29
|
+
readonly environment: 'test' | 'staging' | 'production';
|
|
30
|
+
readonly command: CommandConfig | undefined;
|
|
31
|
+
/** Dependency processes started in order before `command` and torn down in reverse. */
|
|
32
|
+
readonly services: readonly ResolvedService[];
|
|
33
|
+
/** Stable logical app identity; overrides the origin for cache/session keying. */
|
|
34
|
+
readonly identity: string | undefined;
|
|
35
|
+
}
|
|
36
|
+
export declare function resolveApp(raw: E2EConfig, env: NodeJS.ProcessEnv): ResolvedApp;
|
|
37
|
+
/**
|
|
38
|
+
* Resolves `app.services`: every service is a command with exactly one
|
|
39
|
+
* readiness contract (`readyUrl` or `waitForExit`), and a `teardown` is a
|
|
40
|
+
* command of its own. The service fields that only steer the runner
|
|
41
|
+
* (`readyUrl`, `waitForExit`, `teardown`) are lifted out of the command.
|
|
42
|
+
*/
|
|
43
|
+
export declare function resolveServices(raw: AppConfig['services']): readonly ResolvedService[];
|
|
44
|
+
/**
|
|
45
|
+
* The digest view of `app`: `app.command.env`, every service's env, and every
|
|
46
|
+
* service teardown's env become names, so no environment value contributes to
|
|
47
|
+
* the digest. Live values never appear under `app`, so nothing else changes.
|
|
48
|
+
*/
|
|
49
|
+
export declare function digestApp(app: AppConfig): Record<string, unknown>;
|
|
50
|
+
//# sourceMappingURL=app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/config/app.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAGhE,OAAO,EAAwC,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnG,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAiB,MAAM,aAAa,CAAC;AAGtF;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAA;CAAE,CAAC;AAEvF,6DAA6D;AAC7D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;CACjC;AAED,4EAA4E;AAC5E,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,SAAS,CAAC;CAChD;AAED,MAAM,WAAW,WAAW;IAC1B,2FAA2F;IAC3F,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAAC;IACxD,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,CAAC;IAC5C,uFAAuF;IACvF,QAAQ,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IAC9C,kFAAkF;IAClF,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAeD,wBAAgB,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,WAAW,CAqF9E;AAuBD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,SAAS,eAAe,EAAE,CA6BtF;AAaD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAajE"}
|