@traffical/node 0.9.0 → 0.10.1

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/client.js CHANGED
@@ -11,7 +11,7 @@
11
11
  * - Batched event transport for efficiency
12
12
  * - Graceful degradation with local config and schema defaults
13
13
  */
14
- import { resolveParameters, decide as coreDecide, DecisionDeduplicator, generateExposureId, generateTrackEventId, generateAssignmentId, } from "@traffical/core";
14
+ import { resolveParameters, decide as coreDecide, getUnitKeyField as coreGetUnitKeyField, getParameterLayerId as coreGetParameterLayerId, DecisionDeduplicator, generateExposureId, generateTrackEventId, generateAssignmentId, generateDecisionId, } from "@traffical/core";
15
15
  import { DecisionClient } from "@traffical/core-io";
16
16
  import { EventBatcher } from "./event-batcher.js";
17
17
  import { SDK_VERSION } from "./version.js";
@@ -19,13 +19,63 @@ import { SDK_VERSION } from "./version.js";
19
19
  // Constants
20
20
  // =============================================================================
21
21
  const SDK_NAME = "node";
22
+ /**
23
+ * Normalizes evaluation-method arguments so both the canonical positional form
24
+ * `decide(context, defaults)` and the legacy object-bag form
25
+ * `decide({ context, defaults })` work. Positional is detected by the presence
26
+ * of the second (`defaults`) argument; the bag form is soft-deprecated.
27
+ */
28
+ function normalizeEvalArgs(contextOrOptions, maybeDefaults) {
29
+ if (maybeDefaults !== undefined) {
30
+ return { context: contextOrOptions, defaults: maybeDefaults };
31
+ }
32
+ const bag = contextOrOptions;
33
+ return { context: bag.context, defaults: bag.defaults };
34
+ }
22
35
  const DEFAULT_BASE_URL = "https://sdk.traffical.io";
23
36
  const DEFAULT_REFRESH_INTERVAL_MS = 60_000; // 1 minute
24
37
  const DEFAULT_REQUEST_TIMEOUT_MS = 10_000; // 10 seconds
25
38
  const OFFLINE_WARNING_INTERVAL_MS = 300_000; // 5 minutes
39
+ const MALFORMED_BUNDLE_WARNING_INTERVAL_MS = 300_000; // 5 minutes
26
40
  const DECISION_CACHE_MAX_SIZE = 1000; // Max decisions to cache for attribution lookup
41
+ /** +/-10% jitter on the background refresh interval to avoid thundering-herd sync. */
42
+ const REFRESH_JITTER_RATIO = 0.1;
27
43
  const ASSIGNMENT_LOGGER_LRU_MAX = 10_000;
28
44
  const ASSIGNMENT_LOGGER_LRU_TTL_MS = 60 * 60 * 1000; // 1 hour
45
+ const EXPOSURE_DEDUP_LRU_MAX = 10_000;
46
+ const DEFAULT_EXPOSURE_SESSION_TTL_MS = 30 * 60 * 1000; // 30 minutes (mirrors js-client)
47
+ /** Returns `intervalMs` perturbed by uniform +/-REFRESH_JITTER_RATIO jitter. */
48
+ function jitteredInterval(intervalMs) {
49
+ const delta = intervalMs * REFRESH_JITTER_RATIO;
50
+ return intervalMs + (Math.random() * 2 - 1) * delta;
51
+ }
52
+ /**
53
+ * Structural guard for a fetched config bundle. A 200 response can still carry a
54
+ * malformed body (truncated CDN write, partial deploy); serving it would corrupt
55
+ * every bucket assignment. Requires the hashing config the resolver depends on
56
+ * (`unitKey` non-empty, `bucketCount` an integer >= 1) plus the top-level
57
+ * parameters/layers arrays.
58
+ */
59
+ function isValidConfigBundle(bundle) {
60
+ if (!bundle || typeof bundle !== "object")
61
+ return false;
62
+ const b = bundle;
63
+ if (!Array.isArray(b.parameters))
64
+ return false;
65
+ if (!Array.isArray(b.layers))
66
+ return false;
67
+ const hashing = b.hashing;
68
+ if (!hashing || typeof hashing !== "object")
69
+ return false;
70
+ if (typeof hashing.unitKey !== "string" || hashing.unitKey.length === 0)
71
+ return false;
72
+ if (typeof hashing.bucketCount !== "number" ||
73
+ !Number.isInteger(hashing.bucketCount) ||
74
+ hashing.bucketCount < 1) {
75
+ return false;
76
+ }
77
+ return true;
78
+ }
29
79
  // =============================================================================
