@byearlybird/starling 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-Bp6m_JJh.js +13 -0
- package/dist/index.d.ts +170 -2
- package/dist/index.js +423 -438
- package/package.json +2 -57
- package/README.md +0 -375
- package/dist/core/crdt/clock.d.ts +0 -15
- package/dist/core/crdt/clock.d.ts.map +0 -1
- package/dist/core/crdt/operations.d.ts +0 -8
- package/dist/core/crdt/operations.d.ts.map +0 -1
- package/dist/core/index.d.ts +0 -5
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -454
- package/dist/core/shared/types.d.ts +0 -25
- package/dist/core/shared/types.d.ts.map +0 -1
- package/dist/core/shared/utils.d.ts +0 -5
- package/dist/core/shared/utils.d.ts.map +0 -1
- package/dist/core/store/mutations.d.ts +0 -16
- package/dist/core/store/mutations.d.ts.map +0 -1
- package/dist/core/store/query.d.ts +0 -16
- package/dist/core/store/query.d.ts.map +0 -1
- package/dist/core/store/store.d.ts +0 -77
- package/dist/core/store/store.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/plugins/index.d.ts +0 -3
- package/dist/plugins/index.d.ts.map +0 -1
- package/dist/plugins/index.js +0 -188
- package/dist/plugins/persistence/index.d.ts +0 -2
- package/dist/plugins/persistence/index.d.ts.map +0 -1
- package/dist/plugins/persistence/unstorage-plugin.d.ts +0 -5
- package/dist/plugins/persistence/unstorage-plugin.d.ts.map +0 -1
- package/dist/plugins/push-pull-plugin.d.ts +0 -13
- package/dist/plugins/push-pull-plugin.d.ts.map +0 -1
- package/dist/plugins/sync/index.d.ts +0 -3
- package/dist/plugins/sync/index.d.ts.map +0 -1
- package/dist/plugins/sync/index.js +0 -65
- package/dist/plugins/sync/push-pull-plugin.d.ts +0 -13
- package/dist/plugins/sync/push-pull-plugin.d.ts.map +0 -1
- package/dist/plugins/unstorage-plugin.d.ts +0 -5
- package/dist/plugins/unstorage-plugin.d.ts.map +0 -1
- package/dist/react/index.d.ts +0 -3
- package/dist/react/index.d.ts.map +0 -1
- package/dist/react/index.js +0 -893
- package/dist/react/use-data.d.ts +0 -9
- package/dist/react/use-data.d.ts.map +0 -1
- package/dist/react/use-query.d.ts +0 -7
- package/dist/react/use-query.d.ts.map +0 -1
- package/dist/solid/index.d.ts +0 -3
- package/dist/solid/index.d.ts.map +0 -1
- package/dist/solid/index.js +0 -299
- package/dist/solid/use-data.d.ts +0 -3
- package/dist/solid/use-data.d.ts.map +0 -1
- package/dist/solid/use-query.d.ts +0 -3
- package/dist/solid/use-query.d.ts.map +0 -1
package/dist/core/index.js
DELETED
|
@@ -1,454 +0,0 @@
|
|
|
1
|
-
var __create = Object.create;
|
|
2
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __toESM = (mod, isNodeMode, target) => {
|
|
7
|
-
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
8
|
-
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
9
|
-
for (let key of __getOwnPropNames(mod))
|
|
10
|
-
if (!__hasOwnProp.call(to, key))
|
|
11
|
-
__defProp(to, key, {
|
|
12
|
-
get: () => mod[key],
|
|
13
|
-
enumerable: true
|
|
14
|
-
});
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
18
|
-
|
|
19
|
-
// lib/core/crdt/operations.ts
|
|
20
|
-
function encode(obj, eventstamp) {
|
|
21
|
-
const result = {};
|
|
22
|
-
function step(target, output) {
|
|
23
|
-
for (const key in target) {
|
|
24
|
-
if (!Object.hasOwn(target, key))
|
|
25
|
-
continue;
|
|
26
|
-
const value = target[key];
|
|
27
|
-
if (value != null && typeof value === "object" && !Array.isArray(value) && Object.getPrototypeOf(value) === Object.prototype) {
|
|
28
|
-
output[key] = {};
|
|
29
|
-
step(value, output[key]);
|
|
30
|
-
} else {
|
|
31
|
-
output[key] = {
|
|
32
|
-
__value: value,
|
|
33
|
-
__eventstamp: eventstamp
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
step(obj, result);
|
|
39
|
-
return result;
|
|
40
|
-
}
|
|
41
|
-
function decode(obj) {
|
|
42
|
-
const result = {};
|
|
43
|
-
function step(source, output) {
|
|
44
|
-
for (const key in source) {
|
|
45
|
-
if (!Object.hasOwn(source, key))
|
|
46
|
-
continue;
|
|
47
|
-
if (key === "__deleted")
|
|
48
|
-
continue;
|
|
49
|
-
const value = source[key];
|
|
50
|
-
if (value && "__value" in value && "__eventstamp" in value) {
|
|
51
|
-
output[key] = value.__value;
|
|
52
|
-
} else if (typeof value === "object" && value !== null && !Array.isArray(value)) {
|
|
53
|
-
output[key] = {};
|
|
54
|
-
step(value, output[key]);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
step(obj, result);
|
|
59
|
-
return result;
|
|
60
|
-
}
|
|
61
|
-
function merge(obj1, obj2) {
|
|
62
|
-
const result = {};
|
|
63
|
-
let changed = false;
|
|
64
|
-
function isEncodedValue(val) {
|
|
65
|
-
return val != null && typeof val === "object" && "__value" in val && "__eventstamp" in val;
|
|
66
|
-
}
|
|
67
|
-
function step(v1, v2, output) {
|
|
68
|
-
for (const key in v1) {
|
|
69
|
-
if (!Object.hasOwn(v1, key))
|
|
70
|
-
continue;
|
|
71
|
-
const value1 = v1[key];
|
|
72
|
-
const value2 = v2[key];
|
|
73
|
-
if (isEncodedValue(value1) && isEncodedValue(value2)) {
|
|
74
|
-
if (value1.__eventstamp >= value2.__eventstamp) {
|
|
75
|
-
output[key] = value1;
|
|
76
|
-
} else {
|
|
77
|
-
output[key] = value2;
|
|
78
|
-
changed = true;
|
|
79
|
-
}
|
|
80
|
-
} else if (isEncodedValue(value1)) {
|
|
81
|
-
output[key] = value1;
|
|
82
|
-
} else if (value1 && value2 && typeof value1 === "object" && typeof value2 === "object") {
|
|
83
|
-
output[key] = {};
|
|
84
|
-
step(value1, value2, output[key]);
|
|
85
|
-
} else if (value1) {
|
|
86
|
-
output[key] = value1;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
for (const key in v2) {
|
|
90
|
-
if (!Object.hasOwn(v2, key) || Object.hasOwn(result, key))
|
|
91
|
-
continue;
|
|
92
|
-
const value = v2[key];
|
|
93
|
-
if (value) {
|
|
94
|
-
output[key] = value;
|
|
95
|
-
changed = true;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
step(obj1, obj2, result);
|
|
100
|
-
return [result, changed];
|
|
101
|
-
}
|
|
102
|
-
function mergeArray(current, updates) {
|
|
103
|
-
const updatesMap = new Map(updates.map((item) => [item.key, item.value]));
|
|
104
|
-
const result = [];
|
|
105
|
-
let changed = false;
|
|
106
|
-
const seenKeys = new Set;
|
|
107
|
-
for (const { key, value: obj1 } of current) {
|
|
108
|
-
seenKeys.add(key);
|
|
109
|
-
const obj2 = updatesMap.get(key);
|
|
110
|
-
if (obj2) {
|
|
111
|
-
const [merged, objChanged] = merge(obj1, obj2);
|
|
112
|
-
result.push({ key, value: merged });
|
|
113
|
-
if (objChanged) {
|
|
114
|
-
changed = true;
|
|
115
|
-
}
|
|
116
|
-
} else {
|
|
117
|
-
result.push({ key, value: obj1 });
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
for (const { key, value: obj2 } of updates) {
|
|
121
|
-
if (!seenKeys.has(key)) {
|
|
122
|
-
result.push({ key, value: obj2 });
|
|
123
|
-
changed = true;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
return [result, changed];
|
|
127
|
-
}
|
|
128
|
-
var encodeMany = (data, eventstampFn) => data.map(({ key, value }) => ({ key, value: encode(value, eventstampFn()) }));
|
|
129
|
-
// lib/core/crdt/clock.ts
|
|
130
|
-
var formatEventstamp = (timestampMs, counter) => {
|
|
131
|
-
const isoString = new Date(timestampMs).toISOString();
|
|
132
|
-
return `${isoString}|${counter.toString(16).padStart(8, "0")}`;
|
|
133
|
-
};
|
|
134
|
-
var parseEventstamp = (eventstamp) => {
|
|
135
|
-
const pipeIndex = eventstamp.indexOf("|");
|
|
136
|
-
const isoString = eventstamp.slice(0, pipeIndex);
|
|
137
|
-
const hexCounter = eventstamp.slice(pipeIndex + 1);
|
|
138
|
-
return {
|
|
139
|
-
timestampMs: new Date(isoString).getTime(),
|
|
140
|
-
counter: parseInt(hexCounter, 16)
|
|
141
|
-
};
|
|
142
|
-
};
|
|
143
|
-
var createClock = () => {
|
|
144
|
-
let counter = 0;
|
|
145
|
-
let lastMs = Date.now();
|
|
146
|
-
return {
|
|
147
|
-
now() {
|
|
148
|
-
const nowMs = Date.now();
|
|
149
|
-
if (nowMs <= lastMs) {
|
|
150
|
-
counter++;
|
|
151
|
-
} else {
|
|
152
|
-
lastMs = nowMs;
|
|
153
|
-
counter = 0;
|
|
154
|
-
}
|
|
155
|
-
return formatEventstamp(nowMs, counter);
|
|
156
|
-
},
|
|
157
|
-
latest() {
|
|
158
|
-
return formatEventstamp(lastMs, counter);
|
|
159
|
-
},
|
|
160
|
-
forward(eventstamp) {
|
|
161
|
-
const latest = this.latest();
|
|
162
|
-
if (eventstamp > latest) {
|
|
163
|
-
const newer = parseEventstamp(eventstamp);
|
|
164
|
-
lastMs = newer.timestampMs;
|
|
165
|
-
counter = newer.counter;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
};
|
|
169
|
-
};
|
|
170
|
-
|
|
171
|
-
// lib/core/shared/utils.ts
|
|
172
|
-
function mapToArray(map) {
|
|
173
|
-
return Array.from(map.entries()).map(([key, value]) => ({ key, value }));
|
|
174
|
-
}
|
|
175
|
-
var mergeItems = (map, items) => {
|
|
176
|
-
const merged = [];
|
|
177
|
-
for (const { key, value } of items) {
|
|
178
|
-
const current = map.get(key);
|
|
179
|
-
if (!current)
|
|
180
|
-
continue;
|
|
181
|
-
const [mergedValue, changed] = merge(current, value);
|
|
182
|
-
if (changed) {
|
|
183
|
-
merged.push({ key, value: mergedValue });
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
return merged;
|
|
187
|
-
};
|
|
188
|
-
|
|
189
|
-
// node_modules/.bun/mitt@3.0.1/node_modules/mitt/dist/mitt.mjs
|
|
190
|
-
function mitt_default(n) {
|
|
191
|
-
return { all: n = n || new Map, on: function(t, e) {
|
|
192
|
-
var i = n.get(t);
|
|
193
|
-
i ? i.push(e) : n.set(t, [e]);
|
|
194
|
-
}, off: function(t, e) {
|
|
195
|
-
var i = n.get(t);
|
|
196
|
-
i && (e ? i.splice(i.indexOf(e) >>> 0, 1) : n.set(t, []));
|
|
197
|
-
}, emit: function(t, e) {
|
|
198
|
-
var i = n.get(t);
|
|
199
|
-
i && i.slice().map(function(n2) {
|
|
200
|
-
n2(e);
|
|
201
|
-
}), (i = n.get("*")) && i.slice().map(function(n2) {
|
|
202
|
-
n2(t, e);
|
|
203
|
-
});
|
|
204
|
-
} };
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
// lib/core/store/mutations.ts
|
|
208
|
-
var createPutMany = (map, clock, emitter) => {
|
|
209
|
-
return (data) => {
|
|
210
|
-
encodeMany(data, () => clock.now()).forEach(({ key, value }) => {
|
|
211
|
-
map.set(key, value);
|
|
212
|
-
});
|
|
213
|
-
emitter.emit("put", data);
|
|
214
|
-
};
|
|
215
|
-
};
|
|
216
|
-
var createUpdateMany = (map, clock, emitter) => {
|
|
217
|
-
return (data) => {
|
|
218
|
-
const validData = data.filter((d) => map.has(d.key));
|
|
219
|
-
if (validData.length === 0)
|
|
220
|
-
return;
|
|
221
|
-
const updateEvents = [];
|
|
222
|
-
let anyChanged = false;
|
|
223
|
-
for (const { key, value } of validData) {
|
|
224
|
-
const current = map.get(key);
|
|
225
|
-
if (!current)
|
|
226
|
-
continue;
|
|
227
|
-
const encoded = encode(value, clock.now());
|
|
228
|
-
const [mergedValue, itemChanged] = merge(current, encoded);
|
|
229
|
-
if (itemChanged) {
|
|
230
|
-
map.set(key, mergedValue);
|
|
231
|
-
updateEvents.push({ key, value: decode(mergedValue) });
|
|
232
|
-
anyChanged = true;
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
if (!anyChanged)
|
|
236
|
-
return;
|
|
237
|
-
emitter.emit("update", updateEvents);
|
|
238
|
-
};
|
|
239
|
-
};
|
|
240
|
-
var createDeleteMany = (map, clock, emitter) => {
|
|
241
|
-
return (keys) => {
|
|
242
|
-
const validKeys = keys.filter((key) => map.has(key));
|
|
243
|
-
if (validKeys.length === 0)
|
|
244
|
-
return;
|
|
245
|
-
const deletionMarkers = encodeMany(validKeys.map((key) => ({ key, value: { __deleted: true } })), () => clock.now());
|
|
246
|
-
const merged = mergeItems(map, deletionMarkers);
|
|
247
|
-
if (merged.length === 0)
|
|
248
|
-
return;
|
|
249
|
-
const deleteEvents = [];
|
|
250
|
-
merged.forEach(({ key, value }) => {
|
|
251
|
-
map.set(key, value);
|
|
252
|
-
deleteEvents.push({ key });
|
|
253
|
-
});
|
|
254
|
-
emitter.emit("delete", deleteEvents);
|
|
255
|
-
};
|
|
256
|
-
};
|
|
257
|
-
var createMerge = (map, emitter) => {
|
|
258
|
-
return (snapshot, opts = { silent: false }) => {
|
|
259
|
-
const putEvents = [];
|
|
260
|
-
const updateEvents = [];
|
|
261
|
-
const deleteEvents = [];
|
|
262
|
-
for (const { key, value: snapshotValue } of snapshot) {
|
|
263
|
-
const currentValue = map.get(key);
|
|
264
|
-
if (!currentValue) {
|
|
265
|
-
putEvents.push({ key, value: decode(snapshotValue) });
|
|
266
|
-
map.set(key, snapshotValue);
|
|
267
|
-
} else {
|
|
268
|
-
const [mergedValue, changed] = merge(currentValue, snapshotValue);
|
|
269
|
-
if (changed) {
|
|
270
|
-
const wasDeleted = currentValue.__deleted !== undefined;
|
|
271
|
-
const isDeleted = mergedValue.__deleted !== undefined;
|
|
272
|
-
if (!wasDeleted && isDeleted) {
|
|
273
|
-
map.set(key, mergedValue);
|
|
274
|
-
deleteEvents.push({ key });
|
|
275
|
-
} else {
|
|
276
|
-
map.set(key, mergedValue);
|
|
277
|
-
updateEvents.push({ key, value: decode(mergedValue) });
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
if (opts.silent)
|
|
283
|
-
return;
|
|
284
|
-
if (putEvents.length > 0) {
|
|
285
|
-
emitter.emit("put", putEvents);
|
|
286
|
-
}
|
|
287
|
-
if (updateEvents.length > 0) {
|
|
288
|
-
emitter.emit("update", updateEvents);
|
|
289
|
-
}
|
|
290
|
-
if (deleteEvents.length > 0) {
|
|
291
|
-
emitter.emit("delete", deleteEvents);
|
|
292
|
-
}
|
|
293
|
-
};
|
|
294
|
-
};
|
|
295
|
-
|
|
296
|
-
// lib/core/store/query.ts
|
|
297
|
-
var createQuery = (map, queries) => {
|
|
298
|
-
return (predicate) => {
|
|
299
|
-
const results = new Map;
|
|
300
|
-
for (const [key, rawValue] of map.entries()) {
|
|
301
|
-
const value = decode(rawValue);
|
|
302
|
-
if (predicate(value)) {
|
|
303
|
-
results.set(key, value);
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
const internal = {
|
|
307
|
-
predicate,
|
|
308
|
-
results,
|
|
309
|
-
callbacks: new Set
|
|
310
|
-
};
|
|
311
|
-
queries.add(internal);
|
|
312
|
-
return {
|
|
313
|
-
results() {
|
|
314
|
-
return results;
|
|
315
|
-
},
|
|
316
|
-
onChange: (callback) => {
|
|
317
|
-
internal.callbacks.add(callback);
|
|
318
|
-
return () => {
|
|
319
|
-
internal.callbacks.delete(callback);
|
|
320
|
-
};
|
|
321
|
-
},
|
|
322
|
-
dispose: () => {
|
|
323
|
-
internal.callbacks.clear();
|
|
324
|
-
queries.delete(internal);
|
|
325
|
-
}
|
|
326
|
-
};
|
|
327
|
-
};
|
|
328
|
-
};
|
|
329
|
-
|
|
330
|
-
// lib/core/store/store.ts
|
|
331
|
-
var createStore = (collectionKey) => {
|
|
332
|
-
const $map = new Map;
|
|
333
|
-
const $emitter = mitt_default();
|
|
334
|
-
const $clock = createClock();
|
|
335
|
-
const $handles = new Set;
|
|
336
|
-
const $queries = new Set;
|
|
337
|
-
$emitter.on("*", (event) => {
|
|
338
|
-
if (event === "change")
|
|
339
|
-
return;
|
|
340
|
-
$emitter.emit("change");
|
|
341
|
-
});
|
|
342
|
-
const runCallbacks = (dirtyQueries) => {
|
|
343
|
-
for (const query2 of dirtyQueries) {
|
|
344
|
-
for (const callback of query2.callbacks) {
|
|
345
|
-
callback();
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
dirtyQueries.clear();
|
|
349
|
-
};
|
|
350
|
-
$emitter.on("put", (data) => {
|
|
351
|
-
const dirtyQueries = new Set;
|
|
352
|
-
for (const query2 of $queries) {
|
|
353
|
-
for (const item of data) {
|
|
354
|
-
if (query2.predicate(item.value)) {
|
|
355
|
-
query2.results.set(item.key, item.value);
|
|
356
|
-
dirtyQueries.add(query2);
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
runCallbacks(dirtyQueries);
|
|
361
|
-
});
|
|
362
|
-
$emitter.on("delete", (data) => {
|
|
363
|
-
const dirtyQueries = new Set;
|
|
364
|
-
for (const query2 of $queries) {
|
|
365
|
-
for (const item of data) {
|
|
366
|
-
if (query2.results.has(item.key)) {
|
|
367
|
-
query2.results.delete(item.key);
|
|
368
|
-
dirtyQueries.add(query2);
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
runCallbacks(dirtyQueries);
|
|
373
|
-
});
|
|
374
|
-
$emitter.on("update", (data) => {
|
|
375
|
-
const dirtyQueries = new Set;
|
|
376
|
-
for (const query2 of $queries) {
|
|
377
|
-
for (const item of data) {
|
|
378
|
-
const matches = query2.predicate(item.value);
|
|
379
|
-
const inResults = query2.results.has(item.key);
|
|
380
|
-
if (matches) {
|
|
381
|
-
query2.results.set(item.key, item.value);
|
|
382
|
-
dirtyQueries.add(query2);
|
|
383
|
-
} else if (inResults) {
|
|
384
|
-
query2.results.delete(item.key);
|
|
385
|
-
dirtyQueries.add(query2);
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
runCallbacks(dirtyQueries);
|
|
390
|
-
});
|
|
391
|
-
const putMany = createPutMany($map, $clock, $emitter);
|
|
392
|
-
const updateMany = createUpdateMany($map, $clock, $emitter);
|
|
393
|
-
const deleteMany = createDeleteMany($map, $clock, $emitter);
|
|
394
|
-
const merge2 = createMerge($map, $emitter);
|
|
395
|
-
const query = createQuery($map, $queries);
|
|
396
|
-
return {
|
|
397
|
-
collectionKey,
|
|
398
|
-
putMany,
|
|
399
|
-
updateMany,
|
|
400
|
-
deleteMany,
|
|
401
|
-
merge: merge2,
|
|
402
|
-
put(key, value) {
|
|
403
|
-
this.putMany([{ key, value }]);
|
|
404
|
-
},
|
|
405
|
-
update(key, value) {
|
|
406
|
-
this.updateMany([{ key, value }]);
|
|
407
|
-
},
|
|
408
|
-
delete(key) {
|
|
409
|
-
this.deleteMany([key]);
|
|
410
|
-
},
|
|
411
|
-
values() {
|
|
412
|
-
const result = [];
|
|
413
|
-
for (const [key, value] of $map) {
|
|
414
|
-
if (!value.__deleted) {
|
|
415
|
-
result.push({ key, value: decode(value) });
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
return result;
|
|
419
|
-
},
|
|
420
|
-
query,
|
|
421
|
-
snapshot() {
|
|
422
|
-
return mapToArray($map);
|
|
423
|
-
},
|
|
424
|
-
on(event, callback) {
|
|
425
|
-
$emitter.on(event, callback);
|
|
426
|
-
return () => {
|
|
427
|
-
$emitter.off(event, callback);
|
|
428
|
-
};
|
|
429
|
-
},
|
|
430
|
-
use(plugin) {
|
|
431
|
-
$handles.add(plugin(this));
|
|
432
|
-
return this;
|
|
433
|
-
},
|
|
434
|
-
async init() {
|
|
435
|
-
for (const handle of $handles) {
|
|
436
|
-
await handle.init();
|
|
437
|
-
}
|
|
438
|
-
return this;
|
|
439
|
-
},
|
|
440
|
-
async dispose() {
|
|
441
|
-
$handles.forEach(async (handle) => {
|
|
442
|
-
await handle.dispose();
|
|
443
|
-
});
|
|
444
|
-
$emitter.all.clear();
|
|
445
|
-
}
|
|
446
|
-
};
|
|
447
|
-
};
|
|
448
|
-
export {
|
|
449
|
-
mergeArray,
|
|
450
|
-
merge,
|
|
451
|
-
encode,
|
|
452
|
-
decode,
|
|
453
|
-
createStore
|
|
454
|
-
};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
export type EncodedValue<TValue = unknown> = {
|
|
2
|
-
__value: TValue;
|
|
3
|
-
__eventstamp: string;
|
|
4
|
-
};
|
|
5
|
-
export type EncodedObject = {
|
|
6
|
-
__deleted?: EncodedValue<boolean>;
|
|
7
|
-
[key: string]: EncodedValue | EncodedObject;
|
|
8
|
-
};
|
|
9
|
-
export type DeepPartial<T> = T extends object ? {
|
|
10
|
-
[P in keyof T]?: DeepPartial<T[P]>;
|
|
11
|
-
} : T;
|
|
12
|
-
export type EventstampFn = () => string;
|
|
13
|
-
export type ArrayKV<T> = {
|
|
14
|
-
key: string;
|
|
15
|
-
value: T;
|
|
16
|
-
}[];
|
|
17
|
-
export type StoreEvents<TValue> = {
|
|
18
|
-
put: ArrayKV<TValue>;
|
|
19
|
-
update: ArrayKV<TValue>;
|
|
20
|
-
delete: {
|
|
21
|
-
key: string;
|
|
22
|
-
}[];
|
|
23
|
-
change: undefined;
|
|
24
|
-
};
|
|
25
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/core/shared/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,CAAC,MAAM,GAAG,OAAO,IAAI;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC3B,SAAS,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,aAAa,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAC1C;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACtC,CAAC,CAAC;AAEL,MAAM,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC;AAExC,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,EAAE,CAAC;AAErD,MAAM,MAAM,WAAW,CAAC,MAAM,IAAI;IACjC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACxB,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1B,MAAM,EAAE,SAAS,CAAC;CAClB,CAAC"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { ArrayKV, EncodedObject } from "@core/shared/types";
|
|
2
|
-
export declare function mapToArray<TValue>(map: Map<string, TValue>): ArrayKV<TValue>;
|
|
3
|
-
export declare function arrayToMap<TValue>(array: ArrayKV<TValue>): Map<string, TValue>;
|
|
4
|
-
export declare const mergeItems: (map: Map<string, EncodedObject>, items: ArrayKV<EncodedObject>) => ArrayKV<EncodedObject>;
|
|
5
|
-
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../lib/core/shared/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEjE,wBAAgB,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAE5E;AAED,wBAAgB,UAAU,CAAC,MAAM,EAChC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,GACpB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAErB;AAED,eAAO,MAAM,UAAU,GACtB,KAAK,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,EAC/B,OAAO,OAAO,CAAC,aAAa,CAAC,KAC3B,OAAO,CAAC,aAAa,CAcvB,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { ArrayKV, EncodedObject, StoreEvents } from "@core/shared/types";
|
|
2
|
-
import type { Emitter } from "mitt";
|
|
3
|
-
declare const createPutMany: <TValue extends object>(map: Map<string, EncodedObject>, clock: {
|
|
4
|
-
now: () => string;
|
|
5
|
-
}, emitter: Emitter<StoreEvents<TValue>>) => (data: ArrayKV<TValue>) => void;
|
|
6
|
-
declare const createUpdateMany: <TValue extends object>(map: Map<string, EncodedObject>, clock: {
|
|
7
|
-
now: () => string;
|
|
8
|
-
}, emitter: Emitter<StoreEvents<TValue>>) => (data: ArrayKV<Partial<TValue>>) => void;
|
|
9
|
-
declare const createDeleteMany: <TValue extends object>(map: Map<string, EncodedObject>, clock: {
|
|
10
|
-
now: () => string;
|
|
11
|
-
}, emitter: Emitter<StoreEvents<TValue>>) => (keys: string[]) => void;
|
|
12
|
-
declare const createMerge: <TValue extends object>(map: Map<string, EncodedObject>, emitter: Emitter<StoreEvents<TValue>>) => (snapshot: ArrayKV<EncodedObject>, opts?: {
|
|
13
|
-
silent: boolean;
|
|
14
|
-
}) => void;
|
|
15
|
-
export { createPutMany, createUpdateMany, createDeleteMany, createMerge };
|
|
16
|
-
//# sourceMappingURL=mutations.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mutations.d.ts","sourceRoot":"","sources":["../../../lib/core/store/mutations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE9E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,QAAA,MAAM,aAAa,GAAI,MAAM,SAAS,MAAM,EAC3C,KAAK,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,EAC/B,OAAO;IAAE,GAAG,EAAE,MAAM,MAAM,CAAA;CAAE,EAC5B,SAAS,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,MAE7B,MAAM,OAAO,CAAC,MAAM,CAAC,SAO7B,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAAI,MAAM,SAAS,MAAM,EAC9C,KAAK,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,EAC/B,OAAO;IAAE,GAAG,EAAE,MAAM,MAAM,CAAA;CAAE,EAC5B,SAAS,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,MAE7B,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SA4BtC,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAAI,MAAM,SAAS,MAAM,EAC9C,KAAK,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,EAC/B,OAAO;IAAE,GAAG,EAAE,MAAM,MAAM,CAAA;CAAE,EAC5B,SAAS,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,MAE7B,MAAM,MAAM,EAAE,SAuBtB,CAAC;AAEF,QAAA,MAAM,WAAW,GAAI,MAAM,SAAS,MAAM,EACzC,KAAK,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,EAC/B,SAAS,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,MAGpC,UAAU,OAAO,CAAC,aAAa,CAAC,EAChC,OAAM;IAAE,MAAM,EAAE,OAAO,CAAA;CAAsB,SAgD9C,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { EncodedObject } from "@core/shared/types";
|
|
2
|
-
type Predicate<T> = (data: T) => boolean;
|
|
3
|
-
type Callback = () => void;
|
|
4
|
-
type QueryInternal<T> = {
|
|
5
|
-
predicate: Predicate<T>;
|
|
6
|
-
results: Map<string, T>;
|
|
7
|
-
callbacks: Set<Callback>;
|
|
8
|
-
};
|
|
9
|
-
declare const createQuery: <T extends object>(map: Map<string, EncodedObject>, queries: Set<QueryInternal<T>>) => (predicate: Predicate<T>) => {
|
|
10
|
-
results(): Map<string, T>;
|
|
11
|
-
onChange: (callback: Callback) => () => void;
|
|
12
|
-
dispose: () => void;
|
|
13
|
-
};
|
|
14
|
-
export { createQuery };
|
|
15
|
-
export type { QueryInternal, Predicate, Callback };
|
|
16
|
-
//# sourceMappingURL=query.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../lib/core/store/query.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;AACzC,KAAK,QAAQ,GAAG,MAAM,IAAI,CAAC;AAE3B,KAAK,aAAa,CAAC,CAAC,IAAI;IACvB,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACxB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACxB,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;CACzB,CAAC;AAEF,QAAA,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,EACpC,KAAK,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,EAC/B,SAAS,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAEtB,WAAW,SAAS,CAAC,CAAC,CAAC;;yBAsBR,QAAQ;;CAa/B,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import type { ArrayKV, DeepPartial, EncodedObject, StoreEvents } from "@core/shared/types";
|
|
2
|
-
type PluginHandle = {
|
|
3
|
-
init: () => Promise<void> | void;
|
|
4
|
-
dispose: () => Promise<void> | void;
|
|
5
|
-
};
|
|
6
|
-
type Plugin<TValue extends object> = (store: Store<TValue>) => PluginHandle;
|
|
7
|
-
declare const createStore: <T extends object>(collectionKey: string) => {
|
|
8
|
-
collectionKey: string;
|
|
9
|
-
putMany: (data: ArrayKV<T>) => void;
|
|
10
|
-
updateMany: (data: ArrayKV<Partial<T>>) => void;
|
|
11
|
-
deleteMany: (keys: string[]) => void;
|
|
12
|
-
merge: (snapshot: ArrayKV<EncodedObject>, opts?: {
|
|
13
|
-
silent: boolean;
|
|
14
|
-
}) => void;
|
|
15
|
-
put(key: string, value: T): void;
|
|
16
|
-
update(key: string, value: DeepPartial<T>): void;
|
|
17
|
-
delete(key: string): void;
|
|
18
|
-
values(): ArrayKV<T>;
|
|
19
|
-
query: (predicate: import("./query").Predicate<T>) => {
|
|
20
|
-
results(): Map<string, T>;
|
|
21
|
-
onChange: (callback: import("./query").Callback) => () => void;
|
|
22
|
-
dispose: () => void;
|
|
23
|
-
};
|
|
24
|
-
snapshot(): ArrayKV<EncodedObject>;
|
|
25
|
-
on<K extends keyof StoreEvents<T>>(event: K, callback: (data: StoreEvents<T>[K]) => void): () => void;
|
|
26
|
-
use(plugin: Plugin<T>): {
|
|
27
|
-
collectionKey: string;
|
|
28
|
-
putMany: (data: ArrayKV<T>) => void;
|
|
29
|
-
updateMany: (data: ArrayKV<Partial<T>>) => void;
|
|
30
|
-
deleteMany: (keys: string[]) => void;
|
|
31
|
-
merge: (snapshot: ArrayKV<EncodedObject>, opts?: {
|
|
32
|
-
silent: boolean;
|
|
33
|
-
}) => void;
|
|
34
|
-
put(key: string, value: T): void;
|
|
35
|
-
update(key: string, value: DeepPartial<T>): void;
|
|
36
|
-
delete(key: string): void;
|
|
37
|
-
values(): ArrayKV<T>;
|
|
38
|
-
query: (predicate: import("./query").Predicate<T>) => {
|
|
39
|
-
results(): Map<string, T>;
|
|
40
|
-
onChange: (callback: import("./query").Callback) => () => void;
|
|
41
|
-
dispose: () => void;
|
|
42
|
-
};
|
|
43
|
-
snapshot(): ArrayKV<EncodedObject>;
|
|
44
|
-
on<K extends keyof StoreEvents<T>>(event: K, callback: (data: StoreEvents<T>[K]) => void): () => void;
|
|
45
|
-
use(plugin: Plugin<T>): /*elided*/ any;
|
|
46
|
-
init(): Promise</*elided*/ any>;
|
|
47
|
-
dispose(): Promise<void>;
|
|
48
|
-
};
|
|
49
|
-
init(): Promise<{
|
|
50
|
-
collectionKey: string;
|
|
51
|
-
putMany: (data: ArrayKV<T>) => void;
|
|
52
|
-
updateMany: (data: ArrayKV<Partial<T>>) => void;
|
|
53
|
-
deleteMany: (keys: string[]) => void;
|
|
54
|
-
merge: (snapshot: ArrayKV<EncodedObject>, opts?: {
|
|
55
|
-
silent: boolean;
|
|
56
|
-
}) => void;
|
|
57
|
-
put(key: string, value: T): void;
|
|
58
|
-
update(key: string, value: DeepPartial<T>): void;
|
|
59
|
-
delete(key: string): void;
|
|
60
|
-
values(): ArrayKV<T>;
|
|
61
|
-
query: (predicate: import("./query").Predicate<T>) => {
|
|
62
|
-
results(): Map<string, T>;
|
|
63
|
-
onChange: (callback: import("./query").Callback) => () => void;
|
|
64
|
-
dispose: () => void;
|
|
65
|
-
};
|
|
66
|
-
snapshot(): ArrayKV<EncodedObject>;
|
|
67
|
-
on<K extends keyof StoreEvents<T>>(event: K, callback: (data: StoreEvents<T>[K]) => void): () => void;
|
|
68
|
-
use(plugin: Plugin<T>): /*elided*/ any;
|
|
69
|
-
init(): Promise</*elided*/ any>;
|
|
70
|
-
dispose(): Promise<void>;
|
|
71
|
-
}>;
|
|
72
|
-
dispose(): Promise<void>;
|
|
73
|
-
};
|
|
74
|
-
type Store<T extends object> = ReturnType<typeof createStore<T>>;
|
|
75
|
-
export { createStore };
|
|
76
|
-
export type { StoreEvents, Store, Plugin };
|
|
77
|
-
//# sourceMappingURL=store.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../lib/core/store/store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,OAAO,EACP,WAAW,EACX,aAAa,EACb,WAAW,EACX,MAAM,oBAAoB,CAAC;AAY5B,KAAK,YAAY,GAAG;IACnB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACjC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACpC,CAAC;AAEF,KAAK,MAAM,CAAC,MAAM,SAAS,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,YAAY,CAAC;AAE5E,QAAA,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,EAAE,eAAe,MAAM;;;;;;;;aAqFjD,MAAM,SAAS,CAAC;gBAGb,MAAM,SAAS,WAAW,CAAC,CAAC,CAAC;gBAG7B,MAAM;cAGR,OAAO,CAAC,CAAC,CAAC;;;;;;gBAUR,OAAO,CAAC,aAAa,CAAC;OAG/B,CAAC,SAAS,MAAM,WAAW,CAAC,CAAC,CAAC,SACzB,CAAC,YACE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;gBAOhC,MAAM,CAAC,CAAC,CAAC;;;;;;;;iBA/BZ,MAAM,SAAS,CAAC;oBAGb,MAAM,SAAS,WAAW,CAAC,CAAC,CAAC;oBAG7B,MAAM;kBAGR,OAAO,CAAC,CAAC,CAAC;;;;;;oBAUR,OAAO,CAAC,aAAa,CAAC;WAG/B,CAAC,SAAS,MAAM,WAAW,CAAC,CAAC,CAAC,SACzB,CAAC,YACE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;oBAOhC,MAAM,CAAC,CAAC,CAAC;;;;;;;;;;;;iBA/BZ,MAAM,SAAS,CAAC;oBAGb,MAAM,SAAS,WAAW,CAAC,CAAC,CAAC;oBAG7B,MAAM;kBAGR,OAAO,CAAC,CAAC,CAAC;;;;;;oBAUR,OAAO,CAAC,aAAa,CAAC;WAG/B,CAAC,SAAS,MAAM,WAAW,CAAC,CAAC,CAAC,SACzB,CAAC,YACE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;oBAOhC,MAAM,CAAC,CAAC,CAAC;;;;;CAmBtB,CAAC;AAEF,KAAK,KAAK,CAAC,CAAC,SAAS,MAAM,IAAI,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC"}
|
package/dist/plugins/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
|