@@ -9,21 +9,9 @@ export default function getFlagsProxy(
99 targetFlags ?: LDFlagSet ,
1010) : { flags : LDFlagSet ; flagKeyMap : LDFlagKeyMap } {
1111 const filteredFlags = filterFlags ( rawFlags , targetFlags ) ;
12- const flags : LDFlagSet = { } ;
13- const flagKeyMap : LDFlagKeyMap = { } ;
14- if ( ! reactOptions . useCamelCaseFlagKeys ) {
15- Object . assign ( flags , filteredFlags ) ;
16- } else {
17- for ( const rawFlag in filteredFlags ) {
18- // Exclude system keys
19- if ( rawFlag . indexOf ( '$' ) === 0 ) {
20- continue ;
21- }
22- const camelKey = camelCase ( rawFlag ) ;
23- flags [ camelKey ] = filteredFlags [ rawFlag ] ;
24- flagKeyMap [ camelKey ] = rawFlag ;
25- }
26- }
12+ const [ flags , flagKeyMap = { } ] = reactOptions . useCamelCaseFlagKeys
13+ ? getCamelizedKeysAndFlagMap ( filteredFlags )
14+ : [ filteredFlags ] ;
2715
2816 return {
2917 flags : reactOptions . sendEventsOnFlagRead ? toFlagsProxy ( ldClient , flags , flagKeyMap ) : flags ,
@@ -45,6 +33,22 @@ function filterFlags(flags: LDFlagSet, targetFlags?: LDFlagSet): LDFlagSet {
4533 } , { } ) ;
4634}
4735
36+ function getCamelizedKeysAndFlagMap ( rawFlags : LDFlagSet ) {
37+ const flags : LDFlagSet = { } ;
38+ const flagKeyMap : LDFlagKeyMap = { } ;
39+ for ( const rawFlag in rawFlags ) {
40+ // Exclude system keys
41+ if ( rawFlag . indexOf ( '$' ) === 0 ) {
42+ continue ;
43+ }
44+ const camelKey = camelCase ( rawFlag ) ;
45+ flags [ camelKey ] = rawFlags [ rawFlag ] ;
46+ flagKeyMap [ camelKey ] = rawFlag ;
47+ }
48+
49+ return [ flags , flagKeyMap ] ;
50+ }
51+
4852function hasFlag ( flags : LDFlagSet , flagKey : string ) {
4953 return Object . prototype . hasOwnProperty . call ( flags , flagKey ) ;
5054}
0 commit comments