@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.
Files changed (47) hide show
  1. package/dist/contracts.json +133 -11
  2. package/dist/crossdeck.umd.min.js +2 -2
  3. package/dist/crossdeck.umd.min.js.map +1 -1
  4. package/dist/error-codes.json +1 -1
  5. package/dist/index.cjs +1081 -25
  6. package/dist/index.cjs.map +1 -1
  7. package/dist/index.d.mts +51 -16
  8. package/dist/index.d.ts +51 -16
  9. package/dist/index.mjs +1081 -25
  10. package/dist/index.mjs.map +1 -1
  11. package/dist/react.cjs +950 -16
  12. package/dist/react.cjs.map +1 -1
  13. package/dist/react.d.mts +1 -1
  14. package/dist/react.d.ts +1 -1
  15. package/dist/react.mjs +950 -16
  16. package/dist/react.mjs.map +1 -1
  17. package/dist/{types-Bu3jbmdq.d.ts → types-B9sxUuKh.d.mts} +71 -0
  18. package/dist/{types-Bu3jbmdq.d 2.mts → types-B9sxUuKh.d.ts} +71 -0
  19. package/dist/vue.cjs +950 -16
  20. package/dist/vue.cjs.map +1 -1
  21. package/dist/vue.mjs +950 -16
  22. package/dist/vue.mjs.map +1 -1
  23. package/package.json +1 -1
  24. package/dist/contracts 2.json +0 -378
  25. package/dist/crossdeck.umd.min 2.js +0 -3
  26. package/dist/crossdeck.umd.min.js 2.map +0 -1
  27. package/dist/error-codes 2.json +0 -196
  28. package/dist/index 2.cjs +0 -4778
  29. package/dist/index 2.mjs +0 -4742
  30. package/dist/index.cjs 2.map +0 -1
  31. package/dist/index.d 2.mts +0 -938
  32. package/dist/index.d 2.ts +0 -938
  33. package/dist/index.mjs 2.map +0 -1
  34. package/dist/react 2.cjs +0 -4220
  35. package/dist/react 2.mjs +0 -4193
  36. package/dist/react.cjs 2.map +0 -1
  37. package/dist/react.d 2.mts +0 -91
  38. package/dist/react.d 2.ts +0 -91
  39. package/dist/react.mjs 2.map +0 -1
  40. package/dist/types-Bu3jbmdq.d 2.ts +0 -314
  41. package/dist/types-Bu3jbmdq.d.mts +0 -314
  42. package/dist/vue 2.cjs +0 -4185
  43. package/dist/vue 2.mjs +0 -4159
  44. package/dist/vue.cjs 2.map +0 -1
  45. package/dist/vue.d 2.mts +0 -37
  46. package/dist/vue.d 2.ts +0 -37
  47. package/dist/vue.mjs 2.map +0 -1
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { P as PublicEntitlement, C as CrossdeckOptions, I as IdentifyOptions, A as AliasResult, G as GroupTraits, E as EventProperties, a as PurchaseResult, H as HeartbeatResponse, D as Diagnostics, K as KeyValueStorage } from './types-Bu3jbmdq.mjs';
2
- export { b as AuditRail, c as AutoTrackOptions, d as EntitlementsListResponse, e as Environment, f as Platform } from './types-Bu3jbmdq.mjs';
1
+ import { P as PublicEntitlement, C as CrossdeckOptions, I as IdentifyOptions, A as AliasResult, G as GroupTraits, E as EventProperties, a as PurchaseResult, H as HeartbeatResponse, D as Diagnostics, K as KeyValueStorage } from './types-B9sxUuKh.mjs';
2
+ export { b as AuditRail, c as AutoTrackOptions, d as EntitlementsListResponse, e as Environment, f as Platform } from './types-B9sxUuKh.mjs';
3
3
 
4
4
  /**
5
5
  * Durable last-known-good cache of the customer's entitlements.
@@ -232,9 +232,9 @@ declare const CrossdeckContracts: {
232
232
  /** Filter by lifecycle status. */
233
233
  readonly withStatus: (status: ContractStatus) => readonly Contract[];
234
234
  /** Semver of the SDK release these contracts were bundled with. */
235
- readonly sdkVersion: "1.5.0";
235
+ readonly sdkVersion: "1.5.3";
236
236
  /** Fully-qualified bundle identifier — e.g. `@cross-deck/web@1.4.2`. */
