@procedures/store 0.7.0 → 0.8.1

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/CHANGELOG.md +77 -0
  2. package/README.md +98 -1
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/indexeddb/sync-state-store.d.ts +40 -0
  5. package/dist/indexeddb/sync-state-store.d.ts.map +1 -0
  6. package/dist/indexeddb/sync-state-store.js +94 -0
  7. package/dist/indexeddb/sync-state-store.js.map +1 -0
  8. package/dist/indexeddb.d.ts +7 -2
  9. package/dist/indexeddb.d.ts.map +1 -1
  10. package/dist/indexeddb.js +6 -2
  11. package/dist/indexeddb.js.map +1 -1
  12. package/dist/storage/api.d.ts +94 -11
  13. package/dist/storage/api.d.ts.map +1 -1
  14. package/dist/storage/api.js +177 -24
  15. package/dist/storage/api.js.map +1 -1
  16. package/dist/storage/feed.d.ts +133 -0
  17. package/dist/storage/feed.d.ts.map +1 -0
  18. package/dist/storage/feed.js +159 -0
  19. package/dist/storage/feed.js.map +1 -0
  20. package/dist/storage/file-queue.d.ts.map +1 -1
  21. package/dist/storage/file-queue.js +2 -1
  22. package/dist/storage/file-queue.js.map +1 -1
  23. package/dist/storage/hybrid.d.ts +415 -20
  24. package/dist/storage/hybrid.d.ts.map +1 -1
  25. package/dist/storage/hybrid.js +1405 -196
  26. package/dist/storage/hybrid.js.map +1 -1
  27. package/dist/storage/index.d.ts +6 -2
  28. package/dist/storage/index.d.ts.map +1 -1
  29. package/dist/storage/index.js +6 -1
  30. package/dist/storage/index.js.map +1 -1
  31. package/dist/storage/sync-state.d.ts +56 -0
  32. package/dist/storage/sync-state.d.ts.map +1 -0
  33. package/dist/storage/sync-state.js +58 -0
  34. package/dist/storage/sync-state.js.map +1 -0
  35. package/dist/storage/synced-registry.d.ts +22 -4
  36. package/dist/storage/synced-registry.d.ts.map +1 -1
  37. package/dist/storage/synced-registry.js +63 -31
  38. package/dist/storage/synced-registry.js.map +1 -1
  39. package/dist/storage/types.d.ts +22 -1
  40. package/dist/storage/types.d.ts.map +1 -1
  41. package/package.json +4 -3
  42. package/src/indexeddb/sync-state-store.ts +101 -0
  43. package/src/indexeddb.ts +7 -2
  44. package/src/storage/api.ts +240 -28
  45. package/src/storage/feed.ts +251 -0
  46. package/src/storage/file-queue.ts +2 -1
  47. package/src/storage/hybrid.ts +1526 -203
  48. package/src/storage/index.ts +17 -0
  49. package/src/storage/sync-state.ts +89 -0
  50. package/src/storage/synced-registry.ts +76 -31
  51. package/src/storage/types.ts +25 -1
