@featurevisor/sdk 0.18.0 → 0.20.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.
@@ -1,28 +1,30 @@
1
1
  import {
2
2
  Attributes,
3
- VariationValue,
4
- VariableValue,
5
- Feature,
6
- DatafileContent,
7
3
  BucketKey,
8
4
  BucketValue,
5
+ DatafileContent,
6
+ Feature,
9
7
  FeatureKey,
10
- VariationType,
11
- VariableType,
12
- StickyFeatures,
13
8
  InitialFeatures,
9
+ StickyFeatures,
10
+ VariableType,
11
+ VariableValue,
12
+ VariationType,
13
+ VariationValue,
14
14
  } from "@featurevisor/types";
15
+
16
+ import { createLogger, Logger } from "./logger";
15
17
  import { DatafileReader } from "./datafileReader";
18
+ import { Emitter } from "./emitter";
19
+ import { getBucketedNumber } from "./bucket";
16
20
  import {
17
21
  getBucketedVariation,
18
22
  getBucketedVariableValue,
19
23
  getForcedVariation,
20
24
  getForcedVariableValue,
21
25
  } from "./feature";
22
- import { getBucketedNumber } from "./bucket";
23
- import { createLogger, Logger } from "./logger";
24
- import { Emitter } from "./emitter";
25
- import { Statuses } from "./statuses";
26
+
27
+ export type ReadyCallback = () => void;
26
28
 
