Skip to content

Commit b9f8f0a

Browse files
Merge pull request #511 from splitio/polishing
Fix TS issues
2 parents 03c40b8 + c49d955 commit b9f8f0a

10 files changed

Lines changed: 25 additions & 23 deletions

File tree

CHANGES.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
3.1.0 (July XX, 2026)
2+
- Added support for rule-based segments in /api/v1/configs endpoint.
3+
14
3.0.0 (June 26, 2026)
25
- Extracted SDK lifecycle methods (`init`, `flush`, and `destroy`) into a reusable `sdkLifecycle` module.
36
- Extracted the `track` method into a standalone `trackMethod` factory for reuse across SDKs.

package-lock.json

Lines changed: 6 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@splitsoftware/splitio-commons",
3-
"version": "3.0.0",
3+
"version": "3.0.1-rc.2",
44
"description": "Split JavaScript SDK common components",
55
"main": "cjs/index.js",
66
"module": "esm/index.js",

src/sdkClient/sdkLifecycle.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { releaseApiKey, validateAndTrackApiKey } from '../utils/inputValidation/apiKey';
22
import { ISdkFactoryContext } from '../sdkFactory/types';
3+
import { LOCALHOST_MODE } from '../utils/constants';
34

45
const COOLDOWN_TIME_IN_MILLIS = 1000;
56

@@ -12,7 +13,7 @@ export function sdkLifecycleFactory(params: ISdkFactoryContext, isSharedClient?:
1213
let hasInit = false;
1314
let lastActionTime = 0;
1415

15-
const signalListener = platform.SignalListener && new platform.SignalListener(params);
16+
const signalListener = platform.SignalListener && settings.mode !== LOCALHOST_MODE ? new platform.SignalListener(params) : undefined;
1617

1718
function __cooldown(func: Function, time: number) {
1819
const now = Date.now();

src/sdkFactory/types.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -105,11 +105,7 @@ export interface ISdkFactoryParams {
105105

106106
// Sdk client method factory.
107107
// It Allows to distinguish SDK clients with the client-side API (`IBrowserSDK` and `IBrowserAsyncSDK`) or server-side API (`ISDK` and `IAsyncSDK`).
108-
sdkClientMethodFactory: (params: ISdkFactoryContext) => (
109-
{ (): SplitIO.IBrowserClient & { init(): void }; (key: SplitIO.SplitKey): SplitIO.IBrowserClient & { init(): void }; } |
110-
(() => SplitIO.IClient & { init(): void }) |
111-
(() => SplitIO.IAsyncClient & { init(): void })
112-
)
108+
sdkClientMethodFactory: (params: ISdkFactoryContext) => ({ (): SplitIO.IBrowserClient; (key: SplitIO.SplitKey): SplitIO.IBrowserClient; } | (() => SplitIO.IClient) | (() => SplitIO.IAsyncClient))
113109

114110
// Impression observer factory.
115111
impressionsObserverFactory: () => IImpressionObserver

src/services/__tests__/splitApi.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,10 @@ describe('serviceApi', () => {
4545
assertHeaders(settings, headers);
4646
expect(url).toBe(expectedFlagsUrl(-1, 100, settings.validateFilters || false, settings, -1));
4747

48-
serviceApi.fetchConfigs(-1, false, 100);
48+
serviceApi.fetchConfigs(-1, false, 100, -1);
4949
[url, { headers }] = fetchMock.mock.calls[4];
5050
assertHeaders(settings, headers);
51-
expect(url).toBe(expectedConfigsUrl(-1, 100, settings.validateFilters || false, settings));
51+
expect(url).toBe(expectedConfigsUrl(-1, 100, settings.validateFilters || false, settings, -1));
5252

5353
serviceApi.fetchConfigsSegmentChanges(-1, 'segmentName', false, 100);
5454
[url, { headers }] = fetchMock.mock.calls[5];
@@ -81,9 +81,9 @@ describe('serviceApi', () => {
8181
return `sdk/splitChanges?s=1.1&since=${since}${rbSince ? '&rbSince=' + rbSince : ''}${usesFilter ? filterQueryString : ''}${till ? '&till=' + till : ''}`;
8282
}
8383

84-
function expectedConfigsUrl(since: number, till: number, usesFilter: boolean, settings: ISettings) {
84+
function expectedConfigsUrl(since: number, till: number, usesFilter: boolean, settings: ISettings, rbSince?: number) {
8585
const filterQueryString = settings.sync.__splitFiltersValidation && settings.sync.__splitFiltersValidation.queryString;
86-
return `configs/v1/configs?since=${since}${usesFilter ? filterQueryString : ''}${till ? '&till=' + till : ''}`;
86+
return `configs/v1/configs?since=${since}${rbSince ? '&rbSince=' + rbSince : ''}${usesFilter ? filterQueryString : ''}${till ? '&till=' + till : ''}`;
8787
}
8888
});
8989

src/services/serviceApi.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ export function serviceApiFactory(
7070
},
7171

7272
// @TODO support filterQueryString and handle ERROR_TOO_MANY_SETS error
73-
fetchConfigs(since: number, noCache?: boolean, till?: number) {
74-
const url = `${urls.configs}/api/v1/configs?since=${since}${filterQueryString || ''}${till ? '&till=' + till : ''}`;
73+
fetchConfigs(since: number, noCache?: boolean, till?: number, rbSince?: number) {
74+
const url = `${urls.configs}/api/v1/configs?since=${since}${rbSince ? '&rbSince=' + rbSince : ''}${filterQueryString || ''}${till ? '&till=' + till : ''}`;
7575
return secureSplitHttpClient(url, noCache ? noCacheHeaderOptions : undefined);
7676
},
7777

src/services/splitApi.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,8 @@ export function splitApiFactory(
149149

150150
// Not used. Just here to satisfy the IServiceApi interface.
151151

152-
fetchConfigs(since: number, noCache?: boolean, till?: number) {
153-
const url = `${urls.configs}/v1/configs?since=${since}${filterQueryString || ''}${till ? '&till=' + till : ''}`;
152+
fetchConfigs(since: number, noCache?: boolean, till?: number, rbSince?: number) {
153+
const url = `${urls.configs}/v1/configs?since=${since}${rbSince ? '&rbSince=' + rbSince : ''}${filterQueryString || ''}${till ? '&till=' + till : ''}`;
154154
return splitHttpClient(url, noCache ? noCacheHeaderOptions : undefined);
155155
},
156156

src/storages/inLocalStorage/MySegmentsCacheInLocal.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,10 @@ import { StorageAdapter } from '../types';
88
export class MySegmentsCacheInLocal extends AbstractMySegmentsCacheSync {
99

1010
private readonly keys: MySegmentsKeyBuilder;
11-
private readonly log: ILogger;
1211
private readonly storage: StorageAdapter;
1312

14-
constructor(log: ILogger, keys: MySegmentsKeyBuilder, storage: StorageAdapter) {
13+
constructor(_log: ILogger, keys: MySegmentsKeyBuilder, storage: StorageAdapter) {
1514
super();
16-
this.log = log;
1715
this.keys = keys;
1816
this.storage = storage;
1917
}

src/utils/EventEmitter.d.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import SplitIO from '../../types/splitio';
2+
3+
export declare const EventEmitter: new () => SplitIO.IEventEmitter;

0 commit comments

Comments
 (0)