@@ -0,0 +1,159 @@
1
+ /**
2
+ * The push feed of the remote changes of a `HybridStorage` (roadmap CLI-21, CLI-15).
3
+ *
4
+ * A `RemoteChangeFeed` pushes the deltas of the remote. When the `since` of a delta is the cursor
5
+ * of the storage, the storage applies the delta without a read. A gap, a lost event or a new
6
+ * subscription makes the storage read the changes since its cursor. Thus the feed replaces most
7
+ * of the periodic pulls, and the pulls stay correct when the feed loses an event.
8
+ *
9
+ * `EventsChangeFeed` is the feed of the change events of the core collection procedures: the topic
10
+ * `collections.<name>` of `events.subscribe` (`documentation/EVENTS.md`). By default, an event has
11
+ * only the ids and the versions: the feed gives it as a hint, and the storage reads the values
12
+ * with a pull, through the checks of a read. The file imports no module of Node, so it runs in a
13
+ * browser.
14
+ */
15
+ import { collectionChangeTopic, subscribeRemote, } from "@procedures/client";
16
+ /** True for a source with `subscribe()`: it subscribes itself. */
17
+ function isSubscriber(source) {
18
+ return typeof source.subscribe === "function";
19
+ }
20
+ /** True for a string, or for no value. */
21
+ const optionalString = (value) => value === undefined || typeof value === "string";
22
+ /** True for a list of ids. */
23
+ const isIds = (value) => Array.isArray(value) && value.every((id) => typeof id === "string");
24
+ /**
25
+ * The delta or the hint of a change event of the collection procedures, or undefined for an
26
+ * event of another form. The event comes over the wire: the function examines each field.
27
+ *
28
+ * - An event with `since`, `version` and a value for each changed id is a delta: `changes`.
29
+ * - Each other event is a hint: an event without values, an event with withheld values (the
30
+ * filter of the host refused them), or a hint of a storage without a change log.
31
+ */
32
+ function eventOf(data) {
33
+ if (typeof data !== "object" || data === null)
34
+ return undefined;
35
+ const event = data;
36
+ const { since, version, origin } = event;
37
+ if (!optionalString(since) || !optionalString(version) || !optionalString(origin))
38
+ return undefined;
39
+ if (!isIds(event.changed) || !isIds(event.deleted) || (event.withheld !== undefined && !isIds(event.withheld)))
40
+ return undefined;
41
+ let values;
42
+ if (event.values !== undefined) {
43
+ if (!Array.isArray(event.values))
44
+ return undefined;
45
+ values = [];
46
+ for (const value of event.values) {
47
+ const entry = value;
48
+ if (typeof entry !== "object" || entry === null || typeof entry.id !== "string" || !("value" in entry))
49
+ return undefined;
50
+ values.push([entry.id, entry.value]);
51
+ }
52
+ }
53
+ const withOrigin = origin !== undefined ? { origin } : {};
54
+ const valued = new Set(values?.map(([id]) => id));
55
+ const withheld = event.withheld ?? [];
56
+ const complete = values !== undefined && withheld.length === 0 && event.changed.every((id) => valued.has(id));
57
+ if (since !== undefined && version !== undefined && complete) {
58
+ return { changes: { since, version, full: false, changed: values, deleted: event.deleted, ...withOrigin } };
59
+ }
60
+ return {
61
+ hint: {
62
+ ...(since !== undefined && { since }),
63
+ ...(version !== undefined && { version }),
64
+ changed: event.changed,
65
+ deleted: event.deleted,
66
+ ...withOrigin,
67
+ },
68
+ };
69
+ }
70
+ /**
71
+ * The push feed of the change events of the core collection procedures (roadmap CLI-15). It
72
+ * subscribes to the topic `collections.<name>` with `events.subscribe`. The delivery of the events
73
+ * is at most once, so the feed treats them as hints:
74
+ *
75
+ * - An event without values (the default of the procedures) or with withheld values goes to
76
+ * `onHint()`. The storage reads the values with a pull, so each value passes the checks of a
77
+ * read. A hint with only deletes applies without a pull when `since` is the cursor.
78
+ * - An event with the values of each changed id (the option `values` of the procedures) goes to
79
+ * `onChanges()`. The storage applies it without a read when `since` is its cursor.
80
+ * - A gap of the numbers of the events, a lost event (`dropped`), an event of another form, and
81
+ * each confirmation of the subscription (the first one and each resubscribe) call `onGap()`.
82
+ * - The error that ends the subscription goes to `onError` of the options and of the listener.
83
+ *
84
+ * @example
85
+ * ```typescript
86
+ * const users = new HybridStorage(new ApiStorage(client, { collection: "users" }), {
87
+ * versionOf: (user) => user.rev,
88
+ * feed: new EventsChangeFeed(client, { collection: "users" }),
89
+ * });
90
+ * ```
91
+ */
92
+ export class EventsChangeFeed {
93
+ /** The topic of the change events. */
94
+ topic;
95
+ source;
96
+ subscription;
97
+ onError;
98
+ /**
99
+ * @param source - A `Client` or a `WebSocketTransport`, or another transport of the client
100
+ * @param options - The collection or the topic, and the options of the subscription
101
+ */
102
+ constructor(source, options) {
103
+ const topic = options.topic ?? (options.collection !== undefined ? collectionChangeTopic(options.collection) : undefined);
104
+ if (topic === undefined || topic === "")
105
+ throw new TypeError("EventsChangeFeed needs a collection or a topic");
106
+ this.topic = topic;
107
+ this.source = source;
108
+ this.subscription = { maxAttempts: Number.POSITIVE_INFINITY, ...options.subscription };
109
+ this.onError = options.onError;
110
+ }
111
+ subscribe(listener) {
112
+ /** The number of the next event: a resubscribe starts again at 1 */
113
+ let next = 1;
114
+ let stopped = false;
115
+ const handler = (data, event) => {
116
+ if (stopped)
117
+ return;
118
+ const lost = event.dropped > 0 || event.seq !== next;
119
+ next = event.seq + 1;
120
+ if (lost)
121
+ listener.onGap();
122
+ const parsed = eventOf(data);
123
+ if (parsed === undefined)
124
+ listener.onGap();
125
+ else if ("changes" in parsed)
126
+ listener.onChanges(parsed.changes);
127
+ // A hint: the listener reads the values with a read of its own
128
+ else if (listener.onHint)
129
+ listener.onHint(parsed.hint);
130
+ else
131
+ listener.onGap();
132
+ };
133
+ const options = {
134
+ ...this.subscription,
135
+ onSubscribed: () => {
136
+ if (stopped)
137
+ return;
138
+ next = 1;
139
+ listener.onGap();
140
+ },
141
+ onError: (error) => {
142
+ if (stopped)
143
+ return;
144
+ this.onError?.(error);
145
+ listener.onError?.(error);
146
+ },
147
+ };
148
+ const unsubscribe = isSubscriber(this.source)
149
+ ? this.source.subscribe(this.topic, handler, options)
150
+ : subscribeRemote(this.source, this.topic, handler, options);
151
+ return () => {
152
+ if (stopped)
153
+ return;
154
+ stopped = true;
155
+ unsubscribe();
156
+ };
157
+ }
158
+ }
159
+ //# sourceMappingURL=feed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feed.js","sourceRoot":"","sources":["../../src/storage/feed.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-queue.d.ts","sourceRoot":"","sources":["../../src/storage/file-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,EAAqB,KAAK,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtF,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE9D,0CAA0C;AAC1C,qBAAa,cAAe,YAAW,UAAU;IAKnC,QAAQ,CAAC,IAAI,EAAE,MAAM;IAJjC,gDAAgD;IAChD,OAAO,CAAC,KAAK,CAAuC;IAEpD,sFAAsF;IACtF,YAAqB,IAAI,EAAE,MAAM,EAAI;IAErC,IAAI,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAyBjC;IAED,MAAM,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhD;IAED,OAAO,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpD;IAED,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAErB;IAED,OAAO,CAAC,KAAK;IAab,4DAA4D;YAC9C,KAAK;IAYnB,OAAO,CAAC,MAAM;CAKf"}
1
+ {"version":3,"file":"file-queue.d.ts","sourceRoot":"","sources":["../../src/storage/file-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,EAAqB,KAAK,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtF,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE9D,0CAA0C;AAC1C,qBAAa,cAAe,YAAW,UAAU;IAKnC,QAAQ,CAAC,IAAI,EAAE,MAAM;IAJjC,gDAAgD;IAChD,OAAO,CAAC,KAAK,CAAuC;IAEpD,sFAAsF;IACtF,YAAqB,IAAI,EAAE,MAAM,EAAI;IAErC,IAAI,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CA0BjC;IAED,MAAM,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhD;IAED,OAAO,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpD;IAED,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAErB;IAED,OAAO,CAAC,KAAK;IAab,4DAA4D;YAC9C,KAAK;IAYnB,OAAO,CAAC,MAAM;CAKf"}
@@ -38,7 +38,8 @@ export class FileQueueStore {
38
38
  const lines = text.split("\n");
39
39
  // The text after the last newline is a part of a line, or empty
40
40
  const tail = lines.pop() ?? "";
41
- const operations = lines.filter((line) => line.trim() !== "").map((line, index) => this.parse(line, index + 1));
41
+ // Each line keeps its number in the file, so an error names the right line after blank lines
42
+ const operations = lines.flatMap((line, index) => (line.trim() === "" ? [] : [this.parse(line, index + 1)]));
42
43
  if (tail.trim() !== "") {
43
44
  let last;
44
45
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"file-queue.js","sourceRoot":"","sources":["../../src/storage/file-queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-queue.js","sourceRoot":"","sources":["../../src/storage/file-queue.ts"],"names":[],"mappings":"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"}