This repository has been archived by the owner on Jan 11, 2024. It is now read-only.
/
index.js
74 lines (68 loc) · 3.04 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/****************************************************************************
* Copyright 2016-2017, Optimizely, Inc. and contributors *
* *
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. *
* You may obtain a copy of the License at *
* *
* http://www.apache.org/licenses/LICENSE-2.0 *
* *
* Unless required by applicable law or agreed to in writing, software *
* distributed under the License is distributed on an "AS IS" BASIS, *
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and *
* limitations under the License. *
***************************************************************************/
var configValidator = require('./lib/utils/config_validator');
var defaultErrorHandler = require('./lib/plugins/error_handler');
var defaultEventDispatcher = require('./lib/plugins/event_dispatcher');
var enums = require('./lib/utils/enums');
var fns = require('./lib/utils/fns');
var jsonSchemaValidator = require('./lib/utils/json_schema_validator');
var logger = require('./lib/plugins/logger');
var sprintf = require('sprintf');
var Optimizely = require('./lib/optimizely');
var MODULE_NAME = 'INDEX';
/**
* Entry point into the Optimizely Node testing SDK
*/
module.exports = {
/**
* Creates an instance of the Optimizely class
* @param {Object} config
* @param {Object} config.datafile
* @param {Object} config.errorHandler
* @param {Object} config.eventDispatcher
* @param {Object} config.jsonSchemaValidator
* @param {Object} config.logger
* @param {Object} config.userProfileService
* @return {Object} the Optimizely object
*/
createInstance: function(config) {
var defaultLogger = logger.createNoOpLogger();
if (config) {
try {
configValidator.validate(config);
config.isValidInstance = true;
} catch (ex) {
if (config.logger) {
config.logger.log(enums.LOG_LEVEL.ERROR, sprintf('%s: %s', MODULE_NAME, ex.message));
} else {
var simpleLogger = logger.createLogger({logLevel: 4});
simpleLogger.log(enums.LOG_LEVEL.ERROR, sprintf('%s: %s', MODULE_NAME, ex.message));
}
config.isValidInstance = false;
}
}
config = fns.assign({
clientEngine: enums.NODE_CLIENT_ENGINE,
clientVersion: enums.NODE_CLIENT_VERSION,
errorHandler: defaultErrorHandler,
eventDispatcher: defaultEventDispatcher,
jsonSchemaValidator: jsonSchemaValidator,
logger: defaultLogger,
skipJSONValidation: false
}, config);
return new Optimizely(config);
}
};