Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
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 .gitmodules
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[submodule "tests/engine/engine-tests/engine-test-data"]
path = tests/engine/engine-tests/engine-test-data
url = [email protected]:Flagsmith/engine-test-data.git
branch = v1.0.0
branch = v2.5.0
1 change: 1 addition & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

npm run generate-engine-types
npm run lint
git add ./flagsmith-engine ./sdk ./tests ./index.ts ./.github
npm run test
Original file line number Diff line number Diff line change
@@ -0,0 +1,252 @@
/* eslint-disable */
/**
* This file was automatically generated by json-schema-to-typescript.
* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
* and run json-schema-to-typescript to regenerate this file.
*/

/**
* An environment's unique identifier.
*/
export type Key = string;
/**
* An environment's human-readable name.
*/
export type Name = string;
/**
* A unique identifier for an identity, used for segment and multivariate feature flag targeting, and displayed in the Flagsmith UI.
*/
export type Identifier = string;
/**
* Key used when selecting a value for a multivariate feature, or for % split segmentation. Set to an internal identifier or a composite value based on the environment key and identifier, depending on Flagsmith implementation.
*/
export type Key1 = string;
/**
* Key used for % split segmentation.
*/
export type Key2 = string;
/**
* The name of the segment.
*/
export type Name1 = string;
/**
* Segment rule type. Represents a logical quantifier for the conditions and sub-rules.
*/
export type Type = 'ALL' | 'ANY' | 'NONE';
export type SegmentCondition = SegmentCondition1 | InSegmentCondition;
/**
* A reference to the identity trait or value in the evaluation context.
*/
export type Property = string;
/**
* The operator to use for evaluating the condition.
*/
export type Operator =
| 'EQUAL'
| 'GREATER_THAN'
| 'LESS_THAN'
| 'LESS_THAN_INCLUSIVE'
| 'CONTAINS'
| 'GREATER_THAN_INCLUSIVE'
| 'NOT_CONTAINS'
| 'NOT_EQUAL'
| 'REGEX'
| 'PERCENTAGE_SPLIT'
| 'MODULO'
| 'IS_SET'
| 'IS_NOT_SET'
| 'IN';
/**
* The value to compare against the trait or context value.
*/
export type Value = string;
/**
* A reference to the identity trait or value in the evaluation context.
*/
export type Property1 = string;
/**
* The operator to use for evaluating the condition.
*/
export type Operator1 = 'IN';
/**
* The values to compare against the trait or context value.
*/
export type Value1 = string[];
/**
* Conditions that must be met for the rule to apply.
*/
export type Conditions = SegmentCondition[];
/**
* Sub-rules nested within the segment rule.
*/
export type SubRules = SegmentRule[];
/**
* Rules that define the segment.
*/
export type Rules = SegmentRule[];
/**
* Key used when selecting a value for a multivariate feature. Set to an internal identifier or a UUID, depending on Flagsmith implementation.
*/
export type Key3 = string;
/**
* Unique feature identifier.
*/
export type FeatureKey = string;
/**
* Feature name.
*/
export type Name2 = string;
/**
* Indicates whether the feature is enabled in the environment.
*/
export type Enabled = boolean;
/**
* A default environment value for the feature. If the feature is multivariate, this will be the control value.
*/
export type Value2 = string | number | boolean | null;
/**
* The value of the feature.
*/
export type Value3 = string | number | boolean | null;
/**
* The weight of the feature value variant, as a percentage number (i.e. 100.0).
*/
export type Weight = number;
/**
* Priority of the feature flag variant. Lower values indicate a higher priority when multiple variants apply to the same context key.
*/
export type VariantPriority = number;
/**
* An array of environment default values associated with the feature. Empty for standard features, or contains multiple values for multivariate features.
*/
export type Variants = FeatureValue[];
/**
* Priority of the feature context. Lower values indicate a higher priority when multiple contexts apply to the same feature.
*/
export type FeaturePriority = number;
/**
* Feature overrides for the segment.
*/
export type Overrides = FeatureContext[];

/**
* A context object containing the necessary information to evaluate Flagsmith feature flags.
*/
export interface EvaluationContext {
environment: EnvironmentContext;
/**
* Identity context used for identity-based evaluation.
*/
identity?: IdentityContext | null;
segments?: Segments;
features?: Features;
[k: string]: unknown;
}
/**
* Environment context required for evaluation.
*/
export interface EnvironmentContext {
key: Key;
name: Name;
[k: string]: unknown;
}
/**
* Represents an identity context for feature flag evaluation.
*/
export interface IdentityContext {
identifier: Identifier;
key: Key1;
traits?: Traits;
[k: string]: unknown;
}
/**
* A map of traits associated with the identity, where the key is the trait name and the value is the trait value.
*/
export interface Traits {
[k: string]: string | number | boolean | null;
}
/**
* Segments applicable to the evaluation context.
*/
export interface Segments {
[k: string]: SegmentContext;
}
/**
* Represents a segment context for feature flag evaluation.
*/
export interface SegmentContext {
key: Key2;
name: Name1;
rules: Rules;
overrides?: Overrides;
metadata?: SegmentMetadata;
[k: string]: unknown;
}
/**
* Represents a rule within a segment for feature flag evaluation.
*/
export interface SegmentRule {
type: Type;
conditions?: Conditions;
rules?: SubRules;
[k: string]: unknown;
}
/**
* Represents a condition within a segment rule for feature flag evaluation.
*/
export interface SegmentCondition1 {
property: Property;
operator: Operator;
value: Value;
[k: string]: unknown;
}
/**
* Represents an IN condition within a segment rule for feature flag evaluation.
*/
export interface InSegmentCondition {
property: Property1;
operator: Operator1;
value: Value1;
[k: string]: unknown;
}
/**
* Represents a feature context for feature flag evaluation.
*/
export interface FeatureContext {
key: Key3;
feature_key: FeatureKey;
name: Name2;
enabled: Enabled;
value: Value2;
variants?: Variants;
priority?: FeaturePriority;
metadata?: FeatureMetadata;
[k: string]: unknown;
}
/**
* Represents a multivariate value for a feature flag.
*/
export interface FeatureValue {
value: Value3;
weight: Weight;
priority: VariantPriority;
[k: string]: unknown;
}
/**
* Additional metadata associated with the feature.
*/
export interface FeatureMetadata {
[k: string]: unknown;
}
/**
* Additional metadata associated with the segment.
*/
export interface SegmentMetadata {
[k: string]: unknown;
}
/**
* Features to be evaluated in the context.
*/
export interface Features {
[k: string]: FeatureContext;
}
Loading