🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@cross-deck/web

Package Overview
Dependencies
Maintainers
1
Versions
41
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@cross-deck/web - npm Package Compare versions

Comparing version
1.13.3
to
1.13.5
+1
-1
dist/error-codes.json
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"generatedAt": "2026-07-28T09:57:18.438Z",
"generatedAt": "2026-07-28T10:36:58.343Z",
"sdk": "@cross-deck/web",

@@ -5,0 +5,0 @@ "codes": [

@@ -252,5 +252,5 @@ import { C as CrossdeckTrustNamespace } from './trust-akYVfmoN.mjs';

/** Semver of the SDK release these contracts were bundled with. */
readonly sdkVersion: "1.13.3";
readonly sdkVersion: "1.13.5";
/** Fully-qualified bundle identifier — e.g. `@cross-deck/web@1.4.2`. */
readonly bundledIn: "@cross-deck/web@1.13.3";
readonly bundledIn: "@cross-deck/web@1.13.5";
/**

@@ -870,6 +870,30 @@ * Resolve a failing test back to the contract it exercises.

}
/**
* Default singleton — most consumers want one SDK instance per app.
* Creating extra instances is fine; just `new CrossdeckClient()`.
* The ONE Crossdeck singleton — shared across every entry point.
*
* Why this module exists (the biotree defect, CD-155): `@cross-deck/web` and
* `@cross-deck/web/react` build as SEPARATE bundles. Each one inlined
* `crossdeck.ts` — including a bare `export const Crossdeck = new
* CrossdeckClient()` — so the shipped package contained TWO singletons: one in
* `index.mjs`, a different object baked into `react.mjs`. A React app that did
* `Crossdeck.init()` / `identify()` / `getEntitlements()` on the core import
* warmed instance A, while `useEntitlement()` (react entry) read instance B,
* which was never initialised — so a paying customer read `false` forever. No
* error, no warning; a silent duplicate-singleton hazard. In source the import
* is single; the split is purely a bundling artefact.
*
* The fix that CANNOT regress: back the instance with the cross-realm global
* symbol registry. `Symbol.for(key)` returns the same symbol everywhere, so no
* matter how many times a bundler duplicates this module, every copy resolves
* to the SAME instance. This is the same guard PostHog, Segment, and
* LaunchDarkly use for their React bindings, for this exact reason.
*/
/**
* The default singleton — most consumers want one SDK instance per app. Every
* entry point (`@cross-deck/web`, `@cross-deck/web/react`, `.../vue`) resolves
* to THIS object. Creating extra instances is still fine for advanced use:
* just `new CrossdeckClient()`.
*/
declare const Crossdeck: CrossdeckClient;

@@ -995,3 +1019,3 @@

*/
declare const SDK_VERSION = "1.13.3";
declare const SDK_VERSION = "1.13.5";
declare const SDK_NAME = "@cross-deck/web";

@@ -998,0 +1022,0 @@

@@ -252,5 +252,5 @@ import { C as CrossdeckTrustNamespace } from './trust-akYVfmoN.js';

/** Semver of the SDK release these contracts were bundled with. */
readonly sdkVersion: "1.13.3";
readonly sdkVersion: "1.13.5";
/** Fully-qualified bundle identifier — e.g. `@cross-deck/web@1.4.2`. */
readonly bundledIn: "@cross-deck/web@1.13.3";
readonly bundledIn: "@cross-deck/web@1.13.5";
/**

@@ -870,6 +870,30 @@ * Resolve a failing test back to the contract it exercises.

}
/**
* Default singleton — most consumers want one SDK instance per app.
* Creating extra instances is fine; just `new CrossdeckClient()`.
* The ONE Crossdeck singleton — shared across every entry point.
*
* Why this module exists (the biotree defect, CD-155): `@cross-deck/web` and
* `@cross-deck/web/react` build as SEPARATE bundles. Each one inlined
* `crossdeck.ts` — including a bare `export const Crossdeck = new
* CrossdeckClient()` — so the shipped package contained TWO singletons: one in
* `index.mjs`, a different object baked into `react.mjs`. A React app that did
* `Crossdeck.init()` / `identify()` / `getEntitlements()` on the core import
* warmed instance A, while `useEntitlement()` (react entry) read instance B,
* which was never initialised — so a paying customer read `false` forever. No
* error, no warning; a silent duplicate-singleton hazard. In source the import
* is single; the split is purely a bundling artefact.
*
* The fix that CANNOT regress: back the instance with the cross-realm global
* symbol registry. `Symbol.for(key)` returns the same symbol everywhere, so no
* matter how many times a bundler duplicates this module, every copy resolves
* to the SAME instance. This is the same guard PostHog, Segment, and
* LaunchDarkly use for their React bindings, for this exact reason.
*/
/**
* The default singleton — most consumers want one SDK instance per app. Every
* entry point (`@cross-deck/web`, `@cross-deck/web/react`, `.../vue`) resolves
* to THIS object. Creating extra instances is still fine for advanced use:
* just `new CrossdeckClient()`.
*/
declare const Crossdeck: CrossdeckClient;

@@ -995,3 +1019,3 @@

*/
declare const SDK_VERSION = "1.13.3";
declare const SDK_VERSION = "1.13.5";
declare const SDK_NAME = "@cross-deck/web";

@@ -998,0 +1022,0 @@

{
"name": "@cross-deck/web",
"version": "1.13.3",
"version": "1.13.5",
"description": "Crossdeck SDK for browsers and Node.js — verified subscriptions, entitlements, and product telemetry in one client.",

@@ -5,0 +5,0 @@ "license": "MIT",

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display