diff --git a/CHANGES.txt b/CHANGES.txt index 7bf86465..35a4822c 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,7 @@ +1.3.1 (April 19, 2022) + - Bugfixing - Added peer dependencies to avoid issues when requiring some third-party dependencies used by modules of the package (Related to issue https://github.com/splitio/javascript-client/issues/662). + - Bugfixing - Updated `ready` method to rejects the promise with an Error object instead of a string value (Related to issue https://github.com/splitio/javascript-client/issues/654). + 1.3.0 (April 6, 2022) - Added user consent feature to allow delaying or disabling the data tracking from SDK until user consent is explicitly granted or declined. Read more in our docs. - Added `scheduler.impressionsQueueSize` property to SDK configuration to limit the amount of impressions tracked in memory. Read more in our docs. diff --git a/package-lock.json b/package-lock.json index a53eec0e..9459fc73 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@splitsoftware/splitio-commons", - "version": "1.3.0", + "version": "1.3.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 074589a1..ba8520d5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@splitsoftware/splitio-commons", - "version": "1.3.0", + "version": "1.3.1", "description": "Split Javascript SDK common components", "main": "cjs/index.js", "module": "esm/index.js", @@ -46,6 +46,18 @@ "dependencies": { "tslib": "^2.3.1" }, + "peerDependencies": { + "js-yaml": "^3.13.1", + "ioredis": "^4.28.0" + }, + "peerDependenciesMeta": { + "js-yaml": { + "optional": true + }, + "ioredis": { + "optional": true + } + }, "devDependencies": { "@types/google.analytics": "0.0.40", "@types/ioredis": "^4.28.0", @@ -62,7 +74,7 @@ "ioredis": "^4.28.0", "jest": "^27.2.3", "jest-localstorage-mock": "^2.4.3", - "js-yaml": "^3.14.0", + "js-yaml": "^3.13.1", "lodash": "^4.17.21", "node-fetch": "^2.6.7", "redis-server": "1.2.2", diff --git a/src/readiness/__tests__/sdkReadinessManager.spec.ts b/src/readiness/__tests__/sdkReadinessManager.spec.ts index c1929bdc..b17ea51f 100644 --- a/src/readiness/__tests__/sdkReadinessManager.spec.ts +++ b/src/readiness/__tests__/sdkReadinessManager.spec.ts @@ -309,7 +309,8 @@ describe('SDK Readiness Manager - Ready promise', () => { .then(() => { throw new Error(); }) .then(() => { throw new Error(); }) .catch((error) => { - expect(error).toBe('Split SDK has emitted SDK_READY_TIMED_OUT event.'); + expect(error instanceof Error).toBe(true); + expect(error.message).toBe('Split SDK has emitted SDK_READY_TIMED_OUT event.'); expect(loggerMock.error).toBeCalledTimes(2); // If we provide an onRejected handler, even chaining several onFulfilled handlers, the error is not logged. done(); }); diff --git a/src/readiness/sdkReadinessManager.ts b/src/readiness/sdkReadinessManager.ts index 52f519ad..f50f78f9 100644 --- a/src/readiness/sdkReadinessManager.ts +++ b/src/readiness/sdkReadinessManager.ts @@ -51,7 +51,7 @@ export function sdkReadinessManagerFactory( // default onRejected handler, that just logs the error, if ready promise doesn't have one. function defaultOnRejected(err: any) { - log.error(err); + log.error(err && err.message); } function generateReadyPromise() { @@ -62,7 +62,9 @@ export function sdkReadinessManagerFactory( if (readyCbCount === internalReadyCbCount && !promise.hasOnFulfilled()) log.warn(CLIENT_NO_LISTENER); resolve(); }); - readinessManager.gate.once(SDK_READY_TIMED_OUT, reject); + readinessManager.gate.once(SDK_READY_TIMED_OUT, (message: string) => { + reject(new Error(message)); + }); }), defaultOnRejected); return promise; @@ -106,10 +108,10 @@ export function sdkReadinessManagerFactory( * @function ready * @returns {Promise} */ - ready: () => { + ready() { if (readinessManager.hasTimedout()) { if (!readinessManager.isReady()) { - return promiseWrapper(Promise.reject('Split SDK has emitted SDK_READY_TIMED_OUT event.'), defaultOnRejected); + return promiseWrapper(Promise.reject(new Error('Split SDK has emitted SDK_READY_TIMED_OUT event.')), defaultOnRejected); } else { return Promise.resolve(); } @@ -118,7 +120,7 @@ export function sdkReadinessManagerFactory( }, // Expose status for internal purposes only. Not considered part of the public API, and might be updated eventually. - __getStatus: () => { + __getStatus() { return { isReady: readinessManager.isReady(), isReadyFromCache: readinessManager.isReadyFromCache(), diff --git a/src/trackers/impressionsTracker.ts b/src/trackers/impressionsTracker.ts index ecd40a5d..c2335531 100644 --- a/src/trackers/impressionsTracker.ts +++ b/src/trackers/impressionsTracker.ts @@ -74,8 +74,8 @@ export function impressionsTrackerFactory( // copy of impression, to avoid unexpected behaviour if modified by integrations or impressionListener impression: objectAssign({}, impressions[i]), attributes, - ip: ip as string, - hostname: hostname as string, + ip, + hostname, sdkLanguageVersion: version }; diff --git a/src/types.ts b/src/types.ts index 7d523223..6c330eec 100644 --- a/src/types.ts +++ b/src/types.ts @@ -535,8 +535,8 @@ export namespace SplitIO { export type ImpressionData = { impression: ImpressionDTO, attributes?: SplitIO.Attributes, - ip: string, - hostname: string, + ip: string| false, + hostname: string | false, sdkLanguageVersion: string }; /**