@livequery/client 2.0.31 → 2.0.105
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 +477 -0
- package/dist/LivequeryClient.d.ts +67 -0
- package/dist/LivequeryClient.d.ts.map +1 -0
- package/dist/LivequeryClient.js +343 -0
- package/dist/LivequeryClient.js.map +1 -0
- package/dist/LivequeryCollection.d.ts +92 -0
- package/dist/LivequeryCollection.d.ts.map +1 -0
- package/dist/LivequeryCollection.js +231 -0
- package/dist/LivequeryCollection.js.map +1 -0
- package/dist/LivequeryDocument.d.ts +23 -0
- package/dist/LivequeryDocument.d.ts.map +1 -0
- package/dist/LivequeryDocument.js +22 -0
- package/dist/LivequeryDocument.js.map +1 -0
- package/dist/LivequeryMemoryStorage.d.ts +14 -0
- package/dist/LivequeryMemoryStorage.d.ts.map +1 -0
- package/dist/LivequeryMemoryStorage.js +89 -0
- package/dist/LivequeryMemoryStorage.js.map +1 -0
- package/dist/LivequeryStorge.d.ts +12 -0
- package/dist/LivequeryStorge.d.ts.map +1 -0
- package/dist/LivequeryStorge.js +2 -0
- package/dist/LivequeryStorge.js.map +1 -0
- package/dist/LivequeryTransporter.d.ts +22 -0
- package/dist/LivequeryTransporter.d.ts.map +1 -0
- package/dist/LivequeryTransporter.js +2 -0
- package/dist/LivequeryTransporter.js.map +1 -0
- package/dist/helpers/filterDocs.d.ts +5 -0
- package/dist/helpers/filterDocs.d.ts.map +1 -0
- package/dist/helpers/filterDocs.js +80 -0
- package/dist/helpers/filterDocs.js.map +1 -0
- package/dist/helpers/tryCatch.d.ts +2 -0
- package/dist/helpers/tryCatch.d.ts.map +1 -0
- package/dist/helpers/tryCatch.js +10 -0
- package/dist/helpers/tryCatch.js.map +1 -0
- package/dist/helpers/whenCompleted.d.ts +3 -0
- package/dist/helpers/whenCompleted.d.ts.map +1 -0
- package/dist/helpers/whenCompleted.js +5 -0
- package/dist/helpers/whenCompleted.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +70 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +95 -18
- package/build/Collection.d.ts +0 -52
- package/build/Collection.js +0 -366
- package/build/index.d.ts +0 -1
- package/build/index.js +0 -1
- package/build/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import { BehaviorSubject, debounceTime, EMPTY, filter, finalize, merge, Observable, pairwise, Subject, Subscription, switchMap, tap } from "rxjs";
|
|
2
|
+
import { LivequeryClient } from "./LivequeryClient.js";
|
|
3
|
+
import { LivequeryDocument } from "./LivequeryDocument.js";
|
|
4
|
+
export class LivequeryCollection {
|
|
5
|
+
core;
|
|
6
|
+
options;
|
|
7
|
+
id = (Math.random() * 1e18).toString(36);
|
|
8
|
+
#keys = new Map();
|
|
9
|
+
#indexes;
|
|
10
|
+
#filters = new Subject();
|
|
11
|
+
ref;
|
|
12
|
+
collection_ref;
|
|
13
|
+
items;
|
|
14
|
+
summary;
|
|
15
|
+
metadata;
|
|
16
|
+
loading;
|
|
17
|
+
filters;
|
|
18
|
+
paging;
|
|
19
|
+
error;
|
|
20
|
+
constructor(core, options = {}) {
|
|
21
|
+
this.core = core;
|
|
22
|
+
this.options = options;
|
|
23
|
+
this.#indexes = new Map();
|
|
24
|
+
this.items = new BehaviorSubject([]);
|
|
25
|
+
this.summary = new BehaviorSubject({});
|
|
26
|
+
this.loading = new BehaviorSubject(null);
|
|
27
|
+
this.filters = new BehaviorSubject(options?.filters || {});
|
|
28
|
+
this.paging = new BehaviorSubject({
|
|
29
|
+
total: 0,
|
|
30
|
+
current: 0
|
|
31
|
+
});
|
|
32
|
+
this.error = new BehaviorSubject(null);
|
|
33
|
+
if (options) {
|
|
34
|
+
this.options = options;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
#commit(items) {
|
|
38
|
+
this.items.next(items);
|
|
39
|
+
this.#indexes = items.reduce((p, c, index) => {
|
|
40
|
+
p.set(c.value.id, index);
|
|
41
|
+
return p;
|
|
42
|
+
}, new Map());
|
|
43
|
+
}
|
|
44
|
+
#subscription = null;
|
|
45
|
+
initialize(ref) {
|
|
46
|
+
if (!ref)
|
|
47
|
+
return;
|
|
48
|
+
if (typeof window == 'undefined')
|
|
49
|
+
return;
|
|
50
|
+
this.ref = ref;
|
|
51
|
+
const refs = ref.split('/');
|
|
52
|
+
this.collection_ref = refs.length % 2 == 0 ? refs.slice(0, -1).join('/') : ref;
|
|
53
|
+
const timer = this.options.lazy !== true && setTimeout(() => !ref.includes('undefined') && this.query(this.filters.value || {}));
|
|
54
|
+
this.#subscription?.unsubscribe();
|
|
55
|
+
this.#subscription = merge(this.options.debounce ? merge(this.#filters.pipe(debounceTime(this.options.debounce), switchMap(filters => this.query(filters)))) : EMPTY, this.core.watch(this.ref, this.id, this.options.mode || 'server-first').pipe(finalize(() => {
|
|
56
|
+
timer && clearTimeout(timer);
|
|
57
|
+
}), tap(event => {
|
|
58
|
+
event.loading !== undefined && event.loading !== this.loading.value && this.loading.next(event.loading);
|
|
59
|
+
event.summary && this.summary.next(event.summary);
|
|
60
|
+
event.metadata && this.metadata.next(event.metadata);
|
|
61
|
+
event.paging && this.paging.next(event.paging);
|
|
62
|
+
event.error && this.error.next(event.error);
|
|
63
|
+
if (!event.changes || event.changes.length == 0)
|
|
64
|
+
return;
|
|
65
|
+
const chaos = event.changes && event.changes.some(change => {
|
|
66
|
+
if (change.type == 'added' || change.type == 'removed')
|
|
67
|
+
return true;
|
|
68
|
+
if (change.data && change.data.id != change.id)
|
|
69
|
+
return true;
|
|
70
|
+
return Object.keys(change.data || {}).some(k => this.#keys.has(k));
|
|
71
|
+
});
|
|
72
|
+
const sorter = (a, b) => {
|
|
73
|
+
for (const [key, order] of this.#keys) {
|
|
74
|
+
const va = a.value[key];
|
|
75
|
+
const vb = b.value[key];
|
|
76
|
+
if (typeof va === 'number' && typeof vb === 'number') {
|
|
77
|
+
if (va < vb)
|
|
78
|
+
return -order;
|
|
79
|
+
if (va > vb)
|
|
80
|
+
return order;
|
|
81
|
+
}
|
|
82
|
+
if (typeof va === 'string' && typeof vb === 'string') {
|
|
83
|
+
if (va < vb)
|
|
84
|
+
return -order;
|
|
85
|
+
if (va > vb)
|
|
86
|
+
return order;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return 0;
|
|
90
|
+
};
|
|
91
|
+
const events = event.changes.reduce((p, c) => {
|
|
92
|
+
return {
|
|
93
|
+
...p,
|
|
94
|
+
[c.type]: [
|
|
95
|
+
...(p[c.type] || []),
|
|
96
|
+
c
|
|
97
|
+
]
|
|
98
|
+
};
|
|
99
|
+
}, {
|
|
100
|
+
added: [],
|
|
101
|
+
modified: [],
|
|
102
|
+
removed: []
|
|
103
|
+
});
|
|
104
|
+
const updated_items = events.modified.reduce((p, { data, id }) => {
|
|
105
|
+
const index = this.#indexes.get(id);
|
|
106
|
+
const target = index != undefined && index >= 0 ? p[index] : null;
|
|
107
|
+
target && target.next({ ...target.value, ...data });
|
|
108
|
+
return p;
|
|
109
|
+
}, this.items.value);
|
|
110
|
+
const new_items = (events.added
|
|
111
|
+
.filter(a => a.data)
|
|
112
|
+
.reduce((p, c) => {
|
|
113
|
+
if (!p.indexes.has(c.id)) {
|
|
114
|
+
const doc = new LivequeryDocument(this, { id: c.id, ...c.data });
|
|
115
|
+
p.list.push(doc);
|
|
116
|
+
p.indexes.add(c.id);
|
|
117
|
+
}
|
|
118
|
+
return p;
|
|
119
|
+
}, {
|
|
120
|
+
list: [],
|
|
121
|
+
indexes: new Set(this.#indexes.keys())
|
|
122
|
+
}));
|
|
123
|
+
const remove_indexes = (events.removed
|
|
124
|
+
.map(r => this.#indexes.get(r.id))
|
|
125
|
+
.filter(i => i != undefined)
|
|
126
|
+
.sort((a, b) => b - a));
|
|
127
|
+
const unsort_items = remove_indexes.reduce((p, index) => {
|
|
128
|
+
return [
|
|
129
|
+
...p.slice(0, index),
|
|
130
|
+
...p.slice(index + 1)
|
|
131
|
+
];
|
|
132
|
+
}, [
|
|
133
|
+
...updated_items,
|
|
134
|
+
...new_items.list
|
|
135
|
+
]);
|
|
136
|
+
const items = chaos ? unsort_items.sort(sorter) : unsort_items;
|
|
137
|
+
chaos && this.#commit(items);
|
|
138
|
+
event.paging && this.paging.next(event.paging);
|
|
139
|
+
}))).subscribe();
|
|
140
|
+
return this.#subscription;
|
|
141
|
+
}
|
|
142
|
+
async #query(filters, flush) {
|
|
143
|
+
if (!this.ref)
|
|
144
|
+
return;
|
|
145
|
+
this.error.next(null);
|
|
146
|
+
flush && this.#commit([]);
|
|
147
|
+
this.#keys = Object.entries(filters).reduce((p, [k, v]) => {
|
|
148
|
+
if (k.endsWith(':sort')) {
|
|
149
|
+
const field = k.split(':')[0];
|
|
150
|
+
p.set(field, v === 'asc' ? 1 : -1);
|
|
151
|
+
}
|
|
152
|
+
return p;
|
|
153
|
+
}, new Map());
|
|
154
|
+
this.filters.next(filters);
|
|
155
|
+
const cache = await this.core.query({
|
|
156
|
+
ref: this.ref,
|
|
157
|
+
filters,
|
|
158
|
+
collection_id: this.id
|
|
159
|
+
});
|
|
160
|
+
if (cache && cache.documents && flush) {
|
|
161
|
+
this.#commit(cache.documents.map(i => new LivequeryDocument(this, i)));
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
async query(filters) {
|
|
165
|
+
await this.#query(filters, true);
|
|
166
|
+
}
|
|
167
|
+
async debounceQuery(filters) {
|
|
168
|
+
this.#filters.next(filters);
|
|
169
|
+
}
|
|
170
|
+
async loadMore() {
|
|
171
|
+
const next = this.paging.value.next;
|
|
172
|
+
if (!next)
|
|
173
|
+
return;
|
|
174
|
+
const filters = {
|
|
175
|
+
...this.filters.value,
|
|
176
|
+
':after': next.cursor
|
|
177
|
+
};
|
|
178
|
+
await this.#query(filters || {}, false);
|
|
179
|
+
}
|
|
180
|
+
async loadPrev() {
|
|
181
|
+
const prev = this.paging.value.prev;
|
|
182
|
+
if (!prev)
|
|
183
|
+
return;
|
|
184
|
+
const filters = {
|
|
185
|
+
...this.filters.value,
|
|
186
|
+
':before': prev.cursor
|
|
187
|
+
};
|
|
188
|
+
await this.#query(filters || {}, false);
|
|
189
|
+
}
|
|
190
|
+
async loadAround(cursor) {
|
|
191
|
+
const filters = {
|
|
192
|
+
...this.filters.value,
|
|
193
|
+
':after': cursor,
|
|
194
|
+
':before': cursor
|
|
195
|
+
};
|
|
196
|
+
await this.#query(filters || {}, false);
|
|
197
|
+
}
|
|
198
|
+
async add(payload) {
|
|
199
|
+
if (!this.collection_ref)
|
|
200
|
+
throw new Error('LivequeryCollection is not initialized with a ref');
|
|
201
|
+
return await this.core.add(this.collection_ref, payload);
|
|
202
|
+
}
|
|
203
|
+
update(id, payload) {
|
|
204
|
+
if (!this.collection_ref)
|
|
205
|
+
throw new Error('LivequeryCollection is not initialized with a ref');
|
|
206
|
+
return this.core.update(this.collection_ref, id, payload);
|
|
207
|
+
}
|
|
208
|
+
delete(id) {
|
|
209
|
+
if (!this.collection_ref)
|
|
210
|
+
throw new Error('LivequeryCollection is not initialized with a ref');
|
|
211
|
+
return this.core.delete(this.collection_ref, id);
|
|
212
|
+
}
|
|
213
|
+
trigger(action, payload) {
|
|
214
|
+
if (!this.ref)
|
|
215
|
+
throw new Error('LivequeryCollection is not initialized with a ref');
|
|
216
|
+
return this.core.trigger({
|
|
217
|
+
action,
|
|
218
|
+
payload,
|
|
219
|
+
ref: this.ref
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
resetError() {
|
|
223
|
+
this.error.next(null);
|
|
224
|
+
}
|
|
225
|
+
watch(check) {
|
|
226
|
+
return this.items.pipe(switchMap(items => merge(...items.map(item => item.pipe(pairwise(), filter(([p, n]) => {
|
|
227
|
+
return check(p, n);
|
|
228
|
+
}))))));
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=LivequeryCollection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LivequeryCollection.js","sourceRoot":"","sources":["../src/LivequeryCollection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { BehaviorSubject } from "rxjs";
|
|
2
|
+
import type { LivequeryCollection } from "./LivequeryCollection.js";
|
|
3
|
+
import type { Doc, DocState } from "./types.js";
|
|
4
|
+
export declare class LivequeryDocument<T extends Doc> extends BehaviorSubject<DocState<T>> {
|
|
5
|
+
readonly collection: LivequeryCollection<T>;
|
|
6
|
+
document: T;
|
|
7
|
+
constructor(collection: LivequeryCollection<T>, document: T);
|
|
8
|
+
update(data: Partial<T>): Promise<{
|
|
9
|
+
[key: string]: {
|
|
10
|
+
id: string;
|
|
11
|
+
} & Partial<T>;
|
|
12
|
+
} | undefined>;
|
|
13
|
+
del(): Promise<{
|
|
14
|
+
[key: string]: {
|
|
15
|
+
id: string;
|
|
16
|
+
};
|
|
17
|
+
} | undefined>;
|
|
18
|
+
trigger<T>(action: string, payload: Record<string, any>): import("rxjs").Observable<{
|
|
19
|
+
data: T;
|
|
20
|
+
error?: Error;
|
|
21
|
+
}>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=LivequeryDocument.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LivequeryDocument.d.ts","sourceRoot":"","sources":["../src/LivequeryDocument.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAIhD,qBAAa,iBAAiB,CAAC,CAAC,SAAS,GAAG,CAAE,SAAQ,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aAG1D,UAAU,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAC3C,QAAQ,EAAE,CAAC;gBADF,UAAU,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAC3C,QAAQ,EAAE,CAAC;IAKtB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;;;;;IAKvB,GAAG;;;;;IAKH,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;;;CAG1D"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { BehaviorSubject } from "rxjs";
|
|
2
|
+
export class LivequeryDocument extends BehaviorSubject {
|
|
3
|
+
collection;
|
|
4
|
+
document;
|
|
5
|
+
constructor(collection, document) {
|
|
6
|
+
super(document);
|
|
7
|
+
this.collection = collection;
|
|
8
|
+
this.document = document;
|
|
9
|
+
}
|
|
10
|
+
update(data) {
|
|
11
|
+
const id = this.value.id;
|
|
12
|
+
return this.collection.update(id, data);
|
|
13
|
+
}
|
|
14
|
+
del() {
|
|
15
|
+
const id = this.value.id;
|
|
16
|
+
return this.collection.delete(id);
|
|
17
|
+
}
|
|
18
|
+
trigger(action, payload) {
|
|
19
|
+
return this.collection.trigger(action, payload);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=LivequeryDocument.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LivequeryDocument.js","sourceRoot":"","sources":["../src/LivequeryDocument.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAMvC,MAAM,OAAO,iBAAiC,SAAQ,eAA4B;IAG1D;IACT;IAFX,YACoB,UAAkC,EAC3C,QAAW;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAA;QAHC,eAAU,GAAV,UAAU,CAAwB;QAC3C,aAAQ,GAAR,QAAQ,CAAG;IAGtB,CAAC;IAED,MAAM,CAAC,IAAgB;QACnB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAA;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAC3C,CAAC;IAED,GAAG;QACC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAA;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACrC,CAAC;IAED,OAAO,CAAI,MAAc,EAAE,OAA4B;QACnD,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAI,MAAM,EAAE,OAAO,CAAC,CAAA;IACtD,CAAC;CACJ"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Doc, LivequeryPaging } from "./types.js";
|
|
2
|
+
import type { LivequeryStorge } from "./LivequeryStorge.js";
|
|
3
|
+
export declare class LivequeryMemoryStorage implements LivequeryStorge {
|
|
4
|
+
#private;
|
|
5
|
+
query<T extends Doc>(collection: string, filters?: Record<string, any>): Promise<{
|
|
6
|
+
documents: T[];
|
|
7
|
+
paging: LivequeryPaging;
|
|
8
|
+
}>;
|
|
9
|
+
get<T extends Doc>(ref: string, id: string): Promise<T | null>;
|
|
10
|
+
add<T extends Doc>(collection: string, document: T): Promise<T>;
|
|
11
|
+
update<T extends Doc>(collection: string, id: string, document: Record<string, any>): Promise<T | null>;
|
|
12
|
+
delete<T extends Doc>(collection: string, id: string): Promise<T | null>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=LivequeryMemoryStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LivequeryMemoryStorage.d.ts","sourceRoot":"","sources":["../src/LivequeryMemoryStorage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAK3D,qBAAa,sBAAuB,YAAW,eAAe;;IAGpD,KAAK,CAAC,CAAC,SAAS,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC;QACnF,SAAS,EAAE,CAAC,EAAE,CAAA;QACd,MAAM,EAAE,eAAe,CAAA;KAC1B,CAAC;IAeF,GAAG,CAAC,CAAC,SAAS,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAOxD,GAAG,CAAC,CAAC,SAAS,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAW/D,MAAM,CAAC,CAAC,SAAS,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAkBvG,MAAM,CAAC,CAAC,SAAS,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;CAmCjF"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { filterDocs } from "./helpers/filterDocs.js";
|
|
2
|
+
export class LivequeryMemoryStorage {
|
|
3
|
+
#collections = new Map();
|
|
4
|
+
async query(collection, filters) {
|
|
5
|
+
const sources = Array.from((this.#collections.get(collection) || new Map()).values());
|
|
6
|
+
const f = filters || {};
|
|
7
|
+
const sorters = Object.entries(f).filter(([k]) => k.endsWith(":sort"));
|
|
8
|
+
const items = filterDocs(sources, f);
|
|
9
|
+
const sorted = this.#sortItems(items, sorters);
|
|
10
|
+
return {
|
|
11
|
+
documents: sorted,
|
|
12
|
+
paging: {
|
|
13
|
+
total: items.length,
|
|
14
|
+
current: sorted.length
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
get(ref, id) {
|
|
19
|
+
const docs = this.#collections.get(ref);
|
|
20
|
+
if (!docs)
|
|
21
|
+
return Promise.resolve(null);
|
|
22
|
+
const doc = docs.get(id) || null;
|
|
23
|
+
return Promise.resolve(doc);
|
|
24
|
+
}
|
|
25
|
+
async add(collection, document) {
|
|
26
|
+
const docs = this.#collections.get(collection) || new Map();
|
|
27
|
+
const doc = {
|
|
28
|
+
...document,
|
|
29
|
+
id: document.id || `local:${crypto.randomUUID()}`
|
|
30
|
+
};
|
|
31
|
+
docs.set(doc.id, doc);
|
|
32
|
+
this.#collections.set(collection, docs);
|
|
33
|
+
return doc;
|
|
34
|
+
}
|
|
35
|
+
async update(collection, id, document) {
|
|
36
|
+
const docs = this.#collections.get(collection);
|
|
37
|
+
if (!docs)
|
|
38
|
+
return null;
|
|
39
|
+
const existing = docs.get(id);
|
|
40
|
+
if (!existing)
|
|
41
|
+
return null;
|
|
42
|
+
const next = {
|
|
43
|
+
...existing,
|
|
44
|
+
...document,
|
|
45
|
+
};
|
|
46
|
+
if (document.id && document.id !== id) {
|
|
47
|
+
docs.delete(id);
|
|
48
|
+
docs.set(document.id, next);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
docs.set(id, next);
|
|
52
|
+
}
|
|
53
|
+
return next;
|
|
54
|
+
}
|
|
55
|
+
async delete(collection, id) {
|
|
56
|
+
const docs = this.#collections.get(collection);
|
|
57
|
+
if (!docs)
|
|
58
|
+
return null;
|
|
59
|
+
const deleted = docs.get(id) || null;
|
|
60
|
+
docs.delete(id);
|
|
61
|
+
return deleted;
|
|
62
|
+
}
|
|
63
|
+
#sortItems(items, sorters) {
|
|
64
|
+
if (sorters.length === 0)
|
|
65
|
+
return [...items];
|
|
66
|
+
return [...items].sort((a, b) => {
|
|
67
|
+
for (const [sortKey, direction] of sorters) {
|
|
68
|
+
const fieldPath = sortKey.slice(0, -5);
|
|
69
|
+
const va = this.#getByPath(a, fieldPath);
|
|
70
|
+
const vb = this.#getByPath(b, fieldPath);
|
|
71
|
+
if (va === vb)
|
|
72
|
+
continue;
|
|
73
|
+
const order = va < vb ? -1 : 1;
|
|
74
|
+
return direction === 'asc' ? order : -order;
|
|
75
|
+
}
|
|
76
|
+
return 0;
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
#getByPath(obj, path) {
|
|
80
|
+
if (!path.includes('.'))
|
|
81
|
+
return obj[path];
|
|
82
|
+
return path.split('.').reduce((acc, key) => {
|
|
83
|
+
if (!acc || typeof acc !== 'object')
|
|
84
|
+
return undefined;
|
|
85
|
+
return acc[key];
|
|
86
|
+
}, obj);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=LivequeryMemoryStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LivequeryMemoryStorage.js","sourceRoot":"","sources":["../src/LivequeryMemoryStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Doc, LivequeryPaging } from "./types.js";
|
|
2
|
+
export type LivequeryStorge = {
|
|
3
|
+
query<T extends Doc>(collection: string, filters?: Record<string, any>): Promise<{
|
|
4
|
+
documents: T[];
|
|
5
|
+
paging: LivequeryPaging;
|
|
6
|
+
}>;
|
|
7
|
+
get<T extends Doc>(ref: string, id: string): Promise<T | null>;
|
|
8
|
+
add<T extends Doc>(collection: string, document: T): Promise<T>;
|
|
9
|
+
update<T extends Doc>(collection: string, id: string, document: Record<string, any>): Promise<T | null>;
|
|
10
|
+
delete<T extends Doc>(collection: string, id: string): Promise<T | null>;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=LivequeryStorge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LivequeryStorge.d.ts","sourceRoot":"","sources":["../src/LivequeryStorge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAItD,MAAM,MAAM,eAAe,GAAG;IAC1B,KAAK,CAAC,CAAC,SAAS,GAAG,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC9B,OAAO,CAAC;QACP,SAAS,EAAE,CAAC,EAAE,CAAA;QACd,MAAM,EAAE,eAAe,CAAA;KAC1B,CAAC,CAAA;IACF,GAAG,CAAC,CAAC,SAAS,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAC9D,GAAG,CAAC,CAAC,SAAS,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAC/D,MAAM,CAAC,CAAC,SAAS,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IACvG,MAAM,CAAC,CAAC,SAAS,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;CAC3E,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LivequeryStorge.js","sourceRoot":"","sources":["../src/LivequeryStorge.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Observable } from "rxjs";
|
|
2
|
+
import type { DataChangeEvent, LivequeryAction, Doc, LivequeryPaging, LivequeryQueryParams } from "./types.js";
|
|
3
|
+
export type LivequeryQueryResult = {
|
|
4
|
+
error: {
|
|
5
|
+
code: string;
|
|
6
|
+
message: string;
|
|
7
|
+
};
|
|
8
|
+
changes: DataChangeEvent[];
|
|
9
|
+
summary: Record<string, any>;
|
|
10
|
+
paging: LivequeryPaging;
|
|
11
|
+
metadata: Record<string, any>;
|
|
12
|
+
source: 'query' | 'action' | 'realtime';
|
|
13
|
+
loading?: 'all' | 'next' | 'prev' | null;
|
|
14
|
+
};
|
|
15
|
+
export type LivequeryTransporter = {
|
|
16
|
+
query<T extends Doc>(query: LivequeryQueryParams<T>): Observable<Partial<LivequeryQueryResult>>;
|
|
17
|
+
add<T extends Doc>(ref: string, doc: Omit<T, 'id'>): Promise<T>;
|
|
18
|
+
update<T extends Doc>(ref: string, id: string, doc: Partial<T>): Promise<T>;
|
|
19
|
+
delete<T extends Doc>(ref: string, id: string): Promise<T>;
|
|
20
|
+
trigger<T>(action: LivequeryAction): Promise<T>;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=LivequeryTransporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LivequeryTransporter.d.ts","sourceRoot":"","sources":["../src/LivequeryTransporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,EAAE,eAAe,EAAE,oBAAoB,EAAmB,MAAM,YAAY,CAAC;AAGhI,MAAM,MAAM,oBAAoB,GAAG;IAC/B,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;IACxC,OAAO,EAAE,eAAe,EAAE,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,MAAM,EAAE,eAAe,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAA;IACvC,OAAO,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;CAC3C,CAAA;AAID,MAAM,MAAM,oBAAoB,GAAG;IAC/B,KAAK,CAAC,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAA;IAC/F,GAAG,CAAC,CAAC,SAAS,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAC/D,MAAM,CAAC,CAAC,SAAS,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAC3E,MAAM,CAAC,CAAC,SAAS,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAC1D,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CAClD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LivequeryTransporter.js","sourceRoot":"","sources":["../src/LivequeryTransporter.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Doc, LivequeryFilters } from "../types.js";
|
|
2
|
+
export type LivequeryFilterInput<T extends Doc> = Partial<LivequeryFilters<T>> | Record<string, any>;
|
|
3
|
+
export declare function filterDocs<T extends Doc>(documents: T[], filters?: LivequeryFilterInput<T>): T[];
|
|
4
|
+
export declare function matchesAllFilters(doc: Record<string, any>, filters: Record<string, any>): boolean;
|
|
5
|
+
//# sourceMappingURL=filterDocs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterDocs.d.ts","sourceRoot":"","sources":["../../src/helpers/filterDocs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAIxD,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,GAAG,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAEpG,wBAAgB,UAAU,CAAC,CAAC,SAAS,GAAG,EACpC,SAAS,EAAE,CAAC,EAAE,EACd,OAAO,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAClC,CAAC,EAAE,CAIL;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,WAevF"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export function filterDocs(documents, filters) {
|
|
2
|
+
if (!filters)
|
|
3
|
+
return documents;
|
|
4
|
+
const normalized = filters;
|
|
5
|
+
return documents.filter((doc) => matchesAllFilters(doc, normalized));
|
|
6
|
+
}
|
|
7
|
+
export function matchesAllFilters(doc, filters) {
|
|
8
|
+
for (const [key, expected] of Object.entries(filters)) {
|
|
9
|
+
if (key.startsWith(':') || key.endsWith(':sort'))
|
|
10
|
+
continue;
|
|
11
|
+
const split = key.split(':');
|
|
12
|
+
const fieldPath = split[0];
|
|
13
|
+
if (!fieldPath)
|
|
14
|
+
continue;
|
|
15
|
+
const op = split[1] || 'eq';
|
|
16
|
+
const actual = getByPath(doc, fieldPath);
|
|
17
|
+
if (!matchByOperator(actual, op, expected)) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
function matchByOperator(actual, op, expected) {
|
|
24
|
+
switch (op) {
|
|
25
|
+
case 'gt':
|
|
26
|
+
return asNumber(actual) > asNumber(expected);
|
|
27
|
+
case 'gte':
|
|
28
|
+
return asNumber(actual) >= asNumber(expected);
|
|
29
|
+
case 'lt':
|
|
30
|
+
return asNumber(actual) < asNumber(expected);
|
|
31
|
+
case 'lte':
|
|
32
|
+
return asNumber(actual) <= asNumber(expected);
|
|
33
|
+
case 'eq-number':
|
|
34
|
+
return asNumber(actual) === asNumber(expected);
|
|
35
|
+
case 'in':
|
|
36
|
+
return Array.isArray(expected) ? expected.includes(actual) : false;
|
|
37
|
+
case 'nin':
|
|
38
|
+
return Array.isArray(expected) ? !expected.includes(actual) : true;
|
|
39
|
+
case 'include':
|
|
40
|
+
return Array.isArray(actual) ? actual.includes(expected) : false;
|
|
41
|
+
case 'boolean':
|
|
42
|
+
return matchBoolean(actual, expected);
|
|
43
|
+
case 'like':
|
|
44
|
+
return String(actual || '').toLowerCase().includes(String(expected || '').toLowerCase());
|
|
45
|
+
case 'null':
|
|
46
|
+
return expected === 'null-only'
|
|
47
|
+
? (actual === null || typeof actual === 'undefined')
|
|
48
|
+
: (actual !== null && typeof actual !== 'undefined');
|
|
49
|
+
case 'eq':
|
|
50
|
+
default:
|
|
51
|
+
return actual === expected;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function matchBoolean(actual, expected) {
|
|
55
|
+
switch (expected) {
|
|
56
|
+
case 'true':
|
|
57
|
+
return actual === true;
|
|
58
|
+
case 'false':
|
|
59
|
+
return actual === false;
|
|
60
|
+
case 'not-true':
|
|
61
|
+
return actual !== true;
|
|
62
|
+
case 'not-false':
|
|
63
|
+
return actual !== false;
|
|
64
|
+
default:
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function getByPath(obj, path) {
|
|
69
|
+
if (!path.includes('.'))
|
|
70
|
+
return obj[path];
|
|
71
|
+
return path.split('.').reduce((acc, key) => {
|
|
72
|
+
if (!acc || typeof acc !== 'object')
|
|
73
|
+
return undefined;
|
|
74
|
+
return acc[key];
|
|
75
|
+
}, obj);
|
|
76
|
+
}
|
|
77
|
+
function asNumber(value) {
|
|
78
|
+
return Number(value);
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=filterDocs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterDocs.js","sourceRoot":"","sources":["../../src/helpers/filterDocs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tryCatch.d.ts","sourceRoot":"","sources":["../../src/helpers/tryCatch.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,QAAQ,GAAU,CAAC,EAAE,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,CAOlG,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tryCatch.js","sourceRoot":"","sources":["../../src/helpers/tryCatch.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAK,EAAoB,EAA+C,EAAE;IACnG,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAA;QACzB,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAc,EAAE,SAAS,CAAC,CAAA;IACtC,CAAC;AACL,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whenCompleted.d.ts","sourceRoot":"","sources":["../../src/helpers/whenCompleted.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAyC,MAAM,MAAM,CAAA;AAEjF,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAOpE"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Subject, Observable, materialize, filter, map, shareReplay } from 'rxjs';
|
|
2
|
+
export function whenCompleted(stream) {
|
|
3
|
+
return stream.pipe(materialize(), filter(n => n.kind === 'C' || n.kind === 'E'), map(() => undefined), shareReplay(1));
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=whenCompleted.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whenCompleted.js","sourceRoot":"","sources":["../../src/helpers/whenCompleted.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAEjF,MAAM,UAAU,aAAa,CAAC,MAAoB;IAC9C,OAAO,MAAM,CAAC,IAAI,CACd,WAAW,EAAE,EACb,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,EAC7C,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,EACpB,WAAW,CAAC,CAAC,CAAC,CACjB,CAAA;AACL,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from "./LivequeryCollection.js";
|
|
2
|
+
export * from "./LivequeryClient.js";
|
|
3
|
+
export * from "./LivequeryMemoryStorage.js";
|
|
4
|
+
export * from "./LivequeryStorge.js";
|
|
5
|
+
export * from "./LivequeryTransporter.js";
|
|
6
|
+
export * from "./types.js";
|
|
7
|
+
export * from "./helpers/filterDocs.js";
|
|
8
|
+
export * from "./LivequeryDocument.js";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,cAAc,YAAY,CAAA;AAC1B,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA"}
|