diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index f84bc4f..9a1dfb3 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -46,7 +46,7 @@ jobs: run: BUILD_BRANCH=$(echo "${GITHUB_REF#refs/heads/}") npm run build - name: Store assets - if: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/development' || github.ref == 'refs/heads/main') }} + if: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/fme-12310' || github.ref == 'refs/heads/main') }} uses: actions/upload-artifact@v5 with: name: assets @@ -57,7 +57,7 @@ jobs: name: Upload assets runs-on: ubuntu-latest needs: build - if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/development' }} + if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/fme-12310' }} strategy: matrix: environment: diff --git a/package-lock.json b/package-lock.json index 28dcb2d..57bdc9c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,15 @@ { "name": "@splitsoftware/splitio-browserjs", - "version": "1.6.1", + "version": "1.6.2-rc.5", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@splitsoftware/splitio-browserjs", - "version": "1.6.1", + "version": "1.6.2-rc.5", "license": "Apache-2.0", "dependencies": { - "@splitsoftware/splitio-commons": "2.10.1", + "@splitsoftware/splitio-commons": "2.10.2-rc.7", "tslib": "^2.3.1", "unfetch": "^4.2.0" }, @@ -1397,9 +1397,9 @@ "dev": true }, "node_modules/@splitsoftware/splitio-commons": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/@splitsoftware/splitio-commons/-/splitio-commons-2.10.1.tgz", - "integrity": "sha512-yYmWC1stuH2DvxEXP9xZFOOvw3SkRDjE5UwZ68y011Oev9ILXSN7E2Yd6w8ag85cwbF5GjtaDgT7bOURhyvKww==", + "version": "2.10.2-rc.7", + "resolved": "https://registry.npmjs.org/@splitsoftware/splitio-commons/-/splitio-commons-2.10.2-rc.7.tgz", + "integrity": "sha512-WGQDs2v2dIdCnvT8SDjWej2mPYK05Zgzbjbv4LK/GNa8I+UpEjYOzkTCY89TVn2Uy8uQr8B1SRej4VBK0Lvnmw==", "license": "Apache-2.0", "dependencies": { "@types/ioredis": "^4.28.0", @@ -10590,9 +10590,9 @@ "dev": true }, "@splitsoftware/splitio-commons": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/@splitsoftware/splitio-commons/-/splitio-commons-2.10.1.tgz", - "integrity": "sha512-yYmWC1stuH2DvxEXP9xZFOOvw3SkRDjE5UwZ68y011Oev9ILXSN7E2Yd6w8ag85cwbF5GjtaDgT7bOURhyvKww==", + "version": "2.10.2-rc.7", + "resolved": "https://registry.npmjs.org/@splitsoftware/splitio-commons/-/splitio-commons-2.10.2-rc.7.tgz", + "integrity": "sha512-WGQDs2v2dIdCnvT8SDjWej2mPYK05Zgzbjbv4LK/GNa8I+UpEjYOzkTCY89TVn2Uy8uQr8B1SRej4VBK0Lvnmw==", "requires": { "@types/ioredis": "^4.28.0", "tslib": "^2.3.1" diff --git a/package.json b/package.json index 4b1714b..fc77a0b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@splitsoftware/splitio-browserjs", - "version": "1.6.1", + "version": "1.6.2-rc.5", "description": "Split SDK for JavaScript on Browser", "main": "cjs/index.js", "module": "esm/index.js", @@ -59,7 +59,7 @@ "bugs": "https://github.com/splitio/javascript-browser-client/issues", "homepage": "https://github.com/splitio/javascript-browser-client#readme", "dependencies": { - "@splitsoftware/splitio-commons": "2.10.1", + "@splitsoftware/splitio-commons": "2.10.2-rc.7", "tslib": "^2.3.1", "unfetch": "^4.2.0" }, diff --git a/src/__tests__/browserSuites/push-corner-cases.spec.js b/src/__tests__/browserSuites/push-corner-cases.spec.js index a211839..d847291 100644 --- a/src/__tests__/browserSuites/push-corner-cases.spec.js +++ b/src/__tests__/browserSuites/push-corner-cases.spec.js @@ -96,7 +96,7 @@ export function testSplitKillOnReadyFromCache(fetchMock, assert) { }); client.on(client.Event.SDK_READY, () => { const lapse = Date.now() - start; - assert.true(nearlyEqual(lapse, MILLIS_SPLIT_CHANGES_RESPONSE), 'SDK_READY once split changes arrives'); + assert.true(nearlyEqual(lapse, MILLIS_SPLIT_CHANGES_RESPONSE, 200), 'SDK_READY once split changes arrives'); client.destroy().then(() => { assert.end(); }); }); diff --git a/src/settings/defaults.ts b/src/settings/defaults.ts index f210370..2734e8f 100644 --- a/src/settings/defaults.ts +++ b/src/settings/defaults.ts @@ -2,7 +2,7 @@ import type SplitIO from '@splitsoftware/splitio-commons/types/splitio'; import { LogLevels, isLogLevelString } from '@splitsoftware/splitio-commons/src/logger/index'; import { CONSENT_GRANTED } from '@splitsoftware/splitio-commons/src/utils/constants'; -const packageVersion = '1.6.1'; +const packageVersion = '1.6.2-rc.5'; /** * In browser, the default debug level, can be set via the `localStorage.splitio_debug` item. diff --git a/ts-tests/index.ts b/ts-tests/index.ts index 4d5503c..08b8604 100644 --- a/ts-tests/index.ts +++ b/ts-tests/index.ts @@ -278,12 +278,12 @@ client = client.removeAllListeners(); // Ready and destroy let promise: Promise = client.ready(); -promise = client.whenReady(); promise = client.destroy(); promise = SDK.destroy(); // @TODO not public yet // promise = client.flush(); -const promiseWhenReadyFromCache: Promise = client.whenReadyFromCache(); +let promiseWithMetadata: Promise = client.whenReady(); +promiseWithMetadata = client.whenReadyFromCache(); // Get readiness status let status: SplitIO.ReadinessStatus = client.getStatus(); @@ -374,6 +374,63 @@ tracked = client.track('myTrafficType', 'myEventType', 10); tracked = client.track('myTrafficType', 'myEventType', null, { prop1: 1, prop2: '2', prop3: false, prop4: null }); // tracked = client.track('myEventType', undefined, { prop1: 1, prop2: '2', prop3: false, prop4: null }); // Not valid in Browser JS SDK +/*** Tests for SDK Update Metadata ***/ + +// Using addListener with typed metadata +client.addListener(client.Event.SDK_UPDATE, (metadata: SplitIO.SdkUpdateMetadata) => { + const type: SplitIO.SdkUpdateMetadataType = metadata.type; + const names: string[] = metadata.names; +}); +client.addListener(client.Event.SDK_READY, (metadata: SplitIO.SdkReadyMetadata) => { + const fromCache: boolean = metadata.initialCacheLoad; + const timestamp: number = metadata.lastUpdateTimestamp; +}); +client.addListener(client.Event.SDK_READY_FROM_CACHE, (metadata: SplitIO.SdkReadyMetadata) => { + const fromCache: boolean = metadata.initialCacheLoad; + const timestamp: number = metadata.lastUpdateTimestamp; +}); +client.addListener(client.Event.SDK_UPDATE, () => { }); +client.addListener(client.Event.SDK_READY, () => { }); +client.addListener(client.Event.SDK_READY_FROM_CACHE, () => { }); + +// Using once with typed metadata +client.once(client.Event.SDK_UPDATE, (metadata: SplitIO.SdkUpdateMetadata) => { + const type: SplitIO.SdkUpdateMetadataType = metadata.type; + const names: string[] = metadata.names; +}); +client.once(client.Event.SDK_READY, (metadata: SplitIO.SdkReadyMetadata) => { + const fromCache: boolean = metadata.initialCacheLoad; + const timestamp: number = metadata.lastUpdateTimestamp; +}); +client.once(client.Event.SDK_READY_FROM_CACHE, (metadata: SplitIO.SdkReadyMetadata) => { + const fromCache: boolean = metadata.initialCacheLoad; + const timestamp: number = metadata.lastUpdateTimestamp; +}); +client.once(client.Event.SDK_UPDATE, () => { }); +client.once(client.Event.SDK_READY, () => { }); +client.once(client.Event.SDK_READY_FROM_CACHE, () => { }); + +// SDK_READY event listener with metadata +client.on(client.Event.SDK_READY, (metadata: SplitIO.SdkReadyMetadata) => { + const fromCache: boolean = metadata.initialCacheLoad; + const timestamp: number = metadata.lastUpdateTimestamp; +}); + +// SDK_READY_FROM_CACHE event listener with metadata +client.on(client.Event.SDK_READY_FROM_CACHE, (metadata: SplitIO.SdkReadyMetadata) => { + const fromCache: boolean = metadata.initialCacheLoad; + const timestamp: number = metadata.lastUpdateTimestamp; +}); + +// SDK_UPDATE event listener with metadata +client.on(client.Event.SDK_UPDATE, (metadata: SplitIO.SdkUpdateMetadata) => { + const type: SplitIO.SdkUpdateMetadataType = metadata.type; + const names: string[] = metadata.names; +}); +client.on(client.Event.SDK_UPDATE, () => { }); +client.on(client.Event.SDK_READY, () => { }); +client.on(client.Event.SDK_READY_FROM_CACHE, () => { }); + /*** Repeating tests for Async Client ***/ // Events constants we get (same as for sync client, just for interface checking)