@featurevisor/sdk 0.33.0 → 0.35.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.
package/lib/feature.js CHANGED
@@ -1,8 +1,5 @@
1
1
  import { allGroupSegmentsAreMatched } from "./segments";
2
2
  import { allConditionsAreMatched } from "./conditions";
3
- /**
4
- * Traffic
5
- */
6
3
  export function getMatchedAllocation(traffic, bucketValue) {
7
4
  for (var _i = 0, _a = traffic.allocation; _i < _a.length; _i++) {
8
5
  var allocation = _a[_i];
@@ -30,10 +27,7 @@ export function getMatchedTrafficAndAllocation(traffic, attributes, bucketValue,
30
27
  matchedAllocation: matchedAllocation,
31
28
  };
32
29
  }
33
- /**
34
- * Variations and variables
35
- */
36
- function findForceFromFeature(feature, attributes, datafileReader) {
30
+ export function findForceFromFeature(feature, attributes, datafileReader) {
37
31
  if (!feature.force) {
38
32
  return undefined;
39
33
  }
@@ -47,166 +41,4 @@ function findForceFromFeature(feature, attributes, datafileReader) {
47
41
  return false;
48
42
  });
49
43
  }
50
- export function getForcedVariation(feature, attributes, datafileReader) {
51
- var force = findForceFromFeature(feature, attributes, datafileReader);
52
- if (!force || !force.variation) {
53
- return undefined;
54
- }
55
- return feature.variations.find(function (v) { return v.value === force.variation; });
56
- }
57
- export function getBucketedVariation(feature, attributes, bucketValue, datafileReader, logger) {
58
- var _a = getMatchedTrafficAndAllocation(feature.traffic, attributes, bucketValue, datafileReader, logger), matchedTraffic = _a.matchedTraffic, matchedAllocation = _a.matchedAllocation;
59
- if (!matchedTraffic) {
60
- logger.debug("no matched rule found", {
61
- featureKey: feature.key,
62
- bucketValue: bucketValue,
63
- });
64
- return undefined;
65
- }
66
- if (matchedTraffic.variation) {
67
- var variation_1 = feature.variations.find(function (v) {
68
- return v.value === matchedTraffic.variation;
69
- });
70
- if (variation_1) {
71
- logger.debug("using variation from rule", {
72
- featureKey: feature.key,
73
- variation: variation_1.value,
74
- ruleKey: matchedTraffic.key,
75
- });
76
- return variation_1;
77
- }
78
- }
79
- if (!matchedAllocation) {
80
- logger.debug("no matched allocation found", {
81
- featureKey: feature.key,
82
- bucketValue: bucketValue,
83
- });
84
- return undefined;
85
- }
86
- var variationValue = matchedAllocation.variation;
87
- var variation = feature.variations.find(function (v) {
88
- return v.value === variationValue;
89
- });
90
- if (!variation) {
91
- // this should never happen
92
- logger.debug("no matched variation found", {
93
- featureKey: feature.key,
94
- variation: variationValue,
95
- bucketValue: bucketValue,
96
- });
97
- return undefined;
98
- }
99
- logger.debug("matched variation", {
100
- featureKey: feature.key,
101
- variation: variation.value,
102
- bucketValue: bucketValue,
103
- });
104
- return variation;
105
- }
106
- export function getForcedVariableValue(feature, variableSchema, attributes, datafileReader) {
107
- var force = findForceFromFeature(feature, attributes, datafileReader);
108
- if (!force || !force.variables) {
109
- return undefined;
110
- }
111
- var value = force.variables[variableSchema.key];
112
- if (typeof value === "string" && variableSchema.type === "json") {
113
- return JSON.parse(value);
114
- }
115
- return value;
116
- }
117
- export function getBucketedVariableValue(feature, variableSchema, attributes, bucketValue, datafileReader, logger) {
118
- var _a;
119
- // get traffic
120
- var _b = getMatchedTrafficAndAllocation(feature.traffic, attributes, bucketValue, datafileReader, logger), matchedTraffic = _b.matchedTraffic, matchedAllocation = _b.matchedAllocation;
121
- if (!matchedTraffic) {
122
- logger.debug("no matched rule found", {
123
- featureKey: feature.key,
124
- variableKey: variableSchema.key,
125
- bucketValue: bucketValue,
126
- });
127
- return undefined;
128
- }
129
- var variableKey = variableSchema.key;
130
- // see if variable is set at traffic/rule level
131
- if (matchedTraffic.variables && typeof matchedTraffic.variables[variableKey] !== "undefined") {
132
- logger.debug("using variable from rule", {
133
- featureKey: feature.key,
134
- variableKey: variableKey,
135
- bucketValue: bucketValue,
136
- });
137
- return matchedTraffic.variables[variableKey];
138
- }
139
- if (!matchedAllocation) {
140
- logger.debug("no matched allocation found", {
141
- featureKey: feature.key,
142
- variableKey: variableKey,
143
- bucketValue: bucketValue,
144
- });
145
- return undefined;
146
- }
147
- var variationValue = matchedAllocation.variation;
148
- var variation = feature.variations.find(function (v) {
149
- return v.value === variationValue;
150
- });
151
- if (!variation) {
152
- // this should never happen
153
- logger.debug("no matched variation found", {
154
- feature: feature.key,
155
- variableKey: variableKey,
156
- variation: variationValue,
157
- bucketValue: bucketValue,
158
- });
159
- return undefined;
160
- }
161
- var variableFromVariation = (_a = variation.variables) === null || _a === void 0 ? void 0 : _a.find(function (v) {
162
- return v.key === variableKey;
163
- });
164
- if (!variableFromVariation) {
165
- logger.debug("using default value as variation has no variable", {
166
- featureKey: feature.key,
167
- variableKey: variableKey,
168
- variation: variationValue,
169
- bucketValue: bucketValue,
170
- });
171
- if (variableSchema.type === "json") {
172
- return JSON.parse(variableSchema.defaultValue);
173
- }
174
- return variableSchema.defaultValue;
175
- }
176
- if (variableFromVariation.overrides) {
177
- var override = variableFromVariation.overrides.find(function (o) {
178
- if (o.conditions) {
179
- return allConditionsAreMatched(typeof o.conditions === "string" ? JSON.parse(o.conditions) : o.conditions, attributes);
180
- }
181
- if (o.segments) {
182
- return allGroupSegmentsAreMatched(typeof o.segments === "string" && o.segments !== "*"
183
- ? JSON.parse(o.segments)
184
- : o.segments, attributes, datafileReader);
185
- }
186
- return false;
187
- });
188
- if (override) {
189
- logger.debug("using override value from variation", {
190
- feature: feature.key,
191
- variableKey: variableKey,
192
- variation: variationValue,
193
- bucketValue: bucketValue,
194
- });
195
- if (variableSchema.type === "json") {
196
- return JSON.parse(override.value);
197
- }
198
- return override.value;
199
- }
200
- }
201
- logger.debug("using value from variation", {
202
- feature: feature.key,
203
- variableKey: variableKey,
204
- variation: variationValue,
205
- bucketValue: bucketValue,
206
- });
207
- if (variableSchema.type === "json") {
208
- return JSON.parse(variableFromVariation.value);
209
- }
210
- return variableFromVariation.value;
211
- }
212
44
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature.js","sourceRoot":"","sources":["../src/feature.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feature.js","sourceRoot":"","sources":["../src/feature.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAGvD,MAAM,UAAU,oBAAoB,CAClC,OAAgB,EAChB,WAAmB;IAEnB,KAAyB,UAAkB,EAAlB,KAAA,OAAO,CAAC,UAAU,EAAlB,cAAkB,EAAlB,IAAkB,EAAE;QAAxC,IAAM,UAAU,SAAA;QACb,IAAA,KAAe,UAAU,CAAC,KAAK,EAA9B,KAAK,QAAA,EAAE,GAAG,QAAoB,CAAC;QAEtC,IAAI,UAAU,CAAC,KAAK,IAAI,KAAK,IAAI,WAAW,IAAI,GAAG,IAAI,WAAW,EAAE;YAClE,OAAO,UAAU,CAAC;SACnB;KACF;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAOD,MAAM,UAAU,8BAA8B,CAC5C,OAAkB,EAClB,UAAsB,EACtB,WAAmB,EACnB,cAA8B,EAC9B,MAAc;IAEd,IAAI,iBAAyC,CAAC;IAE9C,IAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,UAAC,CAAC;QACpC,IACE,CAAC,0BAA0B,CACzB,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAC1F,UAAU,EACV,cAAc,CACf,EACD;YACA,OAAO,KAAK,CAAC;SACd;QAED,iBAAiB,GAAG,oBAAoB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QAEzD,IAAI,iBAAiB,EAAE;YACrB,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,cAAc,gBAAA;QACd,iBAAiB,mBAAA;KAClB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAAgB,EAChB,UAAsB,EACtB,cAA8B;IAE9B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;QAClB,OAAO,SAAS,CAAC;KAClB;IAED,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAC,CAAQ;QACjC,IAAI,CAAC,CAAC,UAAU,EAAE;YAChB,OAAO,uBAAuB,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;SAC1D;QAED,IAAI,CAAC,CAAC,QAAQ,EAAE;YACd,OAAO,0BAA0B,CAAC,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;SAC3E;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC"}
package/lib/instance.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Attributes, BucketKey, BucketValue, DatafileContent, Feature, FeatureKey, InitialFeatures, StickyFeatures, VariableType, VariableValue, VariationType, VariationValue } from "@featurevisor/types";
1
+ import { Attributes, BucketKey, BucketValue, DatafileContent, Feature, FeatureKey, InitialFeatures, StickyFeatures, VariableType, VariableValue, VariationType, VariationValue, Variation, RuleKey, VariableKey, VariableSchema } from "@featurevisor/types";
2
2
  import { Logger } from "./logger";
