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 +31 -0
- package/dist/FeatureToggleClientService.d.ts +9 -0
- package/dist/FeatureToggleClientService.js +55 -11
- package/dist/FeatureToggleInstanceFactory.d.ts +5 -2
- package/dist/FeatureToggleInstanceFactory.js +93 -30
- package/dist/index.d.ts +4 -0
- package/dist/index.js +10 -2
- package/dist/types/Application.d.ts +13 -13
- package/dist/types/Contract.d.ts +6 -0
- package/dist/types/Contract.js +11 -0
- package/package.json +2 -2
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 =
|
|
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 =
|
|
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,
|
|
83
|
-
return [
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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
|
|
105
|
+
case 4:
|
|
91
106
|
e_1 = _b.sent();
|
|
92
107
|
throw e_1;
|
|
93
|
-
case
|
|
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,
|
|
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(
|
|
8
|
+
private constructor();
|
|
8
9
|
getClient(): LDClient;
|
|
9
|
-
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
40
|
-
? __assign({
|
|
41
|
-
|
|
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(
|
|
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,
|
|
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.
|
|
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,
|
|
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
|
-
|
|
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
|
|
3
|
-
id
|
|
2
|
+
imageUri?: string;
|
|
3
|
+
id?: number;
|
|
4
4
|
shortName: string;
|
|
5
|
-
name
|
|
6
|
-
accessKey
|
|
7
|
-
template
|
|
8
|
-
created
|
|
9
|
-
activatedServices
|
|
10
|
-
applicationUserPermissionModel
|
|
11
|
-
applicationDomainActivations
|
|
12
|
-
isTemplate
|
|
13
|
-
status
|
|
14
|
-
hasCluster
|
|
15
|
-
applicationJson
|
|
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,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.
|
|
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": "^
|
|
39
|
+
"launchdarkly-js-client-sdk": "^3.9.0",
|
|
40
40
|
"uuid": "^3.3.2"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|