27
29
  export type ActivationCallback = (
28
30
  featureName: string,
@@ -33,17 +35,52 @@ export type ActivationCallback = (
33
35
 
34
36
  export type ConfigureBucketValue = (feature, attributes, bucketValue: BucketValue) => BucketValue;
35
37
 
36
- export interface SdkOptions {
37
- datafile: DatafileContent | string;
38
- onActivation?: ActivationCallback; // @TODO: move it to FeaturevisorInstance in next breaking semver
38
+ export interface Statuses {
39
+ ready: boolean;
40
+ refreshInProgress: boolean;
41
+ }
42
+
43
+ export type Event = "ready" | "refresh" | "update" | "activation";
44
+
45
+ interface Listeners {
46
+ [key: string]: Function[];
47
+ }
48
+
49
+ export interface InstanceOptions {
39
50
  configureBucketValue?: ConfigureBucketValue;
40
- logger?: Logger; // @TODO: keep it in FeaturevisorInstance only in next breaking semver
41
- emitter?: Emitter; // @TODO: keep it in FeaturevisorInstance only in next breaking semver
42
- interceptAttributes?: (attributes: Attributes) => Attributes; // @TODO: move it to FeaturevisorInstance in next breaking semver
43
- stickyFeatures?: StickyFeatures;
51
+ datafile?: DatafileContent | string;
52
+ datafileUrl?: string;
53
+ handleDatafileFetch?: (datafileUrl: string) => Promise<DatafileContent>;
44
54
  initialFeatures?: InitialFeatures;
45
- statuses?: Statuses;
46
- fromInstance?: boolean;
55
+ interceptAttributes?: (attributes: Attributes) => Attributes;
56
+ logger?: Logger;
57
+ onActivation?: ActivationCallback;
58
+ onReady?: ReadyCallback;
59
+ onRefresh?: () => void;
60
+ onUpdate?: () => void;
61
+ refreshInterval?: number; // seconds
62
+ stickyFeatures?: StickyFeatures;
63
+ }
64
+
65
+ const emptyDatafile: DatafileContent = {
66
+ schemaVersion: "1",
67
+ revision: "unknown",
68
+ attributes: [],
69
+ segments: [],
70
+ features: [],
71
+ };
72
+
73
+ export type DatafileFetchHandler = (datafileUrl: string) => Promise<DatafileContent>;
74
+
75
+ function fetchDatafileContent(
76
+ datafileUrl,
77
+ handleDatafileFetch?: DatafileFetchHandler,
78
+ ): Promise<DatafileContent> {
79
+ if (handleDatafileFetch) {
80
+ return handleDatafileFetch(datafileUrl);
81
+ }
82
+
83
+ return fetch(datafileUrl).then((res) => res.json());
47
84
  }
48
85
 
49
86
  type FieldType = VariationType | VariableType;
@@ -73,54 +110,106 @@ export function getValueByType(value: ValueType, fieldType: FieldType): ValueTyp
73
110
  }
74
111
  }
75
112
 
76
- // @TODO: change it to FeaturevisorEngine in next breaking semver
77
- // @TODO: move activate*() methods to FeaturevisorInstance in next breaking semver
78
- export class FeaturevisorSDK {
79
- private onActivation?: ActivationCallback;
80
- private datafileReader: DatafileReader;
113
+ export class FeaturevisorInstance {
114
+ // from options
81
115
  private configureBucketValue?: ConfigureBucketValue;
82
- private logger: Logger;
83
- private emitter?: Emitter;
116
+ private datafileUrl?: string;
117
+ private handleDatafileFetch?: DatafileFetchHandler;
118
+ private initialFeatures?: InitialFeatures;
84
119
  private interceptAttributes?: (attributes: Attributes) => Attributes;
120
+ private logger: Logger;
121
+ private refreshInterval?: number; // seconds
85
122
  private stickyFeatures?: StickyFeatures;
86
- private initialFeatures?: InitialFeatures;
87
- private statuses?: Statuses;
88
- private fromInstance: boolean;
89
123
 
90
- constructor(options: SdkOptions) {
91
- if (options.onActivation) {
92
- this.onActivation = options.onActivation;
124
+ // internally created
125
+ private datafileReader: DatafileReader;
126
+ private emitter: Emitter;
127
+ private statuses: Statuses;
128
+ private intervalId?: ReturnType<typeof setInterval>;
129
+
130
+ // exposed from emitter
131
+ public on: Emitter["addListener"];
132
+ public addListener: Emitter["addListener"];
133
+ public off: Emitter["removeListener"];
134
+ public removeListener: Emitter["removeListener"];
135
+ public removeAllListeners: Emitter["removeAllListeners"];
136
+
137
+ constructor(options: InstanceOptions) {
138
+ // from options
139
+ this.configureBucketValue = options.configureBucketValue;
140
+ this.datafileUrl = options.datafileUrl;
141
+ this.handleDatafileFetch = options.handleDatafileFetch;
142
+ this.initialFeatures = options.initialFeatures;
143
+ this.interceptAttributes = options.interceptAttributes;
144
+ this.logger = options.logger || createLogger();
145
+ this.refreshInterval = options.refreshInterval;
146
+ this.stickyFeatures = options.stickyFeatures;
147
+
148
+ // internal
149
+ this.emitter = new Emitter();
150
+ this.statuses = {
151
+ ready: false,
152
+ refreshInProgress: false,
153
+ };
154
+
155
+ // register events
156
+ if (options.onReady) {
157
+ this.emitter.addListener("ready", options.onReady);
93
158
  }
94
159
 
95
- if (options.configureBucketValue) {
96
- this.configureBucketValue = options.configureBucketValue;
160
+ if (options.onRefresh) {
161
+ this.emitter.addListener("refresh", options.onRefresh);
97
162
  }
98
163
 
99
- this.logger = options.logger || createLogger();
100
-
101
- if (options.interceptAttributes) {
102
- this.interceptAttributes = options.interceptAttributes;
164
+ if (options.onUpdate) {
165
+ this.emitter.addListener("update", options.onUpdate);
103
166
  }
104
167
 
105
- if (options.emitter) {
106
- this.emitter = options.emitter;
168
+ if (options.onActivation) {
169
+ this.emitter.addListener("activation", options.onActivation);
107
170
  }
108
171
 
109
- if (options.stickyFeatures) {
110
- this.stickyFeatures = options.stickyFeatures;
111
- }
172
+ // expose emitter methods
173
+ const on = this.emitter.addListener.bind(this.emitter);
174
+ this.on = on;
175
+ this.addListener = on;
112
176
 
113
- if (options.initialFeatures) {
114
- this.initialFeatures = options.initialFeatures;
115
- }
177
+ const off = this.emitter.removeListener.bind(this.emitter);
178
+ this.off = off;
179
+ this.removeListener = off;
116
180
 
117
- if (options.statuses) {
118
- this.statuses = options.statuses;
119
- }
181
+ this.removeAllListeners = this.emitter.removeAllListeners.bind(this.emitter);
120
182
 
121
- this.setDatafile(options.datafile);
183
+ // datafile
184
+ if (options.datafileUrl) {
185
+ this.setDatafile(options.datafile || emptyDatafile);
122
186
 
123
- this.fromInstance = options.fromInstance || false;
187
+ fetchDatafileContent(options.datafileUrl, options.handleDatafileFetch)
188
+ .then((datafile) => {
189
+ this.setDatafile(datafile);
190
+
191
+ this.statuses.ready = true;
192
+ this.emitter.emit("ready");
193
+
194
+ if (this.refreshInterval) {
195
+ this.startRefreshing();
196
+ }
197
+ })
198
+ .catch((e) => {
199
+ this.logger.error("failed to fetch datafile", { error: e });
200
+ });
201
+ } else if (options.datafile) {
202
+ this.setDatafile(options.datafile);
203
+ this.statuses.ready = true;
204
+
205
+ setTimeout(() => {
206
+ this.emitter.emit("ready");
207
+ }, 0);
208
+ } else {
209
+ throw new Error(
210
+ "Featurevisor SDK instance cannot be created without both `datafile` and `datafileUrl` options",
211
+ );
212
+ }
124
213
  }
125
214
 
126
215
  setDatafile(datafile: DatafileContent | string) {
@@ -148,9 +237,80 @@ export class FeaturevisorSDK {
148
237
  }
149
238
 
150
239
  /**
151
- * Bucketing
240
+ * Statuses
152
241
  */
242
+ isReady(): boolean {
243
+ return this.statuses.ready;
244
+ }
245
+
246
+ /**
247
+ * Refresh
248
+ */
249
+ refresh() {
250
+ this.logger.debug("refreshing datafile");
251
+
252
+ if (this.statuses.refreshInProgress) {
253
+ return this.logger.warn("refresh in progress, skipping");
254
+ }
255
+
256
+ if (!this.datafileUrl) {
257
+ return this.logger.error("cannot refresh since `datafileUrl` is not provided");
258
+ }
259
+
260
+ this.statuses.refreshInProgress = true;
261
+
262
+ fetchDatafileContent(this.datafileUrl, this.handleDatafileFetch)
263
+ .then((datafile) => {
264
+ const currentRevision = this.getRevision();
265
+ const newRevision = datafile.revision;
266
+ const isNotSameRevision = currentRevision !== newRevision;
267
+
268
+ this.setDatafile(datafile);
269
+ this.logger.info("refreshed datafile");
270
+
271
+ this.emitter.emit("refresh");
272
+
273
+ if (isNotSameRevision) {
274
+ this.emitter.emit("update");
275
+ }
276
+
277
+ this.statuses.refreshInProgress = false;
278
+ })
279
+ .catch((e) => {
280
+ this.logger.error("failed to refresh datafile", { error: e });
281
+ this.statuses.refreshInProgress = false;
282
+ });
283
+ }
153
284
 
285
+ startRefreshing() {
286
+ if (!this.datafileUrl) {
287
+ return this.logger.error("cannot start refreshing since `datafileUrl` is not provided");
288
+ }
289
+
290
+ if (this.intervalId) {
291
+ return this.logger.warn("refreshing has already started");
292
+ }
293
+
294
+ if (!this.refreshInterval) {
295
+ return this.logger.warn("no `refreshInterval` option provided");
296
+ }
297
+
298
+ this.intervalId = setInterval(() => {
299
+ this.refresh();
300
+ }, this.refreshInterval * 1000);
301
+ }
302
+
303
+ stopRefreshing() {
304
+ if (!this.intervalId) {
305
+ return this.logger.warn("refreshing has not started yet");
306
+ }
307
+
308
+ clearInterval(this.intervalId);
309
+ }
310
+
311
+ /**
312
+ * Bucketing
313
+ */
154
314
  private getBucketKey(feature: Feature, attributes: Attributes): BucketKey {
155
315
  const featureKey = feature.key;
156
316
 
@@ -328,19 +488,13 @@ export class FeaturevisorSDK {
328
488
  }
329
489
  });
330
490
 
331
- if (this.emitter) {
332
- this.emitter.emit(
333
- "activation",
334
- featureKey,
335
- variationValue,
336
- finalAttributes,
337
- captureAttributes,
338
- );
339
- }
340
-
341
- if (this.fromInstance && this.onActivation) {
342
- this.onActivation(featureKey, variationValue, finalAttributes, captureAttributes);
343
- }
491
+ this.emitter.emit(
492
+ "activation",
493
+ featureKey,
494
+ variationValue,
495
+ finalAttributes,
496
+ captureAttributes,
497
+ );
344
498
 
345
499
  return variationValue;
346
500
  } catch (e) {
@@ -540,3 +694,7 @@ export class FeaturevisorSDK {
540
694
  return getValueByType(variableValue, "json") as T | undefined;
541
695
  }
542
696
  }
697
+
698
+ export function createInstance(options: InstanceOptions): FeaturevisorInstance {
699
+ return new FeaturevisorInstance(options);
700
+ }
package/lib/client.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -1,58 +0,0 @@
1
- import { DatafileContent, Attributes, StickyFeatures, InitialFeatures } from "@featurevisor/types";
2
- import { FeaturevisorSDK, ConfigureBucketValue, ActivationCallback } from "./client";
3
- import { Logger } from "./logger";
4
- import { Emitter } from "./emitter";
5
- export type ReadyCallback = () => void;
6
- export interface InstanceOptions {
7
- datafile?: DatafileContent | string;
8
- onActivation?: ActivationCallback;
9
- configureBucketValue?: ConfigureBucketValue;
10
- datafileUrl?: string;
11
- onReady?: ReadyCallback;
12
- handleDatafileFetch?: (datafileUrl: string) => Promise<DatafileContent>;
13
- logger?: Logger;
14
- interceptAttributes?: (attributes: Attributes) => Attributes;
15
- refreshInterval?: number;
16
- onRefresh?: () => void;
17
- onUpdate?: () => void;
18
- stickyFeatures?: StickyFeatures;
19
- initialFeatures?: InitialFeatures;
20
- }
21
- export type Event = "ready" | "refresh" | "update" | "activation";
22
- export interface FeaturevisorInstance {
23
- /**
24
- * From FeaturevisorSDK
25
- */
26
- getVariation: FeaturevisorSDK["getVariation"];
27
- getVariationBoolean: FeaturevisorSDK["getVariationBoolean"];
28
- getVariationInteger: FeaturevisorSDK["getVariationInteger"];
29
- getVariationDouble: FeaturevisorSDK["getVariationDouble"];
30
- getVariationString: FeaturevisorSDK["getVariationString"];
31
- activate: FeaturevisorSDK["activate"];
32
- activateBoolean: FeaturevisorSDK["activateBoolean"];
33
- activateInteger: FeaturevisorSDK["activateInteger"];
34
- activateDouble: FeaturevisorSDK["activateDouble"];
35
- activateString: FeaturevisorSDK["activateString"];
36
- getVariable: FeaturevisorSDK["getVariable"];
37
- getVariableBoolean: FeaturevisorSDK["getVariableBoolean"];
38
- getVariableInteger: FeaturevisorSDK["getVariableInteger"];
39
- getVariableDouble: FeaturevisorSDK["getVariableDouble"];
40
- getVariableString: FeaturevisorSDK["getVariableString"];
41
- getVariableArray: FeaturevisorSDK["getVariableArray"];
42
- getVariableObject: FeaturevisorSDK["getVariableObject"];
43
- /**
44
- * Additions
45
- */
46
- setLogLevels: Logger["setLevels"];
47
- setStickyFeatures: FeaturevisorSDK["setStickyFeatures"];
48
- refresh: () => void;
49
- startRefreshing: () => void;
50
- stopRefreshing: () => void;
51
- addListener: Emitter["addListener"];
52
- on: Emitter["addListener"];
53
- removeListener: Emitter["removeListener"];
54
- off: Emitter["removeListener"];
55
- removeAllListeners: Emitter["removeAllListeners"];
56
- isReady: () => boolean;
57
- }
58
- export declare function createInstance(options: InstanceOptions): FeaturevisorInstance;
@@ -1,180 +0,0 @@
1
- import { FeaturevisorSDK } from "./client";
2
- import { createLogger } from "./logger";
3
- import { Emitter } from "./emitter";
4
- function fetchDatafileContent(datafileUrl, options) {
5
- if (options.handleDatafileFetch) {
6
- return options.handleDatafileFetch(datafileUrl);
7
- }
8
- return fetch(datafileUrl).then(function (res) { return res.json(); });
9
- }
10
- function getInstanceFromSdk(sdk, options, logger, emitter, statuses) {
11
- var intervalId;
12
- var on = emitter.addListener.bind(emitter);
13
- var off = emitter.removeListener.bind(emitter);
14
- var instance = {
15
- // variation
16
- getVariation: sdk.getVariation.bind(sdk),
17
- getVariationBoolean: sdk.getVariationBoolean.bind(sdk),
18
- getVariationInteger: sdk.getVariationInteger.bind(sdk),
19
- getVariationDouble: sdk.getVariationDouble.bind(sdk),
20
- getVariationString: sdk.getVariationString.bind(sdk),
21
- // activate
22
- activate: sdk.activate.bind(sdk),
23
- activateBoolean: sdk.activateBoolean.bind(sdk),
24
- activateInteger: sdk.activateInteger.bind(sdk),
25
- activateDouble: sdk.activateDouble.bind(sdk),
26
- activateString: sdk.activateString.bind(sdk),
27
- // variable
28
- getVariable: sdk.getVariable.bind(sdk),
29
- getVariableBoolean: sdk.getVariableBoolean.bind(sdk),
30
- getVariableInteger: sdk.getVariableInteger.bind(sdk),
31
- getVariableDouble: sdk.getVariableDouble.bind(sdk),
32
- getVariableString: sdk.getVariableString.bind(sdk),
33
- getVariableArray: sdk.getVariableArray.bind(sdk),
34
- getVariableObject: sdk.getVariableObject.bind(sdk),
35
- // additions
36
- setLogLevels: logger.setLevels.bind(logger),
37
- setStickyFeatures: sdk.setStickyFeatures.bind(sdk),
38
- // emitter
39
- on: on,
40
- addListener: on,
41
- off: off,
42
- removeListener: off,
43
- removeAllListeners: emitter.removeAllListeners.bind(emitter),
44
- // refresh
45
- refresh: function () {
46
- logger.debug("refreshing datafile");
47
- if (statuses.refreshInProgress) {
48
- return logger.warn("refresh in progress, skipping");
49
- }
50
- if (!options.datafileUrl) {
51
- return logger.error("cannot refresh since `datafileUrl` is not provided");
52
- }
53
- statuses.refreshInProgress = true;
54
- fetchDatafileContent(options.datafileUrl, options)
55
- .then(function (datafile) {
56
- var currentRevision = sdk.getRevision();
57
- var newRevision = datafile.revision;
58
- var isNotSameRevision = currentRevision !== newRevision;
59
- sdk.setDatafile(datafile);
60
- logger.info("refreshed datafile");
61
- emitter.emit("refresh");
62
- if (isNotSameRevision) {
63
- emitter.emit("update");
64
- }
65
- statuses.refreshInProgress = false;
66
- })
67
- .catch(function (e) {
68
- logger.error("failed to refresh datafile", { error: e });
69
- statuses.refreshInProgress = false;
70
- });
71
- },
72
- startRefreshing: function () {
73
- if (!options.datafileUrl) {
74
- return logger.error("cannot start refreshing since `datafileUrl` is not provided");
75
- }
76
- if (intervalId) {
77
- return logger.warn("refreshing has already started");
78
- }
79
- if (!options.refreshInterval) {
80
- return logger.warn("no `refreshInterval` option provided");
81
- }
82
- intervalId = setInterval(function () {
83
- instance.refresh();
84
- }, options.refreshInterval * 1000);
85
- },
86
- stopRefreshing: function () {
87
- if (!intervalId) {
88
- return logger.warn("refreshing has not started yet");
89
- }
90
- clearInterval(intervalId);
91
- },
92
- isReady: function () {
93
- return statuses.ready;
94
- },
95
- };
96
- if (options.datafileUrl && options.refreshInterval) {
97
- instance.startRefreshing();
98
- }
99
- return instance;
100
- }
101
- var emptyDatafile = {
102
- schemaVersion: "1",
103
- revision: "unknown",
104
- attributes: [],
105
- segments: [],
106
- features: [],
107
- };
108
- export function createInstance(options) {
109
- if (!options.datafile && !options.datafileUrl) {
110
- throw new Error("Featurevisor SDK instance cannot be created without both `datafile` and `datafileUrl` options");
111
- }
112
- var logger = options.logger || createLogger();
113
- var emitter = new Emitter();
114
- var statuses = {
115
- ready: false,
116
- refreshInProgress: false,
117
- };
118
- if (!options.datafileUrl && options.refreshInterval) {
119
- logger.warn("refreshing datafile requires `datafileUrl` option");
120
- }
121
- if (options.onReady) {
122
- emitter.addListener("ready", options.onReady);
123
- }
124
- if (options.onActivation) {
125
- emitter.addListener("activation", options.onActivation);
126
- }
127
- if (options.onRefresh) {
128
- emitter.addListener("refresh", options.onRefresh);
129
- }
130
- if (options.onUpdate) {
131
- emitter.addListener("update", options.onUpdate);
132
- }
133
- // datafile content is already provided
134
- if (options.datafile) {
135
- var sdk_1 = new FeaturevisorSDK({
136
- datafile: options.datafile,
137
- onActivation: options.onActivation,
138
- configureBucketValue: options.configureBucketValue,
139
- logger: logger,
140
- emitter: emitter,
141
- interceptAttributes: options.interceptAttributes,
142
- stickyFeatures: options.stickyFeatures,
143
- initialFeatures: options.initialFeatures,
144
- statuses: statuses,
145
- fromInstance: true,
146
- });
147
- statuses.ready = true;
148
- setTimeout(function () {
149
- emitter.emit("ready");
150
- }, 0);
151
- return getInstanceFromSdk(sdk_1, options, logger, emitter, statuses);
152
- }
153
- // datafile has to be fetched
154
- var sdk = new FeaturevisorSDK({
155
- datafile: emptyDatafile,
156
- onActivation: options.onActivation,
157
- configureBucketValue: options.configureBucketValue,
158
- logger: logger,
159
- emitter: emitter,
160
- interceptAttributes: options.interceptAttributes,
161
- stickyFeatures: options.stickyFeatures,
162
- initialFeatures: options.initialFeatures,
163
- statuses: statuses,
164
- fromInstance: true,
165
- });
166
- if (options.datafileUrl) {
167
- fetchDatafileContent(options.datafileUrl, options)
168
- .then(function (datafile) {
169
- sdk.setDatafile(datafile);
170
- statuses.ready = true;
171
- emitter.emit("ready");
172
- })
173
- .catch(function (e) {
174
- logger.error("failed to fetch datafile:");
175
- console.error(e);
176
- });
177
- }
178
- return getInstanceFromSdk(sdk, options, logger, emitter, statuses);
179
- }
180
- //# sourceMappingURL=createInstance.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createInstance.js","sourceRoot":"","sources":["../src/createInstance.ts"],"names":[],"mappings":"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"}
package/lib/statuses.d.ts DELETED
@@ -1,4 +0,0 @@
1
- export interface Statuses {
2
- ready: boolean;
3
- refreshInProgress: boolean;
4
- }
package/lib/statuses.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=statuses.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"statuses.js","sourceRoot":"","sources":["../src/statuses.ts"],"names":[],"mappings":""}