diff --git a/__mocks__/fast-text-encoding.ts b/__mocks__/fast-text-encoding.ts new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/__mocks__/fast-text-encoding.ts @@ -0,0 +1 @@ +export {}; diff --git a/__mocks__/react-native-get-random-values.ts b/__mocks__/react-native-get-random-values.ts new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/__mocks__/react-native-get-random-values.ts @@ -0,0 +1 @@ +export {}; diff --git a/lib/index.react_native.ts b/lib/index.react_native.ts index 9457052f6..ee5a1975c 100644 --- a/lib/index.react_native.ts +++ b/lib/index.react_native.ts @@ -29,6 +29,9 @@ import { createHttpPollingDatafileManager } from './plugins/datafile_manager/rea import { BrowserOdpManager } from './plugins/odp_manager/index.browser'; import * as commonExports from './common_exports'; +import 'fast-text-encoding'; +import 'react-native-get-random-values'; + const logger = getLogger(); setLogHandler(loggerPlugin.createLogger()); setLogLevel(LogLevel.INFO); diff --git a/package-lock.json b/package-lock.json index 23b1e8d71..223da7e68 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ }, "devDependencies": { "@react-native-async-storage/async-storage": "^1.2.0", - "@react-native-community/netinfo": "^5.9.10", + "@react-native-community/netinfo": "^11.3.2", "@rollup/plugin-commonjs": "^11.0.2", "@rollup/plugin-node-resolve": "^7.1.1", "@types/chai": "^4.2.11", @@ -70,7 +70,9 @@ "peerDependencies": { "@babel/runtime": "^7.0.0", "@react-native-async-storage/async-storage": "^1.2.0", - "@react-native-community/netinfo": "5.9.4" + "@react-native-community/netinfo": "^11.3.2", + "fast-text-encoding": "^1.0.6", + "react-native-get-random-values": "^1.11.0" }, "peerDependenciesMeta": { "@react-native-async-storage/async-storage": { @@ -78,6 +80,12 @@ }, "@react-native-community/netinfo": { "optional": true + }, + "fast-text-encoding": { + "optional": true + }, + "react-native-get-random-values": { + "optional": true } } }, @@ -3921,10 +3929,11 @@ } }, "node_modules/@react-native-community/netinfo": { - "version": "5.9.10", - "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-5.9.10.tgz", - "integrity": "sha512-1NPlBA2Hu/KWc3EnQcDRPRX0x8Dg9tuQlQQVWVQjlg+u+PjCq7ANEtbikOFKp5yQqfF8tqzU5+84/IfDO8zpiA==", + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-11.3.2.tgz", + "integrity": "sha512-YsaS3Dutnzqd1BEoeC+DEcuNJedYRkN6Ef3kftT5Sm8ExnCF94C/nl4laNxuvFli3+Jz8Df3jO25Jn8A9S0h4w==", "dev": true, + "license": "MIT", "peerDependencies": { "react-native": ">=0.59" } @@ -17999,9 +18008,9 @@ } }, "@react-native-community/netinfo": { - "version": "5.9.10", - "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-5.9.10.tgz", - "integrity": "sha512-1NPlBA2Hu/KWc3EnQcDRPRX0x8Dg9tuQlQQVWVQjlg+u+PjCq7ANEtbikOFKp5yQqfF8tqzU5+84/IfDO8zpiA==", + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-11.3.2.tgz", + "integrity": "sha512-YsaS3Dutnzqd1BEoeC+DEcuNJedYRkN6Ef3kftT5Sm8ExnCF94C/nl4laNxuvFli3+Jz8Df3jO25Jn8A9S0h4w==", "dev": true, "requires": {} }, diff --git a/package.json b/package.json index f4c78cedd..d2ec8c05b 100644 --- a/package.json +++ b/package.json @@ -111,8 +111,8 @@ "uuid": "^9.0.1" }, "devDependencies": { + "@react-native-community/netinfo": "^11.3.2", "@react-native-async-storage/async-storage": "^1.2.0", - "@react-native-community/netinfo": "^5.9.10", "@rollup/plugin-commonjs": "^11.0.2", "@rollup/plugin-node-resolve": "^7.1.1", "@types/chai": "^4.2.11", @@ -162,7 +162,9 @@ "peerDependencies": { "@babel/runtime": "^7.0.0", "@react-native-async-storage/async-storage": "^1.2.0", - "@react-native-community/netinfo": "5.9.4" + "@react-native-community/netinfo": "^11.3.2", + "react-native-get-random-values": "^1.11.0", + "fast-text-encoding": "^1.0.6" }, "peerDependenciesMeta": { "@react-native-async-storage/async-storage": { @@ -170,6 +172,12 @@ }, "@react-native-community/netinfo": { "optional": true + }, + "react-native-get-random-values": { + "optional": true + }, + "fast-text-encoding": { + "optional": true } }, "publishConfig": { diff --git a/tests/index.react_native.spec.ts b/tests/index.react_native.spec.ts index 74bac7780..32af4e94d 100644 --- a/tests/index.react_native.spec.ts +++ b/tests/index.react_native.spec.ts @@ -24,6 +24,9 @@ import optimizelyFactory from '../lib/index.react_native'; import configValidator from '../lib/utils/config_validator'; import eventProcessorConfigValidator from '../lib/utils/event_processor_config_validator'; +jest.mock('react-native-get-random-values') +jest.mock('fast-text-encoding') + describe('javascript-sdk/react-native', () => { beforeEach(() => { jest.spyOn(optimizelyFactory.eventDispatcher, 'dispatchEvent'); @@ -45,10 +48,10 @@ describe('javascript-sdk/react-native', () => { }); describe('createInstance', () => { - var fakeErrorHandler = { handleError: function() {} }; - var fakeEventDispatcher = { dispatchEvent: function() {} }; + const fakeErrorHandler = { handleError: function() {} }; + const fakeEventDispatcher = { dispatchEvent: function() {} }; // @ts-ignore - var silentLogger; + let silentLogger; beforeEach(() => { // @ts-ignore @@ -65,7 +68,7 @@ describe('javascript-sdk/react-native', () => { it('should not throw if the provided config is not valid', () => { expect(function() { - var optlyInstance = optimizelyFactory.createInstance({ + const optlyInstance = optimizelyFactory.createInstance({ datafile: {}, // @ts-ignore logger: silentLogger, @@ -77,7 +80,7 @@ describe('javascript-sdk/react-native', () => { }); it('should create an instance of optimizely', () => { - var optlyInstance = optimizelyFactory.createInstance({ + const optlyInstance = optimizelyFactory.createInstance({ datafile: {}, errorHandler: fakeErrorHandler, eventDispatcher: fakeEventDispatcher, @@ -94,7 +97,7 @@ describe('javascript-sdk/react-native', () => { }); it('should set the React Native JS client engine and javascript SDK version', () => { - var optlyInstance = optimizelyFactory.createInstance({ + const optlyInstance = optimizelyFactory.createInstance({ datafile: {}, errorHandler: fakeErrorHandler, eventDispatcher: fakeEventDispatcher, @@ -111,7 +114,7 @@ describe('javascript-sdk/react-native', () => { }); it('should allow passing of "react-sdk" as the clientEngine and convert it to "react-native-sdk"', () => { - var optlyInstance = optimizelyFactory.createInstance({ + const optlyInstance = optimizelyFactory.createInstance({ clientEngine: 'react-sdk', datafile: {}, errorHandler: fakeErrorHandler, @@ -155,7 +158,7 @@ describe('javascript-sdk/react-native', () => { }); it('should call logging.setLogHandler with the supplied logger', () => { - var fakeLogger = { log: function() {} }; + const fakeLogger = { log: function() {} }; optimizelyFactory.createInstance({ datafile: testData.getTestProjectConfig(), // @ts-ignore @@ -168,7 +171,7 @@ describe('javascript-sdk/react-native', () => { describe('event processor configuration', () => { // @ts-ignore - var eventProcessorSpy; + let eventProcessorSpy; beforeEach(() => { eventProcessorSpy = jest.spyOn(eventProcessor, 'createEventProcessor'); });