my-frontend-observer 0.1.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 +82 -1
- package/README.md +30 -7
- 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 +46 -3
- package/dist/browser/evidenceCapture.js +393 -94
- 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 +165 -7
- package/dist/cli.js.map +1 -1
- package/dist/domain/diagnostics.d.ts +1 -1
- package/dist/domain/diagnostics.js +2 -0
- package/dist/domain/diagnostics.js.map +1 -1
- package/dist/domain/identity.d.ts +8 -3
- package/dist/domain/identity.js +10 -4
- package/dist/domain/identity.js.map +1 -1
- package/dist/domain/schema.d.ts +164 -6
- package/dist/domain/schema.js +314 -4
- 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 +4 -4
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/request/request.d.ts +57 -1
- package/dist/request/request.js +292 -14
- package/dist/request/request.js.map +1 -1
- package/docs/ARCHITECTURE.md +62 -1
- package/docs/CI_CD.md +49 -8
- package/docs/COMMANDS.md +184 -9
- package/docs/CONTRACTS.md +135 -6
- package/docs/CURRENT_STATE.md +128 -6
- package/docs/DEVELOPMENT.md +41 -3
- package/docs/PROJECT_OVERVIEW.md +12 -6
- package/docs/QUICKSTART.md +3 -1
- package/docs/RELEASE.md +12 -5
- package/docs/ROADMAP.md +9 -0
- package/docs/SECURITY.md +6 -2
- package/docs/WORKFLOWS.md +41 -14
- package/package.json +1 -1
package/dist/domain/schema.d.ts
CHANGED
|
@@ -3,8 +3,27 @@ import type { Diagnostic } from './diagnostics.js';
|
|
|
3
3
|
import type { CompletionState } from './completion.js';
|
|
4
4
|
import type { NormalizedObservationRequest } from '../request/request.js';
|
|
5
5
|
export declare const ARTIFACT_KIND: "my-frontend-observer/observation";
|
|
6
|
-
export declare const SCHEMA_VERSION: "1.
|
|
6
|
+
export declare const SCHEMA_VERSION: "1.2.0";
|
|
7
7
|
export declare const PRODUCER_NAME: "my-frontend-observer";
|
|
8
|
+
export type TargetLocatorKind = 'role' | 'id' | 'data-attribute' | 'semantic-element' | 'css' | 'text';
|
|
9
|
+
export type TargetSelectionStatus = 'matched' | 'not-found' | 'ambiguous' | 'unavailable';
|
|
10
|
+
export type TargetSelectionConfidence = 'exact' | 'none';
|
|
11
|
+
export type TargetLocatorAttemptStatus = 'not-found' | 'ambiguous' | 'matched' | 'unavailable' | 'unsupported';
|
|
12
|
+
export interface TargetLocatorAttempt {
|
|
13
|
+
locatorIndex: number;
|
|
14
|
+
locatorKind: TargetLocatorKind;
|
|
15
|
+
status: TargetLocatorAttemptStatus;
|
|
16
|
+
matchCount?: number;
|
|
17
|
+
}
|
|
18
|
+
export interface TargetResolution {
|
|
19
|
+
selectionMethod: string;
|
|
20
|
+
selectionStatus: TargetSelectionStatus;
|
|
21
|
+
selectedLocatorKind?: TargetLocatorKind;
|
|
22
|
+
selectedLocatorIndex?: number;
|
|
23
|
+
usedFallback: boolean;
|
|
24
|
+
confidence: TargetSelectionConfidence;
|
|
25
|
+
attempts: TargetLocatorAttempt[];
|
|
26
|
+
}
|
|
8
27
|
export interface ArtifactReference {
|
|
9
28
|
path: string;
|
|
10
29
|
kind: string;
|
|
@@ -38,6 +57,31 @@ export interface TargetSemantics {
|
|
|
38
57
|
role?: string;
|
|
39
58
|
name?: string;
|
|
40
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Bounded first semantic-state family (Batch 3). Each key is present only
|
|
62
|
+
* when the browser exposes that state as applicable to this element (native
|
|
63
|
+
* form-control property or an explicit `aria-*` attribute) - an absent key
|
|
64
|
+
* means "not applicable to this element", never a guessed `false`. `checked`
|
|
65
|
+
* and `pressed` additionally support the browser's tri-state `'mixed'`
|
|
66
|
+
* value; `current` mirrors the `aria-current` value space (`true` for the
|
|
67
|
+
* bare/`"true"` form, or the specific token).
|
|
68
|
+
*/
|
|
69
|
+
export interface TargetSemanticState {
|
|
70
|
+
disabled?: boolean;
|
|
71
|
+
expanded?: boolean;
|
|
72
|
+
checked?: boolean | 'mixed';
|
|
73
|
+
selected?: boolean;
|
|
74
|
+
pressed?: boolean | 'mixed';
|
|
75
|
+
current?: true | 'page' | 'step' | 'location' | 'date' | 'time';
|
|
76
|
+
}
|
|
77
|
+
export declare const TARGET_LANDMARK_ROLES: readonly ["banner", "navigation", "main", "complementary", "contentinfo", "form", "region", "search"];
|
|
78
|
+
export type TargetLandmarkRole = (typeof TARGET_LANDMARK_ROLES)[number];
|
|
79
|
+
/** Bounded configured-target-only DOM containment (Batch 3) - not a layout/relationship graph. All arrays follow configured target order and exclude the target itself. */
|
|
80
|
+
export interface TargetContainment {
|
|
81
|
+
containedByTargetIds: string[];
|
|
82
|
+
evaluatedTargetIds: string[];
|
|
83
|
+
unresolvedTargetIds: string[];
|
|
84
|
+
}
|
|
41
85
|
/**
|
|
42
86
|
* Batch 1 froze the wrapper (EvidenceField<T>) and the category names
|
|
43
87
|
* (resolution/geometry/style) but deliberately left geometry/style typed
|
|
@@ -49,16 +93,129 @@ export interface TargetSemantics {
|
|
|
49
93
|
* existing caller loses a field.
|
|
50
94
|
*/
|
|
51
95
|
export interface TargetEvidenceRecord {
|
|
52
|
-
resolution: EvidenceField<
|
|
53
|
-
selectionMethod: string;
|
|
54
|
-
selectionStatus: string;
|
|
55
|
-
}>;
|
|
96
|
+
resolution: EvidenceField<TargetResolution>;
|
|
56
97
|
tag: EvidenceField<string>;
|
|
57
98
|
geometry: EvidenceField<TargetGeometry>;
|
|
58
99
|
style: EvidenceField<TargetComputedStyle>;
|
|
59
100
|
layout: EvidenceField<TargetLayoutMetrics>;
|
|
60
101
|
visibility: EvidenceField<TargetVisibility>;
|
|
61
102
|
semantics: EvidenceField<TargetSemantics>;
|
|
103
|
+
semanticState: EvidenceField<TargetSemanticState>;
|
|
104
|
+
landmark: EvidenceField<TargetLandmarkRole>;
|
|
105
|
+
containment: EvidenceField<TargetContainment>;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* v0.3 Batch 1 bounded runtime scroll/overflow evidence model. Frozen here
|
|
109
|
+
* as a contract; no browser capture populates it yet (Batch 2/3), so
|
|
110
|
+
* `scrollScenarioEvidence` on `ObservationArtifact` stays absent for every
|
|
111
|
+
* Batch-1-era observation, including one whose `requestConfig.scrollScenario`
|
|
112
|
+
* is present (see `src/browser/chromiumAdapter.ts`, which fails such a
|
|
113
|
+
* request honestly rather than pretending to execute it).
|
|
114
|
+
*/
|
|
115
|
+
export interface ScrollableMetrics {
|
|
116
|
+
scrollTop: number;
|
|
117
|
+
scrollLeft: number;
|
|
118
|
+
scrollWidth: number;
|
|
119
|
+
scrollHeight: number;
|
|
120
|
+
clientWidth: number;
|
|
121
|
+
clientHeight: number;
|
|
122
|
+
}
|
|
123
|
+
/** Distinguishes an `overflow-x`/`overflow-y` CSS declaration from actual browser-observed dimensional overflow - the two are not interchangeable (see docs/CONTRACTS.md). */
|
|
124
|
+
export interface OverflowEvidence {
|
|
125
|
+
horizontalOverflow: boolean;
|
|
126
|
+
verticalOverflow: boolean;
|
|
127
|
+
overflowX: string;
|
|
128
|
+
overflowY: string;
|
|
129
|
+
}
|
|
130
|
+
export interface WindowScrollSnapshot {
|
|
131
|
+
scrollX: number;
|
|
132
|
+
scrollY: number;
|
|
133
|
+
}
|
|
134
|
+
/** `documentElement`/`body` are omitted (not fabricated) when the browser's own scrolling/root-element representation makes them not meaningfully distinct or not observable. */
|
|
135
|
+
export interface DocumentScrollSnapshot {
|
|
136
|
+
root: ScrollableMetrics;
|
|
137
|
+
rootOverflow: OverflowEvidence;
|
|
138
|
+
documentElement?: ScrollableMetrics;
|
|
139
|
+
body?: ScrollableMetrics;
|
|
140
|
+
}
|
|
141
|
+
export type VerticalViewportRelation = 'above' | 'intersecting' | 'below';
|
|
142
|
+
/**
|
|
143
|
+
* Derived only from a target's bounding rectangle plus viewport width/height
|
|
144
|
+
* - never from source styles or locator kind. A hidden/non-rendered target
|
|
145
|
+
* (see `TargetVisibility`/`target-hidden`) must not receive normal
|
|
146
|
+
* above/below/intersecting geometry; its `viewportRelation` field on
|
|
147
|
+
* `TargetScrollRuntimeState` is `not-applicable` instead (hidden is not the
|
|
148
|
+
* same claim as offscreen).
|
|
149
|
+
*/
|
|
150
|
+
export interface ViewportRelationEvidence {
|
|
151
|
+
vertical: VerticalViewportRelation;
|
|
152
|
+
intersectsViewport: boolean;
|
|
153
|
+
fullyWithinViewport: boolean;
|
|
154
|
+
}
|
|
155
|
+
/** Bounded per-configured-target runtime scroll/overflow/viewport evidence for one snapshot (initial or final). References targets by the existing stable target `name` - never a second region identity - and never copies the full `TargetEvidenceRecord`. */
|
|
156
|
+
export interface TargetScrollRuntimeState {
|
|
157
|
+
metrics: EvidenceField<ScrollableMetrics>;
|
|
158
|
+
overflow: EvidenceField<OverflowEvidence>;
|
|
159
|
+
boundingRect: EvidenceField<TargetGeometry>;
|
|
160
|
+
viewportRelation: EvidenceField<ViewportRelationEvidence>;
|
|
161
|
+
}
|
|
162
|
+
/** One point-in-time bounded runtime snapshot (captured either before or after the one scroll action). */
|
|
163
|
+
export interface ScrollRuntimeSnapshot {
|
|
164
|
+
window: WindowScrollSnapshot;
|
|
165
|
+
document: DocumentScrollSnapshot;
|
|
166
|
+
targets: Record<string, TargetScrollRuntimeState>;
|
|
167
|
+
}
|
|
168
|
+
export interface ScrollValueChange<T> {
|
|
169
|
+
before: T;
|
|
170
|
+
after: T;
|
|
171
|
+
changed: boolean;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* `enteredViewport`/`leftViewport` are only evaluated when both the initial
|
|
175
|
+
* and final `viewportRelation` evidence are valid (never derived from a
|
|
176
|
+
* hidden-to-visible transition, which is a separate evidence concept - see
|
|
177
|
+
* docs/CONTRACTS.md).
|
|
178
|
+
*/
|
|
179
|
+
export interface TargetScrollTransition {
|
|
180
|
+
scrollTop: ScrollValueChange<number>;
|
|
181
|
+
scrollLeft: ScrollValueChange<number>;
|
|
182
|
+
boundingRectPosition: ScrollValueChange<{
|
|
183
|
+
x: number;
|
|
184
|
+
y: number;
|
|
185
|
+
}>;
|
|
186
|
+
viewportRelation: ScrollValueChange<VerticalViewportRelation>;
|
|
187
|
+
enteredViewport: boolean;
|
|
188
|
+
leftViewport: boolean;
|
|
189
|
+
}
|
|
190
|
+
/** Bounded explicit before/after change evidence for the one scroll action in this scenario - not a generic recursive diff engine. */
|
|
191
|
+
export interface ScrollScenarioTransition {
|
|
192
|
+
windowScrollX: ScrollValueChange<number>;
|
|
193
|
+
windowScrollY: ScrollValueChange<number>;
|
|
194
|
+
targets: Record<string, TargetScrollTransition>;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Conservative derived interpretation of which scrolling container actually
|
|
198
|
+
* moved. Never forces a winner: `none` when nothing relevant changed,
|
|
199
|
+
* `indeterminate` when more than one plausible owner changed or evidence is
|
|
200
|
+
* insufficient. `target` references the existing stable target `name`.
|
|
201
|
+
*/
|
|
202
|
+
export type ScrollOwnerInterpretation = {
|
|
203
|
+
kind: 'document';
|
|
204
|
+
} | {
|
|
205
|
+
kind: 'target';
|
|
206
|
+
target: string;
|
|
207
|
+
} | {
|
|
208
|
+
kind: 'none';
|
|
209
|
+
} | {
|
|
210
|
+
kind: 'indeterminate';
|
|
211
|
+
};
|
|
212
|
+
/** Top-level optional v0.3 evidence family. Present only when the request configured a `scrollScenario`; absent otherwise (never fabricated as empty/zeroed evidence). */
|
|
213
|
+
export interface ScrollScenarioEvidence {
|
|
214
|
+
initial: ScrollRuntimeSnapshot;
|
|
215
|
+
final: ScrollRuntimeSnapshot;
|
|
216
|
+
transition: ScrollScenarioTransition;
|
|
217
|
+
/** Always `source: 'derived'` with a non-empty `derivedFrom` (enforced by `isValidEvidenceField`/`isValidObservationArtifact`) - scroll ownership is an interpretation over browser-observed facts, never itself a direct browser observation. */
|
|
218
|
+
scrollOwner: EvidenceField<ScrollOwnerInterpretation>;
|
|
62
219
|
}
|
|
63
220
|
export interface ObservationArtifact {
|
|
64
221
|
artifactKind: typeof ARTIFACT_KIND;
|
|
@@ -80,6 +237,7 @@ export interface ObservationArtifact {
|
|
|
80
237
|
};
|
|
81
238
|
pageEvidence: Record<string, EvidenceField<unknown>>;
|
|
82
239
|
targetEvidence: Record<string, TargetEvidenceRecord>;
|
|
240
|
+
scrollScenarioEvidence?: ScrollScenarioEvidence;
|
|
83
241
|
screenshot: EvidenceField<{
|
|
84
242
|
path: string;
|
|
85
243
|
}>;
|
|
@@ -107,5 +265,5 @@ export declare function getProducerInfo(): {
|
|
|
107
265
|
name: typeof PRODUCER_NAME;
|
|
108
266
|
version: string;
|
|
109
267
|
};
|
|
110
|
-
/** Structural validator for the frozen schema-1.
|
|
268
|
+
/** Structural validator for the frozen schema-1.2.0 ObservationArtifact contract. Treats `value` as arbitrary/unknown input. */
|
|
111
269
|
export declare function isValidObservationArtifact(value: unknown): SchemaValidationResult;
|
package/dist/domain/schema.js
CHANGED
|
@@ -3,9 +3,11 @@ 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';
|
|
10
|
+
export const TARGET_LANDMARK_ROLES = ['banner', 'navigation', 'main', 'complementary', 'contentinfo', 'form', 'region', 'search'];
|
|
9
11
|
function readPackageVersion() {
|
|
10
12
|
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
11
13
|
const packageJsonPath = path.join(here, '..', '..', 'package.json');
|
|
@@ -27,6 +29,277 @@ export function getProducerInfo() {
|
|
|
27
29
|
function isPlainObject(value) {
|
|
28
30
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
29
31
|
}
|
|
32
|
+
const TARGET_LOCATOR_KINDS = ['role', 'id', 'data-attribute', 'semantic-element', 'css', 'text'];
|
|
33
|
+
const TARGET_SELECTION_STATUSES = ['matched', 'not-found', 'ambiguous', 'unavailable'];
|
|
34
|
+
const TARGET_SELECTION_CONFIDENCES = ['exact', 'none'];
|
|
35
|
+
const TARGET_LOCATOR_ATTEMPT_STATUSES = ['not-found', 'ambiguous', 'matched', 'unavailable', 'unsupported'];
|
|
36
|
+
function isValidTargetLocatorAttempt(value) {
|
|
37
|
+
if (!isPlainObject(value))
|
|
38
|
+
return false;
|
|
39
|
+
if (typeof value.locatorIndex !== 'number' || !Number.isInteger(value.locatorIndex) || value.locatorIndex < 0)
|
|
40
|
+
return false;
|
|
41
|
+
if (typeof value.locatorKind !== 'string' || !TARGET_LOCATOR_KINDS.includes(value.locatorKind))
|
|
42
|
+
return false;
|
|
43
|
+
if (typeof value.status !== 'string' || !TARGET_LOCATOR_ATTEMPT_STATUSES.includes(value.status))
|
|
44
|
+
return false;
|
|
45
|
+
if ('matchCount' in value && value.matchCount !== undefined && (typeof value.matchCount !== 'number' || !Number.isInteger(value.matchCount) || value.matchCount < 0)) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
/** Structural validator for the frozen schema-1.1.0 TargetResolution contract, including the selectedLocatorKind/selectedLocatorIndex-iff-matched and usedFallback-iff-nonzero-index invariants. */
|
|
51
|
+
function isValidTargetResolutionValue(value) {
|
|
52
|
+
if (!isPlainObject(value))
|
|
53
|
+
return false;
|
|
54
|
+
if (typeof value.selectionMethod !== 'string')
|
|
55
|
+
return false;
|
|
56
|
+
if (typeof value.selectionStatus !== 'string' || !TARGET_SELECTION_STATUSES.includes(value.selectionStatus))
|
|
57
|
+
return false;
|
|
58
|
+
if (typeof value.usedFallback !== 'boolean')
|
|
59
|
+
return false;
|
|
60
|
+
if (typeof value.confidence !== 'string' || !TARGET_SELECTION_CONFIDENCES.includes(value.confidence))
|
|
61
|
+
return false;
|
|
62
|
+
if (!Array.isArray(value.attempts) || !value.attempts.every((a) => isValidTargetLocatorAttempt(a)))
|
|
63
|
+
return false;
|
|
64
|
+
for (let i = 1; i < value.attempts.length; i += 1) {
|
|
65
|
+
if (value.attempts[i].locatorIndex <= value.attempts[i - 1].locatorIndex)
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
const isMatched = value.selectionStatus === 'matched';
|
|
69
|
+
const hasSelectedKind = 'selectedLocatorKind' in value && value.selectedLocatorKind !== undefined;
|
|
70
|
+
const hasSelectedIndex = 'selectedLocatorIndex' in value && value.selectedLocatorIndex !== undefined;
|
|
71
|
+
if (hasSelectedKind !== isMatched || hasSelectedIndex !== isMatched)
|
|
72
|
+
return false;
|
|
73
|
+
if (isMatched) {
|
|
74
|
+
if (typeof value.selectedLocatorKind !== 'string' || !TARGET_LOCATOR_KINDS.includes(value.selectedLocatorKind))
|
|
75
|
+
return false;
|
|
76
|
+
if (typeof value.selectedLocatorIndex !== 'number' || !Number.isInteger(value.selectedLocatorIndex) || value.selectedLocatorIndex < 0)
|
|
77
|
+
return false;
|
|
78
|
+
if (value.usedFallback !== value.selectedLocatorIndex > 0)
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
else if (value.usedFallback) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
const TARGET_CURRENT_VALUES = ['page', 'step', 'location', 'date', 'time'];
|
|
87
|
+
/** Structural validator for TargetSemanticState: every present key must use its exact supported value vocabulary; an absent key is valid (means "not applicable"). */
|
|
88
|
+
function isValidTargetSemanticState(value) {
|
|
89
|
+
if (!isPlainObject(value))
|
|
90
|
+
return false;
|
|
91
|
+
const keys = ['disabled', 'expanded', 'checked', 'selected', 'pressed', 'current'];
|
|
92
|
+
if (!Object.keys(value).every((k) => keys.includes(k)))
|
|
93
|
+
return false;
|
|
94
|
+
if ('disabled' in value && typeof value.disabled !== 'boolean')
|
|
95
|
+
return false;
|
|
96
|
+
if ('expanded' in value && typeof value.expanded !== 'boolean')
|
|
97
|
+
return false;
|
|
98
|
+
if ('checked' in value && typeof value.checked !== 'boolean' && value.checked !== 'mixed')
|
|
99
|
+
return false;
|
|
100
|
+
if ('selected' in value && typeof value.selected !== 'boolean')
|
|
101
|
+
return false;
|
|
102
|
+
if ('pressed' in value && typeof value.pressed !== 'boolean' && value.pressed !== 'mixed')
|
|
103
|
+
return false;
|
|
104
|
+
if ('current' in value && value.current !== true && !TARGET_CURRENT_VALUES.includes(value.current))
|
|
105
|
+
return false;
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
function isValidTargetLandmarkRole(value) {
|
|
109
|
+
return typeof value === 'string' && TARGET_LANDMARK_ROLES.includes(value);
|
|
110
|
+
}
|
|
111
|
+
/** Structural validator for TargetContainment: string arrays, no duplicates, and no target ID appearing in more than one of the three arrays. */
|
|
112
|
+
function isValidTargetContainment(value) {
|
|
113
|
+
if (!isPlainObject(value))
|
|
114
|
+
return false;
|
|
115
|
+
const isStringArray = (v) => Array.isArray(v) && v.every((entry) => typeof entry === 'string');
|
|
116
|
+
if (!isStringArray(value.containedByTargetIds) || !isStringArray(value.evaluatedTargetIds) || !isStringArray(value.unresolvedTargetIds))
|
|
117
|
+
return false;
|
|
118
|
+
const containedByTargetIds = value.containedByTargetIds;
|
|
119
|
+
const evaluatedTargetIds = value.evaluatedTargetIds;
|
|
120
|
+
const unresolvedTargetIds = value.unresolvedTargetIds;
|
|
121
|
+
const noDuplicates = (arr) => new Set(arr).size === arr.length;
|
|
122
|
+
if (!noDuplicates(containedByTargetIds) || !noDuplicates(evaluatedTargetIds) || !noDuplicates(unresolvedTargetIds))
|
|
123
|
+
return false;
|
|
124
|
+
if (!containedByTargetIds.every((id) => evaluatedTargetIds.includes(id)))
|
|
125
|
+
return false;
|
|
126
|
+
if (evaluatedTargetIds.some((id) => unresolvedTargetIds.includes(id)))
|
|
127
|
+
return false;
|
|
128
|
+
return true;
|
|
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
|
+
}
|
|
30
303
|
function isValidDiagnostic(value) {
|
|
31
304
|
if (!isPlainObject(value))
|
|
32
305
|
return false;
|
|
@@ -56,7 +329,7 @@ function isValidCompletionState(value) {
|
|
|
56
329
|
}
|
|
57
330
|
return false;
|
|
58
331
|
}
|
|
59
|
-
/** 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. */
|
|
60
333
|
export function isValidObservationArtifact(value) {
|
|
61
334
|
if (!isPlainObject(value))
|
|
62
335
|
return { valid: false, reason: 'artifact must be an object' };
|
|
@@ -91,12 +364,49 @@ export function isValidObservationArtifact(value) {
|
|
|
91
364
|
!isValidEvidenceField(target.style) ||
|
|
92
365
|
!isValidEvidenceField(target.layout) ||
|
|
93
366
|
!isValidEvidenceField(target.visibility) ||
|
|
94
|
-
!isValidEvidenceField(target.semantics)
|
|
367
|
+
!isValidEvidenceField(target.semantics) ||
|
|
368
|
+
!isValidEvidenceField(target.semanticState) ||
|
|
369
|
+
!isValidEvidenceField(target.landmark) ||
|
|
370
|
+
!isValidEvidenceField(target.containment)) {
|
|
95
371
|
return {
|
|
96
372
|
valid: false,
|
|
97
|
-
reason: 'targetEvidence entries must have valid resolution/tag/geometry/style/layout/visibility/semantics evidence fields',
|
|
373
|
+
reason: 'targetEvidence entries must have valid resolution/tag/geometry/style/layout/visibility/semantics/semanticState/landmark/containment evidence fields',
|
|
98
374
|
};
|
|
99
375
|
}
|
|
376
|
+
const resolutionField = target.resolution;
|
|
377
|
+
if (resolutionField.state === 'available' || resolutionField.state === 'partial') {
|
|
378
|
+
if (!isValidTargetResolutionValue(resolutionField.value)) {
|
|
379
|
+
return { valid: false, reason: 'targetEvidence resolution value must be a valid TargetResolution' };
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
const semanticStateField = target.semanticState;
|
|
383
|
+
if (semanticStateField.state === 'available' || semanticStateField.state === 'partial') {
|
|
384
|
+
if (!isValidTargetSemanticState(semanticStateField.value)) {
|
|
385
|
+
return { valid: false, reason: 'targetEvidence semanticState value must be a valid TargetSemanticState' };
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
const landmarkField = target.landmark;
|
|
389
|
+
if (landmarkField.state === 'available' || landmarkField.state === 'partial') {
|
|
390
|
+
if (!isValidTargetLandmarkRole(landmarkField.value)) {
|
|
391
|
+
return { valid: false, reason: 'targetEvidence landmark value must be a recognized landmark role' };
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
const containmentField = target.containment;
|
|
395
|
+
if (containmentField.state === 'available' || containmentField.state === 'partial') {
|
|
396
|
+
if (!isValidTargetContainment(containmentField.value)) {
|
|
397
|
+
return { valid: false, reason: 'targetEvidence containment value must be a valid TargetContainment' };
|
|
398
|
+
}
|
|
399
|
+
}
|
|
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
|
+
}
|
|
100
410
|
}
|
|
101
411
|
if (!isValidEvidenceField(value.screenshot))
|
|
102
412
|
return { valid: false, reason: 'screenshot evidence field is invalid' };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/domain/schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/domain/schema.ts"],"names":[],"mappings":"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"}
|