30
80
  // Traffical Client Class
31
81
  // =============================================================================
@@ -47,6 +97,7 @@ export class TrafficalClient {
47
97
  etag: null,
48
98
  lastFetchTime: 0,
49
99
  lastOfflineWarning: 0,
100
+ lastMalformedWarning: 0,
50
101
  refreshTimer: null,
51
102
  isInitialized: false,
52
103
  serverResponse: null,
@@ -60,8 +111,19 @@ export class TrafficalClient {
60
111
  _disableCloudEvents;
61
112
  /** In-memory LRU for assignment logger deduplication: key → expiry timestamp */
62
113
  _assignmentLoggerDedup;
114
+ /** In-memory LRU for exposure-event deduplication: key → expiry timestamp */
115
+ _exposureDedup;
116
+ /** Session TTL for exposure deduplication (ms) */
117
+ _exposureSessionTtlMs;
63
118
  /** Cache of recent decisions for attribution lookup on rewards */
64
119
  _decisionCache = new Map();
120
+ /** Serialized context of the last server-mode resolve (per-call throttle). */
121
+ _lastResolveContextKey = null;
122
+ /** Resolves once the first config load attempt completes (fail-open). */
123
+ _readyResolve;
124
+ _readyPromise = new Promise((resolve) => {
125
+ this._readyResolve = resolve;
126
+ });
65
127
  constructor(options) {
66
128
  this._options = {
67
129
  orgId: options.orgId,
@@ -75,7 +137,9 @@ export class TrafficalClient {
75
137
  trackDecisions: options.trackDecisions !== false,
76
138
  evaluationMode: options.evaluationMode ?? "bundle",
77
139
  };
78
- this._requestTimeoutMs = options.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;
140
+ // Config-fetch timeout: canonical configTimeoutMs wins, else legacy requestTimeoutMs.
141
+ this._requestTimeoutMs =
142
+ options.configTimeoutMs ?? options.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;
79
143
  // Initialize DecisionClient
80
144
  this._decisionClient = new DecisionClient({
81
145
  baseUrl: this._options.baseUrl,
@@ -83,6 +147,9 @@ export class TrafficalClient {
83
147
  projectId: this._options.projectId,
84
148
  env: this._options.env,
85
149
  apiKey: this._options.apiKey,
150
+ // Server-resolve timeout: canonical resolveTimeoutMs wins, else legacy
151
+ // requestTimeoutMs; undefined lets DecisionClient apply its own 5s default.
152
+ defaultTimeoutMs: options.resolveTimeoutMs ?? options.requestTimeoutMs,
86
153
  });
87
154
  // Default dev-mode schema warnings handler
88
155
  if (!options.onSchemaWarnings && typeof process !== "undefined" && process.env?.NODE_ENV === "development") {
@@ -96,9 +163,12 @@ export class TrafficalClient {
96
163
  this._eventBatcher = new EventBatcher({
97
164
  endpoint: `${this._options.baseUrl}/v1/events/batch`,
98
165
  apiKey: options.apiKey,
99
- batchSize: options.eventBatchSize,
100
- flushIntervalMs: options.eventFlushIntervalMs,
101
- requestTimeoutMs: options.requestTimeoutMs,
166
+ // Canonical batchSize/flushIntervalMs win over legacy event* names.
167
+ batchSize: options.batchSize ?? options.eventBatchSize,
168
+ flushIntervalMs: options.flushIntervalMs ?? options.eventFlushIntervalMs,
169
+ maxQueueSize: options.eventMaxQueueSize,
170
+ // Event-delivery timeout: canonical eventsTimeoutMs wins, else legacy requestTimeoutMs.
171
+ requestTimeoutMs: options.eventsTimeoutMs ?? options.requestTimeoutMs,
102
172
  debug: options.debugEvents,
103
173
  onError: (error) => {
104
174
  console.warn(`[Traffical] Event batching error: ${error.message}`);
@@ -116,6 +186,8 @@ export class TrafficalClient {
116
186
  this._assignmentLoggerDedup = (options.deduplicateAssignmentLogger !== false && options.assignmentLogger)
117
187
  ? new Map()
118
188
  : null;
189
+ this._exposureDedup = options.deduplicateExposures !== false ? new Map() : null;
190
+ this._exposureSessionTtlMs = options.exposureSessionTtlMs ?? DEFAULT_EXPOSURE_SESSION_TTL_MS;
119
191
  // Initialize with local config if provided
120
192
  if (this._options.localConfig) {
121
193
  this._state.bundle = this._options.localConfig;
@@ -134,9 +206,26 @@ export class TrafficalClient {
134
206
  }
135
207
  this._startBackgroundRefresh();
136
208
  this._state.isInitialized = true;
209
+ this._readyResolve();
210
+ }
211
+ /**
212
+ * Resolves once the first usable config has loaded (or the SDK has failed
213
+ * open on an unavailable/malformed bundle). Never rejects.
214
+ */
215
+ async waitForReady() {
216
+ return this._readyPromise;
217
+ }
218
+ /**
219
+ * Single teardown verb (spec 0.7.0 design contract). Stops background
220
+ * refresh and awaits a final event flush before returning.
221
+ */
222
+ async close() {
223
+ await this.destroy();
137
224
  }
138
225
  /**
139
226
  * Stops background refresh and cleans up resources.
227
+ *
228
+ * @deprecated Use {@link close} instead — the canonical single teardown verb.
140
229
  */
141
230
  async destroy() {
142
231
  if (this._state.refreshTimer) {
@@ -148,7 +237,9 @@ export class TrafficalClient {
148
237
  }
149
238
  /**
150
239
  * Synchronous destroy for process exit handlers.
151
- * Use destroy() when possible for proper cleanup.
240
+ *
241
+ * @deprecated Use {@link close} instead. This best-effort variant does not
242
+ * await the final flush; prefer `await close()` where you can.
152
243
  */
153
244
  destroySync() {
154
245
  if (this._state.refreshTimer) {
@@ -174,25 +265,37 @@ export class TrafficalClient {
174
265
  getConfigVersion() {
175
266
  return this._state.serverResponse?.stateVersion ?? this._state.bundle?.version ?? null;
176
267
  }
268
+ /**
269
+ * Returns the context field the bundle buckets on (the project's unit key),
270
+ * or null before the bundle has loaded. Adapters (e.g. an OpenFeature
271
+ * provider) map their targeting key onto this field.
272
+ */
273
+ getUnitKeyField() {
274
+ return coreGetUnitKeyField(this._getEffectiveBundle());
275
+ }
276
+ /**
277
+ * Returns the id of the layer a parameter belongs to, or null if the
278
+ * parameter is unknown / the bundle is not yet loaded.
279
+ */
280
+ getParameterLayerId(key) {
281
+ return coreGetParameterLayerId(this._getEffectiveBundle(), key);
282
+ }
177
283
  /**
178
284
  * Flush pending events immediately.
179
285
  */
180
286
  async flushEvents() {
181
287
  await this._eventBatcher.flush();
182
288
  }
183
- /**
184
- * Resolves parameters with defaults as fallback.
185
- *
186
- * Resolution priority (highest wins):
187
- * 1. Policy overrides (from remote bundle)
188
- * 2. Parameter defaults (from remote bundle)
189
- * 3. Local config (if remote unavailable)
190
- * 4. Caller defaults
191
- */
192
- getParams(options) {
289
+ getParams(contextOrOptions, maybeDefaults) {
290
+ const { context, defaults } = normalizeEvalArgs(contextOrOptions, maybeDefaults);
193
291
  // Server mode: return from cached server response
194
292
  if (this._options.evaluationMode === "server" && this._state.serverResponse) {
195
- const result = { ...options.defaults };
293
+ // Thread THIS call's context into a per-call resolve so the cached
294
+ // snapshot converges to the context actually being evaluated (server
295
+ // mode can't block a sync getParams() on the network; degrade to the
296
+ // last-good snapshot for the current call).
297
+ this._maybeResolveForContext(context);
298
+ const result = { ...defaults };
196
299
  for (const [key, value] of Object.entries(this._state.serverResponse.assignments)) {
197
300
  if (key in result) {
198
301
  result[key] = value;
@@ -201,60 +304,100 @@ export class TrafficalClient {
201
304
  return result;
202
305
  }
203
306
  const bundle = this._getEffectiveBundle();
204
- return resolveParameters(bundle, options.context, options.defaults);
307
+ return resolveParameters(bundle, context, defaults);
205
308
  }
206
- /**
207
- * Makes a decision with full metadata for tracking.
208
- *
209
- * When trackDecisions is enabled (default), automatically sends a DecisionEvent
210
- * to the backend for intent-to-treat analysis.
211
- */
212
- decide(options) {
309
+ decide(contextOrOptions, maybeDefaults) {
213
310
  const start = Date.now();
311
+ const { context, defaults } = normalizeEvalArgs(contextOrOptions, maybeDefaults);
214
312
  // Server mode: return from cached server response
215
313
  if (this._options.evaluationMode === "server" && this._state.serverResponse) {
314
+ // Thread THIS call's context into a per-call resolve so the snapshot
315
+ // converges to the evaluated context (sync decide() can't block on the
316
+ // network; degrade to the last-good snapshot for the current call).
317
+ this._maybeResolveForContext(context);
216
318
  const resp = this._state.serverResponse;
217
- const assignments = { ...options.defaults };
319
+ const assignments = { ...defaults };
218
320
  for (const [key, value] of Object.entries(resp.assignments)) {
219
321
  if (key in assignments) {
220
322
  assignments[key] = value;
221
323
  }
222
324
  }
223
325
  const decision = {
224
- decisionId: resp.decisionId,
326
+ // Mint a FRESH decisionId per call — never reuse the resolve
327
+ // response's decisionId across decisions (each decide() is a distinct
328
+ // decision for attribution).
329
+ decisionId: generateDecisionId(),
225
330
  assignments,
226
- metadata: resp.metadata,
331
+ // Snapshot the resolve stateVersion at decision time so events
332
+ // built later stamp the version this decision was evaluated
333
+ // against (not whatever response is cached at event-build time).
334
+ metadata: { ...resp.metadata, configVersion: resp.stateVersion },
227
335
  };
228
336
  this._cacheDecision(decision);
229
337
  if (this._options.trackDecisions) {
230
- this._trackDecision(decision, Date.now() - start, Object.keys(options.defaults));
338
+ this._trackDecision(decision, Date.now() - start, Object.keys(defaults));
231
339
  }
232
340
  this._emitAssignmentLogEntries(decision, "decision");
233
341
  return decision;
234
342
  }
235
343
  const bundle = this._getEffectiveBundle();
236
- const decision = coreDecide(bundle, options.context, options.defaults);
344
+ const decision = coreDecide(bundle, context, defaults);
237
345
  const latencyMs = Date.now() - start;
238
346
  this._cacheDecision(decision);
239
347
  if (this._options.trackDecisions) {
240
- this._trackDecision(decision, latencyMs, Object.keys(options.defaults));
348
+ this._trackDecision(decision, latencyMs, Object.keys(defaults));
241
349
  }
242
350
  this._emitAssignmentLogEntries(decision, "decision");
243
351
  return decision;
244
352
  }
245
353
  /**
246
- * Tracks an exposure event.
354
+ * Tracks an exposure event — the "user was actually shown this treatment"
355
+ * signal (treatment-on-the-treated).
247
356
  *
248
- * If the decision includes filtered context (from policies with contextLogging),
249
- * it will be included in the exposure event for contextual bandit training.
357
+ * Only layers the caller was actually exposed to are emitted: layers without
358
+ * a policy/allocation and `attributionOnly` layers (resolved for attribution
359
+ * but whose parameters weren't requested) are skipped, and each
360
+ * (unit, policy, allocation) is deduplicated per session so the same exposure
361
+ * isn't emitted twice. Mirrors the browser SDK. If the decision includes
362
+ * filtered context (from policies with contextLogging), it is included in the
363
+ * exposure event for contextual bandit training.
250
364
  */
251
365
  trackExposure(decision) {
252
366
  const unitKey = decision.metadata.unitKeyValue;
253
367
  if (!unitKey) {
254
368
  return;
255
369
  }
256
- // Emit to assignment logger (separate from cloud events)
370
+ // Emit to assignment logger (separate from cloud events; has its own dedup)
257
371
  this._emitAssignmentLogEntries(decision, "exposure");
372
+ // Exposure layers = layers actually shown. Skip attribution-only layers and
373
+ // layers without a policy/allocation, and dedup per (unit, policy,
374
+ // allocation) within the session.
375
+ const now = Date.now();
376
+ const exposedLayers = [];
377
+ for (const layer of decision.metadata.layers) {
378
+ if (!layer.policyId || !layer.allocationName)
379
+ continue;
380
+ if (layer.attributionOnly)
381
+ continue;
382
+ if (this._exposureDedup) {
383
+ const dedupKey = `${unitKey}:${layer.policyId}:${layer.allocationName}`;
384
+ const expiry = this._exposureDedup.get(dedupKey);
385
+ if (expiry !== undefined && now < expiry)
386
+ continue;
387
+ // Evict oldest entry when the LRU is full.
388
+ if (this._exposureDedup.size >= EXPOSURE_DEDUP_LRU_MAX) {
389
+ const firstKey = this._exposureDedup.keys().next().value;
390
+ if (firstKey)
391
+ this._exposureDedup.delete(firstKey);
392
+ }
393
+ this._exposureDedup.set(dedupKey, now + this._exposureSessionTtlMs);
394
+ }
395
+ exposedLayers.push(layer);
396
+ }
397
+ // Nothing new to expose (all attribution-only or already seen this session).
398
+ if (exposedLayers.length === 0) {
399
+ return;
400
+ }
258
401
  const event = {
259
402
  type: "exposure",
260
403
  id: generateExposureId(),
@@ -265,8 +408,12 @@ export class TrafficalClient {
265
408
  unitKey,
266
409
  timestamp: new Date().toISOString(),
267
410
  assignments: decision.assignments,
268
- layers: decision.metadata.layers,
411
+ layers: exposedLayers,
269
412
  context: decision.metadata.filteredContext,
413
+ // Config bundle version the SDK evaluated against — from the
414
+ // decision-time snapshot. The current version is only a fallback for
415
+ // decisions that predate the snapshot field.
416
+ configVersion: decision.metadata.configVersion ?? this.getConfigVersion() ?? undefined,
270
417
  sdkName: SDK_NAME,
271
418
  sdkVersion: SDK_VERSION,
272
419
  };
@@ -286,7 +433,12 @@ export class TrafficalClient {
286
433
  * client.track('checkout_complete', { value: 1 }, { decisionId: 'dec_xyz' });
287
434
  */
288
435
  track(event, properties, options) {
289
- const value = typeof properties?.value === 'number' ? properties.value : undefined;
436
+ // Single numeric value: explicit options.value wins, else properties.value.
437
+ const value = typeof options?.value === "number"
438
+ ? options.value
439
+ : typeof properties?.value === "number"
440
+ ? properties.value
441
+ : undefined;
290
442
  // Auto-populate attribution from cached decision if available
291
443
  const attribution = this._getAttributionFromCache(options?.decisionId);
292
444
  const trackEvent = {
@@ -299,9 +451,11 @@ export class TrafficalClient {
299
451
  timestamp: new Date().toISOString(),
300
452
  event,
301
453
  value,
454
+ values: options?.values,
302
455
  properties,
303
456
  decisionId: options?.decisionId,
304
457
  attribution,
458
+ eventTimestamp: options?.eventTimestamp,
305
459
  sdkName: SDK_NAME,
306
460
  sdkVersion: SDK_VERSION,
307
461
  };
@@ -313,8 +467,13 @@ export class TrafficalClient {
313
467
  * If decisionId is provided and the decision is cached, attribution is auto-populated.
314
468
  */
315
469
  trackReward(options) {
316
- // Map old API to new track() API cast through the untyped signature
317
- this.track(options.event, options.properties, { decisionId: undefined });
470
+ // Forward the value and decisionId (previously dropped) plus any secondary
471
+ // values, so rewards still carry their optimization signal + attribution.
472
+ this.track(options.event, options.properties, {
473
+ decisionId: options.decisionId,
474
+ value: options.value,
475
+ values: options.values,
476
+ });
318
477
  }
319
478
  // ===========================================================================
320
479
  // Private Methods
@@ -325,6 +484,9 @@ export class TrafficalClient {
325
484
  const unitKey = decision.metadata.unitKeyValue;
326
485
  if (!unitKey)
327
486
  return;
487
+ // Config bundle version the SDK evaluated against — from the
488
+ // decision-time snapshot, falling back to the current version.
489
+ const configVersion = decision.metadata.configVersion ?? this.getConfigVersion() ?? undefined;
328
490
  const now = Date.now();
329
491
  for (const layer of decision.metadata.layers) {
330
492
  if (!layer.policyId || !layer.allocationName)
@@ -359,6 +521,10 @@ export class TrafficalClient {
359
521
  decisionId: decision.decisionId,
360
522
  anonymousId: undefined,
361
523
  id: generateAssignmentId(),
524
+ bucket: layer.bucket >= 0 ? layer.bucket : undefined,
525
+ probability: layer.probability,
526
+ modelVersion: layer.modelVersion,
527
+ configVersion,
362
528
  });
363
529
  }
364
530
  }
@@ -373,7 +539,9 @@ export class TrafficalClient {
373
539
  * Uses ETag for efficient caching.
374
540
  */
375
541
  async _fetchConfig() {
376
- const url = `${this._options.baseUrl}/v1/config/${this._options.projectId}?env=${this._options.env}`;
542
+ // URL-encode path/query components so an env or projectId containing
543
+ // reserved characters (spaces, &, ?, /) can't corrupt the request URL.
544
+ const url = `${this._options.baseUrl}/v1/config/${encodeURIComponent(this._options.projectId)}?env=${encodeURIComponent(this._options.env)}`;
377
545
  const headers = {
378
546
  "Content-Type": "application/json",
379
547
  Authorization: `Bearer ${this._options.apiKey}`,
@@ -402,6 +570,13 @@ export class TrafficalClient {
402
570
  }
403
571
  const bundle = (await response.json());
404
572
  const etag = response.headers.get("ETag");
573
+ // A 200 can still carry a malformed body. Discard it and keep the
574
+ // previous last-good bundle rather than corrupting bucket assignments or
575
+ // falling through to defaults when we already have a valid config.
576
+ if (!isValidConfigBundle(bundle)) {
577
+ this._logMalformedBundleWarning();
578
+ return;
579
+ }
405
580
  this._state.bundle = bundle;
406
581
  this._state.etag = etag;
407
582
  this._state.lastFetchTime = Date.now();
@@ -422,22 +597,52 @@ export class TrafficalClient {
422
597
  : this._options.refreshIntervalMs;
423
598
  if (interval <= 0)
424
599
  return;
425
- this._state.refreshTimer = setInterval(() => {
426
- if (this._options.evaluationMode === "server") {
427
- this._fetchServerResolve({}).catch(() => { });
428
- }
429
- else {
430
- this._fetchConfig().catch(() => { });
600
+ // Reschedule via setTimeout with fresh +/-10% jitter each tick (instead of a
601
+ // fixed setInterval) so fleets of clients don't converge on the same refresh
602
+ // instant and stampede the edge.
603
+ const scheduleNext = () => {
604
+ this._state.refreshTimer = setTimeout(() => {
605
+ // Schedule the next tick before firing so cadence stays independent of
606
+ // fetch latency (matching the previous fire-and-forget setInterval).
607
+ scheduleNext();
608
+ if (this._options.evaluationMode === "server") {
609
+ this._fetchServerResolve({}).catch(() => { });
610
+ }
611
+ else {
612
+ this._fetchConfig().catch(() => { });
613
+ }
614
+ }, jitteredInterval(interval));
615
+ // Unref so timer doesn't keep process alive
616
+ if (this._state.refreshTimer && typeof this._state.refreshTimer.unref === "function") {
617
+ this._state.refreshTimer.unref();
431
618
  }
432
- }, interval);
433
- // Unref so timer doesn't keep process alive
434
- if (typeof this._state.refreshTimer.unref === "function") {
435
- this._state.refreshTimer.unref();
436
- }
619
+ };
620
+ scheduleNext();
437
621
  }
438
622
  /**
439
623
  * Logs an offline warning (rate-limited).
440
624
  */
625
+ /**
626
+ * Server mode: threads the per-call context into a background /v1/resolve so
627
+ * the cached snapshot converges to the contexts actually being evaluated.
628
+ * Throttled by serialized context so repeated identical contexts (the common
629
+ * case) don't hammer the edge. Because decide()/getParams() are synchronous
630
+ * they cannot await this; the current call degrades to the last-good snapshot
631
+ * and subsequent calls pick up the refreshed resolution.
632
+ */
633
+ _maybeResolveForContext(context) {
634
+ let key;
635
+ try {
636
+ key = JSON.stringify(context);
637
+ }
638
+ catch {
639
+ key = "";
640
+ }
641
+ if (key === this._lastResolveContextKey)
642
+ return;
643
+ this._lastResolveContextKey = key;
644
+ void this._fetchServerResolve(context);
645
+ }
441
646
  async _fetchServerResolve(context) {
442
647
  try {
443
648
  const response = await this._decisionClient.resolve({ context });
@@ -457,6 +662,13 @@ export class TrafficalClient {
457
662
  this._state.lastOfflineWarning = now;
458
663
  }
459
664
  }
665
+ _logMalformedBundleWarning() {
666
+ const now = Date.now();
667
+ if (now - this._state.lastMalformedWarning > MALFORMED_BUNDLE_WARNING_INTERVAL_MS) {
668
+ console.warn(`[Traffical] Discarded malformed config bundle (invalid hashing/shape). Using ${this._state.bundle ? "cached" : "local"} config.`);
669
+ this._state.lastMalformedWarning = now;
670
+ }
671
+ }
460
672
  /**
461
673
  * Routes a built event to the BYO event logger (if configured) and to the
462
674
  * Traffical edge batcher (unless cloud events are disabled).
@@ -506,6 +718,9 @@ export class TrafficalClient {
506
718
  latencyMs,
507
719
  // Include filtered context if available
508
720
  context: decision.metadata.filteredContext,
721
+ // Config bundle version the SDK evaluated against — from the
722
+ // decision-time snapshot, falling back to the current version.
723
+ configVersion: decision.metadata.configVersion ?? this.getConfigVersion() ?? undefined,
509
724
  sdkName: SDK_NAME,
510
725
  sdkVersion: SDK_VERSION,
511
726
  };
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=contract-0.7.0.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-0.7.0.test.d.ts","sourceRoot":"","sources":["../src/contract-0.7.0.test.ts"],"names":[],"mappings":""}