@cross-deck/node 1.9.1 → 1.10.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 +23 -0
- package/README.md +2 -2
- package/dist/auto-events/index.d.mts +1 -1
- package/dist/auto-events/index.d.ts +1 -1
- package/dist/{crossdeck-server-Q3CYJC4Z.d.mts → crossdeck-server-C4nWPQzH.d.mts} +113 -3
- package/dist/{crossdeck-server-Q3CYJC4Z.d.ts → crossdeck-server-C4nWPQzH.d.ts} +113 -3
- package/dist/index.cjs +138 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.mjs +138 -14
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as AliasIdentityInput, a as AliasResult, b as AuditDecision, c as AuditEntry, B as
|
|
1
|
+
export { A as AliasIdentityInput, a as AliasResult, b as AuditDecision, c as AuditEntry, B as BlockVerdict, d as Breadcrumb, e as BreadcrumbCategory, f as BreadcrumbLevel, C as CROSSDECK_API_VERSION, g as CapturedError, h as Contract, i as ContractAppliesTo, j as ContractFailureInput, k as ContractPillar, l as ContractStatus, m as ContractTestRef, n as CrossdeckAuthenticationError, o as CrossdeckConfigurationError, p as CrossdeckContracts, q as CrossdeckError, r as CrossdeckErrorPayload, s as CrossdeckErrorType, t as CrossdeckInternalError, u as CrossdeckNetworkError, v as CrossdeckPermissionError, w as CrossdeckRateLimitError, x as CrossdeckServer, y as CrossdeckServerOptions, z as CrossdeckValidationError, D as DEFAULT_BASE_URL, E as DEFAULT_TIMEOUT_MS, F as Diagnostics, G as EntitlementCacheOptions, H as EntitlementMutationResult, I as EntitlementStore, J as EntitlementsListResponse, K as EntitlementsListener, L as Environment, M as ErrorCaptureConfig, N as ErrorLevel, O as EventProperties, P as ForgetResult, Q as GrantDuration, R as GrantEntitlementInput, S as GroupMembership, T as HeartbeatResponse, U as HttpRequestInfo, V as HttpResponseInfo, W as HttpRetriesConfig, X as IdentifyOptions, Y as IdentityHints, Z as IngestOptions, _ as IngestResponse, $ as OwnerStatusInput, a0 as PublicEntitlement, a1 as PurchaseResult, a2 as RequestOptions, a3 as ResolveInput, a4 as ResolveResult, a5 as RevokeEntitlementInput, a6 as RuntimeHost, a7 as RuntimeInfo, a8 as ServerEvent, a9 as StackFrame, aa as StoredEntitlements, ab as SyncPurchaseInput, ac as makeCrossdeckError } from './crossdeck-server-C4nWPQzH.mjs';
|
|
2
2
|
import 'node:events';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -17,7 +17,7 @@ import 'node:events';
|
|
|
17
17
|
*
|
|
18
18
|
* Do NOT edit by hand — `node scripts/sync-sdk-versions.mjs`.
|
|
19
19
|
*/
|
|
20
|
-
declare const SDK_VERSION = "1.
|
|
20
|
+
declare const SDK_VERSION = "1.10.0";
|
|
21
21
|
declare const SDK_NAME = "@cross-deck/node";
|
|
22
22
|
|
|
23
23
|
/**
|
|
@@ -501,7 +501,7 @@ declare function scrubPiiFromProperties(properties: Record<string, unknown>): Re
|
|
|
501
501
|
* - `sdk.no_durable_store`
|
|
502
502
|
* - `sdk.super_property_registered`
|
|
503
503
|
*/
|
|
504
|
-
type DebugSignal = "sdk.configured" | "sdk.first_event_sent" | "sdk.invalid_key" | "sdk.no_identity" | "sdk.entitlement_cache_used" | "sdk.entitlement_cache_warm" | "sdk.entitlement_cache_stale" | "sdk.entitlement_store_recovered" | "sdk.no_durable_store" | "sdk.purchase_evidence_sent" | "sdk.environment_mismatch" | "sdk.sensitive_property_warning" | "sdk.property_coerced" | "sdk.flush_retry_scheduled" | "sdk.flush_permanent_failure" | "sdk.parked" | "sdk.flush_on_exit_started" | "sdk.flush_on_exit_completed" | "sdk.webhook_verified" | "sdk.runtime_detected" | "sdk.super_property_registered" | "sdk.boot_heartbeat_failed";
|
|
504
|
+
type DebugSignal = "sdk.configured" | "sdk.first_event_sent" | "sdk.invalid_key" | "sdk.no_identity" | "sdk.entitlement_cache_used" | "sdk.entitlement_cache_warm" | "sdk.entitlement_cache_stale" | "sdk.entitlement_store_recovered" | "sdk.no_durable_store" | "sdk.purchase_evidence_sent" | "sdk.environment_mismatch" | "sdk.sensitive_property_warning" | "sdk.property_coerced" | "sdk.flush_retry_scheduled" | "sdk.flush_permanent_failure" | "sdk.parked" | "sdk.flush_on_exit_started" | "sdk.flush_on_exit_completed" | "sdk.webhook_verified" | "sdk.runtime_detected" | "sdk.super_property_registered" | "sdk.boot_heartbeat_failed" | "sdk.resolve_missing_identity" | "sdk.resolve_failed" | "sdk.owner_status_missing_identity" | "sdk.owner_status_failed";
|
|
505
505
|
interface DebugContext {
|
|
506
506
|
[key: string]: unknown;
|
|
507
507
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as AliasIdentityInput, a as AliasResult, b as AuditDecision, c as AuditEntry, B as
|
|
1
|
+
export { A as AliasIdentityInput, a as AliasResult, b as AuditDecision, c as AuditEntry, B as BlockVerdict, d as Breadcrumb, e as BreadcrumbCategory, f as BreadcrumbLevel, C as CROSSDECK_API_VERSION, g as CapturedError, h as Contract, i as ContractAppliesTo, j as ContractFailureInput, k as ContractPillar, l as ContractStatus, m as ContractTestRef, n as CrossdeckAuthenticationError, o as CrossdeckConfigurationError, p as CrossdeckContracts, q as CrossdeckError, r as CrossdeckErrorPayload, s as CrossdeckErrorType, t as CrossdeckInternalError, u as CrossdeckNetworkError, v as CrossdeckPermissionError, w as CrossdeckRateLimitError, x as CrossdeckServer, y as CrossdeckServerOptions, z as CrossdeckValidationError, D as DEFAULT_BASE_URL, E as DEFAULT_TIMEOUT_MS, F as Diagnostics, G as EntitlementCacheOptions, H as EntitlementMutationResult, I as EntitlementStore, J as EntitlementsListResponse, K as EntitlementsListener, L as Environment, M as ErrorCaptureConfig, N as ErrorLevel, O as EventProperties, P as ForgetResult, Q as GrantDuration, R as GrantEntitlementInput, S as GroupMembership, T as HeartbeatResponse, U as HttpRequestInfo, V as HttpResponseInfo, W as HttpRetriesConfig, X as IdentifyOptions, Y as IdentityHints, Z as IngestOptions, _ as IngestResponse, $ as OwnerStatusInput, a0 as PublicEntitlement, a1 as PurchaseResult, a2 as RequestOptions, a3 as ResolveInput, a4 as ResolveResult, a5 as RevokeEntitlementInput, a6 as RuntimeHost, a7 as RuntimeInfo, a8 as ServerEvent, a9 as StackFrame, aa as StoredEntitlements, ab as SyncPurchaseInput, ac as makeCrossdeckError } from './crossdeck-server-C4nWPQzH.js';
|
|
2
2
|
import 'node:events';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -17,7 +17,7 @@ import 'node:events';
|
|
|
17
17
|
*
|
|
18
18
|
* Do NOT edit by hand — `node scripts/sync-sdk-versions.mjs`.
|
|
19
19
|
*/
|
|
20
|
-
declare const SDK_VERSION = "1.
|
|
20
|
+
declare const SDK_VERSION = "1.10.0";
|
|
21
21
|
declare const SDK_NAME = "@cross-deck/node";
|
|
22
22
|
|
|
23
23
|
/**
|
|
@@ -501,7 +501,7 @@ declare function scrubPiiFromProperties(properties: Record<string, unknown>): Re
|
|
|
501
501
|
* - `sdk.no_durable_store`
|
|
502
502
|
* - `sdk.super_property_registered`
|
|
503
503
|
*/
|
|
504
|
-
type DebugSignal = "sdk.configured" | "sdk.first_event_sent" | "sdk.invalid_key" | "sdk.no_identity" | "sdk.entitlement_cache_used" | "sdk.entitlement_cache_warm" | "sdk.entitlement_cache_stale" | "sdk.entitlement_store_recovered" | "sdk.no_durable_store" | "sdk.purchase_evidence_sent" | "sdk.environment_mismatch" | "sdk.sensitive_property_warning" | "sdk.property_coerced" | "sdk.flush_retry_scheduled" | "sdk.flush_permanent_failure" | "sdk.parked" | "sdk.flush_on_exit_started" | "sdk.flush_on_exit_completed" | "sdk.webhook_verified" | "sdk.runtime_detected" | "sdk.super_property_registered" | "sdk.boot_heartbeat_failed";
|
|
504
|
+
type DebugSignal = "sdk.configured" | "sdk.first_event_sent" | "sdk.invalid_key" | "sdk.no_identity" | "sdk.entitlement_cache_used" | "sdk.entitlement_cache_warm" | "sdk.entitlement_cache_stale" | "sdk.entitlement_store_recovered" | "sdk.no_durable_store" | "sdk.purchase_evidence_sent" | "sdk.environment_mismatch" | "sdk.sensitive_property_warning" | "sdk.property_coerced" | "sdk.flush_retry_scheduled" | "sdk.flush_permanent_failure" | "sdk.parked" | "sdk.flush_on_exit_started" | "sdk.flush_on_exit_completed" | "sdk.webhook_verified" | "sdk.runtime_detected" | "sdk.super_property_registered" | "sdk.boot_heartbeat_failed" | "sdk.resolve_missing_identity" | "sdk.resolve_failed" | "sdk.owner_status_missing_identity" | "sdk.owner_status_failed";
|
|
505
505
|
interface DebugContext {
|
|
506
506
|
[key: string]: unknown;
|
|
507
507
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -329,7 +329,7 @@ function byteLength(s) {
|
|
|
329
329
|
import * as https from "https";
|
|
330
330
|
|
|
331
331
|
// src/_version.ts
|
|
332
|
-
var SDK_VERSION = "1.
|
|
332
|
+
var SDK_VERSION = "1.10.0";
|
|
333
333
|
var SDK_NAME = "@cross-deck/node";
|
|
334
334
|
|
|
335
335
|
// src/_diagnostic-telemetry.ts
|
|
@@ -3091,6 +3091,130 @@ var CrossdeckServer = class extends EventEmitter {
|
|
|
3091
3091
|
this.populateEntitlementCache({ customerId }, response);
|
|
3092
3092
|
return response;
|
|
3093
3093
|
}
|
|
3094
|
+
// ── Blocking — "entitlements, inverted" (Crossdeck Trust, v2 preview) ───────
|
|
3095
|
+
//
|
|
3096
|
+
// getEntitlements() answers "can they access Pro?"; resolve() answers "should
|
|
3097
|
+
// they be here at all?". Same call, opposite question. Both read Crossdeck live.
|
|
3098
|
+
// The safety inversion: entitlements fail CLOSED (protect revenue); blocking
|
|
3099
|
+
// fails OPEN (protect real users) — these methods NEVER throw for the verdict
|
|
3100
|
+
// and NEVER return blocked:true on uncertainty.
|
|
3101
|
+
/**
|
|
3102
|
+
* Resolve a user's BLOCK verdict (plus identity / entitlement context) — the same
|
|
3103
|
+
* `/v1/resolve` you'd call for entitlements, read for `blocked`. Wire it into signup
|
|
3104
|
+
* and every visit; on `blocked`, sign the user out (and, for public content, take
|
|
3105
|
+
* their pages offline — see the Blocking developer guide, Pattern B).
|
|
3106
|
+
*
|
|
3107
|
+
* **Fail-open is the contract.** This never throws for the block decision and never
|
|
3108
|
+
* returns `blocked: true` on uncertainty. Any error — Crossdeck unreachable, timeout,
|
|
3109
|
+
* unresolved identity — yields `{ blocked: false, degraded: true }`, so a glitch can
|
|
3110
|
+
* never lock out a real user.
|
|
3111
|
+
*
|
|
3112
|
+
* Forward the END USER's `ip` (you call this server-to-server, so otherwise Crossdeck
|
|
3113
|
+
* sees your server's IP and an ip-rule can't match the visitor), and the verified
|
|
3114
|
+
* identity (`userId` + `idToken`) so a `domain`/`email` rule can match the email.
|
|
3115
|
+
*
|
|
3116
|
+
* @experimental Preview — Crossdeck Trust ships with Crossdeck v2. Stable shape, not yet GA.
|
|
3117
|
+
*/
|
|
3118
|
+
async resolve(input, options) {
|
|
3119
|
+
const failOpen = () => ({
|
|
3120
|
+
blocked: false,
|
|
3121
|
+
blockReason: null,
|
|
3122
|
+
blockedKey: null,
|
|
3123
|
+
degraded: true,
|
|
3124
|
+
status: "anonymous",
|
|
3125
|
+
entitlements: [],
|
|
3126
|
+
crossdeckCustomerId: null,
|
|
3127
|
+
anonymousId: input?.anonymousId ?? null,
|
|
3128
|
+
identityError: null
|
|
3129
|
+
});
|
|
3130
|
+
if (!input || !input.anonymousId && !(input.userId && input.idToken)) {
|
|
3131
|
+
this.debug.emit(
|
|
3132
|
+
"sdk.resolve_missing_identity",
|
|
3133
|
+
"resolve() needs anonymousId OR (userId + idToken); returning fail-open blocked:false."
|
|
3134
|
+
);
|
|
3135
|
+
return failOpen();
|
|
3136
|
+
}
|
|
3137
|
+
try {
|
|
3138
|
+
const raw = await this.http.request("POST", "/resolve", {
|
|
3139
|
+
body: {
|
|
3140
|
+
...input.userId ? { userId: input.userId } : {},
|
|
3141
|
+
...input.idToken ? { idToken: input.idToken } : {},
|
|
3142
|
+
...input.anonymousId ? { anonymousId: input.anonymousId } : {},
|
|
3143
|
+
...input.ip ? { ip: input.ip } : {}
|
|
3144
|
+
},
|
|
3145
|
+
signal: options?.signal,
|
|
3146
|
+
timeoutMs: options?.timeoutMs
|
|
3147
|
+
});
|
|
3148
|
+
return {
|
|
3149
|
+
blocked: raw.blocked === true,
|
|
3150
|
+
blockReason: raw.blockReason ?? null,
|
|
3151
|
+
blockedKey: raw.blockedKey ?? null,
|
|
3152
|
+
status: typeof raw.status === "string" ? raw.status : "active",
|
|
3153
|
+
entitlements: Array.isArray(raw.entitlements) ? raw.entitlements.filter((e) => typeof e === "string") : [],
|
|
3154
|
+
crossdeckCustomerId: raw.crossdeckCustomerId ?? raw.user?.id ?? null,
|
|
3155
|
+
anonymousId: raw.anonymousId ?? input.anonymousId ?? null,
|
|
3156
|
+
identityError: raw.identityError ?? null
|
|
3157
|
+
};
|
|
3158
|
+
} catch (err) {
|
|
3159
|
+
this.debug.emit(
|
|
3160
|
+
"sdk.resolve_failed",
|
|
3161
|
+
`resolve() failed \u2014 fail-open blocked:false. ${err instanceof Error ? err.message : String(err)}`,
|
|
3162
|
+
{ error: err instanceof Error ? err.message : String(err) }
|
|
3163
|
+
);
|
|
3164
|
+
return failOpen();
|
|
3165
|
+
}
|
|
3166
|
+
}
|
|
3167
|
+
/**
|
|
3168
|
+
* Convenience over {@link resolve}: just the boolean. Fail-open (false on any error).
|
|
3169
|
+
*
|
|
3170
|
+
* @experimental Preview — see {@link resolve}.
|
|
3171
|
+
*/
|
|
3172
|
+
async isBlocked(input, options) {
|
|
3173
|
+
return (await this.resolve(input, options)).blocked;
|
|
3174
|
+
}
|
|
3175
|
+
/**
|
|
3176
|
+
* The OWNER's block verdict for the public-page path (Pattern B / §5b of the Blocking
|
|
3177
|
+
* developer guide) — "is the owner of this page blocked?", no session token required.
|
|
3178
|
+
* Pass the owner's recorded identifiers (`userId`/`email`/`domain`/`ip`; the `ip` is
|
|
3179
|
+
* their CREATION ip, not a live visitor's). Poll on a short TTL to invalidate your
|
|
3180
|
+
* public-page cache. Fail-open — any error → `{ blocked: false, degraded: true }`.
|
|
3181
|
+
*
|
|
3182
|
+
* @experimental Preview — see {@link resolve}.
|
|
3183
|
+
*/
|
|
3184
|
+
async getOwnerStatus(input, options) {
|
|
3185
|
+
const query = {
|
|
3186
|
+
userId: input?.userId || void 0,
|
|
3187
|
+
email: input?.email || void 0,
|
|
3188
|
+
domain: input?.domain || void 0,
|
|
3189
|
+
ip: input?.ip || void 0
|
|
3190
|
+
};
|
|
3191
|
+
if (!query.userId && !query.email && !query.domain && !query.ip) {
|
|
3192
|
+
this.debug.emit(
|
|
3193
|
+
"sdk.owner_status_missing_identity",
|
|
3194
|
+
"getOwnerStatus() needs at least one of userId/email/domain/ip; returning fail-open blocked:false."
|
|
3195
|
+
);
|
|
3196
|
+
return { blocked: false, blockReason: null, blockedKey: null, degraded: true };
|
|
3197
|
+
}
|
|
3198
|
+
try {
|
|
3199
|
+
const raw = await this.http.request("GET", "/trust/status", {
|
|
3200
|
+
query,
|
|
3201
|
+
signal: options?.signal,
|
|
3202
|
+
timeoutMs: options?.timeoutMs
|
|
3203
|
+
});
|
|
3204
|
+
return {
|
|
3205
|
+
blocked: raw.blocked === true,
|
|
3206
|
+
blockReason: raw.blockReason ?? null,
|
|
3207
|
+
blockedKey: raw.blockedKey ?? null
|
|
3208
|
+
};
|
|
3209
|
+
} catch (err) {
|
|
3210
|
+
this.debug.emit(
|
|
3211
|
+
"sdk.owner_status_failed",
|
|
3212
|
+
`getOwnerStatus() failed \u2014 fail-open blocked:false. ${err instanceof Error ? err.message : String(err)}`,
|
|
3213
|
+
{ error: err instanceof Error ? err.message : String(err) }
|
|
3214
|
+
);
|
|
3215
|
+
return { blocked: false, blockReason: null, blockedKey: null, degraded: true };
|
|
3216
|
+
}
|
|
3217
|
+
}
|
|
3094
3218
|
/**
|
|
3095
3219
|
* Synchronous entitlement check. Returns `true` iff the customer
|
|
3096
3220
|
* has the entitlement AND the cache entry is fresh (within
|
|
@@ -4538,8 +4662,8 @@ function normaliseSecrets(input) {
|
|
|
4538
4662
|
}
|
|
4539
4663
|
|
|
4540
4664
|
// src/_contracts-bundled.ts
|
|
4541
|
-
var BUNDLED_IN = "@cross-deck/node@1.
|
|
4542
|
-
var SDK_VERSION2 = "1.
|
|
4665
|
+
var BUNDLED_IN = "@cross-deck/node@1.10.0";
|
|
4666
|
+
var SDK_VERSION2 = "1.10.0";
|
|
4543
4667
|
var BUNDLED_CONTRACTS = Object.freeze([
|
|
4544
4668
|
{
|
|
4545
4669
|
"id": "contract-failed-payload-schema-lock",
|
|
@@ -4661,7 +4785,7 @@ var BUNDLED_CONTRACTS = Object.freeze([
|
|
|
4661
4785
|
"legal/security/index.html#diagnostic",
|
|
4662
4786
|
"legal/sdk-data/index.html#b-diagnostic"
|
|
4663
4787
|
],
|
|
4664
|
-
"bundledIn": "@cross-deck/node@1.
|
|
4788
|
+
"bundledIn": "@cross-deck/node@1.10.0"
|
|
4665
4789
|
},
|
|
4666
4790
|
{
|
|
4667
4791
|
"id": "documentation-honesty",
|
|
@@ -4693,7 +4817,7 @@ var BUNDLED_CONTRACTS = Object.freeze([
|
|
|
4693
4817
|
],
|
|
4694
4818
|
"registeredAt": "2026-05-26",
|
|
4695
4819
|
"firstRegisteredIn": "bank-grade reconciliation v1.4.0 \u2014 phase 7.1",
|
|
4696
|
-
"bundledIn": "@cross-deck/node@1.
|
|
4820
|
+
"bundledIn": "@cross-deck/node@1.10.0"
|
|
4697
4821
|
},
|
|
4698
4822
|
{
|
|
4699
4823
|
"id": "error-envelope-shape",
|
|
@@ -4732,7 +4856,7 @@ var BUNDLED_CONTRACTS = Object.freeze([
|
|
|
4732
4856
|
],
|
|
4733
4857
|
"registeredAt": "2026-05-26",
|
|
4734
4858
|
"firstRegisteredIn": "bank-grade reconciliation v1.4.0 \u2014 phase 8 (codifies existing contract)",
|
|
4735
|
-
"bundledIn": "@cross-deck/node@1.
|
|
4859
|
+
"bundledIn": "@cross-deck/node@1.10.0"
|
|
4736
4860
|
},
|
|
4737
4861
|
{
|
|
4738
4862
|
"id": "flush-interval-parity",
|
|
@@ -4777,7 +4901,7 @@ var BUNDLED_CONTRACTS = Object.freeze([
|
|
|
4777
4901
|
],
|
|
4778
4902
|
"registeredAt": "2026-05-26",
|
|
4779
4903
|
"firstRegisteredIn": "bank-grade reconciliation v1.4.0 \u2014 phase 3.3",
|
|
4780
|
-
"bundledIn": "@cross-deck/node@1.
|
|
4904
|
+
"bundledIn": "@cross-deck/node@1.10.0"
|
|
4781
4905
|
},
|
|
4782
4906
|
{
|
|
4783
4907
|
"id": "idempotency-key-deterministic",
|
|
@@ -4882,7 +5006,7 @@ var BUNDLED_CONTRACTS = Object.freeze([
|
|
|
4882
5006
|
],
|
|
4883
5007
|
"registeredAt": "2026-05-26",
|
|
4884
5008
|
"firstRegisteredIn": "bank-grade reconciliation v1.4.0 \u2014 phase 2.2.a + 2.2.b + 2.2.c",
|
|
4885
|
-
"bundledIn": "@cross-deck/node@1.
|
|
5009
|
+
"bundledIn": "@cross-deck/node@1.10.0"
|
|
4886
5010
|
},
|
|
4887
5011
|
{
|
|
4888
5012
|
"id": "invalid-input-rejected-natively",
|
|
@@ -4938,7 +5062,7 @@ var BUNDLED_CONTRACTS = Object.freeze([
|
|
|
4938
5062
|
],
|
|
4939
5063
|
"registeredAt": "2026-06-11",
|
|
4940
5064
|
"firstRegisteredIn": "swift trap-on-input class fix \u2014 first machine-tested Swift release",
|
|
4941
|
-
"bundledIn": "@cross-deck/node@1.
|
|
5065
|
+
"bundledIn": "@cross-deck/node@1.10.0"
|
|
4942
5066
|
},
|
|
4943
5067
|
{
|
|
4944
5068
|
"id": "node-pii-scrubber",
|
|
@@ -4977,7 +5101,7 @@ var BUNDLED_CONTRACTS = Object.freeze([
|
|
|
4977
5101
|
],
|
|
4978
5102
|
"registeredAt": "2026-05-26",
|
|
4979
5103
|
"firstRegisteredIn": "bank-grade reconciliation v1.4.0 \u2014 phase 3.1",
|
|
4980
|
-
"bundledIn": "@cross-deck/node@1.
|
|
5104
|
+
"bundledIn": "@cross-deck/node@1.10.0"
|
|
4981
5105
|
},
|
|
4982
5106
|
{
|
|
4983
5107
|
"id": "node-shutdown-awaits-flush",
|
|
@@ -5010,7 +5134,7 @@ var BUNDLED_CONTRACTS = Object.freeze([
|
|
|
5010
5134
|
],
|
|
5011
5135
|
"registeredAt": "2026-05-26",
|
|
5012
5136
|
"firstRegisteredIn": "bank-grade reconciliation v1.4.0 \u2014 phase 5.4",
|
|
5013
|
-
"bundledIn": "@cross-deck/node@1.
|
|
5137
|
+
"bundledIn": "@cross-deck/node@1.10.0"
|
|
5014
5138
|
},
|
|
5015
5139
|
{
|
|
5016
5140
|
"id": "sdk-error-codes-catalogue",
|
|
@@ -5055,7 +5179,7 @@ var BUNDLED_CONTRACTS = Object.freeze([
|
|
|
5055
5179
|
],
|
|
5056
5180
|
"registeredAt": "2026-05-26",
|
|
5057
5181
|
"firstRegisteredIn": "bank-grade reconciliation v1.4.0 \u2014 phase 6.2",
|
|
5058
|
-
"bundledIn": "@cross-deck/node@1.
|
|
5182
|
+
"bundledIn": "@cross-deck/node@1.10.0"
|
|
5059
5183
|
},
|
|
5060
5184
|
{
|
|
5061
5185
|
"id": "sync-purchases-funnel-parity",
|
|
@@ -5088,7 +5212,7 @@ var BUNDLED_CONTRACTS = Object.freeze([
|
|
|
5088
5212
|
],
|
|
5089
5213
|
"registeredAt": "2026-05-26",
|
|
5090
5214
|
"firstRegisteredIn": "bank-grade reconciliation v1.4.0 \u2014 phase 3.5",
|
|
5091
|
-
"bundledIn": "@cross-deck/node@1.
|
|
5215
|
+
"bundledIn": "@cross-deck/node@1.10.0"
|
|
5092
5216
|
},
|
|
5093
5217
|
{
|
|
5094
5218
|
"id": "verifier-timestamp-mandatory",
|
|
@@ -5142,7 +5266,7 @@ var BUNDLED_CONTRACTS = Object.freeze([
|
|
|
5142
5266
|
],
|
|
5143
5267
|
"registeredAt": "2026-05-26",
|
|
5144
5268
|
"firstRegisteredIn": "bank-grade reconciliation v1.4.0 \u2014 phase 7.2",
|
|
5145
|
-
"bundledIn": "@cross-deck/node@1.
|
|
5269
|
+
"bundledIn": "@cross-deck/node@1.10.0"
|
|
5146
5270
|
}
|
|
5147
5271
|
]);
|
|
5148
5272
|
|