From da38be2a97bd7431668ce44ed35e4a241b58b532 Mon Sep 17 00:00:00 2001 From: Emiliano Sanchez Date: Sat, 23 May 2026 14:27:42 -0300 Subject: [PATCH 1/3] Add RBS support for configs --- src/services/__tests__/splitApi.spec.ts | 8 ++++---- src/services/splitApi.ts | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/services/__tests__/splitApi.spec.ts b/src/services/__tests__/splitApi.spec.ts index cd311cb9..03f518a0 100644 --- a/src/services/__tests__/splitApi.spec.ts +++ b/src/services/__tests__/splitApi.spec.ts @@ -45,10 +45,10 @@ describe('splitApi', () => { assertHeaders(settings, headers); expect(url).toBe(expectedFlagsUrl(-1, 100, settings.validateFilters || false, settings, -1)); - splitApi.fetchConfigs(-1, false, 100); + splitApi.fetchConfigs(-1, false, 100, -1); [url, { headers }] = fetchMock.mock.calls[4]; assertHeaders(settings, headers); - expect(url).toBe(expectedConfigsUrl(-1, 100, settings.validateFilters || false, settings)); + expect(url).toBe(expectedConfigsUrl(-1, 100, settings.validateFilters || false, settings, -1)); splitApi.fetchConfigsSegmentChanges(-1, 'segmentName', false, 100); [url, { headers }] = fetchMock.mock.calls[5]; @@ -81,9 +81,9 @@ describe('splitApi', () => { return `sdk/splitChanges?s=1.1&since=${since}${rbSince ? '&rbSince=' + rbSince : ''}${usesFilter ? filterQueryString : ''}${till ? '&till=' + till : ''}`; } - function expectedConfigsUrl(since: number, till: number, usesFilter: boolean, settings: ISettings) { + function expectedConfigsUrl(since: number, till: number, usesFilter: boolean, settings: ISettings, rbSince?: number) { const filterQueryString = settings.sync.__splitFiltersValidation && settings.sync.__splitFiltersValidation.queryString; - return `configs/v1/configs?since=${since}${usesFilter ? filterQueryString : ''}${till ? '&till=' + till : ''}`; + return `configs/v1/configs?since=${since}${rbSince ? '&rbSince=' + rbSince : ''}${usesFilter ? filterQueryString : ''}${till ? '&till=' + till : ''}`; } }); diff --git a/src/services/splitApi.ts b/src/services/splitApi.ts index d90b1e2d..4d95a925 100644 --- a/src/services/splitApi.ts +++ b/src/services/splitApi.ts @@ -69,8 +69,8 @@ export function splitApiFactory( }, // @TODO support filterQueryString and handle ERROR_TOO_MANY_SETS error - fetchConfigs(since: number, noCache?: boolean, till?: number) { - const url = `${urls.configs}/v1/configs?since=${since}${filterQueryString || ''}${till ? '&till=' + till : ''}`; + fetchConfigs(since: number, noCache?: boolean, till?: number, rbSince?: number) { + const url = `${urls.configs}/v1/configs?since=${since}${rbSince ? '&rbSince=' + rbSince : ''}${filterQueryString || ''}${till ? '&till=' + till : ''}`; return (secureSplitHttpClient || splitHttpClient)(url, noCache ? noCacheHeaderOptions : undefined); }, From 7ffc096c78eb04af314a41352bf9817da4cc41ff Mon Sep 17 00:00:00 2001 From: Emiliano Sanchez Date: Mon, 29 Jun 2026 19:45:36 -0300 Subject: [PATCH 2/3] Fix TS issues --- package-lock.json | 4 ++-- package.json | 2 +- src/sdkClient/sdkLifecycle.ts | 3 ++- src/sdkFactory/types.ts | 6 +----- src/storages/inLocalStorage/MySegmentsCacheInLocal.ts | 4 +--- src/utils/EventEmitter.d.ts | 3 +++ 6 files changed, 10 insertions(+), 12 deletions(-) create mode 100644 src/utils/EventEmitter.d.ts diff --git a/package-lock.json b/package-lock.json index 0c2b5034..24e3f32a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@splitsoftware/splitio-commons", - "version": "3.0.0", + "version": "3.0.1-rc.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@splitsoftware/splitio-commons", - "version": "3.0.0", + "version": "3.0.1-rc.1", "license": "Apache-2.0", "dependencies": { "@types/ioredis": "^4.28.0", diff --git a/package.json b/package.json index 9c031dfe..d387edfe 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@splitsoftware/splitio-commons", - "version": "3.0.0", + "version": "3.0.1-rc.1", "description": "Split JavaScript SDK common components", "main": "cjs/index.js", "module": "esm/index.js", diff --git a/src/sdkClient/sdkLifecycle.ts b/src/sdkClient/sdkLifecycle.ts index fa0cb602..6e4d1b95 100644 --- a/src/sdkClient/sdkLifecycle.ts +++ b/src/sdkClient/sdkLifecycle.ts @@ -1,5 +1,6 @@ import { releaseApiKey, validateAndTrackApiKey } from '../utils/inputValidation/apiKey'; import { ISdkFactoryContext } from '../sdkFactory/types'; +import { LOCALHOST_MODE } from '../utils/constants'; const COOLDOWN_TIME_IN_MILLIS = 1000; @@ -12,7 +13,7 @@ export function sdkLifecycleFactory(params: ISdkFactoryContext, isSharedClient?: let hasInit = false; let lastActionTime = 0; - const signalListener = platform.SignalListener && new platform.SignalListener(params); + const signalListener = platform.SignalListener && settings.mode !== LOCALHOST_MODE ? new platform.SignalListener(params) : undefined; function __cooldown(func: Function, time: number) { const now = Date.now(); diff --git a/src/sdkFactory/types.ts b/src/sdkFactory/types.ts index 1dd5c7f7..14bffc56 100644 --- a/src/sdkFactory/types.ts +++ b/src/sdkFactory/types.ts @@ -105,11 +105,7 @@ export interface ISdkFactoryParams { // Sdk client method factory. // It Allows to distinguish SDK clients with the client-side API (`IBrowserSDK` and `IBrowserAsyncSDK`) or server-side API (`ISDK` and `IAsyncSDK`). - sdkClientMethodFactory: (params: ISdkFactoryContext) => ( - { (): SplitIO.IBrowserClient & { init(): void }; (key: SplitIO.SplitKey): SplitIO.IBrowserClient & { init(): void }; } | - (() => SplitIO.IClient & { init(): void }) | - (() => SplitIO.IAsyncClient & { init(): void }) - ) + sdkClientMethodFactory: (params: ISdkFactoryContext) => ({ (): SplitIO.IBrowserClient; (key: SplitIO.SplitKey): SplitIO.IBrowserClient; } | (() => SplitIO.IClient) | (() => SplitIO.IAsyncClient)) // Impression observer factory. impressionsObserverFactory: () => IImpressionObserver diff --git a/src/storages/inLocalStorage/MySegmentsCacheInLocal.ts b/src/storages/inLocalStorage/MySegmentsCacheInLocal.ts index 0a1cc258..94ad2e55 100644 --- a/src/storages/inLocalStorage/MySegmentsCacheInLocal.ts +++ b/src/storages/inLocalStorage/MySegmentsCacheInLocal.ts @@ -8,12 +8,10 @@ import { StorageAdapter } from '../types'; export class MySegmentsCacheInLocal extends AbstractMySegmentsCacheSync { private readonly keys: MySegmentsKeyBuilder; - private readonly log: ILogger; private readonly storage: StorageAdapter; - constructor(log: ILogger, keys: MySegmentsKeyBuilder, storage: StorageAdapter) { + constructor(_log: ILogger, keys: MySegmentsKeyBuilder, storage: StorageAdapter) { super(); - this.log = log; this.keys = keys; this.storage = storage; } diff --git a/src/utils/EventEmitter.d.ts b/src/utils/EventEmitter.d.ts new file mode 100644 index 00000000..754737bd --- /dev/null +++ b/src/utils/EventEmitter.d.ts @@ -0,0 +1,3 @@ +import SplitIO from '../../types/splitio'; + +export declare const EventEmitter: new () => SplitIO.IEventEmitter; From 0451a4446276c005200b6bc709590e0ea1a472e9 Mon Sep 17 00:00:00 2001 From: Emiliano Sanchez Date: Wed, 8 Jul 2026 16:07:40 -0300 Subject: [PATCH 3/3] rc --- CHANGES.txt | 3 +++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 2f353229..9dd13056 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,6 @@ +3.1.0 (July XX, 2026) + - Added support for rule-based segments in /api/v1/configs endpoint. + 3.0.0 (June 26, 2026) - Extracted SDK lifecycle methods (`init`, `flush`, and `destroy`) into a reusable `sdkLifecycle` module. - Extracted the `track` method into a standalone `trackMethod` factory for reuse across SDKs. diff --git a/package-lock.json b/package-lock.json index 24e3f32a..42dec283 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@splitsoftware/splitio-commons", - "version": "3.0.1-rc.1", + "version": "3.0.1-rc.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@splitsoftware/splitio-commons", - "version": "3.0.1-rc.1", + "version": "3.0.1-rc.2", "license": "Apache-2.0", "dependencies": { "@types/ioredis": "^4.28.0", diff --git a/package.json b/package.json index d387edfe..2d5c30ab 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@splitsoftware/splitio-commons", - "version": "3.0.1-rc.1", + "version": "3.0.1-rc.2", "description": "Split JavaScript SDK common components", "main": "cjs/index.js", "module": "esm/index.js",