@fireflysemantics/slice 14.0.7

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.
@@ -0,0 +1,133 @@
1
+ import { ReplaySubject } from 'rxjs';
2
+ export class OStore {
3
+ constructor(start) {
4
+ /**
5
+ * Map of Key Value pair entries
6
+ * containing values store in this store.
7
+ */
8
+ this.entries = new Map();
9
+ /**
10
+ * Map of replay subject id to `ReplaySubject` instance.
11
+ */
12
+ this.subjects = new Map();
13
+ if (start) {
14
+ this.S = start;
15
+ const keys = Object.keys(start);
16
+ keys.forEach((k) => {
17
+ const ovr = start[k];
18
+ this.post(ovr, ovr.value);
19
+ ovr.obs = this.observe(ovr);
20
+ });
21
+ }
22
+ }
23
+ /**
24
+ * Reset the state of the OStore to the
25
+ * values or reset provided in the constructor
26
+ * {@link OStoreStart} instance.
27
+ */
28
+ reset() {
29
+ if (this.S) {
30
+ const keys = Object.keys(this.S);
31
+ keys.forEach((k) => {
32
+ const ovr = this.S[k];
33
+ this.put(ovr, ovr.reset ? ovr.reset : ovr.value);
34
+ });
35
+ }
36
+ }
37
+ /**
38
+ * Clear all entries
39
+ */
40
+ clear() {
41
+ this.entries.clear();
42
+ }
43
+ /**
44
+ * Set create a key value pair entry and creates a
45
+ * corresponding replay subject instance that will
46
+ * be used to broadcast updates.
47
+ *
48
+ * @param key The key identifying the value
49
+ * @param value The value
50
+ */
51
+ post(key, value) {
52
+ this.entries.set(key, value);
53
+ this.subjects.set(key, new ReplaySubject(1));
54
+ //Emit immediately so that Observers can receive
55
+ //the value straight away.
56
+ const subject = this.subjects.get(key);
57
+ if (subject) {
58
+ subject.next(value);
59
+ }
60
+ }
61
+ /**
62
+ * Update a value and notify subscribers.
63
+ *
64
+ * @param key
65
+ * @param value
66
+ */
67
+ put(key, value) {
68
+ this.entries.set(key, value);
69
+ const subject = this.subjects.get(key);
70
+ if (subject) {
71
+ subject.next(value);
72
+ }
73
+ }
74
+ /**
75
+ * Deletes both the value entry and the corresponding {@link ReplaySubject}.
76
+ * Will unsubscribe the {@link ReplaySubject} prior to deleting it,
77
+ * severing communication with corresponding {@link Observable}s.
78
+ *
79
+ * @param key
80
+ */
81
+ delete(key) {
82
+ this.entries.delete(key);
83
+ this.subjects.delete(key);
84
+ const subject = this.subjects.get(key);
85
+ if (subject) {
86
+ subject.unsubscribe();
87
+ }
88
+ }
89
+ /**
90
+ * Observe changes to the values.
91
+ *
92
+ * @param key
93
+ * @return An {@link Observable} of the value
94
+ */
95
+ observe(key) {
96
+ return this.subjects.get(key).asObservable();
97
+ }
98
+ /**
99
+ * Check whether a value exists.
100
+ *
101
+ * @param key
102
+ * @return True if the entry exists ( Is not null or undefined ) and false otherwise.
103
+ */
104
+ exists(key) {
105
+ return this.entries.get(key) != null;
106
+ }
107
+ /**
108
+ * Retrieve a snapshot of the
109
+ * value.
110
+ *
111
+ * @param key
112
+ * @return A snapshot of the value corresponding to the key.
113
+ */
114
+ snapshot(key) {
115
+ return this.entries.get(key);
116
+ }
117
+ /**
118
+ * Indicates whether the store is empty.
119
+ * @return true if the store is empty, false otherwise.
120
+ */
121
+ isEmpty() {
122
+ return Array.from(this.entries.values()).length == 0;
123
+ }
124
+ /**
125
+ * Returns the number of key value pairs contained.
126
+ *
127
+ * @return the number of entries in the store.
128
+ */
129
+ count() {
130
+ return Array.from(this.entries.values()).length;
131
+ }
132
+ }
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT1N0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2xpY2Uvc3JjL2xpYi9PU3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQTtBQTJCaEQsTUFBTSxPQUFPLE1BQU07SUFPZixZQUFZLEtBQWtCO1FBbUM5Qjs7O1dBR0c7UUFDSSxZQUFPLEdBQWtCLElBQUksR0FBRyxFQUFFLENBQUE7UUFFekM7O1dBRUc7UUFDSyxhQUFRLEdBQWlDLElBQUksR0FBRyxFQUFFLENBQUE7UUEzQ3RELElBQUksS0FBSyxFQUFFO1lBQ1AsSUFBSSxDQUFDLENBQUMsR0FBUSxLQUFLLENBQUM7WUFDcEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2YsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBa0IsQ0FBQTtnQkFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUN6QixHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDL0IsQ0FBQyxDQUFDLENBQUE7U0FDTDtJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSztRQUNSLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNSLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDZixNQUFNLEdBQUcsR0FBa0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3BELENBQUMsQ0FBQyxDQUFBO1NBQ0w7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLO1FBQ1IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUN4QixDQUFDO0lBY0Q7Ozs7Ozs7T0FPRztJQUNJLElBQUksQ0FBQyxHQUFRLEVBQUUsS0FBVTtRQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDNUMsaURBQWlEO1FBQ2pELDBCQUEwQjtRQUMxQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN0QyxJQUFJLE9BQU8sRUFBRTtZQUNULE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7U0FDdEI7SUFDTCxDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSSxHQUFHLENBQUMsR0FBUSxFQUFFLEtBQVU7UUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQzVCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3RDLElBQUksT0FBTyxFQUFFO1lBQ1QsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtTQUN0QjtJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsR0FBUTtRQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN0QyxJQUFJLE9BQU8sRUFBRTtZQUNULE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQTtTQUN4QjtJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE9BQU8sQ0FBQyxHQUFRO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFFLENBQUMsWUFBWSxFQUFFLENBQUE7SUFDakQsQ0FBQztJQUVEOzs7OztRQUtJO0lBQ0csTUFBTSxDQUFDLEdBQVE7UUFDbEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUE7SUFDeEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFFBQVEsQ0FBQyxHQUFRO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDaEMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE9BQU87UUFDVixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUE7SUFDeEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLO1FBQ1IsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUE7SUFDbkQsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVwbGF5U3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnXG5cbi8qKlxuICogSW5pdGlhbGl6ZSBodGUgc3RvcmUgd2l0aCB0aGlzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbHVlUmVzZXQge1xuICAgIHZhbHVlOiBhbnlcbiAgICByZXNldD86IGFueVxufVxuXG4vKipcbiAqIE9TdG9yZSBLZXkgVmFsdWUgUmVzZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNWYWx1ZVJlc2V0IHtcbiAgICB2YWx1ZTogYW55XG4gICAgcmVzZXQ/OiBhbnlcbiAgICBvYnM6IE9ic2VydmFibGU8YW55PlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleU9ic1ZhbHVlUmVzZXQge1xuICAgIFtrZXk6IHN0cmluZ106IE9ic1ZhbHVlUmVzZXRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPU3RvcmVTdGFydCB7XG4gICAgW2tleTogc3RyaW5nXTogVmFsdWVSZXNldFxufVxuXG5leHBvcnQgY2xhc3MgT1N0b3JlPEUgZXh0ZW5kcyBLZXlPYnNWYWx1ZVJlc2V0PiB7XG4gICAgLyoqXG4gICAgICogU3RhcnQga2V5cyBhbmQgdmFsdWVzXG4gICAgICogcGFzc2VkIGluIHZpYSBjb25zdHJ1Y3Rvci5cbiAgICAgKi9cbiAgICBwdWJsaWMgUyE6IEVcblxuICAgIGNvbnN0cnVjdG9yKHN0YXJ0OiBPU3RvcmVTdGFydCkge1xuICAgICAgICBpZiAoc3RhcnQpIHtcbiAgICAgICAgICAgIHRoaXMuUyA9IDxhbnk+c3RhcnQ7XG4gICAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoc3RhcnQpXG4gICAgICAgICAgICBrZXlzLmZvckVhY2goKGspID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBvdnIgPSBzdGFydFtrXSBhcyBPYnNWYWx1ZVJlc2V0XG4gICAgICAgICAgICAgICAgdGhpcy5wb3N0KG92ciwgb3ZyLnZhbHVlKVxuICAgICAgICAgICAgICAgIG92ci5vYnMgPSB0aGlzLm9ic2VydmUob3ZyKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc2V0IHRoZSBzdGF0ZSBvZiB0aGUgT1N0b3JlIHRvIHRoZVxuICAgICAqIHZhbHVlcyBvciByZXNldCBwcm92aWRlZCBpbiB0aGUgY29uc3RydWN0b3JcbiAgICAgKiB7QGxpbmsgT1N0b3JlU3RhcnR9IGluc3RhbmNlLlxuICAgICAqL1xuICAgIHB1YmxpYyByZXNldCgpIHtcbiAgICAgICAgaWYgKHRoaXMuUykge1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuUylcbiAgICAgICAgICAgIGtleXMuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG92cjogT2JzVmFsdWVSZXNldCA9IHRoaXMuU1trXVxuICAgICAgICAgICAgICAgIHRoaXMucHV0KG92ciwgb3ZyLnJlc2V0ID8gb3ZyLnJlc2V0IDogb3ZyLnZhbHVlKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsZWFyIGFsbCBlbnRyaWVzXG4gICAgICovXG4gICAgcHVibGljIGNsZWFyKCkge1xuICAgICAgICB0aGlzLmVudHJpZXMuY2xlYXIoKVxuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogTWFwIG9mIEtleSBWYWx1ZSBwYWlyIGVudHJpZXNcbiAgICAgKiBjb250YWluaW5nIHZhbHVlcyBzdG9yZSBpbiB0aGlzIHN0b3JlLlxuICAgICAqL1xuICAgIHB1YmxpYyBlbnRyaWVzOiBNYXA8YW55LCBhbnk+ID0gbmV3IE1hcCgpXG5cbiAgICAvKipcbiAgICAgKiBNYXAgb2YgcmVwbGF5IHN1YmplY3QgaWQgdG8gYFJlcGxheVN1YmplY3RgIGluc3RhbmNlLlxuICAgICAqL1xuICAgIHByaXZhdGUgc3ViamVjdHM6IE1hcDxhbnksIFJlcGxheVN1YmplY3Q8YW55Pj4gPSBuZXcgTWFwKClcblxuICAgIC8qKlxuICAgICAqIFNldCBjcmVhdGUgYSBrZXkgdmFsdWUgcGFpciBlbnRyeSBhbmQgY3JlYXRlcyBhIFxuICAgICAqIGNvcnJlc3BvbmRpbmcgcmVwbGF5IHN1YmplY3QgaW5zdGFuY2UgdGhhdCB3aWxsXG4gICAgICogYmUgdXNlZCB0byBicm9hZGNhc3QgdXBkYXRlcy5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgaWRlbnRpZnlpbmcgdGhlIHZhbHVlXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBwb3N0KGtleTogYW55LCB2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuZW50cmllcy5zZXQoa2V5LCB2YWx1ZSlcbiAgICAgICAgdGhpcy5zdWJqZWN0cy5zZXQoa2V5LCBuZXcgUmVwbGF5U3ViamVjdCgxKSlcbiAgICAgICAgLy9FbWl0IGltbWVkaWF0ZWx5IHNvIHRoYXQgT2JzZXJ2ZXJzIGNhbiByZWNlaXZlIFxuICAgICAgICAvL3RoZSB2YWx1ZSBzdHJhaWdodCBhd2F5LlxuICAgICAgICBjb25zdCBzdWJqZWN0ID0gdGhpcy5zdWJqZWN0cy5nZXQoa2V5KVxuICAgICAgICBpZiAoc3ViamVjdCkge1xuICAgICAgICAgICAgc3ViamVjdC5uZXh0KHZhbHVlKVxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBhIHZhbHVlIGFuZCBub3RpZnkgc3Vic2NyaWJlcnMuXG4gICAgICogXG4gICAgICogQHBhcmFtIGtleSBcbiAgICAgKiBAcGFyYW0gdmFsdWUgXG4gICAgICovXG4gICAgcHVibGljIHB1dChrZXk6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLmVudHJpZXMuc2V0KGtleSwgdmFsdWUpXG4gICAgICAgIGNvbnN0IHN1YmplY3QgPSB0aGlzLnN1YmplY3RzLmdldChrZXkpXG4gICAgICAgIGlmIChzdWJqZWN0KSB7XG4gICAgICAgICAgICBzdWJqZWN0Lm5leHQodmFsdWUpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWxldGVzIGJvdGggdGhlIHZhbHVlIGVudHJ5IGFuZCB0aGUgY29ycmVzcG9uZGluZyB7QGxpbmsgUmVwbGF5U3ViamVjdH0uXG4gICAgICogV2lsbCB1bnN1YnNjcmliZSB0aGUge0BsaW5rIFJlcGxheVN1YmplY3R9IHByaW9yIHRvIGRlbGV0aW5nIGl0LFxuICAgICAqIHNldmVyaW5nIGNvbW11bmljYXRpb24gd2l0aCBjb3JyZXNwb25kaW5nIHtAbGluayBPYnNlcnZhYmxlfXMuXG4gICAgICogIFxuICAgICAqIEBwYXJhbSBrZXkgXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZShrZXk6IGFueSkge1xuICAgICAgICB0aGlzLmVudHJpZXMuZGVsZXRlKGtleSlcbiAgICAgICAgdGhpcy5zdWJqZWN0cy5kZWxldGUoa2V5KVxuICAgICAgICBjb25zdCBzdWJqZWN0ID0gdGhpcy5zdWJqZWN0cy5nZXQoa2V5KVxuICAgICAgICBpZiAoc3ViamVjdCkge1xuICAgICAgICAgICAgc3ViamVjdC51bnN1YnNjcmliZSgpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPYnNlcnZlIGNoYW5nZXMgdG8gdGhlIHZhbHVlcy5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0ga2V5IFxuICAgICAqIEByZXR1cm4gQW4ge0BsaW5rIE9ic2VydmFibGV9IG9mIHRoZSB2YWx1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBvYnNlcnZlKGtleTogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN1YmplY3RzLmdldChrZXkpIS5hc09ic2VydmFibGUoKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAgKiBDaGVjayB3aGV0aGVyIGEgdmFsdWUgZXhpc3RzLlxuICAgICAgKiBcbiAgICAgICogQHBhcmFtIGtleSBcbiAgICAgICogQHJldHVybiBUcnVlIGlmIHRoZSBlbnRyeSBleGlzdHMgKCBJcyBub3QgbnVsbCBvciB1bmRlZmluZWQgKSBhbmQgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAgKi9cbiAgICBwdWJsaWMgZXhpc3RzKGtleTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudHJpZXMuZ2V0KGtleSkgIT0gbnVsbFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlIGEgc25hcHNob3Qgb2YgdGhlIFxuICAgICAqIHZhbHVlLlxuICAgICAqICBcbiAgICAgKiBAcGFyYW0ga2V5IFxuICAgICAqIEByZXR1cm4gQSBzbmFwc2hvdCBvZiB0aGUgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUga2V5LlxuICAgICAqL1xuICAgIHB1YmxpYyBzbmFwc2hvdChrZXk6IGFueSk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudHJpZXMuZ2V0KGtleSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgc3RvcmUgaXMgZW1wdHkuXG4gICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBzdG9yZSBpcyBlbXB0eSwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBpc0VtcHR5KCkge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmVudHJpZXMudmFsdWVzKCkpLmxlbmd0aCA9PSAwXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGtleSB2YWx1ZSBwYWlycyBjb250YWluZWQuXG4gICAgICogXG4gICAgICogQHJldHVybiB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIHN0b3JlLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb3VudCgpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5lbnRyaWVzLnZhbHVlcygpKS5sZW5ndGhcbiAgICB9XG59Il19
@@ -0,0 +1,222 @@
1
+ import { AbstractStore } from "./AbstractStore";
2
+ const { isArray } = Array;
3
+ export class Slice extends AbstractStore {
4
+ /**
5
+ * perform initial notification to all observers,
6
+ * such that operations like {@link combineLatest}{}
7
+ * will execute at least once.
8
+ *
9
+ * @param label The slice label
10
+ * @param predicate The slice predicate
11
+ * @param eStore The EStore instance containing the elements considered for slicing
12
+ *
13
+ * @example
14
+ <pre>
15
+ //Empty slice
16
+ new Slice<Todo>(Todo.COMPLETE, todo=>!todo.complete);
17
+
18
+ //Initialized slice
19
+ let todos = [new Todo(false, "You complete me!"),
20
+ new Todo(true, "You completed me!")];
21
+ new Slice<Todo>(Todo.COMPLETE, todo=>!todo.complete, todos);
22
+ </pre>
23
+ */
24
+ constructor(label, predicate, eStore) {
25
+ super();
26
+ this.label = label;
27
+ this.predicate = predicate;
28
+ this.eStore = eStore;
29
+ /* The slice element entries */
30
+ this.entries = new Map();
31
+ const entities = eStore.allSnapshot();
32
+ this.config = eStore.config;
33
+ let passed = this.test(predicate, entities);
34
+ const delta = { type: "Initialize" /* INTIALIZE */, entries: passed };
35
+ this.post(passed);
36
+ this.notifyDelta.next(delta);
37
+ }
38
+ /**
39
+ * Add the element if it satisfies the predicate
40
+ * and notify subscribers that an element was added.
41
+ *
42
+ * @param e The element to be considered for slicing
43
+ */
44
+ post(e) {
45
+ if (isArray(e)) {
46
+ this.postA(e);
47
+ }
48
+ else {
49
+ if (this.predicate(e)) {
50
+ const id = e[this.config.guidKey];
51
+ this.entries.set(id, e);
52
+ const delta = { type: "Post" /* POST */, entries: [e] };
53
+ this.notifyAll([...Array.from(this.entries.values())], delta);
54
+ }
55
+ }
56
+ }
57
+ /**
58
+ * Add the elements if they satisfy the predicate
59
+ * and notify subscribers that elements were added.
60
+ *
61
+ * @param e The element to be considered for slicing
62
+ */
63
+ postN(...e) {
64
+ this.postA(e);
65
+ }
66
+ /**
67
+ * Add the elements if they satisfy the predicate
68
+ * and notify subscribers that elements were added.
69
+ *
70
+ * @param e The element to be considered for slicing
71
+ */
72
+ postA(e) {
73
+ const d = [];
74
+ e.forEach(e => {
75
+ if (this.predicate(e)) {
76
+ const id = e[this.config.guidKey];
77
+ this.entries.set(id, e);
78
+ d.push(e);
79
+ }
80
+ });
81
+ const delta = { type: "Post" /* POST */, entries: d };
82
+ this.notifyAll([...Array.from(this.entries.values())], delta);
83
+ }
84
+ /**
85
+ * Delete an element from the slice.
86
+ *
87
+ * @param e The element to be deleted if it satisfies the predicate
88
+ */
89
+ delete(e) {
90
+ if (isArray(e)) {
91
+ this.deleteA(e);
92
+ }
93
+ else {
94
+ if (this.predicate(e)) {
95
+ const id = e[this.config.guidKey];
96
+ this.entries.delete(id);
97
+ const delta = { type: "Delete" /* DELETE */, entries: [e] };
98
+ this.notifyAll(Array.from(this.entries.values()), delta);
99
+ }
100
+ }
101
+ }
102
+ /**
103
+ * @param e The elements to be deleted if it satisfies the predicate
104
+ */
105
+ deleteN(...e) {
106
+ this.deleteA(e);
107
+ }
108
+ /**
109
+ * @param e The elements to be deleted if they satisfy the predicate
110
+ */
111
+ deleteA(e) {
112
+ const d = [];
113
+ e.forEach(e => {
114
+ if (this.predicate(e)) {
115
+ const id = e[this.config.guidKey];
116
+ d.push(this.entries.get(id));
117
+ this.entries.delete(id);
118
+ }
119
+ });
120
+ const delta = { type: "Delete" /* DELETE */, entries: d };
121
+ this.notifyAll([...Array.from(this.entries.values())], delta);
122
+ }
123
+ /**
124
+ * Update the slice when an Entity instance mutates.
125
+ *
126
+ * @param e The element to be added or deleted depending on predicate reevaluation
127
+ */
128
+ put(e) {
129
+ if (isArray(e)) {
130
+ this.putA(e);
131
+ }
132
+ else {
133
+ const id = e[this.config.guidKey];
134
+ if (this.entries.get(id)) {
135
+ if (!this.predicate(e)) {
136
+ //Note that this is a ActionTypes.DELETE because we are removing the
137
+ //entity from the slice.
138
+ const delta = { type: "Delete" /* DELETE */, entries: [e] };
139
+ this.entries.delete(id);
140
+ this.notifyAll([...Array.from(this.entries.values())], delta);
141
+ }
142
+ }
143
+ else if (this.predicate(e)) {
144
+ this.entries.set(id, e);
145
+ const delta = { type: "Put" /* PUT */, entries: [e] };
146
+ this.notifyAll([...Array.from(this.entries.values())], delta);
147
+ }
148
+ }
149
+ }
150
+ /**
151
+ * Update the slice with mutated Entity instances.
152
+ *
153
+ * @param e The elements to be deleted if it satisfies the predicate
154
+ */
155
+ putN(...e) {
156
+ this.putA(e);
157
+ }
158
+ /**
159
+ * @param e The elements to be put
160
+ */
161
+ putA(e) {
162
+ const d = []; //instances to delete
163
+ const u = []; //instances to update
164
+ e.forEach(e => {
165
+ const id = e[this.config.guidKey];
166
+ if (this.entries.get(id)) {
167
+ if (!this.predicate(e)) {
168
+ d.push(this.entries.get(id));
169
+ }
170
+ }
171
+ else if (this.predicate(e)) {
172
+ u.push(e);
173
+ }
174
+ });
175
+ if (d.length > 0) {
176
+ d.forEach(e => {
177
+ this.entries.delete(e[this.config.guidKey]);
178
+ });
179
+ const delta = { type: "Delete" /* DELETE */, entries: d };
180
+ this.notifyAll([...Array.from(this.entries.values())], delta);
181
+ }
182
+ if (u.length > 0) {
183
+ u.forEach(e => {
184
+ this.entries.set(e[this.config.guidKey], e);
185
+ });
186
+ const delta = { type: "Put" /* PUT */, entries: u };
187
+ this.notifyAll([...Array.from(this.entries.values())], delta);
188
+ }
189
+ }
190
+ /**
191
+ * Resets the slice to empty.
192
+ */
193
+ reset() {
194
+ let delta = {
195
+ type: "Reset" /* RESET */,
196
+ entries: [...Array.from(this.entries.values())]
197
+ };
198
+ this.notifyAll([], delta);
199
+ this.entries = new Map();
200
+ }
201
+ /**
202
+ * Utility method that applies the predicate to an array
203
+ * of entities and return the ones that pass the test.
204
+ *
205
+ * Used to create an initial set of values
206
+ * that should be part of the `Slice`.
207
+ *
208
+ * @param p
209
+ * @param e
210
+ * @return The the array of entities that pass the predicate test.
211
+ */
212
+ test(p, e) {
213
+ let v = [];
214
+ e.forEach((e) => {
215
+ if (p(e)) {
216
+ v.push(e);
217
+ }
218
+ });
219
+ return v;
220
+ }
221
+ }
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2xpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zbGljZS9zcmMvbGliL1NsaWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUcvQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFBO0FBRXpCLE1BQU0sT0FBTyxLQUFTLFNBQVEsYUFBZ0I7SUFNMUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FtQkc7SUFDSCxZQUNXLEtBQWEsRUFDYixTQUF1QixFQUN2QixNQUFpQjtRQUN4QixLQUFLLEVBQUUsQ0FBQztRQUhELFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQ3ZCLFdBQU0sR0FBTixNQUFNLENBQVc7UUExQjVCLCtCQUErQjtRQUN4QixZQUFPLEdBQW1CLElBQUksR0FBRyxFQUFFLENBQUM7UUEyQnZDLE1BQU0sUUFBUSxHQUFRLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUMxQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUE7UUFDM0IsSUFBSSxNQUFNLEdBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDakQsTUFBTSxLQUFLLEdBQWEsRUFBRSxJQUFJLDhCQUF1QixFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUN6RSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQUksQ0FBQyxDQUFVO1FBQ1gsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDWixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO1NB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QWE7WUFDbEIsSUFBSSxxQkFBbUI7WUFDdkIsT0FBTyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUNsRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksSUFBSSxDQUFDLENBQWUsRUFBRSxDQUFNO1FBQy9CLElBQUksQ0FBQyxHQUFRLEVBQUUsQ0FBQztRQUNoQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBSSxFQUFFLEVBQUU7WUFDZixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDTixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2I7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVsdGEsIEFjdGlvblR5cGVzLCBQcmVkaWNhdGUgfSBmcm9tIFwiLi9tb2RlbHNcIlxuaW1wb3J0IHsgQWJzdHJhY3RTdG9yZSB9IGZyb20gXCIuL0Fic3RyYWN0U3RvcmVcIlxuaW1wb3J0IHsgRVN0b3JlIH0gZnJvbSBcIi4vRVN0b3JlXCI7XG5cbmNvbnN0IHsgaXNBcnJheSB9ID0gQXJyYXlcblxuZXhwb3J0IGNsYXNzIFNsaWNlPEU+IGV4dGVuZHMgQWJzdHJhY3RTdG9yZTxFPiB7XG5cblxuICAgIC8qIFRoZSBzbGljZSBlbGVtZW50IGVudHJpZXMgKi9cbiAgICBwdWJsaWMgZW50cmllczogTWFwPHN0cmluZywgRT4gPSBuZXcgTWFwKCk7XG5cbiAgICAvKipcbiAgICAgKiBwZXJmb3JtIGluaXRpYWwgbm90aWZpY2F0aW9uIHRvIGFsbCBvYnNlcnZlcnMsXG4gICAgICogc3VjaCB0aGF0IG9wZXJhdGlvbnMgbGlrZSB7QGxpbmsgY29tYmluZUxhdGVzdH17fVxuICAgICAqIHdpbGwgZXhlY3V0ZSBhdCBsZWFzdCBvbmNlLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBsYWJlbCBUaGUgc2xpY2UgbGFiZWxcbiAgICAgKiBAcGFyYW0gcHJlZGljYXRlIFRoZSBzbGljZSBwcmVkaWNhdGVcbiAgICAgKiBAcGFyYW0gZVN0b3JlIFRoZSBFU3RvcmUgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZWxlbWVudHMgY29uc2lkZXJlZCBmb3Igc2xpY2luZ1xuICAgICAqIFxuICAgICAqIEBleGFtcGxlIFxuICAgICAgIDxwcmU+XG4gICAgICAgLy9FbXB0eSBzbGljZVxuICAgICAgIG5ldyBTbGljZTxUb2RvPihUb2RvLkNPTVBMRVRFLCB0b2RvPT4hdG9kby5jb21wbGV0ZSk7XG4gIFxuICAgICAgIC8vSW5pdGlhbGl6ZWQgc2xpY2VcbiAgICAgICBsZXQgdG9kb3MgPSBbbmV3IFRvZG8oZmFsc2UsIFwiWW91IGNvbXBsZXRlIG1lIVwiKSwgXG4gICAgICAgICAgICAgICAgICAgIG5ldyBUb2RvKHRydWUsIFwiWW91IGNvbXBsZXRlZCBtZSFcIildO1xuICAgICAgIG5ldyBTbGljZTxUb2RvPihUb2RvLkNPTVBMRVRFLCB0b2RvPT4hdG9kby5jb21wbGV0ZSwgdG9kb3MpO1xuICAgICAgIDwvcHJlPlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgbGFiZWw6IHN0cmluZyxcbiAgICAgICAgcHVibGljIHByZWRpY2F0ZTogUHJlZGljYXRlPEU+LFxuICAgICAgICBwdWJsaWMgZVN0b3JlOiBFU3RvcmU8RT4pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgY29uc3QgZW50aXRpZXM6IEVbXSA9IGVTdG9yZS5hbGxTbmFwc2hvdCgpXG4gICAgICAgIHRoaXMuY29uZmlnID0gZVN0b3JlLmNvbmZpZ1xuICAgICAgICBsZXQgcGFzc2VkOiBFW10gPSB0aGlzLnRlc3QocHJlZGljYXRlLCBlbnRpdGllcyk7XG4gICAgICAgIGNvbnN0IGRlbHRhOiBEZWx0YTxFPiA9IHsgdHlwZTogQWN0aW9uVHlwZXMuSU5USUFMSVpFLCBlbnRyaWVzOiBwYXNzZWQgfTtcbiAgICAgICAgdGhpcy5wb3N0KHBhc3NlZCk7XG4gICAgICAgIHRoaXMubm90aWZ5RGVsdGEubmV4dChkZWx0YSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgdGhlIGVsZW1lbnQgaWYgaXQgc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGVcbiAgICAgKiBhbmQgbm90aWZ5IHN1YnNjcmliZXJzIHRoYXQgYW4gZWxlbWVudCB3YXMgYWRkZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZSBUaGUgZWxlbWVudCB0byBiZSBjb25zaWRlcmVkIGZvciBzbGljaW5nXG4gICAgICovXG4gICAgcG9zdChlOiBFIHwgRVtdKSB7XG4gICAgICAgIGlmIChpc0FycmF5KGUpKSB7XG4gICAgICAgICAgICB0aGlzLnBvc3RBKGUpXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmVkaWNhdGUoZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpZCA9ICg8YW55PmUpW3RoaXMuY29uZmlnLmd1aWRLZXldO1xuICAgICAgICAgICAgICAgIHRoaXMuZW50cmllcy5zZXQoaWQsIGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlbHRhOiBEZWx0YTxFPiA9IHsgdHlwZTogQWN0aW9uVHlwZXMuUE9TVCwgZW50cmllczogW2VdIH07XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlBbGwoWy4uLkFycmF5LmZyb20odGhpcy5lbnRyaWVzLnZhbHVlcygpKV0sIGRlbHRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCB0aGUgZWxlbWVudHMgaWYgdGhleSBzYXRpc2Z5IHRoZSBwcmVkaWNhdGVcbiAgICAgKiBhbmQgbm90aWZ5IHN1YnNjcmliZXJzIHRoYXQgZWxlbWVudHMgd2VyZSBhZGRlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlIFRoZSBlbGVtZW50IHRvIGJlIGNvbnNpZGVyZWQgZm9yIHNsaWNpbmdcbiAgICAgKi9cbiAgICBwb3N0TiguLi5lOiBFW10pIHtcbiAgICAgICAgdGhpcy5wb3N0QShlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgdGhlIGVsZW1lbnRzIGlmIHRoZXkgc2F0aXNmeSB0aGUgcHJlZGljYXRlXG4gICAgICogYW5kIG5vdGlmeSBzdWJzY3JpYmVycyB0aGF0IGVsZW1lbnRzIHdlcmUgYWRkZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZSBUaGUgZWxlbWVudCB0byBiZSBjb25zaWRlcmVkIGZvciBzbGljaW5nXG4gICAgICovXG4gICAgcG9zdEEoZTogRVtdKSB7XG4gICAgICAgIGNvbnN0IGQ6IEVbXSA9IFtdO1xuICAgICAgICBlLmZvckVhY2goZSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmVkaWNhdGUoZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpZCA9ICg8YW55PmUpW3RoaXMuY29uZmlnLmd1aWRLZXldO1xuICAgICAgICAgICAgICAgIHRoaXMuZW50cmllcy5zZXQoaWQsIGUpO1xuICAgICAgICAgICAgICAgIGQucHVzaChlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGRlbHRhOiBEZWx0YTxFPiA9IHsgdHlwZTogQWN0aW9uVHlwZXMuUE9TVCwgZW50cmllczogZCB9O1xuICAgICAgICB0aGlzLm5vdGlmeUFsbChbLi4uQXJyYXkuZnJvbSh0aGlzLmVudHJpZXMudmFsdWVzKCkpXSwgZGVsdGEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGV0ZSBhbiBlbGVtZW50IGZyb20gdGhlIHNsaWNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGUgVGhlIGVsZW1lbnQgdG8gYmUgZGVsZXRlZCBpZiBpdCBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZVxuICAgICAqL1xuICAgIGRlbGV0ZShlOiBFIHwgRVtdKSB7XG4gICAgICAgIGlmIChpc0FycmF5KGUpKSB7XG4gICAgICAgICAgICB0aGlzLmRlbGV0ZUEoZSlcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZWRpY2F0ZShlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gKDxhbnk+ZSlbdGhpcy5jb25maWcuZ3VpZEtleV1cbiAgICAgICAgICAgICAgICB0aGlzLmVudHJpZXMuZGVsZXRlKGlkKVxuICAgICAgICAgICAgICAgIGNvbnN0IGRlbHRhOiBEZWx0YTxFPiA9IHsgdHlwZTogQWN0aW9uVHlwZXMuREVMRVRFLCBlbnRyaWVzOiBbZV0gfVxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5QWxsKEFycmF5LmZyb20odGhpcy5lbnRyaWVzLnZhbHVlcygpKSwgZGVsdGEpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZSBUaGUgZWxlbWVudHMgdG8gYmUgZGVsZXRlZCBpZiBpdCBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZVxuICAgICAqL1xuICAgIGRlbGV0ZU4oLi4uZTogRVtdKSB7XG4gICAgICAgIHRoaXMuZGVsZXRlQShlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZSBUaGUgZWxlbWVudHMgdG8gYmUgZGVsZXRlZCBpZiB0aGV5IHNhdGlzZnkgdGhlIHByZWRpY2F0ZVxuICAgICAqL1xuICAgIGRlbGV0ZUEoZTogRVtdKSB7XG4gICAgICAgIGNvbnN0IGQ6IEVbXSA9IFtdXG4gICAgICAgIGUuZm9yRWFjaChlID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZWRpY2F0ZShlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gKDxhbnk+ZSlbdGhpcy5jb25maWcuZ3VpZEtleV1cbiAgICAgICAgICAgICAgICBkLnB1c2godGhpcy5lbnRyaWVzLmdldChpZCkhKVxuICAgICAgICAgICAgICAgIHRoaXMuZW50cmllcy5kZWxldGUoaWQpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBkZWx0YTogRGVsdGE8RT4gPSB7IHR5cGU6IEFjdGlvblR5cGVzLkRFTEVURSwgZW50cmllczogZCB9O1xuICAgICAgICB0aGlzLm5vdGlmeUFsbChbLi4uQXJyYXkuZnJvbSh0aGlzLmVudHJpZXMudmFsdWVzKCkpXSwgZGVsdGEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGUgc2xpY2Ugd2hlbiBhbiBFbnRpdHkgaW5zdGFuY2UgbXV0YXRlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlIFRoZSBlbGVtZW50IHRvIGJlIGFkZGVkIG9yIGRlbGV0ZWQgZGVwZW5kaW5nIG9uIHByZWRpY2F0ZSByZWV2YWx1YXRpb25cbiAgICAgKi9cbiAgICBwdXQoZTogRSB8IEVbXSkge1xuICAgICAgICBpZiAoaXNBcnJheShlKSkge1xuICAgICAgICAgICAgdGhpcy5wdXRBKGUpXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpZCA9ICg8YW55PmUpW3RoaXMuY29uZmlnLmd1aWRLZXldO1xuICAgICAgICAgICAgaWYgKHRoaXMuZW50cmllcy5nZXQoaWQpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnByZWRpY2F0ZShlKSkge1xuICAgICAgICAgICAgICAgICAgICAvL05vdGUgdGhhdCB0aGlzIGlzIGEgQWN0aW9uVHlwZXMuREVMRVRFIGJlY2F1c2Ugd2UgYXJlIHJlbW92aW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAvL2VudGl0eSBmcm9tIHRoZSBzbGljZS5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVsdGE6IERlbHRhPEU+ID0geyB0eXBlOiBBY3Rpb25UeXBlcy5ERUxFVEUsIGVudHJpZXM6IFtlXSB9O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVudHJpZXMuZGVsZXRlKGlkKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlBbGwoWy4uLkFycmF5LmZyb20odGhpcy5lbnRyaWVzLnZhbHVlcygpKV0sIGRlbHRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJlZGljYXRlKGUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRyaWVzLnNldChpZCwgZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVsdGE6IERlbHRhPEU+ID0geyB0eXBlOiBBY3Rpb25UeXBlcy5QVVQsIGVudHJpZXM6IFtlXSB9O1xuICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5QWxsKFsuLi5BcnJheS5mcm9tKHRoaXMuZW50cmllcy52YWx1ZXMoKSldLCBkZWx0YSk7XG4gICAgICAgICAgICB9ICAgIFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlIHRoZSBzbGljZSB3aXRoIG11dGF0ZWQgRW50aXR5IGluc3RhbmNlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlIFRoZSBlbGVtZW50cyB0byBiZSBkZWxldGVkIGlmIGl0IHNhdGlzZmllcyB0aGUgcHJlZGljYXRlXG4gICAgICovXG4gICAgcHV0TiguLi5lOiBFW10pIHtcbiAgICAgICAgdGhpcy5wdXRBKGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBlIFRoZSBlbGVtZW50cyB0byBiZSBwdXRcbiAgICAgKi9cbiAgICBwdXRBKGU6IEVbXSkge1xuICAgICAgICBjb25zdCBkOiBFW10gPSBbXTsgLy9pbnN0YW5jZXMgdG8gZGVsZXRlXG4gICAgICAgIGNvbnN0IHU6IEVbXSA9IFtdOyAvL2luc3RhbmNlcyB0byB1cGRhdGVcbiAgICAgICAgZS5mb3JFYWNoKGUgPT4ge1xuICAgICAgICAgICAgY29uc3QgaWQgPSAoPGFueT5lKVt0aGlzLmNvbmZpZy5ndWlkS2V5XTtcbiAgICAgICAgICAgIGlmICh0aGlzLmVudHJpZXMuZ2V0KGlkKSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5wcmVkaWNhdGUoZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHRoaXMuZW50cmllcy5nZXQoaWQpISk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZWRpY2F0ZShlKSkge1xuICAgICAgICAgICAgICAgIHUucHVzaChlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGQuZm9yRWFjaChlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVudHJpZXMuZGVsZXRlKCg8YW55PmUpW3RoaXMuY29uZmlnLmd1aWRLZXldKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBkZWx0YTogRGVsdGE8RT4gPSB7IHR5cGU6IEFjdGlvblR5cGVzLkRFTEVURSwgZW50cmllczogZCB9O1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlBbGwoWy4uLkFycmF5LmZyb20odGhpcy5lbnRyaWVzLnZhbHVlcygpKV0sIGRlbHRhKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB1LmZvckVhY2goZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRyaWVzLnNldCgoPGFueT5lKVt0aGlzLmNvbmZpZy5ndWlkS2V5XSwgZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGRlbHRhOiBEZWx0YTxFPiA9IHsgdHlwZTogQWN0aW9uVHlwZXMuUFVULCBlbnRyaWVzOiB1IH07XG4gICAgICAgICAgICB0aGlzLm5vdGlmeUFsbChbLi4uQXJyYXkuZnJvbSh0aGlzLmVudHJpZXMudmFsdWVzKCkpXSwgZGVsdGEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzZXRzIHRoZSBzbGljZSB0byBlbXB0eS5cbiAgICAgKi9cbiAgICByZXNldCgpIHtcbiAgICAgICAgbGV0IGRlbHRhOiBEZWx0YTxFPiA9IHtcbiAgICAgICAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFU0VULFxuICAgICAgICAgICAgZW50cmllczogWy4uLkFycmF5LmZyb20odGhpcy5lbnRyaWVzLnZhbHVlcygpKV1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5ub3RpZnlBbGwoW10sIGRlbHRhKTtcbiAgICAgICAgdGhpcy5lbnRyaWVzID0gbmV3IE1hcCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFV0aWxpdHkgbWV0aG9kIHRoYXQgYXBwbGllcyB0aGUgcHJlZGljYXRlIHRvIGFuIGFycmF5XG4gICAgICogb2YgZW50aXRpZXMgYW5kIHJldHVybiB0aGUgb25lcyB0aGF0IHBhc3MgdGhlIHRlc3QuXG4gICAgICpcbiAgICAgKiBVc2VkIHRvIGNyZWF0ZSBhbiBpbml0aWFsIHNldCBvZiB2YWx1ZXNcbiAgICAgKiB0aGF0IHNob3VsZCBiZSBwYXJ0IG9mIHRoZSBgU2xpY2VgLlxuICAgICAqXG4gICAgICogQHBhcmFtIHBcbiAgICAgKiBAcGFyYW0gZVxuICAgICAqIEByZXR1cm4gVGhlIHRoZSBhcnJheSBvZiBlbnRpdGllcyB0aGF0IHBhc3MgdGhlIHByZWRpY2F0ZSB0ZXN0LlxuICAgICAqL1xuICAgIHB1YmxpYyB0ZXN0KHA6IFByZWRpY2F0ZTxFPiwgZTogRVtdKTogRVtdIHtcbiAgICAgICAgbGV0IHY6IEVbXSA9IFtdO1xuICAgICAgICBlLmZvckVhY2goKGU6IEUpID0+IHtcbiAgICAgICAgICAgIGlmIChwKGUpKSB7XG4gICAgICAgICAgICAgICAgdi5wdXNoKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWN0aW9uVHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbGljZS9zcmMvbGliL21vZGVscy9BY3Rpb25UeXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgYWN0aW9uIHR5cGVzIGZvciB0aGUgc3RvcmUuXG4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIEFjdGlvblR5cGVzIHtcbiAgICBQT1NUID0gXCJQb3N0XCIsXG4gICAgUFVUID0gXCJQdXRcIixcbiAgICBERUxFVEUgPSBcIkRlbGV0ZVwiLFxuICAgIElOVElBTElaRSA9IFwiSW5pdGlhbGl6ZVwiLFxuICAgIFJFU0VUID0gXCJSZXNldFwiXG4gIH1cbiAgIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVsdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbGljZS9zcmMvbGliL21vZGVscy9EZWx0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uVHlwZXMgfSBmcm9tIFwiLi9BY3Rpb25UeXBlc1wiO1xuXG4vKipcbiAqIERlbHRhIHVwZGF0ZSBpbnRlcmZhY2UgbW9kZWxzXG4gKiB0aGUgdHlwZSBvZiB0aGUgdXBkYXRlIGFuZCB0aGUgZW50aXRpZXNcbiAqIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXBkYXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlbHRhPEU+IHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcztcbiAgICBlbnRyaWVzOiBFW107XG4gIH1cbiAgIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJlZGljYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2xpY2Uvc3JjL2xpYi9tb2RlbHMvUHJlZGljYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZ1bmN0aW9uIHR5cGUgZm9yIHByZWRpY2F0ZSBvcGVyYXRpb25zXG4gKi9cbmV4cG9ydCB0eXBlIFByZWRpY2F0ZTxFPiA9IChlOiBFKSA9PiBib29sZWFuO1xuIl19
@@ -0,0 +1,3 @@
1
+ ;
2
+ export {};
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RvcmVDb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbGljZS9zcmMvbGliL21vZGVscy9TdG9yZUNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgY29uZmlndXJhdGlvbiBpbnRlcmZhY2UgZm9yIHRoZSBlbnRpdHkgc3RvcmVcbiAqIGRlZmluZXMgdGhlIHN0cmluZ3MgZm9yIHRoZSBJRCBLZXkgYW5kIEdsb2JhbCBJRCBrZXkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmVDb25maWcge1xuICAgIGlkS2V5OiBzdHJpbmc7XG4gICAgZ3VpZEtleTogc3RyaW5nO1xufTtcbiAgIl19
@@ -0,0 +1,5 @@
1
+ export * from './ActionTypes';
2
+ export * from './Delta';
3
+ export * from './Predicate';
4
+ export * from './StoreConfig';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbGljZS9zcmMvbGliL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQTtBQUM3QixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLGFBQWEsQ0FBQTtBQUMzQixjQUFjLGVBQWUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vQWN0aW9uVHlwZXMnXG5leHBvcnQgKiBmcm9tICcuL0RlbHRhJ1xuZXhwb3J0ICogZnJvbSAnLi9QcmVkaWNhdGUnXG5leHBvcnQgKiBmcm9tICcuL1N0b3JlQ29uZmlnJyJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsUG9zaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbGljZS9zcmMvbGliL21vZGVscy9zY3JvbGxQb3NpdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTY3JvbGwgcG9zaXRpb24gZnVuY3Rpb24gdHlwZSB1c2VkIHRvIGF1dG8gaGlkZVxuICogdGhlIG1hdGVyaWFsIHRvb2xiYXIgaW4gY29uanVjdGlvbiB3aXRoIEFuZ3VsYXIgQ0RLLlxuICovXG5leHBvcnQgdHlwZSBzY3JvbGxQb3NpdGlvbiA9ICgpPT5bbnVtYmVyLCBudW1iZXJdIl19