|
1 | 1 | /**
|
2 |
| - * Copyright 2020-2021, Optimizely |
| 2 | + * Copyright 2020-2023, Optimizely |
3 | 3 | *
|
4 | 4 | * Licensed under the Apache License, Version 2.0 (the "License");
|
5 | 5 | * you may not use this file except in compliance with the License.
|
@@ -74,9 +74,15 @@ export class OptimizelyConfig {
|
74 | 74 | return resultMap;
|
75 | 75 | }, {});
|
76 | 76 |
|
77 |
| - const experimentsMapById = OptimizelyConfig.getExperimentsMapById(configObj, featureIdVariablesMap); |
| 77 | + const variableIdMap = OptimizelyConfig.getVariableIdMap(configObj); |
| 78 | + |
| 79 | + const experimentsMapById = OptimizelyConfig.getExperimentsMapById( |
| 80 | + configObj, featureIdVariablesMap, variableIdMap |
| 81 | + ); |
78 | 82 | this.experimentsMap = OptimizelyConfig.getExperimentsKeyMap(experimentsMapById);
|
79 |
| - this.featuresMap = OptimizelyConfig.getFeaturesMap(configObj, featureIdVariablesMap, experimentsMapById); |
| 83 | + this.featuresMap = OptimizelyConfig.getFeaturesMap( |
| 84 | + configObj, featureIdVariablesMap, experimentsMapById, variableIdMap |
| 85 | + ); |
80 | 86 | this.datafile = datafile;
|
81 | 87 | }
|
82 | 88 |
|
@@ -242,7 +248,7 @@ export class OptimizelyConfig {
|
242 | 248 | * Gets Map of all experiment variations and variables including rollouts
|
243 | 249 | * @param {Variation[]} variations
|
244 | 250 | * @param {FeatureVariablesMap} featureIdVariableMap
|
245 |
| - * @param {[id: string]: FeatureVariable} variableIdMap |
| 251 | + * @param {{[id: string]: FeatureVariable}} variableIdMap |
246 | 252 | * @param {string} featureId
|
247 | 253 | * @returns {[key: string]: Variation} Variations mapped by key
|
248 | 254 | */
|
@@ -292,19 +298,20 @@ export class OptimizelyConfig {
|
292 | 298 |
|
293 | 299 | /**
|
294 | 300 | * Gets list of rollout experiments
|
295 |
| - * @param {ProjectConfig} configObj |
296 |
| - * @param {FeatureVariablesMap} featureVariableIdMap |
297 |
| - * @param {string} featureId |
298 |
| - * @param {Experiment[]} experiments |
299 |
| - * @returns {OptimizelyExperiment[]} List of Optimizely rollout experiments |
| 301 | + * @param {ProjectConfig} configObj |
| 302 | + * @param {FeatureVariablesMap} featureVariableIdMap |
| 303 | + * @param {string} featureId |
| 304 | + * @param {Experiment[]} experiments |
| 305 | + * @param {{[id: string]: FeatureVariable}} variableIdMap |
| 306 | + * @returns {OptimizelyExperiment[]} List of Optimizely rollout experiments |
300 | 307 | */
|
301 | 308 | static getDeliveryRules(
|
302 | 309 | configObj: ProjectConfig,
|
303 | 310 | featureVariableIdMap: FeatureVariablesMap,
|
304 | 311 | featureId: string,
|
305 |
| - experiments: Experiment[] |
| 312 | + experiments: Experiment[], |
| 313 | + variableIdMap: {[id: string]: FeatureVariable} |
306 | 314 | ): OptimizelyExperiment[] {
|
307 |
| - const variableIdMap = OptimizelyConfig.getVariableIdMap(configObj); |
308 | 315 | return experiments.map((experiment) => {
|
309 | 316 | return {
|
310 | 317 | id: experiment.id,
|
@@ -339,13 +346,14 @@ export class OptimizelyConfig {
|
339 | 346 | * Get experiments mapped by their id's which are not part of a rollout
|
340 | 347 | * @param {ProjectConfig} configObj
|
341 | 348 | * @param {FeatureVariablesMap} featureIdVariableMap
|
| 349 | + * @param {{[id: string]: FeatureVariable}} variableIdMap |
342 | 350 | * @returns {[id: string]: OptimizelyExperiment} Experiments mapped by id
|
343 | 351 | */
|
344 | 352 | static getExperimentsMapById(
|
345 | 353 | configObj: ProjectConfig,
|
346 |
| - featureIdVariableMap: FeatureVariablesMap |
| 354 | + featureIdVariableMap: FeatureVariablesMap, |
| 355 | + variableIdMap: {[id: string]: FeatureVariable} |
347 | 356 | ): { [id: string]: OptimizelyExperiment } {
|
348 |
| - const variableIdMap = OptimizelyConfig.getVariableIdMap(configObj); |
349 | 357 | const rolloutExperimentIds = this.getRolloutExperimentIds(configObj.rollouts);
|
350 | 358 |
|
351 | 359 | const experiments = configObj.experiments;
|
@@ -391,15 +399,17 @@ export class OptimizelyConfig {
|
391 | 399 |
|
392 | 400 | /**
|
393 | 401 | * Gets Map of all FeatureFlags and associated experiment map inside it
|
394 |
| - * @param {ProjectConfig} configObj |
395 |
| - * @param {FeatureVariablesMap} featureVariableIdMap |
396 |
| - * @param {OptimizelyExperimentsMap} experimentsMapById |
397 |
| - * @returns {OptimizelyFeaturesMap} OptimizelyFeature mapped by key |
| 402 | + * @param {ProjectConfig} configObj |
| 403 | + * @param {FeatureVariablesMap} featureVariableIdMap |
| 404 | + * @param {OptimizelyExperimentsMap} experimentsMapById |
| 405 | + * @param {{[id: string]: FeatureVariable}} variableIdMap |
| 406 | + * @returns {OptimizelyFeaturesMap} OptimizelyFeature mapped by key |
398 | 407 | */
|
399 | 408 | static getFeaturesMap(
|
400 | 409 | configObj: ProjectConfig,
|
401 | 410 | featureVariableIdMap: FeatureVariablesMap,
|
402 |
| - experimentsMapById: OptimizelyExperimentsMap |
| 411 | + experimentsMapById: OptimizelyExperimentsMap, |
| 412 | + variableIdMap: {[id: string]: FeatureVariable} |
403 | 413 | ): OptimizelyFeaturesMap {
|
404 | 414 | const featuresMap: OptimizelyFeaturesMap = {};
|
405 | 415 | configObj.featureFlags.forEach((featureFlag) => {
|
@@ -428,7 +438,8 @@ export class OptimizelyConfig {
|
428 | 438 | configObj,
|
429 | 439 | featureVariableIdMap,
|
430 | 440 | featureFlag.id,
|
431 |
| - rollout.experiments |
| 441 | + rollout.experiments, |
| 442 | + variableIdMap, |
432 | 443 | );
|
433 | 444 | }
|
434 | 445 | featuresMap[featureFlag.key] = {
|
|
0 commit comments