@contractspec/lib.feature-flags 1.57.0 → 1.59.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,325 +1,307 @@
1
- import { defineEntity, defineEntityEnum, field, index } from "@contractspec/lib.schema";
2
-
3
- //#region src/entities/index.ts
4
- /**
5
- * Feature flag status enum.
6
- */
7
- const FlagStatusEnum = defineEntityEnum({
8
- name: "FlagStatus",
9
- values: [
10
- "OFF",
11
- "ON",
12
- "GRADUAL"
13
- ],
14
- schema: "lssm_feature_flags",
15
- description: "Status of a feature flag."
1
+ // @bun
2
+ // src/entities/index.ts
3
+ import {
4
+ defineEntity,
5
+ defineEntityEnum,
6
+ field,
7
+ index
8
+ } from "@contractspec/lib.schema";
9
+ var FlagStatusEnum = defineEntityEnum({
10
+ name: "FlagStatus",
11
+ values: ["OFF", "ON", "GRADUAL"],
12
+ schema: "lssm_feature_flags",
13
+ description: "Status of a feature flag."
16
14
  });
17
- /**
18
- * Targeting rule operator enum.
19
- */
20
- const RuleOperatorEnum = defineEntityEnum({
21
- name: "RuleOperator",
22
- values: [
23
- "EQ",
24
- "NEQ",
25
- "IN",
26
- "NIN",
27
- "CONTAINS",
28
- "NOT_CONTAINS",
29
- "GT",
30
- "GTE",
31
- "LT",
32
- "LTE",
33
- "PERCENTAGE"
34
- ],
35
- schema: "lssm_feature_flags",
36
- description: "Operator for targeting rule conditions."
15
+ var RuleOperatorEnum = defineEntityEnum({
16
+ name: "RuleOperator",
17
+ values: [
18
+ "EQ",
19
+ "NEQ",
20
+ "IN",
21
+ "NIN",
22
+ "CONTAINS",
23
+ "NOT_CONTAINS",
24
+ "GT",
25
+ "GTE",
26
+ "LT",
27
+ "LTE",
28
+ "PERCENTAGE"
29
+ ],
30
+ schema: "lssm_feature_flags",
31
+ description: "Operator for targeting rule conditions."
37
32
  });
38
- /**
39
- * Experiment status enum.
40
- */
41
- const ExperimentStatusEnum = defineEntityEnum({
42
- name: "ExperimentStatus",
43
- values: [
44
- "DRAFT",
45
- "RUNNING",
46
- "PAUSED",
47
- "COMPLETED",
48
- "CANCELLED"
49
- ],
50
- schema: "lssm_feature_flags",
51
- description: "Status of an experiment."
33
+ var ExperimentStatusEnum = defineEntityEnum({
34
+ name: "ExperimentStatus",
35
+ values: ["DRAFT", "RUNNING", "PAUSED", "COMPLETED", "CANCELLED"],
36
+ schema: "lssm_feature_flags",
37
+ description: "Status of an experiment."
52
38
  });
53
- /**
54
- * FeatureFlag entity - defines a feature flag.
55
- */
56
- const FeatureFlagEntity = defineEntity({
57
- name: "FeatureFlag",
58
- description: "A feature flag for controlling feature availability.",
59
- schema: "lssm_feature_flags",
60
- map: "feature_flag",
61
- fields: {
62
- id: field.id({ description: "Unique flag identifier" }),
63
- key: field.string({
64
- isUnique: true,
65
- description: "Flag key (e.g., new_dashboard)"
66
- }),
67
- name: field.string({ description: "Human-readable name" }),
68
- description: field.string({
69
- isOptional: true,
70
- description: "Description of the flag"
71
- }),
72
- status: field.enum("FlagStatus", {
73
- default: "OFF",
74
- description: "Flag status"
75
- }),
76
- defaultValue: field.boolean({
77
- default: false,
78
- description: "Default value when no rules match"
79
- }),
80
- variants: field.json({
81
- isOptional: true,
82
- description: "Variant definitions for multivariate flags"
83
- }),
84
- orgId: field.string({
85
- isOptional: true,
86
- description: "Organization scope (null = global)"
87
- }),
88
- tags: field.json({
89
- isOptional: true,
90
- description: "Tags for categorization"
91
- }),
92
- metadata: field.json({
93
- isOptional: true,
94
- description: "Additional metadata"
95
- }),
96
- createdAt: field.createdAt(),
97
- updatedAt: field.updatedAt(),
98
- targetingRules: field.hasMany("FlagTargetingRule"),
99
- experiments: field.hasMany("Experiment"),
100
- evaluations: field.hasMany("FlagEvaluation")
101
- },
102
- indexes: [index.on(["orgId", "key"]), index.on(["status"])],
103
- enums: [FlagStatusEnum]
39
+ var FeatureFlagEntity = defineEntity({
40
+ name: "FeatureFlag",
41
+ description: "A feature flag for controlling feature availability.",
42
+ schema: "lssm_feature_flags",
43
+ map: "feature_flag",
44
+ fields: {
45
+ id: field.id({ description: "Unique flag identifier" }),
46
+ key: field.string({
47
+ isUnique: true,
48
+ description: "Flag key (e.g., new_dashboard)"
49
+ }),
50
+ name: field.string({ description: "Human-readable name" }),
51
+ description: field.string({
52
+ isOptional: true,
53
+ description: "Description of the flag"
54
+ }),
55
+ status: field.enum("FlagStatus", {
56
+ default: "OFF",
57
+ description: "Flag status"
58
+ }),
59
+ defaultValue: field.boolean({
60
+ default: false,
61
+ description: "Default value when no rules match"
62
+ }),
63
+ variants: field.json({
64
+ isOptional: true,
65
+ description: "Variant definitions for multivariate flags"
66
+ }),
67
+ orgId: field.string({
68
+ isOptional: true,
69
+ description: "Organization scope (null = global)"
70
+ }),
71
+ tags: field.json({
72
+ isOptional: true,
73
+ description: "Tags for categorization"
74
+ }),
75
+ metadata: field.json({
76
+ isOptional: true,
77
+ description: "Additional metadata"
78
+ }),
79
+ createdAt: field.createdAt(),
80
+ updatedAt: field.updatedAt(),
81
+ targetingRules: field.hasMany("FlagTargetingRule"),
82
+ experiments: field.hasMany("Experiment"),
83
+ evaluations: field.hasMany("FlagEvaluation")
84
+ },
85
+ indexes: [index.on(["orgId", "key"]), index.on(["status"])],
86
+ enums: [FlagStatusEnum]
104
87
  });
105
- /**
106
- * FlagTargetingRule entity - conditions for targeting.
107
- */
108
- const FlagTargetingRuleEntity = defineEntity({
109
- name: "FlagTargetingRule",
110
- description: "A targeting rule for conditional flag evaluation.",
111
- schema: "lssm_feature_flags",
112
- map: "flag_targeting_rule",
113
- fields: {
114
- id: field.id({ description: "Unique rule identifier" }),
115
- flagId: field.foreignKey({ description: "Parent feature flag" }),
116
- name: field.string({
117
- isOptional: true,
118
- description: "Rule name for debugging"
119
- }),
120
- priority: field.int({
121
- default: 0,
122
- description: "Rule priority (lower = higher priority)"
123
- }),
124
- enabled: field.boolean({
125
- default: true,
126
- description: "Whether rule is active"
127
- }),
128
- attribute: field.string({ description: "Target attribute (userId, orgId, plan, segment, etc.)" }),
129
- operator: field.enum("RuleOperator", { description: "Comparison operator" }),
130
- value: field.json({ description: "Target value(s)" }),
131
- rolloutPercentage: field.int({
132
- isOptional: true,
133
- description: "Percentage for gradual rollout (0-100)"
134
- }),
135
- serveValue: field.boolean({
136
- isOptional: true,
137
- description: "Boolean value to serve"
138
- }),
139
- serveVariant: field.string({
140
- isOptional: true,
141
- description: "Variant key to serve (for multivariate)"
142
- }),
143
- createdAt: field.createdAt(),
144
- updatedAt: field.updatedAt(),
145
- flag: field.belongsTo("FeatureFlag", ["flagId"], ["id"], { onDelete: "Cascade" })
146
- },
147
- indexes: [index.on(["flagId", "priority"]), index.on(["attribute"])],
148
- enums: [RuleOperatorEnum]
88
+ var FlagTargetingRuleEntity = defineEntity({
89
+ name: "FlagTargetingRule",
90
+ description: "A targeting rule for conditional flag evaluation.",
91
+ schema: "lssm_feature_flags",
92
+ map: "flag_targeting_rule",
93
+ fields: {
94
+ id: field.id({ description: "Unique rule identifier" }),
95
+ flagId: field.foreignKey({ description: "Parent feature flag" }),
96
+ name: field.string({
97
+ isOptional: true,
98
+ description: "Rule name for debugging"
99
+ }),
100
+ priority: field.int({
101
+ default: 0,
102
+ description: "Rule priority (lower = higher priority)"
103
+ }),
104
+ enabled: field.boolean({
105
+ default: true,
106
+ description: "Whether rule is active"
107
+ }),
108
+ attribute: field.string({
109
+ description: "Target attribute (userId, orgId, plan, segment, etc.)"
110
+ }),
111
+ operator: field.enum("RuleOperator", {
112
+ description: "Comparison operator"
113
+ }),
114
+ value: field.json({ description: "Target value(s)" }),
115
+ rolloutPercentage: field.int({
116
+ isOptional: true,
117
+ description: "Percentage for gradual rollout (0-100)"
118
+ }),
119
+ serveValue: field.boolean({
120
+ isOptional: true,
121
+ description: "Boolean value to serve"
122
+ }),
123
+ serveVariant: field.string({
124
+ isOptional: true,
125
+ description: "Variant key to serve (for multivariate)"
126
+ }),
127
+ createdAt: field.createdAt(),
128
+ updatedAt: field.updatedAt(),
129
+ flag: field.belongsTo("FeatureFlag", ["flagId"], ["id"], {
130
+ onDelete: "Cascade"
131
+ })
132
+ },
133
+ indexes: [index.on(["flagId", "priority"]), index.on(["attribute"])],
134
+ enums: [RuleOperatorEnum]
149
135
  });
150
- /**
151
- * Experiment entity - A/B test configuration.
152
- */
153
- const ExperimentEntity = defineEntity({
154
- name: "Experiment",
155
- description: "An A/B test experiment.",
156
- schema: "lssm_feature_flags",
157
- map: "experiment",
158
- fields: {
159
- id: field.id({ description: "Unique experiment identifier" }),
160
- key: field.string({
161
- isUnique: true,
162
- description: "Experiment key"
163
- }),
164
- name: field.string({ description: "Human-readable name" }),
165
- description: field.string({
166
- isOptional: true,
167
- description: "Experiment description"
168
- }),
169
- hypothesis: field.string({
170
- isOptional: true,
171
- description: "Experiment hypothesis"
172
- }),
173
- flagId: field.foreignKey({ description: "Associated feature flag" }),
174
- status: field.enum("ExperimentStatus", {
175
- default: "DRAFT",
176
- description: "Experiment status"
177
- }),
178
- variants: field.json({ description: "Variant definitions with split ratios" }),
179
- metrics: field.json({
180
- isOptional: true,
181
- description: "Metrics to track"
182
- }),
183
- audiencePercentage: field.int({
184
- default: 100,
185
- description: "Percentage of audience to include"
186
- }),
187
- audienceFilter: field.json({
188
- isOptional: true,
189
- description: "Audience filter criteria"
190
- }),
191
- scheduledStartAt: field.dateTime({
192
- isOptional: true,
193
- description: "Scheduled start time"
194
- }),
195
- scheduledEndAt: field.dateTime({
196
- isOptional: true,
197
- description: "Scheduled end time"
198
- }),
199
- startedAt: field.dateTime({
200
- isOptional: true,
201
- description: "Actual start time"
202
- }),
203
- endedAt: field.dateTime({
204
- isOptional: true,
205
- description: "Actual end time"
206
- }),
207
- winningVariant: field.string({
208
- isOptional: true,
209
- description: "Declared winning variant"
210
- }),
211
- results: field.json({
212
- isOptional: true,
213
- description: "Experiment results summary"
214
- }),
215
- orgId: field.string({
216
- isOptional: true,
217
- description: "Organization scope"
218
- }),
219
- createdAt: field.createdAt(),
220
- updatedAt: field.updatedAt(),
221
- flag: field.belongsTo("FeatureFlag", ["flagId"], ["id"], { onDelete: "Cascade" }),
222
- assignments: field.hasMany("ExperimentAssignment")
223
- },
224
- indexes: [
225
- index.on(["status"]),
226
- index.on(["orgId", "status"]),
227
- index.on(["flagId"])
228
- ],
229
- enums: [ExperimentStatusEnum]
136
+ var ExperimentEntity = defineEntity({
137
+ name: "Experiment",
138
+ description: "An A/B test experiment.",
139
+ schema: "lssm_feature_flags",
140
+ map: "experiment",
141
+ fields: {
142
+ id: field.id({ description: "Unique experiment identifier" }),
143
+ key: field.string({ isUnique: true, description: "Experiment key" }),
144
+ name: field.string({ description: "Human-readable name" }),
145
+ description: field.string({
146
+ isOptional: true,
147
+ description: "Experiment description"
148
+ }),
149
+ hypothesis: field.string({
150
+ isOptional: true,
151
+ description: "Experiment hypothesis"
152
+ }),
153
+ flagId: field.foreignKey({ description: "Associated feature flag" }),
154
+ status: field.enum("ExperimentStatus", {
155
+ default: "DRAFT",
156
+ description: "Experiment status"
157
+ }),
158
+ variants: field.json({
159
+ description: "Variant definitions with split ratios"
160
+ }),
161
+ metrics: field.json({ isOptional: true, description: "Metrics to track" }),
162
+ audiencePercentage: field.int({
163
+ default: 100,
164
+ description: "Percentage of audience to include"
165
+ }),
166
+ audienceFilter: field.json({
167
+ isOptional: true,
168
+ description: "Audience filter criteria"
169
+ }),
170
+ scheduledStartAt: field.dateTime({
171
+ isOptional: true,
172
+ description: "Scheduled start time"
173
+ }),
174
+ scheduledEndAt: field.dateTime({
175
+ isOptional: true,
176
+ description: "Scheduled end time"
177
+ }),
178
+ startedAt: field.dateTime({
179
+ isOptional: true,
180
+ description: "Actual start time"
181
+ }),
182
+ endedAt: field.dateTime({
183
+ isOptional: true,
184
+ description: "Actual end time"
185
+ }),
186
+ winningVariant: field.string({
187
+ isOptional: true,
188
+ description: "Declared winning variant"
189
+ }),
190
+ results: field.json({
191
+ isOptional: true,
192
+ description: "Experiment results summary"
193
+ }),
194
+ orgId: field.string({
195
+ isOptional: true,
196
+ description: "Organization scope"
197
+ }),
198
+ createdAt: field.createdAt(),
199
+ updatedAt: field.updatedAt(),
200
+ flag: field.belongsTo("FeatureFlag", ["flagId"], ["id"], {
201
+ onDelete: "Cascade"
202
+ }),
203
+ assignments: field.hasMany("ExperimentAssignment")
204
+ },
205
+ indexes: [
206
+ index.on(["status"]),
207
+ index.on(["orgId", "status"]),
208
+ index.on(["flagId"])
209
+ ],
210
+ enums: [ExperimentStatusEnum]
230
211
  });
231
- /**
232
- * ExperimentAssignment entity - tracks which variant a subject is assigned to.
233
- */
234
- const ExperimentAssignmentEntity = defineEntity({
235
- name: "ExperimentAssignment",
236
- description: "Tracks experiment variant assignments.",
237
- schema: "lssm_feature_flags",
238
- map: "experiment_assignment",
239
- fields: {
240
- id: field.id({ description: "Unique assignment identifier" }),
241
- experimentId: field.foreignKey({ description: "Parent experiment" }),
242
- subjectType: field.string({ description: "Subject type (user, org, session)" }),
243
- subjectId: field.string({ description: "Subject identifier" }),
244
- variant: field.string({ description: "Assigned variant key" }),
245
- bucket: field.int({ description: "Hash bucket (0-99)" }),
246
- context: field.json({
247
- isOptional: true,
248
- description: "Context at assignment time"
249
- }),
250
- assignedAt: field.dateTime({ description: "Assignment timestamp" }),
251
- experiment: field.belongsTo("Experiment", ["experimentId"], ["id"], { onDelete: "Cascade" })
252
- },
253
- indexes: [index.unique([
254
- "experimentId",
255
- "subjectType",
256
- "subjectId"
257
- ], { name: "experiment_assignment_unique" }), index.on(["subjectType", "subjectId"])]
212
+ var ExperimentAssignmentEntity = defineEntity({
213
+ name: "ExperimentAssignment",
214
+ description: "Tracks experiment variant assignments.",
215
+ schema: "lssm_feature_flags",
216
+ map: "experiment_assignment",
217
+ fields: {
218
+ id: field.id({ description: "Unique assignment identifier" }),
219
+ experimentId: field.foreignKey({ description: "Parent experiment" }),
220
+ subjectType: field.string({
221
+ description: "Subject type (user, org, session)"
222
+ }),
223
+ subjectId: field.string({ description: "Subject identifier" }),
224
+ variant: field.string({ description: "Assigned variant key" }),
225
+ bucket: field.int({ description: "Hash bucket (0-99)" }),
226
+ context: field.json({
227
+ isOptional: true,
228
+ description: "Context at assignment time"
229
+ }),
230
+ assignedAt: field.dateTime({ description: "Assignment timestamp" }),
231
+ experiment: field.belongsTo("Experiment", ["experimentId"], ["id"], {
232
+ onDelete: "Cascade"
233
+ })
234
+ },
235
+ indexes: [
236
+ index.unique(["experimentId", "subjectType", "subjectId"], {
237
+ name: "experiment_assignment_unique"
238
+ }),
239
+ index.on(["subjectType", "subjectId"])
240
+ ]
258
241
  });
259
- /**
260
- * FlagEvaluation entity - evaluation log for analytics.
261
- */
262
- const FlagEvaluationEntity = defineEntity({
263
- name: "FlagEvaluation",
264
- description: "Log of flag evaluations for debugging and analytics.",
265
- schema: "lssm_feature_flags",
266
- map: "flag_evaluation",
267
- fields: {
268
- id: field.id({ description: "Unique evaluation identifier" }),
269
- flagId: field.foreignKey({ description: "Evaluated flag" }),
270
- flagKey: field.string({ description: "Flag key (denormalized for queries)" }),
271
- subjectType: field.string({ description: "Subject type (user, org, anonymous)" }),
272
- subjectId: field.string({ description: "Subject identifier" }),
273
- result: field.boolean({ description: "Evaluation result" }),
274
- variant: field.string({
275
- isOptional: true,
276
- description: "Served variant (for multivariate)"
277
- }),
278
- matchedRuleId: field.string({
279
- isOptional: true,
280
- description: "Rule that matched (if any)"
281
- }),
282
- reason: field.string({ description: "Evaluation reason (default, rule, experiment, etc.)" }),
283
- context: field.json({
284
- isOptional: true,
285
- description: "Evaluation context"
286
- }),
287
- evaluatedAt: field.dateTime({ description: "Evaluation timestamp" }),
288
- flag: field.belongsTo("FeatureFlag", ["flagId"], ["id"], { onDelete: "Cascade" })
289
- },
290
- indexes: [
291
- index.on(["flagKey", "evaluatedAt"]),
292
- index.on([
293
- "subjectType",
294
- "subjectId",
295
- "evaluatedAt"
296
- ]),
297
- index.on(["flagId", "evaluatedAt"])
298
- ]
242
+ var FlagEvaluationEntity = defineEntity({
243
+ name: "FlagEvaluation",
244
+ description: "Log of flag evaluations for debugging and analytics.",
245
+ schema: "lssm_feature_flags",
246
+ map: "flag_evaluation",
247
+ fields: {
248
+ id: field.id({ description: "Unique evaluation identifier" }),
249
+ flagId: field.foreignKey({ description: "Evaluated flag" }),
250
+ flagKey: field.string({
251
+ description: "Flag key (denormalized for queries)"
252
+ }),
253
+ subjectType: field.string({
254
+ description: "Subject type (user, org, anonymous)"
255
+ }),
256
+ subjectId: field.string({ description: "Subject identifier" }),
257
+ result: field.boolean({ description: "Evaluation result" }),
258
+ variant: field.string({
259
+ isOptional: true,
260
+ description: "Served variant (for multivariate)"
261
+ }),
262
+ matchedRuleId: field.string({
263
+ isOptional: true,
264
+ description: "Rule that matched (if any)"
265
+ }),
266
+ reason: field.string({
267
+ description: "Evaluation reason (default, rule, experiment, etc.)"
268
+ }),
269
+ context: field.json({
270
+ isOptional: true,
271
+ description: "Evaluation context"
272
+ }),
273
+ evaluatedAt: field.dateTime({ description: "Evaluation timestamp" }),
274
+ flag: field.belongsTo("FeatureFlag", ["flagId"], ["id"], {
275
+ onDelete: "Cascade"
276
+ })
277
+ },
278
+ indexes: [
279
+ index.on(["flagKey", "evaluatedAt"]),
280
+ index.on(["subjectType", "subjectId", "evaluatedAt"]),
281
+ index.on(["flagId", "evaluatedAt"])
282
+ ]
299
283
  });
300
- /**
301
- * All feature flag entities for schema composition.
302
- */
303
- const featureFlagEntities = [
304
- FeatureFlagEntity,
305
- FlagTargetingRuleEntity,
306
- ExperimentEntity,
307
- ExperimentAssignmentEntity,
308
- FlagEvaluationEntity
284
+ var featureFlagEntities = [
285
+ FeatureFlagEntity,
286
+ FlagTargetingRuleEntity,
287
+ ExperimentEntity,
288
+ ExperimentAssignmentEntity,
289
+ FlagEvaluationEntity
309
290
  ];
310
- /**
311
- * Module schema contribution for feature flags.
312
- */
313
- const featureFlagsSchemaContribution = {
314
- moduleId: "@contractspec/lib.feature-flags",
315
- entities: featureFlagEntities,
316
- enums: [
317
- FlagStatusEnum,
318
- RuleOperatorEnum,
319
- ExperimentStatusEnum
320
- ]
291
+ var featureFlagsSchemaContribution = {
292
+ moduleId: "@contractspec/lib.feature-flags",
293
+ entities: featureFlagEntities,
294
+ enums: [FlagStatusEnum, RuleOperatorEnum, ExperimentStatusEnum]
295
+ };
296
+ export {
297
+ featureFlagsSchemaContribution,
298
+ featureFlagEntities,
299
+ RuleOperatorEnum,
300
+ FlagTargetingRuleEntity,
301
+ FlagStatusEnum,
302
+ FlagEvaluationEntity,
303
+ FeatureFlagEntity,
304
+ ExperimentStatusEnum,
305
+ ExperimentEntity,
306
+ ExperimentAssignmentEntity
321
307
  };
322
-
323
- //#endregion
324
- export { ExperimentAssignmentEntity, ExperimentEntity, ExperimentStatusEnum, FeatureFlagEntity, FlagEvaluationEntity, FlagStatusEnum, FlagTargetingRuleEntity, RuleOperatorEnum, featureFlagEntities, featureFlagsSchemaContribution };
325
- //# sourceMappingURL=index.js.map