@ops-ai/react-router-toggly 1.2.1 → 1.5.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/CHANGELOG.md +33 -0
- package/dist/client.cjs +106 -14
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +5 -2
- package/dist/client.d.ts +5 -2
- package/dist/client.js +108 -16
- package/dist/client.js.map +1 -1
- package/dist/server.cjs +50 -4
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.cts +1 -0
- package/dist/server.d.ts +1 -0
- package/dist/server.js +42 -4
- package/dist/server.js.map +1 -1
- package/dist/telemetry/grpc.cjs +1 -1
- package/dist/telemetry/grpc.cjs.map +1 -1
- package/dist/telemetry/grpc.js +1 -1
- package/dist/telemetry/grpc.js.map +1 -1
- package/package.json +4 -3
- package/proto/usage.proto +3 -0
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 {
|
|
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.
|
|
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.
|
|
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;
|