@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.
@@ -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: any;
11
- new: any;
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?: any): void;
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): any;
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): any;
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: any): ISettingsChange;
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":"AAGA;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,GAAG,EAAE,GAAG,CAAC;CACV;AAED;;;;;;;GAOG;AACH,qBAAa,eAAe;IAE1B;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAkC;IAElD;;;;;OAKG;IACI,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,GAAE,GAAQ;IAU3D;;;;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,GAAG,GAAG,eAAe;CAqBjF;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
+ {"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 pubsubJs from 'pubsub-js';
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
- constructor() {
13
- /**
14
- * The actual settings data
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 currentValue = cloneDeep(this.get(groupName, settingName));
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: currentValue,
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 (currentValue !== setting) {
73
- pubsubJs.publish(`eva.setting.${change.group}.${change.name}`, change);
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,QAAQ,CAAC;AACnC,OAAO,QAAQ,MAAM,WAAW,CAAC;AAejC;;;;;;;GAOG;AACH,MAAM,OAAO,eAAe;IAA5B;QAEE;;;;;WAKG;QACK,aAAQ,GAA+B,EAAE,CAAC;IAiEpD,CAAC;IA/DC;;;;;OAKG;IACI,QAAQ,CAAC,SAAiB,EAAE,iBAAsB,EAAE;QACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,wCAAwC,SAAS,EAAE,CAAC,CAAC;SACtE;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,CAAC,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACI,GAAG,CAAC,SAAiB,EAAE,WAAmB;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;OAKG;IACI,GAAG,CAAC,SAAgB,EAAE,WAAmB,EAAE,OAAY;QAC5D,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC;QAEhD,MAAM,MAAM,GAAoB;YAC9B,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,WAAW;YACjB,GAAG,EAAE,YAAY;YACjB,GAAG,EAAE,OAAO;SACb,CAAC;QAEF,4DAA4D;QAC5D,iEAAiE;QACjE,0DAA0D;QAC1D,EAAE;QACF,IAAI,YAAY,KAAK,OAAO,EAAE;YAC5B,QAAQ,CAAC,OAAO,CAAC,eAAe,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;SACxE;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,CAAC,CAAC;AAChD,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"}
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"}
@@ -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": "2.0.3",
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.umd.js",
9
- "module": "lib/eva-sdk-core-settings.es5.js",
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": "c0faec8b071745e1fe03d9c7bb978dbabf290523",
26
- "peerDependencies": {
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}