@@ -27,16 +27,16 @@ class ProjectConfig {
27
27
28
28
var whitelistUsers = [ String: [ String: String] ] ( )
29
29
30
- lazy var experimentKeyMap : [ String : Experiment ] ? = {
30
+ lazy var experimentKeyMap : [ String : Experiment ] = {
31
31
var map = [ String: Experiment] ( )
32
- _ = allExperiments. map ( { map [ $0. key] = $0} )
32
+ allExperiments. forEach ( { map [ $0. key] = $0} )
33
33
return map
34
34
} ( )
35
35
36
- lazy var experimentFeatureMap : [ String : [ String ] ] ? = {
36
+ lazy var experimentFeatureMap : [ String : [ String ] ] = {
37
37
var experimentFeatureMap = [ String: [ String] ] ( )
38
- _ = project. featureFlags. map ( { ( ff) in
39
- ff. experimentIds. map ( {
38
+ project. featureFlags. forEach ( { ( ff) in
39
+ ff. experimentIds. forEach ( {
40
40
if var arr = experimentFeatureMap [ $0] {
41
41
arr. append ( ff. id)
42
42
experimentFeatureMap [ $0] = arr
@@ -49,13 +49,15 @@ class ProjectConfig {
49
49
return experimentFeatureMap
50
50
} ( )
51
51
52
- lazy var eventKeyMap : [ String : Event ] ? = {
52
+ lazy var eventKeyMap : [ String : Event ] = {
53
53
var eventKeyMap = [ String: Event] ( )
54
- _ = project. events. map ( { eventKeyMap [ $0. key] = $0 } )
54
+ project. events. forEach ( { eventKeyMap [ $0. key] = $0 } )
55
55
return eventKeyMap
56
56
} ( )
57
57
58
- var _allExperiments : [ Experiment ] ?
58
+ lazy var allExperiments : [ Experiment ] = {
59
+ return project. experiments + project. groups. map ( { $0. experiments} ) . flatMap ( { $0} )
60
+ } ( )
59
61
60
62
init ( datafile: Data ) throws {
61
63
do {
@@ -120,20 +122,6 @@ extension ProjectConfig {
120
122
return [ " 4 " ] . contains ( version)
121
123
}
122
124
123
- private func generateExperimentFeatureMap( ) {
124
- experimentFeatureMap = [ String: [ String] ] ( )
125
- _ = project. featureFlags. map ( { ( ff) in
126
- ff. experimentIds. map ( {
127
- if var arr = self . experimentFeatureMap ? [ $0] {
128
- arr. append ( ff. id)
129
- self . experimentFeatureMap ? [ $0] = arr
130
- }
131
- else {
132
- self . experimentFeatureMap ? [ $0] = [ ff. id]
133
- }
134
- } )
135
- } )
136
- }
137
125
}
138
126
139
127
// MARK: - Project Access
@@ -144,10 +132,7 @@ extension ProjectConfig {
144
132
* Get an Experiment object for a key.
145
133
*/
146
134
func getExperiment( key: String ) -> Experiment ? {
147
- if let experimentMap = experimentKeyMap {
148
- return experimentMap [ key]
149
- }
150
- return allExperiments. filter { $0. key == key } . first
135
+ return experimentKeyMap [ key]
151
136
}
152
137
153
138
/**
@@ -189,7 +174,7 @@ extension ProjectConfig {
189
174
* Gets an event for a corresponding event key
190
175
*/
191
176
func getEvent( key: String ) -> Event ? {
192
- return eventKeyMap ? [ key]
177
+ return eventKeyMap [ key]
193
178
}
194
179
195
180
/**
@@ -225,7 +210,7 @@ extension ProjectConfig {
225
210
* Returns true if experiment belongs to any feature, false otherwise.
226
211
*/
227
212
func isFeatureExperiment( id: String ) -> Bool {
228
- return experimentFeatureMap ? [ id] ? . isEmpty ?? false
213
+ return ! ( experimentFeatureMap [ id] ? . isEmpty ?? true )
229
214
}
230
215
231
216
/**
@@ -281,15 +266,4 @@ extension ProjectConfig {
281
266
return true
282
267
}
283
268
284
- var allExperiments : [ Experiment ] {
285
- if let _allExperiments = _allExperiments {
286
- return _allExperiments
287
- }
288
- else {
289
- _allExperiments = project. experiments + project. groups. map ( { $0. experiments} ) . flatMap ( { $0} )
290
- return _allExperiments ?? [ ]
291
- }
292
-
293
- }
294
-
295
269
}
0 commit comments