@ops-ai/react-router-toggly 1.2.1 → 1.5.2

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/server.cjs CHANGED
@@ -11,6 +11,7 @@ var fs = require('fs');
11
11
  var path = require('path');
12
12
  var url = require('url');
13
13
  var reactRouter = require('react-router');
14
+ var togglySegments = require('@ops-ai/toggly-segments');
14
15
 
15
16
  var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
16
17
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
@@ -212,7 +213,15 @@ var MAX_UNIQUE_USER_HASHES_PER_FEATURE = 1e4;
212
213
  var MAX_APPLICATION_UNIQUE_USER_HASHES = 1e4;
213
214
  var MAX_FEATURES_PER_BATCH = 500;
214
215
  function emptyVariant() {
215
- return { checkCount: 0, requestCount: 0, usedCount: 0, viewedCount: 0 };
216
+ return {
217
+ checkCount: 0,
218
+ requestCount: 0,
219
+ usedCount: 0,
220
+ viewedCount: 0,
221
+ errorCount: 0,
222
+ durationSumMs: 0,
223
+ errorDurationSumMs: 0
224
+ };
216
225
  }
217
226
  function emptyFeature() {
218
227
  return {
@@ -324,6 +333,32 @@ var UsageBatcher = class {
324
333
  this.addHashCapped(agg.uniqueViewedUserHashes, hash, this.maxUniqueHashesPerFeature);
325
334
  }
326
335
  }
336
+ recordUsageError(feature, _identity, variant = "enabled", count = 1) {
337
+ if (count <= 0) return;
338
+ const agg = this.get(feature);
339
+ if (!agg) return;
340
+ this.getVariant(agg, variant).errorCount += count;
341
+ }
342
+ recordUsageDuration(feature, durationMs, _identity, variant = "enabled", failed = false) {
343
+ if (!Number.isFinite(durationMs) || durationMs <= 0) return;
344
+ const ms = Math.floor(durationMs);
345
+ const agg = this.get(feature);
346
+ if (!agg) return;
347
+ const stats = this.getVariant(agg, variant);
348
+ if (failed) stats.errorDurationSumMs += ms;
349
+ else stats.durationSumMs += ms;
350
+ }
351
+ recordUsageScopeOutcome(feature, outcome, identity, variant = "enabled") {
352
+ if (outcome.cancelled) return;
353
+ if (outcome.failed) {
354
+ this.recordUsageError(feature, identity, variant);
355
+ if (outcome.durationMs != null) {
356
+ this.recordUsageDuration(feature, outcome.durationMs, identity, variant, true);
357
+ }
358
+ } else if (outcome.durationMs != null) {
359
+ this.recordUsageDuration(feature, outcome.durationMs, identity, variant, false);
360
+ }
361
+ }
327
362
  isEmpty() {
328
363
  return this.perFeature.size === 0 && this.appUnique.size === 0 && this.definitionCacheHits === 0 && this.definitionCacheMisses === 0;
329
364
  }
@@ -352,7 +387,7 @@ var UsageBatcher = class {
352
387
  appendFeatureStat(payload, snapshots, feature, agg) {
353
388
  const variantStats = {};
354
389
  for (const [name, stats] of agg.variantStats) {
355
- if (stats.checkCount > 0 || stats.requestCount > 0 || stats.usedCount > 0 || stats.viewedCount > 0) {
390
+ if (stats.checkCount > 0 || stats.requestCount > 0 || stats.usedCount > 0 || stats.viewedCount > 0 || stats.errorCount > 0 || stats.durationSumMs > 0 || stats.errorDurationSumMs > 0) {
356
391
  variantStats[name] = { ...stats };
357
392
  }
358
393
  }
@@ -417,6 +452,9 @@ var UsageBatcher = class {
417
452
  target.requestCount += vs.requestCount ?? 0;
418
453
  target.usedCount += vs.usedCount ?? 0;
419
454
  target.viewedCount += vs.viewedCount ?? 0;
455
+ target.errorCount += vs.errorCount ?? 0;
456
+ target.durationSumMs += vs.durationSumMs ?? 0;
457
+ target.errorDurationSumMs += vs.errorDurationSumMs ?? 0;
420
458
  }
421
459
  for (const hash of stat.uniqueUserHashes ?? []) {
422
460
  this.addHashCapped(agg.uniqueUserHashes, hash, this.maxUniqueHashesPerFeature);
@@ -587,7 +625,7 @@ var MetricsBatcher = class {
587
625
 
588
626
  // src/core/sdk-identity.ts
589
627
  var SDK_ID = "react-router";
590
- var SDK_VERSION = "1.2.1";
628
+ var SDK_VERSION = "1.5.0";
591
629
  function sdkUserAgent() {
592
630
  return `toggly-${SDK_ID}/${SDK_VERSION}`;
593
631
  }
@@ -1107,7 +1145,7 @@ async function extractEvalContext(request, providers = {}) {
1107
1145
 
1108
1146
  // src/server/sdk-identity.ts
1109
1147
  var SDK_ID2 = "react-router";
1110
- var SDK_VERSION2 = "1.2.1";
1148
+ var SDK_VERSION2 = "1.5.0";
1111
1149
  var SDK_HEADER_ID = "X-Toggly-Sdk";
1112
1150
  var SDK_HEADER_VERSION = "X-Toggly-Sdk-Version";
1113
1151
  function sdkUserAgent2() {
@@ -2449,6 +2487,14 @@ Object.defineProperty(exports, "fromHttpRequest", {
2449
2487
  enumerable: true,
2450
2488
  get: function () { return togglyEval.fromHttpRequest; }
2451
2489
  });
2490
+ Object.defineProperty(exports, "SegmentMembershipError", {
2491
+ enumerable: true,
2492
+ get: function () { return togglySegments.SegmentMembershipError; }
2493
+ });
2494
+ Object.defineProperty(exports, "createSegmentMembershipClient", {
2495
+ enumerable: true,
2496
+ get: function () { return togglySegments.createSegmentMembershipClient; }
2497
+ });
2452
2498
  exports.HEADERS = HEADERS;
2453
2499
  exports.STORAGE_KEYS = STORAGE_KEYS;
2454
2500
  exports.TOGGLY_LOADER_KEY = TOGGLY_LOADER_KEY;