@opendatalabs/personal-server-ts-core 1.33.8 → 1.34.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/dist/additions/budget.d.ts +28 -0
- package/dist/additions/budget.d.ts.map +1 -0
- package/dist/additions/budget.js +119 -0
- package/dist/additions/budget.js.map +1 -0
- package/dist/additions/durable.d.ts +64 -0
- package/dist/additions/durable.d.ts.map +1 -0
- package/dist/additions/durable.js +591 -0
- package/dist/additions/durable.js.map +1 -0
- package/dist/additions/first-added.d.ts +32 -48
- package/dist/additions/first-added.d.ts.map +1 -1
- package/dist/additions/first-added.js +68 -123
- package/dist/additions/first-added.js.map +1 -1
- package/dist/additions/index.d.ts +3 -0
- package/dist/additions/index.d.ts.map +1 -1
- package/dist/additions/index.js +3 -0
- package/dist/additions/index.js.map +1 -1
- package/dist/additions/ledger-store.js +1 -1
- package/dist/additions/record-rules.d.ts.map +1 -1
- package/dist/additions/record-rules.js +7 -0
- package/dist/additions/record-rules.js.map +1 -1
- package/dist/additions/summary.d.ts +88 -1
- package/dist/additions/summary.d.ts.map +1 -1
- package/dist/additions/summary.js +173 -8
- package/dist/additions/summary.js.map +1 -1
- package/dist/additions/version-inventory.d.ts +80 -0
- package/dist/additions/version-inventory.d.ts.map +1 -0
- package/dist/additions/version-inventory.js +232 -0
- package/dist/additions/version-inventory.js.map +1 -0
- package/dist/api/index.d.ts +70 -2
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +506 -79
- package/dist/api/index.js.map +1 -1
- package/dist/auth/index.d.ts +1 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +1 -1
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/request.d.ts +6 -0
- package/dist/auth/request.d.ts.map +1 -1
- package/dist/auth/request.js +66 -4
- package/dist/auth/request.js.map +1 -1
- package/dist/contracts/data.d.ts +54 -8
- package/dist/contracts/data.d.ts.map +1 -1
- package/dist/contracts/data.js +178 -35
- package/dist/contracts/data.js.map +1 -1
- package/dist/contracts/index.d.ts +1 -1
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/derivatives/registration.d.ts +0 -5
- package/dist/derivatives/registration.d.ts.map +1 -1
- package/dist/derivatives/registration.js +2 -1
- package/dist/derivatives/registration.js.map +1 -1
- package/dist/errors/pdpp-catalog.d.ts +36 -0
- package/dist/errors/pdpp-catalog.d.ts.map +1 -0
- package/dist/errors/pdpp-catalog.js +86 -0
- package/dist/errors/pdpp-catalog.js.map +1 -0
- package/dist/grants/index.d.ts +2 -0
- package/dist/grants/index.d.ts.map +1 -1
- package/dist/grants/index.js +4 -0
- package/dist/grants/index.js.map +1 -1
- package/dist/grants/pdpp-binding-store.d.ts +89 -0
- package/dist/grants/pdpp-binding-store.d.ts.map +1 -0
- package/dist/grants/pdpp-binding-store.js +112 -0
- package/dist/grants/pdpp-binding-store.js.map +1 -0
- package/dist/grants/pdpp-binding.d.ts +169 -0
- package/dist/grants/pdpp-binding.d.ts.map +1 -0
- package/dist/grants/pdpp-binding.js +236 -0
- package/dist/grants/pdpp-binding.js.map +1 -0
- package/dist/legacy-projection/bindings.d.ts +28 -1
- package/dist/legacy-projection/bindings.d.ts.map +1 -1
- package/dist/legacy-projection/bindings.js +622 -189
- package/dist/legacy-projection/bindings.js.map +1 -1
- package/dist/legacy-projection/claude-source-record.d.ts +22 -0
- package/dist/legacy-projection/claude-source-record.d.ts.map +1 -0
- package/dist/legacy-projection/claude-source-record.js +360 -0
- package/dist/legacy-projection/claude-source-record.js.map +1 -0
- package/dist/legacy-projection/declared-text.d.ts +41 -0
- package/dist/legacy-projection/declared-text.d.ts.map +1 -0
- package/dist/legacy-projection/declared-text.js +199 -0
- package/dist/legacy-projection/declared-text.js.map +1 -0
- package/dist/legacy-projection/github-browser-bindings.d.ts.map +1 -1
- package/dist/legacy-projection/github-browser-bindings.js +89 -5
- package/dist/legacy-projection/github-browser-bindings.js.map +1 -1
- package/dist/legacy-projection/github-legacy-fields.d.ts +6 -0
- package/dist/legacy-projection/github-legacy-fields.d.ts.map +1 -0
- package/dist/legacy-projection/github-legacy-fields.js +202 -0
- package/dist/legacy-projection/github-legacy-fields.js.map +1 -0
- package/dist/legacy-projection/index.d.ts +3 -1
- package/dist/legacy-projection/index.d.ts.map +1 -1
- package/dist/legacy-projection/index.js +49 -1
- package/dist/legacy-projection/index.js.map +1 -1
- package/dist/legacy-projection/oura-browser-bindings.d.ts.map +1 -1
- package/dist/legacy-projection/oura-browser-bindings.js +43 -41
- package/dist/legacy-projection/oura-browser-bindings.js.map +1 -1
- package/dist/legacy-projection/types.d.ts +38 -2
- package/dist/legacy-projection/types.d.ts.map +1 -1
- package/dist/mcp/resources.d.ts.map +1 -1
- package/dist/mcp/resources.js +3 -0
- package/dist/mcp/resources.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +11 -2
- package/dist/mcp/tools.js.map +1 -1
- package/dist/pdpp/approval.d.ts +271 -0
- package/dist/pdpp/approval.d.ts.map +1 -0
- package/dist/pdpp/approval.js +467 -0
- package/dist/pdpp/approval.js.map +1 -0
- package/dist/pdpp/client-identity.d.ts +88 -0
- package/dist/pdpp/client-identity.d.ts.map +1 -0
- package/dist/pdpp/client-identity.js +196 -0
- package/dist/pdpp/client-identity.js.map +1 -0
- package/dist/pdpp/client-metadata.d.ts +95 -0
- package/dist/pdpp/client-metadata.d.ts.map +1 -0
- package/dist/pdpp/client-metadata.js +96 -0
- package/dist/pdpp/client-metadata.js.map +1 -0
- package/dist/pdpp/commitments.d.ts +75 -0
- package/dist/pdpp/commitments.d.ts.map +1 -0
- package/dist/pdpp/commitments.js +113 -0
- package/dist/pdpp/commitments.js.map +1 -0
- package/dist/pdpp/declaration.d.ts +118 -0
- package/dist/pdpp/declaration.d.ts.map +1 -0
- package/dist/pdpp/declaration.js +836 -0
- package/dist/pdpp/declaration.js.map +1 -0
- package/dist/pdpp/index.d.ts +37 -0
- package/dist/pdpp/index.d.ts.map +1 -0
- package/dist/pdpp/index.js +23 -0
- package/dist/pdpp/index.js.map +1 -0
- package/dist/pdpp/issuance.d.ts +126 -0
- package/dist/pdpp/issuance.d.ts.map +1 -0
- package/dist/pdpp/issuance.js +180 -0
- package/dist/pdpp/issuance.js.map +1 -0
- package/dist/pdpp/pkce.d.ts +53 -0
- package/dist/pdpp/pkce.d.ts.map +1 -0
- package/dist/pdpp/pkce.js +109 -0
- package/dist/pdpp/pkce.js.map +1 -0
- package/dist/pdpp/redirect.d.ts +60 -0
- package/dist/pdpp/redirect.d.ts.map +1 -0
- package/dist/pdpp/redirect.js +125 -0
- package/dist/pdpp/redirect.js.map +1 -0
- package/dist/pdpp/resolve.d.ts +109 -0
- package/dist/pdpp/resolve.d.ts.map +1 -0
- package/dist/pdpp/resolve.js +393 -0
- package/dist/pdpp/resolve.js.map +1 -0
- package/dist/pdpp/review.d.ts +280 -0
- package/dist/pdpp/review.d.ts.map +1 -0
- package/dist/pdpp/review.js +205 -0
- package/dist/pdpp/review.js.map +1 -0
- package/dist/pdpp/selection.d.ts +50 -0
- package/dist/pdpp/selection.d.ts.map +1 -0
- package/dist/pdpp/selection.js +442 -0
- package/dist/pdpp/selection.js.map +1 -0
- package/dist/pdpp/store.d.ts +228 -0
- package/dist/pdpp/store.d.ts.map +1 -0
- package/dist/pdpp/store.js +542 -0
- package/dist/pdpp/store.js.map +1 -0
- package/dist/pdpp/tokens.d.ts +181 -0
- package/dist/pdpp/tokens.d.ts.map +1 -0
- package/dist/pdpp/tokens.js +419 -0
- package/dist/pdpp/tokens.js.map +1 -0
- package/dist/pdpp/types.d.ts +441 -0
- package/dist/pdpp/types.d.ts.map +1 -0
- package/dist/pdpp/types.js +61 -0
- package/dist/pdpp/types.js.map +1 -0
- package/dist/pdpp-version.d.ts +28 -0
- package/dist/pdpp-version.d.ts.map +1 -0
- package/dist/pdpp-version.js +28 -0
- package/dist/pdpp-version.js.map +1 -0
- package/dist/policy/data-read.d.ts +24 -0
- package/dist/policy/data-read.d.ts.map +1 -1
- package/dist/policy/data-read.js +60 -3
- package/dist/policy/data-read.js.map +1 -1
- package/dist/policy/data-write.d.ts.map +1 -1
- package/dist/policy/data-write.js +3 -0
- package/dist/policy/data-write.js.map +1 -1
- package/dist/policy/index.d.ts +1 -0
- package/dist/policy/index.d.ts.map +1 -1
- package/dist/policy/index.js +1 -0
- package/dist/policy/index.js.map +1 -1
- package/dist/policy/reserved-scopes.d.ts +3 -0
- package/dist/policy/reserved-scopes.d.ts.map +1 -0
- package/dist/policy/reserved-scopes.js +5 -0
- package/dist/policy/reserved-scopes.js.map +1 -0
- package/dist/ports/index.d.ts +63 -0
- package/dist/ports/index.d.ts.map +1 -1
- package/dist/ports/index.js.map +1 -1
- package/dist/ports/pdpp-auth.d.ts +129 -0
- package/dist/ports/pdpp-auth.d.ts.map +1 -0
- package/dist/ports/pdpp-auth.js +60 -0
- package/dist/ports/pdpp-auth.js.map +1 -0
- package/dist/ports/pdpp-auth.test-utils.d.ts +9 -0
- package/dist/ports/pdpp-auth.test-utils.d.ts.map +1 -0
- package/dist/ports/pdpp-auth.test-utils.js +18 -0
- package/dist/ports/pdpp-auth.test-utils.js.map +1 -0
- package/dist/schemas/server-config.d.ts +44 -0
- package/dist/schemas/server-config.d.ts.map +1 -1
- package/dist/schemas/server-config.js +91 -0
- package/dist/schemas/server-config.js.map +1 -1
- package/dist/signing/request-signer.d.ts +2 -0
- package/dist/signing/request-signer.d.ts.map +1 -1
- package/dist/signing/request-signer.js +1 -0
- package/dist/signing/request-signer.js.map +1 -1
- package/dist/storage/adapters/interface.d.ts +3 -0
- package/dist/storage/adapters/interface.d.ts.map +1 -1
- package/dist/storage/adapters/vana-audience.d.ts +12 -0
- package/dist/storage/adapters/vana-audience.d.ts.map +1 -0
- package/dist/storage/adapters/vana-audience.js +72 -0
- package/dist/storage/adapters/vana-audience.js.map +1 -0
- package/dist/storage/adapters/vana.d.ts +2 -0
- package/dist/storage/adapters/vana.d.ts.map +1 -1
- package/dist/storage/adapters/vana.js +53 -20
- package/dist/storage/adapters/vana.js.map +1 -1
- package/dist/storage/canonical-legacy-projection.d.ts +262 -0
- package/dist/storage/canonical-legacy-projection.d.ts.map +1 -0
- package/dist/storage/canonical-legacy-projection.js +761 -0
- package/dist/storage/canonical-legacy-projection.js.map +1 -0
- package/dist/storage/index/manager.d.ts +29 -2
- package/dist/storage/index/manager.d.ts.map +1 -1
- package/dist/storage/index/schema.d.ts +1 -1
- package/dist/storage/index/schema.js +1 -1
- package/dist/storage/index/types.d.ts +7 -1
- package/dist/storage/index/types.d.ts.map +1 -1
- package/dist/storage/legacy-projection.d.ts +4 -3
- package/dist/storage/legacy-projection.d.ts.map +1 -1
- package/dist/storage/legacy-projection.js +145 -42
- package/dist/storage/legacy-projection.js.map +1 -1
- package/dist/storage/legacy-scope-coverage-exceptions.d.ts +8 -0
- package/dist/storage/legacy-scope-coverage-exceptions.d.ts.map +1 -0
- package/dist/storage/legacy-scope-coverage-exceptions.js +10 -0
- package/dist/storage/legacy-scope-coverage-exceptions.js.map +1 -0
- package/dist/storage/legacy-scope-coverage.d.ts +53 -0
- package/dist/storage/legacy-scope-coverage.d.ts.map +1 -0
- package/dist/storage/legacy-scope-coverage.js +403 -0
- package/dist/storage/legacy-scope-coverage.js.map +1 -0
- package/dist/storage/legacy-scope-entity-keys.d.ts +4 -0
- package/dist/storage/legacy-scope-entity-keys.d.ts.map +1 -0
- package/dist/storage/legacy-scope-entity-keys.js +92 -0
- package/dist/storage/legacy-scope-entity-keys.js.map +1 -0
- package/dist/storage/legacy-scope-view.d.ts +154 -0
- package/dist/storage/legacy-scope-view.d.ts.map +1 -0
- package/dist/storage/legacy-scope-view.js +735 -0
- package/dist/storage/legacy-scope-view.js.map +1 -0
- package/dist/storage/pdpp-records/completion.d.ts +91 -0
- package/dist/storage/pdpp-records/completion.d.ts.map +1 -0
- package/dist/storage/pdpp-records/completion.js +170 -0
- package/dist/storage/pdpp-records/completion.js.map +1 -0
- package/dist/storage/pdpp-records/cursor.d.ts +41 -0
- package/dist/storage/pdpp-records/cursor.d.ts.map +1 -0
- package/dist/storage/pdpp-records/cursor.js +49 -0
- package/dist/storage/pdpp-records/cursor.js.map +1 -0
- package/dist/storage/pdpp-records/declaration-witness.d.ts +58 -0
- package/dist/storage/pdpp-records/declaration-witness.d.ts.map +1 -0
- package/dist/storage/pdpp-records/declaration-witness.js +230 -0
- package/dist/storage/pdpp-records/declaration-witness.js.map +1 -0
- package/dist/storage/pdpp-records/enforcement.d.ts +52 -0
- package/dist/storage/pdpp-records/enforcement.d.ts.map +1 -0
- package/dist/storage/pdpp-records/enforcement.js +116 -0
- package/dist/storage/pdpp-records/enforcement.js.map +1 -0
- package/dist/storage/pdpp-records/index.d.ts +5 -0
- package/dist/storage/pdpp-records/index.d.ts.map +1 -0
- package/dist/storage/pdpp-records/index.js +5 -0
- package/dist/storage/pdpp-records/index.js.map +1 -0
- package/dist/storage/pdpp-records/ingest-plan.d.ts +39 -0
- package/dist/storage/pdpp-records/ingest-plan.d.ts.map +1 -0
- package/dist/storage/pdpp-records/ingest-plan.js +103 -0
- package/dist/storage/pdpp-records/ingest-plan.js.map +1 -0
- package/dist/storage/pdpp-records/interface.d.ts +104 -0
- package/dist/storage/pdpp-records/interface.d.ts.map +1 -0
- package/dist/storage/pdpp-records/interface.js +2 -0
- package/dist/storage/pdpp-records/interface.js.map +1 -0
- package/dist/storage/pdpp-records/memory-store.d.ts +9 -0
- package/dist/storage/pdpp-records/memory-store.d.ts.map +1 -0
- package/dist/storage/pdpp-records/memory-store.js +466 -0
- package/dist/storage/pdpp-records/memory-store.js.map +1 -0
- package/dist/storage/pdpp-records/portable.d.ts +9 -0
- package/dist/storage/pdpp-records/portable.d.ts.map +1 -0
- package/dist/storage/pdpp-records/portable.js +8 -0
- package/dist/storage/pdpp-records/portable.js.map +1 -0
- package/dist/storage/pdpp-records/read-port.d.ts +44 -0
- package/dist/storage/pdpp-records/read-port.d.ts.map +1 -0
- package/dist/storage/pdpp-records/read-port.js +22 -0
- package/dist/storage/pdpp-records/read-port.js.map +1 -0
- package/dist/storage/pdpp-records/record-key.d.ts +52 -0
- package/dist/storage/pdpp-records/record-key.d.ts.map +1 -0
- package/dist/storage/pdpp-records/record-key.js +97 -0
- package/dist/storage/pdpp-records/record-key.js.map +1 -0
- package/dist/storage/pdpp-records/schema.d.ts +41 -0
- package/dist/storage/pdpp-records/schema.d.ts.map +1 -0
- package/dist/storage/pdpp-records/schema.js +153 -0
- package/dist/storage/pdpp-records/schema.js.map +1 -0
- package/dist/storage/pdpp-records/stream-declaration.d.ts +88 -0
- package/dist/storage/pdpp-records/stream-declaration.d.ts.map +1 -0
- package/dist/storage/pdpp-records/stream-declaration.js +57 -0
- package/dist/storage/pdpp-records/stream-declaration.js.map +1 -0
- package/dist/storage/pdpp-records/types.d.ts +138 -0
- package/dist/storage/pdpp-records/types.d.ts.map +1 -0
- package/dist/storage/pdpp-records/types.js +38 -0
- package/dist/storage/pdpp-records/types.js.map +1 -0
- package/dist/sync/data-point-feed.d.ts +3 -0
- package/dist/sync/data-point-feed.d.ts.map +1 -1
- package/dist/sync/data-point-feed.js +17 -1
- package/dist/sync/data-point-feed.js.map +1 -1
- package/dist/sync/delete-data-port.d.ts +2 -0
- package/dist/sync/delete-data-port.d.ts.map +1 -1
- package/dist/sync/delete-data-port.js +1 -1
- package/dist/sync/delete-data-port.js.map +1 -1
- package/dist/sync/engine/sync-manager.d.ts.map +1 -1
- package/dist/sync/engine/sync-manager.js +5 -2
- package/dist/sync/engine/sync-manager.js.map +1 -1
- package/dist/sync/index.d.ts +3 -1
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +4 -0
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/pdpp-import.d.ts +192 -0
- package/dist/sync/pdpp-import.d.ts.map +1 -0
- package/dist/sync/pdpp-import.js +441 -0
- package/dist/sync/pdpp-import.js.map +1 -0
- package/dist/sync/scope-deletions.d.ts +10 -0
- package/dist/sync/scope-deletions.d.ts.map +1 -1
- package/dist/sync/scope-deletions.js +40 -7
- package/dist/sync/scope-deletions.js.map +1 -1
- package/dist/sync/workers/download.d.ts +14 -0
- package/dist/sync/workers/download.d.ts.map +1 -1
- package/dist/sync/workers/download.js +149 -13
- package/dist/sync/workers/download.js.map +1 -1
- package/dist/sync/workers/upload.d.ts +2 -0
- package/dist/sync/workers/upload.d.ts.map +1 -1
- package/dist/sync/workers/upload.js +7 -0
- package/dist/sync/workers/upload.js.map +1 -1
- package/dist/test-utils/memory-storage.d.ts +1 -1
- package/dist/test-utils/memory-storage.d.ts.map +1 -1
- package/dist/test-utils/memory-storage.js +11 -5
- package/dist/test-utils/memory-storage.js.map +1 -1
- package/package.json +54 -4
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A pure coverage check for a latest legacy body and its canonical projection.
|
|
3
|
+
* Entity arrays use stable keys. Same-time comparisons retain relative order;
|
|
4
|
+
* newer canonical state may reorder or, with proof, delete entities.
|
|
5
|
+
* Diagnostics contain paths and counts, never entity keys or field values.
|
|
6
|
+
*/
|
|
7
|
+
import type { ProjectionOmission } from "../legacy-projection/types.js";
|
|
8
|
+
export interface LegacyCoverageSchema {
|
|
9
|
+
type?: string | readonly string[];
|
|
10
|
+
properties?: Record<string, LegacyCoverageSchema>;
|
|
11
|
+
items?: LegacyCoverageSchema;
|
|
12
|
+
schema?: LegacyCoverageSchema;
|
|
13
|
+
}
|
|
14
|
+
export interface LegacyCoverageOptions {
|
|
15
|
+
/** Scope being compared. */
|
|
16
|
+
scope?: string;
|
|
17
|
+
/** Raw-value-backed omissions emitted by this exact canonical projection. */
|
|
18
|
+
projectionOmissions?: readonly ProjectionOmission[];
|
|
19
|
+
/** JSON paths to entity arrays; [] marks each array element, e.g. $.posts[].comments. */
|
|
20
|
+
entityKeys?: Readonly<Record<string, readonly string[]>>;
|
|
21
|
+
/** Legacy payload schema. An `id` or `uuid` item field supplies a key. */
|
|
22
|
+
schema?: LegacyCoverageSchema;
|
|
23
|
+
/** Maximum canonical/legacy byte ratio before payload growth can refuse takeover. Default 1.5. */
|
|
24
|
+
maxPayloadRatio?: number;
|
|
25
|
+
/** Minimum extra bytes required before payload growth can refuse takeover. Default 256 KiB. */
|
|
26
|
+
maxExtraBytes?: number;
|
|
27
|
+
/** True only when the canonical state is known to follow the legacy head. */
|
|
28
|
+
canonicalNewer?: boolean;
|
|
29
|
+
/** True only with accepted completion proof for a replacement newer than the legacy head. */
|
|
30
|
+
allowProvenDeletion?: boolean;
|
|
31
|
+
}
|
|
32
|
+
export type LegacyCoverageReason = "no_stable_key" | "missing_entity" | "missing_field" | "field_mismatch" | "type_mismatch" | "timestamp_format" | "identity_mismatch" | "creation_mismatch" | "array_order" | "payload_growth" | "missing_raw_blob" | "projection_unavailable";
|
|
33
|
+
export interface LegacyCoverageVerdict {
|
|
34
|
+
comparisonCase: "same_time" | "canonical_newer";
|
|
35
|
+
covered: boolean;
|
|
36
|
+
reason: LegacyCoverageReason | null;
|
|
37
|
+
/** Counts include accepted proven deletions, which do not block coverage. */
|
|
38
|
+
reasonCounts: Record<LegacyCoverageReason, number>;
|
|
39
|
+
/** Reviewed legacy defects and provenance-backed omissions used in this evaluation. */
|
|
40
|
+
appliedExceptions: {
|
|
41
|
+
path: string;
|
|
42
|
+
reason: string;
|
|
43
|
+
authority: "canonical";
|
|
44
|
+
}[];
|
|
45
|
+
missingEntityCount: number;
|
|
46
|
+
mismatchedFieldPaths: string[];
|
|
47
|
+
legacyBytes: number;
|
|
48
|
+
canonicalBytes: number;
|
|
49
|
+
byteDelta: number;
|
|
50
|
+
}
|
|
51
|
+
/** Compare JSON payloads, not file envelopes: metadata is outside the coverage rule. */
|
|
52
|
+
export declare function compareLegacyCoverage(legacyPayload: unknown, canonicalPayload: unknown, options?: LegacyCoverageOptions): LegacyCoverageVerdict;
|
|
53
|
+
//# sourceMappingURL=legacy-scope-coverage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-scope-coverage.d.ts","sourceRoot":"","sources":["../../src/storage/legacy-scope-coverage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGxE,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAClD,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAC7B,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,mBAAmB,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpD,yFAAyF;IACzF,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;IACzD,0EAA0E;IAC1E,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,kGAAkG;IAClG,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+FAA+F;IAC/F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,6FAA6F;IAC7F,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,MAAM,oBAAoB,GAC5B,eAAe,GACf,gBAAgB,GAChB,eAAe,GACf,gBAAgB,GAChB,eAAe,GACf,kBAAkB,GAClB,mBAAmB,GACnB,mBAAmB,GACnB,aAAa,GACb,gBAAgB,GAChB,kBAAkB,GAClB,wBAAwB,CAAC;AAE7B,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,WAAW,GAAG,iBAAiB,CAAC;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACpC,6EAA6E;IAC7E,YAAY,EAAE,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACnD,uFAAuF;IACvF,iBAAiB,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,WAAW,CAAC;KACxB,EAAE,CAAC;IACJ,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AA6GD,wFAAwF;AACxF,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,OAAO,EACtB,gBAAgB,EAAE,OAAO,EACzB,OAAO,GAAE,qBAA0B,GAClC,qBAAqB,CA+XvB"}
|
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
import { LEGACY_COVERAGE_EXCEPTIONS } from "./legacy-scope-coverage-exceptions.js";
|
|
2
|
+
const METADATA_FIELDS = new Set([
|
|
3
|
+
"fetched_at",
|
|
4
|
+
"collectedAt",
|
|
5
|
+
"collected_at",
|
|
6
|
+
"synced_at",
|
|
7
|
+
]);
|
|
8
|
+
const CREATION_FIELDS = new Set([
|
|
9
|
+
"created_at",
|
|
10
|
+
"createdAt",
|
|
11
|
+
"createdTime",
|
|
12
|
+
"creationTime",
|
|
13
|
+
"create_time",
|
|
14
|
+
"creationDate",
|
|
15
|
+
"dateCreated",
|
|
16
|
+
"creation_time",
|
|
17
|
+
]);
|
|
18
|
+
function jsonType(value) {
|
|
19
|
+
if (value === null)
|
|
20
|
+
return "null";
|
|
21
|
+
if (Array.isArray(value))
|
|
22
|
+
return "array";
|
|
23
|
+
return typeof value === "object" ? "object" : typeof value;
|
|
24
|
+
}
|
|
25
|
+
function timestampFormat(value) {
|
|
26
|
+
if (typeof value === "number")
|
|
27
|
+
return "epoch_number";
|
|
28
|
+
if (typeof value !== "string")
|
|
29
|
+
return jsonType(value);
|
|
30
|
+
if (/^\d{4}-\d{2}-\d{2}$/.test(value))
|
|
31
|
+
return "date_only";
|
|
32
|
+
if (/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/.test(value))
|
|
33
|
+
return "iso_datetime";
|
|
34
|
+
return "other_string";
|
|
35
|
+
}
|
|
36
|
+
function isTimestampLikeValue(value) {
|
|
37
|
+
const format = timestampFormat(value);
|
|
38
|
+
return format === "iso_datetime" || format === "date_only";
|
|
39
|
+
}
|
|
40
|
+
function sameIsoInstantAtMillisecond(legacy, canonical) {
|
|
41
|
+
if (timestampFormat(legacy) !== "iso_datetime" ||
|
|
42
|
+
timestampFormat(canonical) !== "iso_datetime") {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
const legacyMilliseconds = Date.parse(legacy);
|
|
46
|
+
const canonicalMilliseconds = Date.parse(canonical);
|
|
47
|
+
return (Number.isFinite(legacyMilliseconds) &&
|
|
48
|
+
Number.isFinite(canonicalMilliseconds) &&
|
|
49
|
+
legacyMilliseconds === canonicalMilliseconds);
|
|
50
|
+
}
|
|
51
|
+
function isTimestampField(field) {
|
|
52
|
+
return /(?:^date$|Date$|_date$|^time$|Time$|_time$|At$|_at$|timestamp|Timestamp$)/.test(field);
|
|
53
|
+
}
|
|
54
|
+
function isCreationField(field) {
|
|
55
|
+
return (CREATION_FIELDS.has(field) ||
|
|
56
|
+
/(?:^|_)created(?:_at|_on|_time|_date)?$/.test(field) ||
|
|
57
|
+
/Created(?:At|On|Time|Date)?$/.test(field));
|
|
58
|
+
}
|
|
59
|
+
function isIdentityField(field) {
|
|
60
|
+
return field === "id" || field === "uuid" || /(?:Id|_id)$/.test(field);
|
|
61
|
+
}
|
|
62
|
+
function object(value) {
|
|
63
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
64
|
+
}
|
|
65
|
+
function stableKey(value, fields) {
|
|
66
|
+
if (!object(value) || fields.length === 0)
|
|
67
|
+
return null;
|
|
68
|
+
const parts = [];
|
|
69
|
+
for (const field of fields) {
|
|
70
|
+
const part = value[field];
|
|
71
|
+
if ((typeof part !== "string" &&
|
|
72
|
+
typeof part !== "number" &&
|
|
73
|
+
typeof part !== "boolean") ||
|
|
74
|
+
part === "" ||
|
|
75
|
+
(typeof part === "number" && !Number.isFinite(part))) {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
parts.push(part);
|
|
79
|
+
}
|
|
80
|
+
return JSON.stringify(parts);
|
|
81
|
+
}
|
|
82
|
+
function schemaKeys(schema) {
|
|
83
|
+
const properties = schema?.items?.properties;
|
|
84
|
+
if (properties?.id)
|
|
85
|
+
return ["id"];
|
|
86
|
+
if (properties?.uuid)
|
|
87
|
+
return ["uuid"];
|
|
88
|
+
return [];
|
|
89
|
+
}
|
|
90
|
+
/** Compare JSON payloads, not file envelopes: metadata is outside the coverage rule. */
|
|
91
|
+
export function compareLegacyCoverage(legacyPayload, canonicalPayload, options = {}) {
|
|
92
|
+
const legacyBytes = new TextEncoder().encode(JSON.stringify(legacyPayload)).length;
|
|
93
|
+
const canonicalBytes = new TextEncoder().encode(JSON.stringify(canonicalPayload)).length;
|
|
94
|
+
const byteDelta = canonicalBytes - legacyBytes;
|
|
95
|
+
const comparisonCase = options.canonicalNewer
|
|
96
|
+
? "canonical_newer"
|
|
97
|
+
: "same_time";
|
|
98
|
+
const deletionAllowed = options.canonicalNewer === true && options.allowProvenDeletion === true;
|
|
99
|
+
const paths = new Set();
|
|
100
|
+
const appliedExceptions = new Map();
|
|
101
|
+
const blockedReasons = new Set();
|
|
102
|
+
const reasonCounts = {
|
|
103
|
+
no_stable_key: 0,
|
|
104
|
+
missing_entity: 0,
|
|
105
|
+
missing_field: 0,
|
|
106
|
+
field_mismatch: 0,
|
|
107
|
+
type_mismatch: 0,
|
|
108
|
+
timestamp_format: 0,
|
|
109
|
+
identity_mismatch: 0,
|
|
110
|
+
creation_mismatch: 0,
|
|
111
|
+
array_order: 0,
|
|
112
|
+
payload_growth: 0,
|
|
113
|
+
missing_raw_blob: 0,
|
|
114
|
+
projection_unavailable: 0,
|
|
115
|
+
};
|
|
116
|
+
let missingEntityCount = 0;
|
|
117
|
+
function mark(reason, path, blocks = true, count = 1) {
|
|
118
|
+
reasonCounts[reason] += count;
|
|
119
|
+
if (blocks)
|
|
120
|
+
blockedReasons.add(reason);
|
|
121
|
+
if (path)
|
|
122
|
+
paths.add(path);
|
|
123
|
+
}
|
|
124
|
+
function compare(legacy, canonical, path, arrayPath, schema, field = undefined, identityFields = [], entityPath, entityKey) {
|
|
125
|
+
if (jsonType(legacy) !== jsonType(canonical)) {
|
|
126
|
+
mark("type_mismatch", path);
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
if (Array.isArray(legacy)) {
|
|
130
|
+
// Equal JSON types above establish that canonical is an array.
|
|
131
|
+
if (!Array.isArray(canonical))
|
|
132
|
+
return;
|
|
133
|
+
const entityFields = options.entityKeys?.[arrayPath] ?? schemaKeys(schema);
|
|
134
|
+
if (legacy.length === 0 ||
|
|
135
|
+
legacy.some((item) => item !== null && typeof item === "object")) {
|
|
136
|
+
// There are no old entity keys to lose from an empty array. Newer
|
|
137
|
+
// entities are additions under the same rule as a nonempty array.
|
|
138
|
+
if (legacy.length === 0) {
|
|
139
|
+
if (entityFields.length > 0)
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
const fields = entityFields;
|
|
144
|
+
if (fields.length === 0) {
|
|
145
|
+
mark("no_stable_key", path);
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
const legacyKeys = new Set();
|
|
149
|
+
const canonicalPositions = new Map();
|
|
150
|
+
for (const item of legacy) {
|
|
151
|
+
const key = stableKey(item, fields);
|
|
152
|
+
if (key === null || legacyKeys.has(key)) {
|
|
153
|
+
mark("no_stable_key", path);
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
legacyKeys.add(key);
|
|
157
|
+
}
|
|
158
|
+
for (const [index, item] of canonical.entries()) {
|
|
159
|
+
const key = stableKey(item, fields);
|
|
160
|
+
if (key === null)
|
|
161
|
+
continue;
|
|
162
|
+
if (canonicalPositions.has(key)) {
|
|
163
|
+
mark("no_stable_key", path);
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
canonicalPositions.set(key, index);
|
|
167
|
+
}
|
|
168
|
+
let lastPosition = -1;
|
|
169
|
+
for (const [index, item] of legacy.entries()) {
|
|
170
|
+
const key = stableKey(item, fields);
|
|
171
|
+
// Every legacy key was checked above.
|
|
172
|
+
const position = canonicalPositions.get(key);
|
|
173
|
+
if (position === undefined) {
|
|
174
|
+
missingEntityCount += 1;
|
|
175
|
+
mark("missing_entity", undefined, !deletionAllowed);
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
178
|
+
if (!options.canonicalNewer && position < lastPosition)
|
|
179
|
+
mark("array_order", path);
|
|
180
|
+
lastPosition = position;
|
|
181
|
+
compare(item, canonical[position], `${path}[${index}]`, `${arrayPath}[]`, schema?.items, undefined, fields, `${arrayPath}[]`, fields.length === 1 &&
|
|
182
|
+
object(item) &&
|
|
183
|
+
(typeof item[fields[0]] === "string" ||
|
|
184
|
+
typeof item[fields[0]] === "number" ||
|
|
185
|
+
typeof item[fields[0]] === "boolean")
|
|
186
|
+
? item[fields[0]]
|
|
187
|
+
: undefined);
|
|
188
|
+
}
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
if (legacy.length === 0) {
|
|
193
|
+
if (!options.canonicalNewer && canonical.length > 0)
|
|
194
|
+
mark("array_order", path);
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
// Scalar values have no identity key, so newer state must retain the
|
|
198
|
+
// legacy multiset. Same-time state must retain the exact sequence.
|
|
199
|
+
const encoded = (value) => {
|
|
200
|
+
const timestampLike = (field !== undefined && isTimestampField(field)) ||
|
|
201
|
+
isTimestampLikeValue(value);
|
|
202
|
+
if (timestampLike && timestampFormat(value) === "iso_datetime") {
|
|
203
|
+
const milliseconds = Date.parse(value);
|
|
204
|
+
if (Number.isFinite(milliseconds))
|
|
205
|
+
return `iso_datetime:${milliseconds}`;
|
|
206
|
+
}
|
|
207
|
+
return JSON.stringify(value);
|
|
208
|
+
};
|
|
209
|
+
const available = canonical.map(encoded);
|
|
210
|
+
const expected = legacy.map(encoded);
|
|
211
|
+
const expectedTypes = new Set(legacy.map(jsonType));
|
|
212
|
+
if (canonical.some((value) => !expectedTypes.has(jsonType(value)))) {
|
|
213
|
+
mark("type_mismatch", path);
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
if (field !== undefined &&
|
|
217
|
+
isTimestampField(field) &&
|
|
218
|
+
canonical.some((value) => {
|
|
219
|
+
const expectedFormats = new Set(legacy.map(timestampFormat));
|
|
220
|
+
return !expectedFormats.has(timestampFormat(value));
|
|
221
|
+
})) {
|
|
222
|
+
mark("timestamp_format", path);
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
// Value corrections cannot replace missing slots or waive cardinality.
|
|
226
|
+
if (canonical.length < legacy.length) {
|
|
227
|
+
const missing = legacy.length - canonical.length;
|
|
228
|
+
missingEntityCount += missing;
|
|
229
|
+
mark("missing_entity", path, true, missing);
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
if (!options.canonicalNewer && canonical.length !== legacy.length) {
|
|
233
|
+
mark("array_order", path);
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
const counts = new Map();
|
|
237
|
+
for (const item of available)
|
|
238
|
+
counts.set(item, (counts.get(item) ?? 0) + 1);
|
|
239
|
+
let missingValues = 0;
|
|
240
|
+
let hadMissingValue = false;
|
|
241
|
+
for (const [index, item] of expected.entries()) {
|
|
242
|
+
const count = counts.get(item) ?? 0;
|
|
243
|
+
if (count !== 0) {
|
|
244
|
+
counts.set(item, count - 1);
|
|
245
|
+
continue;
|
|
246
|
+
}
|
|
247
|
+
hadMissingValue = true;
|
|
248
|
+
missingValues += 1;
|
|
249
|
+
const legacyValue = legacy[index];
|
|
250
|
+
const hasTypeMismatch = canonical.some((value) => jsonType(value) !== jsonType(legacyValue));
|
|
251
|
+
const hasTimestampFormatMismatch = canonical.some((value) => jsonType(value) === jsonType(legacyValue) &&
|
|
252
|
+
((field !== undefined && isTimestampField(field)) ||
|
|
253
|
+
isTimestampLikeValue(legacyValue) ||
|
|
254
|
+
isTimestampLikeValue(value)) &&
|
|
255
|
+
timestampFormat(value) !== timestampFormat(legacyValue));
|
|
256
|
+
if (hasTypeMismatch) {
|
|
257
|
+
mark("type_mismatch", path);
|
|
258
|
+
missingValues -= 1;
|
|
259
|
+
}
|
|
260
|
+
else if (hasTimestampFormatMismatch) {
|
|
261
|
+
mark("timestamp_format", path);
|
|
262
|
+
missingValues -= 1;
|
|
263
|
+
}
|
|
264
|
+
else if (field && isCreationField(field)) {
|
|
265
|
+
const normalizedPath = path.replace(/\[\d+\]/g, "[]");
|
|
266
|
+
const exception = LEGACY_COVERAGE_EXCEPTIONS.find((entry) => entry.scope === options.scope && entry.path === normalizedPath);
|
|
267
|
+
const canonicalValue = canonical[index];
|
|
268
|
+
if (exception &&
|
|
269
|
+
canonicalValue !== undefined &&
|
|
270
|
+
canonicalValue !== null &&
|
|
271
|
+
canonicalValue !== "" &&
|
|
272
|
+
jsonType(canonicalValue) === jsonType(legacyValue) &&
|
|
273
|
+
timestampFormat(canonicalValue) === timestampFormat(legacyValue)) {
|
|
274
|
+
appliedExceptions.set(normalizedPath, {
|
|
275
|
+
path: exception.path,
|
|
276
|
+
reason: exception.reason,
|
|
277
|
+
authority: exception.authority,
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
mark("creation_mismatch", path);
|
|
282
|
+
}
|
|
283
|
+
missingValues -= 1;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
if (hadMissingValue) {
|
|
287
|
+
missingEntityCount += missingValues;
|
|
288
|
+
// A scalar has no stable entity identity. Completion proof cannot
|
|
289
|
+
// distinguish a deleted value from a changed value in this array.
|
|
290
|
+
if (missingValues > 0)
|
|
291
|
+
mark("missing_entity", path, true, missingValues);
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
if (options.canonicalNewer)
|
|
295
|
+
return;
|
|
296
|
+
if (expected.length !== available.length ||
|
|
297
|
+
expected.some((item, index) => item !== available[index]))
|
|
298
|
+
mark("array_order", path);
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
if (object(legacy)) {
|
|
302
|
+
// Equal JSON types above establish that canonical is an object.
|
|
303
|
+
if (!object(canonical))
|
|
304
|
+
return;
|
|
305
|
+
for (const [field, value] of Object.entries(legacy)) {
|
|
306
|
+
if (METADATA_FIELDS.has(field))
|
|
307
|
+
continue;
|
|
308
|
+
const childPath = `${path}.${field}`;
|
|
309
|
+
if (!Object.hasOwn(canonical, field)) {
|
|
310
|
+
// Omission evidence names a path relative to its entity. Match the
|
|
311
|
+
// full relative path so evidence for `timestamp` cannot excuse a
|
|
312
|
+
// nested `contributors.timestamp` on the same entity.
|
|
313
|
+
const schemaPath = `${arrayPath}.${field}`;
|
|
314
|
+
const omission = entityPath !== undefined && schemaPath.startsWith(`${entityPath}.`)
|
|
315
|
+
? options.projectionOmissions?.find((entry) => entry.entityPath === entityPath &&
|
|
316
|
+
entry.entityKey === entityKey &&
|
|
317
|
+
entry.fieldPath === schemaPath.slice(entityPath.length + 1))
|
|
318
|
+
: undefined;
|
|
319
|
+
if (omission) {
|
|
320
|
+
appliedExceptions.set(schemaPath, {
|
|
321
|
+
path: schemaPath,
|
|
322
|
+
reason: omission.reason,
|
|
323
|
+
authority: "canonical",
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
else {
|
|
327
|
+
mark("missing_field", childPath);
|
|
328
|
+
}
|
|
329
|
+
continue;
|
|
330
|
+
}
|
|
331
|
+
compare(value, canonical[field], childPath, `${arrayPath}.${field}`, schema?.properties?.[field], field, identityFields, entityPath, entityKey);
|
|
332
|
+
}
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
const timestampField = field !== undefined &&
|
|
336
|
+
(isTimestampField(field) ||
|
|
337
|
+
isCreationField(field) ||
|
|
338
|
+
isTimestampLikeValue(legacy) ||
|
|
339
|
+
isTimestampLikeValue(canonical));
|
|
340
|
+
if (timestampField &&
|
|
341
|
+
timestampFormat(legacy) !== timestampFormat(canonical)) {
|
|
342
|
+
mark("timestamp_format", path);
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
if (Object.is(legacy, canonical) ||
|
|
346
|
+
(timestampField && sameIsoInstantAtMillisecond(legacy, canonical))) {
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
if (field && (identityFields.includes(field) || isIdentityField(field))) {
|
|
350
|
+
mark("identity_mismatch", path);
|
|
351
|
+
}
|
|
352
|
+
else if (field && isCreationField(field)) {
|
|
353
|
+
const normalizedPath = path.replace(/\[\d+\]/g, "[]");
|
|
354
|
+
const exception = LEGACY_COVERAGE_EXCEPTIONS.find((entry) => entry.scope === options.scope && entry.path === normalizedPath);
|
|
355
|
+
if (exception &&
|
|
356
|
+
canonical !== undefined &&
|
|
357
|
+
canonical !== null &&
|
|
358
|
+
canonical !== "") {
|
|
359
|
+
appliedExceptions.set(normalizedPath, {
|
|
360
|
+
path: exception.path,
|
|
361
|
+
reason: exception.reason,
|
|
362
|
+
authority: exception.authority,
|
|
363
|
+
});
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
366
|
+
mark("creation_mismatch", path);
|
|
367
|
+
}
|
|
368
|
+
else if (!options.canonicalNewer) {
|
|
369
|
+
mark("field_mismatch", path);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
const schema = options.schema?.schema ?? options.schema;
|
|
373
|
+
compare(legacyPayload, canonicalPayload, "$", "$", schema);
|
|
374
|
+
if (canonicalBytes > legacyBytes * (options.maxPayloadRatio ?? 1.5) &&
|
|
375
|
+
byteDelta > (options.maxExtraBytes ?? 256 * 1024)) {
|
|
376
|
+
mark("payload_growth");
|
|
377
|
+
}
|
|
378
|
+
const reason = [
|
|
379
|
+
"no_stable_key",
|
|
380
|
+
"missing_entity",
|
|
381
|
+
"type_mismatch",
|
|
382
|
+
"timestamp_format",
|
|
383
|
+
"identity_mismatch",
|
|
384
|
+
"creation_mismatch",
|
|
385
|
+
"field_mismatch",
|
|
386
|
+
"missing_field",
|
|
387
|
+
"array_order",
|
|
388
|
+
"payload_growth",
|
|
389
|
+
].find((candidate) => blockedReasons.has(candidate)) ?? null;
|
|
390
|
+
return {
|
|
391
|
+
comparisonCase,
|
|
392
|
+
covered: reason === null,
|
|
393
|
+
reason,
|
|
394
|
+
reasonCounts,
|
|
395
|
+
appliedExceptions: [...appliedExceptions.values()],
|
|
396
|
+
missingEntityCount,
|
|
397
|
+
mismatchedFieldPaths: [...paths],
|
|
398
|
+
legacyBytes,
|
|
399
|
+
canonicalBytes,
|
|
400
|
+
byteDelta,
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
//# sourceMappingURL=legacy-scope-coverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-scope-coverage.js","sourceRoot":"","sources":["../../src/storage/legacy-scope-coverage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Stable legacy entity keys reviewed against the vendored scope schemas.
|
|
2
|
+
* A missing path has no proven key and cannot qualify for takeover. */
|
|
3
|
+
export declare const LEGACY_SCOPE_ENTITY_KEYS: Readonly<Record<string, Readonly<Record<string, readonly string[]>>>>;
|
|
4
|
+
//# sourceMappingURL=legacy-scope-entity-keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-scope-entity-keys.d.ts","sourceRoot":"","sources":["../../src/storage/legacy-scope-entity-keys.ts"],"names":[],"mappings":"AAAA;uEACuE;AACvE,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAC7C,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC,CAyF5D,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/** Stable legacy entity keys reviewed against the vendored scope schemas.
|
|
2
|
+
* A missing path has no proven key and cannot qualify for takeover. */
|
|
3
|
+
export const LEGACY_SCOPE_ENTITY_KEYS = {
|
|
4
|
+
"amazon.orders": {
|
|
5
|
+
"$.orders": ["orderId"],
|
|
6
|
+
},
|
|
7
|
+
"chatgpt.conversations": {
|
|
8
|
+
"$.conversations": ["id"],
|
|
9
|
+
"$.conversations[].messages": ["id"],
|
|
10
|
+
},
|
|
11
|
+
"chatgpt.memories": {
|
|
12
|
+
"$.memories": ["id"],
|
|
13
|
+
},
|
|
14
|
+
"claude.conversations": {
|
|
15
|
+
"$.conversations": ["id"],
|
|
16
|
+
"$.conversations[].messages": ["id"],
|
|
17
|
+
},
|
|
18
|
+
"claude.projects": {
|
|
19
|
+
"$.projects": ["id"],
|
|
20
|
+
},
|
|
21
|
+
"github.contributions": {
|
|
22
|
+
"$.yearTotals": ["year"],
|
|
23
|
+
"$.days": ["date"],
|
|
24
|
+
"$.monthlyTotals": ["month"],
|
|
25
|
+
},
|
|
26
|
+
"github.events": {
|
|
27
|
+
"$.events": ["id"],
|
|
28
|
+
},
|
|
29
|
+
"github.history": {
|
|
30
|
+
"$.pullRequests": ["id"],
|
|
31
|
+
"$.issues": ["id"],
|
|
32
|
+
},
|
|
33
|
+
"heb.orders": {
|
|
34
|
+
"$.orders": ["orderId"],
|
|
35
|
+
"$.orders[].items": ["productId"],
|
|
36
|
+
},
|
|
37
|
+
"icloud_notes.folders": {
|
|
38
|
+
"$.folders": ["recordName"],
|
|
39
|
+
},
|
|
40
|
+
"icloud_notes.notes": {
|
|
41
|
+
"$.notes": ["recordName"],
|
|
42
|
+
},
|
|
43
|
+
"instagram.following": {
|
|
44
|
+
"$.accounts": ["pk"],
|
|
45
|
+
},
|
|
46
|
+
"instagram.posts": {
|
|
47
|
+
"$.posts[].who_liked": ["id"],
|
|
48
|
+
},
|
|
49
|
+
"oura.activity": {
|
|
50
|
+
"$.days": ["id"],
|
|
51
|
+
},
|
|
52
|
+
"oura.readiness": {
|
|
53
|
+
"$.days": ["id"],
|
|
54
|
+
},
|
|
55
|
+
"oura.sleep": {
|
|
56
|
+
"$.dailyScores": ["id"],
|
|
57
|
+
"$.sleepPeriods": ["id"],
|
|
58
|
+
},
|
|
59
|
+
"shop.orders": {
|
|
60
|
+
"$.orders": ["id"],
|
|
61
|
+
},
|
|
62
|
+
"strava.activities": {
|
|
63
|
+
"$.activities": ["id"],
|
|
64
|
+
},
|
|
65
|
+
"strava.coverage_diagnostics": {
|
|
66
|
+
"$.coverage_diagnostics": ["id"],
|
|
67
|
+
},
|
|
68
|
+
"wholefoods.orders": {
|
|
69
|
+
"$.orders": ["orderId"],
|
|
70
|
+
"$.orders[].items": ["productId"],
|
|
71
|
+
},
|
|
72
|
+
"youtube.history": {
|
|
73
|
+
"$.history": ["videoId"],
|
|
74
|
+
},
|
|
75
|
+
"youtube.likes": {
|
|
76
|
+
"$.likedVideos": ["videoId"],
|
|
77
|
+
},
|
|
78
|
+
"youtube.playlistItems": {
|
|
79
|
+
"$.playlists": ["playlistId"],
|
|
80
|
+
"$.playlists[].items": ["videoId"],
|
|
81
|
+
},
|
|
82
|
+
"youtube.playlists": {
|
|
83
|
+
"$.playlists": ["playlistId"],
|
|
84
|
+
},
|
|
85
|
+
"youtube.subscriptions": {
|
|
86
|
+
"$.subscriptions": ["channelId"],
|
|
87
|
+
},
|
|
88
|
+
"youtube.watchLater": {
|
|
89
|
+
"$.watchLater": ["videoId"],
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=legacy-scope-entity-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-scope-entity-keys.js","sourceRoot":"","sources":["../../src/storage/legacy-scope-entity-keys.ts"],"names":[],"mappings":"AAAA;uEACuE;AACvE,MAAM,CAAC,MAAM,wBAAwB,GAEjC;IACF,eAAe,EAAE;QACf,UAAU,EAAE,CAAC,SAAS,CAAC;KACxB;IACD,uBAAuB,EAAE;QACvB,iBAAiB,EAAE,CAAC,IAAI,CAAC;QACzB,4BAA4B,EAAE,CAAC,IAAI,CAAC;KACrC;IACD,kBAAkB,EAAE;QAClB,YAAY,EAAE,CAAC,IAAI,CAAC;KACrB;IACD,sBAAsB,EAAE;QACtB,iBAAiB,EAAE,CAAC,IAAI,CAAC;QACzB,4BAA4B,EAAE,CAAC,IAAI,CAAC;KACrC;IACD,iBAAiB,EAAE;QACjB,YAAY,EAAE,CAAC,IAAI,CAAC;KACrB;IACD,sBAAsB,EAAE;QACtB,cAAc,EAAE,CAAC,MAAM,CAAC;QACxB,QAAQ,EAAE,CAAC,MAAM,CAAC;QAClB,iBAAiB,EAAE,CAAC,OAAO,CAAC;KAC7B;IACD,eAAe,EAAE;QACf,UAAU,EAAE,CAAC,IAAI,CAAC;KACnB;IACD,gBAAgB,EAAE;QAChB,gBAAgB,EAAE,CAAC,IAAI,CAAC;QACxB,UAAU,EAAE,CAAC,IAAI,CAAC;KACnB;IACD,YAAY,EAAE;QACZ,UAAU,EAAE,CAAC,SAAS,CAAC;QACvB,kBAAkB,EAAE,CAAC,WAAW,CAAC;KAClC;IACD,sBAAsB,EAAE;QACtB,WAAW,EAAE,CAAC,YAAY,CAAC;KAC5B;IACD,oBAAoB,EAAE;QACpB,SAAS,EAAE,CAAC,YAAY,CAAC;KAC1B;IACD,qBAAqB,EAAE;QACrB,YAAY,EAAE,CAAC,IAAI,CAAC;KACrB;IACD,iBAAiB,EAAE;QACjB,qBAAqB,EAAE,CAAC,IAAI,CAAC;KAC9B;IACD,eAAe,EAAE;QACf,QAAQ,EAAE,CAAC,IAAI,CAAC;KACjB;IACD,gBAAgB,EAAE;QAChB,QAAQ,EAAE,CAAC,IAAI,CAAC;KACjB;IACD,YAAY,EAAE;QACZ,eAAe,EAAE,CAAC,IAAI,CAAC;QACvB,gBAAgB,EAAE,CAAC,IAAI,CAAC;KACzB;IACD,aAAa,EAAE;QACb,UAAU,EAAE,CAAC,IAAI,CAAC;KACnB;IACD,mBAAmB,EAAE;QACnB,cAAc,EAAE,CAAC,IAAI,CAAC;KACvB;IACD,6BAA6B,EAAE;QAC7B,wBAAwB,EAAE,CAAC,IAAI,CAAC;KACjC;IACD,mBAAmB,EAAE;QACnB,UAAU,EAAE,CAAC,SAAS,CAAC;QACvB,kBAAkB,EAAE,CAAC,WAAW,CAAC;KAClC;IACD,iBAAiB,EAAE;QACjB,WAAW,EAAE,CAAC,SAAS,CAAC;KACzB;IACD,eAAe,EAAE;QACf,eAAe,EAAE,CAAC,SAAS,CAAC;KAC7B;IACD,uBAAuB,EAAE;QACvB,aAAa,EAAE,CAAC,YAAY,CAAC;QAC7B,qBAAqB,EAAE,CAAC,SAAS,CAAC;KACnC;IACD,mBAAmB,EAAE;QACnB,aAAa,EAAE,CAAC,YAAY,CAAC;KAC9B;IACD,uBAAuB,EAAE;QACvB,iBAAiB,EAAE,CAAC,WAAW,CAAC;KACjC;IACD,oBAAoB,EAAE;QACpB,cAAc,EAAE,CAAC,SAAS,CAAC;KAC5B;CACF,CAAC"}
|