Skip to content

Commit b8b68fc

Browse files
committed
fix: types
1 parent 6b9a329 commit b8b68fc

File tree

4 files changed

+47
-43
lines changed

4 files changed

+47
-43
lines changed

packages/node-sdk/src/client.ts

Lines changed: 29 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import type {
3232
FlagOverridesFn,
3333
IdType,
3434
RawFlag,
35+
RawFlags,
3536
TypedFlagKey,
3637
} from "./types";
3738
import {
@@ -124,7 +125,7 @@ export class ReflagClient {
124125
refetchInterval: number;
125126
staleWarningInterval: number;
126127
headers: Record<string, string>;
127-
fallbackFlags?: Record<TypedFlagKey, RawFlag>;
128+
fallbackFlags?: RawFlags;
128129
flagOverrides: FlagOverridesFn;
129130
offline: boolean;
130131
configFile?: string;
@@ -259,16 +260,13 @@ export class ReflagClient {
259260
: applyLogLevel(decorateLogger(REFLAG_LOG_PREFIX, console), logLevel);
260261

261262
const fallbackFlags = Array.isArray(options.fallbackFlags)
262-
? options.fallbackFlags.reduce(
263-
(acc, key) => {
264-
acc[key as TypedFlagKey] = {
265-
isEnabled: true,
266-
key,
267-
};
268-
return acc;
269-
},
270-
{} as Record<TypedFlagKey, RawFlag>,
271-
)
263+
? options.fallbackFlags.reduce((acc, key) => {
264+
acc[key as TypedFlagKey] = {
265+
isEnabled: true,
266+
key,
267+
};
268+
return acc;
269+
}, {} as RawFlags)
272270
: isObject(options.fallbackFlags)
273271
? Object.entries(options.fallbackFlags).reduce(
274272
(acc, [key, fallback]) => {
@@ -288,7 +286,7 @@ export class ReflagClient {
288286
};
289287
return acc;
290288
},
291-
{} as Record<TypedFlagKey, RawFlag>,
289+
{} as RawFlags,
292290
)
293291
: undefined;
294292

@@ -1057,17 +1055,15 @@ export class ReflagClient {
10571055
}
10581056
}
10591057

1060-
private _getFlags(
1061-
options: ContextWithTracking,
1062-
): Record<TypedFlagKey, RawFlag>;
1058+
private _getFlags(options: ContextWithTracking): RawFlags;
10631059
private _getFlags<TKey extends TypedFlagKey>(
10641060
options: ContextWithTracking,
10651061
key: TKey,
10661062
): RawFlag | undefined;
10671063
private _getFlags<TKey extends TypedFlagKey>(
10681064
options: ContextWithTracking,
10691065
key?: TKey,
1070-
): Record<TypedFlagKey, RawFlag> | RawFlag | undefined {
1066+
): RawFlags | RawFlag | undefined {
10711067
checkContextWithTracking(options);
10721068

10731069
if (!this.initializationFinished) {
@@ -1112,26 +1108,23 @@ export class ReflagClient {
11121108
} satisfies EvaluationResult<any>),
11131109
}));
11141110

