Skip to content

[Rule-based segments] #397

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 94 commits into from
May 27, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
94 commits
Select commit Hold shift + click to select a range
54e9e86
Add RBSegmentsCache interface and implementations
EmilianoSanchez Feb 26, 2025
22cee22
Add RBSegmentsCache interface and implement redis and pluggable caches
EmilianoSanchez Feb 26, 2025
978ad74
Merge branch 'rb_segments_storage_consumer_mode' into rb_segments_sto…
EmilianoSanchez Feb 26, 2025
a57b082
Unit tests
EmilianoSanchez Feb 26, 2025
53b2073
Rename method
EmilianoSanchez Feb 26, 2025
261b86e
Unit tests
EmilianoSanchez Feb 27, 2025
197469d
Merge branch 'rb_segments_storage_consumer_mode' into rb_segments_sto…
EmilianoSanchez Feb 27, 2025
e22b286
Update unit tests
EmilianoSanchez Feb 27, 2025
67a164b
Update splitChangesUpdater, splitChangesFetcher and related types
EmilianoSanchez Feb 27, 2025
0e415d5
Fix unit tests
EmilianoSanchez Feb 27, 2025
9cec7a1
Add unit tests
EmilianoSanchez Feb 27, 2025
988003b
Merge pull request #390 from splitio/rb_segments_storage_consumer_mode
EmilianoSanchez Feb 28, 2025
bd0294e
Merge pull request #391 from splitio/rb_segments_storage_standalone_mode
EmilianoSanchez Feb 28, 2025
a242745
Types polishing
EmilianoSanchez Feb 28, 2025
22b872c
Merge branch 'rb_segments_baseline' into rb_segments_splitschanges_up…
EmilianoSanchez Feb 28, 2025
bef9252
Types polishing
EmilianoSanchez Mar 5, 2025
90697da
Merge branch 'rb_segments_baseline' into rb_segments_splitschanges_up…
EmilianoSanchez Mar 5, 2025
680b82d
Update fetchSplitChanges method with rbSince param
EmilianoSanchez Mar 5, 2025
17bbd36
Merge pull request #392 from splitio/rb_segments_splitschanges_updater
EmilianoSanchez Mar 5, 2025
1cecdf8
Handle RBSEGMENT_UPDATE notification
EmilianoSanchez Mar 5, 2025
ebc547a
Unit test
EmilianoSanchez Mar 5, 2025
598c0d4
Update flag spec version
EmilianoSanchez Mar 5, 2025
b6f5514
Rename notification type
EmilianoSanchez Mar 6, 2025
781d8ce
Refactor usesSegments method and SplitsUpdateWorker
EmilianoSanchez Mar 7, 2025
3e2e2a9
Merge pull request #393 from splitio/rb_segments_streaming
EmilianoSanchez Mar 7, 2025
9f507fe
Update types and support evaluation for rule-based segments, i.e., wi…
EmilianoSanchez Mar 7, 2025
51ca496
Add rule-based segment matcher
EmilianoSanchez Mar 10, 2025
6606b66
Refactor Engine class into engineParser function for improved clarity…
EmilianoSanchez Mar 11, 2025
fc5ecd5
Add prerequisites support to ISplit and enhance engineParser for prer…
EmilianoSanchez Mar 11, 2025
d67582d
Add debug logging for prerequisite evaluation
EmilianoSanchez Mar 11, 2025
d93091d
New label
EmilianoSanchez Mar 11, 2025
77d44b6
Add prerequisites field to SplitView
EmilianoSanchez Mar 11, 2025
fe893b0
Implement prerequisites matcher and refactor engineParser for prerequ…
EmilianoSanchez Mar 11, 2025
d4f67a4
Merge pull request #394 from splitio/rb_segments_evaluator
EmilianoSanchez Mar 12, 2025
c25731b
Merge branch 'rb_segments_baseline' into rb_segments_matcher
EmilianoSanchez Mar 17, 2025
aee2631
Reuse FF mocks
EmilianoSanchez Mar 17, 2025
fada384
Polishing
EmilianoSanchez Mar 18, 2025
a5e0d3b
Polishing
EmilianoSanchez Mar 18, 2025
f2b18df
Refactor SplitsUpdateWorker to force sync based on splits and rbSegme…
EmilianoSanchez Mar 18, 2025
58747c5
Rename parameter in buildRBSegmentKey for clarity
EmilianoSanchez Mar 18, 2025
7f83681
Merge pull request #395 from splitio/rb_segments_matcher
EmilianoSanchez Mar 18, 2025
dbf210d
Merge branch 'rb_segments_baseline' into rb_segments_force_sync
EmilianoSanchez Mar 18, 2025
cf8c517
Refactor test function syntax to use arrow functions for consistency
EmilianoSanchez Mar 18, 2025
4ad1802
Merge branch 'rb_segments_baseline' into rb_segments_force_sync
EmilianoSanchez Mar 18, 2025
a40ab68
Remove unused import
EmilianoSanchez Mar 19, 2025
1194603
Merge branch 'rb_segments_baseline' into rb_segments_force_sync
EmilianoSanchez Mar 19, 2025
454f6c4
rc
EmilianoSanchez Mar 20, 2025
9a32b91
Merge pull request #399 from splitio/rb_segments_force_sync
EmilianoSanchez Mar 27, 2025
0108f5f
Merge branch 'rb_segments_baseline' into prerequisites_refactors
EmilianoSanchez Mar 27, 2025
a2d4615
Merge branch 'main' into rb_segments_baseline
EmilianoSanchez Apr 1, 2025
ea66074
Fix tests
EmilianoSanchez Apr 1, 2025
cec23c8
make IRBSegment conditions and excluded properties optional
EmilianoSanchez Apr 3, 2025
fc2e7b4
Add changelog entry
EmilianoSanchez Apr 3, 2025
eb84a92
Merge branch 'rb_segments_baseline' into prerequisites_refactors
EmilianoSanchez Apr 3, 2025
7baee32
Merge branch 'rb_segments_polishing' into prerequisites_refactors
EmilianoSanchez Apr 3, 2025
5b056eb
Cache expiration for rbSegments
EmilianoSanchez Apr 3, 2025
00e9473
Merge branch 'rb_segments_polishing' into prerequisites_refactors
EmilianoSanchez Apr 3, 2025
65ae7b1
Unit tests
EmilianoSanchez Apr 3, 2025
d0a0986
Update changelog entry
EmilianoSanchez Apr 4, 2025
6bb988c
Update splitChangesFetcher to handle proxy error with spec v1.3
EmilianoSanchez Apr 14, 2025
a934d95
Test update
EmilianoSanchez Apr 14, 2025
2228b93
Merge pull request #402 from splitio/rb_segments_polishing
EmilianoSanchez Apr 14, 2025
2d1628d
Merge branch 'rb_segments_baseline' into rb_segments_proxy_fallback
EmilianoSanchez Apr 14, 2025
8429d40
Implementation fixes
EmilianoSanchez Apr 15, 2025
1118e49
Add logs
EmilianoSanchez Apr 15, 2025
2a360eb
Merge branch 'rb_segments_proxy_fallback' into prerequisites_refactors
EmilianoSanchez Apr 15, 2025
280ed6e
rc
EmilianoSanchez Apr 15, 2025
062394b
Merge pull request #403 from splitio/rb_segments_proxy_fallback
EmilianoSanchez Apr 15, 2025
2083e00
rc
EmilianoSanchez Apr 15, 2025
ee47067
RBS excluded segments
ZamoraEmmanuel Apr 30, 2025
b68991a
use ternary operator and truthiness casting
ZamoraEmmanuel May 2, 2025
8847e72
Fix SplitsCacheInMemory::clear method, to clear flag sets cache
EmilianoSanchez May 7, 2025
e352043
Proxy recovery: clear after fetch
EmilianoSanchez May 8, 2025
c17760b
Merge branch 'development' into rb_segments_baseline
EmilianoSanchez May 8, 2025
b59b098
Merge branch 'rb_segments_baseline' into rb_excluded_segments
EmilianoSanchez May 8, 2025
688a8ff
Add support for large and rule-based segments in exclusion rules
EmilianoSanchez May 8, 2025
5c9c743
Filter segments by type when parsing split and RBS definitions
EmilianoSanchez May 8, 2025
79a46be
Merge pull request #406 from splitio/rb_excluded_segments
EmilianoSanchez May 8, 2025
3046752
refactor: use segment type constants instead of string literals
EmilianoSanchez May 9, 2025
5fc787c
refactor: optimize rule-based segment matcher
EmilianoSanchez May 9, 2025
1324e9f
Merge branch 'development' into rb_segments_baseline
EmilianoSanchez May 9, 2025
bfcd0c4
rc
EmilianoSanchez May 9, 2025
f44e307
Bug fixes
EmilianoSanchez May 9, 2025
2a0851c
Polishing
EmilianoSanchez May 9, 2025
b8bb5df
Polishing
EmilianoSanchez May 9, 2025
13f2dcf
Merge pull request #409 from splitio/rb_segments_fixes
EmilianoSanchez May 9, 2025
53a4699
rc
EmilianoSanchez May 9, 2025
287d94e
stable version
EmilianoSanchez May 14, 2025
9c1de66
Merge branch 'development' into rb_segments_baseline
EmilianoSanchez May 19, 2025
a176436
Merge branch 'rb_segments_baseline' into prerequisites_refactors
EmilianoSanchez May 19, 2025
e660afe
Remove type assertion
EmilianoSanchez May 19, 2025
68590fa
Stable version
EmilianoSanchez May 27, 2025
065461f
Merge pull request #396 from splitio/prerequisites_refactors
EmilianoSanchez May 27, 2025
2d87fbc
Update changelog entry
EmilianoSanchez May 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
uses: actions/checkout@v4

