From 23ea31e09f5ecabc1663a25f9aa7f7941f23226c Mon Sep 17 00:00:00 2001 From: Emmanuel Zamora Date: Wed, 22 Jun 2022 16:01:07 -0300 Subject: [PATCH 1/8] Prepare release v10.19.2 --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 00ef4fe9d..11a8aa211 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@splitsoftware/splitio", - "version": "10.19.1", + "version": "10.19.2-rc.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -4037,7 +4037,7 @@ "lodash.defaults": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" }, "lodash.flatten": { "version": "4.4.0", @@ -4053,7 +4053,7 @@ "lodash.isarguments": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" }, "lodash.isequal": { "version": "4.5.0", diff --git a/package.json b/package.json index 7d5db2c87..144f3e7b5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@splitsoftware/splitio", - "version": "10.19.1", + "version": "10.19.2-rc.1", "description": "Split SDK", "files": [ "README.md", From 6f0226de1f3fe8337109e6e48a530bb62034fb6e Mon Sep 17 00:00:00 2001 From: Emmanuel Zamora Date: Wed, 22 Jun 2022 16:28:53 -0300 Subject: [PATCH 2/8] add version --- src/settings/defaults/version.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/settings/defaults/version.js b/src/settings/defaults/version.js index c04241d9a..94fe661fa 100644 --- a/src/settings/defaults/version.js +++ b/src/settings/defaults/version.js @@ -1 +1 @@ -export const packageVersion = '10.19.1'; +export const packageVersion = '10.19.2-rc.1'; From 3f2ed4c99b8833d30aaf7558911ce5c442c103c0 Mon Sep 17 00:00:00 2001 From: Emmanuel Zamora Date: Fri, 24 Jun 2022 17:42:10 -0300 Subject: [PATCH 3/8] rc --- package-lock.json | 8 ++++---- package.json | 4 ++-- src/settings/defaults/version.js | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 11a8aa211..18dc4171e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@splitsoftware/splitio", - "version": "10.19.2-rc.1", + "version": "10.19.2-rc.2", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -437,9 +437,9 @@ "dev": true }, "@splitsoftware/splitio-commons": { - "version": "1.4.2-rc.1", - "resolved": "https://registry.npmjs.org/@splitsoftware/splitio-commons/-/splitio-commons-1.4.2-rc.1.tgz", - "integrity": "sha512-SuX2Fjt48TEHizOoAYw+cuL85kgJKUnMV1wxF5u+LUooeLrpP3GcKA6OkiHCwZSbbxhpp529mJTsyzeJpFqDYw==", + "version": "1.4.2-rc.3", + "resolved": "https://registry.npmjs.org/@splitsoftware/splitio-commons/-/splitio-commons-1.4.2-rc.3.tgz", + "integrity": "sha512-IndiNdYzym6uD01m8IR5tCO77/adLXnt0j6L4XsYQ3MRMeS3+8Dqrlq3XBRGNIWs6MzG1T/BdLmGdZ+ZNQF3Fg==", "requires": { "tslib": "^2.3.1" } diff --git a/package.json b/package.json index 144f3e7b5..60ca714e5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@splitsoftware/splitio", - "version": "10.19.2-rc.1", + "version": "10.19.2-rc.2", "description": "Split SDK", "files": [ "README.md", @@ -32,7 +32,7 @@ "node": ">=6" }, "dependencies": { - "@splitsoftware/splitio-commons": "1.4.2-rc.1", + "@splitsoftware/splitio-commons": "1.4.2-rc.3", "@types/google.analytics": "0.0.40", "@types/ioredis": "^4.28.0", "ioredis": "^4.28.0", diff --git a/src/settings/defaults/version.js b/src/settings/defaults/version.js index 94fe661fa..3d1f3dd7d 100644 --- a/src/settings/defaults/version.js +++ b/src/settings/defaults/version.js @@ -1 +1 @@ -export const packageVersion = '10.19.2-rc.1'; +export const packageVersion = '10.19.2-rc.2'; From 425419752ebda0cffa00c3962f9b04f827d5ca1f Mon Sep 17 00:00:00 2001 From: Emmanuel Zamora Date: Mon, 27 Jun 2022 12:30:26 -0300 Subject: [PATCH 4/8] s3 in branch --- .github/workflows/ci-cd.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index f6fd86ccb..178a9dfe0 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -51,14 +51,14 @@ jobs: run: BUILD_BRANCH=$(echo "${GITHUB_REF#refs/heads/}") BUILD_COMMIT=${{ github.sha }} npm run build - name: Configure AWS credentials (development) - if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/development' }} + if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/update-commons' }} uses: aws-actions/configure-aws-credentials@v1 with: role-to-assume: arn:aws:iam::079419646996:role/public-assets aws-region: us-east-1 - name: Upload to S3 (development) - if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/development' }} + if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/update-commons' }} run: aws s3 sync $SOURCE_DIR s3://$BUCKET/$DEST_DIR $ARGS env: BUCKET: split-public-stage From f3f63410c7ad50be0b466bc8e058f55cefba0680 Mon Sep 17 00:00:00 2001 From: Emmanuel Zamora Date: Tue, 28 Jun 2022 18:30:42 -0300 Subject: [PATCH 5/8] add e2e for single sync --- src/__tests__/browser.spec.js | 3 + .../browserSuites/single-sync.spec.js | 70 +++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 src/__tests__/browserSuites/single-sync.spec.js diff --git a/src/__tests__/browser.spec.js b/src/__tests__/browser.spec.js index 618a862b5..254ff0fc7 100644 --- a/src/__tests__/browser.spec.js +++ b/src/__tests__/browser.spec.js @@ -20,6 +20,7 @@ import useBeaconDebugApiSuite from './browserSuites/use-beacon-api.debug.spec'; import readyPromiseSuite from './browserSuites/ready-promise.spec'; import fetchSpecificSplits from './browserSuites/fetch-specific-splits.spec'; import userConsent from './browserSuites/user-consent.spec'; +import singleSync from './browserSuites/single-sync.spec'; import { settingsFactory } from '../settings'; @@ -130,6 +131,8 @@ tape('## E2E CI Tests ##', function(assert) { assert.test('E2E / Ready promise', readyPromiseSuite.bind(null, fetchMock)); /* Validate fetching specific splits */ assert.test('E2E / Fetch specific splits', fetchSpecificSplits.bind(null, fetchMock)); + /* Validate single sync */ + assert.test('E2E / Single sync', singleSync.bind(null, fetchMock)); //If we change the mocks, we need to clear localstorage. Cleaning up after testing ensures "fresh data". localStorage.clear(); diff --git a/src/__tests__/browserSuites/single-sync.spec.js b/src/__tests__/browserSuites/single-sync.spec.js new file mode 100644 index 000000000..7fcb52f02 --- /dev/null +++ b/src/__tests__/browserSuites/single-sync.spec.js @@ -0,0 +1,70 @@ +import { SplitFactory } from '../../'; +import { settingsFactory } from '../../settings'; +import { url } from '../testUtils'; + +import authPushEnabledNicolas from '../mocks/auth.pushEnabled.nicolas@split.io.json'; +import splitChangesMock1 from '../mocks/splitchanges.since.-1.json'; +import splitChangesMock2 from '../mocks/splitchanges.since.1457552620999.json'; +import mySegmentsNicolasMock2 from '../mocks/mysegments.nicolas@split.io.json'; + +const baseUrls = { + sdk: 'https://sdk.single-sync/api', + events: 'https://events.single-sync/api', + auth: 'https://auth.single-sync/api' +}; +const userKey = 'nicolas@split.io'; +const config = { + core: { + authorizationKey: '', + key: userKey + }, + scheduler: { + featuresRefreshRate: 0.2, + segmentsRefreshRate: 0.2, + impressionsRefreshRate: 3000, + pushRetryBackoffBase: 0.1 + }, + urls: baseUrls, + startup: { + eventsFirstPushWindow: 3000 + }, + sync: { + enabled: false + }, + streamingEnabled: true, +}; +const settings = settingsFactory(config); + +export default function singleSync(fetchMock, assert) { + + fetchMock.get(url(settings, `/v2/auth?users=${encodeURIComponent(userKey)}`), function () { + return { status: 200, body: authPushEnabledNicolas }; + }); + + fetchMock.getOnce(url(settings, '/splitChanges?since=-1'), function () { + assert.pass('first splitChanges fetch'); + return { status: 200, body: splitChangesMock1 }; + }); + fetchMock.getOnce('begin:'+url(settings, '/splitChanges?'), function () { + assert.fail('splitChanges should not be called again'); + return { status: 200, body: splitChangesMock2 }; + }); + + fetchMock.getOnce(url(settings, '/mySegments/nicolas%40split.io'), function () { + assert.pass('first mySegments fetch'); + return { status: 200, body: mySegmentsNicolasMock2 }; + }); + fetchMock.getOnce(url(settings, '/mySegments/nicolas%40split.io'), function () { + assert.fail('mySegments should not be called again'); + return { status: 200, body: mySegmentsNicolasMock2 }; + }); + + let splitio, client = false; + + splitio = SplitFactory(config); + client = splitio.client(); + client.on(client.Event.SDK_READY, () => { + setTimeout(() => assert.end(), 1000); + }); + +} \ No newline at end of file From 53f85b410876665e01cabbfe8da1ba4d1c3afe27 Mon Sep 17 00:00:00 2001 From: Emmanuel Zamora Date: Wed, 29 Jun 2022 14:37:36 -0300 Subject: [PATCH 6/8] Remove auth mock. add client destroy --- src/__tests__/browserSuites/single-sync.spec.js | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/__tests__/browserSuites/single-sync.spec.js b/src/__tests__/browserSuites/single-sync.spec.js index 7fcb52f02..d6c7c52da 100644 --- a/src/__tests__/browserSuites/single-sync.spec.js +++ b/src/__tests__/browserSuites/single-sync.spec.js @@ -2,7 +2,6 @@ import { SplitFactory } from '../../'; import { settingsFactory } from '../../settings'; import { url } from '../testUtils'; -import authPushEnabledNicolas from '../mocks/auth.pushEnabled.nicolas@split.io.json'; import splitChangesMock1 from '../mocks/splitchanges.since.-1.json'; import splitChangesMock2 from '../mocks/splitchanges.since.1457552620999.json'; import mySegmentsNicolasMock2 from '../mocks/mysegments.nicolas@split.io.json'; @@ -10,7 +9,6 @@ import mySegmentsNicolasMock2 from '../mocks/mysegments.nicolas@split.io.json'; const baseUrls = { sdk: 'https://sdk.single-sync/api', events: 'https://events.single-sync/api', - auth: 'https://auth.single-sync/api' }; const userKey = 'nicolas@split.io'; const config = { @@ -36,10 +34,6 @@ const config = { const settings = settingsFactory(config); export default function singleSync(fetchMock, assert) { - - fetchMock.get(url(settings, `/v2/auth?users=${encodeURIComponent(userKey)}`), function () { - return { status: 200, body: authPushEnabledNicolas }; - }); fetchMock.getOnce(url(settings, '/splitChanges?since=-1'), function () { assert.pass('first splitChanges fetch'); @@ -64,7 +58,7 @@ export default function singleSync(fetchMock, assert) { splitio = SplitFactory(config); client = splitio.client(); client.on(client.Event.SDK_READY, () => { - setTimeout(() => assert.end(), 1000); + setTimeout(() => client.destroy().then(() => assert.end()), 1000); }); } \ No newline at end of file From 0b9edf75b194f4d731ac6e4e0a4d3102c2d7f37f Mon Sep 17 00:00:00 2001 From: Emmanuel Zamora Date: Wed, 29 Jun 2022 15:18:49 -0300 Subject: [PATCH 7/8] prepare release v10.20.0 --- CHANGES.txt | 5 +++++ package-lock.json | 8 ++++---- package.json | 4 ++-- src/__tests__/browserSuites/single-sync.spec.js | 1 + src/settings/defaults/version.js | 2 +- 5 files changed, 13 insertions(+), 7 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index ca6400ce7..9b549227d 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,8 @@ +10.20.0 (June 29, 2022) +- Added a new config option to control the tasks that listen or poll for updates on feature flags and segments, via the new config sync.enabled . Running online Split will always pull the most recent updates upon initialization, this only affects updates fetching on a running instance. Useful when a consistent session experience is a must or to save resources when updates are not being used. +- Updated telemetry logic to track the anonymous config for user consent flag set to declined or unknown. +- Updated submitters logic, to avoid duplicating the post of impressions to Split cloud when the SDK is destroyed while its periodic post of impressions is running. + 10.19.1 (Jun 13, 2022) - Updated eventsource dependency range to ^1.1.2 to avoid a vulnerability and dependency resolution to a vulnerable version of url-parse transitive dependency. - Bugfixing - Updated submitters logic, to avoid dropping impressions and events that are being tracked while POST request is pending. diff --git a/package-lock.json b/package-lock.json index 18dc4171e..bb6095050 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@splitsoftware/splitio", - "version": "10.19.2-rc.2", + "version": "10.20.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -437,9 +437,9 @@ "dev": true }, "@splitsoftware/splitio-commons": { - "version": "1.4.2-rc.3", - "resolved": "https://registry.npmjs.org/@splitsoftware/splitio-commons/-/splitio-commons-1.4.2-rc.3.tgz", - "integrity": "sha512-IndiNdYzym6uD01m8IR5tCO77/adLXnt0j6L4XsYQ3MRMeS3+8Dqrlq3XBRGNIWs6MzG1T/BdLmGdZ+ZNQF3Fg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@splitsoftware/splitio-commons/-/splitio-commons-1.5.0.tgz", + "integrity": "sha512-7vBv4Yn+EKaAxJ+9RdKOqJNee+izj6BieG0ZmivWk8fTpKFpcvqKes/Y0kXk0tfOiMmUFV9dRr2xDHRYIf0lnw==", "requires": { "tslib": "^2.3.1" } diff --git a/package.json b/package.json index 60ca714e5..815066319 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@splitsoftware/splitio", - "version": "10.19.2-rc.2", + "version": "10.20.0", "description": "Split SDK", "files": [ "README.md", @@ -32,7 +32,7 @@ "node": ">=6" }, "dependencies": { - "@splitsoftware/splitio-commons": "1.4.2-rc.3", + "@splitsoftware/splitio-commons": "1.5.0", "@types/google.analytics": "0.0.40", "@types/ioredis": "^4.28.0", "ioredis": "^4.28.0", diff --git a/src/__tests__/browserSuites/single-sync.spec.js b/src/__tests__/browserSuites/single-sync.spec.js index d6c7c52da..c396f2f10 100644 --- a/src/__tests__/browserSuites/single-sync.spec.js +++ b/src/__tests__/browserSuites/single-sync.spec.js @@ -23,6 +23,7 @@ const config = { pushRetryBackoffBase: 0.1 }, urls: baseUrls, + userConsent: 'UNKNOWN', startup: { eventsFirstPushWindow: 3000 }, diff --git a/src/settings/defaults/version.js b/src/settings/defaults/version.js index 3d1f3dd7d..ac6e8280b 100644 --- a/src/settings/defaults/version.js +++ b/src/settings/defaults/version.js @@ -1 +1 @@ -export const packageVersion = '10.19.2-rc.2'; +export const packageVersion = '10.20.0'; From fd287a9401d04b0079ec216844606f1e8e3c6fc2 Mon Sep 17 00:00:00 2001 From: Emmanuel Zamora Date: Wed, 29 Jun 2022 15:22:55 -0300 Subject: [PATCH 8/8] restore s3 for development in github workflow --- .github/workflows/ci-cd.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index 178a9dfe0..f6fd86ccb 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -51,14 +51,14 @@ jobs: run: BUILD_BRANCH=$(echo "${GITHUB_REF#refs/heads/}") BUILD_COMMIT=${{ github.sha }} npm run build - name: Configure AWS credentials (development) - if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/update-commons' }} + if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/development' }} uses: aws-actions/configure-aws-credentials@v1 with: role-to-assume: arn:aws:iam::079419646996:role/public-assets aws-region: us-east-1 - name: Upload to S3 (development) - if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/update-commons' }} + if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/development' }} run: aws s3 sync $SOURCE_DIR s3://$BUCKET/$DEST_DIR $ARGS env: BUCKET: split-public-stage