1115-
let evaluatedFlags = evaluated.reduce(
1116-
(acc, res) => {
1117-
acc[res.flagKey as TypedFlagKey] = {
1118-
key: res.flagKey,
1119-
isEnabled: res.enabledResult.value ?? false,
1120-
ruleEvaluationResults: res.enabledResult.ruleEvaluationResults,
1121-
missingContextFields: res.enabledResult.missingContextFields,
1122-
targetingVersion: res.targetingVersion,
1123-
config: {
1124-
key: res.configResult?.value?.key,
1125-
payload: res.configResult?.value?.payload,
1126-
targetingVersion: res.configVersion,
1127-
ruleEvaluationResults: res.configResult?.ruleEvaluationResults,
1128-
missingContextFields: res.configResult?.missingContextFields,
1129-
},
1130-
};
1131-
return acc;
1132-
},
1133-
{} as Record<TypedFlagKey, RawFlag>,
1134-
);
1111+
let evaluatedFlags = evaluated.reduce((acc, res) => {
1112+
acc[res.flagKey as TypedFlagKey] = {
1113+
key: res.flagKey,
1114+
isEnabled: res.enabledResult.value ?? false,
1115+
ruleEvaluationResults: res.enabledResult.ruleEvaluationResults,
1116+
missingContextFields: res.enabledResult.missingContextFields,
1117+
targetingVersion: res.targetingVersion,
1118+
config: {
1119+
key: res.configResult?.value?.key,
1120+
payload: res.configResult?.value?.payload,
1121+
targetingVersion: res.configVersion,
1122+
ruleEvaluationResults: res.configResult?.ruleEvaluationResults,
1123+
missingContextFields: res.configResult?.missingContextFields,
1124+
},
1125+
};
1126+
return acc;
1127+
}, {} as RawFlags);
11351128

11361129
const overrides = Object.entries(this._config.flagOverrides(context))
11371130
.filter(([flagKey]) => (key ? key === flagKey : true))

packages/node-sdk/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export type {
2626
LogLevel,
2727
RawFlag,
2828
RawFlagRemoteConfig,
29+
RawFlags,
2930
TrackingMeta,
3031
TrackOptions,
3132
TypedFlagKey,

packages/node-sdk/src/types.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,12 +125,17 @@ export interface RawFlag {
125125
missingContextFields?: string[];
126126
}
127127

128+
/**
129+
* Describes a collection of evaluated raw flags.
130+
*/
131+
export type RawFlags = Record<TypedFlagKey, RawFlag>;
132+
128133
/**
129134
* Describes a collection of evaluated raw flags and the context for bootstrapping.
130135
*/
131136
export type BootstrappedFlags = {
132137
context: Context;
133-
flags: Record<TypedFlagKey, RawFlag>;
138+
flags: RawFlags;
134139
};
135140

136141
export type EmptyFlagRemoteConfig = { key: undefined; payload: undefined };
@@ -403,7 +408,7 @@ export type EvaluatedFlagsAPIResponse = {
403408
/**
404409
* The feature definitions.
405410
*/
406-
features: Record<string, RawFlag>;
411+
features: RawFlags;
407412
};
408413

409414
/**

packages/react-sdk/src/index.tsx

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import {
1414
CompanyContext,
1515
HookArgs,
1616
InitOptions,
17-
RawFlags,
17+
RawFlag,
1818
ReflagClient,
1919
ReflagContext,
2020
RequestFeedbackData,
@@ -25,7 +25,7 @@ import {
2525

2626
import { version } from "../package.json";
2727

28-
export type { CheckEvent, CompanyContext, RawFlags, TrackEvent, UserContext };
28+
export type { CheckEvent, CompanyContext, TrackEvent, UserContext };
2929

3030
export type EmptyFlagRemoteConfig = { key: undefined; payload: undefined };
3131

@@ -111,13 +111,18 @@ export type TypedFlags = keyof Flags extends never
111111
: Flag;
112112
};
113113

114+
export type FlagKey = keyof TypedFlags;
115+
116+
/**
117+
* Describes a collection of evaluated raw flags.
118+
*/
119+
export type RawFlags = Record<FlagKey, RawFlag>;
120+
114121
export type BootstrappedFlags = {
115122
context: ReflagContext;
116123
flags: RawFlags;
117124
};
118125

119-
export type FlagKey = keyof TypedFlags;
120-
121126
const SDK_VERSION = `react-sdk/${version}`;
122127

123128
/**
@@ -234,7 +239,7 @@ export type ReflagProps = ReflagPropsBase &
234239
/**
235240
* The context to use for the ReflagClient containing user, company, and other context.
236241
*/
237-
context: ReflagContext;
242+
context?: ReflagContext;
238243

239244
/**
240245
* Company related context. If you provide `id` Reflag will enrich the evaluation context with

0 commit comments

Comments
 (0)