237
- readonly bundledIn: "@cross-deck/web@1.5.0";
237
+ readonly bundledIn: "@cross-deck/web@1.5.3";
238
238
  /**
239
239
  * Resolve a failing test back to the contract it exercises.
240
240
  * Used by test-framework hooks (Vitest `afterEach`, XCTest
@@ -251,9 +251,15 @@ declare const CrossdeckContracts: {
251
251
  /**
252
252
  * Input to {@link Crossdeck.reportContractFailure}. Lets a test
253
253
  * harness / dogfood app / customer integration report a contract
254
- * violation back to Crossdeck through the standard `track()` API
255
- * with a typed property bag no new ingest endpoint, no bespoke
256
- * code, just a `crossdeck.contract_failed` custom event.
254
+ * violation back to Crossdeck on the dedicated reliability channel —
255
+ * single-fire, never visible in the customer's dashboard.
256
+ *
257
+ * SCHEMA-LOCK: this interface's field set is exhaustively named. No
258
+ * free-form `extra: Record<string, unknown>` — the schema-lock
259
+ * contract at
260
+ * `contracts/diagnostics/contract-failed-payload-schema-lock.json`
261
+ * forbids unbounded fields. Adding a field requires a PR that
262
+ * amends the contract first, then the public interface.
257
263
  *
258
264
  * `sdk_version` and `sdk_platform` are auto-stamped by the SDK so
259
265
  * every emitted event carries them correctly without the caller
@@ -262,7 +268,11 @@ declare const CrossdeckContracts: {
262
268
  interface ContractFailureInput {
263
269
  /** Stable contract id (`per-user-cache-isolation` etc.). */
264
270
  contractId: string;
265
- /** Human-readable failure reason — the assertion message. */
271
+ /**
272
+ * Short categorical-ish label — the SDK convention is to keep this
273
+ * under 128 chars and stable across runs (so dashboards can group).
274
+ * Never an end-user-supplied string.
275
+ */
266
276
  failureReason: string;
267
277
  /**
268
278
  * Where the failure was observed:
@@ -285,8 +295,11 @@ interface ContractFailureInput {
285
295
  file: string;
286
296
  name: string;
287
297
  };
288
- /** Optional extra properties merged into the event payload. */
289
- extra?: Record<string, unknown>;
298
+ /**
299
+ * Optional coarse device class, e.g. "desktop", "mobile-web",
300
+ * "ssr". A categorical bucket, not a device identifier.
301
+ */
302
+ deviceClass?: string;
290
303
  }
291
304
 
292
305
  /**
@@ -431,6 +444,9 @@ interface CapturedError {
431
444
 
432
445
  declare class CrossdeckClient {
433
446
  private state;
447
+ private verifiers;
448
+ private verifierReporter;
449
+ private verifierCtx;
434
450
  /**
435
451
  * Boot the SDK. Idempotent — calling init twice with the same options
436
452
  * is a no-op; calling with different options replaces the previous
@@ -441,6 +457,22 @@ declare class CrossdeckClient {
441
457
  * mismatched env fails fast at boot rather than at first event-flush.
442
458
  */
443
459
  init(options: CrossdeckOptions): void;
460
+ /**
461
+ * Fetch /v1/config from the backend and apply any per-app verifier
462
+ * overrides set in the dashboard, then fire the boot self-test
463
+ * once with the FINAL resolved flags.
464
+ *
465
+ * Precedence (also documented at the call site in init()):
466
+ * code option > dashboard remote config > DEBUG/RELEASE default
467
+ *
468
+ * Code wins so engineers retain ultimate control; dashboard is the
469
+ * no-deploy operational lever for QA / staging soaks.
470
+ *
471
+ * Never throws — a /v1/config failure surfaces as "stick with the
472
+ * synchronous defaults that init() already applied" and the boot
473
+ * self-test runs only if code > default resolves true.
474
+ */
475
+ private bootstrapVerifierLayerRemote;
444
476
  /**
445
477
  * @deprecated Use `init()` instead. NorthStar §4 standardised the
446
478
  * lifecycle method name across SDKs as `init` (formerly `start` /
@@ -640,11 +672,14 @@ declare class CrossdeckClient {
640
672
  * call flush().
641
673
  */
