feature-toggle-client 2.0.0 → 2.1.1

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/README.md CHANGED
@@ -34,6 +34,27 @@ const init = () => {
34
34
  name: 'Application name',
35
35
  }, 'YOUR-LAUNCH-DARKLY-KEY')
36
36
 
37
+ // Initialize multi-context (user + application + contract)
38
+ FeatureToggleClientService
39
+ .getInstance()
40
+ .initializeWithContext(
41
+ 'YOUR-LAUNCH-DARKLY-KEY',
42
+ {
43
+ user: {
44
+ fullName: 'My incredible name',
45
+ email: 'user@email.com',
46
+ },
47
+ application: {
48
+ shortName: 'applicationShortName',
49
+ name: 'Application name',
50
+ },
51
+ contract: {
52
+ tenantId: 'tenant-id',
53
+ cluster: 'cluster-name',
54
+ },
55
+ }
56
+ )
57
+
37
58
  // Initialize api service
38
59
  FeatureToggleClientService
39
60
  .initializeApiService({
@@ -75,6 +96,16 @@ export class MyFeaturesDecisions {
75
96
  .getInstance()
76
97
  .isFeatureEnabled(myFeatureFlagKey)
77
98
  }
99
+
100
+ /**
101
+ * Checking for multi-context (user + application + contract)
102
+ * Note: isFeatureEnabled() automatically prefers multi-context when initialized
103
+ **/
104
+ public static someFeatureMultiContextEnabled(): Promise<any> {
105
+ return FeatureToggleClientService
106
+ .getInstance()
107
+ .isMultiContextFeatureEnabled(myFeatureFlagKey)
108
+ }
78
109
  }
79
110
  ```
80
111
 
@@ -1,20 +1,29 @@
1
1
  import { Application } from './types/Application';
2
2
  import { LDClient, LDOptions } from 'launchdarkly-js-client-sdk';
3
3
  import { UserAccount } from './types/UserAccount';
4
+ import { Contract } from './types/Contract';
4
5
  export declare class FeatureToggleClientService {
5
6
  private static instance;
6
7
  private userInstance;
7
8
  private applicationInstance;
9
+ private multiContextInstance?;
8
10
  private requestTimeout;
9
11
  private constructor();
10
12
  getUserInstance(): LDClient;
11
13
  getApplicationInstance(): LDClient;
14
+ getMultiContextInstance(): LDClient;
12
15
  setRequestTimeouts(timeout: number): void;
13
16
  static getInstance(): FeatureToggleClientService;
14
17
  initializeUser(payload: UserAccount, ldclientSdkKey: string, options?: LDOptions): void;
15
18
  initializeApplication(payload: Application, ldclientSdkKey: string, options?: LDOptions): void;
19
+ initializeWithContext(ldclientSdkKey: string, contexts: {
20
+ user?: UserAccount;
21
+ application?: Application;
22
+ contract?: Contract;
23
+ }, options?: LDOptions): void;
16
24
  private solveRequestWithTimeout;
17
25
  isFeatureEnabled(featureKey: string, defaultValue?: boolean): Promise<any>;
18
26
  isUserFeatureEnabled(featureKey: string, defaultValue?: boolean): Promise<any>;
19
27
  isApplicationFeatureEnabled(featureKey: string, defaultValue?: boolean): Promise<any>;
28
+ isMultiContextFeatureEnabled(featureKey: string, defaultValue?: boolean): Promise<any>;
20
29
  }
@@ -52,6 +52,9 @@ var FeatureToggleClientService = (function () {
52
52
  FeatureToggleClientService.prototype.getApplicationInstance = function () {
53
53
  return this.applicationInstance;
54
54
  };
55
+ FeatureToggleClientService.prototype.getMultiContextInstance = function () {
56
+ return this.multiContextInstance;
57
+ };
55
58
  FeatureToggleClientService.prototype.setRequestTimeouts = function (timeout) {
56
59
  this.requestTimeout = timeout;
57
60
  };
@@ -61,10 +64,19 @@ var FeatureToggleClientService = (function () {
61
64
  return FeatureToggleClientService.instance;
62
65
  };
63
66
  FeatureToggleClientService.prototype.initializeUser = function (payload, ldclientSdkKey, options) {
64
- this.userInstance = new FeatureToggleInstanceFactory_1.FeatureToggleInstanceFactory(payload, ldclientSdkKey, options).getClient();
67
+ this.userInstance = FeatureToggleInstanceFactory_1.FeatureToggleInstanceFactory
68
+ .createSingleContext(payload, ldclientSdkKey, options)
69
+ .getClient();
65
70
  };
66
71
  FeatureToggleClientService.prototype.initializeApplication = function (payload, ldclientSdkKey, options) {
67
- this.applicationInstance = new FeatureToggleInstanceFactory_1.FeatureToggleInstanceFactory(payload, ldclientSdkKey, options).getClient();
72
+ this.applicationInstance = FeatureToggleInstanceFactory_1.FeatureToggleInstanceFactory
73
+ .createSingleContext(payload, ldclientSdkKey, options)
74
+ .getClient();
75
+ };
76
+ FeatureToggleClientService.prototype.initializeWithContext = function (ldclientSdkKey, contexts, options) {
77
+ this.multiContextInstance = FeatureToggleInstanceFactory_1.FeatureToggleInstanceFactory
78
+ .createMultiContext(ldclientSdkKey, contexts.user, contexts.application, contexts.contract, options)
79
+ .getClient();
68
80
  };
69
81
  FeatureToggleClientService.prototype.solveRequestWithTimeout = function (requestPromise, defaultValue) {
70
82
  var _this = this;
@@ -79,18 +91,21 @@ var FeatureToggleClientService = (function () {
79
91
  return __generator(this, function (_b) {
80
92
  switch (_b.label) {
81
93
  case 0:
82
- _b.trys.push([0, 2, , 3]);
83
- return [4, this.solveRequestWithTimeout(Promise.all([
84
- this.isUserFeatureEnabled(featureKey, defaultValue),
85
- this.isApplicationFeatureEnabled(featureKey, defaultValue)
86
- ]), defaultValue)];
87
- case 1:
94
+ _b.trys.push([0, 4, , 5]);
95
+ if (!this.multiContextInstance) return [3, 2];
96
+ return [4, this.solveRequestWithTimeout(this.isMultiContextFeatureEnabled(featureKey, defaultValue), defaultValue)];
97
+ case 1: return [2, _b.sent()];
98
+ case 2: return [4, this.solveRequestWithTimeout(Promise.all([
99
+ this.isUserFeatureEnabled(featureKey, defaultValue),
100
+ this.isApplicationFeatureEnabled(featureKey, defaultValue)
101
+ ]), defaultValue)];
102
+ case 3:
88
103
  _a = _b.sent(), userInstanceReadyPromise = _a[0], applicationInstanceReadyPromise = _a[1];
89
104
  return [2, applicationInstanceReadyPromise || userInstanceReadyPromise];
90
- case 2:
105
+ case 4:
91
106
  e_1 = _b.sent();
92
107
  throw e_1;
93
- case 3: return [2];
108
+ case 5: return [2];
94
109
  }
95
110
  });
96
111
  });
@@ -153,7 +168,36 @@ var FeatureToggleClientService = (function () {
153
168
  }); });
154
169
  return withApplicationFeaturePromise;
155
170
  };
171
+ FeatureToggleClientService.prototype.isMultiContextFeatureEnabled = function (featureKey, defaultValue) {
172
+ var _this = this;
173
+ if (defaultValue === void 0) { defaultValue = false; }
174
+ var withMultiContextFeaturePromise = new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
175
+ var e_4;
176
+ return __generator(this, function (_a) {
177
+ switch (_a.label) {
178
+ case 0:
179
+ _a.trys.push([0, 4, , 5]);
180
+ if (!this.multiContextInstance) return [3, 2];
181
+ return [4, this.multiContextInstance.waitForInitialization()];
182
+ case 1:
183
+ _a.sent();
184
+ resolve(this.multiContextInstance.variation(featureKey, defaultValue));
185
+ return [3, 3];
186
+ case 2:
187
+ resolve(undefined);
188
+ _a.label = 3;
189
+ case 3: return [3, 5];
190
+ case 4:
191
+ e_4 = _a.sent();
192
+ reject(defaultValue);
193
+ return [3, 5];
194
+ case 5: return [2];
195
+ }
196
+ });
197
+ }); });
198
+ return withMultiContextFeaturePromise;
199
+ };
156
200
  return FeatureToggleClientService;
157
201
  }());
158
202
  exports.FeatureToggleClientService = FeatureToggleClientService;
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmVhdHVyZVRvZ2dsZUNsaWVudFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvRmVhdHVyZVRvZ2dsZUNsaWVudFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsK0VBQThFO0FBSTlFLElBQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDO0FBRXJDO0lBTUU7UUFGUSxtQkFBYyxHQUFXLHVCQUF1QixDQUFDO1FBR3ZELElBQUksMEJBQTBCLENBQUMsUUFBUSxFQUFFO1lBQ3ZDLE1BQU0sSUFBSSxLQUFLLENBQ2IsNEZBQTRGLENBQzdGLENBQUM7U0FDSDtJQUNILENBQUM7SUFLTSxvREFBZSxHQUF0QjtRQUNFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBS00sMkRBQXNCLEdBQTdCO1FBQ0UsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztJQUtNLHVEQUFrQixHQUF6QixVQUEwQixPQUFlO1FBQ3ZDLElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDO0lBQ2hDLENBQUM7SUFLYSxzQ0FBVyxHQUF6QjtRQUNFLDBCQUEwQixDQUFDLFFBQVE7WUFDakMsMEJBQTBCLENBQUMsUUFBUSxJQUFJLElBQUksMEJBQTBCLEVBQUUsQ0FBQztRQUMxRSxPQUFPLDBCQUEwQixDQUFDLFFBQVEsQ0FBQztJQUM3QyxDQUFDO0lBTU0sbURBQWMsR0FBckIsVUFDRSxPQUFvQixFQUNwQixjQUFzQixFQUN0QixPQUFtQjtRQUduQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksMkRBQTRCLENBQ2xELE9BQU8sRUFDUCxjQUFjLEVBQ2QsT0FBTyxDQUNSLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQU1NLDBEQUFxQixHQUE1QixVQUNFLE9BQW9CLEVBQ3BCLGNBQXNCLEVBQ3RCLE9BQW1CO1FBRW5C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
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmVhdHVyZVRvZ2dsZUNsaWVudFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvRmVhdHVyZVRvZ2dsZUNsaWVudFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsK0VBQThFO0FBSzlFLElBQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDO0FBRXJDO0lBT0U7UUFGUSxtQkFBYyxHQUFXLHVCQUF1QixDQUFDO1FBR3ZELElBQUksMEJBQTBCLENBQUMsUUFBUSxFQUFFO1lBQ3ZDLE1BQU0sSUFBSSxLQUFLLENBQ2IsNEZBQTRGLENBQzdGLENBQUM7U0FDSDtJQUNILENBQUM7SUFLTSxvREFBZSxHQUF0QjtRQUNFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBS00sMkRBQXNCLEdBQTdCO1FBQ0UsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztJQUtNLDREQUF1QixHQUE5QjtRQUNFLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFLTSx1REFBa0IsR0FBekIsVUFBMEIsT0FBZTtRQUN2QyxJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQztJQUNoQyxDQUFDO0lBS2Esc0NBQVcsR0FBekI7UUFDRSwwQkFBMEIsQ0FBQyxRQUFRO1lBQ2pDLDBCQUEwQixDQUFDLFFBQVEsSUFBSSxJQUFJLDBCQUEwQixFQUFFLENBQUM7UUFDMUUsT0FBTywwQkFBMEIsQ0FBQyxRQUFRLENBQUM7SUFDN0MsQ0FBQztJQU1NLG1EQUFjLEdBQXJCLFVBQ0UsT0FBb0IsRUFDcEIsY0FBc0IsRUFDdEIsT0FBbUI7UUFHbkIsSUFBSSxDQUFDLFlBQVksR0FBRywyREFBNEI7YUFDN0MsbUJBQW1CLENBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUM7YUFDckQsU0FBUyxFQUFFLENBQUM7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
@@ -1,10 +1,13 @@
1
1
  import { LDClient, LDOptions } from 'launchdarkly-js-client-sdk';
2
2
  import { UserAccount } from './types/UserAccount';
3
3
  import { Application } from './types/Application';
4
+ import { Contract } from './types/Contract';
4
5
  export declare class FeatureToggleInstanceFactory {
5
6
  private client;
6
7
  private defaultOptions;
7
- constructor(payload: UserAccount | Application, ldclientSdkKey: string, options?: LDOptions);
8
+ private constructor();
8
9
  getClient(): LDClient;
9
- private initLaunchDarklyUser;
10
+ static createSingleContext(payload: UserAccount | Application, ldclientSdkKey: string, options?: LDOptions): FeatureToggleInstanceFactory;
11
+ static createMultiContext(ldclientSdkKey: string, user?: UserAccount, application?: Application, contract?: Contract, options?: LDOptions): FeatureToggleInstanceFactory;
12
+ private static getSingleData;
10
13
  }
@@ -15,49 +15,112 @@ exports.FeatureToggleInstanceFactory = void 0;
15
15
  var launchdarkly_js_client_sdk_1 = require("launchdarkly-js-client-sdk");
16
16
  var uuid = require("uuid");
17
17
  var getApplicationData = function (p) {
18
- return p.hasCluster
19
- ? {
20
- custom: {
21
- cluster: p.cluster,
22
- group: 'bot',
23
- tenantId: p.tenantId,
24
- },
25
- email: "".concat(p.shortName, "@msging.net"),
26
- key: p.shortName,
27
- name: p.name,
28
- }
29
- : {
30
- custom: {
31
- group: 'bot',
32
- },
33
- email: 'free@free.com',
34
- key: 'free',
35
- name: 'free',
36
- };
18
+ var context = {
19
+ kind: 'bot',
20
+ key: p.shortName || 'free',
21
+ name: p.name || 'free',
22
+ email: p.shortName ? "".concat(p.shortName, "@msging.net") : 'free@free.com',
23
+ };
24
+ if (p.hasCluster) {
25
+ context.hasCluster = true;
26
+ context.cluster = p.cluster;
27
+ context.tenantId = p.tenantId;
28
+ }
29
+ if (!context.key) {
30
+ throw new Error('Application context key is empty or undefined');
31
+ }
32
+ return context;
37
33
  };
38
34
  var getUserData = function (p) {
39
- return p.anonymous
40
- ? __assign({ anonymous: true, key: uuid.v4() }, p) : {
41
- custom: {
42
- creationDate: p.creationDate,
43
- group: 'users',
44
- },
45
- email: p.email,
35
+ var context = p.anonymous
36
+ ? __assign({ kind: 'user', key: uuid.v4(), anonymous: true }, p) : {
37
+ kind: 'user',
46
38
  key: p.email,
47
39
  name: p.fullName,
40
+ email: p.email,
41
+ creationDate: p.creationDate,
48
42
  };
43
+ if (!context.key) {
44
+ throw new Error('User context key is empty or undefined');
45
+ }
46
+ return context;
47
+ };
48
+ var getContractData = function (contract) {
49
+ var context = {
50
+ kind: 'contract',
51
+ key: contract.tenantId,
52
+ tenantId: contract.tenantId,
53
+ cluster: contract.cluster,
54
+ };
55
+ if (contract.custom) {
56
+ context.custom = contract.custom;
57
+ }
58
+ if (!context.key) {
59
+ throw new Error('Contract context key is empty or undefined');
60
+ }
61
+ return context;
62
+ };
63
+ var lowerCaseObject = function (obj) {
64
+ var result = {};
65
+ Object.keys(obj).forEach(function (key) {
66
+ var value = obj[key];
67
+ result[key.toLowerCase()] = typeof value === 'string' ? value.toLowerCase() : value;
68
+ });
69
+ return result;
70
+ };
71
+ var toLowerCaseContext = function (context) {
72
+ var result = { kind: context.kind };
73
+ if (context.user) {
74
+ result.user = lowerCaseObject(context.user);
75
+ }
76
+ if (context.bot) {
77
+ result.bot = lowerCaseObject(context.bot);
78
+ }
79
+ if (context.contract) {
80
+ result.contract = lowerCaseObject(context.contract);
81
+ }
82
+ return result;
83
+ };
84
+ var getContext = function (user, application, contract) {
85
+ var contexts = {};
86
+ if (user) {
87
+ contexts.user = getUserData(user);
88
+ }
89
+ if (application) {
90
+ contexts.bot = getApplicationData(application);
91
+ }
92
+ if (contract) {
93
+ contexts.contract = getContractData(contract);
94
+ }
95
+ if (Object.keys(contexts).length === 0) {
96
+ throw new Error('At least one context (user, application, or contract) must be provided. ');
97
+ }
98
+ if (Object.keys(contexts).length === 1) {
99
+ var singleContext = Object.values(contexts)[0];
100
+ return lowerCaseObject(singleContext);
101
+ }
102
+ var multiContext = __assign({ kind: 'multi' }, contexts);
103
+ return toLowerCaseContext(multiContext);
49
104
  };
50
105
  var FeatureToggleInstanceFactory = (function () {
51
- function FeatureToggleInstanceFactory(payload, ldclientSdkKey, options) {
106
+ function FeatureToggleInstanceFactory(ldclientSdkKey, context, options) {
52
107
  this.defaultOptions = {
53
108
  bootstrap: 'localStorage'
54
109
  };
55
- this.client = (0, launchdarkly_js_client_sdk_1.initialize)(ldclientSdkKey, this.initLaunchDarklyUser(payload), __assign(__assign({}, options), this.defaultOptions));
110
+ this.client = (0, launchdarkly_js_client_sdk_1.initialize)(ldclientSdkKey, context, __assign(__assign({}, options), this.defaultOptions));
56
111
  }
57
112
  FeatureToggleInstanceFactory.prototype.getClient = function () {
58
113
  return this.client;
59
114
  };
60
- FeatureToggleInstanceFactory.prototype.initLaunchDarklyUser = function (payload) {
115
+ FeatureToggleInstanceFactory.createSingleContext = function (payload, ldclientSdkKey, options) {
116
+ var context = this.getSingleData(payload);
117
+ return new FeatureToggleInstanceFactory(ldclientSdkKey, context, options);
118
+ };
119
+ FeatureToggleInstanceFactory.createMultiContext = function (ldclientSdkKey, user, application, contract, options) {
120
+ var context = getContext(user, application, contract);
121
+ return new FeatureToggleInstanceFactory(ldclientSdkKey, context, options);
122
+ };
123
+ FeatureToggleInstanceFactory.getSingleData = function (payload) {
61
124
  var isUser = function () { return payload.email; };
62
125
  if (isUser()) {
63
126
  return getUserData(payload);
@@ -67,4 +130,4 @@ var FeatureToggleInstanceFactory = (function () {
67
130
  return FeatureToggleInstanceFactory;
68
131
  }());
69
132
  exports.FeatureToggleInstanceFactory = FeatureToggleInstanceFactory;
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmVhdHVyZVRvZ2dsZUluc3RhbmNlRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9GZWF0dXJlVG9nZ2xlSW5zdGFuY2VGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUVBQXFGO0FBR3JGLDJCQUE2QjtBQUU3QixJQUFNLGtCQUFrQixHQUFHLFVBQUMsQ0FBTTtJQUNoQyxPQUFBLENBQUMsQ0FBQyxVQUFVO1FBQ1YsQ0FBQyxDQUFDO1lBQ0EsTUFBTSxFQUFFO2dCQUNOLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTztnQkFDbEIsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRO2FBQ3JCO1lBQ0QsS0FBSyxFQUFFLFVBQUcsQ0FBQyxDQUFDLFNBQVMsZ0JBQWE7WUFDbEMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTO1lBQ2hCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtTQUNiO1FBQ0QsQ0FBQyxDQUFDO1lBQ0EsTUFBTSxFQUFFO2dCQUNOLEtBQUssRUFBRSxLQUFLO2FBQ2I7WUFDRCxLQUFLLEVBQUUsZUFBZTtZQUN0QixHQUFHLEVBQUUsTUFBTTtZQUNYLElBQUksRUFBRSxNQUFNO1NBQ2I7QUFsQkgsQ0FrQkcsQ0FBQztBQUVOLElBQU0sV0FBVyxHQUFHLFVBQUMsQ0FBTTtJQUN6QixPQUFBLENBQUMsQ0FBQyxTQUFTO1FBQ1QsQ0FBQyxZQUNDLFNBQVMsRUFBRSxJQUFJLEVBQ2YsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFDWCxDQUFDLEVBRU4sQ0FBQyxDQUFDO1FBQ0EsTUFBTSxFQUFFO1lBQ04sWUFBWSxFQUFFLENBQUMsQ0FBQyxZQUFZO1lBQzVCLEtBQUssRUFBRSxPQUFPO1NBQ2Y7UUFDRCxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7UUFDZCxHQUFHLEVBQUUsQ0FBQyxDQUFDLEtBQUs7UUFDWixJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVE7S0FDakI7QUFkSCxDQWNHLENBQUM7QUFFTjtJQU1FLHNDQUFZLE9BQWtDLEVBQUUsY0FBc0IsRUFBRSxPQUFtQjtRQUpuRixtQkFBYyxHQUF1QjtZQUMzQyxTQUFTLEVBQUUsY0FBYztTQUMxQixDQUFDO1FBR0EsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFBLHVDQUFVLEVBQ3RCLGNBQWMsRUFDZCxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLHdCQUM3QixPQUFPLEdBQUssSUFBSSxDQUFDLGNBQWMsRUFDckMsQ0FBQztJQUNKLENBQUM7SUFLTSxnREFBUyxHQUFoQjtRQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBTU8sMkRBQW9CLEdBQTVCLFVBQTZCLE9BQVk7UUFDdkMsSUFBTSxNQUFNLEdBQUcsY0FBTSxPQUFBLE9BQU8sQ0FBQyxLQUFLLEVBQWIsQ0FBYSxDQUFDO1FBRW5DLElBQUksTUFBTSxFQUFFLEVBQUU7WUFDWixPQUFPLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3QjtRQUVELE9BQU8sa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUNILG1DQUFDO0FBQUQsQ0FBQyxBQWxDRCxJQWtDQztBQWxDWSxvRUFBNEIifQ==
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmVhdHVyZVRvZ2dsZUluc3RhbmNlRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9GZWF0dXJlVG9nZ2xlSW5zdGFuY2VGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUVBQXdGO0FBSXhGLDJCQUE2QjtBQUU3QixJQUFNLGtCQUFrQixHQUFHLFVBQUMsQ0FBTTtJQUNoQyxJQUFNLE9BQU8sR0FBRztRQUNkLElBQUksRUFBRSxLQUFLO1FBQ1gsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLElBQUksTUFBTTtRQUMxQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxNQUFNO1FBQ3RCLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFHLENBQUMsQ0FBQyxTQUFTLGdCQUFhLENBQUMsQ0FBQyxDQUFDLGVBQWU7S0FDbkUsQ0FBQztJQUVELElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRTtRQUNoQixPQUFlLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQyxPQUFlLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDcEMsT0FBZSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDO0tBQ3hDO0lBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0tBQ2xFO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBTUYsSUFBTSxXQUFXLEdBQUcsVUFBQyxDQUFNO0lBQ3pCLElBQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxTQUFTO1FBQ3pCLENBQUMsWUFDQyxJQUFJLEVBQUUsTUFBTSxFQUNaLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQ2QsU0FBUyxFQUFFLElBQUksSUFDWixDQUFDLEVBRU4sQ0FBQyxD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
package/dist/index.d.ts CHANGED
@@ -1,2 +1,6 @@
1
1
  export { FeatureToggleClientService } from './FeatureToggleClientService';
2
+ export { FeatureToggleInstanceFactory } from './FeatureToggleInstanceFactory';
2
3
  export { IToggleable } from './types/IToggleable';
4
+ export { UserAccount } from './types/UserAccount';
5
+ export { Application } from './types/Application';
6
+ export { Contract } from './types/Contract';
package/dist/index.js CHANGED
@@ -1,6 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FeatureToggleClientService = void 0;
3
+ exports.Contract = exports.Application = exports.UserAccount = exports.FeatureToggleInstanceFactory = exports.FeatureToggleClientService = void 0;
4
4
  var FeatureToggleClientService_1 = require("./FeatureToggleClientService");
5
5
  Object.defineProperty(exports, "FeatureToggleClientService", { enumerable: true, get: function () { return FeatureToggleClientService_1.FeatureToggleClientService; } });
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkVBQTBFO0FBQWpFLHdJQUFBLDBCQUEwQixPQUFBIn0=
6
+ var FeatureToggleInstanceFactory_1 = require("./FeatureToggleInstanceFactory");
7
+ Object.defineProperty(exports, "FeatureToggleInstanceFactory", { enumerable: true, get: function () { return FeatureToggleInstanceFactory_1.FeatureToggleInstanceFactory; } });
8
+ var UserAccount_1 = require("./types/UserAccount");
9
+ Object.defineProperty(exports, "UserAccount", { enumerable: true, get: function () { return UserAccount_1.UserAccount; } });
10
+ var Application_1 = require("./types/Application");
11
+ Object.defineProperty(exports, "Application", { enumerable: true, get: function () { return Application_1.Application; } });
12
+ var Contract_1 = require("./types/Contract");
13
+ Object.defineProperty(exports, "Contract", { enumerable: true, get: function () { return Contract_1.Contract; } });
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkVBQTBFO0FBQWpFLHdJQUFBLDBCQUEwQixPQUFBO0FBQ25DLCtFQUE4RTtBQUFyRSw0SUFBQSw0QkFBNEIsT0FBQTtBQUVyQyxtREFBa0Q7QUFBekMsMEdBQUEsV0FBVyxPQUFBO0FBQ3BCLG1EQUFrRDtBQUF6QywwR0FBQSxXQUFXLE9BQUE7QUFDcEIsNkNBQTRDO0FBQW5DLG9HQUFBLFFBQVEsT0FBQSJ9
@@ -1,18 +1,18 @@
1
1
  export declare class Application {
2
- imageUri: string;
3
- id: number;
2
+ imageUri?: string;
3
+ id?: number;
4
4
  shortName: string;
5
- name: string;
6
- accessKey: string;
7
- template: string;
8
- created: string;
9
- activatedServices: any[];
10
- applicationUserPermissionModel: IApplicationUserPermissionModel[];
11
- applicationDomainActivations: IApplicationDomainActivation[];
12
- isTemplate: boolean;
13
- status: string;
14
- hasCluster: boolean;
15
- applicationJson: IApplicationJson;
5
+ name?: string;
6
+ accessKey?: string;
7
+ template?: string;
8
+ created?: string;
9
+ activatedServices?: any[];
10
+ applicationUserPermissionModel?: IApplicationUserPermissionModel[];
11
+ applicationDomainActivations?: IApplicationDomainActivation[];
12
+ isTemplate?: boolean;
13
+ status?: string;
14
+ hasCluster?: boolean;
15
+ applicationJson?: IApplicationJson;
16
16
  constructor(init?: Partial<Application>);
17
17
  }
18
18
  interface IApplicationJson {
@@ -0,0 +1,6 @@
1
+ export declare class Contract {
2
+ tenantId: string;
3
+ cluster?: string;
4
+ custom?: Record<string, any>;
5
+ constructor(init?: Partial<Contract>);
6
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Contract = void 0;
4
+ var Contract = (function () {
5
+ function Contract(init) {
6
+ Object.assign(this, init);
7
+ }
8
+ return Contract;
9
+ }());
10
+ exports.Contract = Contract;
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvQ29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUE7SUFLRSxrQkFBWSxJQUF3QjtRQUNsQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBQ0gsZUFBQztBQUFELENBQUMsQUFSRCxJQVFDO0FBUlksNEJBQVEifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "feature-toggle-client",
3
- "version": "2.0.0",
3
+ "version": "2.1.1",
4
4
  "description": "feature-toggle-client",
5
5
  "license": "MIT",
6
6
  "repository": "",
@@ -36,7 +36,7 @@
36
36
  },
37
37
  "dependencies": {
38
38
  "axios": "^0.21.4",
39
- "launchdarkly-js-client-sdk": "^2.22.1",
39
+ "launchdarkly-js-client-sdk": "^3.9.0",
40
40
  "uuid": "^3.3.2"
41
41
  },
42
42
  "devDependencies": {