@springtree/eva-sdk-core-settings 2.0.3 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/eva-sdk-core-settings.d.ts +9 -10
- package/lib/eva-sdk-core-settings.d.ts.map +1 -1
- package/lib/eva-sdk-core-settings.js +12 -16
- package/lib/eva-sdk-core-settings.js.map +1 -1
- package/lib/publisher.d.ts +32 -0
- package/lib/publisher.d.ts.map +1 -0
- package/lib/publisher.js +37 -0
- package/lib/publisher.js.map +1 -0
- package/package.json +7 -7
- package/lib/eva-sdk-core-settings.es5.js +0 -120
- package/lib/eva-sdk-core-settings.es5.js.map +0 -1
- package/lib/eva-sdk-core-settings.umd.js +0 -136
- package/lib/eva-sdk-core-settings.umd.js.map +0 -1
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { Publisher } from './publisher';
|
|
2
|
+
export { Publisher } from './publisher';
|
|
1
3
|
/**
|
|
2
4
|
* The setting change event
|
|
3
5
|
*
|
|
@@ -7,8 +9,8 @@
|
|
|
7
9
|
export interface ISettingsChange {
|
|
8
10
|
group: string;
|
|
9
11
|
name: string;
|
|
10
|
-
old:
|
|
11
|
-
new:
|
|
12
|
+
old: unknown;
|
|
13
|
+
new: unknown;
|
|
12
14
|
}
|
|
13
15
|
/**
|
|
14
16
|
* The settings manager wraps a collection of settings and provides
|
|
@@ -18,12 +20,9 @@ export interface ISettingsChange {
|
|
|
18
20
|
* @export
|
|
19
21
|
* @class SettingsManager
|
|
20
22
|
*/
|
|
21
|
-
export declare class SettingsManager {
|
|
23
|
+
export declare class SettingsManager extends Publisher<ISettingsChange> {
|
|
22
24
|
/**
|
|
23
25
|
* The actual settings data
|
|
24
|
-
*
|
|
25
|
-
* @private
|
|
26
|
-
* @type {({[groupName: string]: any})}
|
|
27
26
|
*/
|
|
28
27
|
private settings;
|
|
29
28
|
/**
|
|
@@ -32,27 +31,27 @@ export declare class SettingsManager {
|
|
|
32
31
|
* @param {string} groupName The name of the group to register
|
|
33
32
|
* @param {*} [defaultSetting={}] The default settings for the group
|
|
34
33
|
*/
|
|
35
|
-
register(groupName: string, defaultSetting?:
|
|
34
|
+
register(groupName: string, defaultSetting?: unknown): void;
|
|
36
35
|
/**
|
|
37
36
|
* Retrieves a setting group
|
|
38
37
|
*
|
|
39
38
|
* @param {string} groupName The name of the group to fetch
|
|
40
39
|
*/
|
|
41
|
-
getGroup(groupName: string):
|
|
40
|
+
getGroup(groupName: string): Record<string, unknown>;
|
|
42
41
|
/**
|
|
43
42
|
* Retrieves a specific setting
|
|
44
43
|
*
|
|
45
44
|
* @param {string} groupName
|
|
46
45
|
* @param {*} setting
|
|
47
46
|
*/
|
|
48
|
-
get(groupName: string, settingName: string):
|
|
47
|
+
get(groupName: string, settingName: string): unknown;
|
|
49
48
|
/**
|
|
50
49
|
* Updates a specific setting and returns the change details
|
|
51
50
|
*
|
|
52
51
|
* @param {string} groupName
|
|
53
52
|
* @param {*} setting
|
|
54
53
|
*/
|
|
55
|
-
set(groupName: string, settingName: string, setting:
|
|
54
|
+
set(groupName: string, settingName: string, setting: unknown): ISettingsChange;
|
|
56
55
|
}
|
|
57
56
|
export declare const settings: SettingsManager;
|
|
58
57
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eva-sdk-core-settings.d.ts","sourceRoot":"","sources":["../src/eva-sdk-core-settings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"eva-sdk-core-settings.d.ts","sourceRoot":"","sources":["../src/eva-sdk-core-settings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;CACd;AAED;;;;;;;GAOG;AACH,qBAAa,eAAgB,SAAQ,SAAS,CAAC,eAAe,CAAC;IAE7D;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAsC;IAEtD;;;;;OAKG;IACI,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,GAAE,OAAY;IAU/D;;;;OAIG;IACI,QAAQ,CAAC,SAAS,EAAC,MAAM;IAIhC;;;;;OAKG;IACI,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAKjD;;;;;OAKG;IACI,GAAG,CAAC,SAAS,EAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,eAAe;CAqBrF;AAED,eAAO,MAAM,QAAQ,iBAAwB,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAMD,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAI1C,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAa7C;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,gBAAgB,CAElD;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,CAAC,MAAM,gBAAgB,CAAC,GAAG,eAAe,CAEtI"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { cloneDeep } from 'lodash';
|
|
2
|
-
import
|
|
1
|
+
import { cloneDeep, isEqual } from 'lodash-es';
|
|
2
|
+
import { Publisher } from './publisher';
|
|
3
|
+
export { Publisher } from './publisher';
|
|
3
4
|
/**
|
|
4
5
|
* The settings manager wraps a collection of settings and provides
|
|
5
6
|
* methods to register and retrieve groups of settings
|
|
@@ -8,16 +9,11 @@ import pubsubJs from 'pubsub-js';
|
|
|
8
9
|
* @export
|
|
9
10
|
* @class SettingsManager
|
|
10
11
|
*/
|
|
11
|
-
export class SettingsManager {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
* @private
|
|
17
|
-
* @type {({[groupName: string]: any})}
|
|
18
|
-
*/
|
|
19
|
-
this.settings = {};
|
|
20
|
-
}
|
|
12
|
+
export class SettingsManager extends Publisher {
|
|
13
|
+
/**
|
|
14
|
+
* The actual settings data
|
|
15
|
+
*/
|
|
16
|
+
settings = {};
|
|
21
17
|
/**
|
|
22
18
|
* Register a new settings group
|
|
23
19
|
*
|
|
@@ -57,20 +53,20 @@ export class SettingsManager {
|
|
|
57
53
|
* @param {*} setting
|
|
58
54
|
*/
|
|
59
55
|
set(groupName, settingName, setting) {
|
|
60
|
-
const
|
|
56
|
+
const oldValue = cloneDeep(this.get(groupName, settingName));
|
|
61
57
|
this.settings[groupName][settingName] = setting;
|
|
62
58
|
const change = {
|
|
63
59
|
group: groupName,
|
|
64
60
|
name: settingName,
|
|
65
|
-
old:
|
|
61
|
+
old: oldValue,
|
|
66
62
|
new: setting,
|
|
67
63
|
};
|
|
68
64
|
// Only emit the setting change when it has actually changed
|
|
69
65
|
// We will emit the setting change using the group and name scope
|
|
70
66
|
// so subscribers can focus on a certain group of settings
|
|
71
67
|
//
|
|
72
|
-
if (
|
|
73
|
-
|
|
68
|
+
if (!isEqual(oldValue, setting)) {
|
|
69
|
+
this.publish({ channel: `eva.setting.${change.group}.${change.name}`, value: change });
|
|
74
70
|
}
|
|
75
71
|
return change;
|
|
76
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eva-sdk-core-settings.js","sourceRoot":"","sources":["../src/eva-sdk-core-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"eva-sdk-core-settings.js","sourceRoot":"","sources":["../src/eva-sdk-core-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAexC;;;;;;;GAOG;AACH,MAAM,OAAO,eAAgB,SAAQ,SAA0B;IAE7D;;OAEG;IACK,QAAQ,GAAmC,EAAE,CAAC;IAEtD;;;;;OAKG;IACI,QAAQ,CAAC,SAAiB,EAAE,iBAA0B,EAAE;QAC7D,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,wCAAwC,SAAS,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,sCAAsC;QACtC,EAAE;QACF,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;IACvD,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAC,SAAgB;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAA4B,CAAC;IAC7D,CAAC;IAED;;;;;OAKG;IACI,GAAG,CAAC,SAAiB,EAAE,WAAmB;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAA6B,CAAC;QACxE,OAAO,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;OAKG;IACI,GAAG,CAAC,SAAgB,EAAE,WAAmB,EAAE,OAAgB;QAChE,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,SAAS,CAA6B,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC;QAE7E,MAAM,MAAM,GAAoB;YAC9B,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,WAAW;YACjB,GAAG,EAAE,QAAQ;YACb,GAAG,EAAE,OAAO;SACb,CAAC;QAEF,4DAA4D;QAC5D,iEAAiE;QACjE,0DAA0D;QAC1D,EAAE;QACF,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,eAAe,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACzF,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;AAgB9C,yCAAyC;AACzC,6EAA6E;AAC7E,eAAe;AACf,EAAE;AACF,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAE1C,gCAAgC;AAChC,EAAE;AACF,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAS,CAAC;AAE7C,0BAA0B;AAC1B,EAAE;AACF,MAAM,eAAe,GAAqB;IACxC,QAAQ,EAAE,OAAO;IACjB,UAAU,EAAE,cAAc;IAC1B,aAAa,EAAE,kBAAkB;IACjC,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,OAAO;CACpB,CAAC;AACF,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;AAExD;;;;;GAKG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAgC,CAAC;AAC/E,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,WAAmC,EAAE,OAAiD;IACnH,OAAO,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface IPublishSubscription<VALUE = unknown> {
|
|
2
|
+
callback: (params: {
|
|
3
|
+
channel: string;
|
|
4
|
+
value: VALUE;
|
|
5
|
+
}) => void;
|
|
6
|
+
channel: string;
|
|
7
|
+
token: symbol;
|
|
8
|
+
}
|
|
9
|
+
export declare class Publisher<VALUE = unknown> {
|
|
10
|
+
private subscriptions;
|
|
11
|
+
/**
|
|
12
|
+
* Subscribe to a channel with a callback handler.
|
|
13
|
+
* You can subscribe to partial channel names (start with check)
|
|
14
|
+
* Return a token you can use to unsubscribe your callback.
|
|
15
|
+
*/
|
|
16
|
+
subscribe(params: {
|
|
17
|
+
channel: string;
|
|
18
|
+
callback: (params: {
|
|
19
|
+
channel: string;
|
|
20
|
+
value: VALUE;
|
|
21
|
+
}) => void;
|
|
22
|
+
}): symbol;
|
|
23
|
+
unsubscribe(params: {
|
|
24
|
+
token: symbol;
|
|
25
|
+
}): void;
|
|
26
|
+
clearSubscriptions(): void;
|
|
27
|
+
protected publish(params: {
|
|
28
|
+
channel: string;
|
|
29
|
+
value: VALUE;
|
|
30
|
+
}): void;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=publisher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../src/publisher.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,oBAAoB,CAAC,KAAK,GAAG,OAAO;IACnD,QAAQ,EAAE,CAAC,MAAM,EAAE;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,CAAC;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,SAAS,CAAC,KAAK,GAAG,OAAO;IAEpC,OAAO,CAAC,aAAa,CAAqC;IAE1D;;;;OAIG;IACI,SAAS,CAAC,MAAM,EAAE;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,CAAC,MAAM,EAAE;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,KAAK,CAAA;SAAE,KAAK,IAAI,CAAA;KAAE;IAalG,WAAW,CAAC,MAAM,EAAE;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC;IAOnC,kBAAkB;IAMzB,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE;CAK3D"}
|
package/lib/publisher.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export class Publisher {
|
|
2
|
+
subscriptions = [];
|
|
3
|
+
/**
|
|
4
|
+
* Subscribe to a channel with a callback handler.
|
|
5
|
+
* You can subscribe to partial channel names (start with check)
|
|
6
|
+
* Return a token you can use to unsubscribe your callback.
|
|
7
|
+
*/
|
|
8
|
+
subscribe(params) {
|
|
9
|
+
const { channel, callback } = params;
|
|
10
|
+
const token = Symbol();
|
|
11
|
+
this.subscriptions.push({
|
|
12
|
+
channel,
|
|
13
|
+
callback,
|
|
14
|
+
token,
|
|
15
|
+
});
|
|
16
|
+
return token;
|
|
17
|
+
}
|
|
18
|
+
// Removes a callback based subscription using a token returned from subscribe
|
|
19
|
+
//
|
|
20
|
+
unsubscribe(params) {
|
|
21
|
+
const { token } = params;
|
|
22
|
+
this.subscriptions = this.subscriptions.filter((sub) => sub.token !== token);
|
|
23
|
+
}
|
|
24
|
+
// Removes all registered channel event callbacks
|
|
25
|
+
//
|
|
26
|
+
clearSubscriptions() {
|
|
27
|
+
this.subscriptions = [];
|
|
28
|
+
}
|
|
29
|
+
// Extending classes can use the publish method to send values to subscribed callbacks
|
|
30
|
+
//
|
|
31
|
+
publish(params) {
|
|
32
|
+
const { channel, value } = params;
|
|
33
|
+
const subs = this.subscriptions.filter((sub) => sub.channel.startsWith(channel));
|
|
34
|
+
subs.forEach((sub) => sub.callback({ channel, value }));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=publisher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publisher.js","sourceRoot":"","sources":["../src/publisher.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,SAAS;IAEZ,aAAa,GAAkC,EAAE,CAAC;IAE1D;;;;OAIG;IACI,SAAS,CAAC,MAAwF;QACvG,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YACtB,OAAO;YACP,QAAQ;YACR,KAAK;SACN,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,8EAA8E;IAC9E,EAAE;IACK,WAAW,CAAC,MAAuB;QACxC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IAC/E,CAAC;IAED,iDAAiD;IACjD,EAAE;IACK,kBAAkB;QACvB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED,sFAAsF;IACtF,EAAE;IACQ,OAAO,CAAC,MAAwC;QACxD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@springtree/eva-sdk-core-settings",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "The shared settings repository implementation for the EVA SDK",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"author": "SpringTree <info@springtree.nl>",
|
|
7
7
|
"license": "ISC",
|
|
8
|
-
"main": "lib/eva-sdk-core-settings.
|
|
9
|
-
"module": "lib/eva-sdk-core-settings.
|
|
8
|
+
"main": "lib/eva-sdk-core-settings.js",
|
|
9
|
+
"module": "lib/eva-sdk-core-settings.js",
|
|
10
|
+
"type": "module",
|
|
10
11
|
"directories": {
|
|
11
12
|
"lib": "lib",
|
|
12
13
|
"test": "__tests__"
|
|
@@ -22,9 +23,8 @@
|
|
|
22
23
|
},
|
|
23
24
|
"typings": "lib/eva-sdk-core-settings.d.ts",
|
|
24
25
|
"private": false,
|
|
25
|
-
"gitHead": "
|
|
26
|
-
"
|
|
27
|
-
"lodash": "^4.17.21"
|
|
28
|
-
"pubsub-js": "^1.9.4"
|
|
26
|
+
"gitHead": "e5a13ab2e6c139966aa0907cff56676c3b8753dd",
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"lodash-es": "^4.17.21"
|
|
29
29
|
}
|
|
30
30
|
}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { cloneDeep } from 'lodash';
|
|
2
|
-
import pubsubJs from 'pubsub-js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* The settings manager wraps a collection of settings and provides
|
|
6
|
-
* methods to register and retrieve groups of settings
|
|
7
|
-
* It also helps track changes to the settings
|
|
8
|
-
*
|
|
9
|
-
* @export
|
|
10
|
-
* @class SettingsManager
|
|
11
|
-
*/
|
|
12
|
-
class SettingsManager {
|
|
13
|
-
constructor() {
|
|
14
|
-
/**
|
|
15
|
-
* The actual settings data
|
|
16
|
-
*
|
|
17
|
-
* @private
|
|
18
|
-
* @type {({[groupName: string]: any})}
|
|
19
|
-
*/
|
|
20
|
-
this.settings = {};
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Register a new settings group
|
|
24
|
-
*
|
|
25
|
-
* @param {string} groupName The name of the group to register
|
|
26
|
-
* @param {*} [defaultSetting={}] The default settings for the group
|
|
27
|
-
*/
|
|
28
|
-
register(groupName, defaultSetting = {}) {
|
|
29
|
-
if (this.settings[groupName]) {
|
|
30
|
-
throw new Error(`SETTINGS: Duplicate registration for ${groupName}`);
|
|
31
|
-
}
|
|
32
|
-
// Make a copy of the default settings
|
|
33
|
-
//
|
|
34
|
-
this.settings[groupName] = cloneDeep(defaultSetting);
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Retrieves a setting group
|
|
38
|
-
*
|
|
39
|
-
* @param {string} groupName The name of the group to fetch
|
|
40
|
-
*/
|
|
41
|
-
getGroup(groupName) {
|
|
42
|
-
return this.settings[groupName];
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Retrieves a specific setting
|
|
46
|
-
*
|
|
47
|
-
* @param {string} groupName
|
|
48
|
-
* @param {*} setting
|
|
49
|
-
*/
|
|
50
|
-
get(groupName, settingName) {
|
|
51
|
-
const group = this.getGroup(groupName) || {};
|
|
52
|
-
return group[settingName];
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Updates a specific setting and returns the change details
|
|
56
|
-
*
|
|
57
|
-
* @param {string} groupName
|
|
58
|
-
* @param {*} setting
|
|
59
|
-
*/
|
|
60
|
-
set(groupName, settingName, setting) {
|
|
61
|
-
const currentValue = cloneDeep(this.get(groupName, settingName));
|
|
62
|
-
this.settings[groupName][settingName] = setting;
|
|
63
|
-
const change = {
|
|
64
|
-
group: groupName,
|
|
65
|
-
name: settingName,
|
|
66
|
-
old: currentValue,
|
|
67
|
-
new: setting,
|
|
68
|
-
};
|
|
69
|
-
// Only emit the setting change when it has actually changed
|
|
70
|
-
// We will emit the setting change using the group and name scope
|
|
71
|
-
// so subscribers can focus on a certain group of settings
|
|
72
|
-
//
|
|
73
|
-
if (currentValue !== setting) {
|
|
74
|
-
pubsubJs.publish(`eva.setting.${change.group}.${change.name}`, change);
|
|
75
|
-
}
|
|
76
|
-
return change;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
const settings = new SettingsManager();
|
|
80
|
-
// This is more of an SDK family version.
|
|
81
|
-
// Because this new SDK is modular it makes no sense to emit a single package
|
|
82
|
-
// version here
|
|
83
|
-
//
|
|
84
|
-
const SDK_CLIENT_VERSION = '2.0.0';
|
|
85
|
-
// Register the default settings
|
|
86
|
-
//
|
|
87
|
-
const SETTINGS_GROUP_NAME = 'evaCore';
|
|
88
|
-
// Setup the core settings
|
|
89
|
-
//
|
|
90
|
-
const defaultSettings = {
|
|
91
|
-
language: 'en-EN',
|
|
92
|
-
clientName: 'eva-sdk-core',
|
|
93
|
-
clientVersion: SDK_CLIENT_VERSION,
|
|
94
|
-
appName: 'UNKNOWN',
|
|
95
|
-
appVersion: '0.0.0',
|
|
96
|
-
};
|
|
97
|
-
settings.register(SETTINGS_GROUP_NAME, defaultSettings);
|
|
98
|
-
/**
|
|
99
|
-
* Retrieves the core SDK setting
|
|
100
|
-
*
|
|
101
|
-
* @export
|
|
102
|
-
* @returns {IEvaCoreSettings}
|
|
103
|
-
*/
|
|
104
|
-
function getCoreSettings() {
|
|
105
|
-
return settings.getGroup(SETTINGS_GROUP_NAME);
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Changes a setting for the core SDK settings
|
|
109
|
-
*
|
|
110
|
-
* @export
|
|
111
|
-
* @param {string} settingName
|
|
112
|
-
* @param {*} setting
|
|
113
|
-
* @returns {ISettingsChange}
|
|
114
|
-
*/
|
|
115
|
-
function setCoreSetting(settingName, setting) {
|
|
116
|
-
return settings.set(SETTINGS_GROUP_NAME, settingName, setting);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
export { SDK_CLIENT_VERSION, SETTINGS_GROUP_NAME, SettingsManager, getCoreSettings, setCoreSetting, settings };
|
|
120
|
-
//# sourceMappingURL=eva-sdk-core-settings.es5.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"eva-sdk-core-settings.es5.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('lodash'), require('pubsub-js')) :
|
|
3
|
-
typeof define === 'function' && define.amd ? define(['exports', 'lodash', 'pubsub-js'], factory) :
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.evaSdkCoreSettings = {}, global.lodash, global.pubsubJs));
|
|
5
|
-
})(this, (function (exports, lodash, pubsubJs) { 'use strict';
|
|
6
|
-
|
|
7
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
|
-
|
|
9
|
-
var pubsubJs__default = /*#__PURE__*/_interopDefaultLegacy(pubsubJs);
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* The settings manager wraps a collection of settings and provides
|
|
13
|
-
* methods to register and retrieve groups of settings
|
|
14
|
-
* It also helps track changes to the settings
|
|
15
|
-
*
|
|
16
|
-
* @export
|
|
17
|
-
* @class SettingsManager
|
|
18
|
-
*/
|
|
19
|
-
class SettingsManager {
|
|
20
|
-
constructor() {
|
|
21
|
-
/**
|
|
22
|
-
* The actual settings data
|
|
23
|
-
*
|
|
24
|
-
* @private
|
|
25
|
-
* @type {({[groupName: string]: any})}
|
|
26
|
-
*/
|
|
27
|
-
this.settings = {};
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Register a new settings group
|
|
31
|
-
*
|
|
32
|
-
* @param {string} groupName The name of the group to register
|
|
33
|
-
* @param {*} [defaultSetting={}] The default settings for the group
|
|
34
|
-
*/
|
|
35
|
-
register(groupName, defaultSetting = {}) {
|
|
36
|
-
if (this.settings[groupName]) {
|
|
37
|
-
throw new Error(`SETTINGS: Duplicate registration for ${groupName}`);
|
|
38
|
-
}
|
|
39
|
-
// Make a copy of the default settings
|
|
40
|
-
//
|
|
41
|
-
this.settings[groupName] = lodash.cloneDeep(defaultSetting);
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Retrieves a setting group
|
|
45
|
-
*
|
|
46
|
-
* @param {string} groupName The name of the group to fetch
|
|
47
|
-
*/
|
|
48
|
-
getGroup(groupName) {
|
|
49
|
-
return this.settings[groupName];
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Retrieves a specific setting
|
|
53
|
-
*
|
|
54
|
-
* @param {string} groupName
|
|
55
|
-
* @param {*} setting
|
|
56
|
-
*/
|
|
57
|
-
get(groupName, settingName) {
|
|
58
|
-
const group = this.getGroup(groupName) || {};
|
|
59
|
-
return group[settingName];
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Updates a specific setting and returns the change details
|
|
63
|
-
*
|
|
64
|
-
* @param {string} groupName
|
|
65
|
-
* @param {*} setting
|
|
66
|
-
*/
|
|
67
|
-
set(groupName, settingName, setting) {
|
|
68
|
-
const currentValue = lodash.cloneDeep(this.get(groupName, settingName));
|
|
69
|
-
this.settings[groupName][settingName] = setting;
|
|
70
|
-
const change = {
|
|
71
|
-
group: groupName,
|
|
72
|
-
name: settingName,
|
|
73
|
-
old: currentValue,
|
|
74
|
-
new: setting,
|
|
75
|
-
};
|
|
76
|
-
// Only emit the setting change when it has actually changed
|
|
77
|
-
// We will emit the setting change using the group and name scope
|
|
78
|
-
// so subscribers can focus on a certain group of settings
|
|
79
|
-
//
|
|
80
|
-
if (currentValue !== setting) {
|
|
81
|
-
pubsubJs__default["default"].publish(`eva.setting.${change.group}.${change.name}`, change);
|
|
82
|
-
}
|
|
83
|
-
return change;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
const settings = new SettingsManager();
|
|
87
|
-
// This is more of an SDK family version.
|
|
88
|
-
// Because this new SDK is modular it makes no sense to emit a single package
|
|
89
|
-
// version here
|
|
90
|
-
//
|
|
91
|
-
const SDK_CLIENT_VERSION = '2.0.0';
|
|
92
|
-
// Register the default settings
|
|
93
|
-
//
|
|
94
|
-
const SETTINGS_GROUP_NAME = 'evaCore';
|
|
95
|
-
// Setup the core settings
|
|
96
|
-
//
|
|
97
|
-
const defaultSettings = {
|
|
98
|
-
language: 'en-EN',
|
|
99
|
-
clientName: 'eva-sdk-core',
|
|
100
|
-
clientVersion: SDK_CLIENT_VERSION,
|
|
101
|
-
appName: 'UNKNOWN',
|
|
102
|
-
appVersion: '0.0.0',
|
|
103
|
-
};
|
|
104
|
-
settings.register(SETTINGS_GROUP_NAME, defaultSettings);
|
|
105
|
-
/**
|
|
106
|
-
* Retrieves the core SDK setting
|
|
107
|
-
*
|
|
108
|
-
* @export
|
|
109
|
-
* @returns {IEvaCoreSettings}
|
|
110
|
-
*/
|
|
111
|
-
function getCoreSettings() {
|
|
112
|
-
return settings.getGroup(SETTINGS_GROUP_NAME);
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Changes a setting for the core SDK settings
|
|
116
|
-
*
|
|
117
|
-
* @export
|
|
118
|
-
* @param {string} settingName
|
|
119
|
-
* @param {*} setting
|
|
120
|
-
* @returns {ISettingsChange}
|
|
121
|
-
*/
|
|
122
|
-
function setCoreSetting(settingName, setting) {
|
|
123
|
-
return settings.set(SETTINGS_GROUP_NAME, settingName, setting);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
exports.SDK_CLIENT_VERSION = SDK_CLIENT_VERSION;
|
|
127
|
-
exports.SETTINGS_GROUP_NAME = SETTINGS_GROUP_NAME;
|
|
128
|
-
exports.SettingsManager = SettingsManager;
|
|
129
|
-
exports.getCoreSettings = getCoreSettings;
|
|
130
|
-
exports.setCoreSetting = setCoreSetting;
|
|
131
|
-
exports.settings = settings;
|
|
132
|
-
|
|
133
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
134
|
-
|
|
135
|
-
}));
|
|
136
|
-
//# sourceMappingURL=eva-sdk-core-settings.umd.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"eva-sdk-core-settings.umd.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|