@contractspec/lib.feature-flags 1.57.0 → 1.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/browser/contracts/index.js +636 -0
  2. package/dist/browser/docs/feature-flags.docblock.js +71 -0
  3. package/dist/browser/docs/index.js +71 -0
  4. package/dist/browser/entities/index.js +306 -0
  5. package/dist/browser/evaluation/index.js +223 -0
  6. package/dist/browser/events.js +296 -0
  7. package/dist/browser/feature-flags.capability.js +28 -0
  8. package/dist/browser/feature-flags.feature.js +55 -0
  9. package/dist/browser/index.js +1583 -0
  10. package/dist/contracts/index.d.ts +944 -950
  11. package/dist/contracts/index.d.ts.map +1 -1
  12. package/dist/contracts/index.js +635 -906
  13. package/dist/docs/feature-flags.docblock.d.ts +2 -1
  14. package/dist/docs/feature-flags.docblock.d.ts.map +1 -0
  15. package/dist/docs/feature-flags.docblock.js +18 -22
  16. package/dist/docs/index.d.ts +2 -1
  17. package/dist/docs/index.d.ts.map +1 -0
  18. package/dist/docs/index.js +72 -1
  19. package/dist/entities/index.d.ts +159 -164
  20. package/dist/entities/index.d.ts.map +1 -1
  21. package/dist/entities/index.js +297 -315
  22. package/dist/evaluation/index.d.ts +119 -122
  23. package/dist/evaluation/index.d.ts.map +1 -1
  24. package/dist/evaluation/index.js +215 -212
  25. package/dist/events.d.ts +480 -486
  26. package/dist/events.d.ts.map +1 -1
  27. package/dist/events.js +272 -511
  28. package/dist/feature-flags.capability.d.ts +2 -7
  29. package/dist/feature-flags.capability.d.ts.map +1 -1
  30. package/dist/feature-flags.capability.js +29 -25
  31. package/dist/feature-flags.feature.d.ts +1 -6
  32. package/dist/feature-flags.feature.d.ts.map +1 -1
  33. package/dist/feature-flags.feature.js +54 -146
  34. package/dist/index.d.ts +7 -6
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +1584 -8
  37. package/dist/node/contracts/index.js +636 -0
  38. package/dist/node/docs/feature-flags.docblock.js +71 -0
  39. package/dist/node/docs/index.js +71 -0
  40. package/dist/node/entities/index.js +306 -0
  41. package/dist/node/evaluation/index.js +223 -0
  42. package/dist/node/events.js +296 -0
  43. package/dist/node/feature-flags.capability.js +28 -0
  44. package/dist/node/feature-flags.feature.js +55 -0
  45. package/dist/node/index.js +1583 -0
  46. package/package.json +117 -30
  47. package/dist/contracts/index.js.map +0 -1
  48. package/dist/docs/feature-flags.docblock.js.map +0 -1
  49. package/dist/entities/index.js.map +0 -1
  50. package/dist/evaluation/index.js.map +0 -1
  51. package/dist/events.js.map +0 -1
  52. package/dist/feature-flags.capability.js.map +0 -1
  53. package/dist/feature-flags.feature.js.map +0 -1
@@ -1,109 +1,108 @@
1
- //#region src/evaluation/index.d.ts
2
1
  /**
3
2
  * Feature flag evaluation engine.
4
3
  *
5
4
  * Provides deterministic evaluation of feature flags based on targeting rules
6
5
  * and experiment assignments.
7
6
  */