642
674
  /**
643
- * Emit `crossdeck.contract_failed` with the canonical property
644
- * shape (`contract_id`, `sdk_version`, `sdk_platform`,
645
- * `failure_reason`, `run_context`, `run_id`). Goes through the
646
- * standard track() pipeline same consent gate, same queue,
647
- * same ingest, no new endpoint.
675
+ * Emit `crossdeck.contract_failed` to the Crossdeck reliability
676
+ * endpoint single-fire, one-way, never visible in the customer's
677
+ * dashboard. Goes over a dedicated HTTP path with the reliability
678
+ * publishable key embedded at build time; the customer's track()
679
+ * pipeline never carries `crossdeck.*` events. This is the
680
+ * independent-controller flow described in Privacy Policy §6
681
+ * ("Flow B"). The wire shape is fixed by the schema-lock contract
682
+ * at `contracts/diagnostics/contract-failed-payload-schema-lock.json`.
648
683
  *
649
684
  * Wire the call from a test hook, dogfood failure path, or
650
685
  * customer contract-verification harness; see
@@ -851,7 +886,7 @@ declare class MemoryStorage implements KeyValueStorage {
851
886
  *
852
887
  * Do NOT edit by hand — `node scripts/sync-sdk-versions.mjs`.
853
888
  */
854
- declare const SDK_VERSION = "1.4.2";
889
+ declare const SDK_VERSION = "1.5.3";
855
890
  declare const SDK_NAME = "@cross-deck/web";
856
891
 
857
892
  /**
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { P as PublicEntitlement, C as CrossdeckOptions, I as IdentifyOptions, A as AliasResult, G as GroupTraits, E as EventProperties, a as PurchaseResult, H as HeartbeatResponse, D as Diagnostics, K as KeyValueStorage } from './types-Bu3jbmdq.js';
2
- export { b as AuditRail, c as AutoTrackOptions, d as EntitlementsListResponse, e as Environment, f as Platform } from './types-Bu3jbmdq.js';
1
+ import { P as PublicEntitlement, C as CrossdeckOptions, I as IdentifyOptions, A as AliasResult, G as GroupTraits, E as EventProperties, a as PurchaseResult, H as HeartbeatResponse, D as Diagnostics, K as KeyValueStorage } from './types-B9sxUuKh.js';
2
+ export { b as AuditRail, c as AutoTrackOptions, d as EntitlementsListResponse, e as Environment, f as Platform } from './types-B9sxUuKh.js';
3
3
 
4
4
  /**
5
5
  * Durable last-known-good cache of the customer's entitlements.
@@ -232,9 +232,9 @@ declare const CrossdeckContracts: {
232
232
  /** Filter by lifecycle status. */
233
233
  readonly withStatus: (status: ContractStatus) => readonly Contract[];
234
234
  /** Semver of the SDK release these contracts were bundled with. */
235
- readonly sdkVersion: "1.5.0";
235
+ readonly sdkVersion: "1.5.3";
236
236
  /** Fully-qualified bundle identifier — e.g. `@cross-deck/web@1.4.2`. */
237
- readonly bundledIn: "@cross-deck/web@1.5.0";
237
+ readonly bundledIn: "@cross-deck/web@1.5.3";
238
238
  /**
239
239
  * Resolve a failing test back to the contract it exercises.
240
240
  * Used by test-framework hooks (Vitest `afterEach`, XCTest
@@ -251,9 +251,15 @@ declare const CrossdeckContracts: {
251
251
  /**
252
252
  * Input to {@link Crossdeck.reportContractFailure}. Lets a test
253
253
  * harness / dogfood app / customer integration report a contract
254
- * violation back to Crossdeck through the standard `track()` API
255
- * with a typed property bag no new ingest endpoint, no bespoke
256
- * code, just a `crossdeck.contract_failed` custom event.
254
+ * violation back to Crossdeck on the dedicated reliability channel —
255
+ * single-fire, never visible in the customer's dashboard.
256
+ *
257
+ * SCHEMA-LOCK: this interface's field set is exhaustively named. No
258
+ * free-form `extra: Record<string, unknown>` — the schema-lock
259
+ * contract at
260
+ * `contracts/diagnostics/contract-failed-payload-schema-lock.json`
261
+ * forbids unbounded fields. Adding a field requires a PR that
262
+ * amends the contract first, then the public interface.
257
263
  *
258
264
  * `sdk_version` and `sdk_platform` are auto-stamped by the SDK so
259
265
  * every emitted event carries them correctly without the caller
@@ -262,7 +268,11 @@ declare const CrossdeckContracts: {
262
268
  interface ContractFailureInput {
263
269
  /** Stable contract id (`per-user-cache-isolation` etc.). */
