13
13
* See the License for the specific language governing permissions and
14
14
* limitations under the License.
15
15
*/
16
- import {
16
+ import {
17
17
getLogger ,
18
18
setLogHandler ,
19
19
setLogLevel ,
20
20
setErrorHandler ,
21
21
getErrorHandler ,
22
22
LogLevel ,
23
+ ErrorHandler ,
24
+ LogHandler ,
23
25
} from '@optimizely/js-sdk-logging' ;
24
- import { LocalStoragePendingEventsDispatcher } from '@optimizely/js-sdk-event-processor' ;
25
26
27
+ import { LocalStoragePendingEventsDispatcher } from '@optimizely/js-sdk-event-processor' ;
26
28
import { assign } from './utils/fns' ;
27
29
import * as configValidator from './utils/config_validator' ;
28
30
import defaultErrorHandler from './plugins/error_handler' ;
@@ -31,32 +33,37 @@ import * as enums from './utils/enums';
31
33
import loggerPlugin from './plugins/logger' ;
32
34
import Optimizely from './optimizely' ;
33
35
import eventProcessorConfigValidator from './utils/event_processor_config_validator' ;
36
+ import * as projectConfig from './core/project_config' ;
34
37
35
- var logger = getLogger ( ) ;
38
+ const logger = getLogger ( ) ;
36
39
setLogHandler ( loggerPlugin . createLogger ( ) ) ;
37
40
setLogLevel ( LogLevel . INFO ) ;
38
41
39
- var MODULE_NAME = 'INDEX_BROWSER' ;
40
- var DEFAULT_EVENT_BATCH_SIZE = 10 ;
41
- var DEFAULT_EVENT_FLUSH_INTERVAL = 1000 ; // Unit is ms, default is 1s
42
-
43
- var hasRetriedEvents = false ;
42
+ const MODULE_NAME = 'INDEX_BROWSER' ;
43
+ const DEFAULT_EVENT_BATCH_SIZE = 10 ;
44
+ const DEFAULT_EVENT_FLUSH_INTERVAL = 1000 ; // Unit is ms, default is 1s
45
+
46
+ let hasRetriedEvents = false ;
47
+
48
+ interface Config {
49
+ datafile ?: projectConfig . ProjectConfig ;
50
+ errorHandler ?: ErrorHandler ;
51
+ eventDispatcher ?: ( ...args : unknown [ ] ) => unknown ;
52
+ logger ?: LogHandler ;
53
+ logLevel ?: LogLevel ;
54
+ userProfileService ?: import ( './shared_types' ) . UserProfileService ;
55
+ eventBatchSize ?: number ;
56
+ eventFlushInterval ?: number ;
57
+ sdkKey ?: string ;
58
+ isValidInstance ?: boolean ;
59
+ }
44
60
45
61
/**
46
62
* Creates an instance of the Optimizely class
47
- * @param {Object } config
48
- * @param {Object|string } config.datafile
49
- * @param {Object } config.errorHandler
50
- * @param {Object } config.eventDispatcher
51
- * @param {Object } config.logger
52
- * @param {Object } config.logLevel
53
- * @param {Object } config.userProfileService
54
- * @param {Object } config.eventBatchSize
55
- * @param {Object } config.eventFlushInterval
56
- * @param {string } config.sdkKey
57
- * @return {Object } the Optimizely object
63
+ * @param {Config } config
64
+ * @return {Optimizely } the Optimizely object
58
65
*/
59
- var createInstance = function ( config ) {
66
+ const createInstance = function ( config : Config ) : Optimizely | null {
60
67
try {
61
68
config = config || { } ;
62
69
@@ -81,7 +88,7 @@ var createInstance = function(config) {
81
88
config . isValidInstance = false ;
82
89
}
83
90
84
- var eventDispatcher ;
91
+ let eventDispatcher ;
85
92
// prettier-ignore
86
93
if ( config . eventDispatcher == null ) { // eslint-disable-line eqeqeq
87
94
// only wrap the event dispatcher with pending events retry if the user didnt override
@@ -97,7 +104,7 @@ var createInstance = function(config) {
97
104
eventDispatcher = config . eventDispatcher ;
98
105
}
99
106
100
- config = assign (
107
+ const optimizelyConfig = assign (
101
108
{
102
109
clientEngine : enums . JAVASCRIPT_CLIENT_ENGINE ,
103
110
eventBatchSize : DEFAULT_EVENT_BATCH_SIZE ,
@@ -110,29 +117,29 @@ var createInstance = function(config) {
110
117
logger : logger ,
111
118
errorHandler : getErrorHandler ( ) ,
112
119
}
113
- ) ;
120
+ ) as projectConfig . ProjectConfig ;
114
121
115
122
if ( ! eventProcessorConfigValidator . validateEventBatchSize ( config . eventBatchSize ) ) {
116
123
logger . warn ( 'Invalid eventBatchSize %s, defaulting to %s' , config . eventBatchSize , DEFAULT_EVENT_BATCH_SIZE ) ;
117
- config . eventBatchSize = DEFAULT_EVENT_BATCH_SIZE ;
124
+ optimizelyConfig . eventBatchSize = DEFAULT_EVENT_BATCH_SIZE ;
118
125
}
119
126
if ( ! eventProcessorConfigValidator . validateEventFlushInterval ( config . eventFlushInterval ) ) {
120
127
logger . warn (
121
128
'Invalid eventFlushInterval %s, defaulting to %s' ,
122
129
config . eventFlushInterval ,
123
130
DEFAULT_EVENT_FLUSH_INTERVAL
124
131
) ;
125
- config . eventFlushInterval = DEFAULT_EVENT_FLUSH_INTERVAL ;
132
+ optimizelyConfig . eventFlushInterval = DEFAULT_EVENT_FLUSH_INTERVAL ;
126
133
}
127
134
128
- var optimizely = new Optimizely ( config ) ;
135
+ const optimizely = new Optimizely ( optimizelyConfig ) ;
129
136
130
137
try {
131
138
if ( typeof window . addEventListener === 'function' ) {
132
- var unloadEvent = 'onpagehide' in window ? 'pagehide' : 'unload' ;
139
+ const unloadEvent = 'onpagehide' in window ? 'pagehide' : 'unload' ;
133
140
window . addEventListener (
134
141
unloadEvent ,
135
- function ( ) {
142
+ function ( ) {
136
143
optimizely . close ( ) ;
137
144
} ,
138
145
false
@@ -149,7 +156,7 @@ var createInstance = function(config) {
149
156
}
150
157
} ;
151
158
152
- var __internalResetRetryState = function ( ) {
159
+ const __internalResetRetryState = function ( ) : void {
153
160
hasRetriedEvents = false ;
154
161
} ;
155
162
@@ -164,8 +171,8 @@ export {
164
171
setLogHandler as setLogger ,
165
172
setLogLevel ,
166
173
createInstance ,
167
- __internalResetRetryState ,
168
- }
174
+ __internalResetRetryState ,
175
+ } ;
169
176
170
177
export default {
171
178
logging : loggerPlugin ,
0 commit comments