@traffical/node 0.8.0 → 0.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/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 +111 -17
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +280 -50
- 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 +58 -2
- package/dist/event-batcher.d.ts.map +1 -1
- package/dist/event-batcher.js +157 -23
- package/dist/event-batcher.js.map +1 -1
- package/dist/event-batcher.test.js +66 -0
- package/dist/event-batcher.test.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,12 +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
|
|
37
|
+
const DEFAULT_REQUEST_TIMEOUT_MS = 10_000; // 10 seconds
|
|
24
38
|
const OFFLINE_WARNING_INTERVAL_MS = 300_000; // 5 minutes
|
|
39
|
+
const MALFORMED_BUNDLE_WARNING_INTERVAL_MS = 300_000; // 5 minutes
|
|
25
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;
|
|
26
43
|
const ASSIGNMENT_LOGGER_LRU_MAX = 10_000;
|
|
27
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
|
+
}
|
|
28
79
|
// =============================================================================
|
|
29
80
|
// Traffical Client Class
|
|
30
81
|
// =============================================================================
|
|
@@ -46,11 +97,13 @@ export class TrafficalClient {
|
|
|
46
97
|
etag: null,
|
|
47
98
|
lastFetchTime: 0,
|
|
48
99
|
lastOfflineWarning: 0,
|
|
100
|
+
lastMalformedWarning: 0,
|
|
49
101
|
refreshTimer: null,
|
|
50
102
|
isInitialized: false,
|
|
51
103
|
serverResponse: null,
|
|
52
104
|
};
|
|
53
105
|
_eventBatcher;
|
|
106
|
+
_requestTimeoutMs;
|
|
54
107
|
_decisionDedup;
|
|
55
108
|
_decisionClient;
|
|
56
109
|
_assignmentLogger;
|
|
@@ -58,8 +111,19 @@ export class TrafficalClient {
|
|
|
58
111
|
_disableCloudEvents;
|
|
59
112
|
/** In-memory LRU for assignment logger deduplication: key → expiry timestamp */
|
|
60
113
|
_assignmentLoggerDedup;
|
|
114
|
+
/** In-memory LRU for exposure-event deduplication: key → expiry timestamp */
|
|
115
|
+
_exposureDedup;
|
|
116
|
+
/** Session TTL for exposure deduplication (ms) */
|
|
117
|
+
_exposureSessionTtlMs;
|
|
61
118
|
/** Cache of recent decisions for attribution lookup on rewards */
|
|
62
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
|
+
});
|
|
63
127
|
constructor(options) {
|
|
64
128
|
this._options = {
|
|
65
129
|
orgId: options.orgId,
|
|
@@ -73,6 +137,9 @@ export class TrafficalClient {
|
|
|
73
137
|
trackDecisions: options.trackDecisions !== false,
|
|
74
138
|
evaluationMode: options.evaluationMode ?? "bundle",
|
|
75
139
|
};
|
|
140
|
+
// Config-fetch timeout: canonical configTimeoutMs wins, else legacy requestTimeoutMs.
|
|
141
|
+
this._requestTimeoutMs =
|
|
142
|
+
options.configTimeoutMs ?? options.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;
|
|
76
143
|
// Initialize DecisionClient
|
|
77
144
|
this._decisionClient = new DecisionClient({
|
|
78
145
|
baseUrl: this._options.baseUrl,
|
|
@@ -80,6 +147,9 @@ export class TrafficalClient {
|
|
|
80
147
|
projectId: this._options.projectId,
|
|
81
148
|
env: this._options.env,
|
|
82
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,
|
|
83
153
|
});
|
|
84
154
|
// Default dev-mode schema warnings handler
|
|
85
155
|
if (!options.onSchemaWarnings && typeof process !== "undefined" && process.env?.NODE_ENV === "development") {
|
|
@@ -93,8 +163,12 @@ export class TrafficalClient {
|
|
|
93
163
|
this._eventBatcher = new EventBatcher({
|
|
94
164
|
endpoint: `${this._options.baseUrl}/v1/events/batch`,
|
|
95
165
|
apiKey: options.apiKey,
|
|
96
|
-
batchSize
|
|
97
|
-
|
|
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,
|
|
98
172
|
debug: options.debugEvents,
|
|
99
173
|
onError: (error) => {
|
|
100
174
|
console.warn(`[Traffical] Event batching error: ${error.message}`);
|
|
@@ -112,6 +186,8 @@ export class TrafficalClient {
|
|
|
112
186
|
this._assignmentLoggerDedup = (options.deduplicateAssignmentLogger !== false && options.assignmentLogger)
|
|
113
187
|
? new Map()
|
|
114
188
|
: null;
|
|
189
|
+
this._exposureDedup = options.deduplicateExposures !== false ? new Map() : null;
|
|
190
|
+
this._exposureSessionTtlMs = options.exposureSessionTtlMs ?? DEFAULT_EXPOSURE_SESSION_TTL_MS;
|
|
115
191
|
// Initialize with local config if provided
|
|
116
192
|
if (this._options.localConfig) {
|
|
117
193
|
this._state.bundle = this._options.localConfig;
|
|
@@ -130,9 +206,26 @@ export class TrafficalClient {
|
|
|
130
206
|
}
|
|
131
207
|
this._startBackgroundRefresh();
|
|
132
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();
|
|
133
224
|
}
|
|
134
225
|
/**
|
|
135
226
|
* Stops background refresh and cleans up resources.
|
|
227
|
+
*
|
|
228
|
+
* @deprecated Use {@link close} instead — the canonical single teardown verb.
|
|
136
229
|
*/
|
|
137
230
|
async destroy() {
|
|
138
231
|
if (this._state.refreshTimer) {
|
|
@@ -144,7 +237,9 @@ export class TrafficalClient {
|
|
|
144
237
|
}
|
|
145
238
|
/**
|
|
146
239
|
* Synchronous destroy for process exit handlers.
|
|
147
|
-
*
|
|
240
|
+
*
|
|
241
|
+
* @deprecated Use {@link close} instead. This best-effort variant does not
|
|
242
|
+
* await the final flush; prefer `await close()` where you can.
|
|
148
243
|
*/
|
|
149
244
|
destroySync() {
|
|
150
245
|
if (this._state.refreshTimer) {
|
|
@@ -170,25 +265,37 @@ export class TrafficalClient {
|
|
|
170
265
|
getConfigVersion() {
|
|
171
266
|
return this._state.serverResponse?.stateVersion ?? this._state.bundle?.version ?? null;
|
|
172
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
|
+
}
|
|
173
283
|
/**
|
|
174
284
|
* Flush pending events immediately.
|
|
175
285
|
*/
|
|
176
286
|
async flushEvents() {
|
|
177
287
|
await this._eventBatcher.flush();
|
|
178
288
|
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
*
|
|
182
|
-
* Resolution priority (highest wins):
|
|
183
|
-
* 1. Policy overrides (from remote bundle)
|
|
184
|
-
* 2. Parameter defaults (from remote bundle)
|
|
185
|
-
* 3. Local config (if remote unavailable)
|
|
186
|
-
* 4. Caller defaults
|
|
187
|
-
*/
|
|
188
|
-
getParams(options) {
|
|
289
|
+
getParams(contextOrOptions, maybeDefaults) {
|
|
290
|
+
const { context, defaults } = normalizeEvalArgs(contextOrOptions, maybeDefaults);
|
|
189
291
|
// Server mode: return from cached server response
|
|
190
292
|
if (this._options.evaluationMode === "server" && this._state.serverResponse) {
|
|
191
|
-
|
|
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 };
|
|
192
299
|
for (const [key, value] of Object.entries(this._state.serverResponse.assignments)) {
|
|
193
300
|
if (key in result) {
|
|
194
301
|
result[key] = value;
|
|
@@ -197,60 +304,100 @@ export class TrafficalClient {
|
|
|
197
304
|
return result;
|
|
198
305
|
}
|
|
199
306
|
const bundle = this._getEffectiveBundle();
|
|
200
|
-
return resolveParameters(bundle,
|
|
307
|
+
return resolveParameters(bundle, context, defaults);
|
|
201
308
|
}
|
|
202
|
-
|
|
203
|
-
* Makes a decision with full metadata for tracking.
|
|
204
|
-
*
|
|
205
|
-
* When trackDecisions is enabled (default), automatically sends a DecisionEvent
|
|
206
|
-
* to the backend for intent-to-treat analysis.
|
|
207
|
-
*/
|
|
208
|
-
decide(options) {
|
|
309
|
+
decide(contextOrOptions, maybeDefaults) {
|
|
209
310
|
const start = Date.now();
|
|
311
|
+
const { context, defaults } = normalizeEvalArgs(contextOrOptions, maybeDefaults);
|
|
210
312
|
// Server mode: return from cached server response
|
|
211
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);
|
|
212
318
|
const resp = this._state.serverResponse;
|
|
213
|
-
const assignments = { ...
|
|
319
|
+
const assignments = { ...defaults };
|
|
214
320
|
for (const [key, value] of Object.entries(resp.assignments)) {
|
|
215
321
|
if (key in assignments) {
|
|
216
322
|
assignments[key] = value;
|
|
217
323
|
}
|
|
218
324
|
}
|
|
219
325
|
const decision = {
|
|
220
|
-
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(),
|
|
221
330
|
assignments,
|
|
222
|
-
|
|
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 },
|
|
223
335
|
};
|
|
224
336
|
this._cacheDecision(decision);
|
|
225
337
|
if (this._options.trackDecisions) {
|
|
226
|
-
this._trackDecision(decision, Date.now() - start, Object.keys(
|
|
338
|
+
this._trackDecision(decision, Date.now() - start, Object.keys(defaults));
|
|
227
339
|
}
|
|
228
340
|
this._emitAssignmentLogEntries(decision, "decision");
|
|
229
341
|
return decision;
|
|
230
342
|
}
|
|
231
343
|
const bundle = this._getEffectiveBundle();
|
|
232
|
-
const decision = coreDecide(bundle,
|
|
344
|
+
const decision = coreDecide(bundle, context, defaults);
|
|
233
345
|
const latencyMs = Date.now() - start;
|
|
234
346
|
this._cacheDecision(decision);
|
|
235
347
|
if (this._options.trackDecisions) {
|
|
236
|
-
this._trackDecision(decision, latencyMs, Object.keys(
|
|
348
|
+
this._trackDecision(decision, latencyMs, Object.keys(defaults));
|
|
237
349
|
}
|
|
238
350
|
this._emitAssignmentLogEntries(decision, "decision");
|
|
239
351
|
return decision;
|
|
240
352
|
}
|
|
241
353
|
/**
|
|
242
|
-
* Tracks an exposure event
|
|
354
|
+
* Tracks an exposure event — the "user was actually shown this treatment"
|
|
355
|
+
* signal (treatment-on-the-treated).
|
|
243
356
|
*
|
|
244
|
-
*
|
|
245
|
-
*
|
|
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.
|
|
246
364
|
*/
|
|
247
365
|
trackExposure(decision) {
|
|
248
366
|
const unitKey = decision.metadata.unitKeyValue;
|
|
249
367
|
if (!unitKey) {
|
|
250
368
|
return;
|
|
251
369
|
}
|
|
252
|
-
// Emit to assignment logger (separate from cloud events)
|
|
370
|
+
// Emit to assignment logger (separate from cloud events; has its own dedup)
|
|
253
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
|
+
}
|
|
254
401
|
const event = {
|
|
255
402
|
type: "exposure",
|
|
256
403
|
id: generateExposureId(),
|
|
@@ -261,8 +408,12 @@ export class TrafficalClient {
|
|
|
261
408
|
unitKey,
|
|
262
409
|
timestamp: new Date().toISOString(),
|
|
263
410
|
assignments: decision.assignments,
|
|
264
|
-
layers:
|
|
411
|
+
layers: exposedLayers,
|
|
265
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,
|
|
266
417
|
sdkName: SDK_NAME,
|
|
267
418
|
sdkVersion: SDK_VERSION,
|
|
268
419
|
};
|
|
@@ -282,7 +433,12 @@ export class TrafficalClient {
|
|
|
282
433
|
* client.track('checkout_complete', { value: 1 }, { decisionId: 'dec_xyz' });
|
|
283
434
|
*/
|
|
284
435
|
track(event, properties, options) {
|
|
285
|
-
|
|
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;
|
|
286
442
|
// Auto-populate attribution from cached decision if available
|
|
287
443
|
const attribution = this._getAttributionFromCache(options?.decisionId);
|
|
288
444
|
const trackEvent = {
|
|
@@ -295,9 +451,11 @@ export class TrafficalClient {
|
|
|
295
451
|
timestamp: new Date().toISOString(),
|
|
296
452
|
event,
|
|
297
453
|
value,
|
|
454
|
+
values: options?.values,
|
|
298
455
|
properties,
|
|
299
456
|
decisionId: options?.decisionId,
|
|
300
457
|
attribution,
|
|
458
|
+
eventTimestamp: options?.eventTimestamp,
|
|
301
459
|
sdkName: SDK_NAME,
|
|
302
460
|
sdkVersion: SDK_VERSION,
|
|
303
461
|
};
|
|
@@ -309,8 +467,13 @@ export class TrafficalClient {
|
|
|
309
467
|
* If decisionId is provided and the decision is cached, attribution is auto-populated.
|
|
310
468
|
*/
|
|
311
469
|
trackReward(options) {
|
|
312
|
-
//
|
|
313
|
-
|
|
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
|
+
});
|
|
314
477
|
}
|
|
315
478
|
// ===========================================================================
|
|
316
479
|
// Private Methods
|
|
@@ -321,6 +484,9 @@ export class TrafficalClient {
|
|
|
321
484
|
const unitKey = decision.metadata.unitKeyValue;
|
|
322
485
|
if (!unitKey)
|
|
323
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;
|
|
324
490
|
const now = Date.now();
|
|
325
491
|
for (const layer of decision.metadata.layers) {
|
|
326
492
|
if (!layer.policyId || !layer.allocationName)
|
|
@@ -355,6 +521,10 @@ export class TrafficalClient {
|
|
|
355
521
|
decisionId: decision.decisionId,
|
|
356
522
|
anonymousId: undefined,
|
|
357
523
|
id: generateAssignmentId(),
|
|
524
|
+
bucket: layer.bucket >= 0 ? layer.bucket : undefined,
|
|
525
|
+
probability: layer.probability,
|
|
526
|
+
modelVersion: layer.modelVersion,
|
|
527
|
+
configVersion,
|
|
358
528
|
});
|
|
359
529
|
}
|
|
360
530
|
}
|
|
@@ -369,7 +539,9 @@ export class TrafficalClient {
|
|
|
369
539
|
* Uses ETag for efficient caching.
|
|
370
540
|
*/
|
|
371
541
|
async _fetchConfig() {
|
|
372
|
-
|
|
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)}`;
|
|
373
545
|
const headers = {
|
|
374
546
|
"Content-Type": "application/json",
|
|
375
547
|
Authorization: `Bearer ${this._options.apiKey}`,
|
|
@@ -378,8 +550,16 @@ export class TrafficalClient {
|
|
|
378
550
|
if (this._state.etag) {
|
|
379
551
|
headers["If-None-Match"] = this._state.etag;
|
|
380
552
|
}
|
|
553
|
+
// Abort the request if the edge hangs (slow TCP, not a 5xx) so the
|
|
554
|
+
// promise settles and we fall back to cached/local config.
|
|
555
|
+
const controller = new AbortController();
|
|
556
|
+
const timeoutId = setTimeout(() => controller.abort(), this._requestTimeoutMs);
|
|
381
557
|
try {
|
|
382
|
-
const response = await fetch(url, {
|
|
558
|
+
const response = await fetch(url, {
|
|
559
|
+
method: "GET",
|
|
560
|
+
headers,
|
|
561
|
+
signal: controller.signal,
|
|
562
|
+
});
|
|
383
563
|
if (response.status === 304) {
|
|
384
564
|
// Not modified - bundle is still valid
|
|
385
565
|
this._state.lastFetchTime = Date.now();
|
|
@@ -390,6 +570,13 @@ export class TrafficalClient {
|
|
|
390
570
|
}
|
|
391
571
|
const bundle = (await response.json());
|
|
392
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
|
+
}
|
|
393
580
|
this._state.bundle = bundle;
|
|
394
581
|
this._state.etag = etag;
|
|
395
582
|
this._state.lastFetchTime = Date.now();
|
|
@@ -397,6 +584,9 @@ export class TrafficalClient {
|
|
|
397
584
|
catch (error) {
|
|
398
585
|
this._logOfflineWarning(error);
|
|
399
586
|
}
|
|
587
|
+
finally {
|
|
588
|
+
clearTimeout(timeoutId);
|
|
589
|
+
}
|
|
400
590
|
}
|
|
401
591
|
/**
|
|
402
592
|
* Starts background refresh timer.
|
|
@@ -407,22 +597,52 @@ export class TrafficalClient {
|
|
|
407
597
|
: this._options.refreshIntervalMs;
|
|
408
598
|
if (interval <= 0)
|
|
409
599
|
return;
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
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();
|
|
416
618
|
}
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
if (typeof this._state.refreshTimer.unref === "function") {
|
|
420
|
-
this._state.refreshTimer.unref();
|
|
421
|
-
}
|
|
619
|
+
};
|
|
620
|
+
scheduleNext();
|
|
422
621
|
}
|
|
423
622
|
/**
|
|
424
623
|
* Logs an offline warning (rate-limited).
|
|
425
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
|
+
}
|
|
426
646
|
async _fetchServerResolve(context) {
|
|
427
647
|
try {
|
|
428
648
|
const response = await this._decisionClient.resolve({ context });
|
|
@@ -442,6 +662,13 @@ export class TrafficalClient {
|
|
|
442
662
|
this._state.lastOfflineWarning = now;
|
|
443
663
|
}
|
|
444
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
|
+
}
|
|
445
672
|
/**
|
|
446
673
|
* Routes a built event to the BYO event logger (if configured) and to the
|
|
447
674
|
* Traffical edge batcher (unless cloud events are disabled).
|
|
@@ -491,6 +718,9 @@ export class TrafficalClient {
|
|
|
491
718
|
latencyMs,
|
|
492
719
|
// Include filtered context if available
|
|
493
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,
|
|
494
724
|
sdkName: SDK_NAME,
|
|
495
725
|
sdkVersion: SDK_VERSION,
|
|
496
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":""}
|