@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.
Files changed (51) hide show
  1. package/README.md +477 -0
  2. package/dist/LivequeryClient.d.ts +67 -0
  3. package/dist/LivequeryClient.d.ts.map +1 -0
  4. package/dist/LivequeryClient.js +343 -0
  5. package/dist/LivequeryClient.js.map +1 -0
  6. package/dist/LivequeryCollection.d.ts +92 -0
  7. package/dist/LivequeryCollection.d.ts.map +1 -0
  8. package/dist/LivequeryCollection.js +231 -0
  9. package/dist/LivequeryCollection.js.map +1 -0
  10. package/dist/LivequeryDocument.d.ts +23 -0
  11. package/dist/LivequeryDocument.d.ts.map +1 -0
  12. package/dist/LivequeryDocument.js +22 -0
  13. package/dist/LivequeryDocument.js.map +1 -0
  14. package/dist/LivequeryMemoryStorage.d.ts +14 -0
  15. package/dist/LivequeryMemoryStorage.d.ts.map +1 -0
  16. package/dist/LivequeryMemoryStorage.js +89 -0
  17. package/dist/LivequeryMemoryStorage.js.map +1 -0
  18. package/dist/LivequeryStorge.d.ts +12 -0
  19. package/dist/LivequeryStorge.d.ts.map +1 -0
  20. package/dist/LivequeryStorge.js +2 -0
  21. package/dist/LivequeryStorge.js.map +1 -0
  22. package/dist/LivequeryTransporter.d.ts +22 -0
  23. package/dist/LivequeryTransporter.d.ts.map +1 -0
  24. package/dist/LivequeryTransporter.js +2 -0
  25. package/dist/LivequeryTransporter.js.map +1 -0
  26. package/dist/helpers/filterDocs.d.ts +5 -0
  27. package/dist/helpers/filterDocs.d.ts.map +1 -0
  28. package/dist/helpers/filterDocs.js +80 -0
  29. package/dist/helpers/filterDocs.js.map +1 -0
  30. package/dist/helpers/tryCatch.d.ts +2 -0
  31. package/dist/helpers/tryCatch.d.ts.map +1 -0
  32. package/dist/helpers/tryCatch.js +10 -0
  33. package/dist/helpers/tryCatch.js.map +1 -0
  34. package/dist/helpers/whenCompleted.d.ts +3 -0
  35. package/dist/helpers/whenCompleted.d.ts.map +1 -0
  36. package/dist/helpers/whenCompleted.js +5 -0
  37. package/dist/helpers/whenCompleted.js.map +1 -0
  38. package/dist/index.d.ts +9 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +9 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/types.d.ts +70 -0
  43. package/dist/types.d.ts.map +1 -0
  44. package/dist/types.js +2 -0
  45. package/dist/types.js.map +1 -0
  46. package/package.json +95 -18
  47. package/build/Collection.d.ts +0 -52
  48. package/build/Collection.js +0 -366
  49. package/build/index.d.ts +0 -1
  50. package/build/index.js +0 -1
  51. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=LivequeryStorge.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=LivequeryTransporter.js.map
@@ -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,2 @@
1
+ export declare const tryCatch: <T>(fn: () => Promise<T>) => Promise<[Error | undefined, T | undefined]>;
2
+ //# sourceMappingURL=tryCatch.d.ts.map
@@ -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,10 @@
1
+ export const tryCatch = async (fn) => {
2
+ try {
3
+ const result = await fn();
4
+ return [undefined, result];
5
+ }
6
+ catch (error) {
7
+ return [error, undefined];
8
+ }
9
+ };
10
+ //# sourceMappingURL=tryCatch.js.map
@@ -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,3 @@
1
+ import { Subject, Observable } from 'rxjs';
2
+ export declare function whenCompleted(stream: Subject<any>): Observable<void>;
3
+ //# sourceMappingURL=whenCompleted.d.ts.map
@@ -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"}
@@ -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"}