8000 feat: Convert fns module to TS (#548) · rserrano-eSW/javascript-sdk@4a46cc9 · GitHub
[go: up one dir, main page]

Skip to content

Commit 4a46cc9

Browse files
authored
feat: Convert fns module to TS (optimizely#548)
* Convert fns module to TS * Edit keyBy function return type * Fix eslint * Import Config. NEED TO FIX TYPESCRIPT COMPILER * Import specific functions instead of all and change args type to any in assign * Change signature of assign function * Change signature of assign function to try fixing fsc tests * Check for sourses.length instead of its first element
1 parent dafdb60 commit 4a46cc9

File tree

18 files changed

+83
-91
lines changed

18 files changed

+83
-91
lines changed

packages/optimizely-sdk/lib/core/audience_evaluator/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import { sprintf } from '@optimizely/js-sdk-utils';
1717
import { getLogger } from '@optimizely/js-sdk-logging';
1818

19-
import fns from '../../utils/fns';
19+
import { assign } from '../../utils/fns';
2020
import {
2121
LOG_LEVEL,
2222
LOG_MESSAGES,
@@ -36,7 +36,7 @@ var MODULE_NAME = 'AUDIENCE_EVALUATOR';
3636
* @constructor
3737
*/
3838
function AudienceEvaluator(UNSTABLE_conditionEvaluators) {
39-
this.typeToEvaluatorMap = fns.assign({}, UNSTABLE_conditionEvaluators, {
39+
this.typeToEvaluatorMap = assign({}, UNSTABLE_conditionEvaluators, {
4040
custom_attribute: customAttributeConditionEvaluator,
4141
});
4242
}

packages/optimizely-sdk/lib/core/custom_attribute_condition_evaluator/index.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
***************************************************************************/
1616
import { sprintf } from '@optimizely/js-sdk-utils';
1717

18-
import fns from '../../utils/fns';
18+
import { isNumber, isSafeInteger } from '../../utils/fns';
1919
import {
2020
LOG_LEVEL,
2121
LOG_MESSAGES,
@@ -81,7 +81,7 @@ export var evaluate = function(condition, userAttributes, logger) {
8181
* @returns {Boolean}
8282
*/
8383
function isValueTypeValidForExactConditions(value) {
84-
return typeof value === 'string' || typeof value === 'boolean' || fns.isNumber(value);
84+
return typeof value === 'string' || typeof value === 'boolean' || isNumber(value);
8585
}
8686

8787
/**
@@ -104,7 +104,7 @@ function exactEvaluator(condition, userAttributes, logger) {
104104

105105
if (
106106
!isValueTypeValidForExactConditions(conditionValue) ||
107-
(fns.isNumber(conditionValue) && !fns.isSafeInteger(conditionValue))
107+
(isNumber(conditionValue) && !isSafeInteger(conditionValue))
108108
) {
109109
logger.log(
110110
LOG_LEVEL.WARNING,
@@ -129,7 +129,7 @@ function exactEvaluator(condition, userAttributes, logger) {
129129
return null;
130130
}
131131

132-
if (fns.isNumber(userValue) && !fns.isSafeInteger(userValue)) {
132+
if (isNumber(userValue) && !isSafeInteger(userValue)) {
133133
logger.log(
134134
LOG_LEVEL.WARNING,
135135
sprintf(LOG_MESSAGES.OUT_OF_BOUNDS, MODULE_NAME, JSON.stringify(condition), conditionName)
@@ -170,7 +170,7 @@ function greaterThanEvaluator(condition, userAttributes, logger) {
170170
var userValueType = typeof userValue;
171171
var conditionValue = condition.value;
172172

173-
if (!fns.isSafeInteger(conditionValue)) {
173+
if (!isSafeInteger(conditionValue)) {
174174
logger.log(
175175
LOG_LEVEL.WARNING,
176176
sprintf(LOG_MESSAGES.UNEXPECTED_CONDITION_VALUE, MODULE_NAME, JSON.stringify(condition))
@@ -186,15 +186,15 @@ function greaterThanEvaluator(condition, userAttributes, logger) {
186186
return null;
187187
}
188188

189-
if (!fns.isNumber(userValue)) {
189+
if (!isNumber(userValue)) {
190190
logger.log(
191191
LOG_LEVEL.WARNING,
192192
sprintf(LOG_MESSAGES.UNEXPECTED_TYPE, MODULE_NAME, JSON.stringify(condition), userValueType, conditionName)
193193
);
194194
return null;
195195
}
196196

197-
if (!fns.isSafeInteger(userValue)) {
197+
if (!isSafeInteger(userValue)) {
198198
logger.log(
199199
LOG_LEVEL.WARNING,
200200
sprintf(LOG_MESSAGES.OUT_OF_BOUNDS, MODULE_NAME, JSON.stringify(condition), conditionName)
@@ -221,7 +221,7 @@ function lessThanEvaluator(condition, userAttributes, logger) {
221221
var userValueType = typeof userValue;
222222
var conditionValue = condition.value;
223223

224-
if (!fns.isSafeInteger(conditionValue)) {
224+
if (!isSafeInteger(conditionValue)) {
225225
logger.log(
226226
LOG_LEVEL.WARNING,
227227
sprintf(LOG_MESSAGES.UNEXPECTED_CONDITION_VALUE, MODULE_NAME, JSON.stringify(condition))
@@ -237,15 +237,15 @@ function lessThanEvaluator(condition, userAttributes, logger) {
237237
return null;
238238
}
239239

240-
if (!fns.isNumber(userValue)) {
240+
if (!isNumber(userValue)) {
241241
logger.log(
242242
LOG_LEVEL.WARNING,
243243
sprintf(LOG_MESSAGES.UNEXPECTED_TYPE, MODULE_NAME, JSON.stringify(condition), userValueType, conditionName)
244244
);
245245
return null;
246246
}
247247

248-
if (!fns.isSafeInteger(userValue)) {
248+
if (!isSafeInteger(userValue)) {
249249
logger.log(
250250
LOG_LEVEL.WARNING,
251251
sprintf(LOG_MESSAGES.OUT_OF_BOUNDS, MODULE_NAME, JSON.stringify(condition), conditionName)

packages/optimizely-sdk/lib/core/decision_service/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
***************************************************************************/
1616
import { sprintf } from'@optimizely/js-sdk-utils';
1717

18+
import { assign } from '../../utils/fns';
1819
import bucketer from '../bucketer';
1920
import * as enums from '../../utils/enums';
20-
import fns from '../../utils/fns';
2121
import projectConfig from '../project_config';
2222
import AudienceEvaluator from '../audience_evaluator';
2323
import * as stringValidator from '../../utils/string_value_validator';
@@ -139,7 +139,7 @@ DecisionService.prototype.__resolveExperimentBucketMap = function(userId, attrib
139139
attributes = attributes || {};
140140
var userProfile = this.__getUserProfile(userId) || {};
141141
var attributeExperimentBucketMap = attributes[enums.CONTROL_ATTRIBUTES.STICKY_BUCKETING_KEY];
142-
return fns.assign({}, userProfile.experiment_bucket_map, attributeExperimentBucketMap);
142+
return assign({}, userProfile.experiment_bucket_map, attributeExperimentBucketMap);
143143
};
144144

145145
/**

packages/optimizely-sdk/lib/core/event_builder/event_helpers.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*/
1616
import { getLogger } from '@optimizely/js-sdk-logging';
1717

18-
import fns from '../../utils/fns';
18+
import { currentTimestamp, uuid } from '../../utils/fns';
1919
import projectConfig from '../project_config';
2020
import * as eventTagUtils from '../../utils/event_tag_utils';
2121
import * as attributesValidator from'../../utils/attributes_validator';
@@ -49,8 +49,8 @@ export var buildImpressionEvent = function(config) {
4949

5050
return {
5151
type: 'impression',
52-
timestamp: fns.currentTimestamp(),
53-
uuid: fns.uuid(),
52+
timestamp: currentTimestamp(),
53+
uuid: uuid(),
5454

5555
user: {
5656
id: userId,
@@ -116,8 +116,8 @@ export var buildConversionEvent = function(config) {
116116

117117
return {
118118
type: 'conversion',
119-
timestamp: fns.currentTimestamp(),
120-
uuid: fns.uuid(),
119+
timestamp: currentTimestamp(),
120+
uuid: uuid(),
121121

122122
user: {
123123
id: userId,

packages/optimizely-sdk/lib/core/event_builder/event_helpers.tests.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import sinon from 'sinon';
1717
import { assert } from 'chai';
1818

19-
import fns from '../../utils/fns';
19+
import * as fns from '../../utils/fns';
2020
import projectConfig from '../project_config';
2121
import { buildImpressionEvent, buildConversionEvent } from './event_helpers';
2222

packages/optimizely-sdk/lib/core/event_builder/index.js

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 fns from '../../utils/fns';
16+
import { currentTimestamp, uuid } from '../../utils/fns';
1717
import { CONTROL_ATTRIBUTES, RESERVED_EVENT_KEYWORDS } from '../../utils/enums';
1818
import projectConfig from '../project_config';
1919
import * as eventTagUtils from '../../utils/event_tag_utils';
@@ -106,9 +106,9 @@ function getImpressionEventParams(configObj, experimentId, variationId) {
106106
events: [
107107
{
108108
entity_id: projectConfig.getLayerId(configObj, experimentId),
109-
timestamp: fns.currentTimestamp(),
109+
timestamp: currentTimestamp(),
110110
key: ACTIVATE_EVENT_KEY,
111-
uuid: fns.uuid(),
111+
uuid: uuid(),
112112
},
113113
],
114114
};
@@ -130,8 +130,8 @@ function getVisitorSnapshot(configObj, eventKey, eventTags, logger) {
130130

131131
var eventDict = {
132132
entity_id: projectConfig.getEventId(configObj, eventKey),
133-
timestamp: fns.currentTimestamp(),
134-
uuid: fns.uuid(),
133+
timestamp: currentTimestamp(),
134+
uuid: uuid(),
135135
key: eventKey,
136136
};
137137

packages/optimizely-sdk/lib/core/event_builder/index.tests.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import sinon from 'sinon';
1717
import { assert } from 'chai';
1818

19-
import fns from '../../utils/fns';
19+
import * as fns from '../../utils/fns';
2020
import testData from '../../tests/test_data';
2121
import projectConfig from '../project_config';
2222
import packageJSON from '../../../package.json';

packages/optimizely-sdk/lib/core/project_config/index.js

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*/
1616
import { sprintf, objectValues } from '@optimizely/js-sdk-utils';
1717

18-
import fns from '../../utils/fns';
18+
import { assign, keyBy } from '../../utils/fns';
1919
import {
2020
ERROR_MESSAGES,
2121
LOG_MESSAGES,
@@ -29,27 +29,27 @@ var RESERVED_ATTRIBUTE_PREFIX = '$opt_';
2929
var MODULE_NAME = 'PROJECT_CONFIG';
3030

3131
function createMutationSafeDatafileCopy(datafile) {
32-
var datafileCopy = fns.assign({}, data 10000 file);
32+
var datafileCopy = assign({}, datafile);
3333
datafileCopy.audiences = (datafile.audiences || []).map(function(audience) {
34-
return fns.assign({}, audience);
34+
return assign({}, audience);
3535
});
3636
datafileCopy.experiments = (datafile.experiments || []).map(function(experiment) {
37-
return fns.assign({}, experiment);
37+
return assign({}, experiment);
3838
});
3939
datafileCopy.featureFlags = (datafile.featureFlags || []).map(function(featureFlag) {
40-
return fns.assign({}, featureFlag);
40+
return assign({}, featureFlag);
4141
});
4242
datafileCopy.groups = (datafile.groups || []).map(function(group) {
43-
var groupCopy = fns.assign({}, group);
43+
var groupCopy = assign({}, group);
4444
groupCopy.experiments = (group.experiments || []).map(function(experiment) {
45-
return fns.assign({}, experiment);
45+
return assign({}, experiment);
4646
});
4747
return groupCopy;
4848
});
4949
datafileCopy.rollouts = (datafile.rollouts || []).map(function(rollout) {
50-
var rolloutCopy = fns.assign({}, rollout);
50+
var rolloutCopy = assign({}, rollout);
5151
rolloutCopy.experiments = (rollout.experiments || []).map(function(experiment) {
52-
return fns.assign({}, experiment);
52+
return assign({}, experiment);
5353
});
5454
return rolloutCopy;
5555
});
@@ -71,44 +71,44 @@ export var createProjectConfig = function(datafile) {
7171
(projectConfig.audiences || []).forEach(function(audience) {
7272
audience.conditions = JSON.parse(audience.conditions);
7373
});
74-
projectConfig.audiencesById = fns.keyBy(projectConfig.audiences, 'id');
75-
fns.assign(projectConfig.audiencesById, fns.keyBy(projectConfig.typedAudiences, 'id'));
74+
projectConfig.audiencesById = keyBy(projectConfig.audiences, 'id');
75+
assign(projectConfig.audiencesById, keyBy(projectConfig.typedAudiences, 'id'));
7676

77-
projectConfig.attributeKeyMap = fns.keyBy(projectConfig.attributes, 'key');
78-
projectConfig.eventKeyMap = fns.keyBy(projectConfig.events, 'key');
79-
projectConfig.groupIdMap = fns.keyBy(projectConfig.groups, 'id');
77+
projectConfig.attributeKeyMap = keyBy(projectConfig.attributes, 'key');
78+
projectConfig.eventKeyMap = keyBy(projectConfig.events, 'key');
79+
projectConfig.groupIdMap = keyBy(projectConfig.groups, 'id');
8080

8181
var experiments;
8282
Object.keys(projectConfig.groupIdMap || {}).forEach(function(Id) {
8383
experiments = projectConfig.groupIdMap[Id].experiments;
8484
(experiments || []).forEach(function(experiment) {
85-
projectConfig.experiments.push(fns.assign(experiment, { groupId: Id }));
85+
projectConfig.experiments.push(assign(experiment, { groupId: Id }));
8686
});
8787
});
8888

89-
projectConfig.rolloutIdMap = fns.keyBy(projectConfig.rollouts || [], 'id');
89+
projectConfig.rolloutIdMap = keyBy(projectConfig.rollouts || [], 'id');
9090
objectValues(projectConfig.rolloutIdMap || {}).forEach(function (rollout) {
9191
(rollout.experiments || []).forEach(function(experiment) {
9292
projectConfig.experiments.push(experiment);
9393
// Creates { <variationKey>: <variation> } map inside of the experiment
94-
experiment.variationKeyMap = fns.keyBy(experiment.variations, 'key');
94+
experiment.variationKeyMap = keyBy(experiment.variations, 'key');
9595
});
9696
});
9797

98-
projectConfig.experimentKeyMap = fns.keyBy(projectConfig.experiments, 'key');
99-
projectConfig.experimentIdMap = fns.keyBy(projectConfig.experiments, 'id');
98+
projectConfig.experimentKeyMap = keyBy(projectConfig.experiments, 'key');
99+
projectConfig.experimentIdMap = keyBy(projectConfig.experiments, 'id');
100100

101101
projectConfig.variationIdMap = {};
102102
projectConfig.variationVariableUsageMap = {};
103103
(projectConfig.experiments || []).forEach(function(experiment) {
104104
// Creates { <variationKey>: <variation> } map inside of the experiment
105-
experiment.variationKeyMap = fns.keyBy(experiment.variations, 'key');
105+
experiment.variationKeyMap = keyBy(experiment.variations, 'key');
106106

107107
// Creates { <variationId>: { key: <variationKey>, id: <variationId> } } mapping for quick lookup
108-
fns.assign(projectConfig.variationIdMap, fns.keyBy(experiment.variations, 'id'));
108+
assign(projectConfig.variationIdMap, keyBy(experiment.variations, 'id'));
109109
objectValues(experiment.variationKeyMap || {}).forEach(function(variation) {
110110
if (variation.variables) {
111-
projectConfig.variationVariableUsageMap[variation.id] = fns.keyBy(variation.variables, 'id');
111+
projectConfig.variationVariableUsageMap[variation.id] = keyBy(variation.variables, 'id');
112112
}
113113
});
114114
});
@@ -117,7 +117,7 @@ export var createProjectConfig = function(datafile) {
117117
// for checking that experiment is a feature experiment or not.
118118
projectConfig.experimentFeatureMap = {};
119119

120-
projectConfig.featureKeyMap = fns.keyBy(projectConfig.featureFlags || [], 'key');
120+
projectConfig.featureKeyMap = keyBy(projectConfig.featureFlags || [], 'key');
121121
objectValues(projectConfig.featureKeyMap || {}).forEach(function(feature) {
122122
// Json type is represented in datafile as a subtype of string for the sake of backwards compatibility.
123123
// Converting it to a first-class json type while creating Project Config
@@ -128,7 +128,7 @@ export var createProjectConfig = function(datafile) {
128128
}
129129
});
130130

131-
feature.variableKeyMap = fns.keyBy(feature.variables, 'key');
131+
feature.variableKeyMap = keyBy(feature.variables, 'key');
132132
(feature.experimentIds || []).forEach(function(experimentId) {
133133
// Add this experiment in experiment-feature map.
134134
if (projectConfig.experimentFeatureMap[experimentId]) {

packages/optimizely-sdk/lib/core/project_config/index.tests.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import { forEach, cloneDeep } from 'lodash';
1919
import { getLogger } from '@optimizely/js-sdk-logging';
2020
import { sprintf } from '@optimizely/js-sdk-utils';
2121

22-
import fns from '../../utils/fns';
22+
import * as fns from '../../utils/fns';
2323
import projectConfig from './';
2424
import {
2525
ERROR_MESSAGES,

packages/optimizely-sdk/lib/core/project_config/project_config_manager.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import { sprintf } from '@optimizely/js-sdk-utils';
1717
import { getLogger } from '@optimizely/js-sdk-logging';
1818
import { HttpPollingDatafileManager } from '@optimizely/js-sdk-datafile-manager';
1919

20-
import fns from '../../utils/fns';
20+
import { assign } from '../../utils/fns';
2121
import { ERROR_MESSAGES } from '../../utils/enums';
2222
import projectConfig from '../../core/project_config';
2323
import { getOptimizelyConfig } from '../optimizely_config';
@@ -116,7 +116,7 @@ ProjectConfigManager.prototype.__initialize = function(config) {
116116
sdkKey: config.sdkKey,
117117
};
118118
if (this.__validateDatafileOptions(config.datafileOptions)) {
119-
fns.assign(datafileManagerConfig, config.datafileOptions);
119+
assign(datafileManagerConfig, config.datafileOptions);
120120
}
121121
if (initialDatafile && this.__configObj) {
122122
datafileManagerConfig.datafile = initialDatafile;

packages/optimizely-sdk/lib/index.browser.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import {
2323
} from '@optimizely/js-sdk-logging';
2424
import { LocalStoragePendingEventsDispatcher } from '@optimizely/js-sdk-event-processor';
2525

26-
import fns from './utils/fns';
26+
import { assign } from './utils/fns';
2727
import configValidator from './utils/config_validator';
2828
import defaultErrorHandler from './plugins/error_handler';
2929
import defaultEventDispatcher from './plugins/event_dispatcher/index.browser';
@@ -96,7 +96,7 @@ var createInstance = function(config) {
9696
eventDispatcher = config.eventDispatcher;
9797
}
9898

99-
config = fns.assign(
99+
config = assign(
100100
{
101101
clientEngine: enums.JAVASCRIPT_CLIENT_ENGINE,
102102
eventBatchSize: DEFAULT_EVENT_BATCH_SIZE,

packages/optimizely-sdk/lib/index.node.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import {
2222
LogLevel,
2323
} from '@optimizely/js-sdk-logging';
2424

25-
import fns from './utils/fns';
25+
import { assign } from './utils/fns';
2626
import Optimizely from './optimizely';
2727
import * as enums from './utils/enums';
2828
import loggerPlugin from './plugins/logger';
@@ -81,7 +81,7 @@ var createInstance = function(config) {
8181
config.isValidInstance = false;
8282
}
8383

84-
config = fns.assign(
84+
config = assign(
8585
{
8686
clientEngine: enums.NODE_CLIENT_ENGINE,
8787
eventBatchSize: DEFAULT_EVENT_BATCH_SIZE,

0 commit comments

Comments
 (0)
0