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/domain/schema.js
CHANGED
|
@@ -3,8 +3,9 @@ import { fileURLToPath } from 'node:url';
|
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { isValidEvidenceField } from './evidence.js';
|
|
5
5
|
import { DIAGNOSTIC_CODES, DIAGNOSTIC_SEVERITY } from './diagnostics.js';
|
|
6
|
+
import { SCROLL_DELTA_MAX_ABS } from '../request/request.js';
|
|
6
7
|
export const ARTIFACT_KIND = 'my-frontend-observer/observation';
|
|
7
|
-
export const SCHEMA_VERSION = '1.
|
|
8
|
+
export const SCHEMA_VERSION = '1.2.0';
|
|
8
9
|
export const PRODUCER_NAME = 'my-frontend-observer';
|
|
9
10
|
export const TARGET_LANDMARK_ROLES = ['banner', 'navigation', 'main', 'complementary', 'contentinfo', 'form', 'region', 'search'];
|
|
10
11
|
function readPackageVersion() {
|
|
@@ -126,6 +127,179 @@ function isValidTargetContainment(value) {
|
|
|
126
127
|
return false;
|
|
127
128
|
return true;
|
|
128
129
|
}
|
|
130
|
+
function isValidTargetGeometryValue(value) {
|
|
131
|
+
if (!isPlainObject(value))
|
|
132
|
+
return false;
|
|
133
|
+
return ['x', 'y', 'width', 'height', 'right', 'bottom'].every((key) => typeof value[key] === 'number');
|
|
134
|
+
}
|
|
135
|
+
/** Structural validator for the requestConfig-side scrollScenario shape (defense in depth alongside src/request/request.ts#normalizeRequest's own validation). */
|
|
136
|
+
function isValidRequestScrollAction(value) {
|
|
137
|
+
if (!isPlainObject(value))
|
|
138
|
+
return false;
|
|
139
|
+
const kind = value.kind;
|
|
140
|
+
const deltaOk = (d) => typeof d === 'number' && Number.isInteger(d) && Math.abs(d) <= SCROLL_DELTA_MAX_ABS;
|
|
141
|
+
if (kind === 'window-scroll-by') {
|
|
142
|
+
if (!deltaOk(value.deltaX) || !deltaOk(value.deltaY))
|
|
143
|
+
return false;
|
|
144
|
+
if (value.deltaX === 0 && value.deltaY === 0)
|
|
145
|
+
return false;
|
|
146
|
+
return Object.keys(value).length === 3;
|
|
147
|
+
}
|
|
148
|
+
if (kind === 'target-scroll-by') {
|
|
149
|
+
if (typeof value.target !== 'string' || value.target.length === 0)
|
|
150
|
+
return false;
|
|
151
|
+
if (!deltaOk(value.deltaX) || !deltaOk(value.deltaY))
|
|
152
|
+
return false;
|
|
153
|
+
if (value.deltaX === 0 && value.deltaY === 0)
|
|
154
|
+
return false;
|
|
155
|
+
return Object.keys(value).length === 4;
|
|
156
|
+
}
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
function isValidRequestScrollScenario(value) {
|
|
160
|
+
if (!isPlainObject(value))
|
|
161
|
+
return false;
|
|
162
|
+
if (Object.keys(value).length !== 1)
|
|
163
|
+
return false;
|
|
164
|
+
return isValidRequestScrollAction(value.action);
|
|
165
|
+
}
|
|
166
|
+
function isValidScrollableMetrics(value) {
|
|
167
|
+
if (!isPlainObject(value))
|
|
168
|
+
return false;
|
|
169
|
+
return ['scrollTop', 'scrollLeft', 'scrollWidth', 'scrollHeight', 'clientWidth', 'clientHeight'].every((key) => typeof value[key] === 'number');
|
|
170
|
+
}
|
|
171
|
+
function isValidOverflowEvidence(value) {
|
|
172
|
+
if (!isPlainObject(value))
|
|
173
|
+
return false;
|
|
174
|
+
return (typeof value.horizontalOverflow === 'boolean' &&
|
|
175
|
+
typeof value.verticalOverflow === 'boolean' &&
|
|
176
|
+
typeof value.overflowX === 'string' &&
|
|
177
|
+
typeof value.overflowY === 'string');
|
|
178
|
+
}
|
|
179
|
+
function isValidWindowScrollSnapshot(value) {
|
|
180
|
+
return isPlainObject(value) && typeof value.scrollX === 'number' && typeof value.scrollY === 'number';
|
|
181
|
+
}
|
|
182
|
+
function isValidDocumentScrollSnapshot(value) {
|
|
183
|
+
if (!isPlainObject(value))
|
|
184
|
+
return false;
|
|
185
|
+
if (!isValidScrollableMetrics(value.root))
|
|
186
|
+
return false;
|
|
187
|
+
if (!isValidOverflowEvidence(value.rootOverflow))
|
|
188
|
+
return false;
|
|
189
|
+
if ('documentElement' in value && value.documentElement !== undefined && !isValidScrollableMetrics(value.documentElement))
|
|
190
|
+
return false;
|
|
191
|
+
if ('body' in value && value.body !== undefined && !isValidScrollableMetrics(value.body))
|
|
192
|
+
return false;
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
const VERTICAL_VIEWPORT_RELATIONS = ['above', 'intersecting', 'below'];
|
|
196
|
+
function isValidViewportRelationEvidence(value) {
|
|
197
|
+
if (!isPlainObject(value))
|
|
198
|
+
return false;
|
|
199
|
+
if (!VERTICAL_VIEWPORT_RELATIONS.includes(value.vertical))
|
|
200
|
+
return false;
|
|
201
|
+
return typeof value.intersectsViewport === 'boolean' && typeof value.fullyWithinViewport === 'boolean';
|
|
202
|
+
}
|
|
203
|
+
/** Validates an EvidenceField's `.value` only when the field is available/partial - not applicable/unavailable fields carry no value to check. */
|
|
204
|
+
function isValidEvidenceFieldValue(field, validate) {
|
|
205
|
+
if (!isPlainObject(field))
|
|
206
|
+
return false;
|
|
207
|
+
if (field.state === 'available' || field.state === 'partial') {
|
|
208
|
+
return validate(field.value);
|
|
209
|
+
}
|
|
210
|
+
return true;
|
|
211
|
+
}
|
|
212
|
+
function isValidTargetScrollRuntimeState(value) {
|
|
213
|
+
if (!isPlainObject(value))
|
|
214
|
+
return false;
|
|
215
|
+
if (!isValidEvidenceField(value.metrics) || !isValidEvidenceFieldValue(value.metrics, isValidScrollableMetrics))
|
|
216
|
+
return false;
|
|
217
|
+
if (!isValidEvidenceField(value.overflow) || !isValidEvidenceFieldValue(value.overflow, isValidOverflowEvidence))
|
|
218
|
+
return false;
|
|
219
|
+
if (!isValidEvidenceField(value.boundingRect) || !isValidEvidenceFieldValue(value.boundingRect, isValidTargetGeometryValue))
|
|
220
|
+
return false;
|
|
221
|
+
if (!isValidEvidenceField(value.viewportRelation) || !isValidEvidenceFieldValue(value.viewportRelation, isValidViewportRelationEvidence))
|
|
222
|
+
return false;
|
|
223
|
+
return true;
|
|
224
|
+
}
|
|
225
|
+
function isValidScrollRuntimeSnapshot(value) {
|
|
226
|
+
if (!isPlainObject(value))
|
|
227
|
+
return false;
|
|
228
|
+
if (!isValidWindowScrollSnapshot(value.window))
|
|
229
|
+
return false;
|
|
230
|
+
if (!isValidDocumentScrollSnapshot(value.document))
|
|
231
|
+
return false;
|
|
232
|
+
if (!isPlainObject(value.targets))
|
|
233
|
+
return false;
|
|
234
|
+
return Object.values(value.targets).every((target) => isValidTargetScrollRuntimeState(target));
|
|
235
|
+
}
|
|
236
|
+
function isValidScrollValueChange(value, validateInner) {
|
|
237
|
+
if (!isPlainObject(value))
|
|
238
|
+
return false;
|
|
239
|
+
if (typeof value.changed !== 'boolean')
|
|
240
|
+
return false;
|
|
241
|
+
return validateInner(value.before) && validateInner(value.after);
|
|
242
|
+
}
|
|
243
|
+
function isValidTargetScrollTransition(value) {
|
|
244
|
+
if (!isPlainObject(value))
|
|
245
|
+
return false;
|
|
246
|
+
if (!isValidScrollValueChange(value.scrollTop, (v) => typeof v === 'number'))
|
|
247
|
+
return false;
|
|
248
|
+
if (!isValidScrollValueChange(value.scrollLeft, (v) => typeof v === 'number'))
|
|
249
|
+
return false;
|
|
250
|
+
if (!isValidScrollValueChange(value.boundingRectPosition, (v) => isPlainObject(v) && typeof v.x === 'number' && typeof v.y === 'number'))
|
|
251
|
+
return false;
|
|
252
|
+
if (!isValidScrollValueChange(value.viewportRelation, (v) => VERTICAL_VIEWPORT_RELATIONS.includes(v)))
|
|
253
|
+
return false;
|
|
254
|
+
if (typeof value.enteredViewport !== 'boolean' || typeof value.leftViewport !== 'boolean')
|
|
255
|
+
return false;
|
|
256
|
+
if (value.enteredViewport && value.leftViewport)
|
|
257
|
+
return false;
|
|
258
|
+
return true;
|
|
259
|
+
}
|
|
260
|
+
function isValidScrollScenarioTransition(value) {
|
|
261
|
+
if (!isPlainObject(value))
|
|
262
|
+
return false;
|
|
263
|
+
if (!isValidScrollValueChange(value.windowScrollX, (v) => typeof v === 'number'))
|
|
264
|
+
return false;
|
|
265
|
+
if (!isValidScrollValueChange(value.windowScrollY, (v) => typeof v === 'number'))
|
|
266
|
+
return false;
|
|
267
|
+
if (!isPlainObject(value.targets))
|
|
268
|
+
return false;
|
|
269
|
+
return Object.values(value.targets).every((target) => isValidTargetScrollTransition(target));
|
|
270
|
+
}
|
|
271
|
+
const SCROLL_OWNER_KINDS = ['document', 'target', 'none', 'indeterminate'];
|
|
272
|
+
function isValidScrollOwnerInterpretation(value) {
|
|
273
|
+
if (!isPlainObject(value))
|
|
274
|
+
return false;
|
|
275
|
+
const kind = value.kind;
|
|
276
|
+
if (!SCROLL_OWNER_KINDS.includes(kind))
|
|
277
|
+
return false;
|
|
278
|
+
if (kind === 'target')
|
|
279
|
+
return typeof value.target === 'string' && value.target.length > 0 && Object.keys(value).length === 2;
|
|
280
|
+
return Object.keys(value).length === 1;
|
|
281
|
+
}
|
|
282
|
+
/** Structural validator for ScrollScenarioEvidence, including the scroll-owner derived-provenance requirement (source must be 'derived', enforced alongside isValidEvidenceField's existing derivedFrom-iff-derived-source invariant). */
|
|
283
|
+
function isValidScrollScenarioEvidence(value) {
|
|
284
|
+
if (!isPlainObject(value))
|
|
285
|
+
return false;
|
|
286
|
+
if (!isValidScrollRuntimeSnapshot(value.initial))
|
|
287
|
+
return false;
|
|
288
|
+
if (!isValidScrollRuntimeSnapshot(value.final))
|
|
289
|
+
return false;
|
|
290
|
+
if (!isValidScrollScenarioTransition(value.transition))
|
|
291
|
+
return false;
|
|
292
|
+
if (!isValidEvidenceField(value.scrollOwner))
|
|
293
|
+
return false;
|
|
294
|
+
const scrollOwnerField = value.scrollOwner;
|
|
295
|
+
if (scrollOwnerField.state === 'available' || scrollOwnerField.state === 'partial') {
|
|
296
|
+
if (scrollOwnerField.source !== 'derived')
|
|
297
|
+
return false;
|
|
298
|
+
if (!isValidScrollOwnerInterpretation(scrollOwnerField.value))
|
|
299
|
+
return false;
|
|
300
|
+
}
|
|
301
|
+
return true;
|
|
302
|
+
}
|
|
129
303
|
function isValidDiagnostic(value) {
|
|
130
304
|
if (!isPlainObject(value))
|
|
131
305
|
return false;
|
|
@@ -155,7 +329,7 @@ function isValidCompletionState(value) {
|
|
|
155
329
|
}
|
|
156
330
|
return false;
|
|
157
331
|
}
|
|
158
|
-
/** Structural validator for the frozen schema-1.
|
|
332
|
+
/** Structural validator for the frozen schema-1.2.0 ObservationArtifact contract. Treats `value` as arbitrary/unknown input. */
|
|
159
333
|
export function isValidObservationArtifact(value) {
|
|
160
334
|
if (!isPlainObject(value))
|
|
161
335
|
return { valid: false, reason: 'artifact must be an object' };
|
|
@@ -224,6 +398,16 @@ export function isValidObservationArtifact(value) {
|
|
|
224
398
|
}
|
|
225
399
|
}
|
|
226
400
|
}
|
|
401
|
+
if (isPlainObject(value.requestConfig) && 'scrollScenario' in value.requestConfig && value.requestConfig.scrollScenario !== undefined) {
|
|
402
|
+
if (!isValidRequestScrollScenario(value.requestConfig.scrollScenario)) {
|
|
403
|
+
return { valid: false, reason: 'requestConfig.scrollScenario is invalid' };
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
if ('scrollScenarioEvidence' in value && value.scrollScenarioEvidence !== undefined) {
|
|
407
|
+
if (!isValidScrollScenarioEvidence(value.scrollScenarioEvidence)) {
|
|
408
|
+
return { valid: false, reason: 'scrollScenarioEvidence is invalid' };
|
|
409
|
+
}
|
|
410
|
+
}
|
|
227
411
|
if (!isValidEvidenceField(value.screenshot))
|
|
228
412
|
return { valid: false, reason: 'screenshot evidence field is invalid' };
|
|
229
413
|
if (!isValidCompletionState(value.completion))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/domain/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAIzE,MAAM,CAAC,MAAM,aAAa,GAAG,kCAA2C,CAAC;AACzE,MAAM,CAAC,MAAM,cAAc,GAAG,OAAgB,CAAC;AAC/C,MAAM,CAAC,MAAM,aAAa,GAAG,sBAA+B,CAAC;AAiF7D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAqD3I,SAAS,kBAAkB;IACzB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA0B,CAAC;IACxD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,CAAC;AAChE,CAAC;AAED,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,MAAM,oBAAoB,GAAiC,CAAC,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC/H,MAAM,yBAAyB,GAAqC,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AACzH,MAAM,4BAA4B,GAAyC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC7F,MAAM,+BAA+B,GAA0C,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AAEnJ,SAAS,2BAA2B,CAAC,KAAc;IACjD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5H,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAE,oBAA0C,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IACpI,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAE,+BAAqD,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACrI,IAAI,YAAY,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC;QACrK,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,oMAAoM;AACpM,SAAS,4BAA4B,CAAC,KAAc;IAClD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,OAAO,KAAK,CAAC,eAAe,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5D,IAAI,OAAO,KAAK,CAAC,eAAe,KAAK,QAAQ,IAAI,CAAE,yBAA+C,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC;QAAE,OAAO,KAAK,CAAC;IACjJ,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC1D,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAE,4BAAkD,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1I,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1H,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,IAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAA0B,CAAC,YAAY,IAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAA0B,CAAC,YAAY;YAAE,OAAO,KAAK,CAAC;IAC7I,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,eAAe,KAAK,SAAS,CAAC;IACtD,MAAM,eAAe,GAAG,qBAAqB,IAAI,KAAK,IAAI,KAAK,CAAC,mBAAmB,KAAK,SAAS,CAAC;IAClG,MAAM,gBAAgB,GAAG,sBAAsB,IAAI,KAAK,IAAI,KAAK,CAAC,oBAAoB,KAAK,SAAS,CAAC;IACrG,IAAI,eAAe,KAAK,SAAS,IAAI,gBAAgB,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAClF,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,OAAO,KAAK,CAAC,mBAAmB,KAAK,QAAQ,IAAI,CAAE,oBAA0C,CAAC,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC;YAAE,OAAO,KAAK,CAAC;QACpJ,IAAI,OAAO,KAAK,CAAC,oBAAoB,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACpJ,IAAI,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,oBAAoB,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1E,CAAC;SAAM,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,qBAAqB,GAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9F,sKAAsK;AACtK,SAAS,0BAA0B,CAAC,KAAc;IAChD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACnF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrE,IAAI,UAAU,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7E,IAAI,UAAU,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7E,IAAI,SAAS,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACxG,IAAI,UAAU,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7E,IAAI,SAAS,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACxG,IAAI,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,CAAE,qBAA2C,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAiB,CAAC;QAAE,OAAO,KAAK,CAAC;IAClJ,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAc;IAC/C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,qBAA2C,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnG,CAAC;AAED,iJAAiJ;AACjJ,SAAS,wBAAwB,CAAC,KAAc;IAC9C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,aAAa,GAAG,CAAC,CAAU,EAAiB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;IACvH,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,mBAAmB,CAAC;QAAE,OAAO,KAAK,CAAC;IACtJ,MAAM,oBAAoB,GAAG,KAAK,CAAC,oBAAoB,CAAC;IACxD,MAAM,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC;IACpD,MAAM,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,CAAC;IACtD,MAAM,YAAY,GAAG,CAAC,GAAa,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,CAAC;IACzE,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC;QAAE,OAAO,KAAK,CAAC;IACjI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACvF,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACpF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAE,gBAAsC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACtG,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,IAAsB,CAAC,CAAC;IACrE,IAAI,KAAK,CAAC,QAAQ,KAAK,gBAAgB;QAAE,OAAO,KAAK,CAAC;IACtD,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACpD,IAAI,YAAY,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc;IAC5C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,aAAa,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAC9E,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,iBAAiB,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACnG,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3G,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,gIAAgI;AAChI,MAAM,UAAU,0BAA0B,CAAC,KAAc;IACvD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;IACzF,IAAI,KAAK,CAAC,YAAY,KAAK,aAAa;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;IACnG,IAAI,KAAK,CAAC,aAAa,KAAK,cAAc;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;IACtG,IAAI,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,0CAA0C,EAAE,CAAC;IAC9E,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,sCAAsC,EAAE,CAAC;IAC1E,CAAC;IACD,IACE,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9B,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,aAAa;QACrC,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,KAAK,QAAQ;QAC1C,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EACnC,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,oEAAoE,EAAE,CAAC;IACxG,CAAC;IACD,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,mCAAmC,EAAE,CAAC;IAC/G,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,oDAAoD,EAAE,CAAC;IACxF,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,kCAAkC,EAAE,CAAC;IAC9G,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QACzD,IACE,CAAC,aAAa,CAAC,MAAM,CAAC;YACtB,CAAC,oBAAoB,CAAC,MAAM,CAAC,UAAU,CAAC;YACxC,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC;YACjC,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC;YACtC,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC;YACnC,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC;YACpC,CAAC,oBAAoB,CAAC,MAAM,CAAC,UAAU,CAAC;YACxC,CAAC,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC;YACvC,CAAC,oBAAoB,CAAC,MAAM,CAAC,aAAa,CAAC;YAC3C,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC;YACtC,CAAC,oBAAoB,CAAC,MAAM,CAAC,WAAW,CAAC,EACzC,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EACJ,qJAAqJ;aACxJ,CAAC;QACJ,CAAC;QACD,MAAM,eAAe,GAAG,MAAM,CAAC,UAAqC,CAAC;QACrE,IAAI,eAAe,CAAC,KAAK,KAAK,WAAW,IAAI,eAAe,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACjF,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,kEAAkE,EAAE,CAAC;YACtG,CAAC;QACH,CAAC;QACD,MAAM,kBAAkB,GAAG,MAAM,CAAC,aAAwC,CAAC;QAC3E,IAAI,kBAAkB,CAAC,KAAK,KAAK,WAAW,IAAI,kBAAkB,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACvF,IAAI,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,wEAAwE,EAAE,CAAC;YAC5G,CAAC;QACH,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,CAAC,QAAmC,CAAC;QACjE,IAAI,aAAa,CAAC,KAAK,KAAK,WAAW,IAAI,aAAa,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7E,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,kEAAkE,EAAE,CAAC;YACtG,CAAC;QACH,CAAC;QACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAsC,CAAC;QACvE,IAAI,gBAAgB,CAAC,KAAK,KAAK,WAAW,IAAI,gBAAgB,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACnF,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,oEAAoE,EAAE,CAAC;YACxG,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,sCAAsC,EAAE,CAAC;IACrH,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC;IAC9G,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxG,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,yDAAyD,EAAE,CAAC;IAC7F,CAAC;IACD,IAAI,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,KAAK,UAAU,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7G,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,2DAA2D,EAAE,CAAC;IAC/F,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,IACE,CAAC,aAAa,CAAC,MAAM,CAAC;QACtB,OAAO,MAAM,CAAC,SAAS,KAAK,SAAS;QACrC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;QACpC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;QAClE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;QACrC,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EACnE,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,0FAA0F,EAAE,CAAC;IAC9H,CAAC;IACD,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC;QACxC,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,EAC7H,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,uEAAuE,EAAE,CAAC;IAC3G,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC"}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/domain/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { EvidenceField } from './evidence.js';
|
|
2
|
+
import type { Viewport } from '../request/request.js';
|
|
3
|
+
import type { ScrollableMetrics, OverflowEvidence, ViewportRelationEvidence, TargetGeometry, ScrollRuntimeSnapshot, TargetScrollRuntimeState, TargetScrollTransition, ScrollScenarioTransition, ScrollOwnerInterpretation } from './schema.js';
|
|
4
|
+
/**
|
|
5
|
+
* Derived only from a bounding rectangle (viewport-relative, as produced by
|
|
6
|
+
* `getBoundingClientRect()`) plus viewport width/height - never from source
|
|
7
|
+
* styles or locator kind (Batch 1 frozen contract). `above`/`below` require
|
|
8
|
+
* the rectangle to be *entirely* outside the viewport on that axis; any
|
|
9
|
+
* vertical overlap with `[0, viewport.height)` is `intersecting`.
|
|
10
|
+
*/
|
|
11
|
+
export declare function deriveViewportRelation(rect: TargetGeometry, viewport: Viewport): ViewportRelationEvidence;
|
|
12
|
+
/**
|
|
13
|
+
* Distinguishes a computed `overflow-x`/`overflow-y` CSS declaration from
|
|
14
|
+
* actual dimensional overflow. `overflow-x: auto`/`overflow-y: scroll` alone
|
|
15
|
+
* never implies actual overflow - only `scrollWidth > clientWidth` /
|
|
16
|
+
* `scrollHeight > clientHeight` do.
|
|
17
|
+
*/
|
|
18
|
+
export declare function deriveOverflowEvidence(metrics: ScrollableMetrics, overflowX: string, overflowY: string): OverflowEvidence;
|
|
19
|
+
/**
|
|
20
|
+
* Bounded before/after change evidence for one configured target across the
|
|
21
|
+
* one scroll action - not a generic recursive diff. Returns `undefined`
|
|
22
|
+
* (rather than fabricating zeroed/default values) when either snapshot's
|
|
23
|
+
* metrics/boundingRect/viewportRelation evidence for this target is not
|
|
24
|
+
* itself usable (e.g. the target never resolved), consistent with
|
|
25
|
+
* `enteredViewport`/`leftViewport` only being evaluated when both
|
|
26
|
+
* viewport-relation states are valid.
|
|
27
|
+
*/
|
|
28
|
+
export declare function deriveTargetScrollTransition(initial: TargetScrollRuntimeState, final: TargetScrollRuntimeState): TargetScrollTransition | undefined;
|
|
29
|
+
/** Derives the bounded scenario transition evidence purely from the two already-captured runtime snapshots - no re-measurement, no generic JSON diffing. A target absent from either snapshot's `targets` map, or whose per-target transition cannot be derived (see `deriveTargetScrollTransition`), is simply omitted from `targets` here. */
|
|
30
|
+
export declare function deriveScrollScenarioTransition(initial: ScrollRuntimeSnapshot, final: ScrollRuntimeSnapshot): ScrollScenarioTransition;
|
|
31
|
+
/**
|
|
32
|
+
* Conservative scroll-owner derivation, shared by both `window-scroll-by`
|
|
33
|
+
* and `target-scroll-by` scenarios: relies solely on observed scroll
|
|
34
|
+
* *position* changes (`scrollTop`/`scrollLeft`/`window.scrollX`/
|
|
35
|
+
* `window.scrollY`), never on a target's bounding-rectangle movement (which
|
|
36
|
+
* moves for every configured target whenever the document scrolls,
|
|
37
|
+
* regardless of who "owns" scrolling - using it here would falsely
|
|
38
|
+
* attribute document scrolling to every visible target) and never on
|
|
39
|
+
* computed overflow, `position: fixed`/`sticky`, target name, locator kind,
|
|
40
|
+
* or DOM hierarchy.
|
|
41
|
+
*
|
|
42
|
+
* Rules (frozen Batch 1 vocabulary):
|
|
43
|
+
* - no window movement, no target movement -> `none`;
|
|
44
|
+
* - window movement, no competing target movement -> `document`;
|
|
45
|
+
* - no window movement, exactly one target's own scroll position moved
|
|
46
|
+
* (on either or both axes - two axes of the *same* target is still one
|
|
47
|
+
* owner) -> `target:<name>`;
|
|
48
|
+
* - anything else (window plus a target, or more than one target) ->
|
|
49
|
+
* `indeterminate` - multiple plausible owners, never forced to pick one.
|
|
50
|
+
*/
|
|
51
|
+
export declare function deriveScrollOwner(transition: ScrollScenarioTransition): EvidenceField<ScrollOwnerInterpretation>;
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Derived only from a bounding rectangle (viewport-relative, as produced by
|
|
3
|
+
* `getBoundingClientRect()`) plus viewport width/height - never from source
|
|
4
|
+
* styles or locator kind (Batch 1 frozen contract). `above`/`below` require
|
|
5
|
+
* the rectangle to be *entirely* outside the viewport on that axis; any
|
|
6
|
+
* vertical overlap with `[0, viewport.height)` is `intersecting`.
|
|
7
|
+
*/
|
|
8
|
+
export function deriveViewportRelation(rect, viewport) {
|
|
9
|
+
const vertical = rect.bottom <= 0 ? 'above' : rect.y >= viewport.height ? 'below' : 'intersecting';
|
|
10
|
+
const intersectsViewport = rect.right > 0 && rect.x < viewport.width && rect.bottom > 0 && rect.y < viewport.height;
|
|
11
|
+
const fullyWithinViewport = rect.x >= 0 && rect.y >= 0 && rect.right <= viewport.width && rect.bottom <= viewport.height;
|
|
12
|
+
return { vertical, intersectsViewport, fullyWithinViewport };
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Distinguishes a computed `overflow-x`/`overflow-y` CSS declaration from
|
|
16
|
+
* actual dimensional overflow. `overflow-x: auto`/`overflow-y: scroll` alone
|
|
17
|
+
* never implies actual overflow - only `scrollWidth > clientWidth` /
|
|
18
|
+
* `scrollHeight > clientHeight` do.
|
|
19
|
+
*/
|
|
20
|
+
export function deriveOverflowEvidence(metrics, overflowX, overflowY) {
|
|
21
|
+
return {
|
|
22
|
+
horizontalOverflow: metrics.scrollWidth > metrics.clientWidth,
|
|
23
|
+
verticalOverflow: metrics.scrollHeight > metrics.clientHeight,
|
|
24
|
+
overflowX,
|
|
25
|
+
overflowY,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function numberChange(before, after) {
|
|
29
|
+
return { before, after, changed: before !== after };
|
|
30
|
+
}
|
|
31
|
+
function extractAvailable(field) {
|
|
32
|
+
return field.state === 'available' || field.state === 'partial' ? field.value : undefined;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Bounded before/after change evidence for one configured target across the
|
|
36
|
+
* one scroll action - not a generic recursive diff. Returns `undefined`
|
|
37
|
+
* (rather than fabricating zeroed/default values) when either snapshot's
|
|
38
|
+
* metrics/boundingRect/viewportRelation evidence for this target is not
|
|
39
|
+
* itself usable (e.g. the target never resolved), consistent with
|
|
40
|
+
* `enteredViewport`/`leftViewport` only being evaluated when both
|
|
41
|
+
* viewport-relation states are valid.
|
|
42
|
+
*/
|
|
43
|
+
export function deriveTargetScrollTransition(initial, final) {
|
|
44
|
+
const initialMetrics = extractAvailable(initial.metrics);
|
|
45
|
+
const finalMetrics = extractAvailable(final.metrics);
|
|
46
|
+
const initialRect = extractAvailable(initial.boundingRect);
|
|
47
|
+
const finalRect = extractAvailable(final.boundingRect);
|
|
48
|
+
const initialRelation = extractAvailable(initial.viewportRelation);
|
|
49
|
+
const finalRelation = extractAvailable(final.viewportRelation);
|
|
50
|
+
if (!initialMetrics || !finalMetrics || !initialRect || !finalRect || !initialRelation || !finalRelation) {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
const enteredViewport = !initialRelation.intersectsViewport && finalRelation.intersectsViewport;
|
|
54
|
+
const leftViewport = initialRelation.intersectsViewport && !finalRelation.intersectsViewport;
|
|
55
|
+
return {
|
|
56
|
+
scrollTop: numberChange(initialMetrics.scrollTop, finalMetrics.scrollTop),
|
|
57
|
+
scrollLeft: numberChange(initialMetrics.scrollLeft, finalMetrics.scrollLeft),
|
|
58
|
+
boundingRectPosition: {
|
|
59
|
+
before: { x: initialRect.x, y: initialRect.y },
|
|
60
|
+
after: { x: finalRect.x, y: finalRect.y },
|
|
61
|
+
changed: initialRect.x !== finalRect.x || initialRect.y !== finalRect.y,
|
|
62
|
+
},
|
|
63
|
+
viewportRelation: { before: initialRelation.vertical, after: finalRelation.vertical, changed: initialRelation.vertical !== finalRelation.vertical },
|
|
64
|
+
enteredViewport,
|
|
65
|
+
leftViewport,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/** Derives the bounded scenario transition evidence purely from the two already-captured runtime snapshots - no re-measurement, no generic JSON diffing. A target absent from either snapshot's `targets` map, or whose per-target transition cannot be derived (see `deriveTargetScrollTransition`), is simply omitted from `targets` here. */
|
|
69
|
+
export function deriveScrollScenarioTransition(initial, final) {
|
|
70
|
+
const targets = {};
|
|
71
|
+
for (const [name, initialState] of Object.entries(initial.targets)) {
|
|
72
|
+
const finalState = final.targets[name];
|
|
73
|
+
if (!finalState)
|
|
74
|
+
continue;
|
|
75
|
+
const transition = deriveTargetScrollTransition(initialState, finalState);
|
|
76
|
+
if (transition)
|
|
77
|
+
targets[name] = transition;
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
windowScrollX: numberChange(initial.window.scrollX, final.window.scrollX),
|
|
81
|
+
windowScrollY: numberChange(initial.window.scrollY, final.window.scrollY),
|
|
82
|
+
targets,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Conservative scroll-owner derivation, shared by both `window-scroll-by`
|
|
87
|
+
* and `target-scroll-by` scenarios: relies solely on observed scroll
|
|
88
|
+
* *position* changes (`scrollTop`/`scrollLeft`/`window.scrollX`/
|
|
89
|
+
* `window.scrollY`), never on a target's bounding-rectangle movement (which
|
|
90
|
+
* moves for every configured target whenever the document scrolls,
|
|
91
|
+
* regardless of who "owns" scrolling - using it here would falsely
|
|
92
|
+
* attribute document scrolling to every visible target) and never on
|
|
93
|
+
* computed overflow, `position: fixed`/`sticky`, target name, locator kind,
|
|
94
|
+
* or DOM hierarchy.
|
|
95
|
+
*
|
|
96
|
+
* Rules (frozen Batch 1 vocabulary):
|
|
97
|
+
* - no window movement, no target movement -> `none`;
|
|
98
|
+
* - window movement, no competing target movement -> `document`;
|
|
99
|
+
* - no window movement, exactly one target's own scroll position moved
|
|
100
|
+
* (on either or both axes - two axes of the *same* target is still one
|
|
101
|
+
* owner) -> `target:<name>`;
|
|
102
|
+
* - anything else (window plus a target, or more than one target) ->
|
|
103
|
+
* `indeterminate` - multiple plausible owners, never forced to pick one.
|
|
104
|
+
*/
|
|
105
|
+
export function deriveScrollOwner(transition) {
|
|
106
|
+
const windowMoved = transition.windowScrollX.changed || transition.windowScrollY.changed;
|
|
107
|
+
const changedTargetNames = Object.entries(transition.targets)
|
|
108
|
+
.filter(([, t]) => t.scrollTop.changed || t.scrollLeft.changed)
|
|
109
|
+
.map(([name]) => name);
|
|
110
|
+
let value;
|
|
111
|
+
let derivedFrom;
|
|
112
|
+
if (!windowMoved && changedTargetNames.length === 0) {
|
|
113
|
+
value = { kind: 'none' };
|
|
114
|
+
derivedFrom = ['window.scrollX', 'window.scrollY', ...Object.keys(transition.targets).flatMap((name) => [`${name}.scrollTop`, `${name}.scrollLeft`])];
|
|
115
|
+
}
|
|
116
|
+
else if (windowMoved && changedTargetNames.length === 0) {
|
|
117
|
+
value = { kind: 'document' };
|
|
118
|
+
derivedFrom = ['window.scrollX', 'window.scrollY'];
|
|
119
|
+
}
|
|
120
|
+
else if (!windowMoved && changedTargetNames.length === 1) {
|
|
121
|
+
const target = changedTargetNames[0];
|
|
122
|
+
value = { kind: 'target', target };
|
|
123
|
+
derivedFrom = [`${target}.scrollTop`, `${target}.scrollLeft`];
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
value = { kind: 'indeterminate' };
|
|
127
|
+
derivedFrom = [
|
|
128
|
+
...(windowMoved ? ['window.scrollX', 'window.scrollY'] : []),
|
|
129
|
+
...changedTargetNames.flatMap((name) => [`${name}.scrollTop`, `${name}.scrollLeft`]),
|
|
130
|
+
];
|
|
131
|
+
}
|
|
132
|
+
return { state: 'available', source: 'derived', value, derivedFrom };
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=scrollEvidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scrollEvidence.js","sourceRoot":"","sources":["../../src/domain/scrollEvidence.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,11 +4,11 @@ export type { DiagnosticCode, DiagnosticSeverity, Diagnostic } from './domain/di
|
|
|
4
4
|
export { DIAGNOSTIC_CODES, DIAGNOSTIC_SEVERITY, orderDiagnostics } from './domain/diagnostics.js';
|
|
5
5
|
export type { CompletionState, RequestPhase } from './domain/completion.js';
|
|
6
6
|
export { deriveCompletion } from './domain/completion.js';
|
|
7
|
-
export type { ObservationArtifact, ArtifactReference, TargetEvidenceRecord, TargetGeometry, TargetComputedStyle, TargetLayoutMetrics, TargetVisibility, TargetSemantics, TargetLocatorKind, TargetSelectionStatus, TargetSelectionConfidence, TargetLocatorAttemptStatus, TargetLocatorAttempt, TargetResolution, TargetSemanticState, TargetLandmarkRole, TargetContainment, SchemaValidationResult, } from './domain/schema.js';
|
|
7
|
+
export type { ObservationArtifact, ArtifactReference, TargetEvidenceRecord, TargetGeometry, TargetComputedStyle, TargetLayoutMetrics, TargetVisibility, TargetSemantics, TargetLocatorKind, TargetSelectionStatus, TargetSelectionConfidence, TargetLocatorAttemptStatus, TargetLocatorAttempt, TargetResolution, TargetSemanticState, TargetLandmarkRole, TargetContainment, SchemaValidationResult, ScrollableMetrics, OverflowEvidence, WindowScrollSnapshot, DocumentScrollSnapshot, VerticalViewportRelation, ViewportRelationEvidence, TargetScrollRuntimeState, ScrollRuntimeSnapshot, ScrollValueChange, TargetScrollTransition, ScrollScenarioTransition, ScrollOwnerInterpretation, ScrollScenarioEvidence, } from './domain/schema.js';
|
|
8
8
|
export { ARTIFACT_KIND, SCHEMA_VERSION, PRODUCER_NAME, TARGET_LANDMARK_ROLES, getProducerInfo, isValidObservationArtifact, } from './domain/schema.js';
|
|
9
9
|
export { buildRequestIdentity, buildObservationIdentity } from './domain/identity.js';
|
|
10
|
-
export type { NamedTarget, RawNamedTarget, TargetLocator, Viewport, ReadinessCondition, ReadinessConfig, NormalizedObservationRequest, RawObservationRequest, NormalizeRequestResult, } from './request/request.js';
|
|
11
|
-
export { normalizeRequest } from './request/request.js';
|
|
10
|
+
export type { NamedTarget, RawNamedTarget, TargetLocator, Viewport, ReadinessCondition, ReadinessConfig, NormalizedObservationRequest, RawObservationRequest, NormalizeRequestResult, ScrollAction, ScrollScenario, } from './request/request.js';
|
|
11
|
+
export { normalizeRequest, SCROLL_DELTA_MAX_ABS } from './request/request.js';
|
|
12
12
|
export type { NormalizeOutputLocationResult } from './request/paths.js';
|
|
13
13
|
export { normalizeOutputLocation } from './request/paths.js';
|
|
14
14
|
export type { SafetyDecision } from './safety/policy.js';
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ export { DIAGNOSTIC_CODES, DIAGNOSTIC_SEVERITY, orderDiagnostics } from './domai
|
|
|
3
3
|
export { deriveCompletion } from './domain/completion.js';
|
|
4
4
|
export { ARTIFACT_KIND, SCHEMA_VERSION, PRODUCER_NAME, TARGET_LANDMARK_ROLES, getProducerInfo, isValidObservationArtifact, } from './domain/schema.js';
|
|
5
5
|
export { buildRequestIdentity, buildObservationIdentity } from './domain/identity.js';
|
|
6
|
-
export { normalizeRequest } from './request/request.js';
|
|
6
|
+
export { normalizeRequest, SCROLL_DELTA_MAX_ABS } from './request/request.js';
|
|
7
7
|
export { normalizeOutputLocation } from './request/paths.js';
|
|
8
8
|
export { classifyUrl, classifyRedirect, classifySubresource, classifyPopup, classifyDownload } from './safety/policy.js';
|
|
9
9
|
export { runBrowserCapture } from './application/browserCaptureService.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGlG,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGlG,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAmC1D,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAetF,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAG7D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGzH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAG3E,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEvF,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC"}
|
|
@@ -39,6 +39,25 @@ export interface ReadinessConfig {
|
|
|
39
39
|
condition: ReadinessCondition;
|
|
40
40
|
timeoutMs: number;
|
|
41
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* v0.3 Batch 1 canonical scroll-action shape. Exactly the two bounded action
|
|
44
|
+
* kinds below are supported; `target` on `target-scroll-by` refers to the
|
|
45
|
+
* existing stable observer-owned target `name` (see `NamedTarget`), never a
|
|
46
|
+
* CSS selector, Playwright locator, or DOM id evaluated directly.
|
|
47
|
+
*/
|
|
48
|
+
export type ScrollAction = {
|
|
49
|
+
kind: 'window-scroll-by';
|
|
50
|
+
deltaX: number;
|
|
51
|
+
deltaY: number;
|
|
52
|
+
} | {
|
|
53
|
+
kind: 'target-scroll-by';
|
|
54
|
+
target: string;
|
|
55
|
+
deltaX: number;
|
|
56
|
+
deltaY: number;
|
|
57
|
+
};
|
|
58
|
+
export interface ScrollScenario {
|
|
59
|
+
action: ScrollAction;
|
|
60
|
+
}
|
|
42
61
|
export interface NormalizedObservationRequest {
|
|
43
62
|
targetUrl: string;
|
|
44
63
|
viewport: Viewport;
|
|
@@ -46,6 +65,7 @@ export interface NormalizedObservationRequest {
|
|
|
46
65
|
outputLocation: string;
|
|
47
66
|
timeoutMs: number;
|
|
48
67
|
readiness: ReadinessConfig;
|
|
68
|
+
scrollScenario?: ScrollScenario;
|
|
49
69
|
}
|
|
50
70
|
export interface RawObservationRequest {
|
|
51
71
|
targetUrl?: unknown;
|
|
@@ -54,6 +74,7 @@ export interface RawObservationRequest {
|
|
|
54
74
|
outputLocation?: unknown;
|
|
55
75
|
timeoutMs?: unknown;
|
|
56
76
|
readiness?: unknown;
|
|
77
|
+
scrollScenario?: unknown;
|
|
57
78
|
}
|
|
58
79
|
export type NormalizeRequestResult = {
|
|
59
80
|
ok: true;
|
|
@@ -62,6 +83,14 @@ export type NormalizeRequestResult = {
|
|
|
62
83
|
ok: false;
|
|
63
84
|
diagnostics: Diagnostic[];
|
|
64
85
|
};
|
|
86
|
+
/**
|
|
87
|
+
* Conservative bound for a single controlled-observation scroll action. No
|
|
88
|
+
* existing repository precedent for a scroll-delta magnitude; chosen large
|
|
89
|
+
* enough to reach realistic overflow content (documents/containers well
|
|
90
|
+
* beyond one viewport) while staying far short of a pathological/runaway
|
|
91
|
+
* request - see docs/CONTRACTS.md and tests/unit/request.test.ts.
|
|
92
|
+
*/
|
|
93
|
+
export declare const SCROLL_DELTA_MAX_ABS = 20000;
|
|
65
94
|
/**
|
|
66
95
|
* Total, never throws. Collects every applicable diagnostic before returning
|
|
67
96
|
* (does not short-circuit on the first violation) so callers see every
|