@cross-deck/web 1.5.1 → 1.5.3
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/contracts.json +133 -11
- package/dist/crossdeck.umd.min.js +2 -2
- package/dist/crossdeck.umd.min.js.map +1 -1
- package/dist/error-codes.json +1 -1
- package/dist/index.cjs +1081 -25
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +51 -16
- package/dist/index.d.ts +51 -16
- package/dist/index.mjs +1081 -25
- package/dist/index.mjs.map +1 -1
- package/dist/react.cjs +950 -16
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.mts +1 -1
- package/dist/react.d.ts +1 -1
- package/dist/react.mjs +950 -16
- package/dist/react.mjs.map +1 -1
- package/dist/{types-Bu3jbmdq.d.ts → types-B9sxUuKh.d.mts} +71 -0
- package/dist/{types-Bu3jbmdq.d 2.mts → types-B9sxUuKh.d.ts} +71 -0
- package/dist/vue.cjs +950 -16
- package/dist/vue.cjs.map +1 -1
- package/dist/vue.mjs +950 -16
- package/dist/vue.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/contracts 2.json +0 -378
- package/dist/crossdeck.umd.min 2.js +0 -3
- package/dist/crossdeck.umd.min.js 2.map +0 -1
- package/dist/error-codes 2.json +0 -196
- package/dist/index 2.cjs +0 -4778
- package/dist/index 2.mjs +0 -4742
- package/dist/index.cjs 2.map +0 -1
- package/dist/index.d 2.mts +0 -938
- package/dist/index.d 2.ts +0 -938
- package/dist/index.mjs 2.map +0 -1
- package/dist/react 2.cjs +0 -4220
- package/dist/react 2.mjs +0 -4193
- package/dist/react.cjs 2.map +0 -1
- package/dist/react.d 2.mts +0 -91
- package/dist/react.d 2.ts +0 -91
- package/dist/react.mjs 2.map +0 -1
- package/dist/types-Bu3jbmdq.d 2.ts +0 -314
- package/dist/types-Bu3jbmdq.d.mts +0 -314
- package/dist/vue 2.cjs +0 -4185
- package/dist/vue 2.mjs +0 -4159
- package/dist/vue.cjs 2.map +0 -1
- package/dist/vue.d 2.mts +0 -37
- package/dist/vue.d 2.ts +0 -37
- package/dist/vue.mjs 2.map +0 -1
package/dist/contracts.json
CHANGED
|
@@ -1,11 +1,133 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"generatedAt": "2026-05-
|
|
3
|
+
"generatedAt": "2026-05-27T15:13:48.473Z",
|
|
4
4
|
"sdk": "@cross-deck/web",
|
|
5
|
-
"sdkVersion": "1.5.
|
|
6
|
-
"bundledIn": "@cross-deck/web@1.5.
|
|
7
|
-
"count":
|
|
5
|
+
"sdkVersion": "1.5.3",
|
|
6
|
+
"bundledIn": "@cross-deck/web@1.5.3",
|
|
7
|
+
"count": 8,
|
|
8
8
|
"contracts": [
|
|
9
|
+
{
|
|
10
|
+
"id": "contract-failed-payload-schema-lock",
|
|
11
|
+
"pillar": "diagnostics",
|
|
12
|
+
"status": "enforced",
|
|
13
|
+
"claim": "The `crossdeck.contract_failed` event payload contains ONLY the named diagnostic fields and never any end-user personal data. The wire shape is fixed — adding a new field requires (1) a pull request that updates this contract's `allowedFields` set, (2) a Privacy Policy §6 amendment, and (3) the Customer Disclosure Template / SDK Data Collection Reference §B updates. Per-SDK assertion tests enforce the field set on every release. The `verification_phase` field is a categorical bucket — values are restricted to `boot` (the SDK self-test ran on Crossdeck.start) or `hot_path` (a verifier observed a real customer-triggered operation). The categorical nature is what preserves the diagnostic-only-not-personal classification. This is the structural guarantee that backs the independent-controller lawful basis in the Privacy Policy: the payload remains diagnostic-only, not personal, so the legitimate-interest analysis stays valid as the SDK evolves.",
|
|
14
|
+
"appliesTo": [
|
|
15
|
+
"web",
|
|
16
|
+
"node",
|
|
17
|
+
"swift",
|
|
18
|
+
"android",
|
|
19
|
+
"react-native"
|
|
20
|
+
],
|
|
21
|
+
"allowedFields": {
|
|
22
|
+
"required": [
|
|
23
|
+
"contract_id",
|
|
24
|
+
"sdk_version",
|
|
25
|
+
"sdk_platform",
|
|
26
|
+
"failure_reason",
|
|
27
|
+
"run_context",
|
|
28
|
+
"run_id"
|
|
29
|
+
],
|
|
30
|
+
"optional": [
|
|
31
|
+
"test_file",
|
|
32
|
+
"test_name",
|
|
33
|
+
"device_class",
|
|
34
|
+
"verification_phase"
|
|
35
|
+
],
|
|
36
|
+
"forbidden": [
|
|
37
|
+
"anonymousId",
|
|
38
|
+
"developerUserId",
|
|
39
|
+
"crossdeckCustomerId",
|
|
40
|
+
"email",
|
|
41
|
+
"ip",
|
|
42
|
+
"user_agent",
|
|
43
|
+
"message",
|
|
44
|
+
"stack",
|
|
45
|
+
"stack_trace",
|
|
46
|
+
"frames",
|
|
47
|
+
"exception_message",
|
|
48
|
+
"url",
|
|
49
|
+
"path",
|
|
50
|
+
"screen",
|
|
51
|
+
"title",
|
|
52
|
+
"label",
|
|
53
|
+
"text",
|
|
54
|
+
"ariaLabel",
|
|
55
|
+
"accessibilityLabel",
|
|
56
|
+
"contentDescription",
|
|
57
|
+
"session_id",
|
|
58
|
+
"sessionId"
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
"transport": "Telemetry is single-fire to the Crossdeck reliability endpoint only — NOT the customer's appId. The customer's track() pipeline never carries `crossdeck.*` events; the customer's dashboard never shows individual contract failures. Operational telemetry flows one-way to the Crossdeck operations team for SDK reliability purposes (legitimate interest, independent-controller flow per Privacy Policy §6). The reliability endpoint is hardcoded at SDK build time; the publishable key for the reliability project is embedded as a constant and rejects writes that don't match the schema.",
|
|
62
|
+
"codeRef": [
|
|
63
|
+
"sdks/web/src/crossdeck.ts",
|
|
64
|
+
"sdks/node/src/crossdeck-server.ts",
|
|
65
|
+
"sdks/swift/Sources/Crossdeck/Crossdeck.swift",
|
|
66
|
+
"sdks/swift/Sources/Crossdeck/_DiagnosticTelemetry.swift",
|
|
67
|
+
"sdks/android/crossdeck/src/main/kotlin/com/crossdeck/Crossdeck.kt",
|
|
68
|
+
"sdks/android/crossdeck/src/main/kotlin/com/crossdeck/_DiagnosticTelemetry.kt",
|
|
69
|
+
"sdks/react-native/src/crossdeck.ts",
|
|
70
|
+
"backend/src/api/v1-sdk-diagnostic.ts",
|
|
71
|
+
"sdks/web/src/_diagnostic-telemetry.ts",
|
|
72
|
+
"sdks/node/src/_diagnostic-telemetry.ts",
|
|
73
|
+
"sdks/react-native/src/_diagnostic-telemetry.ts"
|
|
74
|
+
],
|
|
75
|
+
"testRef": [
|
|
76
|
+
{
|
|
77
|
+
"file": "sdks/web/tests/contract-failed-schema-lock.test.ts",
|
|
78
|
+
"name": "reportContractFailure payload conforms to schema-lock"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"file": "sdks/node/tests/contract-failed-schema-lock.test.ts",
|
|
82
|
+
"name": "reportContractFailure payload conforms to schema-lock"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"file": "sdks/swift/Tests/CrossdeckTests/ContractFailedSchemaLockTests.swift",
|
|
86
|
+
"name": "test_reportContractFailure_payloadFieldsAreInAllowList"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"file": "sdks/swift/Tests/CrossdeckTests/ContractFailedSchemaLockTests.swift",
|
|
90
|
+
"name": "test_reportContractFailure_doesNotEnterCustomerTrackPipeline"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"file": "sdks/android/crossdeck/src/test/kotlin/com/crossdeck/ContractFailedSchemaLockTest.kt",
|
|
94
|
+
"name": "reportContractFailure payload conforms to schema-lock"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"file": "sdks/android/crossdeck/src/test/kotlin/com/crossdeck/ContractFailedSchemaLockTest.kt",
|
|
98
|
+
"name": "reportContractFailure does not enter customer track pipeline"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"file": "sdks/react-native/tests/contract-failed-schema-lock.test.ts",
|
|
102
|
+
"name": "reportContractFailure payload conforms to schema-lock"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"file": "backend/tests/unit/v1-sdk-diagnostic.test.ts",
|
|
106
|
+
"name": "forbidden fields are enumerated in the schema-lock contract"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"file": "backend/tests/unit/v1-sdk-diagnostic.test.ts",
|
|
110
|
+
"name": "required fields are enumerated in the schema-lock contract"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"file": "backend/tests/unit/v1-sdk-diagnostic.test.ts",
|
|
114
|
+
"name": "regression guard: never returns a raw IP"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"file": "backend/tests/unit/v1-sdk-diagnostic.test.ts",
|
|
118
|
+
"name": "verification_phase is in the optional field set"
|
|
119
|
+
}
|
|
120
|
+
],
|
|
121
|
+
"registeredAt": "2026-05-27",
|
|
122
|
+
"firstRegisteredIn": "Diagnostic telemetry single-fire + schema-lock — independent-controller flow",
|
|
123
|
+
"privacyReferences": [
|
|
124
|
+
"legal/privacy/index.html#sdk-diagnostic",
|
|
125
|
+
"legal/customer-disclosure/index.html#flow-b",
|
|
126
|
+
"legal/security/index.html#diagnostic",
|
|
127
|
+
"legal/sdk-data/index.html#b-diagnostic"
|
|
128
|
+
],
|
|
129
|
+
"bundledIn": "@cross-deck/web@1.5.3"
|
|
130
|
+
},
|
|
9
131
|
{
|
|
10
132
|
"id": "error-envelope-shape",
|
|
11
133
|
"pillar": "errors",
|
|
@@ -43,7 +165,7 @@
|
|
|
43
165
|
],
|
|
44
166
|
"registeredAt": "2026-05-26",
|
|
45
167
|
"firstRegisteredIn": "bank-grade reconciliation v1.4.0 — phase 8 (codifies existing contract)",
|
|
46
|
-
"bundledIn": "@cross-deck/web@1.5.
|
|
168
|
+
"bundledIn": "@cross-deck/web@1.5.3"
|
|
47
169
|
},
|
|
48
170
|
{
|
|
49
171
|
"id": "flush-interval-parity",
|
|
@@ -88,7 +210,7 @@
|
|
|
88
210
|
],
|
|
89
211
|
"registeredAt": "2026-05-26",
|
|
90
212
|
"firstRegisteredIn": "bank-grade reconciliation v1.4.0 — phase 3.3",
|
|
91
|
-
"bundledIn": "@cross-deck/web@1.5.
|
|
213
|
+
"bundledIn": "@cross-deck/web@1.5.3"
|
|
92
214
|
},
|
|
93
215
|
{
|
|
94
216
|
"id": "idempotency-key-deterministic",
|
|
@@ -193,7 +315,7 @@
|
|
|
193
315
|
],
|
|
194
316
|
"registeredAt": "2026-05-26",
|
|
195
317
|
"firstRegisteredIn": "bank-grade reconciliation v1.4.0 — phase 2.2.a + 2.2.b + 2.2.c",
|
|
196
|
-
"bundledIn": "@cross-deck/web@1.5.
|
|
318
|
+
"bundledIn": "@cross-deck/web@1.5.3"
|
|
197
319
|
},
|
|
198
320
|
{
|
|
199
321
|
"id": "init-reentry-drains-prior-queue",
|
|
@@ -220,7 +342,7 @@
|
|
|
220
342
|
],
|
|
221
343
|
"registeredAt": "2026-05-26",
|
|
222
344
|
"firstRegisteredIn": "bank-grade reconciliation v1.4.0 — phase 5.5",
|
|
223
|
-
"bundledIn": "@cross-deck/web@1.5.
|
|
345
|
+
"bundledIn": "@cross-deck/web@1.5.3"
|
|
224
346
|
},
|
|
225
347
|
{
|
|
226
348
|
"id": "per-user-cache-isolation",
|
|
@@ -299,7 +421,7 @@
|
|
|
299
421
|
],
|
|
300
422
|
"registeredAt": "2026-05-26",
|
|
301
423
|
"firstRegisteredIn": "bank-grade reconciliation v1.4.0 — phase 1.3 (web/RN) + dogfood-gap fix (swift + android)",
|
|
302
|
-
"bundledIn": "@cross-deck/web@1.5.
|
|
424
|
+
"bundledIn": "@cross-deck/web@1.5.3"
|
|
303
425
|
},
|
|
304
426
|
{
|
|
305
427
|
"id": "sdk-error-codes-catalogue",
|
|
@@ -339,7 +461,7 @@
|
|
|
339
461
|
],
|
|
340
462
|
"registeredAt": "2026-05-26",
|
|
341
463
|
"firstRegisteredIn": "bank-grade reconciliation v1.4.0 — phase 6.2",
|
|
342
|
-
"bundledIn": "@cross-deck/web@1.5.
|
|
464
|
+
"bundledIn": "@cross-deck/web@1.5.3"
|
|
343
465
|
},
|
|
344
466
|
{
|
|
345
467
|
"id": "sync-purchases-funnel-parity",
|
|
@@ -372,7 +494,7 @@
|
|
|
372
494
|
],
|
|
373
495
|
"registeredAt": "2026-05-26",
|
|
374
496
|
"firstRegisteredIn": "bank-grade reconciliation v1.4.0 — phase 3.5",
|
|
375
|
-
"bundledIn": "@cross-deck/web@1.5.
|
|
497
|
+
"bundledIn": "@cross-deck/web@1.5.3"
|
|
376
498
|
}
|
|
377
499
|
]
|
|
378
500
|
}
|