@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.
- package/README.md +95 -0
- package/bundles/fireflysemantics-slice.umd.js +1863 -0
- package/bundles/fireflysemantics-slice.umd.js.map +1 -0
- package/esm2015/fireflysemantics-slice.js +5 -0
- package/esm2015/lib/AbstractStore.js +289 -0
- package/esm2015/lib/EStore.js +599 -0
- package/esm2015/lib/OStore.js +133 -0
- package/esm2015/lib/Slice.js +222 -0
- package/esm2015/lib/models/ActionTypes.js +2 -0
- package/esm2015/lib/models/Delta.js +2 -0
- package/esm2015/lib/models/Predicate.js +2 -0
- package/esm2015/lib/models/StoreConfig.js +3 -0
- package/esm2015/lib/models/index.js +5 -0
- package/esm2015/lib/models/scrollPosition.js +2 -0
- package/esm2015/lib/utilities.js +213 -0
- package/esm2015/public-api.js +10 -0
- package/fesm2015/fireflysemantics-slice.js +1459 -0
- package/fesm2015/fireflysemantics-slice.js.map +1 -0
- package/fireflysemantics-slice.d.ts +5 -0
- package/lib/AbstractStore.d.ts +214 -0
- package/lib/EStore.d.ts +403 -0
- package/lib/OStore.d.ts +106 -0
- package/lib/Slice.d.ts +97 -0
- package/lib/models/ActionTypes.d.ts +10 -0
- package/lib/models/Delta.d.ts +10 -0
- package/lib/models/Predicate.d.ts +4 -0
- package/lib/models/StoreConfig.d.ts +8 -0
- package/lib/models/index.d.ts +4 -0
- package/lib/models/scrollPosition.d.ts +5 -0
- package/lib/utilities.d.ts +144 -0
- package/package.json +42 -0
- package/public-api.d.ts +6 -0
@@ -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
|