264
270
  contractId: string;
265
- /** Human-readable failure reason — the assertion message. */
271
+ /**
272
+ * Short categorical-ish label — the SDK convention is to keep this
273
+ * under 128 chars and stable across runs (so dashboards can group).
274
+ * Never an end-user-supplied string.
275
+ */
266
276
  failureReason: string;
267
277
  /**
268
278
  * Where the failure was observed:
@@ -285,8 +295,11 @@ interface ContractFailureInput {
285
295
  file: string;
286
296
  name: string;
287
297
  };
288
- /** Optional extra properties merged into the event payload. */
289
- extra?: Record<string, unknown>;
298
+ /**
299
+ * Optional coarse device class, e.g. "desktop", "mobile-web",
300
+ * "ssr". A categorical bucket, not a device identifier.
301
+ */
302
+ deviceClass?: string;
290
303
  }
291
304
 
292
305
  /**
@@ -431,6 +444,9 @@ interface CapturedError {
431
444
 
432
445
  declare class CrossdeckClient {
433
446
  private state;
447
+ private verifiers;
448
+ private verifierReporter;
449
+ private verifierCtx;
434
450
  /**
435
451
  * Boot the SDK. Idempotent — calling init twice with the same options
436
452
  * is a no-op; calling with different options replaces the previous
@@ -441,6 +457,22 @@ declare class CrossdeckClient {
441
457
  * mismatched env fails fast at boot rather than at first event-flush.
442
458
  */
443
459
  init(options: CrossdeckOptions): void;
460
+ /**
461
+ * Fetch /v1/config from the backend and apply any per-app verifier
462
+ * overrides set in the dashboard, then fire the boot self-test
463
+ * once with the FINAL resolved flags.
464
+ *
465
+ * Precedence (also documented at the call site in init()):
466
+ * code option > dashboard remote config > DEBUG/RELEASE default
467
+ *
468
+ * Code wins so engineers retain ultimate control; dashboard is the
469
+ * no-deploy operational lever for QA / staging soaks.
470
+ *
471
+ * Never throws — a /v1/config failure surfaces as "stick with the
472
+ * synchronous defaults that init() already applied" and the boot
473
+ * self-test runs only if code > default resolves true.
474
+ */
475
+ private bootstrapVerifierLayerRemote;
444
476
  /**
445
477
  * @deprecated Use `init()` instead. NorthStar §4 standardised the
446
478
  * lifecycle method name across SDKs as `init` (formerly `start` /
@@ -640,11 +672,14 @@ declare class CrossdeckClient {
640
672
  * call flush().
641
673
  */
642
674
  /**
643
- * Emit `crossdeck.contract_failed` with the canonical property
644
- * shape (`contract_id`, `sdk_version`, `sdk_platform`,
645
- * `failure_reason`, `run_context`, `run_id`). Goes through the
646
- * standard track() pipeline same consent gate, same queue,
647
- * same ingest, no new endpoint.
675
+ * Emit `crossdeck.contract_failed` to the Crossdeck reliability
676
+ * endpoint single-fire, one-way, never visible in the customer's
677
+ * dashboard. Goes over a dedicated HTTP path with the reliability
678
+ * publishable key embedded at build time; the customer's track()
679
+ * pipeline never carries `crossdeck.*` events. This is the
680
+ * independent-controller flow described in Privacy Policy §6
681
+ * ("Flow B"). The wire shape is fixed by the schema-lock contract
682
+ * at `contracts/diagnostics/contract-failed-payload-schema-lock.json`.
648
683
  *
649
684
  * Wire the call from a test hook, dogfood failure path, or
650
685
  * customer contract-verification harness; see
@@ -851,7 +886,7 @@ declare class MemoryStorage implements KeyValueStorage {
851
886
  *
852
887
  * Do NOT edit by hand — `node scripts/sync-sdk-versions.mjs`.
853
888
  */
854
- declare const SDK_VERSION = "1.4.2";
889
+ declare const SDK_VERSION = "1.5.3";
855
890
  declare const SDK_NAME = "@cross-deck/web";
856
891
 
857
892
  /**