3
3
  import { Emitter } from "./emitter";
4
4
  export type ReadyCallback = () => void;
@@ -27,6 +27,29 @@ export interface InstanceOptions {
27
27
  stickyFeatures?: StickyFeatures;
28
28
  }
29
29
  export type DatafileFetchHandler = (datafileUrl: string) => Promise<DatafileContent>;
30
+ export declare enum EvaluationReason {
31
+ NOT_FOUND = "not_found",
32
+ FORCED = "forced",
33
+ INITIAL = "initial",
34
+ STICKY = "sticky",
35
+ RULE = "rule",
36
+ ALLOCATED = "allocated",
37
+ DEFAULTED = "defaulted",
38
+ OVERRIDE = "override",
39
+ ERROR = "error"
40
+ }
41
+ export interface Evaluation {
42
+ featureKey: FeatureKey;
43
+ reason: EvaluationReason;
44
+ bucketValue?: BucketValue;
45
+ ruleKey?: RuleKey;
46
+ error?: Error;
47
+ variation?: Variation;
48
+ variationValue?: VariationValue;
49
+ variableKey?: VariableKey;
50
+ variableValue?: VariableValue;
51
+ variableSchema?: VariableSchema;
52
+ }
30
53
  type FieldType = VariationType | VariableType;
31
54
  type ValueType = VariableValue;
