my-frontend-observer 0.2.0 → 0.3.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/CHANGELOG.md +50 -0
- package/README.md +24 -10
- package/dist/application/observationPersistence.js +1 -0
- package/dist/application/observationPersistence.js.map +1 -1
- package/dist/browser/chromiumAdapter.js +58 -4
- package/dist/browser/chromiumAdapter.js.map +1 -1
- package/dist/browser/evidenceCapture.d.ts +29 -2
- package/dist/browser/evidenceCapture.js +43 -19
- package/dist/browser/evidenceCapture.js.map +1 -1
- package/dist/browser/scrollCapture.d.ts +32 -0
- package/dist/browser/scrollCapture.js +163 -0
- package/dist/browser/scrollCapture.js.map +1 -0
- package/dist/browser/types.d.ts +3 -1
- package/dist/cli.js +79 -1
- package/dist/cli.js.map +1 -1
- package/dist/domain/identity.d.ts +8 -3
- package/dist/domain/identity.js +9 -3
- package/dist/domain/identity.js.map +1 -1
- package/dist/domain/schema.d.ts +116 -2
- package/dist/domain/schema.js +186 -2
- package/dist/domain/schema.js.map +1 -1
- package/dist/domain/scrollEvidence.d.ts +51 -0
- package/dist/domain/scrollEvidence.js +134 -0
- package/dist/domain/scrollEvidence.js.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/request/request.d.ts +29 -0
- package/dist/request/request.js +108 -0
- package/dist/request/request.js.map +1 -1
- package/docs/ARCHITECTURE.md +35 -2
- package/docs/CI_CD.md +33 -6
- package/docs/COMMANDS.md +110 -6
- package/docs/CONTRACTS.md +77 -4
- package/docs/CURRENT_STATE.md +55 -10
- package/docs/DEVELOPMENT.md +25 -8
- package/docs/PROJECT_OVERVIEW.md +10 -7
- package/docs/QUICKSTART.md +2 -1
- package/docs/RELEASE.md +10 -5
- package/docs/ROADMAP.md +5 -0
- package/docs/SECURITY.md +1 -1
- package/docs/WORKFLOWS.md +36 -18
- package/package.json +1 -1
package/dist/request/request.js
CHANGED
|
@@ -33,6 +33,15 @@ const SUPPORTED_SEMANTIC_ELEMENT_TAGS = new Set([
|
|
|
33
33
|
'dialog',
|
|
34
34
|
]);
|
|
35
35
|
const SUPPORTED_LOCATOR_KINDS = new Set(['role', 'id', 'data-attribute', 'semantic-element', 'css', 'text']);
|
|
36
|
+
const SUPPORTED_SCROLL_ACTION_KINDS = new Set(['window-scroll-by', 'target-scroll-by']);
|
|
37
|
+
/**
|
|
38
|
+
* Conservative bound for a single controlled-observation scroll action. No
|
|
39
|
+
* existing repository precedent for a scroll-delta magnitude; chosen large
|
|
40
|
+
* enough to reach realistic overflow content (documents/containers well
|
|
41
|
+
* beyond one viewport) while staying far short of a pathological/runaway
|
|
42
|
+
* request - see docs/CONTRACTS.md and tests/unit/request.test.ts.
|
|
43
|
+
*/
|
|
44
|
+
export const SCROLL_DELTA_MAX_ABS = 20000;
|
|
36
45
|
function isPlainObject(value) {
|
|
37
46
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
38
47
|
}
|
|
@@ -148,6 +157,93 @@ function validateLocator(raw, targetName, index) {
|
|
|
148
157
|
return { ok: false, diagnostics: [{ code: 'invalid-request', severity: 'error', message: `locator at index ${index} has an unsupported kind`, targetName }] };
|
|
149
158
|
}
|
|
150
159
|
}
|
|
160
|
+
function isFiniteInteger(value) {
|
|
161
|
+
return typeof value === 'number' && Number.isInteger(value);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Validates the optional v0.3 scrollScenario request shape. `configuredTargetNames`
|
|
165
|
+
* is the lowercase set of already-normalized target names so `target-scroll-by`
|
|
166
|
+
* can only reference an existing stable observer target (never a new/implicit
|
|
167
|
+
* one). Total: collects every applicable diagnostic before returning; never
|
|
168
|
+
* throws.
|
|
169
|
+
*/
|
|
170
|
+
function validateScrollScenario(raw, configuredTargetNames) {
|
|
171
|
+
if (!isPlainObject(raw)) {
|
|
172
|
+
return { ok: false, diagnostics: [{ code: 'invalid-request', severity: 'error', message: 'scrollScenario must be an object' }] };
|
|
173
|
+
}
|
|
174
|
+
const extraScenarioKeys = Object.keys(raw).filter((key) => key !== 'action');
|
|
175
|
+
if (extraScenarioKeys.length > 0) {
|
|
176
|
+
return {
|
|
177
|
+
ok: false,
|
|
178
|
+
diagnostics: [{ code: 'invalid-request', severity: 'error', message: `scrollScenario has unsupported field(s): ${extraScenarioKeys.join(', ')}` }],
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
const action = raw.action;
|
|
182
|
+
if (!isPlainObject(action)) {
|
|
183
|
+
return { ok: false, diagnostics: [{ code: 'invalid-request', severity: 'error', message: 'scrollScenario.action must be an object' }] };
|
|
184
|
+
}
|
|
185
|
+
const kind = action.kind;
|
|
186
|
+
if (typeof kind !== 'string' || !SUPPORTED_SCROLL_ACTION_KINDS.has(kind)) {
|
|
187
|
+
return {
|
|
188
|
+
ok: false,
|
|
189
|
+
diagnostics: [
|
|
190
|
+
{ code: 'invalid-request', severity: 'error', message: `scrollScenario.action.kind must be one of ${[...SUPPORTED_SCROLL_ACTION_KINDS].join(', ')}` },
|
|
191
|
+
],
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
const allowedActionKeys = kind === 'target-scroll-by' ? ['kind', 'target', 'deltaX', 'deltaY'] : ['kind', 'deltaX', 'deltaY'];
|
|
195
|
+
const extraActionKeys = Object.keys(action).filter((key) => !allowedActionKeys.includes(key));
|
|
196
|
+
if (extraActionKeys.length > 0) {
|
|
197
|
+
return {
|
|
198
|
+
ok: false,
|
|
199
|
+
diagnostics: [{ code: 'invalid-request', severity: 'error', message: `scrollScenario.action has unsupported field(s): ${extraActionKeys.join(', ')}` }],
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
const deltaDiagnostics = [];
|
|
203
|
+
if (!isFiniteInteger(action.deltaX) || Math.abs(action.deltaX) > SCROLL_DELTA_MAX_ABS) {
|
|
204
|
+
deltaDiagnostics.push({
|
|
205
|
+
code: 'invalid-request',
|
|
206
|
+
severity: 'error',
|
|
207
|
+
message: `scrollScenario.action.deltaX must be an integer in [-${SCROLL_DELTA_MAX_ABS}, ${SCROLL_DELTA_MAX_ABS}]`,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
if (!isFiniteInteger(action.deltaY) || Math.abs(action.deltaY) > SCROLL_DELTA_MAX_ABS) {
|
|
211
|
+
deltaDiagnostics.push({
|
|
212
|
+
code: 'invalid-request',
|
|
213
|
+
severity: 'error',
|
|
214
|
+
message: `scrollScenario.action.deltaY must be an integer in [-${SCROLL_DELTA_MAX_ABS}, ${SCROLL_DELTA_MAX_ABS}]`,
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
if (deltaDiagnostics.length > 0) {
|
|
218
|
+
return { ok: false, diagnostics: deltaDiagnostics };
|
|
219
|
+
}
|
|
220
|
+
const deltaX = action.deltaX;
|
|
221
|
+
const deltaY = action.deltaY;
|
|
222
|
+
if (deltaX === 0 && deltaY === 0) {
|
|
223
|
+
return {
|
|
224
|
+
ok: false,
|
|
225
|
+
diagnostics: [{ code: 'invalid-request', severity: 'error', message: 'scrollScenario.action requires a non-zero deltaX or deltaY' }],
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
if (kind === 'window-scroll-by') {
|
|
229
|
+
return { ok: true, scenario: { action: { kind: 'window-scroll-by', deltaX, deltaY } } };
|
|
230
|
+
}
|
|
231
|
+
if (typeof action.target !== 'string' || action.target.length === 0) {
|
|
232
|
+
return {
|
|
233
|
+
ok: false,
|
|
234
|
+
diagnostics: [{ code: 'invalid-request', severity: 'error', message: 'scrollScenario.action.target is required for target-scroll-by' }],
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
if (!configuredTargetNames.has(action.target.toLowerCase())) {
|
|
238
|
+
return {
|
|
239
|
+
ok: false,
|
|
240
|
+
diagnostics: [
|
|
241
|
+
{ code: 'invalid-request', severity: 'error', message: 'scrollScenario.action.target must reference a configured target', targetName: action.target },
|
|
242
|
+
],
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
return { ok: true, scenario: { action: { kind: 'target-scroll-by', target: action.target, deltaX, deltaY } } };
|
|
246
|
+
}
|
|
151
247
|
/**
|
|
152
248
|
* Total, never throws. Collects every applicable diagnostic before returning
|
|
153
249
|
* (does not short-circuit on the first violation) so callers see every
|
|
@@ -326,6 +422,17 @@ export function normalizeRequest(raw) {
|
|
|
326
422
|
}
|
|
327
423
|
}
|
|
328
424
|
}
|
|
425
|
+
let scrollScenario;
|
|
426
|
+
if (raw.scrollScenario !== undefined) {
|
|
427
|
+
const configuredTargetNames = new Set(targets.map((target) => target.name.toLowerCase()));
|
|
428
|
+
const validated = validateScrollScenario(raw.scrollScenario, configuredTargetNames);
|
|
429
|
+
if (validated.ok) {
|
|
430
|
+
scrollScenario = validated.scenario;
|
|
431
|
+
}
|
|
432
|
+
else {
|
|
433
|
+
diagnostics.push(...validated.diagnostics);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
329
436
|
if (diagnostics.length > 0 || targetUrl === undefined) {
|
|
330
437
|
return { ok: false, diagnostics: orderDiagnostics(diagnostics) };
|
|
331
438
|
}
|
|
@@ -338,6 +445,7 @@ export function normalizeRequest(raw) {
|
|
|
338
445
|
outputLocation,
|
|
339
446
|
timeoutMs,
|
|
340
447
|
readiness: { condition: readinessCondition, timeoutMs: readinessTimeoutMs },
|
|
448
|
+
...(scrollScenario ? { scrollScenario } : {}),
|
|
341
449
|
},
|
|
342
450
|
};
|
|
343
451
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/request/request.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/request/request.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAsErD,MAAM,gBAAgB,GAAa,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAChE,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACjC,MAAM,2BAA2B,GAAuB,MAAM,CAAC;AAC/D,MAAM,4BAA4B,GAAG,KAAK,CAAC;AAC3C,MAAM,uBAAuB,GAAG,cAAc,CAAC;AAE/C,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,MAAM,cAAc,GAAG,MAAM,CAAC;AAC9B,MAAM,wBAAwB,GAAG,GAAG,CAAC;AACrC,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB,MAAM,cAAc,GAAG,uBAAuB,CAAC;AAC/C,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAClC,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,0BAA0B,GAAG,GAAG,CAAC;AACvC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AACxD,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAC5C,MAAM,eAAe,GAAG,GAAG,CAAC;AAC5B,MAAM,+BAA+B,GAAG,IAAI,GAAG,CAAC;IAC9C,QAAQ;IACR,KAAK;IACL,MAAM;IACN,QAAQ;IACR,SAAS;IACT,SAAS;IACT,OAAO;IACP,MAAM;IACN,QAAQ;CACT,CAAC,CAAC;AACH,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAC7G,MAAM,6BAA6B,GAAG,IAAI,GAAG,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CAAC;AACxF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAE1C,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,SAAS,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IACxD,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,CAAC;AACjE,CAAC;AAED,SAAS,eAAe,CAAC,KAAc,EAAE,GAAW,EAAE,GAAW;IAC/D,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;AACjF,CAAC;AAED,gNAAgN;AAChN,SAAS,eAAe,CAAC,GAAY,EAAE,UAAkB,EAAE,KAAa;IACtE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,oBAAoB,KAAK,oBAAoB,EAAE,UAAU,EAAE,CAAC;SAClI,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACnE,OAAO;YACL,EAAE,EAAE,KAAK;YACT,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,oBAAoB,KAAK,0BAA0B,EAAE,UAAU,EAAE,CAAC;SACxI,CAAC;IACJ,CAAC;IAED,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,mBAAmB,CAAC,EAAE,CAAC;gBAC3D,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,WAAW,EAAE;wBACX,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,wBAAwB,KAAK,2BAA2B,mBAAmB,aAAa,EAAE,UAAU,EAAE;qBAC9J;iBACF,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;QACxE,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,CAAC,EAAE,CAAC;gBACnD,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,yBAAyB,KAAK,uBAAuB,eAAe,aAAa,EAAE,UAAU,EAAE,CAAC;iBACtK,CAAC;YACJ,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,0BAA0B,CAAC,EAAE,CAAC;gBACxF,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,WAAW,EAAE;wBACX,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,yBAAyB,KAAK,yBAAyB,0BAA0B,aAAa,EAAE,UAAU,EAAE;qBACpK;iBACF,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7I,CAAC;QACD,KAAK,IAAI,CAAC,CAAC,CAAC;YACV,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,mBAAmB,CAAC,EAAE,CAAC;gBACxD,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,uBAAuB,KAAK,wBAAwB,mBAAmB,aAAa,EAAE,UAAU,EAAE,CAAC;iBACzK,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;QACjE,CAAC;QACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrF,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,WAAW,EAAE;wBACX,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,mCAAmC,KAAK,yDAAyD,EAAE,UAAU,EAAE;qBACvK;iBACF,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,+BAA+B,CAAC,EAAE,CAAC;gBACpE,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,WAAW,EAAE;wBACX;4BACE,IAAI,EAAE,iBAAiB;4BACvB,QAAQ,EAAE,OAAO;4BACjB,OAAO,EAAE,mCAAmC,KAAK,wBAAwB,+BAA+B,aAAa;4BACrH,UAAU;yBACX;qBACF;iBACF,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;QACvG,CAAC;QACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjF,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,WAAW,EAAE;wBACX;4BACE,IAAI,EAAE,iBAAiB;4BACvB,QAAQ,EAAE,OAAO;4BACjB,OAAO,EAAE,qCAAqC,KAAK,wBAAwB,CAAC,GAAG,+BAA+B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;4BAC7H,UAAU;yBACX;qBACF;iBACF,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC;QAC3E,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,eAAe,CAAC,EAAE,CAAC;gBACnD,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,yBAAyB,KAAK,qBAAqB,eAAe,aAAa,EAAE,UAAU,EAAE,CAAC;iBACpK,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QACjE,CAAC;QACD;YACE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,oBAAoB,KAAK,0BAA0B,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;IAClK,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;GAMG;AACH,SAAS,sBAAsB,CAC7B,GAAY,EACZ,qBAA0C;IAE1C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC,EAAE,CAAC;IACnI,CAAC;IACD,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC;IAC7E,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,4CAA4C,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;SACnJ,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAC1B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC,EAAE,CAAC;IAC1I,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,OAAO;YACL,EAAE,EAAE,KAAK;YACT,WAAW,EAAE;gBACX,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,6CAA6C,CAAC,GAAG,6BAA6B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;aACtJ;SACF,CAAC;IACJ,CAAC;IAED,MAAM,iBAAiB,GAAG,IAAI,KAAK,kBAAkB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9H,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9F,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,mDAAmD,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;SACxJ,CAAC;IACJ,CAAC;IAED,MAAM,gBAAgB,GAAiB,EAAE,CAAC;IAC1C,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,oBAAoB,EAAE,CAAC;QACtF,gBAAgB,CAAC,IAAI,CAAC;YACpB,IAAI,EAAE,iBAAiB;YACvB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,wDAAwD,oBAAoB,KAAK,oBAAoB,GAAG;SAClH,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,oBAAoB,EAAE,CAAC;QACtF,gBAAgB,CAAC,IAAI,CAAC;YACpB,IAAI,EAAE,iBAAiB;YACvB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,wDAAwD,oBAAoB,KAAK,oBAAoB,GAAG;SAClH,CAAC,CAAC;IACL,CAAC;IACD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC;IACtD,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAgB,CAAC;IACvC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAgB,CAAC;IACvC,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,4DAA4D,EAAE,CAAC;SACrI,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,KAAK,kBAAkB,EAAE,CAAC;QAChC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC1F,CAAC;IAED,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpE,OAAO;YACL,EAAE,EAAE,KAAK;YACT,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,+DAA+D,EAAE,CAAC;SACxI,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAC5D,OAAO;YACL,EAAE,EAAE,KAAK;YACT,WAAW,EAAE;gBACX,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,iEAAiE,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;aACtJ;SACF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACjH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAA0B;IACzD,MAAM,WAAW,GAAiB,EAAE,CAAC;IAErC,IAAI,SAA6B,CAAC;IAClC,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpE,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,sDAAsD,EAAE,CAAC,CAAC;IACpI,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;QAC1B,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,QAAQ,GAAa,gBAAgB,CAAC;IAC1C,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC/B,IACE,CAAC,aAAa,CAAC,SAAS,CAAC;YACzB,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ;YACnC,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ;YACpC,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC;YACvD,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,EACxD,CAAC;YACD,WAAW,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,iBAAiB;gBACvB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,8CAA8C,YAAY,KAAK,YAAY,GAAG;aACxF,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;QAClE,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,CAAC;QACxG,CAAC;aAAM,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;YAC5C,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,gCAAgC,WAAW,UAAU,EAAE,CAAC,CAAC;QACnI,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;YACpC,KAAK,MAAM,gBAAgB,IAAI,GAAG,CAAC,OAAoB,EAAE,CAAC;gBACxD,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,OAAO,gBAAgB,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAClF,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,qFAAqF,EAAE,CAAC,CAAC;oBACjK,SAAS;gBACX,CAAC;gBACD,MAAM,SAAS,GAAG,gBAAkC,CAAC;gBACrD,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAc,CAAC;gBAE7C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC/B,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,8CAA8C,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9I,CAAC;gBACD,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC1C,IAAI,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;oBAClC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,uBAAuB,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvH,CAAC;qBAAM,CAAC;oBACN,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAChC,CAAC;gBAED,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC;gBACrD,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC;gBAErD,IAAI,WAAW,IAAI,WAAW,EAAE,CAAC;oBAC/B,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,oDAAoD,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;oBAClJ,SAAS;gBACX,CAAC;gBAED,IAAI,WAAW,EAAE,CAAC;oBAChB,IAAI,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;wBACjI,WAAW,CAAC,IAAI,CAAC;4BACf,IAAI,EAAE,iBAAiB;4BACvB,QAAQ,EAAE,OAAO;4BACjB,OAAO,EAAE,6BAA6B,mBAAmB,aAAa;4BACtE,UAAU,EAAE,IAAI;yBACjB,CAAC,CAAC;wBACH,SAAS;oBACX,CAAC;oBACD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;oBAClF,SAAS;gBACX,CAAC;gBAED,IAAI,WAAW,EAAE,CAAC;oBAChB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC1E,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,2CAA2C,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;wBACzI,SAAS;oBACX,CAAC;oBACD,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,uBAAuB,EAAE,CAAC;wBACxD,WAAW,CAAC,IAAI,CAAC;4BACf,IAAI,EAAE,iBAAiB;4BACvB,QAAQ,EAAE,OAAO;4BACjB,OAAO,EAAE,wCAAwC,uBAAuB,UAAU;4BAClF,UAAU,EAAE,IAAI;yBACjB,CAAC,CAAC;wBACH,SAAS;oBACX,CAAC;oBACD,MAAM,QAAQ,GAAoB,EAAE,CAAC;oBACrC,IAAI,UAAU,GAAG,KAAK,CAAC;oBACvB,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;wBAC/C,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;wBAC3D,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;4BACjB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;wBACnC,CAAC;6BAAM,CAAC;4BACN,UAAU,GAAG,IAAI,CAAC;4BAClB,WAAW,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;wBAC7C,CAAC;oBACH,CAAC,CAAC,CAAC;oBACH,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACnC,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,4DAA4D,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5J,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,SAAS,GAAG,kBAAkB,CAAC;IACnC,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,cAAc,EAAE,cAAc,CAAC,EAAE,CAAC;YACnG,WAAW,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,iBAAiB;gBACvB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,oCAAoC,cAAc,KAAK,cAAc,GAAG;aAClF,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,kBAAkB,GAAuB,2BAA2B,CAAC;IACzE,IAAI,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC;IAC3E,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC;QACrH,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAG,GAAG,CAAC,SAAS,CAAC;YACnC,IAAI,YAAY,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACzC,IAAI,YAAY,CAAC,SAAS,KAAK,MAAM,IAAI,YAAY,CAAC,SAAS,KAAK,kBAAkB,EAAE,CAAC;oBACvF,kBAAkB,GAAG,YAAY,CAAC,SAAS,CAAC;gBAC9C,CAAC;qBAAM,CAAC;oBACN,WAAW,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,2BAA2B;wBACjC,QAAQ,EAAE,OAAO;wBACjB,OAAO,EAAE,0DAA0D;qBACpE,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,IAAI,YAAY,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACzC,IAAI,OAAO,YAAY,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,wBAAwB,EAAE,SAAS,CAAC,EAAE,CAAC;oBAC1H,WAAW,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,2BAA2B;wBACjC,QAAQ,EAAE,OAAO;wBACjB,OAAO,EAAE,8CAA8C,wBAAwB,cAAc;qBAC9F,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,kBAAkB,GAAG,YAAY,CAAC,SAAS,CAAC;gBAC9C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,cAAc,GAAG,uBAAuB,CAAC;IAC7C,IAAI,GAAG,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACrC,IAAI,OAAO,GAAG,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;YAC3C,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC,CAAC;QAC/G,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,uBAAuB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC3D,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACd,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,cAA0C,CAAC;IAC/C,IAAI,GAAG,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC1F,MAAM,SAAS,GAAG,sBAAsB,CAAC,GAAG,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC;QACpF,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;YACjB,cAAc,GAAG,SAAS,CAAC,QAAQ,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QACtD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC;IACnE,CAAC;IAED,OAAO;QACL,EAAE,EAAE,IAAI;QACR,OAAO,EAAE;YACP,SAAS;YACT,QAAQ;YACR,OAAO;YACP,cAAc;YACd,SAAS;YACT,SAAS,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB,EAAE;YAC3E,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9C;KACF,CAAC;AACJ,CAAC"}
|
package/docs/ARCHITECTURE.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
## Current scaffold architecture
|
|
4
4
|
|
|
5
5
|
The current repository is one published TypeScript ESM package
|
|
6
|
-
(`my-frontend-observer@0.
|
|
6
|
+
(`my-frontend-observer@0.3.0`):
|
|
7
7
|
|
|
8
8
|
- `src/cli.ts` is the real, thin `observe` command entry point (argument
|
|
9
9
|
parsing/output only).
|
|
@@ -48,7 +48,7 @@ packed npm tarball end to end in a clean consumer environment, independent
|
|
|
48
48
|
of the source checkout. There is still no controlled-scroll/comparison
|
|
49
49
|
behavior.
|
|
50
50
|
|
|
51
|
-
## Current v0.2 architecture (
|
|
51
|
+
## Current v0.2 architecture (released/current architecture)
|
|
52
52
|
|
|
53
53
|
v0.2 extends the same architecture rather than adding a parallel one.
|
|
54
54
|
`src/request/request.ts` now owns a canonical `{name, locators}` target
|
|
@@ -75,6 +75,39 @@ observation use case, and Playwright objects still never leave
|
|
|
75
75
|
overall boundary chain (`CLI → normalizeRequest → observe() →
|
|
76
76
|
runBrowserCapture → artifact writer`) are unchanged from v0.1.
|
|
77
77
|
|
|
78
|
+
## Current v0.3 architecture (released/current architecture)
|
|
79
|
+
|
|
80
|
+
v0.3 extends the same single-observation architecture again; it does not add
|
|
81
|
+
a second browser lifecycle, target resolver, or artifact path.
|
|
82
|
+
`src/request/request.ts` adds one optional `scrollScenario` field to
|
|
83
|
+
`NormalizedObservationRequest` (`ScrollScenario { action }`, exactly
|
|
84
|
+
`window-scroll-by` or `target-scroll-by`); `src/domain/schema.ts` adds the
|
|
85
|
+
matching bounded runtime evidence types (`ScrollRuntimeSnapshot`,
|
|
86
|
+
`ViewportRelationEvidence`, `OverflowEvidence`, `ScrollScenarioTransition`,
|
|
87
|
+
`ScrollOwnerInterpretation`) and structural validation for schema `1.2.0`
|
|
88
|
+
(additive over `1.1.0`). `src/domain/scrollEvidence.ts` holds the pure,
|
|
89
|
+
browser-independent derivations (viewport relation, actual overflow,
|
|
90
|
+
transitions, and `deriveScrollOwner`) so they are unit-testable without
|
|
91
|
+
Chromium. `src/browser/scrollCapture.ts` holds the one browser-side scenario
|
|
92
|
+
capture module: it reuses `evidenceCapture.ts#resolveConfiguredTargets` (now
|
|
93
|
+
exported) to resolve configured targets exactly once, captures an initial
|
|
94
|
+
`ScrollRuntimeSnapshot`, performs the one immediate scroll
|
|
95
|
+
(`window.scrollBy`/`element.scrollBy`, both `behavior: 'instant'`), waits
|
|
96
|
+
exactly two `requestAnimationFrame` cycles, and captures a final snapshot -
|
|
97
|
+
all inside `chromiumAdapter.ts#captureViewportInternal`'s existing single
|
|
98
|
+
navigate → ready → capture flow, strictly before the unchanged
|
|
99
|
+
screenshot/`capturePageEvidence`/`captureTargetEvidence` calls, so every
|
|
100
|
+
downstream capture (including a no-scenario request, which skips this block
|
|
101
|
+
entirely) describes only the final state. `src/cli.ts` gained one CLI/input-
|
|
102
|
+
boundary-only addition, `--scroll-scenario-file`: mirroring
|
|
103
|
+
`--targets-file`, it reads and validates only the file readability/JSON-
|
|
104
|
+
validity/non-array-object-root shape and hands the parsed value straight
|
|
105
|
+
into `RawObservationRequest.scrollScenario` - every scenario/action rule
|
|
106
|
+
(kind, deltas, target reference) stays owned by `normalizeRequest()`. There
|
|
107
|
+
is still one canonical `observe()` application use case and one artifact
|
|
108
|
+
writer; `scrollScenarioEvidence` is simply one more optional field on the
|
|
109
|
+
same `ObservationArtifact`.
|
|
110
|
+
|
|
78
111
|
## Planned v0.1 architecture constraints
|
|
79
112
|
|
|
80
113
|
v0.1 planning must preserve these approved boundaries without treating module
|
package/docs/CI_CD.md
CHANGED
|
@@ -16,14 +16,20 @@ by a pull request into `master`). It has two phases:
|
|
|
16
16
|
ever builds its own tarball), installs Chromium via the installed
|
|
17
17
|
package's own Playwright dependency, and runs
|
|
18
18
|
`scripts/ci/runPackedObservationSmoke.mjs` against the installed
|
|
19
|
-
tarball: real Chromium observations against a disposable local HTTP
|
|
20
|
-
target
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
targets-file
|
|
19
|
+
tarball: four real Chromium observations against a disposable local HTTP
|
|
20
|
+
target - the legacy `--target` CSS shorthand, the structured
|
|
21
|
+
`--targets-file` semantic-target path (`role`+accessible-name and `text`
|
|
22
|
+
locators, landmark evidence), a `--scroll-scenario-file` `window-scroll-by`
|
|
23
|
+
scenario, and a combined `--targets-file` + `--scroll-scenario-file`
|
|
24
|
+
`target-scroll-by` scenario against a nested scrollable container - all
|
|
25
|
+
asserting schema `1.2.0`, real scroll-position movement, derived
|
|
26
|
+
scroll-owner evidence (`document`/`target:<name>`), scenario transition
|
|
27
|
+
evidence, targets-file/scroll-scenario-file path privacy, and target
|
|
28
|
+
immutability.
|
|
24
29
|
|
|
25
30
|
This proves the same packaged candidate installs and performs a real
|
|
26
|
-
observation - CSS-shorthand
|
|
31
|
+
observation - CSS-shorthand, semantic-target, and v0.3 scroll-scenario alike
|
|
32
|
+
(both `window-scroll-by` and `target-scroll-by`) - on Windows, Linux, and
|
|
27
33
|
macOS, not just in the source checkout.
|
|
28
34
|
|
|
29
35
|
There is no automated npm publication and no automated GitHub Release
|
|
@@ -40,3 +46,24 @@ matrix. This was proven on `validation/v0.2-pre-release`
|
|
|
40
46
|
(`2a0718c37cfe6988fc5d9852db455b99aa8238af`), GitHub Actions run
|
|
41
47
|
`31537578062`, which passed on Windows, Linux, and macOS using one
|
|
42
48
|
hash-verified candidate tarball.
|
|
49
|
+
|
|
50
|
+
## v0.3 readiness coverage
|
|
51
|
+
|
|
52
|
+
The packed-candidate readiness gap that previously existed for the v0.3
|
|
53
|
+
`--scroll-scenario-file` public interface - identified during the v0.3
|
|
54
|
+
implementation-completeness audit as `V0_3_READINESS_VALIDATION_GAP_EXISTS`
|
|
55
|
+
- has been closed: `scripts/ci/runPackedObservationSmoke.mjs` now also
|
|
56
|
+
performs a real `window-scroll-by` observation and a real `target-scroll-by`
|
|
57
|
+
observation (against a nested scrollable fixture container, combined with
|
|
58
|
+
`--targets-file`) through the installed tarball, asserting schema `1.2.0`,
|
|
59
|
+
actual scroll movement, `document`/`target:<name>` scroll-owner evidence
|
|
60
|
+
with `derivedFrom` provenance, scenario transition evidence, and that
|
|
61
|
+
neither the `--targets-file` nor the `--scroll-scenario-file` local path is
|
|
62
|
+
ever persisted into the manifest - on every platform in the matrix, using
|
|
63
|
+
the same single hash-verified candidate tarball as the legacy/semantic
|
|
64
|
+
observations. This was proven on `validation/v0.3-pre-release`
|
|
65
|
+
(`e59621c2fb5a6d74f491a63dc79ebe6e8b62c175`), GitHub Actions run
|
|
66
|
+
`31591920744`, which passed on Windows, Linux, and macOS using one
|
|
67
|
+
hash-verified candidate tarball (SHA-256
|
|
68
|
+
`da6cbc18a98d005b84a2f12c06f5c01d390006b53c02176a6c9cdc6d9b9d24d0`) - the
|
|
69
|
+
release candidate for `v0.3.0`.
|
package/docs/COMMANDS.md
CHANGED
|
@@ -29,6 +29,10 @@ Options:
|
|
|
29
29
|
- `--targets-file <json-file>` — loads structured semantic observation
|
|
30
30
|
targets from a local JSON file instead of `--target`. Cannot be combined
|
|
31
31
|
with `--target`. See "Structured semantic targets" below.
|
|
32
|
+
- `--scroll-scenario-file <json-file>` — loads one bounded runtime scroll
|
|
33
|
+
scenario from a local JSON file. May be combined with either `--target` or
|
|
34
|
+
`--targets-file` (it is independent of target configuration). See "Scroll
|
|
35
|
+
scenario (`--scroll-scenario-file`)" below.
|
|
32
36
|
- `--output <directory>` — portable, relative output location for the
|
|
33
37
|
observation artifact (same contract as the request's `outputLocation`; no
|
|
34
38
|
drive letter, no leading `/`, no `..` segments).
|
|
@@ -59,7 +63,7 @@ diagnostics print one per line as `[code] message`.
|
|
|
59
63
|
|
|
60
64
|
### Structured semantic targets (`--targets-file`)
|
|
61
65
|
|
|
62
|
-
**Current status: shipped as part of the published `my-frontend-observer@0.
|
|
66
|
+
**Current status: shipped as part of the published `my-frontend-observer@0.3.0`
|
|
63
67
|
package.** `--target` (CSS shorthand) remains fully supported alongside it.
|
|
64
68
|
|
|
65
69
|
`--targets-file <json-file>` is the public entry point to the v0.2 canonical
|
|
@@ -124,6 +128,103 @@ my-frontend-observer observe `
|
|
|
124
128
|
--output observations
|
|
125
129
|
```
|
|
126
130
|
|
|
131
|
+
### Scroll scenario (`--scroll-scenario-file`)
|
|
132
|
+
|
|
133
|
+
**Current status: shipped as part of the published `my-frontend-observer@0.3.0`
|
|
134
|
+
package.** Observation schema is `1.2.0`.
|
|
135
|
+
|
|
136
|
+
`--scroll-scenario-file <json-file>` is the public entry point to the v0.3
|
|
137
|
+
runtime scroll-scenario contract established in `src/request/request.ts`
|
|
138
|
+
(`ScrollScenario`/`ScrollAction`) and executed in `src/browser/`. It supplies
|
|
139
|
+
exactly the value of the normalized request's `scrollScenario` field - the
|
|
140
|
+
file root *is* the scenario object itself, with no wrapper field (unlike
|
|
141
|
+
`--targets-file`'s `{ "targets": [...] }` root).
|
|
142
|
+
|
|
143
|
+
A request supports **zero or one** scroll scenario. There are exactly two
|
|
144
|
+
supported action kinds:
|
|
145
|
+
|
|
146
|
+
Window scrolling:
|
|
147
|
+
|
|
148
|
+
```json
|
|
149
|
+
{
|
|
150
|
+
"action": {
|
|
151
|
+
"kind": "window-scroll-by",
|
|
152
|
+
"deltaX": 0,
|
|
153
|
+
"deltaY": 600
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Target scrolling (the `target` value must be the stable `name` of one of the
|
|
159
|
+
observation's own configured targets - never a CSS selector, DOM id, or
|
|
160
|
+
source symbol):
|
|
161
|
+
|
|
162
|
+
```json
|
|
163
|
+
{
|
|
164
|
+
"action": {
|
|
165
|
+
"kind": "target-scroll-by",
|
|
166
|
+
"target": "tool-workspace",
|
|
167
|
+
"deltaX": 0,
|
|
168
|
+
"deltaY": 400
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
`deltaX`/`deltaY` are signed integers bounded to `[-20000, 20000]`; at least
|
|
174
|
+
one must be non-zero (both zero is rejected). Every scroll/action rule -
|
|
175
|
+
supported action kind, required fields, delta types/bounds, the both-zero
|
|
176
|
+
rule, and the stable-target-name reference for `target-scroll-by` - is
|
|
177
|
+
enforced by the same `normalizeRequest()` validator used everywhere else, not
|
|
178
|
+
duplicated in CLI code; `--scroll-scenario-file` itself only validates that
|
|
179
|
+
the file is readable, is valid JSON, and has a non-array object root.
|
|
180
|
+
|
|
181
|
+
The observer performs the requested scroll immediately (no smooth-scroll
|
|
182
|
+
animation), waits exactly two `requestAnimationFrame` cycles, and captures a
|
|
183
|
+
final runtime snapshot - the same final state that the observation's ordinary
|
|
184
|
+
`pageEvidence`, `targetEvidence`, and `screenshot.png` describe. The actual
|
|
185
|
+
resulting scroll position is browser-authoritative and may be clamped by
|
|
186
|
+
document/element boundaries; a scenario that produces no movement (already at
|
|
187
|
+
a boundary, or a non-scrollable target) is still a valid, successfully
|
|
188
|
+
persisted observation, never a fabricated failure.
|
|
189
|
+
|
|
190
|
+
Usable with either target input mode:
|
|
191
|
+
|
|
192
|
+
```powershell
|
|
193
|
+
my-frontend-observer observe `
|
|
194
|
+
--url http://localhost:3000/ `
|
|
195
|
+
--target workspace=.workspace `
|
|
196
|
+
--scroll-scenario-file .\scroll.json `
|
|
197
|
+
--output observations
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
```powershell
|
|
201
|
+
my-frontend-observer observe `
|
|
202
|
+
--url http://localhost:3000/ `
|
|
203
|
+
--targets-file .\targets.json `
|
|
204
|
+
--scroll-scenario-file .\scroll.json `
|
|
205
|
+
--output observations
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
`--target` and `--targets-file` remain mutually exclusive with each other,
|
|
209
|
+
exactly as before; `--scroll-scenario-file` is independent of both and is
|
|
210
|
+
never itself a third mutually-exclusive target mode. `window-scroll-by`
|
|
211
|
+
requires no configured target at all.
|
|
212
|
+
|
|
213
|
+
The path may be relative (resolved from the current working directory) or
|
|
214
|
+
absolute; it is operational input only - like `--targets-file`'s path, it
|
|
215
|
+
never affects the observation's request identity and is never written into
|
|
216
|
+
`manifest.json`. Two different scenario files with identical content produce
|
|
217
|
+
the same `requestId`; only the requested scenario *configuration*
|
|
218
|
+
participates in identity, never the runtime outcome (actual scroll
|
|
219
|
+
distance, clamping, or scroll-owner result).
|
|
220
|
+
|
|
221
|
+
If a `target-scroll-by` scenario's configured action target cannot be
|
|
222
|
+
uniquely resolved at runtime (missing, ambiguous, or otherwise unavailable),
|
|
223
|
+
the scroll is not performed, no movement is fabricated, and the observation
|
|
224
|
+
persists honestly - typically as `partial` - carrying the same
|
|
225
|
+
`target-missing`/`target-ambiguous`/`browser-evidence-unavailable` diagnostic
|
|
226
|
+
that any other unresolved configured target would produce.
|
|
227
|
+
|
|
127
228
|
## Foundation commands
|
|
128
229
|
|
|
129
230
|
- `npm install` — install dependencies (includes the `playwright` runtime
|
|
@@ -146,8 +247,11 @@ my-frontend-observer observe `
|
|
|
146
247
|
- `npm run build` — clean and compile `src/` (including `src/cli.ts`) to
|
|
147
248
|
`dist/`.
|
|
148
249
|
- `npm run check:docs` — validate canonical documents and roadmap structure.
|
|
149
|
-
- `npm pack --dry-run` — inspect the
|
|
150
|
-
publishing. The real tarball has been installed and exercised in a
|
|
151
|
-
temporary consumer directory (real Chromium install, real `observe`
|
|
152
|
-
real artifact) as part of v0.1
|
|
153
|
-
validation,
|
|
250
|
+
- `npm pack --dry-run` — inspect the public package's tarball inventory
|
|
251
|
+
before publishing. The real tarball has been installed and exercised in a
|
|
252
|
+
clean temporary consumer directory (real Chromium install, real `observe`
|
|
253
|
+
run, real artifact) on Windows, Linux, and macOS as part of v0.1
|
|
254
|
+
validation, again for v0.2's packed semantic `--targets-file` behavior,
|
|
255
|
+
and again for v0.3's packed `--scroll-scenario-file` window/target scroll
|
|
256
|
+
behavior (`scripts/ci/runPackedObservationSmoke.mjs`); this is local
|
|
257
|
+
package validation, not a release/publication step.
|
package/docs/CONTRACTS.md
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
## Current contracts
|
|
4
4
|
|
|
5
|
-
The observation artifact contract is published as `my-frontend-observer@0.
|
|
5
|
+
The observation artifact contract is published as `my-frontend-observer@0.3.0`
|
|
6
6
|
and proven both from the source checkout and from the packed npm tarball,
|
|
7
|
-
on Windows, Linux, and macOS. The observation schema is `1.
|
|
8
|
-
target contract"
|
|
7
|
+
on Windows, Linux, and macOS. The observation schema is `1.2.0` (see "v0.2
|
|
8
|
+
target contract" and "v0.3 scroll scenario contract" below):
|
|
9
9
|
|
|
10
|
-
- artifact kind `my-frontend-observer/observation`, schema version `1.
|
|
10
|
+
- artifact kind `my-frontend-observer/observation`, schema version `1.2.0`
|
|
11
11
|
(independent of the package version);
|
|
12
12
|
- one artifact root per observation, `<outputLocation>/<observationId>/`,
|
|
13
13
|
containing exactly `manifest.json` (the full `ObservationArtifact`, with
|
|
@@ -85,6 +85,79 @@ observation produces exactly the same `manifest.json` shape (schema `1.1.0`)
|
|
|
85
85
|
as a CSS-shorthand one. `--targets-file`'s local input path is never part of
|
|
86
86
|
the persisted request identity or artifact.
|
|
87
87
|
|
|
88
|
+
## v0.3 scroll scenario contract (shipped as part of this release)
|
|
89
|
+
|
|
90
|
+
v0.3 introduces one optional, additive request/evidence concern: a bounded
|
|
91
|
+
runtime scroll scenario, schema `1.2.0`.
|
|
92
|
+
|
|
93
|
+
A normalized request may carry `scrollScenario: { action }` with exactly one
|
|
94
|
+
of two frozen action kinds:
|
|
95
|
+
|
|
96
|
+
- `{ "kind": "window-scroll-by", "deltaX": <int>, "deltaY": <int> }`
|
|
97
|
+
- `{ "kind": "target-scroll-by", "target": "<stable target name>", "deltaX": <int>, "deltaY": <int> }`
|
|
98
|
+
|
|
99
|
+
`deltaX`/`deltaY` are signed integers bounded to `[-20000, 20000]`; at least
|
|
100
|
+
one must be non-zero. `target-scroll-by.target` refers only to an existing
|
|
101
|
+
stable configured target `name` (never a selector) and resolves through the
|
|
102
|
+
same canonical `resolveConfiguredTargets` algorithm every v0.2 locator kind
|
|
103
|
+
already uses - there is no second target-resolution path. A request with no
|
|
104
|
+
scenario normalizes and identifies exactly as it did before v0.3.
|
|
105
|
+
|
|
106
|
+
Execution (both action kinds share one code path): perform the immediate,
|
|
107
|
+
non-smooth scroll (`window.scrollBy`/`element.scrollBy`, `behavior:
|
|
108
|
+
'instant'`) on the already-navigated, already-ready page; wait exactly two
|
|
109
|
+
`requestAnimationFrame` cycles; capture a final runtime snapshot. No second
|
|
110
|
+
browser, page, or navigation is ever created. The resulting scroll position
|
|
111
|
+
is browser-authoritative and may be clamped by document/element boundaries;
|
|
112
|
+
a scenario producing no movement is still a valid, successfully persisted
|
|
113
|
+
observation.
|
|
114
|
+
|
|
115
|
+
The scenario evidence lives entirely inside the existing `manifest.json` as
|
|
116
|
+
one additional optional `scrollScenarioEvidence` field on `ObservationArtifact`
|
|
117
|
+
- there is no separate `scroll.json`/`scenario.json`. It contains:
|
|
118
|
+
|
|
119
|
+
- `initial`/`final`: bounded `ScrollRuntimeSnapshot`s (window `scrollX`/
|
|
120
|
+
`scrollY`; the browser's own scrolling-root/`documentElement`/`body`
|
|
121
|
+
metrics; per-configured-target `scrollTop`/`scrollLeft`/`scrollWidth`/
|
|
122
|
+
`scrollHeight`/`clientWidth`/`clientHeight`, actual overflow, bounding
|
|
123
|
+
rectangle, and viewport relation);
|
|
124
|
+
- `transition`: bounded before/after change evidence (window scroll deltas;
|
|
125
|
+
per-target `scrollTop`/`scrollLeft`/bounding-position/viewport-relation
|
|
126
|
+
changes; `enteredViewport`/`leftViewport`) - never a generic recursive
|
|
127
|
+
diff, and a target is simply omitted when either side's evidence isn't
|
|
128
|
+
itself usable (e.g. it never resolved);
|
|
129
|
+
- `scrollOwner`: one derived `EvidenceField<ScrollOwnerInterpretation>`
|
|
130
|
+
(`document` | `target:<stable-name>` | `none` | `indeterminate`), always
|
|
131
|
+
`source: "derived"` with non-empty `derivedFrom` naming the exact
|
|
132
|
+
contributing scroll-position measurements. Ownership is derived only from
|
|
133
|
+
observed `scrollTop`/`scrollLeft`/`window.scrollX`/`window.scrollY`
|
|
134
|
+
changes - never from bounding-rectangle movement (which moves for every
|
|
135
|
+
configured target whenever the document scrolls), computed overflow,
|
|
136
|
+
`position: fixed`/`sticky`, or DOM hierarchy.
|
|
137
|
+
|
|
138
|
+
Actual dimensional overflow (`scrollWidth > clientWidth` /
|
|
139
|
+
`scrollHeight > clientHeight`) is always reported separately from the
|
|
140
|
+
computed `overflow-x`/`overflow-y` CSS declaration; a declared
|
|
141
|
+
`overflow: auto` container with content that fits produces
|
|
142
|
+
`horizontalOverflow`/`verticalOverflow: false`. Viewport relation
|
|
143
|
+
(`above`/`intersecting`/`below`, `intersectsViewport`, `fullyWithinViewport`)
|
|
144
|
+
is derived only from bounding geometry plus viewport size, relative to the
|
|
145
|
+
browser viewport; a hidden/non-rendered target's viewport relation is
|
|
146
|
+
`not-applicable`, never a fabricated geometry claim - hidden and offscreen
|
|
147
|
+
remain distinct evidence concepts, and the existing `target-hidden`
|
|
148
|
+
diagnostic is unaffected.
|
|
149
|
+
|
|
150
|
+
The ordinary, already-existing `pageEvidence`/`targetEvidence`/
|
|
151
|
+
`screenshot.png` for a scenario observation always describe this same final
|
|
152
|
+
post-action state, never the pre-action state.
|
|
153
|
+
|
|
154
|
+
The scenario request participates in `requestId`; the runtime result
|
|
155
|
+
(actual scroll distance, clamping, or scroll-owner outcome) never does. The
|
|
156
|
+
public entry point is `my-frontend-observer observe --scroll-scenario-file
|
|
157
|
+
<json-file>` (see `docs/COMMANDS.md`); the file supplies the scenario value
|
|
158
|
+
directly, and its local path is operational input only, exactly like
|
|
159
|
+
`--targets-file`'s path - never persisted, never part of request identity.
|
|
160
|
+
|
|
88
161
|
## Approved v0.1 design inputs
|
|
89
162
|
|
|
90
163
|
The historical greenfield scaffold plan recorded these v0.1 design decisions:
|
package/docs/CURRENT_STATE.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Current State
|
|
2
2
|
|
|
3
|
-
The project is published at package version `0.
|
|
4
|
-
|
|
3
|
+
The project is published at package version `0.3.0` (roadmap v0.3, Runtime
|
|
4
|
+
Scrolling, Overflow, and Visibility Behavior; observation schema `1.2.0`).
|
|
5
5
|
|
|
6
6
|
## Greenfield foundation established
|
|
7
7
|
|
|
@@ -175,16 +175,61 @@ schema `1.1.0`.
|
|
|
175
175
|
`dist/cli.js` (not just the imported `runCli()` function) performs a real
|
|
176
176
|
semantic `--targets-file` observation end to end.
|
|
177
177
|
|
|
178
|
+
## v0.3 status (Runtime Scrolling, Overflow, and Visibility Behavior) - released as 0.3.0
|
|
179
|
+
|
|
180
|
+
v0.3 is implemented and released as package version `0.3.0`, observation
|
|
181
|
+
schema `1.2.0`. It was validated as a packed npm tarball in a clean
|
|
182
|
+
consumer environment on Windows, Linux, and macOS before release.
|
|
183
|
+
|
|
184
|
+
- **Batch 1** froze the `scrollScenario` request/identity/schema contract:
|
|
185
|
+
`ScrollScenario { action }` with exactly two action kinds
|
|
186
|
+
(`window-scroll-by`, `target-scroll-by`), signed-integer deltas bounded to
|
|
187
|
+
`[-20000, 20000]`, `target-scroll-by.target` referencing an existing stable
|
|
188
|
+
configured target name, scenario configuration participating in
|
|
189
|
+
`requestId` (runtime results never do), and the full bounded runtime
|
|
190
|
+
evidence model (`ScrollRuntimeSnapshot`, `ViewportRelationEvidence`,
|
|
191
|
+
`OverflowEvidence`, scenario transitions, `ScrollOwnerInterpretation`) in
|
|
192
|
+
schema `1.2.0` (up from `1.1.0`).
|
|
193
|
+
- **Batch 2** implemented real `window-scroll-by` execution
|
|
194
|
+
(`src/browser/scrollCapture.ts`, `src/domain/scrollEvidence.ts`): initial/
|
|
195
|
+
final runtime snapshots around an immediate `window.scrollBy({behavior:
|
|
196
|
+
'instant'})` and exactly two `requestAnimationFrame` cycles, real vertical/
|
|
197
|
+
horizontal document scrolling, actual-vs-computed overflow, real viewport
|
|
198
|
+
relation, `enteredViewport`/`leftViewport`, and `document`/`none`
|
|
199
|
+
scroll-owner evidence - with ordinary final `pageEvidence`/`targetEvidence`
|
|
200
|
+
and the screenshot always describing the same final post-action state.
|
|
201
|
+
- **Batch 3** implemented real `target-scroll-by` execution against the same
|
|
202
|
+
canonical `resolveConfiguredTargets` resolution already used by every v0.2
|
|
203
|
+
locator kind: real nested vertical/horizontal element scrolling, boundary
|
|
204
|
+
clamping, non-scrollable/no-movement targets, and the completed
|
|
205
|
+
`document`/`target:<name>`/`none`/`indeterminate` scroll-owner derivation
|
|
206
|
+
(`src/domain/scrollEvidence.ts#deriveScrollOwner`) - proven never to
|
|
207
|
+
attribute ownership from bounding-rectangle movement alone in either
|
|
208
|
+
direction. An unresolved/ambiguous/hidden action target is never scrolled
|
|
209
|
+
and never fabricated as moved; the existing target diagnostics explain it
|
|
210
|
+
honestly and the observation still persists.
|
|
211
|
+
- **Batch 4** exposed the existing contract through the real public CLI:
|
|
212
|
+
`my-frontend-observer observe --scroll-scenario-file <json-file>` (see
|
|
213
|
+
`docs/COMMANDS.md`). The file supplies the `scrollScenario` value directly
|
|
214
|
+
(no wrapper field); the CLI/input layer only validates file readability,
|
|
215
|
+
JSON validity, and a non-array object root - every scenario/action rule
|
|
216
|
+
stays owned by the existing `normalizeRequest()`. Usable with either
|
|
217
|
+
`--target` or `--targets-file` (independent of target configuration, never
|
|
218
|
+
a third mutually-exclusive mode); the scenario-file path is operational
|
|
219
|
+
input only, never persisted and never part of request identity, exactly
|
|
220
|
+
like `--targets-file`'s path. CLI output/exit-code semantics are
|
|
221
|
+
unchanged. Proven via real Chromium (`tests/browser/cliObserve.test.ts`)
|
|
222
|
+
and the built `dist/cli.js` (`scripts/dev/builtCliScrollScenarioSmoke.mjs`).
|
|
223
|
+
|
|
178
224
|
## Not implemented
|
|
179
225
|
|
|
180
|
-
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
unimplemented.
|
|
185
|
-
- No v0.3–v0.10 capability is implemented.
|
|
226
|
+
- Layout/spatial relationship engine, before/after comparison, frontend
|
|
227
|
+
contracts/change scope, source ownership, my-dev-kit runtime/static
|
|
228
|
+
integration, orchestrator/lab product integration, viewer, and annotation
|
|
229
|
+
all remain unimplemented (v0.4+).
|
|
186
230
|
|
|
187
231
|
## Next target
|
|
188
232
|
|
|
189
|
-
v0.2
|
|
190
|
-
|
|
233
|
+
v0.1, v0.2, and v0.3 are implemented, validated, and released (`0.1.0`,
|
|
234
|
+
`0.2.0`, `0.3.0`). v0.4 (Layout Relationships, Dependency Evidence, and
|
|
235
|
+
Before/After Comparison) is the next planned version.
|