@semics-tech/mongolite 1.3.0 → 1.4.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.
Files changed (63) hide show
  1. package/README.md +79 -21
  2. package/dist/cjs/collection.js +8 -1
  3. package/dist/cjs/index.js +108 -1
  4. package/dist/cjs/mongo-client.js +18 -1
  5. package/dist/cjs/server.js +164 -0
  6. package/dist/cjs/sync/commands.js +126 -0
  7. package/dist/cjs/sync/diff.js +174 -0
  8. package/dist/cjs/sync/httpSink.js +159 -0
  9. package/dist/cjs/sync/index.js +40 -0
  10. package/dist/cjs/sync/mongoExecutor.js +306 -0
  11. package/dist/cjs/sync/mongoSink.js +161 -0
  12. package/dist/cjs/sync/outbox.js +358 -0
  13. package/dist/cjs/sync/protocol.js +177 -0
  14. package/dist/cjs/sync/replicator.js +747 -0
  15. package/dist/cjs/sync/shadow.js +178 -0
  16. package/dist/cjs/sync/types.js +2 -0
  17. package/dist/cloudflare.d.ts +1 -1
  18. package/dist/cloudflare.js.map +1 -1
  19. package/dist/collection.js +8 -1
  20. package/dist/collection.js.map +1 -1
  21. package/dist/index.d.ts +68 -2
  22. package/dist/index.js +96 -1
  23. package/dist/index.js.map +1 -1
  24. package/dist/mongo-client.d.ts +13 -0
  25. package/dist/mongo-client.js +18 -1
  26. package/dist/mongo-client.js.map +1 -1
  27. package/dist/server.d.ts +97 -0
  28. package/dist/server.js +158 -0
  29. package/dist/server.js.map +1 -0
  30. package/dist/sync/commands.d.ts +49 -0
  31. package/dist/sync/commands.js +118 -0
  32. package/dist/sync/commands.js.map +1 -0
  33. package/dist/sync/diff.d.ts +55 -0
  34. package/dist/sync/diff.js +169 -0
  35. package/dist/sync/diff.js.map +1 -0
  36. package/dist/sync/httpSink.d.ts +93 -0
  37. package/dist/sync/httpSink.js +155 -0
  38. package/dist/sync/httpSink.js.map +1 -0
  39. package/dist/sync/index.d.ts +17 -0
  40. package/dist/sync/index.js +10 -0
  41. package/dist/sync/index.js.map +1 -0
  42. package/dist/sync/mongoExecutor.d.ts +37 -0
  43. package/dist/sync/mongoExecutor.js +302 -0
  44. package/dist/sync/mongoExecutor.js.map +1 -0
  45. package/dist/sync/mongoSink.d.ts +109 -0
  46. package/dist/sync/mongoSink.js +123 -0
  47. package/dist/sync/mongoSink.js.map +1 -0
  48. package/dist/sync/outbox.d.ts +120 -0
  49. package/dist/sync/outbox.js +355 -0
  50. package/dist/sync/outbox.js.map +1 -0
  51. package/dist/sync/protocol.d.ts +93 -0
  52. package/dist/sync/protocol.js +168 -0
  53. package/dist/sync/protocol.js.map +1 -0
  54. package/dist/sync/replicator.d.ts +177 -0
  55. package/dist/sync/replicator.js +744 -0
  56. package/dist/sync/replicator.js.map +1 -0
  57. package/dist/sync/shadow.d.ts +54 -0
  58. package/dist/sync/shadow.js +173 -0
  59. package/dist/sync/shadow.js.map +1 -0
  60. package/dist/sync/types.d.ts +388 -0
  61. package/dist/sync/types.js +2 -0
  62. package/dist/sync/types.js.map +1 -0
  63. package/package.json +15 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replicator.js","sourceRoot":"","sources":["../../src/sync/replicator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import type { IDatabaseAdapter } from '../db.js';
