Skip to content

Commit cc70128

Browse files
committed
update
1 parent b168a1e commit cc70128

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

lib/project_config/project_config.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
import { find, objectEntries, objectValues, keyBy } from '../utils/fns';
16+
import { find, objectEntries, objectValues, keyBy, assignBy } from '../utils/fns';
1717

1818
import { FEATURE_VARIABLE_TYPES } from '../utils/enums';
1919
import configValidator from '../utils/config_validator';
@@ -182,8 +182,8 @@ export const createProjectConfig = function(datafileObj?: JSON, datafileStr: str
182182

183183

184184
projectConfig.audiencesById = {};
185-
keyBy(projectConfig.audiences, 'id', projectConfig.audiencesById);
186-
keyBy(projectConfig.typedAudiences, 'id', projectConfig.audiencesById);
185+
assignBy(projectConfig.audiences, 'id', projectConfig.audiencesById);
186+
assignBy(projectConfig.typedAudiences, 'id', projectConfig.audiencesById);
187187

188188
projectConfig.attributes = projectConfig.attributes || [];
189189
projectConfig.attributeKeyMap = {};
@@ -267,7 +267,7 @@ export const createProjectConfig = function(datafileObj?: JSON, datafileStr: str
267267
// Creates { <variationKey>: <variation> } map inside of the experiment
268268
experiment.variationKeyMap = keyBy(experiment.variations, 'key');
269269

270-
keyBy(experiment.variations, 'id', projectConfig.variationIdMap);
270+
assignBy(experiment.variations, 'id', projectConfig.variationIdMap);
271271

272272
objectValues(experiment.variationKeyMap || {}).forEach(variation => {
273273
if (variation.variables) {
@@ -369,7 +369,7 @@ const parseHoldoutsConfig = (projectConfig: ProjectConfig): void => {
369369

370370
holdout.variationKeyMap = keyBy(holdout.variations, 'key');
371371

372-
keyBy(holdout.variations, 'id', projectConfig.variationIdMap);
372+
assignBy(holdout.variations, 'id', projectConfig.variationIdMap);
373373

374374
if (holdout.includedFlags.length === 0) {
375375
projectConfig.globalHoldouts.push(holdout);

lib/utils/fns/index.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,20 @@ export function isSafeInteger(number: unknown): boolean {
2525
return typeof number == 'number' && Math.abs(number) <= MAX_SAFE_INTEGER_LIMIT;
2626
}
2727

28-
export function keyBy<K>(arr: K[], key: string, base: Record<string, K> = {}): Record<string, K> {
29-
if (!arr) return base;
28+
export function keyBy<K>(arr: K[], key: string): Record<string, K> {
29+
if (!arr) return {};
30+
31+
const base: Record<string, K> = {};
32+
assignBy(arr, key, base);
33+
return base;
34+
}
35+
36+
export function assignBy<K>(arr: K[], key: string, base: Record<string, K>): void {
37+
if (!arr) return;
3038

3139
arr.forEach((e) => {
3240
base[(e as any)[key]] = e;
3341
});
34-
35-
return base;
3642
}
3743

3844

0 commit comments

Comments
 (0)