- name: Set up nodejs
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 'lts/*'
cache: 'npm'
Expand Down
4 changes: 4 additions & 0 deletions CHANGES.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
2.4.0 (May 27, 2025)
- Added support for rule-based segments. These segments determine membership at runtime by evaluating their configured rules against the user attributes provided to the SDK.
- Added support for feature flag prerequisites. This allows customers to define dependency conditions between flags, which are evaluated before any allowlists or targeting rules.

2.3.0 (May 16, 2025)
- Updated the Redis storage to:
- Avoid lazy require of the `ioredis` dependency when the SDK is initialized, and
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ Split has built and maintains SDKs for:
* .NET [Github](https://github.com/splitio/dotnet-client) [Docs](https://help.split.io/hc/en-us/articles/360020240172--NET-SDK)
* Android [Github](https://github.com/splitio/android-client) [Docs](https://help.split.io/hc/en-us/articles/360020343291-Android-SDK)
* Angular [Github](https://github.com/splitio/angular-sdk-plugin) [Docs](https://help.split.io/hc/en-us/articles/6495326064397-Angular-utilities)
* Elixir thin-client [Github](https://github.com/splitio/elixir-thin-client) [Docs](https://help.split.io/hc/en-us/articles/26988707417869-Elixir-Thin-Client-SDK)
* Flutter [Github](https://github.com/splitio/flutter-sdk-plugin) [Docs](https://help.split.io/hc/en-us/articles/8096158017165-Flutter-plugin)
* GO [Github](https://github.com/splitio/go-client) [Docs](https://help.split.io/hc/en-us/articles/360020093652-Go-SDK)
* iOS [Github](https://github.com/splitio/ios-client) [Docs](https://help.split.io/hc/en-us/articles/360020401491-iOS-SDK)
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@splitsoftware/splitio-commons",
"version": "2.3.0",
"version": "2.4.0",
"description": "Split JavaScript SDK common components",
"main": "cjs/index.js",
"module": "esm/index.js",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"type": "message",
"data": "{\"id\":\"mc4i3NENoA:0:0\",\"clientId\":\"NDEzMTY5Mzg0MA==:MTM2ODE2NDMxNA==\",\"timestamp\":1457552621899,\"encoding\":\"json\",\"channel\":\"NzM2MDI5Mzc0_NDEzMjQ1MzA0Nw==_splits\",\"data\":\"{\\\"type\\\":\\\"RB_SEGMENT_UPDATE\\\",\\\"changeNumber\\\":1457552620999}\"}"
}
Loading