2
+ export declare const SHADOW_TABLE = "__mongolite_sync_shadow__";
3
+ /** The last-known server state of one document. */
4
+ export interface ShadowEntry {
5
+ collection: string;
6
+ documentId: string;
7
+ /** Server `_v` when this was captured. `null` when the document predates versioning. */
8
+ baseVersion: number | null;
9
+ /** The server document with its BSON types intact. */
10
+ serverDocument: Record<string, unknown>;
11
+ /**
12
+ * The same document flattened to the shape the local store would hold, minus
13
+ * replication's bookkeeping fields — the side of the comparison a local document can
14
+ * meaningfully be diffed against.
15
+ */
16
+ projection: Record<string, unknown>;
17
+ }
18
+ /**
19
+ * Flattens a document to exactly the representation the local store would produce.
20
+ *
21
+ * This is deliberately the *same* lossy transform the collection tables apply
22
+ * (`JSON.stringify`), rather than an approximation of it: a server `Date` projects to
23
+ * the identical ISO string the local row holds, so the two compare equal and the field
24
+ * stays out of the diff. Any drift between this and the storage encoding would show up
25
+ * as phantom changes pushed on every sync.
26
+ */
27
+ export declare function projectToLocalShape(document: Record<string, unknown>): Record<string, unknown>;
28
+ /**
29
+ * The projection a local document is compared against: the server document flattened
30
+ * to local shape, with replication's own bookkeeping fields removed.
31
+ */
32
+ export declare function projectForComparison(document: Record<string, unknown>): Record<string, unknown>;
33
+ export declare class SyncShadow {
34
+ private readonly db;
35
+ private readonly replicator;
36
+ private schemaReady;
37
+ constructor(db: IDatabaseAdapter, replicator: string);
38
+ /** Creates the shadow table. Idempotent. */
39
+ ensureSchema(): Promise<void>;
40
+ private createSchema;
41
+ /**
42
+ * Loads the shadow entries for a set of documents in one collection.
43
+ * Missing ids simply do not appear — those documents have never been upstream.
44
+ */
45
+ load(collection: string, documentIds: string[]): Promise<Map<string, ShadowEntry>>;
46
+ /** Records the server state of a document after a successful write or a re-read. */
47
+ put(collection: string, documentId: string, baseVersion: number | null, serverDocument: Record<string, unknown>): Promise<void>;
48
+ /** Drops a document's shadow — it no longer exists upstream. */
49
+ remove(collection: string, documentId: string): Promise<void>;
50
+ /** Number of shadowed documents, for diagnostics. */
51
+ size(): Promise<number>;
52
+ /** Forgets every shadow for this replicator, forcing the next push to re-seed. */
53
+ clear(): Promise<number>;
54
+ }
@@ -0,0 +1,173 @@
1
+ /**
2
+ * The shadow store: the last-known **server** state of each replicated document.
3
+ *
4
+ * It exists because the local store cannot represent MongoDB's type system. Documents
5
+ * are persisted as plain `JSON.stringify`, so a `Date` becomes an ISO string, an
6
+ * `ObjectId` becomes hex, and `Binary`/`Decimal128` degrade to unusable structural
7
+ * objects. Pushing a whole local document back would therefore rewrite the upstream
8
+ * document in that degraded form.
9
+ *
10
+ * Keeping a verbatim copy of the server document solves three problems at once:
11
+ *
12
+ * 1. **Conflict base** — the `_v` a compare-and-swap asserts against.
13
+ * 2. **Type preservation** — fields the application never touched locally are simply
14
+ * absent from the diff, so the upstream values survive intact.
15
+ * 3. **Minimal writes** — pushes become `$set`/`$unset` of what actually changed,
16
+ * so a local edit stops clobbering fields other writers changed.
17
+ *
18
+ * Documents are stored as canonical Extended JSON. That encoding is safe **only**
19
+ * because it lives here and never in a collection table: the query, sort and index
20
+ * layer reads collection data with `json_extract` and assumes bare scalars, so
21
+ * encoding values there would break range queries and indexes wholesale.
22
+ */
23
+ import { EJSON } from 'bson';
24
+ export const SHADOW_TABLE = '__mongolite_sync_shadow__';
25
+ /**
26
+ * Bookkeeping fields replication maintains on upstream documents. They are stripped
27
+ * from the projection so they never reach local documents and never show up as a
28
+ * spurious change to push back.
29
+ */
30
+ const SYNC_FIELDS = new Set(['_v', '_updatedAt']);
31
+ /** Millisecond epoch as a SQL expression — portable across SQLite builds. */
32
+ const NOW_MS_SQL = `CAST((julianday('now') - 2440587.5) * 86400000.0 AS INTEGER)`;
33
+ /**
34
+ * Flattens a document to exactly the representation the local store would produce.
35
+ *
36
+ * This is deliberately the *same* lossy transform the collection tables apply
37
+ * (`JSON.stringify`), rather than an approximation of it: a server `Date` projects to
38
+ * the identical ISO string the local row holds, so the two compare equal and the field
39
+ * stays out of the diff. Any drift between this and the storage encoding would show up
40
+ * as phantom changes pushed on every sync.
41
+ */
42
+ export function projectToLocalShape(document) {
43
+ return JSON.parse(JSON.stringify(document));
44
+ }
45
+ /**
46
+ * The projection a local document is compared against: the server document flattened
47
+ * to local shape, with replication's own bookkeeping fields removed.
48
+ */
49
+ export function projectForComparison(document) {
50
+ const projected = projectToLocalShape(document);
51
+ for (const field of SYNC_FIELDS)
52
+ delete projected[field];
53
+ return projected;
54
+ }
55
+ export class SyncShadow {
56
+ constructor(db, replicator) {
57
+ this.db = db;
58
+ this.replicator = replicator;
59
+ this.schemaReady = null;
60
+ }
61
+ /** Creates the shadow table. Idempotent. */
62
+ async ensureSchema() {
63
+ if (!this.schemaReady) {
64
+ this.schemaReady = this.createSchema().catch((err) => {
65
+ // Let a later call retry rather than caching the failure forever.
66
+ this.schemaReady = null;
67
+ throw err;
68
+ });
69
+ }
70
+ return this.schemaReady;
71
+ }
72
+ async createSchema() {
73
+ await this.db.exec(`
74
+ CREATE TABLE IF NOT EXISTS ${SHADOW_TABLE} (
75
+ replicator TEXT NOT NULL,
76
+ collection_name TEXT NOT NULL,
77
+ document_id TEXT NOT NULL,
78
+ base_version INTEGER,
79
+ server_document TEXT,
80
+ updated_at INTEGER NOT NULL,
81
+ PRIMARY KEY (replicator, collection_name, document_id)
82
+ );
83
+ `);
84
+ }
85
+ /**
86
+ * Loads the shadow entries for a set of documents in one collection.
87
+ * Missing ids simply do not appear — those documents have never been upstream.
88
+ */
89
+ async load(collection, documentIds) {
90
+ await this.ensureSchema();
91
+ const found = new Map();
92
+ if (documentIds.length === 0)
93
+ return found;
94
+ // Chunked to stay well clear of SQLite's bound-parameter limit.
95
+ const chunkSize = 400;
96
+ for (let i = 0; i < documentIds.length; i += chunkSize) {
97
+ const chunk = documentIds.slice(i, i + chunkSize);
98
+ const placeholders = chunk.map(() => '?').join(', ');
99
+ const rows = await this.db.all(`SELECT document_id, base_version, server_document
100
+ FROM ${SHADOW_TABLE}
101
+ WHERE replicator = ? AND collection_name = ? AND document_id IN (${placeholders})`, [this.replicator, collection, ...chunk]);
102
+ for (const row of rows) {
103
+ const serverDocument = decodeServerDocument(row.server_document);
104
+ if (!serverDocument)
105
+ continue;
106
+ found.set(row.document_id, {
107
+ collection,
108
+ documentId: row.document_id,
109
+ baseVersion: row.base_version === null ? null : Number(row.base_version),
110
+ serverDocument,
111
+ projection: projectForComparison(serverDocument),
112
+ });
113
+ }
114
+ }
115
+ return found;
116
+ }
117
+ /** Records the server state of a document after a successful write or a re-read. */
118
+ async put(collection, documentId, baseVersion, serverDocument) {
119
+ await this.ensureSchema();
120
+ await this.db.run(`INSERT INTO ${SHADOW_TABLE}
121
+ (replicator, collection_name, document_id, base_version, server_document, updated_at)
122
+ VALUES (?, ?, ?, ?, ?, ${NOW_MS_SQL})
123
+ ON CONFLICT (replicator, collection_name, document_id) DO UPDATE SET
124
+ base_version = excluded.base_version,
125
+ server_document = excluded.server_document,
126
+ updated_at = excluded.updated_at`, [
127
+ this.replicator,
128
+ collection,
129
+ documentId,
130
+ baseVersion,
131
+ EJSON.stringify(serverDocument, { relaxed: false }),
132
+ ]);
133
+ }
134
+ /** Drops a document's shadow — it no longer exists upstream. */
135
+ async remove(collection, documentId) {
136
+ await this.ensureSchema();
137
+ await this.db.run(`DELETE FROM ${SHADOW_TABLE}
138
+ WHERE replicator = ? AND collection_name = ? AND document_id = ?`, [this.replicator, collection, documentId]);
139
+ }
140
+ /** Number of shadowed documents, for diagnostics. */
141
+ async size() {
142
+ await this.ensureSchema();
143
+ const row = await this.db.get(`SELECT COUNT(*) AS total FROM ${SHADOW_TABLE} WHERE replicator = ?`, [this.replicator]);
144
+ return Number(row?.total ?? 0);
145
+ }
146
+ /** Forgets every shadow for this replicator, forcing the next push to re-seed. */
147
+ async clear() {
148
+ await this.ensureSchema();
149
+ const result = await this.db.run(`DELETE FROM ${SHADOW_TABLE} WHERE replicator = ?`, [
150
+ this.replicator,
151
+ ]);
152
+ return result.changes;
153
+ }
154
+ }
155
+ /**
156
+ * Decodes a stored server document. Returns `null` if the row is unreadable, so a
157
+ * corrupt shadow degrades to "never seen upstream" — the document is re-seeded rather
158
+ * than crashing replication.
159
+ */
160
+ function decodeServerDocument(encoded) {
161
+ if (encoded === null || encoded === undefined)
162
+ return null;
163
+ try {
164
+ const parsed = EJSON.parse(encoded, { relaxed: false });
165
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed))
166
+ return null;
167
+ return parsed;
168
+ }
169
+ catch {
170
+ return null;
171
+ }
172
+ }
173
+ //# sourceMappingURL=shadow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadow.js","sourceRoot":"","sources":["../../src/sync/shadow.ts"],"names":[],"mappings":"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"}