@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/README.md +16 -6
- package/dist/assignment-logger.test.js +10 -1
- package/dist/assignment-logger.test.js.map +1 -1
- package/dist/canonical-options.test.d.ts +2 -0
- package/dist/canonical-options.test.d.ts.map +1 -0
- package/dist/canonical-options.test.js +167 -0
- package/dist/canonical-options.test.js.map +1 -0
- package/dist/client.d.ts +101 -17
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +266 -51
- package/dist/client.js.map +1 -1
- package/dist/contract-0.7.0.test.d.ts +2 -0
- package/dist/contract-0.7.0.test.d.ts.map +1 -0
- package/dist/contract-0.7.0.test.js +171 -0
- package/dist/contract-0.7.0.test.js.map +1 -0
- package/dist/event-batcher.d.ts +51 -2
- package/dist/event-batcher.d.ts.map +1 -1
- package/dist/event-batcher.js +135 -15
- package/dist/event-batcher.js.map +1 -1
- package/dist/event-logger.test.js +63 -3
- package/dist/event-logger.test.js.map +1 -1
- package/dist/malformed-bundle.test.d.ts +12 -0
- package/dist/malformed-bundle.test.d.ts.map +1 -0
- package/dist/malformed-bundle.test.js +110 -0
- package/dist/malformed-bundle.test.js.map +1 -0
- package/dist/track-exposure.test.d.ts +12 -0
- package/dist/track-exposure.test.d.ts.map +1 -0
- package/dist/track-exposure.test.js +112 -0
- package/dist/track-exposure.test.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +5 -5
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
|
-
|
|
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
|
|
100
|
-
|
|
101
|
-
|
|
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
|
-
*
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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 = { ...
|
|
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
|
|
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
|
-
|
|
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(
|
|
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,
|
|
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(
|
|
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
|
-
*
|
|
249
|
-
*
|
|
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:
|
|
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
|
-
|
|
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
|
-
//
|
|
317
|
-
|
|
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
|
-
|
|
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
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
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
|
-
}
|
|
433
|
-
|
|
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
|
};
|
package/dist/client.js.map
CHANGED
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"contract-0.7.0.test.d.ts","sourceRoot":"","sources":["../src/contract-0.7.0.test.ts"],"names":[],"mappings":""}
|