Skip to content

Commit f398ca8

Browse files
Merge pull request #458 from splitio/fme-11995
Handle nullish prerequisites
2 parents eaf04b8 + b05b6d8 commit f398ca8

File tree

7 files changed

+28
-6045
lines changed

7 files changed

+28
-6045
lines changed

.nvmrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
lts/*
1+
22

CHANGES.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
2.10.1 (December 18, 2025)
2+
- Bugfix - Handle `null` prerequisites properly
3+
14
2.10.0 (December 16, 2025)
25
- Added property `impressionsDisabled` in getTreatment(s) `evaluationOptions` parameter, to disable impressions per evaluations.
36

package-lock.json

Lines changed: 16 additions & 6041 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": "2.10.0",
3+
"version": "2.10.1",
44
"description": "Split JavaScript SDK common components",
55
"main": "cjs/index.js",
66
"module": "esm/index.js",

src/dtos/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ export interface ISplit {
220220
changeNumber: number,
221221
status: 'ACTIVE' | 'ARCHIVED',
222222
conditions: ISplitCondition[],
223-
prerequisites?: {
223+
prerequisites?: null | {
224224
n: string,
225225
ts: string[]
226226
}[]

src/evaluator/matchers/__tests__/prerequisites.spec.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@ test('MATCHER PREREQUISITES / Edge cases', () => {
7373
const matcherTrueNoPrerequisites = prerequisitesMatcherContext(undefined, mockStorage, loggerMock);
7474
expect(matcherTrueNoPrerequisites({ key: 'a-key' }, evaluateFeature)).toBe(true);
7575

76+
const matcherTruePrerequisitesNull = prerequisitesMatcherContext(null, mockStorage, loggerMock);
77+
expect(matcherTruePrerequisitesNull({ key: 'a-key' }, evaluateFeature)).toBe(true);
78+
7679
const matcherTrueEmptyPrerequisites = prerequisitesMatcherContext([], mockStorage, loggerMock);
7780
expect(matcherTrueEmptyPrerequisites({ key: 'a-key' }, evaluateFeature)).toBe(true);
7881

src/evaluator/matchers/prerequisites.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@ import { ILogger } from '../../logger/types';
44
import { thenable } from '../../utils/promise/thenable';
55
import { IDependencyMatcherValue, ISplitEvaluator } from '../types';
66

7-
export function prerequisitesMatcherContext(prerequisites: ISplit['prerequisites'] = [], storage: IStorageSync | IStorageAsync, log: ILogger) {
7+
export function prerequisitesMatcherContext(prerequisites: ISplit['prerequisites'], storage: IStorageSync | IStorageAsync, log: ILogger) {
88

99
return function prerequisitesMatcher({ key, attributes }: IDependencyMatcherValue, splitEvaluator: ISplitEvaluator): MaybeThenable<boolean> {
1010

11+
prerequisites = prerequisites == null ? [] : prerequisites;
12+
1113
function evaluatePrerequisite(prerequisite: { n: string; ts: string[] }): MaybeThenable<boolean> {
1214
const evaluation = splitEvaluator(log, key, prerequisite.n, attributes, storage);
1315
return thenable(evaluation) ?

0 commit comments

Comments
 (0)