@catalyst-cloud/sdk 0.8.5 → 0.8.7
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/node.d.ts +1 -1
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +5 -1
- package/dist/node.js.map +1 -1
- package/dist/replica/browser/apply.d.ts +7 -1
- package/dist/replica/browser/apply.d.ts.map +1 -1
- package/dist/replica/browser/apply.js +8 -2
- package/dist/replica/browser/apply.js.map +1 -1
- package/dist/replica/browser/ports.d.ts +12 -0
- package/dist/replica/browser/ports.d.ts.map +1 -1
- package/dist/replica/browser/ports.js +11 -0
- package/dist/replica/browser/ports.js.map +1 -1
- package/dist/replica/browser/worker-core.d.ts.map +1 -1
- package/dist/replica/browser/worker-core.js +5 -2
- package/dist/replica/browser/worker-core.js.map +1 -1
- package/dist/replica/catalyst-replica.d.ts +60 -3
- package/dist/replica/catalyst-replica.d.ts.map +1 -1
- package/dist/replica/catalyst-replica.js +244 -5
- package/dist/replica/catalyst-replica.js.map +1 -1
- package/dist/replica/known-columns.d.ts +15 -0
- package/dist/replica/known-columns.d.ts.map +1 -0
- package/dist/replica/known-columns.js +55 -0
- package/dist/replica/known-columns.js.map +1 -0
- package/package.json +1 -1
package/dist/node.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { CatalystReplica, type CatalystReplicaOptions, type CatalystReplicaReadOnlyOptions, } from "./replica/catalyst-replica.js";
|
|
1
|
+
export { CatalystReplica, ReplicaAccountMismatchError, type AccountSource, type CatalystReplicaOptions, type CatalystReplicaReadOnlyOptions, } from "./replica/catalyst-replica.js";
|
|
2
2
|
export { bunSqliteEngine, bunSqliteReadonlyEngine, nodeSqliteEngine, nodeSqliteReadonlyEngine, betterSqlite3Engine, betterSqlite3ReadonlyEngine, autoDetectEngine, autoDetectReadonlyEngine, type ReplicaEngine, type EngineFactory, type EngineBindable, type BetterSqlite3Driver, } from "./replica/engine.js";
|
|
3
3
|
export { claimWriterLock, type WriterGuardOptions, type WriterLockHandle, } from "./replica/writer-lock.js";
|
|
4
4
|
export { LiveSyncClient, type AuthStrategy, type LiveSyncStatus, type LogLevel, type WebSocketLike, type WebSocketFactory, } from "./live-sync-client.js";
|
package/dist/node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,eAAe,
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,eAAe,EAIf,2BAA2B,EAC3B,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,8BAA8B,GACpC,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC3B,gBAAgB,EAChB,wBAAwB,EACxB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,eAAe,EACf,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,gBAAgB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,UAAU,EACV,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,WAAW,GACjB,MAAM,YAAY,CAAC;AAKpB,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,WAAW,CAAC;AAGnB,YAAY,EACV,WAAW,EACX,QAAQ,EACR,SAAS,EACT,eAAe,EACf,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/node.js
CHANGED
|
@@ -8,7 +8,11 @@
|
|
|
8
8
|
//
|
|
9
9
|
// The root entrypoint ("@catalyst-cloud/sdk") stays the transport-only, isomorphic surface; this
|
|
10
10
|
// subpath adds the replica. Import this only from a node/bun backend.
|
|
11
|
-
export { CatalystReplica,
|
|
11
|
+
export { CatalystReplica,
|
|
12
|
+
// CTC-582 — exported so a caller can tell "you are pointed at the wrong tenant's database" (a
|
|
13
|
+
// config fault that must page a human) apart from a transient open failure (retry). A consumer
|
|
14
|
+
// that cannot name the difference will retry a misconfiguration forever.
|
|
15
|
+
ReplicaAccountMismatchError, } from "./replica/catalyst-replica.js";
|
|
12
16
|
export { bunSqliteEngine, bunSqliteReadonlyEngine, nodeSqliteEngine, nodeSqliteReadonlyEngine, betterSqlite3Engine, betterSqlite3ReadonlyEngine, autoDetectEngine, autoDetectReadonlyEngine, } from "./replica/engine.js";
|
|
13
17
|
export { claimWriterLock, } from "./replica/writer-lock.js";
|
|
14
18
|
// Re-export the transport surface so a consumer can stay on one import.
|
package/dist/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,gGAAgG;AAChG,uGAAuG;AACvG,qGAAqG;AACrG,sGAAsG;AACtG,sFAAsF;AACtF,EAAE;AACF,iGAAiG;AACjG,sEAAsE;AAEtE,OAAO,EACL,eAAe,
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,gGAAgG;AAChG,uGAAuG;AACvG,qGAAqG;AACrG,sGAAsG;AACtG,sFAAsF;AACtF,EAAE;AACF,iGAAiG;AACjG,sEAAsE;AAEtE,OAAO,EACL,eAAe;AACf,8FAA8F;AAC9F,+FAA+F;AAC/F,yEAAyE;AACzE,2BAA2B,GAI5B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC3B,gBAAgB,EAChB,wBAAwB,GAKzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,eAAe,GAGhB,MAAM,0BAA0B,CAAC;AAElC,wEAAwE;AACxE,OAAO,EACL,cAAc,GAMf,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,UAAU,GAKX,MAAM,YAAY,CAAC;AAEpB,kGAAkG;AAClG,sGAAsG;AACtG,kFAAkF;AAClF,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,WAAW,EACX,YAAY,EACZ,mBAAmB,GAIpB,MAAM,WAAW,CAAC;AAenB,+FAA+F;AAC/F,mGAAmG;AACnG,sDAAsD;AACtD,8EAA8E;AAC9E,OAAO,EAAE,YAAY,EAAyB,MAAM,wBAAwB,CAAC"}
|
|
@@ -24,6 +24,12 @@ export declare function clearCursor(db: ReplicaDb): void;
|
|
|
24
24
|
* Apply ONE change-feed record to the replica via the shared, schema-driven write path. Returns true
|
|
25
25
|
* iff a row was actually written (a stale upsert rejected by the updated_at guard, or a delete of an
|
|
26
26
|
* already-absent row, returns false).
|
|
27
|
+
*
|
|
28
|
+
* `knownColumns` (CTC-603): the caller's PRAGMA-derived column set for `change.entity`
|
|
29
|
+
* (`OpenedReplica.knownColumnsByEntity.get(change.entity)`), overriding
|
|
30
|
+
* @catalyst-cloud/replicate's own bundled-schema default — see that map's doc for why. Omit (or pass
|
|
31
|
+
* `undefined`, the entity-not-found case) to fall back to replicate's default, same as before this
|
|
32
|
+
* override existed.
|
|
27
33
|
*/
|
|
28
|
-
export declare function applyChange(db: ReplicaDb, change: WireChange): boolean;
|
|
34
|
+
export declare function applyChange(db: ReplicaDb, change: WireChange, knownColumns?: ReadonlySet<string>): boolean;
|
|
29
35
|
//# sourceMappingURL=apply.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/replica/browser/apply.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAEnD;AAED,yFAAyF;AACzF,wBAAgB,SAAS,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAEtD;AAED,wEAAwE;AACxE,wBAAgB,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAE7D;AAKD,iGAAiG;AACjG,wBAAgB,WAAW,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAIxD;AAED,sGAAsG;AACtG,wBAAgB,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMjE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAE/C;AAED
|
|
1
|
+
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/replica/browser/apply.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAEnD;AAED,yFAAyF;AACzF,wBAAgB,SAAS,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAEtD;AAED,wEAAwE;AACxE,wBAAgB,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAE7D;AAKD,iGAAiG;AACjG,wBAAgB,WAAW,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAIxD;AAED,sGAAsG;AACtG,wBAAgB,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMjE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAE/C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,UAAU,EAClB,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GACjC,OAAO,CAET"}
|
|
@@ -52,8 +52,14 @@ export function clearCursor(db) {
|
|
|
52
52
|
* Apply ONE change-feed record to the replica via the shared, schema-driven write path. Returns true
|
|
53
53
|
* iff a row was actually written (a stale upsert rejected by the updated_at guard, or a delete of an
|
|
54
54
|
* already-absent row, returns false).
|
|
55
|
+
*
|
|
56
|
+
* `knownColumns` (CTC-603): the caller's PRAGMA-derived column set for `change.entity`
|
|
57
|
+
* (`OpenedReplica.knownColumnsByEntity.get(change.entity)`), overriding
|
|
58
|
+
* @catalyst-cloud/replicate's own bundled-schema default — see that map's doc for why. Omit (or pass
|
|
59
|
+
* `undefined`, the entity-not-found case) to fall back to replicate's default, same as before this
|
|
60
|
+
* override existed.
|
|
55
61
|
*/
|
|
56
|
-
export function applyChange(db, change) {
|
|
57
|
-
return applyDelta(db, change, toBindable);
|
|
62
|
+
export function applyChange(db, change, knownColumns) {
|
|
63
|
+
return applyDelta(db, change, toBindable, { knownColumns });
|
|
58
64
|
}
|
|
59
65
|
//# sourceMappingURL=apply.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/replica/browser/apply.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,gGAAgG;AAChG,sGAAsG;AACtG,yGAAyG;AACzG,mGAAmG;AACnG,yFAAyF;AACzF,EAAE;AACF,wGAAwG;AACxG,+FAA+F;AAC/F,EAAE;AACF,yGAAyG;AAEzG,OAAO,EACL,UAAU,EACV,SAAS,IAAI,gBAAgB,EAC7B,SAAS,IAAI,gBAAgB,EAC7B,eAAe,IAAI,eAAe,GACnC,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,EAAa;IAC3C,eAAe,CAAC,EAAE,CAAC,CAAC;AACtB,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,SAAS,CAAC,EAAa;IACrC,OAAO,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,SAAS,CAAC,EAAa,EAAE,MAAc;IACrD,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAC3C,CAAC;AAED,2EAA2E;AAC3E,MAAM,YAAY,GAAG,UAAU,CAAC;AAEhC,iGAAiG;AACjG,MAAM,UAAU,WAAW,CAAC,EAAa;IACvC,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,2CAA2C,EAAE,YAAY,CAAC,CAAC;IAC9E,MAAM,CAAC,GAAG,GAAG,EAAE,KAAK,CAAC;IACrB,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,WAAW,CAAC,EAAa,EAAE,QAAgB;IACzD,EAAE,CAAC,GAAG,CACJ,wGAAwG,EACxG,YAAY,EACZ,QAAQ,CACT,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,EAAa;IACvC,EAAE,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;AACvD,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/replica/browser/apply.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,gGAAgG;AAChG,sGAAsG;AACtG,yGAAyG;AACzG,mGAAmG;AACnG,yFAAyF;AACzF,EAAE;AACF,wGAAwG;AACxG,+FAA+F;AAC/F,EAAE;AACF,yGAAyG;AAEzG,OAAO,EACL,UAAU,EACV,SAAS,IAAI,gBAAgB,EAC7B,SAAS,IAAI,gBAAgB,EAC7B,eAAe,IAAI,eAAe,GACnC,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,EAAa;IAC3C,eAAe,CAAC,EAAE,CAAC,CAAC;AACtB,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,SAAS,CAAC,EAAa;IACrC,OAAO,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,SAAS,CAAC,EAAa,EAAE,MAAc;IACrD,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAC3C,CAAC;AAED,2EAA2E;AAC3E,MAAM,YAAY,GAAG,UAAU,CAAC;AAEhC,iGAAiG;AACjG,MAAM,UAAU,WAAW,CAAC,EAAa;IACvC,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,2CAA2C,EAAE,YAAY,CAAC,CAAC;IAC9E,MAAM,CAAC,GAAG,GAAG,EAAE,KAAK,CAAC;IACrB,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,WAAW,CAAC,EAAa,EAAE,QAAgB;IACzD,EAAE,CAAC,GAAG,CACJ,wGAAwG,EACxG,YAAY,EACZ,QAAQ,CACT,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,EAAa;IACvC,EAAE,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CACzB,EAAa,EACb,MAAkB,EAClB,YAAkC;IAElC,OAAO,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;AAC9D,CAAC"}
|
|
@@ -11,6 +11,10 @@ export interface ReplicaDb {
|
|
|
11
11
|
run(sql: string, ...bindings: SqlValue[]): number;
|
|
12
12
|
/** Run a single-row query; returns the first row as an object, or undefined. */
|
|
13
13
|
get(sql: string, ...bindings: SqlValue[]): Record<string, SqlValue> | undefined;
|
|
14
|
+
/** Run a MULTI-row query; returns every row as an object. CTC-603: the port capability
|
|
15
|
+
* `buildKnownColumnsByTable` needs to enumerate `sqlite_master` + run `PRAGMA table_info(...)` —
|
|
16
|
+
* the node engine's `ReplicaEngine.all` twin. */
|
|
17
|
+
all(sql: string, ...bindings: SqlValue[]): Record<string, SqlValue>[];
|
|
14
18
|
/** Wrap `fn` in a transaction (BEGIN/COMMIT; ROLLBACK + rethrow on error). */
|
|
15
19
|
transaction<T>(fn: () => T): T;
|
|
16
20
|
}
|
|
@@ -26,6 +30,14 @@ export interface OpenedReplica {
|
|
|
26
30
|
readonly write: ReplicaDb;
|
|
27
31
|
/** the underlying OO1 db handle (for close / capacity introspection). */
|
|
28
32
|
readonly db: Database;
|
|
33
|
+
/**
|
|
34
|
+
* CTC-603: per-entity `PRAGMA table_info`-derived column sets — the ACTUAL local table shape, built
|
|
35
|
+
* ONCE here (right after migrations run), not @catalyst-cloud/replicate's (or this SDK's own)
|
|
36
|
+
* bundled @catalyst-cloud/schema copy. Passed as `ApplyOptions.knownColumns` at every `applyChange`
|
|
37
|
+
* call site (worker-core.ts) so a dropped/unknown column reflects what SQLite itself reports the
|
|
38
|
+
* table having, not which package's schema version created it.
|
|
39
|
+
*/
|
|
40
|
+
readonly knownColumnsByEntity: ReadonlyMap<string, ReadonlySet<string>>;
|
|
29
41
|
/** release the handle (under OPFS SAHPool this frees the SyncAccessHandles for another tab). */
|
|
30
42
|
close(): void;
|
|
31
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../../src/replica/browser/ports.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../../src/replica/browser/ports.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAKxE;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,kFAAkF;IAClF,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAClD,gFAAgF;IAChF,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,SAAS,CAAC;IAChF;;sDAEkD;IAClD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;IACtE,8EAA8E;IAC9E,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;CAChC;AAED;;wCAEwC;AACxC,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,QAAQ,CAa/C;AAED,2FAA2F;AAC3F,MAAM,WAAW,aAAa;IAC5B,sGAAsG;IACtG,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,kFAAkF;IAClF,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,yEAAyE;IACzE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB;;;;;;OAMG;IACH,QAAQ,CAAC,oBAAoB,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IACxE,gGAAgG;IAChG,KAAK,IAAI,IAAI,CAAC;CACf;AAuBD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,GAAG,aAAa,CAkG9D"}
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
// • ReplicaDb (write) — run/get with positional bindings, for the apply path (apply.ts).
|
|
15
15
|
import { applyMigrations, MIRROR_MIGRATIONS } from "@catalyst-cloud/schema";
|
|
16
16
|
import { migrationsChangeRowShape } from "../migration-shape.js";
|
|
17
|
+
import { buildKnownColumnsByTable } from "../known-columns.js";
|
|
17
18
|
/** Coerce a wire JSON value to a sqlite-wasm-bindable scalar. Booleans → 0/1, nested objects → JSON
|
|
18
19
|
* text, undefined/null → null. Mirrors the node engine's `toBindable` so both replicas store the
|
|
19
20
|
* same bytes for the same wire row. */
|
|
@@ -88,6 +89,11 @@ export function buildOpenedReplica(db) {
|
|
|
88
89
|
});
|
|
89
90
|
return rows[0];
|
|
90
91
|
},
|
|
92
|
+
all: (sql, ...bindings) => db.exec(sql, {
|
|
93
|
+
bind: bindArgs(bindings),
|
|
94
|
+
rowMode: "object",
|
|
95
|
+
returnValue: "resultRows",
|
|
96
|
+
}),
|
|
91
97
|
transaction: (fn) => {
|
|
92
98
|
db.exec("BEGIN");
|
|
93
99
|
try {
|
|
@@ -134,10 +140,15 @@ export function buildOpenedReplica(db) {
|
|
|
134
140
|
if (readCursorRow(db) != null && migrationsChangeRowShape(appliedTags)) {
|
|
135
141
|
db.exec("DELETE FROM sync_meta WHERE key = 'cursor'");
|
|
136
142
|
}
|
|
143
|
+
// CTC-603: build the PRAGMA-derived known-columns map from the table shape migrations just produced
|
|
144
|
+
// — see OpenedReplica.knownColumnsByEntity's doc. `write` is already fully constructed above, so its
|
|
145
|
+
// `all` port is usable here.
|
|
146
|
+
const knownColumnsByEntity = buildKnownColumnsByTable(write);
|
|
137
147
|
return {
|
|
138
148
|
read,
|
|
139
149
|
write,
|
|
140
150
|
db,
|
|
151
|
+
knownColumnsByEntity,
|
|
141
152
|
close: () => db.close(),
|
|
142
153
|
};
|
|
143
154
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ports.js","sourceRoot":"","sources":["../../../src/replica/browser/ports.ts"],"names":[],"mappings":"AAAA,qGAAqG;AACrG,uGAAuG;AACvG,uGAAuG;AACvG,+DAA+D;AAC/D,EAAE;AACF,oGAAoG;AACpG,sGAAsG;AACtG,iGAAiG;AACjG,8FAA8F;AAC9F,oBAAoB;AACpB,EAAE;AACF,oFAAoF;AACpF,2EAA2E;AAC3E,8FAA8F;AAI9F,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAoB,MAAM,wBAAwB,CAAC;AAC9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"ports.js","sourceRoot":"","sources":["../../../src/replica/browser/ports.ts"],"names":[],"mappings":"AAAA,qGAAqG;AACrG,uGAAuG;AACvG,uGAAuG;AACvG,+DAA+D;AAC/D,EAAE;AACF,oGAAoG;AACpG,sGAAsG;AACtG,iGAAiG;AACjG,8FAA8F;AAC9F,oBAAoB;AACpB,EAAE;AACF,oFAAoF;AACpF,2EAA2E;AAC3E,8FAA8F;AAI9F,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAoB,MAAM,wBAAwB,CAAC;AAC9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAqB/D;;wCAEwC;AACxC,MAAM,UAAU,UAAU,CAAC,CAAU;IACnC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,OAAO,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IAC7D,2FAA2F;IAC3F,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,CAAC,YAAY,WAAW;QAAE,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC,YAAY,UAAU,EAAE,CAAC;QAC5B,iFAAiF;QACjF,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC;IAC1B,CAAC;IACD,kGAAkG;IAClG,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AAsBD,+FAA+F;AAC/F,SAAS,QAAQ,CAAC,QAAoB;IACpC,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACpD,CAAC;AAED;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,EAAY;IACjC,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,kDAAkD,EAAE;QACvE,OAAO,EAAE,QAAQ;QACjB,WAAW,EAAE,YAAY;KAC1B,CAA+B,CAAC;IACjC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IACzB,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAY;IAC7C,iGAAiG;IACjG,kGAAkG;IAClG,MAAM,IAAI,GAAgB;QACxB,IAAI,EAAE,CAAC,KAAa,EAAE,GAAG,QAAoB,EAAE,EAAE,CAAC,CAAC;YACjD,OAAO,EAAE,GAAG,EAAE,CACZ,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE;gBACb,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC;gBACxB,OAAO,EAAE,QAAQ;gBACjB,WAAW,EAAE,YAAY;aAC1B,CAA+B;SACnC,CAAC;KACH,CAAC;IAEF,wFAAwF;IACxF,MAAM,KAAK,GAAc;QACvB,GAAG,EAAE,CAAC,GAAW,EAAE,GAAG,QAAoB,EAAE,EAAE;YAC5C,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC3C,mFAAmF;YACnF,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC;QACD,GAAG,EAAE,CAAC,GAAW,EAAE,GAAG,QAAoB,EAAE,EAAE;YAC5C,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBACxB,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC;gBACxB,OAAO,EAAE,QAAQ;gBACjB,WAAW,EAAE,YAAY;aAC1B,CAA+B,CAAC;YACjC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,GAAG,EAAE,CAAC,GAAW,EAAE,GAAG,QAAoB,EAAE,EAAE,CAC5C,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC;YACxB,OAAO,EAAE,QAAQ;YACjB,WAAW,EAAE,YAAY;SAC1B,CAA+B;QAClC,WAAW,EAAE,CAAI,EAAW,EAAK,EAAE;YACjC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC;gBACjB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAClB,OAAO,GAAG,CAAC;YACb,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC;oBACH,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACtB,CAAC;gBAAC,MAAM,CAAC;oBACP,0FAA0F;gBAC5F,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;KACF,CAAC;IAEF,oGAAoG;IACpG,yGAAyG;IACzG,MAAM,gBAAgB,GAAgB;QACpC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;YACZ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;QACD,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CACb,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,CAE5D;KACJ,CAAC;IACF,MAAM,EAAE,WAAW,EAAE,GAAG,eAAe,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;IAE7E,gGAAgG;IAChG,gDAAgD;IAChD,EAAE,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;IAEnF,mGAAmG;IACnG,gGAAgG;IAChG,qGAAqG;IACrG,qGAAqG;IACrG,8DAA8D;IAC9D,EAAE;IACF,gGAAgG;IAChG,+FAA+F;IAC/F,8FAA8F;IAC9F,iGAAiG;IACjG,6FAA6F;IAC7F,kGAAkG;IAClG,kFAAkF;IAClF,IAAI,aAAa,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,wBAAwB,CAAC,WAAW,CAAC,EAAE,CAAC;QACvE,EAAE,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IACxD,CAAC;IAED,oGAAoG;IACpG,qGAAqG;IACrG,6BAA6B;IAC7B,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAE7D,OAAO;QACL,IAAI;QACJ,KAAK;QACL,EAAE;QACF,oBAAoB;QACpB,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE;KACxB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-core.d.ts","sourceRoot":"","sources":["../../../src/replica/browser/worker-core.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAYhD,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EAEf,MAAM,eAAe,CAAC;AAEvB,iGAAiG;AACjG,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAE7E,4GAA4G;AAC5G,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACnD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"worker-core.d.ts","sourceRoot":"","sources":["../../../src/replica/browser/worker-core.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAYhD,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EAEf,MAAM,eAAe,CAAC;AAEvB,iGAAiG;AACjG,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAE7E,4GAA4G;AAC5G,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACnD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,UAAU,CA8LhE"}
|
|
@@ -88,7 +88,9 @@ export function createWorkerCore(open) {
|
|
|
88
88
|
const r = requireReplica();
|
|
89
89
|
session = new SeedSession(r.write, {
|
|
90
90
|
truncate: truncateReplica,
|
|
91
|
-
|
|
91
|
+
// CTC-603: PRAGMA-derived knownColumns for the batch row's own entity, looked up per row —
|
|
92
|
+
// see OpenedReplica.knownColumnsByEntity's doc.
|
|
93
|
+
apply: (db, rec) => applyChange(db, rec, r.knownColumnsByEntity.get(rec.entity)),
|
|
92
94
|
setCursor,
|
|
93
95
|
});
|
|
94
96
|
session.begin();
|
|
@@ -137,7 +139,8 @@ export function createWorkerCore(open) {
|
|
|
137
139
|
// order, so an oldie always trails the original it duplicates.
|
|
138
140
|
if (rec.seq <= maxSeq)
|
|
139
141
|
continue;
|
|
140
|
-
|
|
142
|
+
// CTC-603: PRAGMA-derived knownColumns for this delta's own entity.
|
|
143
|
+
if (applyChange(r.write, rec, r.knownColumnsByEntity.get(rec.entity)))
|
|
141
144
|
applied++;
|
|
142
145
|
maxSeq = rec.seq;
|
|
143
146
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-core.js","sourceRoot":"","sources":["../../../src/replica/browser/worker-core.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"worker-core.js","sourceRoot":"","sources":["../../../src/replica/browser/worker-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,34 @@ import { type AuthStrategy, type LiveSyncStatus, type LogLevel, type WebSocketFa
|
|
|
4
4
|
import { type EngineFactory, type ReplicaEngine } from "./engine.js";
|
|
5
5
|
import { type WriterGuardOptions } from "./writer-lock.js";
|
|
6
6
|
import { type TelemetryConfig } from "../otel.js";
|
|
7
|
+
/**
|
|
8
|
+
* How confident the caller is that `account` is the account this replica should hold.
|
|
9
|
+
*
|
|
10
|
+
* `"declared"` — a human, a config file, or an explicit environment variable named it.
|
|
11
|
+
* `"default"` — nothing named it; the caller fell back to a built-in.
|
|
12
|
+
*/
|
|
13
|
+
export type AccountSource = "declared" | "default";
|
|
14
|
+
/**
|
|
15
|
+
* Thrown when a replica file already belongs to a DIFFERENT account than the one configured.
|
|
16
|
+
*
|
|
17
|
+
* Its own class, not a bare Error: a caller (host-sync, a supervisor) must be able to tell "you are
|
|
18
|
+
* pointed at the wrong tenant's database" apart from a transient open failure, because the remedies
|
|
19
|
+
* are opposite — one is a config fix that must page a human, the other is a retry.
|
|
20
|
+
*/
|
|
21
|
+
export declare class ReplicaAccountMismatchError extends Error {
|
|
22
|
+
readonly dbPath: string;
|
|
23
|
+
readonly storedAccount: string;
|
|
24
|
+
readonly configuredAccount: string;
|
|
25
|
+
/** How the STORED account got there — `declared` (someone asserted it) or `default` (nobody did).
|
|
26
|
+
* A caller needs this to tell "you are pointed at another tenant's replica" from "two builds
|
|
27
|
+
* disagree about the fallback account", which have different remedies. */
|
|
28
|
+
readonly storedAccountSource: AccountSource;
|
|
29
|
+
constructor(dbPath: string, storedAccount: string, configuredAccount: string,
|
|
30
|
+
/** How the STORED account got there — `declared` (someone asserted it) or `default` (nobody did).
|
|
31
|
+
* A caller needs this to tell "you are pointed at another tenant's replica" from "two builds
|
|
32
|
+
* disagree about the fallback account", which have different remedies. */
|
|
33
|
+
storedAccountSource?: AccountSource);
|
|
34
|
+
}
|
|
7
35
|
/**
|
|
8
36
|
* CTC-127's row-shape predicate. Defined in ./migration-shape.js so the BROWSER worker can use it too
|
|
9
37
|
* — this module top-level-imports ./engine.js, which imports `node:module`, so the browser cannot
|
|
@@ -16,6 +44,23 @@ export interface CatalystReplicaOptions {
|
|
|
16
44
|
baseUrl: string;
|
|
17
45
|
/** Tenant id = mirror name → `?account=` on every feed request. */
|
|
18
46
|
account: string;
|
|
47
|
+
/**
|
|
48
|
+
* CTC-582 — whether `account` above was DECLARED (a human, a config file, or an explicit env var
|
|
49
|
+
* named it) or merely DEFAULTED (nothing named it; you fell back to a built-in).
|
|
50
|
+
*
|
|
51
|
+
* ⛔ SET THIS TO `"declared"` ONLY WHEN IT IS TRUE. It is what licenses the account fence to REFUSE,
|
|
52
|
+
* and a refusal on a value nobody chose holds a host to a fallback it never agreed to. Measured on
|
|
53
|
+
* the live fleet during review: `cloud-sync.mjs` resolves
|
|
54
|
+
* `process.env.CATALYST_CLOUD_ACCOUNT || "tenant-0"` — env-only, never consulting config — and that
|
|
55
|
+
* variable is unset everywhere, so an unconditional stamp would have written `tenant-0` on 100% of
|
|
56
|
+
* hosts as though someone had asked for it.
|
|
57
|
+
*
|
|
58
|
+
* ⚠️ Omitted means `"default"`, the SAFE direction: a caller who really did declare but forgot this
|
|
59
|
+
* flag gets a weaker fence (a mismatch re-seeds instead of refusing), which costs strictness. The
|
|
60
|
+
* opposite default would convert every silent fallback in every existing caller into a permanent
|
|
61
|
+
* assertion, which costs correctness.
|
|
62
|
+
*/
|
|
63
|
+
accountSource?: AccountSource;
|
|
19
64
|
/** How to authorize: {kind:'token',token} (host bearer rides /connect as ?token= and /snapshot as
|
|
20
65
|
* Authorization) | {kind:'cookie'} (same-origin session cookie). */
|
|
21
66
|
auth: AuthStrategy;
|
|
@@ -164,10 +209,22 @@ export declare class CatalystReplica {
|
|
|
164
209
|
/** CTC-127: `table.column` keys already warned about (a mirror-ahead column this client's schema
|
|
165
210
|
* lacks), so the per-row drop signal warns ONCE, not per delta (a drifted seed would else spam). */
|
|
166
211
|
private readonly warnedDrift;
|
|
167
|
-
/**
|
|
168
|
-
*
|
|
169
|
-
*
|
|
212
|
+
/**
|
|
213
|
+
* CTC-603: per-entity `PRAGMA table_info`-derived column sets, built ONCE in `start()` right after
|
|
214
|
+
* `applyMigrations` — the ACTUAL local table shape, not @catalyst-cloud/replicate's (or this SDK's
|
|
215
|
+
* own) bundled @catalyst-cloud/schema copy. Looked up per `applyDelta` call via {@link applyOptsFor}.
|
|
216
|
+
* Empty (never populated) in read-only mode, where the write path is unreachable anyway.
|
|
217
|
+
*/
|
|
218
|
+
private knownColumnsByEntity;
|
|
219
|
+
/** CTC-127/CTC-603: hoisted apply options object, mutated (not reallocated) per call by
|
|
220
|
+
* {@link applyOptsFor} — the forward-compat column filter now gets the PRAGMA-derived override for
|
|
221
|
+
* the delta's own entity, plus the warn-once drift signal. Hoisted so the synchronous
|
|
222
|
+
* applyFrame/seed hot paths allocate no per-row options object. */
|
|
170
223
|
private readonly applyOpts;
|
|
224
|
+
/** Resolve {@link applyOpts} for one delta's entity: sets `knownColumns` to that entity's
|
|
225
|
+
* PRAGMA-derived set (or `undefined` when the entity's table wasn't found locally, which falls
|
|
226
|
+
* back to replicate's own bundled default — the safe direction, never stripping a row to PK-only). */
|
|
227
|
+
private applyOptsFor;
|
|
171
228
|
constructor(opts: CatalystReplicaOptions);
|
|
172
229
|
/**
|
|
173
230
|
* Open a CatalystReplica as a READ-ONLY READER over a file another process owns as the WRITER
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalyst-replica.d.ts","sourceRoot":"","sources":["../../src/replica/catalyst-replica.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"catalyst-replica.d.ts","sourceRoot":"","sources":["../../src/replica/catalyst-replica.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
// and the SAME @catalyst-cloud/schema MIRROR_MIGRATIONS.
|
|
20
20
|
import { applyMigrations, MIRROR_MIGRATIONS } from "@catalyst-cloud/schema";
|
|
21
21
|
import { migrationsChangeRowShape } from "./migration-shape.js";
|
|
22
|
+
import { buildKnownColumnsByTable } from "./known-columns.js";
|
|
22
23
|
import { applyDelta, truncateReplica, getCursor, setCursor, } from "@catalyst-cloud/replicate";
|
|
23
24
|
import { buildIssuesView, buildIssueDetail, buildPullsView, buildProjectsView, buildProjectDetail, buildInitiativesView, buildInitiativeDetail, } from "@catalyst-cloud/read-model";
|
|
24
25
|
import { LiveSyncClient, stripTrailingSlashes, } from "../live-sync-client.js";
|
|
@@ -31,6 +32,88 @@ import { NOOP_TELEMETRY, createTelemetry, CATALYST_ATTR, REPLICA_METRIC, REPLICA
|
|
|
31
32
|
const SYNC_META_DDL = `CREATE TABLE IF NOT EXISTS sync_meta (
|
|
32
33
|
key TEXT PRIMARY KEY, value TEXT
|
|
33
34
|
);`;
|
|
35
|
+
/** `sync_meta` key naming the account whose rows this file holds (CTC-582). */
|
|
36
|
+
const ACCOUNT_KEY = "account";
|
|
37
|
+
/**
|
|
38
|
+
* `sync_meta` key recording HOW the stamped account was arrived at (CTC-582 review, CTL).
|
|
39
|
+
*
|
|
40
|
+
* ⛔ THE STAMP WITHOUT THIS IS A TRAP, AND IT WAS MEASURED ON THE LIVE FLEET. The host's
|
|
41
|
+
* `cloud-sync.mjs` resolves `process.env.CATALYST_CLOUD_ACCOUNT || "tenant-0"` — env-only, it never
|
|
42
|
+
* consults config — and that variable is unset on every host. So the first open under a
|
|
43
|
+
* stamp-unconditionally build would have written `tenant-0` on 100% of the fleet: a value NOBODY
|
|
44
|
+
* DECLARED. The damage lands later, when a host legitimately becomes `tenant-3` and the fence refuses
|
|
45
|
+
* it from its OWN replica on the strength of an assertion no human or config ever made.
|
|
46
|
+
*
|
|
47
|
+
* ⭐ That is the defect this whole ticket is about, turned on itself: something meaning "nobody said"
|
|
48
|
+
* recorded as if it meant "somebody said this". A stamp that cannot express its own confidence is not
|
|
49
|
+
* a fence, it is a trap that happens to be pointed the right way today.
|
|
50
|
+
*/
|
|
51
|
+
const ACCOUNT_SOURCE_KEY = "account_source";
|
|
52
|
+
/**
|
|
53
|
+
* ⚠️ ABSENT MEANS `"default"`, NOT `"declared"` — the safe direction on omission.
|
|
54
|
+
*
|
|
55
|
+
* A caller that genuinely declared its account but forgets this option gets the WEAKER fence (a
|
|
56
|
+
* mismatch re-seeds instead of refusing): a lost opportunity to catch a misconfiguration loudly, but
|
|
57
|
+
* never wrong data. The opposite default converts every silent fallback in every existing caller into
|
|
58
|
+
* a permanent assertion — which is exactly the fleet-wide trap described above. When one direction
|
|
59
|
+
* costs strictness and the other costs correctness, omission must land on the first.
|
|
60
|
+
*/
|
|
61
|
+
const DEFAULT_ACCOUNT_SOURCE = "default";
|
|
62
|
+
/**
|
|
63
|
+
* Thrown when a replica file already belongs to a DIFFERENT account than the one configured.
|
|
64
|
+
*
|
|
65
|
+
* Its own class, not a bare Error: a caller (host-sync, a supervisor) must be able to tell "you are
|
|
66
|
+
* pointed at the wrong tenant's database" apart from a transient open failure, because the remedies
|
|
67
|
+
* are opposite — one is a config fix that must page a human, the other is a retry.
|
|
68
|
+
*/
|
|
69
|
+
export class ReplicaAccountMismatchError extends Error {
|
|
70
|
+
dbPath;
|
|
71
|
+
storedAccount;
|
|
72
|
+
configuredAccount;
|
|
73
|
+
storedAccountSource;
|
|
74
|
+
constructor(dbPath, storedAccount, configuredAccount,
|
|
75
|
+
/** How the STORED account got there — `declared` (someone asserted it) or `default` (nobody did).
|
|
76
|
+
* A caller needs this to tell "you are pointed at another tenant's replica" from "two builds
|
|
77
|
+
* disagree about the fallback account", which have different remedies. */
|
|
78
|
+
storedAccountSource = "declared") {
|
|
79
|
+
super(`CatalystReplica: refusing to open ${dbPath} — it holds account "${storedAccount}" ` +
|
|
80
|
+
`(${storedAccountSource}), but this writer is configured for "${configuredAccount}". ` +
|
|
81
|
+
(storedAccountSource === "default"
|
|
82
|
+
? `Neither account was declared, so nothing can be safely preferred — set ` +
|
|
83
|
+
`CATALYST_CLOUD_ACCOUNT (or the config equivalent) to say which is right. `
|
|
84
|
+
: `Check CATALYST_REPLICA_DB and the account this process was started for. `) +
|
|
85
|
+
`Nothing was written and the existing replica was left intact.`);
|
|
86
|
+
this.dbPath = dbPath;
|
|
87
|
+
this.storedAccount = storedAccount;
|
|
88
|
+
this.configuredAccount = configuredAccount;
|
|
89
|
+
this.storedAccountSource = storedAccountSource;
|
|
90
|
+
this.name = "ReplicaAccountMismatchError";
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Read the account stamp WITHOUT assuming `sync_meta` exists.
|
|
95
|
+
*
|
|
96
|
+
* ⚠️ This runs before `applyMigrations` and before `SYNC_META_DDL`, so on a cold file the table is
|
|
97
|
+
* genuinely absent and a bare SELECT would throw. Probing `sqlite_master` first keeps "no table yet"
|
|
98
|
+
* an ordinary answer instead of an exception that a `catch` would have to guess the meaning of.
|
|
99
|
+
*/
|
|
100
|
+
function readAccountStamp(engine) {
|
|
101
|
+
const table = engine.get("SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'sync_meta'");
|
|
102
|
+
if (table == null)
|
|
103
|
+
return null;
|
|
104
|
+
const read = (key) => {
|
|
105
|
+
const row = engine.get("SELECT value FROM sync_meta WHERE key = ?", key);
|
|
106
|
+
const v = row?.value;
|
|
107
|
+
return typeof v === "string" && v !== "" ? v : null;
|
|
108
|
+
};
|
|
109
|
+
const account = read(ACCOUNT_KEY);
|
|
110
|
+
if (account == null)
|
|
111
|
+
return null;
|
|
112
|
+
// ⚠️ A stamp with no source is one written by 0.8.7 before this review landed (unpublished, but a
|
|
113
|
+
// dev machine may hold one). Read it as `default` — the weaker claim — because we cannot know it
|
|
114
|
+
// was declared, and reading an unknown as the stronger claim is the very mistake being fixed.
|
|
115
|
+
return { account, source: read(ACCOUNT_SOURCE_KEY) === "declared" ? "declared" : "default" };
|
|
116
|
+
}
|
|
34
117
|
/** Rows per streamed seed transaction — bounds memory + fsync so a large tenant never OOMs the node/bun
|
|
35
118
|
* process the way host-sync's buffered `await res.text()` + `split("\n")` snapshot would. */
|
|
36
119
|
const SEED_BATCH_ROWS = 1000;
|
|
@@ -87,12 +170,27 @@ export class CatalystReplica {
|
|
|
87
170
|
/** CTC-127: `table.column` keys already warned about (a mirror-ahead column this client's schema
|
|
88
171
|
* lacks), so the per-row drop signal warns ONCE, not per delta (a drifted seed would else spam). */
|
|
89
172
|
warnedDrift = new Set();
|
|
90
|
-
/**
|
|
91
|
-
*
|
|
92
|
-
*
|
|
173
|
+
/**
|
|
174
|
+
* CTC-603: per-entity `PRAGMA table_info`-derived column sets, built ONCE in `start()` right after
|
|
175
|
+
* `applyMigrations` — the ACTUAL local table shape, not @catalyst-cloud/replicate's (or this SDK's
|
|
176
|
+
* own) bundled @catalyst-cloud/schema copy. Looked up per `applyDelta` call via {@link applyOptsFor}.
|
|
177
|
+
* Empty (never populated) in read-only mode, where the write path is unreachable anyway.
|
|
178
|
+
*/
|
|
179
|
+
knownColumnsByEntity = new Map();
|
|
180
|
+
/** CTC-127/CTC-603: hoisted apply options object, mutated (not reallocated) per call by
|
|
181
|
+
* {@link applyOptsFor} — the forward-compat column filter now gets the PRAGMA-derived override for
|
|
182
|
+
* the delta's own entity, plus the warn-once drift signal. Hoisted so the synchronous
|
|
183
|
+
* applyFrame/seed hot paths allocate no per-row options object. */
|
|
93
184
|
applyOpts = {
|
|
94
185
|
onDroppedColumns: (table, dropped) => this.reportDroppedColumns(table, dropped),
|
|
95
186
|
};
|
|
187
|
+
/** Resolve {@link applyOpts} for one delta's entity: sets `knownColumns` to that entity's
|
|
188
|
+
* PRAGMA-derived set (or `undefined` when the entity's table wasn't found locally, which falls
|
|
189
|
+
* back to replicate's own bundled default — the safe direction, never stripping a row to PK-only). */
|
|
190
|
+
applyOptsFor(entity) {
|
|
191
|
+
this.applyOpts.knownColumns = this.knownColumnsByEntity.get(entity);
|
|
192
|
+
return this.applyOpts;
|
|
193
|
+
}
|
|
96
194
|
constructor(opts) {
|
|
97
195
|
this.opts = opts;
|
|
98
196
|
this.baseUrl = stripTrailingSlashes(opts.baseUrl);
|
|
@@ -152,6 +250,67 @@ export class CatalystReplica {
|
|
|
152
250
|
this.writerLock = claimWriterLock(this.opts.dbPath, this.opts.writerGuard ?? {}, this.log);
|
|
153
251
|
const engine = await this.resolveEngine();
|
|
154
252
|
this.engine = engine;
|
|
253
|
+
// ── CTC-582: THE ACCOUNT FENCE ────────────────────────────────────────────────────────────────
|
|
254
|
+
//
|
|
255
|
+
// ⛔ THIS RUNS BEFORE `applyMigrations`, AND THAT ORDERING IS THE POINT. The acceptance criterion
|
|
256
|
+
// is that opening someone else's replica "refuses loudly and writes NOTHING". Migrations write —
|
|
257
|
+
// so a fence placed after them would already have altered another tenant's file before deciding
|
|
258
|
+
// it had no right to. There is nothing to read here that needs migrating first: the stamp lives
|
|
259
|
+
// in `sync_meta`, which is host-only bookkeeping, and `readAccountStamp` tolerates its absence.
|
|
260
|
+
//
|
|
261
|
+
// ⛔ AND IT REFUSES RATHER THAN REPAIRING. Re-seeding "to fix it" would destroy the other tenant's
|
|
262
|
+
// replica to resolve OUR misconfiguration — deleting real data to paper over a path typo.
|
|
263
|
+
//
|
|
264
|
+
// WHY THIS EXISTS AT ALL: today's fixed `~/catalyst/catalyst-replica.db` makes a wrong path
|
|
265
|
+
// harmless (one path, one file, everyone correct). CTL-1893 derives the path from the account, at
|
|
266
|
+
// which point a stale launchd plist or a typo'd override silently points account B's writer at
|
|
267
|
+
// account A's file — and the single-writer lock CANNOT object, because it is claimed as
|
|
268
|
+
// `dbPath + '.writer.lock'`: same path, same lock. It looks like correct exclusion while mixing
|
|
269
|
+
// tenants, and the output is plausible data rather than an error.
|
|
270
|
+
//
|
|
271
|
+
// ⚠️ COMPLEMENTARY TO CTL's HOST-SIDE GUARD, NOT A DUPLICATE OF IT. That guard compares an
|
|
272
|
+
// explicit `CATALYST_REPLICA_DB` against the path derived for the resolved account: it fails
|
|
273
|
+
// earlier and more legibly, using only host-local information. This one catches what no amount of
|
|
274
|
+
// host-local config checking can see — TWO DIFFERENT HOSTS sharing ONE file, each correctly
|
|
275
|
+
// configured on its own terms. Only the database knows whose data it holds.
|
|
276
|
+
// THE DECISION IS MADE HERE, IN FULL, AND WRITES NOTHING. Only its *consequences* are applied
|
|
277
|
+
// after the migrations below — because every refusal must leave the file byte-identical, and
|
|
278
|
+
// migrations write. Deciding in one place also keeps the four outcomes legible side by side
|
|
279
|
+
// instead of split across the migration boundary.
|
|
280
|
+
const stored = readAccountStamp(engine);
|
|
281
|
+
const mySource = this.opts.accountSource ?? DEFAULT_ACCOUNT_SOURCE;
|
|
282
|
+
/**
|
|
283
|
+
* `stamp` — no stamp yet: adopt this file.
|
|
284
|
+
* `keep` — already ours; nothing to do (or only a `default` → `declared` upgrade).
|
|
285
|
+
* `reseed` — the stamp is a DEFAULT that disagrees with a DECLARED account: a legitimate
|
|
286
|
+
* transition, so wipe and cold-seed rather than rename or refuse.
|
|
287
|
+
* `refuse` — either a DECLARED stamp disagrees (someone asserted this file is another
|
|
288
|
+
* tenant's), or two DEFAULTS disagree (nobody asserted anything, so nothing
|
|
289
|
+
* licenses deleting either).
|
|
290
|
+
*/
|
|
291
|
+
const verdict = stored == null
|
|
292
|
+
? "stamp"
|
|
293
|
+
: stored.account === this.opts.account
|
|
294
|
+
? "keep"
|
|
295
|
+
: stored.source === "declared" || mySource !== "declared"
|
|
296
|
+
? "refuse"
|
|
297
|
+
: "reseed";
|
|
298
|
+
if (verdict === "refuse") {
|
|
299
|
+
// Give the file back untouched: drop the handle and the lock before throwing, so a supervisor
|
|
300
|
+
// that restarts us doesn't leave a stale lock sitting on another tenant's replica.
|
|
301
|
+
this.log("error", "replica account mismatch — refusing to open", {
|
|
302
|
+
dbPath: this.opts.dbPath,
|
|
303
|
+
storedAccount: stored.account,
|
|
304
|
+
storedSource: stored.source,
|
|
305
|
+
configuredAccount: this.opts.account,
|
|
306
|
+
configuredSource: mySource,
|
|
307
|
+
});
|
|
308
|
+
engine.close();
|
|
309
|
+
this.engine = null;
|
|
310
|
+
this.writerLock?.release();
|
|
311
|
+
this.writerLock = null;
|
|
312
|
+
throw new ReplicaAccountMismatchError(this.opts.dbPath, stored.account, this.opts.account, stored.source);
|
|
313
|
+
}
|
|
155
314
|
this.writeDb = {
|
|
156
315
|
run: (sql, ...bindings) => engine.run(sql, ...bindings),
|
|
157
316
|
get: (sql, ...bindings) => engine.get(sql, ...bindings),
|
|
@@ -168,6 +327,86 @@ export class CatalystReplica {
|
|
|
168
327
|
};
|
|
169
328
|
const { appliedTags } = applyMigrations(migrationDb, MIRROR_MIGRATIONS);
|
|
170
329
|
engine.exec(SYNC_META_DDL);
|
|
330
|
+
// CTC-582, the other half: ADOPT an unstamped replica — never reject one.
|
|
331
|
+
//
|
|
332
|
+
// ⛔ ABSENT IS NOT MISMATCHED. Every replica seeded before this shipped has no stamp, so treating
|
|
333
|
+
// a missing one as a conflict would refuse to open on every existing host the moment they
|
|
334
|
+
// upgrade — bricking the fleet to protect against a hazard that does not exist yet.
|
|
335
|
+
//
|
|
336
|
+
// ⚠️ THE BROWSER FENCE DOES THE OPPOSITE ON PURPOSE, AND THE TWO MUST NOT BE "HARMONISED".
|
|
337
|
+
// `browser/worker-core.ts` treats `stored === null` as a mismatch and WIPES — correct there, and
|
|
338
|
+
// corrected TO that during CTC-114 review. The threat models genuinely differ:
|
|
339
|
+
//
|
|
340
|
+
// • Browser: dbPath/directory default to constants, so every tenant on an origin shares ONE
|
|
341
|
+
// OPFS database. A null stamp there may well be a different cookie user's data, and the cost
|
|
342
|
+
// of being wrong is a truncate over tables that re-seed from the network anyway.
|
|
343
|
+
// • Node: an operator-chosen file on one host. A null stamp means "written before this feature
|
|
344
|
+
// existed", the data may be very large, and the cost of being wrong is deleting a real
|
|
345
|
+
// tenant's replica — which is also why the MISMATCH path above refuses instead of wiping.
|
|
346
|
+
//
|
|
347
|
+
// Making either side match the other re-opens the hole it was written to close. If you are here
|
|
348
|
+
// to unify them, the thing to unify is the doc, not the behaviour.
|
|
349
|
+
//
|
|
350
|
+
// ⚠️ RESIDUAL, STATED SO IT IS NOT MISTAKEN FOR COVERAGE: adoption cannot retroactively verify an
|
|
351
|
+
// unstamped file. A pre-existing replica sitting at a wrong path is adopted, not caught. The
|
|
352
|
+
// fence protects everything from its first stamp onward; it cannot audit the past. CTL's
|
|
353
|
+
// host-side path guard is what covers that case.
|
|
354
|
+
const writeStamp = () => {
|
|
355
|
+
engine.run("INSERT INTO sync_meta (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value", ACCOUNT_KEY, this.opts.account);
|
|
356
|
+
engine.run("INSERT INTO sync_meta (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value", ACCOUNT_SOURCE_KEY, mySource);
|
|
357
|
+
};
|
|
358
|
+
if (verdict === "stamp") {
|
|
359
|
+
writeStamp();
|
|
360
|
+
// Loud only when adopting a WARM replica — a cold file being stamped is the ordinary first boot
|
|
361
|
+
// and does not deserve a line in the log every time.
|
|
362
|
+
if (getCursor(this.writeDb) != null) {
|
|
363
|
+
this.log("info", "adopting an unstamped replica — stamping it with this account", {
|
|
364
|
+
dbPath: this.opts.dbPath,
|
|
365
|
+
account: this.opts.account,
|
|
366
|
+
accountSource: mySource,
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
else if (verdict === "keep") {
|
|
371
|
+
// Upgrade `default` → `declared` when the caller now names the account: a declaration CONFIRMS
|
|
372
|
+
// what was previously only a fallback, and from here the fence may refuse on it. Never
|
|
373
|
+
// downgrade — a declaration already made is not unmade by a later caller that forgot to say.
|
|
374
|
+
if (stored.source === "default" && mySource === "declared")
|
|
375
|
+
writeStamp();
|
|
376
|
+
}
|
|
377
|
+
else {
|
|
378
|
+
// ── verdict === "reseed": a DEFAULT stamp yielding to a DECLARED account. ────────────────────
|
|
379
|
+
//
|
|
380
|
+
// Nobody ever asserted the stored value, so refusing would hold this host to a fallback it never
|
|
381
|
+
// agreed to — the fleet-wide trap `ACCOUNT_SOURCE_KEY` exists to prevent.
|
|
382
|
+
//
|
|
383
|
+
// ⛔ BUT RE-LABELLING ALONE WOULD BE WORSE THAN EITHER. The rows in this file were fetched for
|
|
384
|
+
// the STORED account; stamping the new name over them would leave real data from account A under
|
|
385
|
+
// a stamp that says B — a mislabelled replica every later check believes. CTL's review proposed
|
|
386
|
+
// "a declared value may overwrite a defaulted one exactly once", which is right about the STAMP;
|
|
387
|
+
// this is the part that makes it safe about the DATA. The transition is a wipe, not a rename.
|
|
388
|
+
//
|
|
389
|
+
// ⚠️ THIS IS THE ONLY PATH THAT DELETES ROWS, AND ITS LICENCE IS PROVENANCE — we know nobody
|
|
390
|
+
// claimed them. A `declared` mismatch still REFUSES rather than wiping, because there the rows
|
|
391
|
+
// may be another tenant's genuine replica; and two disagreeing DEFAULTS refuse too, because
|
|
392
|
+
// nothing licenses preferring either.
|
|
393
|
+
//
|
|
394
|
+
// ONE transaction, so a crash mid-wipe can never leave rows from A under a stamp saying B — the
|
|
395
|
+
// same reason the browser fence wraps its wipe (browser/worker-core.ts).
|
|
396
|
+
this.log("warn", "replica was stamped from a DEFAULTED account and this one is declared — re-seeding it", {
|
|
397
|
+
dbPath: this.opts.dbPath,
|
|
398
|
+
storedAccount: stored.account,
|
|
399
|
+
configuredAccount: this.opts.account,
|
|
400
|
+
});
|
|
401
|
+
engine.transaction(() => {
|
|
402
|
+
truncateReplica(this.writeDb);
|
|
403
|
+
engine.run("DELETE FROM sync_meta WHERE key = 'cursor'");
|
|
404
|
+
writeStamp();
|
|
405
|
+
});
|
|
406
|
+
}
|
|
407
|
+
// CTC-603: build the PRAGMA-derived known-columns map from the table shape migrations just
|
|
408
|
+
// produced — the ACTUAL local shape, not any package's bundled schema. See applyOptsFor's doc.
|
|
409
|
+
this.knownColumnsByEntity = buildKnownColumnsByTable(engine);
|
|
171
410
|
// CTC-127 auto-reseed: a migration that CHANGES ROW SHAPE (adds a column, or a new entity table)
|
|
172
411
|
// just ran on a WARM replica → existing rows lack the new column's values (they were seeded/applied
|
|
173
412
|
// before the column existed; the forward-compat filter dropped it). Force ONE full re-seed to
|
|
@@ -503,7 +742,7 @@ export class CatalystReplica {
|
|
|
503
742
|
// stale-guard (`false`) — the applied-vs-skipped signal (CTL-1402).
|
|
504
743
|
let written = false;
|
|
505
744
|
engine.transaction(() => {
|
|
506
|
-
written = applyDelta(writeDb, { entity: frame.entity, op: frame.op, row: frame.row ?? {}, entityId: frame.entityId }, engine.toBindable, this.
|
|
745
|
+
written = applyDelta(writeDb, { entity: frame.entity, op: frame.op, row: frame.row ?? {}, entityId: frame.entityId }, engine.toBindable, this.applyOptsFor(frame.entity));
|
|
507
746
|
// Advance to the seq we SAW (not just applied), so a stale-but-newer-seq delta still moves the
|
|
508
747
|
// cursor forward and a reconnect doesn't re-request it. Safe ONLY because the transport now
|
|
509
748
|
// guarantees contiguity (CTL-1402): LiveSyncClient never delivers a frame beyond
|
|
@@ -673,7 +912,7 @@ export class CatalystReplica {
|
|
|
673
912
|
for (const rec of rows) {
|
|
674
913
|
if (rec.entity === undefined)
|
|
675
914
|
continue;
|
|
676
|
-
applyDelta(writeDb, { entity: rec.entity, op: rec.op ?? "upsert", row: rec.row ?? {} }, engine.toBindable, this.
|
|
915
|
+
applyDelta(writeDb, { entity: rec.entity, op: rec.op ?? "upsert", row: rec.row ?? {} }, engine.toBindable, this.applyOptsFor(rec.entity));
|
|
677
916
|
}
|
|
678
917
|
});
|
|
679
918
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalyst-replica.js","sourceRoot":"","sources":["../../src/replica/catalyst-replica.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"catalyst-replica.js","sourceRoot":"","sources":["../../src/replica/catalyst-replica.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** The minimal multi-row query capability this needs. Satisfied structurally by the node engine's
|
|
2
|
+
* `ReplicaEngine.all` and the browser's `ReplicaDb.all` — no import from either lives here, so this
|
|
3
|
+
* module stays shareable with the browser bundle (unlike engine.ts, which pulls in `node:module`). */
|
|
4
|
+
export interface QueryAllPort {
|
|
5
|
+
all(sql: string): Array<Record<string, unknown>>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Build a per-table known-columns map from the LOCAL database's ACTUAL shape (`PRAGMA table_info`),
|
|
9
|
+
* for use as `ApplyOptions.knownColumns` at every `applyDelta` call site.
|
|
10
|
+
*
|
|
11
|
+
* Call ONCE, right after `applyMigrations` runs — the table shape it reflects is fixed until the next
|
|
12
|
+
* migration run (a fresh `start()` / worker `open`).
|
|
13
|
+
*/
|
|
14
|
+
export declare function buildKnownColumnsByTable(db: QueryAllPort): Map<string, ReadonlySet<string>>;
|
|
15
|
+
//# sourceMappingURL=known-columns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"known-columns.d.ts","sourceRoot":"","sources":["../../src/replica/known-columns.ts"],"names":[],"mappings":"AAoBA;;uGAEuG;AACvG,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAClD;AAsBD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAQ3F"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// replica/known-columns.ts — CTC-603: the REAL local table shape via PRAGMA introspection, shared by
|
|
2
|
+
// the node engine (catalyst-replica.ts) and the browser/OPFS port (ports.ts).
|
|
3
|
+
//
|
|
4
|
+
// @catalyst-cloud/replicate's `applyUpsert` defaults its forward-compat column filter
|
|
5
|
+
// (`ApplyOptions.knownColumns`) to ITS OWN bundled `@catalyst-cloud/schema` dependency — a separate,
|
|
6
|
+
// independently-versioned nested copy from whatever schema version THIS SDK's own `applyMigrations`
|
|
7
|
+
// actually used to create the local replica table. When replicate's nested schema lags behind, that
|
|
8
|
+
// default silently drops columns the local table genuinely has (CTC-529/575) — and when the local
|
|
9
|
+
// table is for an entity replicate's bundled schema doesn't recognize AT ALL, the whole delta failed
|
|
10
|
+
// (CTC-393, separately mitigated by a no-throw fix in replicate itself).
|
|
11
|
+
//
|
|
12
|
+
// `ApplyOptions.knownColumns` exists exactly to override that default (see the doc comment on it in
|
|
13
|
+
// @catalyst-cloud/replicate's src/replicate.ts: "a caller that wants PRAGMA-accurate columns"). This
|
|
14
|
+
// module builds that override from the ACTUAL local database — `PRAGMA table_info(<table>)` — rather
|
|
15
|
+
// than from ANY package's bundled, compile-time column list (replicate's OR this SDK's own
|
|
16
|
+
// @catalyst-cloud/schema). That is the whole point: the property this buys is "the delta-apply column
|
|
17
|
+
// filter always agrees with what SQLite itself reports the table having," independent of which
|
|
18
|
+
// package's schema version created it and independent of any two packages' pins staying in sync by
|
|
19
|
+
// hand — durable against a FUTURE version-skew instance, not just the one already fixed by exact pins.
|
|
20
|
+
/**
|
|
21
|
+
* Quote a SQL identifier for interpolation into `PRAGMA table_info(...)`.
|
|
22
|
+
*
|
|
23
|
+
* PRAGMA statements don't accept a bound `?` parameter for the table-name argument on any engine this
|
|
24
|
+
* SDK supports (bun:sqlite, node:sqlite, sqlite-wasm) — the identifier must be inlined. SAFE here only
|
|
25
|
+
* because every caller passes a name that came from {@link listLocalTables} (an enumeration of the
|
|
26
|
+
* database's OWN `sqlite_master` rows), never external input.
|
|
27
|
+
*/
|
|
28
|
+
function quoteIdent(ident) {
|
|
29
|
+
return `"${ident.replace(/"/g, '""')}"`;
|
|
30
|
+
}
|
|
31
|
+
/** Every real user table currently in the local sqlite file — excludes sqlite-internal `sqlite_*`
|
|
32
|
+
* bookkeeping tables (e.g. `sqlite_sequence`). Includes host-only tables like `sync_meta` harmlessly:
|
|
33
|
+
* `change.entity` never names one, so an unused map entry costs nothing. */
|
|
34
|
+
function listLocalTables(db) {
|
|
35
|
+
const rows = db.all("SELECT name FROM sqlite_master WHERE type = 'table'");
|
|
36
|
+
return rows.map((r) => String(r.name)).filter((name) => !name.startsWith("sqlite_"));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Build a per-table known-columns map from the LOCAL database's ACTUAL shape (`PRAGMA table_info`),
|
|
40
|
+
* for use as `ApplyOptions.knownColumns` at every `applyDelta` call site.
|
|
41
|
+
*
|
|
42
|
+
* Call ONCE, right after `applyMigrations` runs — the table shape it reflects is fixed until the next
|
|
43
|
+
* migration run (a fresh `start()` / worker `open`).
|
|
44
|
+
*/
|
|
45
|
+
export function buildKnownColumnsByTable(db) {
|
|
46
|
+
const map = new Map();
|
|
47
|
+
for (const table of listLocalTables(db)) {
|
|
48
|
+
const rows = db.all(`PRAGMA table_info(${quoteIdent(table)})`);
|
|
49
|
+
if (rows.length === 0)
|
|
50
|
+
continue; // defensive — a real table always reports at least one column
|
|
51
|
+
map.set(table, new Set(rows.map((r) => String(r.name))));
|
|
52
|
+
}
|
|
53
|
+
return map;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=known-columns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"known-columns.js","sourceRoot":"","sources":["../../src/replica/known-columns.ts"],"names":[],"mappings":"AAAA,qGAAqG;AACrG,8EAA8E;AAC9E,EAAE;AACF,sFAAsF;AACtF,qGAAqG;AACrG,oGAAoG;AACpG,oGAAoG;AACpG,kGAAkG;AAClG,qGAAqG;AACrG,yEAAyE;AACzE,EAAE;AACF,oGAAoG;AACpG,qGAAqG;AACrG,qGAAqG;AACrG,2FAA2F;AAC3F,sGAAsG;AACtG,+FAA+F;AAC/F,mGAAmG;AACnG,uGAAuG;AASvG;;;;;;;GAOG;AACH,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;AAC1C,CAAC;AAED;;6EAE6E;AAC7E,SAAS,eAAe,CAAC,EAAgB;IACvC,MAAM,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IAC3E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACvF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,EAAgB;IACvD,MAAM,GAAG,GAAG,IAAI,GAAG,EAA+B,CAAC;IACnD,KAAK,MAAM,KAAK,IAAI,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,qBAAqB,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS,CAAC,8DAA8D;QAC/F,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@catalyst-cloud/sdk",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.7",
|
|
4
4
|
"description": "Keep a live local copy of your Linear and GitHub project data \u2014 pushed in real time, without polling rate limits or webhook tunnels.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Coalesce Labs",
|