15
15
*/
16
16
var fns = require ( '../../utils/fns' ) ;
17
17
var enums = require ( '../../utils/enums' ) ;
18
- var sprintf = require ( '@optimizely/js-sdk-utils' ) . sprintf ;
18
+ var jsSdkUtils = require ( '@optimizely/js-sdk-utils' ) ;
19
19
var configValidator = require ( '../../utils/config_validator' ) ;
20
20
var projectConfigSchema = require ( './project_config_schema' ) ;
21
21
@@ -60,7 +60,7 @@ module.exports = {
60
60
} ) ;
61
61
62
62
projectConfig . rolloutIdMap = fns . keyBy ( projectConfig . rollouts || [ ] , 'id' ) ;
63
- fns . forOwn ( projectConfig . rolloutIdMap , function ( rollout ) {
63
+ jsSdkUtils . objectValues ( projectConfig . rolloutIdMap || { } ) . forEach ( function ( rollout ) {
64
64
( rollout . experiments || [ ] ) . forEach ( function ( experiment ) {
65
65
projectConfig . experiments . push ( fns . cloneDeep ( experiment ) ) ;
66
66
// Creates { <variationKey>: <variation> } map inside of the experiment
@@ -79,8 +79,7 @@ module.exports = {
79
79
80
80
// Creates { <variationId>: { key: <variationKey>, id: <variationId> } } mapping for quick lookup
81
81
fns . assign ( projectConfig . variationIdMap , fns . keyBy ( experiment . variations , 'id' ) ) ;
82
-
83
- fns . forOwn ( experiment . variationKeyMap , function ( variation ) {
82
+ jsSdkUtils . objectValues ( experiment . variationKeyMap || { } ) . forEach ( function ( variation ) {
84
83
if ( variation . variables ) {
85
84
projectConfig . variationVariableUsageMap [ variation . id ] = fns . keyBy ( variation . variables , 'id' ) ;
86
85
}
@@ -92,7 +91,7 @@ module.exports = {
92
91
projectConfig . experimentFeatureMap = { } ;
93
92
94
93
projectConfig . featureKeyMap = fns . keyBy ( projectConfig . featureFlags || [ ] , 'key' ) ;
95
- fns . forOwn ( projectConfig . featureKeyMap , function ( feature ) {
94
+ jsSdkUtils . objectValues ( projectConfig . featureKeyMap || { } ) . forEach ( function ( feature ) {
96
95
feature . variableKeyMap = fns . keyBy ( feature . variables , 'key' ) ;
97
96
( feature . experimentIds || [ ] ) . forEach ( function ( experimentId ) {
98
97
// Add this experiment in experiment-feature map.
@@ -123,7 +122,7 @@ module.exports = {
123
122
getExperimentId : function ( projectConfig , experimentKey ) {
124
123
var experiment = projectConfig . experimentKeyMap [ experimentKey ] ;
125
124
if ( ! experiment ) {
126
- throw new Error ( sprintf ( ERROR_MESSAGES . INVALID_EXPERIMENT_KEY , MODULE_NAME , experimentKey ) ) ;
125
+ throw new Error ( jsSdkUtils . sprintf ( ERROR_MESSAGES . INVALID_EXPERIMENT_KEY , MODULE_NAME , experimentKey ) ) ;
127
126
}
128
127
return experiment . id ;
129
128
} ,
@@ -138,7 +137,7 @@ module.exports = {
138
137
getLayerId : function ( projectConfig , experimentId ) {
139
138
var experiment = projectConfig . experimentIdMap [ experimentId ] ;
140
139
if ( ! experiment ) {
141
- throw new Error ( sprintf ( ERROR_MESSAGES . INVALID_EXPERIMENT_ID , MODULE_NAME , experimentId ) ) ;
140
+ throw new Error ( jsSdkUtils . sprintf ( ERROR_MESSAGES . INVALID_EXPERIMENT_ID , MODULE_NAME , experimentId ) ) ;
142
141
}
143
142
return experiment . layerId ;
144
143
} ,
@@ -156,14 +155,14 @@ module.exports = {
156
155
if ( attribute ) {
157
156
if ( hasReservedPrefix ) {
158
157
logger . log ( LOG_LEVEL . WARN ,
159
- sprintf ( 'Attribute %s unexpectedly has reserved prefix %s; using attribute ID instead of reserved attribute name.' , attributeKey , RESERVED_ATTRIBUTE_PREFIX ) ) ;
158
+ jsSdkUtils . sprintf ( 'Attribute %s unexpectedly has reserved prefix %s; using attribute ID instead of reserved attribute name.' , attributeKey , RESERVED_ATTRIBUTE_PREFIX ) ) ;
160
159
}
161
160
return attribute . id ;
162
161
} else if ( hasReservedPrefix ) {
163
162
return attributeKey ;
164
163
}
165
164
166
- logger . log ( LOG_LEVEL . DEBUG , sprintf ( ERROR_MESSAGES . UNRECOGNIZED_ATTRIBUTE , MODULE_NAME , attributeKey ) ) ;
165
+ logger . log ( LOG_LEVEL . DEBUG , jsSdkUtils . sprintf ( ERROR_MESSAGES . UNRECOGNIZED_ATTRIBUTE , MODULE_NAME , attributeKey ) ) ;
167
166
return null ;
168
167
} ,
169
168
@@ -191,7 +190,7 @@ module.exports = {
191
190
getExperimentStatus : function ( projectConfig , experimentKey ) {
192
191
var experiment = projectConfig . experimentKeyMap [ experimentKey ] ;
193
192
if ( ! experiment ) {
194
- throw new Error ( sprintf ( ERROR_MESSAGES . INVALID_EXPERIMENT_KEY , MODULE_NAME , experimentKey ) ) ;
193
+ throw new Error ( jsSdkUtils . sprintf ( ERROR_MESSAGES . INVALID_EXPERIMENT_KEY , MODULE_NAME , experimentKey ) ) ;
195
194
}
196
195
return experiment . status ;
197
196
} ,
@@ -225,7 +224,7 @@ module.exports = {
225
224
getExperimentAudienceConditions : function ( projectConfig , experimentKey ) {
226
225
var experiment = projectConfig . experimentKeyMap [ experimentKey ] ;
227
226
if ( ! experiment ) {
228
- throw new Error ( sprintf ( ERROR_MESSAGES . INVALID_EXPERIMENT_KEY , MODULE_NAME , experimentKey ) ) ;
227
+ throw new Error ( jsSdkUtils . sprintf ( ERROR_MESSAGES . INVALID_EXPERIMENT_KEY , MODULE_NAME , experimentKey ) ) ;
229
228
}
230
229
231
230
return experiment . audienceConditions || experiment . audienceIds ;
@@ -274,7 +273,7 @@ module.exports = {
274
273
}
275
274
}
276
275
277
- throw new Error ( sprintf ( ERROR_MESSAGES . EXPERIMENT_KEY_NOT_IN_DATAFILE , MODULE_NAME , experimentKey ) ) ;
276
+ throw new Error ( jsSdkUtils . sprintf ( ERROR_MESSAGES . EXPERIMENT_KEY_NOT_IN_DATAFILE , MODULE_NAME , experimentKey ) ) ;
278
277
} ,
279
278
280
279
/**
@@ -287,7 +286,7 @@ module.exports = {
287
286
getTrafficAllocation : function ( projectConfig , experimentKey ) {
288
287
var experiment = projectConfig . experimentKeyMap [ experimentKey ] ;
289
288
if ( ! experiment ) {
290
- throw new Error ( sprintf ( ERROR_MESSAGES . INVALID_EXPERIMENT_KEY , MODULE_NAME , experimentKey ) ) ;
289
+ throw new Error ( jsSdkUtils . sprintf ( ERROR_MESSAGES . INVALID_EXPERIMENT_KEY , MODULE_NAME , experimentKey ) ) ;
291
290
}
292
291
return experiment . trafficAllocation ;
293
292
} ,
@@ -307,7 +306,7 @@ module.exports = {
307
306
}
308
307
}
309
308
310
- logger . log ( LOG_LEVEL . ERROR , sprintf ( ERROR_MESSAGES . INVALID_EXPERIMENT_ID , MODULE_NAME , experimentId ) ) ;
309
+ logger . log ( LOG_LEVEL . ERROR , jsSdkUtils . sprintf ( ERROR_MESSAGES . INVALID_EXPERIMENT_ID , MODULE_NAME , experimentId ) ) ;
311
310
return null ;
312
311
} ,
313
312
@@ -328,7 +327,7 @@ module.exports = {
328
327
}
329
328
}
330
329
331
- logger . log ( LOG_LEVEL . ERROR , sprintf ( ERROR_MESSAGES . FEATURE_NOT_IN_DATAFILE , MODULE_NAME , featureKey ) ) ;
330
+ logger . log ( LOG_LEVEL . ERROR , jsSdkUtils . sprintf ( ERROR_MESSAGES . FEATURE_NOT_IN_DATAFILE , MODULE_NAME , featureKey ) ) ;
332
331
return null ;
333
332
} ,
334
333
@@ -346,13 +345,13 @@ module.exports = {
346
345
getVariableForFeature : function ( projectConfig , featureKey , variableKey , logger ) {
347
346
var feature = projectConfig . featureKeyMap [ featureKey ] ;
348
347
if ( ! feature ) {
349
- logger . log ( LOG_LEVEL . ERROR , sprintf ( ERROR_MESSAGES . FEATURE_NOT_IN_DATAFILE , MODULE_NAME , featureKey ) ) ;
348
+ logger . log ( LOG_LEVEL . ERROR , jsSdkUtils . sprintf ( ERROR_MESSAGES . FEATURE_NOT_IN_DATAFILE , MODULE_NAME , featureKey ) ) ;
350
349
return null ;
351
350
}
352
351
353
352
var variable = feature . variableKeyMap [ variableKey ] ;
354
353
if ( ! variable ) {
355
- logger . log ( LOG_LEVEL . ERROR , sprintf ( ERROR_MESSAGES . VARIABLE_KEY_NOT_IN_DATAFILE , MODULE_NAME , variableKey , featureKey ) ) ;
354
+ logger . log ( LOG_LEVEL . ERROR , jsSdkUtils . sprintf ( ERROR_MESSAGES . VARIABLE_KEY_NOT_IN_DATAFILE , MODULE_NAME , variableKey , featureKey ) ) ;
356
355
return null ;
357
356
}
358
357
@@ -377,7 +376,7 @@ module.exports = {
377
376
}
378
377
379
378
if ( ! projectConfig . variationVariableUsageMap . hasOwnProperty ( variation . id ) ) {
380
- logger . log ( LOG_LEVEL . ERROR , sprintf ( ERROR_MESSAGES . VARIATION_ID_NOT_IN_DATAFILE_NO_EXPERIMENT , MODULE_NAME , variation . id ) ) ;
379
+ logger . log ( LOG_LEVEL . ERROR , jsSdkUtils . sprintf ( ERROR_MESSAGES . VARIATION_ID_NOT_IN_DATAFILE_NO_EXPERIMENT , MODULE_NAME , variation . id ) ) ;
381
380
return null ;
382
381
}
383
382
@@ -409,7 +408,7 @@ module.exports = {
409
408
switch ( variableType ) {
410
409
case FEATURE_VARIABLE_TYPES . BOOLEAN :
411
410
if ( variableValue !== 'true' && variableValue !== 'false' ) {
412
- logger . log ( LOG_LEVEL . ERROR , sprintf ( ERROR_MESSAGES . UNABLE_TO_CAST_VALUE , MODULE_NAME , variableValue , variableType ) ) ;
411
+ logger . log ( LOG_LEVEL . ERROR , jsSdkUtils . sprintf ( ERROR_MESSAGES . UNABLE_TO_CAST_VALUE , MODULE_NAME , variableValue , variableType ) ) ;
413
412
castValue = null ;
414
413
} else {
415
414
castValue = variableValue === 'true' ;
@@ -419,15 +418,15 @@ module.exports = {
419
418
case FEATURE_VARIABLE_TYPES . INTEGER :
420
419
castValue = parseInt ( variableValue , 10 ) ;
421
420
if ( isNaN ( castValue ) ) {
422
- logger . log ( LOG_LEVEL . ERROR , sprintf ( ERROR_MESSAGES . UNABLE_TO_CAST_VALUE , MODULE_NAME , variableValue , variableType ) ) ;
421
+ logger . log ( LOG_LEVEL . ERROR , jsSdkUtils . sprintf ( ERROR_MESSAGES . UNABLE_TO_CAST_VALUE , MODULE_NAME , variableValue , variableType ) ) ;
423
422
castValue = null ;
424
423
}
425
424
break ;
426
425
427
426
case FEATURE_VARIABLE_TYPES . DOUBLE :
428
427
castValue = parseFloat ( variableValue ) ;
429
428
if ( isNaN ( castValue ) ) {
430
- logger . log ( LOG_LEVEL . ERROR , sprintf ( ERROR_MESSAGES . UNABLE_TO_CAST_VALUE , MODULE_NAME , variableValue , variableType ) ) ;
429
+ logger . log ( LOG_LEVEL . ERROR , jsSdkUtils . sprintf ( ERROR_MESSAGES . UNABLE_TO_CAST_VALUE , MODULE_NAME , variableValue , variableType ) ) ;
431
430
castValue = null ;
432
431
}
433
432
break ;
@@ -485,10 +484,10 @@ module.exports = {
485
484
tryCreatingProjectConfig : function ( config ) {
486
485
configValidator . validateDatafile ( config . datafile ) ;
487
486
if ( config . skipJSONValidation === true ) {
488
- config . logger . log ( LOG_LEVEL . INFO , sprintf ( LOG_MESSAGES . SKIPPING_JSON_VALIDATION , MODULE_NAME ) ) ;
487
+ config . logger . log ( LOG_LEVEL . INFO , jsSdkUtils . sprintf ( LOG_MESSAGES . SKIPPING_JSON_VALIDATION , MODULE_NAME ) ) ;
489
488
} else if ( config . jsonSchemaValidator ) {
490
489
config . jsonSchemaValidator . validate ( projectConfigSchema , config . datafile ) ;
491
- config . logger . log ( LOG_LEVEL . INFO , sprintf ( LOG_MESSAGES . VALID_DATAFILE , MODULE_NAME ) ) ;
490
+ config . logger . log ( LOG_LEVEL . INFO , jsSdkUtils . sprintf ( LOG_MESSAGES . VALID_DATAFILE , MODULE_NAME ) ) ;
492
491
}
493
492
return module . exports . createProjectConfig ( config . datafile ) ;
494
493
} ,
0 commit comments