UNPKG

@launchdarkly/js-server-sdk-common

Version:
68 lines 2.81 kB
/** * A builder for feature flag rules to be used with {@link TestDataFlagBuilder}. * * In the LaunchDarkly model, a flag can have any number of rules, and * a rule can have any number of clauses. A clause is an individual test * such as "name is 'X'". A rule matches a user if all of the rule's * clauses match the user. * * To start defining a rule, use one of the flag builder's matching methods * such as `ifMatch`. This defines the first clause for the rule. Optionally, * you may add more clauses with the rule builder's methods such as `andMatch`. * Finally, call `thenReturn` to finish defining the rule. */ export default class TestDataRuleBuilder<BuilderType> { private readonly _flagBuilder; private _clauses; private _variation?; /** * Adds another clause using the "is one of" operator. * * For example, this creates a rule that returns `true` if the name is * "Patsy" and the country is "gb": * * testData.flag('flag') * .ifMatch('name', 'Patsy') * .andMatch('country', 'gb') * .thenReturn(true) * * @param contextKind the kind of the context * @param attribute the user attribute to match against * @param values values to compare to * @return the flag rule builder */ andMatch(contextKind: string, attribute: string, ...values: any): TestDataRuleBuilder<BuilderType>; /** * Adds another clause using the "is not one of" operator. * * For example, this creates a rule that returns `true` if the name is * "Patsy" and the country is not "gb": * * testData.flag('flag') * .ifMatch('name', 'Patsy') * .andNotMatch('country', 'gb') * .thenReturn(true) * * @param contextKind the kind of the context * @param attribute the user attribute to match against * @param values values to compare to * @return the flag rule builder */ andNotMatch(contextKind: string, attribute: string, ...values: any): TestDataRuleBuilder<BuilderType>; /** * Finishes defining the rule, specifying the result value as either a boolean or an index * * If the variation is a boolean value and the flag was not already a boolean * flag, this also changes it to be a boolean flag. * * If the variation is an integer, it specifies a variation out of whatever * variation values have already been defined. * * @param variation * either `true` or `false` or the index of the desired variation: * 0 for the first, 1 for the second, etc. * @return the flag rule builder */ thenReturn(variation: number | boolean): BuilderType; } //# sourceMappingURL=TestDataRuleBuilder.d.ts.map