@@ -2,8 +2,6 @@ import SplitIO from '../../types/splitio';
22
33export type MaybeThenable < T > = T | Promise < T >
44
5- /** Split Matchers */
6-
75export type IMatcherDataType = null | 'DATETIME' | 'NUMBER'
86
97export interface IUnaryNumericMatcherData {
@@ -39,7 +37,7 @@ export interface IDependencyMatcherData {
3937 treatments : string [ ]
4038}
4139
42- interface ISplitMatcherBase {
40+ interface IDefinitionMatcherBase {
4341 matcherType : string
4442 negate ?: boolean
4543 keySelector ?: null | {
@@ -57,144 +55,143 @@ interface ISplitMatcherBase {
5755 betweenStringMatcherData ?: null | IBetweenStringMatcherData
5856}
5957
60- interface IAllKeysMatcher extends ISplitMatcherBase {
58+ interface IAllKeysMatcher extends IDefinitionMatcherBase {
6159 matcherType : 'ALL_KEYS'
6260}
6361
64- interface IInSegmentMatcher extends ISplitMatcherBase {
62+ interface IInSegmentMatcher extends IDefinitionMatcherBase {
6563 matcherType : 'IN_SEGMENT' ,
6664 userDefinedSegmentMatcherData : IInSegmentMatcherData
6765}
6866
69- interface IInRBSegmentMatcher extends ISplitMatcherBase {
67+ interface IInRBSegmentMatcher extends IDefinitionMatcherBase {
7068 matcherType : 'IN_RULE_BASED_SEGMENT' ,
7169 userDefinedSegmentMatcherData : IInSegmentMatcherData
7270}
7371
74- interface IInLargeSegmentMatcher extends ISplitMatcherBase {
72+ interface IInLargeSegmentMatcher extends IDefinitionMatcherBase {
7573 matcherType : 'IN_LARGE_SEGMENT' ,
7674 userDefinedLargeSegmentMatcherData : IInLargeSegmentMatcherData
7775}
7876
79- interface IWhitelistMatcher extends ISplitMatcherBase {
77+ interface IWhitelistMatcher extends IDefinitionMatcherBase {
8078 matcherType : 'WHITELIST' ,
8179 whitelistMatcherData : IWhitelistMatcherData
8280}
8381
84- interface IEqualToMatcher extends ISplitMatcherBase {
82+ interface IEqualToMatcher extends IDefinitionMatcherBase {
8583 matcherType : 'EQUAL_TO' ,
8684 unaryNumericMatcherData : IUnaryNumericMatcherData
8785}
8886
89- interface IGreaterThanOrEqualToMatcher extends ISplitMatcherBase {
87+ interface IGreaterThanOrEqualToMatcher extends IDefinitionMatcherBase {
9088 matcherType : 'GREATER_THAN_OR_EQUAL_TO' ,
9189 unaryNumericMatcherData : IUnaryNumericMatcherData
9290}
9391
94- interface ILessThanOrEqualToMatcher extends ISplitMatcherBase {
92+ interface ILessThanOrEqualToMatcher extends IDefinitionMatcherBase {
9593 matcherType : 'LESS_THAN_OR_EQUAL_TO' ,
9694 unaryNumericMatcherData : IUnaryNumericMatcherData
9795}
9896
99- interface IBetweenMatcher extends ISplitMatcherBase {
97+ interface IBetweenMatcher extends IDefinitionMatcherBase {
10098 matcherType : 'BETWEEN'
10199 betweenMatcherData : IBetweenMatcherData
102100}
103101
104- interface IEqualToSetMatcher extends ISplitMatcherBase {
102+ interface IEqualToSetMatcher extends IDefinitionMatcherBase {
105103 matcherType : 'EQUAL_TO_SET' ,
106104 whitelistMatcherData : IWhitelistMatcherData
107105}
108106
109- interface IContainsAnyOfSetMatcher extends ISplitMatcherBase {
107+ interface IContainsAnyOfSetMatcher extends IDefinitionMatcherBase {
110108 matcherType : 'CONTAINS_ANY_OF_SET' ,
111109 whitelistMatcherData : IWhitelistMatcherData
112110}
113111
114- interface IContainsAllOfSetMatcher extends ISplitMatcherBase {
112+ interface IContainsAllOfSetMatcher extends IDefinitionMatcherBase {
115113 matcherType : 'CONTAINS_ALL_OF_SET' ,
116114 whitelistMatcherData : IWhitelistMatcherData
117115}
118116
119- interface IPartOfSetMatcher extends ISplitMatcherBase {
117+ interface IPartOfSetMatcher extends IDefinitionMatcherBase {
120118 matcherType : 'PART_OF_SET' ,
121119 whitelistMatcherData : IWhitelistMatcherData
122120}
123121
124- interface IStartsWithMatcher extends ISplitMatcherBase {
122+ interface IStartsWithMatcher extends IDefinitionMatcherBase {
125123 matcherType : 'STARTS_WITH' ,
126124 whitelistMatcherData : IWhitelistMatcherData
127125}
128126
129- interface IEndsWithMatcher extends ISplitMatcherBase {
127+ interface IEndsWithMatcher extends IDefinitionMatcherBase {
130128 matcherType : 'ENDS_WITH' ,
131129 whitelistMatcherData : IWhitelistMatcherData
132130}
133131
134- interface IContainsStringMatcher extends ISplitMatcherBase {
132+ interface IContainsStringMatcher extends IDefinitionMatcherBase {
135133 matcherType : 'CONTAINS_STRING' ,
136134 whitelistMatcherData : IWhitelistMatcherData
137135}
138136
139- interface IInSplitTreatmentMatcher extends ISplitMatcherBase {
137+ interface IInSplitTreatmentMatcher extends IDefinitionMatcherBase {
140138 matcherType : 'IN_SPLIT_TREATMENT' ,
141139 dependencyMatcherData : IDependencyMatcherData ,
142140}
143141
144- interface IEqualToBooleanMatcher extends ISplitMatcherBase {
142+ interface IEqualToBooleanMatcher extends IDefinitionMatcherBase {
145143 matcherType : 'EQUAL_TO_BOOLEAN' ,
146144 booleanMatcherData : boolean
147145}
148146
149- interface IMatchesStringMatcher extends ISplitMatcherBase {
147+ interface IMatchesStringMatcher extends IDefinitionMatcherBase {
150148 matcherType : 'MATCHES_STRING' ,
151149 stringMatcherData : string
152150}
153151
154- interface IEqualToSemverMatcher extends ISplitMatcherBase {
152+ interface IEqualToSemverMatcher extends IDefinitionMatcherBase {
155153 matcherType : 'EQUAL_TO_SEMVER' ,
156154 stringMatcherData : string
157155}
158156
159- interface IGreaterThanOrEqualToSemverMatcher extends ISplitMatcherBase {
157+ interface IGreaterThanOrEqualToSemverMatcher extends IDefinitionMatcherBase {
160158 matcherType : 'GREATER_THAN_OR_EQUAL_TO_SEMVER' ,
161159 stringMatcherData : string
162160}
163161
164162
165- interface ILessThanOrEqualToSemverMatcher extends ISplitMatcherBase {
163+ interface ILessThanOrEqualToSemverMatcher extends IDefinitionMatcherBase {
166164 matcherType : 'LESS_THAN_OR_EQUAL_TO_SEMVER' ,
167165 stringMatcherData : string
168166}
169167
170- interface IBetweenSemverMatcher extends ISplitMatcherBase {
168+ interface IBetweenSemverMatcher extends IDefinitionMatcherBase {
171169 matcherType : 'BETWEEN_SEMVER'
172170 betweenStringMatcherData : IBetweenStringMatcherData
173171}
174172
175- interface IInListSemverMatcher extends ISplitMatcherBase {
173+ interface IInListSemverMatcher extends IDefinitionMatcherBase {
176174 matcherType : 'IN_LIST_SEMVER' ,
177175 whitelistMatcherData : IWhitelistMatcherData
178176}
179177
180- export type ISplitMatcher = IAllKeysMatcher | IInSegmentMatcher | IWhitelistMatcher | IEqualToMatcher | IGreaterThanOrEqualToMatcher |
178+ export type IDefinitionMatcher = IAllKeysMatcher | IInSegmentMatcher | IWhitelistMatcher | IEqualToMatcher | IGreaterThanOrEqualToMatcher |
181179 ILessThanOrEqualToMatcher | IBetweenMatcher | IEqualToSetMatcher | IContainsAnyOfSetMatcher | IContainsAllOfSetMatcher | IPartOfSetMatcher |
182180 IStartsWithMatcher | IEndsWithMatcher | IContainsStringMatcher | IInSplitTreatmentMatcher | IEqualToBooleanMatcher | IMatchesStringMatcher |
183181 IEqualToSemverMatcher | IGreaterThanOrEqualToSemverMatcher | ILessThanOrEqualToSemverMatcher | IBetweenSemverMatcher | IInListSemverMatcher |
184182 IInLargeSegmentMatcher | IInRBSegmentMatcher
185183
186- /** Split object */
187- export interface ISplitPartition {
184+ export interface IDefinitionPartition {
188185 treatment : string
189186 size : number
190187}
191188
192- export interface ISplitCondition {
189+ export interface IDefinitionCondition {
193190 matcherGroup : {
194191 combiner : 'AND' ,
195- matchers : ISplitMatcher [ ]
192+ matchers : IDefinitionMatcher [ ]
196193 }
197- partitions ?: ISplitPartition [ ]
194+ partitions ?: IDefinitionPartition [ ]
198195 label ?: string
199196 conditionType ?: 'ROLLOUT' | 'WHITELIST'
200197}
@@ -204,49 +201,46 @@ export interface IExcludedSegment {
204201 name : string ,
205202}
206203
207- export interface IRBSegment {
208- name : string ,
209- changeNumber : number ,
210- status ?: 'ACTIVE' | 'ARCHIVED' ,
211- conditions ?: ISplitCondition [ ] | null ,
204+ export interface TargetingEntity {
205+ name : string ;
206+ // Properties required for evaluation
207+ changeNumber : number ;
208+ status : 'ACTIVE' | 'ARCHIVED' ;
209+ conditions : IDefinitionCondition [ ] ;
210+ }
211+
212+ export interface IRBSegment extends TargetingEntity {
212213 excluded ?: {
213214 keys ?: string [ ] | null ,
214215 segments ?: IExcludedSegment [ ] | null
215216 } | null
216217}
217218
218- // @TODO : rename to IDefinition (Configs and Feature Flags are definitions)
219- export interface ISplit {
220- name : string ,
221- changeNumber : number ,
222- status ?: 'ACTIVE' | 'ARCHIVED' ,
223- conditions : ISplitCondition [ ] ,
219+ export interface IDefinition extends TargetingEntity {
220+ trafficTypeName : string ;
221+ sets ?: string [ ] ;
222+ impressionsDisabled ?: boolean ;
223+ // Properties required for evaluation
224224 prerequisites ?: null | {
225225 n : string ,
226226 ts : string [ ]
227- } [ ]
228- killed : boolean ,
229- defaultTreatment : string ,
230- trafficTypeName : string ,
231- seed : number ,
232- trafficAllocation ?: number ,
233- trafficAllocationSeed ?: number
227+ } [ ] ;
228+ killed : boolean ;
229+ defaultTreatment : string ;
230+ seed : number ;
231+ trafficAllocation ?: number ;
232+ trafficAllocationSeed ?: number ;
234233 configurations ?: {
235234 [ treatmentName : string ] : string | SplitIO . JsonObject
236- } ,
237- sets ?: string [ ] ,
238- impressionsDisabled ?: boolean
235+ } ;
239236}
240237
241- // Split definition used in offline mode
242- export type ISplitPartial = Pick < ISplit , 'conditions' | 'configurations' | 'trafficTypeName' >
243-
244238/** Interface of the parsed JSON response of `/splitChanges` */
245- export interface ISplitChangesResponse {
239+ export interface IDefinitionChangesResponse {
246240 ff ?: {
247241 t : number ,
248242 s ?: number ,
249- d : ISplit [ ]
243+ d : IDefinition [ ]
250244 } ,
251245 rbs ?: {
252246 t : number ,
0 commit comments