@featurevisor/sdk 0.8.0 → 0.10.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/CHANGELOG.md +22 -0
- package/dist/index.js +1 -1
- package/dist/index.js.gz +0 -0
- package/dist/index.js.map +1 -1
- package/lib/client.d.ts +5 -0
- package/lib/client.js +40 -14
- package/lib/client.js.map +1 -1
- package/lib/createInstance.d.ts +4 -1
- package/lib/createInstance.js +7 -1
- package/lib/createInstance.js.map +1 -1
- package/lib/createInstance.spec.d.ts +1 -0
- package/lib/feature.d.ts +4 -3
- package/lib/feature.js +67 -5
- package/lib/feature.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/logger.d.ts +25 -0
- package/lib/logger.js +57 -0
- package/lib/logger.js.map +1 -0
- package/package.json +3 -3
- package/src/client.ts +62 -15
- package/src/createInstance.spec.ts +70 -0
- package/src/createInstance.ts +11 -2
- package/src/feature.ts +80 -0
- package/src/index.ts +1 -0
- package/src/logger.ts +86 -0
package/lib/client.d.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { Attributes, VariationValue, VariableValue, Feature, DatafileContent, BucketValue, FeatureKey, VariationType, VariableType } from "@featurevisor/types";
|
|
2
|
+
import { Logger } from "./logger";
|
|
2
3
|
export type ActivationCallback = (featureName: string, variation: VariationValue, attributes: Attributes, captureAttributes: Attributes) => void;
|
|
3
4
|
export type ConfigureBucketValue = (feature: any, attributes: any, bucketValue: BucketValue) => BucketValue;
|
|
4
5
|
export interface SdkOptions {
|
|
5
6
|
datafile: DatafileContent | string;
|
|
6
7
|
onActivation?: ActivationCallback;
|
|
7
8
|
configureBucketValue?: ConfigureBucketValue;
|
|
9
|
+
logger?: Logger;
|
|
10
|
+
interceptAttributes?: (attributes: Attributes) => Attributes;
|
|
8
11
|
}
|
|
9
12
|
type FieldType = VariationType | VariableType;
|
|
10
13
|
type ValueType = VariableValue;
|
|
@@ -13,6 +16,8 @@ export declare class FeaturevisorSDK {
|
|
|
13
16
|
private onActivation?;
|
|
14
17
|
private datafileReader;
|
|
15
18
|
private configureBucketValue?;
|
|
19
|
+
private logger;
|
|
20
|
+
private interceptAttributes?;
|
|
16
21
|
constructor(options: SdkOptions);
|
|
17
22
|
setDatafile(datafile: DatafileContent | string): void;
|
|
18
23
|
private getFeature;
|
package/lib/client.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { DatafileReader } from "./datafileReader";
|
|
2
2
|
import { getBucketedVariation, getBucketedVariableValue, getForcedVariation, getForcedVariableValue, } from "./feature";
|
|
3
3
|
import { getBucketedNumber } from "./bucket";
|
|
4
|
+
import { createLogger } from "./logger";
|
|
4
5
|
export function getValueByType(value, fieldType) {
|
|
5
6
|
if (value === undefined) {
|
|
6
7
|
return undefined;
|
|
@@ -33,6 +34,10 @@ var FeaturevisorSDK = /** @class */ (function () {
|
|
|
33
34
|
if (options.configureBucketValue) {
|
|
34
35
|
this.configureBucketValue = options.configureBucketValue;
|
|
35
36
|
}
|
|
37
|
+
this.logger = options.logger || createLogger();
|
|
38
|
+
if (options.interceptAttributes) {
|
|
39
|
+
this.interceptAttributes = options.interceptAttributes;
|
|
40
|
+
}
|
|
36
41
|
this.setDatafile(options.datafile);
|
|
37
42
|
}
|
|
38
43
|
FeaturevisorSDK.prototype.setDatafile = function (datafile) {
|
|
@@ -40,8 +45,7 @@ var FeaturevisorSDK = /** @class */ (function () {
|
|
|
40
45
|
this.datafileReader = new DatafileReader(typeof datafile === "string" ? JSON.parse(datafile) : datafile);
|
|
41
46
|
}
|
|
42
47
|
catch (e) {
|
|
43
|
-
|
|
44
|
-
console.error(e);
|
|
48
|
+
this.logger.error("could not parse datafile", { error: e });
|
|
45
49
|
}
|
|
46
50
|
};
|
|
47
51
|
FeaturevisorSDK.prototype.getFeature = function (featureKey) {
|
|
@@ -73,21 +77,34 @@ var FeaturevisorSDK = /** @class */ (function () {
|
|
|
73
77
|
try {
|
|
74
78
|
var feature = this.getFeature(featureKey);
|
|
75
79
|
if (!feature) {
|
|
80
|
+
this.logger.warn("feature not found in datafile", { featureKey: featureKey });
|
|
76
81
|
return undefined;
|
|
77
82
|
}
|
|
78
|
-
var
|
|
83
|
+
var finalAttributes = this.interceptAttributes
|
|
84
|
+
? this.interceptAttributes(attributes)
|
|
85
|
+
: attributes;
|
|
86
|
+
var forcedVariation = getForcedVariation(feature, finalAttributes, this.datafileReader);
|
|
79
87
|
if (forcedVariation) {
|
|
88
|
+
this.logger.debug("forced variation found", {
|
|
89
|
+
featureKey: featureKey,
|
|
90
|
+
variation: forcedVariation.value,
|
|
91
|
+
});
|
|
80
92
|
return forcedVariation.value;
|
|
81
93
|
}
|
|
82
|
-
var bucketValue = this.getBucketValue(feature,
|
|
83
|
-
var variation = getBucketedVariation(feature,
|
|
94
|
+
var bucketValue = this.getBucketValue(feature, finalAttributes);
|
|
95
|
+
var variation = getBucketedVariation(feature, finalAttributes, bucketValue, this.datafileReader, this.logger);
|
|
84
96
|
if (!variation) {
|
|
97
|
+
this.logger.debug("using default variation", {
|
|
98
|
+
featureKey: featureKey,
|
|
99
|
+
bucketValue: bucketValue,
|
|
100
|
+
variation: feature.defaultVariation,
|
|
101
|
+
});
|
|
85
102
|
return feature.defaultVariation;
|
|
86
103
|
}
|
|
87
104
|
return variation.value;
|
|
88
105
|
}
|
|
89
106
|
catch (e) {
|
|
90
|
-
|
|
107
|
+
this.logger.error("getVariation", { featureKey: featureKey, error: e });
|
|
91
108
|
return undefined;
|
|
92
109
|
}
|
|
93
110
|
};
|
|
@@ -118,25 +135,28 @@ var FeaturevisorSDK = /** @class */ (function () {
|
|
|
118
135
|
if (attributes === void 0) { attributes = {}; }
|
|
119
136
|
try {
|
|
120
137
|
var variationValue = this.getVariation(featureKey, attributes);
|
|
121
|
-
if (
|
|
138
|
+
if (typeof variationValue === "undefined") {
|
|
122
139
|
return undefined;
|
|
123
140
|
}
|
|
124
141
|
if (this.onActivation) {
|
|
142
|
+
var finalAttributes_1 = this.interceptAttributes
|
|
143
|
+
? this.interceptAttributes(attributes)
|
|
144
|
+
: attributes;
|
|
125
145
|
var captureAttributes_1 = {};
|
|
126
146
|
var attributesForCapturing = this.datafileReader
|
|
127
147
|
.getAllAttributes()
|
|
128
148
|
.filter(function (a) { return a.capture === true; });
|
|
129
149
|
attributesForCapturing.forEach(function (a) {
|
|
130
|
-
if (typeof
|
|
150
|
+
if (typeof finalAttributes_1[a.key] !== "undefined") {
|
|
131
151
|
captureAttributes_1[a.key] = attributes[a.key];
|
|
132
152
|
}
|
|
133
153
|
});
|
|
134
|
-
this.onActivation(featureKey, variationValue,
|
|
154
|
+
this.onActivation(featureKey, variationValue, finalAttributes_1, captureAttributes_1);
|
|
135
155
|
}
|
|
136
156
|
return variationValue;
|
|
137
157
|
}
|
|
138
158
|
catch (e) {
|
|
139
|
-
|
|
159
|
+
this.logger.error("activate", { featureKey: featureKey, error: e });
|
|
140
160
|
return undefined;
|
|
141
161
|
}
|
|
142
162
|
};
|
|
@@ -168,23 +188,29 @@ var FeaturevisorSDK = /** @class */ (function () {
|
|
|
168
188
|
try {
|
|
169
189
|
var feature = this.getFeature(featureKey);
|
|
170
190
|
if (!feature) {
|
|
191
|
+
this.logger.warn("feature not found in datafile", { featureKey: featureKey, variableKey: variableKey });
|
|
171
192
|
return undefined;
|
|
172
193
|
}
|
|
173
194
|
var variableSchema = Array.isArray(feature.variablesSchema)
|
|
174
195
|
? feature.variablesSchema.find(function (v) { return v.key === variableKey; })
|
|
175
196
|
: undefined;
|
|
176
197
|
if (!variableSchema) {
|
|
198
|
+
this.logger.warn("variable schema not found", { featureKey: featureKey, variableKey: variableKey });
|
|
177
199
|
return undefined;
|
|
178
200
|
}
|
|
179
|
-
var
|
|
201
|
+
var finalAttributes = this.interceptAttributes
|
|
202
|
+
? this.interceptAttributes(attributes)
|
|
203
|
+
: attributes;
|
|
204
|
+
var forcedVariableValue = getForcedVariableValue(feature, variableSchema, finalAttributes, this.datafileReader);
|
|
180
205
|
if (typeof forcedVariableValue !== "undefined") {
|
|
206
|
+
this.logger.debug("forced variable value found", { featureKey: featureKey, variableKey: variableKey });
|
|
181
207
|
return forcedVariableValue;
|
|
182
208
|
}
|
|
183
|
-
var bucketValue = this.getBucketValue(feature,
|
|
184
|
-
return getBucketedVariableValue(feature, variableSchema,
|
|
209
|
+
var bucketValue = this.getBucketValue(feature, finalAttributes);
|
|
210
|
+
return getBucketedVariableValue(feature, variableSchema, finalAttributes, bucketValue, this.datafileReader, this.logger);
|
|
185
211
|
}
|
|
186
212
|
catch (e) {
|
|
187
|
-
|
|
213
|
+
this.logger.error("getVariable", { featureKey: featureKey, variableKey: variableKey, error: e });
|
|
188
214
|
return undefined;
|
|
189
215
|
}
|
|
190
216
|
};
|
package/lib/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAU,MAAM,UAAU,CAAC;AAsBhD,MAAM,UAAU,cAAc,CAAC,KAAgB,EAAE,SAAoB;IACnE,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,OAAO,SAAS,CAAC;KAClB;IAED,QAAQ,SAAS,EAAE;QACjB,KAAK,QAAQ;YACX,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QACvD,KAAK,SAAS;YACZ,OAAO,QAAQ,CAAC,KAAe,EAAE,EAAE,CAAC,CAAC;QACvC,KAAK,QAAQ;YACX,OAAO,UAAU,CAAC,KAAe,CAAC,CAAC;QACrC,KAAK,SAAS;YACZ,OAAO,KAAK,KAAK,IAAI,CAAC;QACxB,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAClD,KAAK,QAAQ;YACX,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QACvD,kDAAkD;QAClD;YACE,OAAO,KAAK,CAAC;KAChB;AACH,CAAC;AAED,iEAAiE;AACjE,kFAAkF;AAClF;IAOE,yBAAY,OAAmB;QAC7B,IAAI,OAAO,CAAC,YAAY,EAAE;YACxB,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;SAC1C;QAED,IAAI,OAAO,CAAC,oBAAoB,EAAE;YAChC,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;SAC1D;QAED,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,YAAY,EAAE,CAAC;QAE/C,IAAI,OAAO,CAAC,mBAAmB,EAAE;YAC/B,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;SACxD;QAED,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,qCAAW,GAAX,UAAY,QAAkC;QAC5C,IAAI;YACF,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CACtC,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAC/D,CAAC;SACH;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;SAC7D;IACH,CAAC;IAEO,oCAAU,GAAlB,UAAmB,UAA4B;QAC7C,OAAO,OAAO,UAAU,KAAK,QAAQ;YACnC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,oBAAoB;YACjE,CAAC,CAAC,UAAU,CAAC,CAAC,wBAAwB;IAC1C,CAAC;IAED;;OAEG;IAEK,sCAAY,GAApB,UAAqB,OAAgB,EAAE,UAAsB;QAC3D,IAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;QAE/B,IAAM,MAAM,GACV,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEvF,OAAO,UAAG,MAAM,cAAI,UAAU,CAAE,CAAC;IACnC,CAAC;IAEO,wCAAc,GAAtB,UAAuB,OAAgB,EAAE,UAAsB;QAC7D,IAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEzD,IAAM,KAAK,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAE3C,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;SAC9D;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IAEH,sCAAY,GAAZ,UACE,UAAgC,EAChC,UAA2B;QAA3B,2BAAA,EAAA,eAA2B;QAE3B,IAAI;YACF,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAE5C,IAAI,CAAC,OAAO,EAAE;gBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,UAAU,YAAA,EAAE,CAAC,CAAC;gBAElE,OAAO,SAAS,CAAC;aAClB;YAED,IAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB;gBAC9C,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;gBACtC,CAAC,CAAC,UAAU,CAAC;YAEf,IAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAE1F,IAAI,eAAe,EAAE;gBACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE;oBAC1C,UAAU,YAAA;oBACV,SAAS,EAAE,eAAe,CAAC,KAAK;iBACjC,CAAC,CAAC;gBAEH,OAAO,eAAe,CAAC,KAAK,CAAC;aAC9B;YAED,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;YAElE,IAAM,SAAS,GAAG,oBAAoB,CACpC,OAAO,EACP,eAAe,EACf,WAAW,EACX,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,MAAM,CACZ,CAAC;YAEF,IAAI,CAAC,SAAS,EAAE;gBACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE;oBAC3C,UAAU,YAAA;oBACV,WAAW,aAAA;oBACX,SAAS,EAAE,OAAO,CAAC,gBAAgB;iBACpC,CAAC,CAAC;gBAEH,OAAO,OAAO,CAAC,gBAAgB,CAAC;aACjC;YAED,OAAO,SAAS,CAAC,KAAK,CAAC;SACxB;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,UAAU,YAAA,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAE5D,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IAED,6CAAmB,GAAnB,UACE,UAAgC,EAChC,UAA2B;QAA3B,2BAAA,EAAA,eAA2B;QAE3B,IAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAEjE,OAAO,cAAc,CAAC,cAAc,EAAE,SAAS,CAAwB,CAAC;IAC1E,CAAC;IAED,4CAAkB,GAAlB,UACE,UAAgC,EAChC,UAA2B;QAA3B,2BAAA,EAAA,eAA2B;QAE3B,IAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAEjE,OAAO,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAuB,CAAC;IACxE,CAAC;IAED,6CAAmB,GAAnB,UACE,UAAgC,EAChC,UAA2B;QAA3B,2BAAA,EAAA,eAA2B;QAE3B,IAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAEjE,OAAO,cAAc,CAAC,cAAc,EAAE,SAAS,CAAuB,CAAC;IACzE,CAAC;IAED,4CAAkB,GAAlB,UACE,UAAgC,EAChC,UAA2B;QAA3B,2BAAA,EAAA,eAA2B;QAE3B,IAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAEjE,OAAO,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAuB,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,kCAAQ,GAAR,UAAS,UAAsB,EAAE,UAA2B;QAA3B,2BAAA,EAAA,eAA2B;QAC1D,IAAI;YACF,IAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAEjE,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE;gBACzC,OAAO,SAAS,CAAC;aAClB;YAED,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAM,iBAAe,GAAG,IAAI,CAAC,mBAAmB;oBAC9C,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;oBACtC,CAAC,CAAC,UAAU,CAAC;gBAEf,IAAM,mBAAiB,GAAe,EAAE,CAAC;gBAEzC,IAAM,sBAAsB,GAAG,IAAI,CAAC,cAAc;qBAC/C,gBAAgB,EAAE;qBAClB,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,OAAO,KAAK,IAAI,EAAlB,CAAkB,CAAC,CAAC;gBAErC,sBAAsB,CAAC,OAAO,CAAC,UAAC,CAAC;oBAC/B,IAAI,OAAO,iBAAe,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,WAAW,EAAE;wBACjD,mBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;qBAC9C;gBACH,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,cAAc,EAAE,iBAAe,EAAE,mBAAiB,CAAC,CAAC;aACnF;YAED,OAAO,cAAc,CAAC;SACvB;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,UAAU,YAAA,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAExD,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IAED,yCAAe,GAAf,UAAgB,UAAsB,EAAE,UAA2B;QAA3B,2BAAA,EAAA,eAA2B;QACjE,IAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAE7D,OAAO,cAAc,CAAC,cAAc,EAAE,SAAS,CAAwB,CAAC;IAC1E,CAAC;IAED,wCAAc,GAAd,UAAe,UAAsB,EAAE,UAA2B;QAA3B,2BAAA,EAAA,eAA2B;QAChE,IAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAE7D,OAAO,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAuB,CAAC;IACxE,CAAC;IAED,yCAAe,GAAf,UAAgB,UAAsB,EAAE,UAA2B;QAA3B,2BAAA,EAAA,eAA2B;QACjE,IAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAE7D,OAAO,cAAc,CAAC,cAAc,EAAE,SAAS,CAAuB,CAAC;IACzE,CAAC;IAED,wCAAc,GAAd,UAAe,UAAsB,EAAE,UAA2B;QAA3B,2BAAA,EAAA,eAA2B;QAChE,IAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAE7D,OAAO,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAuB,CAAC;IACxE,CAAC;IAED;;OAEG;IAEH,qCAAW,GAAX,UACE,UAAgC,EAChC,WAAmB,EACnB,UAA2B;QAA3B,2BAAA,EAAA,eAA2B;QAE3B,IAAI;YACF,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAE5C,IAAI,CAAC,OAAO,EAAE;gBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,UAAU,YAAA,EAAE,WAAW,aAAA,EAAE,CAAC,CAAC;gBAE/E,OAAO,SAAS,CAAC;aAClB;YAED,IAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;gBAC3D,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,GAAG,KAAK,WAAW,EAArB,CAAqB,CAAC;gBAC5D,CAAC,CAAC,SAAS,CAAC;YAEd,IAAI,CAAC,cAAc,EAAE;gBACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,UAAU,YAAA,EAAE,WAAW,aAAA,EAAE,CAAC,CAAC;gBAE3E,OAAO,SAAS,CAAC;aAClB;YAED,IAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB;gBAC9C,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;gBACtC,CAAC,CAAC,UAAU,CAAC;YAEf,IAAM,mBAAmB,GAAG,sBAAsB,CAChD,OAAO,EACP,cAAc,EACd,eAAe,EACf,IAAI,CAAC,cAAc,CACpB,CAAC;YAEF,IAAI,OAAO,mBAAmB,KAAK,WAAW,EAAE;gBAC9C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAE,UAAU,YAAA,EAAE,WAAW,aAAA,EAAE,CAAC,CAAC;gBAE9E,OAAO,mBAAmB,CAAC;aAC5B;YAED,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;YAElE,OAAO,wBAAwB,CAC7B,OAAO,EACP,cAAc,EACd,eAAe,EACf,WAAW,EACX,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,MAAM,CACZ,CAAC;SACH;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,UAAU,YAAA,EAAE,WAAW,aAAA,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAExE,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IAED,4CAAkB,GAAlB,UACE,UAAgC,EAChC,WAAmB,EACnB,UAA2B;QAA3B,2BAAA,EAAA,eAA2B;QAE3B,IAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QAE5E,OAAO,cAAc,CAAC,aAAa,EAAE,SAAS,CAAwB,CAAC;IACzE,CAAC;IAED,2CAAiB,GAAjB,UACE,UAAgC,EAChC,WAAmB,EACnB,UAA2B;QAA3B,2BAAA,EAAA,eAA2B;QAE3B,IAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QAE5E,OAAO,cAAc,CAAC,aAAa,EAAE,QAAQ,CAAuB,CAAC;IACvE,CAAC;IAED,4CAAkB,GAAlB,UACE,UAAgC,EAChC,WAAmB,EACnB,UAA2B;QAA3B,2BAAA,EAAA,eAA2B;QAE3B,IAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QAE5E,OAAO,cAAc,CAAC,aAAa,EAAE,SAAS,CAAuB,CAAC;IACxE,CAAC;IAED,2CAAiB,GAAjB,UACE,UAAgC,EAChC,WAAmB,EACnB,UAA2B;QAA3B,2BAAA,EAAA,eAA2B;QAE3B,IAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QAE5E,OAAO,cAAc,CAAC,aAAa,EAAE,QAAQ,CAAuB,CAAC;IACvE,CAAC;IAED,0CAAgB,GAAhB,UACE,UAAgC,EAChC,WAAmB,EACnB,UAA2B;QAA3B,2BAAA,EAAA,eAA2B;QAE3B,IAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QAE5E,OAAO,cAAc,CAAC,aAAa,EAAE,OAAO,CAAyB,CAAC;IACxE,CAAC;IAED,2CAAiB,GAAjB,UACE,UAAgC,EAChC,WAAmB,EACnB,UAA2B;QAA3B,2BAAA,EAAA,eAA2B;QAE3B,IAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QAE5E,OAAO,cAAc,CAAC,aAAa,EAAE,QAAQ,CAAkB,CAAC;IAClE,CAAC;IAED,yCAAe,GAAf,UACE,UAAgC,EAChC,WAAmB,EACnB,UAA2B;QAA3B,2BAAA,EAAA,eAA2B;QAE3B,IAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QAE5E,OAAO,cAAc,CAAC,aAAa,EAAE,MAAM,CAAkB,CAAC;IAChE,CAAC;IACH,sBAAC;AAAD,CAAC,AApWD,IAoWC"}
|
package/lib/createInstance.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { DatafileContent } from "@featurevisor/types";
|
|
1
|
+
import { DatafileContent, Attributes } from "@featurevisor/types";
|
|
2
2
|
import { FeaturevisorSDK, ConfigureBucketValue, ActivationCallback } from "./client";
|
|
3
|
+
import { Logger } from "./logger";
|
|
3
4
|
export type ReadyCallback = () => void;
|
|
4
5
|
export interface InstanceOptions {
|
|
5
6
|
datafile?: DatafileContent | string;
|
|
@@ -8,6 +9,8 @@ export interface InstanceOptions {
|
|
|
8
9
|
datafileUrl?: string;
|
|
9
10
|
onReady?: ReadyCallback;
|
|
10
11
|
handleDatafileFetch?: (datafileUrl: string) => Promise<DatafileContent>;
|
|
12
|
+
logger?: Logger;
|
|
13
|
+
interceptAttributes?: (attributes: Attributes) => Attributes;
|
|
11
14
|
}
|
|
12
15
|
export interface FeaturevisorInstance {
|
|
13
16
|
/**
|
package/lib/createInstance.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { FeaturevisorSDK } from "./client";
|
|
2
|
+
import { createLogger } from "./logger";
|
|
2
3
|
function getInstanceFromSdk(sdk, options) {
|
|
3
4
|
return {
|
|
4
5
|
// variation
|
|
@@ -43,14 +44,17 @@ function fetchDatafileContent(datafileUrl, options) {
|
|
|
43
44
|
}
|
|
44
45
|
export function createInstance(options) {
|
|
45
46
|
if (!options.datafile && !options.datafileUrl) {
|
|
46
|
-
throw new Error("Featurevisor SDK instance cannot be created without `datafile`
|
|
47
|
+
throw new Error("Featurevisor SDK instance cannot be created without both `datafile` and `datafileUrl` options");
|
|
47
48
|
}
|
|
49
|
+
var logger = options.logger || createLogger();
|
|
48
50
|
// datafile content is already provided
|
|
49
51
|
if (options.datafile) {
|
|
50
52
|
var sdk_1 = new FeaturevisorSDK({
|
|
51
53
|
datafile: options.datafile,
|
|
52
54
|
onActivation: options.onActivation,
|
|
53
55
|
configureBucketValue: options.configureBucketValue,
|
|
56
|
+
logger: logger,
|
|
57
|
+
interceptAttributes: options.interceptAttributes,
|
|
54
58
|
});
|
|
55
59
|
if (typeof options.onReady === "function") {
|
|
56
60
|
var onReady_1 = options.onReady;
|
|
@@ -65,6 +69,8 @@ export function createInstance(options) {
|
|
|
65
69
|
datafile: emptyDatafile,
|
|
66
70
|
onActivation: options.onActivation,
|
|
67
71
|
configureBucketValue: options.configureBucketValue,
|
|
72
|
+
logger: logger,
|
|
73
|
+
interceptAttributes: options.interceptAttributes,
|
|
68
74
|
});
|
|
69
75
|
if (options.datafileUrl) {
|
|
70
76
|
fetchDatafileContent(options.datafileUrl, options)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createInstance.js","sourceRoot":"","sources":["../src/createInstance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAA4C,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"createInstance.js","sourceRoot":"","sources":["../src/createInstance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/lib/feature.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Allocation, Attributes, Traffic, Feature, Variation, VariableValue } from "@featurevisor/types";
|
|
2
2
|
import { DatafileReader } from "./datafileReader";
|
|
3
3
|
import { VariableSchema } from "@featurevisor/types/src";
|
|
4
|
-
|
|
4
|
+
import { Logger } from "./logger";
|
|
5
|
+
export declare function getMatchedTraffic(traffic: Traffic[], attributes: Attributes, bucketValue: number, datafileReader: DatafileReader, logger: Logger): Traffic | undefined;
|
|
5
6
|
export declare function getMatchedAllocation(matchedTraffic: Traffic, bucketValue: number): Allocation | undefined;
|
|
6
7
|
export declare function getForcedVariation(feature: Feature, attributes: Attributes, datafileReader: DatafileReader): Variation | undefined;
|
|
7
|
-
export declare function getBucketedVariation(feature: Feature, attributes: Attributes, bucketValue: number, datafileReader: DatafileReader): Variation | undefined;
|
|
8
|
+
export declare function getBucketedVariation(feature: Feature, attributes: Attributes, bucketValue: number, datafileReader: DatafileReader, logger: Logger): Variation | undefined;
|
|
8
9
|
export declare function getForcedVariableValue(feature: Feature, variableSchema: VariableSchema, attributes: Attributes, datafileReader: DatafileReader): VariableValue | undefined;
|
|
9
|
-
export declare function getBucketedVariableValue(feature: Feature, variableSchema: VariableSchema, attributes: Attributes, bucketValue: number, datafileReader: DatafileReader): VariableValue | undefined;
|
|
10
|
+
export declare function getBucketedVariableValue(feature: Feature, variableSchema: VariableSchema, attributes: Attributes, bucketValue: number, datafileReader: DatafileReader, logger: Logger): VariableValue | undefined;
|
package/lib/feature.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { allGroupSegmentsAreMatched } from "./segments";
|
|
2
2
|
import { allConditionsAreMatched } from "./conditions";
|
|
3
|
-
export function getMatchedTraffic(traffic, attributes, bucketValue, datafileReader) {
|
|
3
|
+
export function getMatchedTraffic(traffic, attributes, bucketValue, datafileReader, logger) {
|
|
4
4
|
return traffic.find(function (traffic) {
|
|
5
5
|
if (bucketValue > traffic.percentage) {
|
|
6
6
|
// out of bucket range
|
|
@@ -11,6 +11,9 @@ export function getMatchedTraffic(traffic, attributes, bucketValue, datafileRead
|
|
|
11
11
|
: traffic.segments, attributes, datafileReader)) {
|
|
12
12
|
return false;
|
|
13
13
|
}
|
|
14
|
+
logger.debug("matched rule", {
|
|
15
|
+
ruleKey: traffic.key,
|
|
16
|
+
});
|
|
14
17
|
return true;
|
|
15
18
|
});
|
|
16
19
|
}
|
|
@@ -47,13 +50,21 @@ export function getForcedVariation(feature, attributes, datafileReader) {
|
|
|
47
50
|
}
|
|
48
51
|
return feature.variations.find(function (v) { return v.value === force.variation; });
|
|
49
52
|
}
|
|
50
|
-
export function getBucketedVariation(feature, attributes, bucketValue, datafileReader) {
|
|
51
|
-
var matchedTraffic = getMatchedTraffic(feature.traffic, attributes, bucketValue, datafileReader);
|
|
53
|
+
export function getBucketedVariation(feature, attributes, bucketValue, datafileReader, logger) {
|
|
54
|
+
var matchedTraffic = getMatchedTraffic(feature.traffic, attributes, bucketValue, datafileReader, logger);
|
|
52
55
|
if (!matchedTraffic) {
|
|
56
|
+
logger.debug("no matched rule found", {
|
|
57
|
+
featureKey: feature.key,
|
|
58
|
+
bucketValue: bucketValue,
|
|
59
|
+
});
|
|
53
60
|
return undefined;
|
|
54
61
|
}
|
|
55
62
|
var allocation = getMatchedAllocation(matchedTraffic, bucketValue);
|
|
56
63
|
if (!allocation) {
|
|
64
|
+
logger.debug("no matched allocation found", {
|
|
65
|
+
featureKey: feature.key,
|
|
66
|
+
bucketValue: bucketValue,
|
|
67
|
+
});
|
|
57
68
|
return undefined;
|
|
58
69
|
}
|
|
59
70
|
var variationValue = allocation.variation;
|
|
@@ -61,8 +72,19 @@ export function getBucketedVariation(feature, attributes, bucketValue, datafileR
|
|
|
61
72
|
return v.value === variationValue;
|
|
62
73
|
});
|
|
63
74
|
if (!variation) {
|
|
75
|
+
// this should never happen
|
|
76
|
+
logger.debug("no matched variation found", {
|
|
77
|
+
featureKey: feature.key,
|
|
78
|
+
variation: variationValue,
|
|
79
|
+
bucketValue: bucketValue,
|
|
80
|
+
});
|
|
64
81
|
return undefined;
|
|
65
82
|
}
|
|
83
|
+
logger.debug("matched variation", {
|
|
84
|
+
featureKey: feature.key,
|
|
85
|
+
variation: variation.value,
|
|
86
|
+
bucketValue: bucketValue,
|
|
87
|
+
});
|
|
66
88
|
return variation;
|
|
67
89
|
}
|
|
68
90
|
export function getForcedVariableValue(feature, variableSchema, attributes, datafileReader) {
|
|
@@ -76,20 +98,35 @@ export function getForcedVariableValue(feature, variableSchema, attributes, data
|
|
|
76
98
|
}
|
|
77
99
|
return value;
|
|
78
100
|
}
|
|
79
|
-
export function getBucketedVariableValue(feature, variableSchema, attributes, bucketValue, datafileReader) {
|
|
101
|
+
export function getBucketedVariableValue(feature, variableSchema, attributes, bucketValue, datafileReader, logger) {
|
|
80
102
|
var _a;
|
|
81
103
|
// get traffic
|
|
82
|
-
var matchedTraffic = getMatchedTraffic(feature.traffic, attributes, bucketValue, datafileReader);
|
|
104
|
+
var matchedTraffic = getMatchedTraffic(feature.traffic, attributes, bucketValue, datafileReader, logger);
|
|
83
105
|
if (!matchedTraffic) {
|
|
106
|
+
logger.debug("no matched rule found", {
|
|
107
|
+
featureKey: feature.key,
|
|
108
|
+
variableKey: variableSchema.key,
|
|
109
|
+
bucketValue: bucketValue,
|
|
110
|
+
});
|
|
84
111
|
return undefined;
|
|
85
112
|
}
|
|
86
113
|
var variableKey = variableSchema.key;
|
|
87
114
|
// see if variable is set at traffic/rule level
|
|
88
115
|
if (matchedTraffic.variables && typeof matchedTraffic.variables[variableKey] !== "undefined") {
|
|
116
|
+
logger.debug("using variable from rule", {
|
|
117
|
+
featureKey: feature.key,
|
|
118
|
+
variableKey: variableKey,
|
|
119
|
+
bucketValue: bucketValue,
|
|
120
|
+
});
|
|
89
121
|
return matchedTraffic.variables[variableKey];
|
|
90
122
|
}
|
|
91
123
|
var allocation = getMatchedAllocation(matchedTraffic, bucketValue);
|
|
92
124
|
if (!allocation) {
|
|
125
|
+
logger.debug("no matched allocation found", {
|
|
126
|
+
featureKey: feature.key,
|
|
127
|
+
variableKey: variableKey,
|
|
128
|
+
bucketValue: bucketValue,
|
|
129
|
+
});
|
|
93
130
|
return undefined;
|
|
94
131
|
}
|
|
95
132
|
var variationValue = allocation.variation;
|
|
@@ -97,12 +134,25 @@ export function getBucketedVariableValue(feature, variableSchema, attributes, bu
|
|
|
97
134
|
return v.value === variationValue;
|
|
98
135
|
});
|
|
99
136
|
if (!variation) {
|
|
137
|
+
// this should never happen
|
|
138
|
+
logger.debug("no matched variation found", {
|
|
139
|
+
feature: feature.key,
|
|
140
|
+
variableKey: variableKey,
|
|
141
|
+
variation: variationValue,
|
|
142
|
+
bucketValue: bucketValue,
|
|
143
|
+
});
|
|
100
144
|
return undefined;
|
|
101
145
|
}
|
|
102
146
|
var variableFromVariation = (_a = variation.variables) === null || _a === void 0 ? void 0 : _a.find(function (v) {
|
|
103
147
|
return v.key === variableKey;
|
|
104
148
|
});
|
|
105
149
|
if (!variableFromVariation) {
|
|
150
|
+
logger.debug("using default value as variation has no variable", {
|
|
151
|
+
featureKey: feature.key,
|
|
152
|
+
variableKey: variableKey,
|
|
153
|
+
variation: variationValue,
|
|
154
|
+
bucketValue: bucketValue,
|
|
155
|
+
});
|
|
106
156
|
if (variableSchema.type === "json") {
|
|
107
157
|
return JSON.parse(variableSchema.defaultValue);
|
|
108
158
|
}
|
|
@@ -121,12 +171,24 @@ export function getBucketedVariableValue(feature, variableSchema, attributes, bu
|
|
|
121
171
|
return false;
|
|
122
172
|
});
|
|
123
173
|
if (override) {
|
|
174
|
+
logger.debug("using override value from variation", {
|
|
175
|
+
feature: feature.key,
|
|
176
|
+
variableKey: variableKey,
|
|
177
|
+
variation: variationValue,
|
|
178
|
+
bucketValue: bucketValue,
|
|
179
|
+
});
|
|
124
180
|
if (variableSchema.type === "json") {
|
|
125
181
|
return JSON.parse(override.value);
|
|
126
182
|
}
|
|
127
183
|
return override.value;
|
|
128
184
|
}
|
|
129
185
|
}
|
|
186
|
+
logger.debug("using value from variation", {
|
|
187
|
+
feature: feature.key,
|
|
188
|
+
variableKey: variableKey,
|
|
189
|
+
variation: variationValue,
|
|
190
|
+
bucketValue: bucketValue,
|
|
191
|
+
});
|
|
130
192
|
if (variableSchema.type === "json") {
|
|
131
193
|
return JSON.parse(variableFromVariation.value);
|
|
132
194
|
}
|
package/lib/feature.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature.js","sourceRoot":"","sources":["../src/feature.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"feature.js","sourceRoot":"","sources":["../src/feature.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC"}
|
package/lib/logger.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export type LogLevel = "debug" | "info" | "warn" | "error";
|
|
2
|
+
export type LogMessage = string;
|
|
3
|
+
export interface LogDetails {
|
|
4
|
+
[key: string]: any;
|
|
5
|
+
}
|
|
6
|
+
export type LogHandler = (level: LogLevel, message: LogMessage, details?: LogDetails) => void;
|
|
7
|
+
export interface CreateLoggerOptions {
|
|
8
|
+
levels?: LogLevel[];
|
|
9
|
+
handler?: LogHandler;
|
|
10
|
+
}
|
|
11
|
+
export declare const loggerPrefix = "[Featurevisor]";
|
|
12
|
+
export declare const defaultLogLevels: LogLevel[];
|
|
13
|
+
export declare const defaultLogHandler: LogHandler;
|
|
14
|
+
export declare class Logger {
|
|
15
|
+
private levels;
|
|
16
|
+
private handle;
|
|
17
|
+
constructor(options: CreateLoggerOptions);
|
|
18
|
+
setLevels(levels: LogLevel[]): void;
|
|
19
|
+
log(level: LogLevel, message: LogMessage, details?: LogDetails): void;
|
|
20
|
+
debug(message: LogMessage, details?: LogDetails): void;
|
|
21
|
+
info(message: LogMessage, details?: LogDetails): void;
|
|
22
|
+
warn(message: LogMessage, details?: LogDetails): void;
|
|
23
|
+
error(message: LogMessage, details?: LogDetails): void;
|
|
24
|
+
}
|
|
25
|
+
export declare function createLogger(options?: CreateLoggerOptions): Logger;
|
package/lib/logger.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export var loggerPrefix = "[Featurevisor]";
|
|
2
|
+
export var defaultLogLevels = [
|
|
3
|
+
// supported, but not enabled by default
|
|
4
|
+
// "debug",
|
|
5
|
+
// "info",
|
|
6
|
+
// enabled by default
|
|
7
|
+
"warn",
|
|
8
|
+
"error",
|
|
9
|
+
];
|
|
10
|
+
export var defaultLogHandler = function defaultLogHandler(level, message, details) {
|
|
11
|
+
if (details === void 0) { details = {}; }
|
|
12
|
+
switch (level) {
|
|
13
|
+
case "debug":
|
|
14
|
+
console.log(loggerPrefix, message, details);
|
|
15
|
+
case "info":
|
|
16
|
+
console.info(loggerPrefix, message, details);
|
|
17
|
+
case "warn":
|
|
18
|
+
console.warn(loggerPrefix, message, details);
|
|
19
|
+
case "error":
|
|
20
|
+
console.error(loggerPrefix, message, details);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
var Logger = /** @class */ (function () {
|
|
24
|
+
function Logger(options) {
|
|
25
|
+
this.levels = options.levels;
|
|
26
|
+
this.handle = options.handler;
|
|
27
|
+
}
|
|
28
|
+
Logger.prototype.setLevels = function (levels) {
|
|
29
|
+
this.levels = levels;
|
|
30
|
+
};
|
|
31
|
+
Logger.prototype.log = function (level, message, details) {
|
|
32
|
+
if (this.levels.indexOf(level) !== -1) {
|
|
33
|
+
this.handle(level, message, details);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
Logger.prototype.debug = function (message, details) {
|
|
37
|
+
this.log("debug", message, details);
|
|
38
|
+
};
|
|
39
|
+
Logger.prototype.info = function (message, details) {
|
|
40
|
+
this.log("info", message, details);
|
|
41
|
+
};
|
|
42
|
+
Logger.prototype.warn = function (message, details) {
|
|
43
|
+
this.log("warn", message, details);
|
|
44
|
+
};
|
|
45
|
+
Logger.prototype.error = function (message, details) {
|
|
46
|
+
this.log("error", message, details);
|
|
47
|
+
};
|
|
48
|
+
return Logger;
|
|
49
|
+
}());
|
|
50
|
+
export { Logger };
|
|
51
|
+
export function createLogger(options) {
|
|
52
|
+
if (options === void 0) { options = {}; }
|
|
53
|
+
var levels = options.levels || defaultLogLevels;
|
|
54
|
+
var logHandler = options.handler || defaultLogHandler;
|
|
55
|
+
return new Logger({ levels: levels, handler: logHandler });
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAeA,MAAM,CAAC,IAAM,YAAY,GAAG,gBAAgB,CAAC;AAE7C,MAAM,CAAC,IAAM,gBAAgB,GAAe;IAC1C,wCAAwC;IACxC,WAAW;IACX,UAAU;IAEV,qBAAqB;IACrB,MAAM;IACN,OAAO;CACR,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAe,SAAS,iBAAiB,CACrE,KAAK,EACL,OAAO,EACP,OAAY;IAAZ,wBAAA,EAAA,YAAY;IAEZ,QAAQ,KAAK,EAAE;QACb,KAAK,OAAO;YACV,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9C,KAAK,MAAM;YACT,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/C,KAAK,MAAM;YACT,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/C,KAAK,OAAO;YACV,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;KACjD;AACH,CAAC,CAAC;AAEF;IAIE,gBAAY,OAA4B;QACtC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAoB,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,OAAqB,CAAC;IAC9C,CAAC;IAED,0BAAS,GAAT,UAAU,MAAkB;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,oBAAG,GAAH,UAAI,KAAe,EAAE,OAAmB,EAAE,OAAoB;QAC5D,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;YACrC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SACtC;IACH,CAAC;IAED,sBAAK,GAAL,UAAM,OAAmB,EAAE,OAAoB;QAC7C,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,qBAAI,GAAJ,UAAK,OAAmB,EAAE,OAAoB;QAC5C,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,qBAAI,GAAJ,UAAK,OAAmB,EAAE,OAAoB;QAC5C,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,sBAAK,GAAL,UAAM,OAAmB,EAAE,OAAoB;QAC7C,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IACH,aAAC;AAAD,CAAC,AAlCD,IAkCC;;AAED,MAAM,UAAU,YAAY,CAAC,OAAiC;IAAjC,wBAAA,EAAA,YAAiC;IAC5D,IAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,gBAAgB,CAAC;IAClD,IAAM,UAAU,GAAG,OAAO,CAAC,OAAO,IAAI,iBAAiB,CAAC;IAExD,OAAO,IAAI,MAAM,CAAC,EAAE,MAAM,QAAA,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;AACrD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@featurevisor/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "Featurevisor SDK for Node.js and the browser",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "lib/index.js",
|
|
@@ -42,9 +42,9 @@
|
|
|
42
42
|
},
|
|
43
43
|
"license": "MIT",
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@featurevisor/types": "^0.
|
|
45
|
+
"@featurevisor/types": "^0.10.0",
|
|
46
46
|
"murmurhash": "^2.0.1",
|
|
47
47
|
"semver": "^7.3.8"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "17973c9d208ff9462ed0f429f06a278ed40aa8d7"
|
|
50
50
|
}
|