@ops-ai/react-router-toggly 1.0.1 → 1.2.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/CHANGELOG.md +30 -0
- package/README.md +50 -0
- package/dist/client.cjs +431 -82
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +45 -3
- package/dist/client.d.ts +45 -3
- package/dist/client.js +432 -83
- package/dist/client.js.map +1 -1
- package/dist/server.cjs +212 -64
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.cts +57 -5
- package/dist/server.d.ts +57 -5
- package/dist/server.js +212 -64
- 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 +3 -2
package/dist/client.d.ts
CHANGED
|
@@ -27,6 +27,10 @@ type EvaluationMode = 'local' | 'remote';
|
|
|
27
27
|
* Configuration options for Toggly
|
|
28
28
|
*/
|
|
29
29
|
interface TogglyConfig {
|
|
30
|
+
/** Enable compact browser telemetry (default: true with an app key). */
|
|
31
|
+
enableTelemetry?: boolean;
|
|
32
|
+
/** Browser telemetry interval, 30000–60000 ms (default: 45000). */
|
|
33
|
+
telemetryFlushIntervalMs?: number;
|
|
30
34
|
/** Toggly application key */
|
|
31
35
|
appKey?: string;
|
|
32
36
|
/** Environment name (e.g., 'Production', 'Staging') */
|
|
@@ -61,6 +65,16 @@ interface TogglyConfig {
|
|
|
61
65
|
localGates?: LocalGate[];
|
|
62
66
|
/** Optional SDK error callback for reporting fetch/evaluation failures. */
|
|
63
67
|
onError?: (message: string, error?: unknown) => void;
|
|
68
|
+
/**
|
|
69
|
+
* Use `/evaluated-variants-signed` and expose {@link TogglyContextValue.getVariant} /
|
|
70
|
+
* `getVariantValue` (client) or the equivalent {@link TogglyServerClient} methods
|
|
71
|
+
* (server). Only applies in `remote` evaluationMode client-side; the server
|
|
72
|
+
* package forces `remote` when this is set (mirrors the Nuxt/Astro OPS-825
|
|
73
|
+
* override — server otherwise defaults to `definitions-signed` + local eval).
|
|
74
|
+
*/
|
|
75
|
+
enableVariants?: boolean;
|
|
76
|
+
/** Host-minted browser capability; takes precedence over client identity targeting. */
|
|
77
|
+
instanceId?: string;
|
|
64
78
|
/** Initial browser identity; hydrated server identity takes precedence. */
|
|
65
79
|
identity?: string;
|
|
66
80
|
/** User groups for targeting */
|
|
@@ -117,6 +131,8 @@ interface TogglyConfig {
|
|
|
117
131
|
* User identity context for feature targeting
|
|
118
132
|
*/
|
|
119
133
|
interface IdentityContext {
|
|
134
|
+
/** Browser capability. An empty value clears the token; omitted identity updates use client targeting. */
|
|
135
|
+
instanceId?: string;
|
|
120
136
|
/** Unique user identifier */
|
|
121
137
|
identity?: string;
|
|
122
138
|
/** User groups for targeting */
|
|
@@ -136,6 +152,13 @@ interface IdentityContext {
|
|
|
136
152
|
* Feature flags state (boolean or entity gate per flag)
|
|
137
153
|
*/
|
|
138
154
|
type FeatureFlags = EvaluatedDefinitions;
|
|
155
|
+
/**
|
|
156
|
+
* Assigned variant for a feature (aligned with @ops-ai/feature-flags-toggly).
|
|
157
|
+
*/
|
|
158
|
+
interface VariantResult {
|
|
159
|
+
name: string;
|
|
160
|
+
configurationValue?: unknown;
|
|
161
|
+
}
|
|
139
162
|
/**
|
|
140
163
|
* Feature evaluation result
|
|
141
164
|
*/
|
|
@@ -242,10 +265,18 @@ declare const HEADERS: {
|
|
|
242
265
|
/** Meta key for loader data */
|
|
243
266
|
declare const TOGGLY_LOADER_KEY: "__toggly";
|
|
244
267
|
|
|
268
|
+
interface FrontendTelemetry {
|
|
269
|
+
recordUsage(featureKey: string, variant?: string): void;
|
|
270
|
+
recordView(featureKey: string, variant?: string): void;
|
|
271
|
+
incrementCounter(metricKey: string, value?: number): void;
|
|
272
|
+
setGauge(metricKey: string, value: number): void;
|
|
273
|
+
flushTelemetry(): Promise<void>;
|
|
274
|
+
}
|
|
275
|
+
|
|
245
276
|
/**
|
|
246
277
|
* Toggly context value
|
|
247
278
|
*/
|
|
248
|
-
interface TogglyContextValue {
|
|
279
|
+
interface TogglyContextValue extends FrontendTelemetry {
|
|
249
280
|
/** Current feature flags */
|
|
250
281
|
flags: FeatureFlags;
|
|
251
282
|
/** Whether the client is initialized */
|
|
@@ -260,6 +291,17 @@ interface TogglyContextValue {
|
|
|
260
291
|
evaluateGate: (featureKeys: string[], requirement?: 'all' | 'any', negate?: boolean, entity?: TogglyEntityContext | Record<string, unknown> | null, kind?: string) => boolean;
|
|
261
292
|
/** Register a domain-object mapper for entity-context evaluation */
|
|
262
293
|
registerContext: <T>(kind: string, mapper: (entity: T) => TogglyEntityContext) => void;
|
|
294
|
+
/**
|
|
295
|
+
* Current variant assignment for a feature (requires `enableVariants` in the
|
|
296
|
+
* provider config). Soft-null when variants are disabled, unassigned, or the
|
|
297
|
+
* effective flag is off — never throws.
|
|
298
|
+
*/
|
|
299
|
+
getVariant: (featureKey: string) => VariantResult | null;
|
|
300
|
+
/**
|
|
301
|
+
* Configuration payload for the assigned variant, if any.
|
|
302
|
+
* Optional `isT` type guard soft-fails to null on mismatch.
|
|
303
|
+
*/
|
|
304
|
+
getVariantValue: <T = unknown>(featureKey: string, isT?: (v: unknown) => v is T) => T | null;
|
|
263
305
|
/** Set user identity */
|
|
264
306
|
identify: (identity: string, context?: IdentityContext) => Promise<void>;
|
|
265
307
|
/** Clear user identity */
|
|
@@ -298,7 +340,7 @@ declare const TogglyContext: react.Context<TogglyContextValue | undefined>;
|
|
|
298
340
|
/**
|
|
299
341
|
* Toggly Provider component
|
|
300
342
|
*/
|
|
301
|
-
declare function TogglyProvider(
|
|
343
|
+
declare function TogglyProvider(props: Readonly<TogglyProviderProps>): ReactElement;
|
|
302
344
|
/**
|
|
303
345
|
* Hook to access Toggly context
|
|
304
346
|
*/
|
|
@@ -600,4 +642,4 @@ declare function TogglyScript({ serverContext, nonce, }: {
|
|
|
600
642
|
*/
|
|
601
643
|
declare function getWindowTogglyData(): ServerFeatureContext | undefined;
|
|
602
644
|
|
|
603
|
-
export { type EvaluationResult, type EvaluationSeriesData, Feature, FeatureDisabled, type FeatureDisabledProps, FeatureEnabled, type FeatureEnabledProps, type FeatureFlags, FeatureGate, type FeatureGateProps, type FeatureProps, type FeatureRequirement, FeatureSwitch, type FeatureSwitchProps, HEADERS, type HookMetadata, type IdentityContext, type IdentitySeriesData, type LoaderDataWithToggly, RouterTogglyProvider, type RouterTogglyProviderProps, STORAGE_KEYS, type ServerFeatureContext, TOGGLY_LOADER_KEY, type TogglyConfig, TogglyConfigError, TogglyContext, type TogglyContextValue, TogglyError, type TogglyHook, TogglyNetworkError, TogglyProvider, type TogglyProviderProps, TogglyScript, TogglyTimeoutError, extractServerContext, getWindowTogglyData, hasTogglyContext, useABTest, useFeature, useFeatureCallback, useFeatureChange, useFeatureDisabled, useFeatureFlags, useFeatureGate, useFeatureRender, useFeatureValue, useFeatureWithLoading, useFeatures, useIdentity, useRefreshFlags, useToggly, useTogglyContext, useTogglyLoaderData, useTogglyReady, useTogglyRouteLoaderData };
|
|
645
|
+
export { type EvaluationResult, type EvaluationSeriesData, Feature, FeatureDisabled, type FeatureDisabledProps, FeatureEnabled, type FeatureEnabledProps, type FeatureFlags, FeatureGate, type FeatureGateProps, type FeatureProps, type FeatureRequirement, FeatureSwitch, type FeatureSwitchProps, type FrontendTelemetry, HEADERS, type HookMetadata, type IdentityContext, type IdentitySeriesData, type LoaderDataWithToggly, RouterTogglyProvider, type RouterTogglyProviderProps, STORAGE_KEYS, type ServerFeatureContext, TOGGLY_LOADER_KEY, type TogglyConfig, TogglyConfigError, TogglyContext, type TogglyContextValue, TogglyError, type TogglyHook, TogglyNetworkError, TogglyProvider, type TogglyProviderProps, TogglyScript, TogglyTimeoutError, extractServerContext, getWindowTogglyData, hasTogglyContext, useABTest, useFeature, useFeatureCallback, useFeatureChange, useFeatureDisabled, useFeatureFlags, useFeatureGate, useFeatureRender, useFeatureValue, useFeatureWithLoading, useFeatures, useIdentity, useRefreshFlags, useToggly, useTogglyContext, useTogglyLoaderData, useTogglyReady, useTogglyRouteLoaderData };
|