8
- interface EvaluationContext {
9
- /** User identifier */
10
- userId?: string;
11
- /** Organization identifier */
12
- orgId?: string;
13
- /** User's plan (free, pro, enterprise, etc.) */
14
- plan?: string;
15
- /** User segment or cohort */
16
- segment?: string;
17
- /** Session identifier for anonymous users */
18
- sessionId?: string;
19
- /** Additional custom attributes */
20
- attributes?: Record<string, unknown>;
7
+ export interface EvaluationContext {
8
+ /** User identifier */
9
+ userId?: string;
10
+ /** Organization identifier */
11
+ orgId?: string;
12
+ /** User's plan (free, pro, enterprise, etc.) */
13
+ plan?: string;
14
+ /** User segment or cohort */
15
+ segment?: string;
16
+ /** Session identifier for anonymous users */
17
+ sessionId?: string;
18
+ /** Additional custom attributes */
19
+ attributes?: Record<string, unknown>;
21
20
  }
22
- interface FeatureFlag {
23
- id: string;
24
- key: string;
25
- status: 'OFF' | 'ON' | 'GRADUAL';
26
- defaultValue: boolean;
27
- variants?: VariantConfig[];
21
+ export interface FeatureFlag {
22
+ id: string;
23
+ key: string;
24
+ status: 'OFF' | 'ON' | 'GRADUAL';
25
+ defaultValue: boolean;
26
+ variants?: VariantConfig[];
28
27
  }
29
- interface TargetingRule {
30
- id: string;
31
- priority: number;
32
- enabled: boolean;
33
- attribute: string;
34
- operator: RuleOperator;
35
- value: unknown;
36
- rolloutPercentage?: number;
37
- serveValue?: boolean;
38
- serveVariant?: string;
28
+ export interface TargetingRule {
29
+ id: string;
30
+ priority: number;
31
+ enabled: boolean;
32
+ attribute: string;
33
+ operator: RuleOperator;
34
+ value: unknown;
35
+ rolloutPercentage?: number;
36
+ serveValue?: boolean;
37
+ serveVariant?: string;
39
38
  }
40
- interface Experiment {
41
- id: string;
42
- key: string;
43
- status: 'DRAFT' | 'RUNNING' | 'PAUSED' | 'COMPLETED' | 'CANCELLED';
44
- variants: ExperimentVariant[];
45
- audiencePercentage: number;
46
- audienceFilter?: Record<string, unknown>;
39
+ export interface Experiment {
40
+ id: string;
41
+ key: string;
42
+ status: 'DRAFT' | 'RUNNING' | 'PAUSED' | 'COMPLETED' | 'CANCELLED';
43
+ variants: ExperimentVariant[];
44
+ audiencePercentage: number;
45
+ audienceFilter?: Record<string, unknown>;
47
46
  }
48
- interface VariantConfig {
49
- key: string;
50
- name: string;
51
- description?: string;
52
- weight?: number;
47
+ export interface VariantConfig {
48
+ key: string;
49
+ name: string;
50
+ description?: string;
51
+ weight?: number;
53
52
  }
54
- interface ExperimentVariant {
55
- key: string;
56
- name: string;
57
- percentage: number;
53
+ export interface ExperimentVariant {
54
+ key: string;
55
+ name: string;
56
+ percentage: number;
58
57
  }
59
- interface EvaluationResult {
60
- enabled: boolean;
61
- variant?: string;
62
- reason: EvaluationReason;
63
- ruleId?: string;
64
- experimentId?: string;
58
+ export interface EvaluationResult {
59
+ enabled: boolean;
60
+ variant?: string;
61
+ reason: EvaluationReason;
62
+ ruleId?: string;
63
+ experimentId?: string;
65
64
  }
66
- type EvaluationReason = 'FLAG_OFF' | 'FLAG_ON' | 'DEFAULT_VALUE' | 'RULE_MATCH' | 'PERCENTAGE_ROLLOUT' | 'EXPERIMENT_VARIANT' | 'FLAG_NOT_FOUND';
67
- type RuleOperator = 'EQ' | 'NEQ' | 'IN' | 'NIN' | 'CONTAINS' | 'NOT_CONTAINS' | 'GT' | 'GTE' | 'LT' | 'LTE' | 'PERCENTAGE';
65
+ export type EvaluationReason = 'FLAG_OFF' | 'FLAG_ON' | 'DEFAULT_VALUE' | 'RULE_MATCH' | 'PERCENTAGE_ROLLOUT' | 'EXPERIMENT_VARIANT' | 'FLAG_NOT_FOUND';
66
+ export type RuleOperator = 'EQ' | 'NEQ' | 'IN' | 'NIN' | 'CONTAINS' | 'NOT_CONTAINS' | 'GT' | 'GTE' | 'LT' | 'LTE' | 'PERCENTAGE';
68
67
  /**
69
68
  * Simple hash function for consistent bucketing.
70
69
  * Uses a deterministic algorithm so the same input always produces the same bucket.
71
70
  */
72
- declare function hashToBucket(value: string, seed?: string): number;
71
+ export declare function hashToBucket(value: string, seed?: string): number;
73
72
  /**
74
73
  * Get subject identifier from context for consistent hashing.
75
74
  */
76
- declare function getSubjectId(context: EvaluationContext): string;
75
+ export declare function getSubjectId(context: EvaluationContext): string;
77
76
  /**
78
77
  * Evaluate a single targeting rule condition.
79
78
  */
80
- declare function evaluateRuleCondition(rule: TargetingRule, context: EvaluationContext): boolean;
81
- interface FlagRepository {
82
- getFlag(key: string, orgId?: string): Promise<FeatureFlag | null>;
83
- getRules(flagId: string): Promise<TargetingRule[]>;
84
- getActiveExperiment(flagId: string): Promise<Experiment | null>;
85
- getExperimentAssignment(experimentId: string, subjectType: string, subjectId: string): Promise<string | null>;
86
- saveExperimentAssignment(experimentId: string, subjectType: string, subjectId: string, variant: string, bucket: number): Promise<void>;
79
+ export declare function evaluateRuleCondition(rule: TargetingRule, context: EvaluationContext): boolean;
80
+ export interface FlagRepository {
81
+ getFlag(key: string, orgId?: string): Promise<FeatureFlag | null>;
82
+ getRules(flagId: string): Promise<TargetingRule[]>;
83
+ getActiveExperiment(flagId: string): Promise<Experiment | null>;
84
+ getExperimentAssignment(experimentId: string, subjectType: string, subjectId: string): Promise<string | null>;
85
+ saveExperimentAssignment(experimentId: string, subjectType: string, subjectId: string, variant: string, bucket: number): Promise<void>;
87
86
  }
88
- interface EvaluationLogger {
89
- log(evaluation: {
90
- flagId: string;
91
- flagKey: string;
92
- subjectType: string;
93
- subjectId: string;
94
- result: boolean;
95
- variant?: string;
96
- reason: string;
97
- ruleId?: string;
98
- experimentId?: string;
99
- context?: EvaluationContext;
100
- }): void;
87
+ export interface EvaluationLogger {
88
+ log(evaluation: {
89
+ flagId: string;
90
+ flagKey: string;
91
+ subjectType: string;
92
+ subjectId: string;
93
+ result: boolean;
94
+ variant?: string;
95
+ reason: string;
96
+ ruleId?: string;
97
+ experimentId?: string;
98
+ context?: EvaluationContext;
99
+ }): void;
101
100
  }
102
- interface FlagEvaluatorOptions {
103
- repository: FlagRepository;
104
- logger?: EvaluationLogger;
105
- /** Whether to log evaluations (default: false for performance) */
106
- logEvaluations?: boolean;
101
+ export interface FlagEvaluatorOptions {
102
+ repository: FlagRepository;
103
+ logger?: EvaluationLogger;
104
+ /** Whether to log evaluations (default: false for performance) */
105
+ logEvaluations?: boolean;
107
106
  }
108
107
  /**
109
108
  * Feature flag evaluator.
@@ -114,50 +113,48 @@ interface FlagEvaluatorOptions {
114
113
  * 3. Experiments (if running)
115
114
  * 4. Default value (fallback)
116
115
  */
117
- declare class FlagEvaluator {
118
- private repository;
119
- private logger?;
120
- private logEvaluations;
121
- constructor(options: FlagEvaluatorOptions);
122
- /**
123
- * Evaluate a feature flag.
124
- */
125
- evaluate(key: string, context: EvaluationContext): Promise<EvaluationResult>;
126
- /**
127
- * Evaluate experiment and assign variant.
128
- */
129
- private evaluateExperiment;
130
- /**
131
- * Assign a variant based on bucket and variant percentages.
132
- */
133
- private assignVariant;
134
- /**
135
- * Create evaluation result.
136
- */
137
- private makeResult;
138
- /**
139
- * Log evaluation and return result.
140
- */
141
- private logAndReturn;
116
+ export declare class FlagEvaluator {
117
+ private repository;
118
+ private logger?;
119
+ private logEvaluations;
120
+ constructor(options: FlagEvaluatorOptions);
121
+ /**
122
+ * Evaluate a feature flag.
123
+ */
124
+ evaluate(key: string, context: EvaluationContext): Promise<EvaluationResult>;
125
+ /**
126
+ * Evaluate experiment and assign variant.
127
+ */
128
+ private evaluateExperiment;
129
+ /**
130
+ * Assign a variant based on bucket and variant percentages.
131
+ */
132
+ private assignVariant;
133
+ /**
134
+ * Create evaluation result.
135
+ */
136
+ private makeResult;
137
+ /**
138
+ * Log evaluation and return result.
139
+ */
140
+ private logAndReturn;
142
141
  }
143
142
  /**
144
143
  * In-memory flag repository for testing and development.
145
144
  */
146
- declare class InMemoryFlagRepository implements FlagRepository {
147
- private flags;
148
- private rules;
149
- private experiments;
150
- private assignments;
151
- addFlag(flag: FeatureFlag): void;
152
- addRule(flagId: string, rule: TargetingRule): void;
153
- addExperiment(experiment: Experiment, flagId: string): void;
154
- getFlag(key: string): Promise<FeatureFlag | null>;
155
- getRules(flagId: string): Promise<TargetingRule[]>;
156
- getActiveExperiment(flagId: string): Promise<Experiment | null>;
157
- getExperimentAssignment(experimentId: string, subjectType: string, subjectId: string): Promise<string | null>;
158
- saveExperimentAssignment(experimentId: string, subjectType: string, subjectId: string, variant: string): Promise<void>;
159
- clear(): void;
145
+ export declare class InMemoryFlagRepository implements FlagRepository {
146
+ private flags;
147
+ private rules;
148
+ private experiments;
149
+ private assignments;
150
+ addFlag(flag: FeatureFlag): void;
151
+ addRule(flagId: string, rule: TargetingRule): void;
152
+ addExperiment(experiment: Experiment, flagId: string): void;
153
+ getFlag(key: string): Promise<FeatureFlag | null>;
154
+ getRules(flagId: string): Promise<TargetingRule[]>;
155
+ getActiveExperiment(flagId: string): Promise<Experiment | null>;
156
+ getExperimentAssignment(experimentId: string, subjectType: string, subjectId: string): Promise<string | null>;
157
+ saveExperimentAssignment(experimentId: string, subjectType: string, subjectId: string, variant: string): Promise<void>;
158
+ clear(): void;
160
159
  }
161
- //#endregion
162
- export { EvaluationContext, EvaluationLogger, EvaluationReason, EvaluationResult, Experiment, ExperimentVariant, FeatureFlag, FlagEvaluator, FlagEvaluatorOptions, FlagRepository, InMemoryFlagRepository, RuleOperator, TargetingRule, VariantConfig, evaluateRuleCondition, getSubjectId, hashToBucket };
163
160
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/evaluation/index.ts"],"mappings":";;AASA;;;;;UAAiB,iBAAA;EAMf;EAJA,MAAA;EAQA;EANA,KAAA;EAQa;EANb,IAAA;EAMmB;EAJnB,OAAA;EAO0B;EAL1B,SAAA;EAUwB;EARxB,UAAA,GAAa,MAAA;AAAA;AAAA,UAGE,WAAA;EACf,EAAA;EACA,GAAA;EACA,MAAA;EACA,YAAA;EACA,QAAA,GAAW,aAAA;AAAA;AAAA,UAGI,aAAA;EACf,EAAA;EACA,QAAA;EACA,OAAA;EACA,SAAA;EACA,QAAA,EAAU,YAAA;EACV,KAAA;EACA,iBAAA;EACA,UAAA;EACA,YAAA;AAAA;AAAA,UAGe,UAAA;EACf,EAAA;EACA,GAAA;EACA,MAAA;EACA,QAAA,EAAU,iBAAA;EACV,kBAAA;EACA,cAAA,GAAiB,MAAA;AAAA;AAAA,UAGF,aAAA;EACf,GAAA;EACA,IAAA;EACA,WAAA;EACA,MAAA;AAAA;AAAA,UAGe,iBAAA;EACf,GAAA;EACA,IAAA;EACA,UAAA;AAAA;AAAA,UAGe,gBAAA;EACf,OAAA;EACA,OAAA;EACA,MAAA,EAAQ,gBAAA;EACR,MAAA;EACA,YAAA;AAAA;AAAA,KAGU,gBAAA;AAAA,KASA,YAAA;AAvBZ;;;;AAAA,iBA0CgB,YAAA,CAAa,KAAA,UAAe,IAAA;;;;iBAe5B,YAAA,CAAa,OAAA,EAAS,iBAAA;AAnDtC;;;AAAA,iBA4DgB,qBAAA,CACd,IAAA,EAAM,aAAA,EACN,OAAA,EAAS,iBAAA;AAAA,UAsFM,cAAA;EACf,OAAA,CAAQ,GAAA,UAAa,KAAA,YAAiB,OAAA,CAAQ,WAAA;EAC9C,QAAA,CAAS,MAAA,WAAiB,OAAA,CAAQ,aAAA;EAClC,mBAAA,CAAoB,MAAA,WAAiB,OAAA,CAAQ,UAAA;EAC7C,uBAAA,CACE,YAAA,UACA,WAAA,UACA,SAAA,WACC,OAAA;EACH,wBAAA,CACE,YAAA,UACA,WAAA,UACA,SAAA,UACA,OAAA,UACA,MAAA,WACC,OAAA;AAAA;AAAA,UAGY,gBAAA;EACf,GAAA,CAAI,UAAA;IACF,MAAA;IACA,OAAA;IACA,WAAA;IACA,SAAA;IACA,MAAA;IACA,OAAA;IACA,MAAA;IACA,MAAA;IACA,YAAA;IACA,OAAA,GAAU,iBAAA;EAAA;AAAA;AAAA,UAIG,oBAAA;EACf,UAAA,EAAY,cAAA;EACZ,MAAA,GAAS,gBAAA;EApIiB;EAsI1B,cAAA;AAAA;;AA7HF;;;;;;;;cAyIa,aAAA;EAAA,QACH,UAAA;EAAA,QACA,MAAA;EAAA,QACA,cAAA;cAEI,OAAA,EAAS,oBAAA;EArDyB;;;EA8DxC,QAAA,CACJ,GAAA,UACA,OAAA,EAAS,iBAAA,GACR,OAAA,CAAQ,gBAAA;EA/DkC;;;EAAA,QAuI/B,kBAAA;EA3HJ;;;EAAA,QAoLF,aAAA;EAlMa;;;EAAA,QAiNb,UAAA;EAhNC;;;EAAA,QAmOD,YAAA;AAAA;;;;cAmCG,sBAAA,YAAkC,cAAA;EAAA,QACrC,KAAA;EAAA,QACA,KAAA;EAAA,QACA,WAAA;EAAA,QACA,WAAA;EAER,OAAA,CAAQ,IAAA,EAAM,WAAA;EAId,OAAA,CAAQ,MAAA,UAAgB,IAAA,EAAM,aAAA;EAM9B,aAAA,CAAc,UAAA,EAAY,UAAA,EAAY,MAAA;EAIhC,OAAA,CAAQ,GAAA,WAAc,OAAA,CAAQ,WAAA;EAI9B,QAAA,CAAS,MAAA,WAAiB,OAAA,CAAQ,aAAA;EAIlC,mBAAA,CAAoB,MAAA,WAAiB,OAAA,CAAQ,UAAA;EAI7C,uBAAA,CACJ,YAAA,UACA,WAAA,UACA,SAAA,WACC,OAAA;EAKG,wBAAA,CACJ,YAAA,UACA,WAAA,UACA,SAAA,UACA,OAAA,WACC,OAAA;EAKH,KAAA,CAAA;AAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/evaluation/index.ts"],"names":[],"mappings":"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"}