32
55
  export declare function getValueByType(value: ValueType, fieldType: FieldType): ValueType;
@@ -73,6 +96,7 @@ export declare class FeaturevisorInstance {
73
96
  /**
74
97
  * Variation
75
98
  */
99
+ evaluateVariation(featureKey: FeatureKey | Feature, attributes?: Attributes): Evaluation;
76
100
  getVariation(featureKey: FeatureKey | Feature, attributes?: Attributes): VariationValue | undefined;
77
101
  getVariationBoolean(featureKey: FeatureKey | Feature, attributes?: Attributes): boolean | undefined;
78
102
  getVariationString(featureKey: FeatureKey | Feature, attributes?: Attributes): string | undefined;
@@ -89,6 +113,7 @@ export declare class FeaturevisorInstance {
89
113
  /**
90
114
  * Variable
91
115
  */
116
+ evaluateVariable(featureKey: FeatureKey | Feature, variableKey: VariableKey, attributes?: Attributes): Evaluation;
92
117
  getVariable(featureKey: FeatureKey | Feature, variableKey: string, attributes?: Attributes): VariableValue | undefined;
93
118
  getVariableBoolean(featureKey: FeatureKey | Feature, variableKey: string, attributes?: Attributes): boolean | undefined;
94
119
  getVariableString(featureKey: FeatureKey | Feature, variableKey: string, attributes?: Attributes): string | undefined;