@springtree/eva-sdk-core-settings 2.0.4 → 3.0.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/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 +10 -14
- 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 -2607
- package/lib/eva-sdk-core-settings.es5.js.map +0 -1
- package/lib/eva-sdk-core-settings.umd.js +0 -2624
- 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
|
*
|
|
@@ -69,8 +65,8 @@ export class SettingsManager {
|
|
|
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 (oldValue
|
|
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,SAAS,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.1",
|
|
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": "367bb3b4f892af1d2bcf28f9c3b8bb0a9a66015d",
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"lodash-es": "^4.17.21"
|
|
29
29
|
}
|
|
30
30
|
}
|