orez 0.2.25 → 0.2.26
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/cf-do/watermark.d.ts +21 -0
- package/dist/cf-do/watermark.d.ts.map +1 -0
- package/dist/cf-do/watermark.js +93 -0
- package/dist/cf-do/watermark.js.map +1 -0
- package/dist/cf-do/worker.d.ts +48 -22
- package/dist/cf-do/worker.d.ts.map +1 -1
- package/dist/cf-do/worker.js +642 -269
- package/dist/cf-do/worker.js.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/do-sql-tracking.d.ts +6 -0
- package/dist/do-sql-tracking.d.ts.map +1 -0
- package/dist/do-sql-tracking.js +14 -0
- package/dist/do-sql-tracking.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -14
- package/dist/index.js.map +1 -1
- package/dist/pg-proxy-browser.js +6 -6
- package/dist/pg-proxy-browser.js.map +1 -1
- package/dist/pg-proxy-do-backend.d.ts +96 -17
- package/dist/pg-proxy-do-backend.d.ts.map +1 -1
- package/dist/pg-proxy-do-backend.js +6033 -454
- package/dist/pg-proxy-do-backend.js.map +1 -1
- package/dist/replication/change-tracker.d.ts.map +1 -1
- package/dist/replication/change-tracker.js +18 -1
- package/dist/replication/change-tracker.js.map +1 -1
- package/dist/replication/handler.d.ts.map +1 -1
- package/dist/replication/handler.js +7 -2
- package/dist/replication/handler.js.map +1 -1
- package/dist/replication/pgoutput-encoder.d.ts.map +1 -1
- package/dist/replication/pgoutput-encoder.js +72 -30
- package/dist/replication/pgoutput-encoder.js.map +1 -1
- package/dist/worker/browser-build-config.d.ts.map +1 -1
- package/dist/worker/browser-build-config.js +2 -1
- package/dist/worker/browser-build-config.js.map +1 -1
- package/dist/worker/cf-patches.d.ts +5 -2
- package/dist/worker/cf-patches.d.ts.map +1 -1
- package/dist/worker/cf-patches.js +238 -4
- package/dist/worker/cf-patches.js.map +1 -1
- package/dist/worker/shims/node-stub.d.ts +35 -0
- package/dist/worker/shims/node-stub.d.ts.map +1 -1
- package/dist/worker/shims/node-stub.js +53 -1
- package/dist/worker/shims/node-stub.js.map +1 -1
- package/dist/worker/shims/oxfmt.d.ts +4 -0
- package/dist/worker/shims/oxfmt.d.ts.map +1 -0
- package/dist/worker/shims/oxfmt.js +4 -0
- package/dist/worker/shims/oxfmt.js.map +1 -0
- package/dist/worker/shims/postgres-socket.js +1 -1
- package/dist/worker/shims/postgres-socket.js.map +1 -1
- package/dist/worker/shims/sqlite.d.ts +1 -0
- package/dist/worker/shims/sqlite.d.ts.map +1 -1
- package/dist/worker/shims/sqlite.js +229 -9
- package/dist/worker/shims/sqlite.js.map +1 -1
- package/dist/worker/shims/ws.d.ts.map +1 -1
- package/dist/worker/shims/ws.js +45 -0
- package/dist/worker/shims/ws.js.map +1 -1
- package/dist/worker/shims/zero-process-env.d.ts +2 -0
- package/dist/worker/shims/zero-process-env.d.ts.map +1 -0
- package/dist/worker/shims/zero-process-env.js +9 -0
- package/dist/worker/shims/zero-process-env.js.map +1 -0
- package/dist/worker/zero-cache-embed-cf.d.ts +29 -12
- package/dist/worker/zero-cache-embed-cf.d.ts.map +1 -1
- package/dist/worker/zero-cache-embed-cf.js +83 -14
- package/dist/worker/zero-cache-embed-cf.js.map +1 -1
- package/package.json +6 -2
- package/src/cf-do/.wrangler/cache/cf.json +1 -0
- package/src/cf-do/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-shm +0 -0
- package/src/cf-do/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-wal +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/0f0f3bdf0abda097eb6f1246db4657d9fc622081362d894d82c1a1ce067b05b6.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/1ddd3a4a48a11b51658444f5458a1fb175194b1d5b6a5bda20ef3fe3205b900c.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/204a39120310d37e972c5914cfd71ad55c151bdb9e8ed289a5f8c5b052dd60e4.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/3835f242df9728adba3d127a238793fd054ed3e51df3f60749ee744c469bf2a2.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/4aa9c80eb716cf55b8995ccf7afab0b36c683e6da07d7c37a3f9c570136036df.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/533e2fd1d6ea46e7a9a0017916ef341802d438d72583462755f2c1f8225e9bf2.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/5ffa1aced1225ecaeac6366f7586aa3de92761cdff8711d81fbd81f248076abd.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/686c3a9f0d7e59ed2ab607efd4b76d779c97cafeb3818380033bf7c7eb86c819.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/6e8214e8dcfadd0deb52d64e5e9ca85c6b329ace11193909845995396914c473.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/78d9ec9ff873d3fe3507ff53c2a6f6dfc408b4268eb0db3f2a146c0678965366.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/7eff9f0ed7e27ad0d3f9d923de0682fab1928591172c1ba336c5f79a134a5d85.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/836cda5b995b25867d722ed4f4c2292167e80351a3c6038db626648eb247dd8b.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/91ef63b112209ab30172763acd8a0935106c248f7f1bcae5545ce37a9f201551.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/a66ea4293a5f5938bc6d116edfa2522bb85bc37aea3541fbc09c3b613b9b32c0.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/ceb2ab26b80590840b65651deb6e948d3bf81565c6751f3a58752cf4bf4aecae.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/metadata.sqlite +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/metadata.sqlite-shm +0 -0
- package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/metadata.sqlite-wal +0 -0
- package/src/cf-do/ARCHITECTURE.md +83 -0
- package/src/cf-do/watermark.test.ts +103 -0
- package/src/cf-do/watermark.ts +118 -0
- package/src/cf-do/worker.ts +1033 -0
- package/src/cf-do/wrangler.toml +11 -0
- package/src/config.ts +1 -1
- package/src/do-sql-tracking.test.ts +19 -0
- package/src/do-sql-tracking.ts +19 -0
- package/src/index.ts +29 -14
- package/src/pg-proxy-browser.ts +6 -6
- package/src/pg-proxy-do-backend.test.ts +3890 -0
- package/src/pg-proxy-do-backend.ts +6799 -482
- package/src/replication/change-tracker.ts +16 -1
- package/src/replication/handler.test.ts +35 -0
- package/src/replication/handler.ts +7 -2
- package/src/replication/pgoutput-encoder.test.ts +71 -2
- package/src/replication/pgoutput-encoder.ts +65 -30
- package/src/worker/browser-build-config.test.ts +12 -0
- package/src/worker/browser-build-config.ts +2 -1
- package/src/worker/cf-patches.ts +274 -4
- package/src/worker/shims/node-stub.ts +53 -1
- package/src/worker/shims/oxfmt.ts +3 -0
- package/src/worker/shims/postgres-socket.ts +1 -1
- package/src/worker/shims/sqlite.test.ts +145 -0
- package/src/worker/shims/sqlite.ts +256 -9
- package/src/worker/shims/ws.ts +45 -0
- package/src/worker/shims/zero-process-env.ts +11 -0
- package/src/worker/zero-cache-embed-cf.ts +114 -18
- package/src/query-rewrites.test.ts +0 -30
- package/src/query-rewrites.ts +0 -152
|
@@ -4,39 +4,57 @@
|
|
|
4
4
|
* runs zero-cache in-process with SINGLE_PROCESS=1, using bundler aliases
|
|
5
5
|
* to swap Node.js dependencies for CF-compatible shims:
|
|
6
6
|
*
|
|
7
|
-
* postgres → orez/worker/shims/postgres
|
|
7
|
+
* postgres → orez/worker/shims/postgres-browser
|
|
8
|
+
* (real postgres package over MessagePort)
|
|
8
9
|
* @rocicorp/zero-sqlite3 → orez/worker/shims/sqlite (DO SQLite)
|
|
9
10
|
* fastify → orez/worker/shims/fastify (route capture)
|
|
10
11
|
* ws → orez/worker/shims/ws (CF WebSocket)
|
|
11
12
|
*
|
|
12
|
-
* the
|
|
13
|
-
*
|
|
13
|
+
* the postgres MessagePort proxy is backed by DoBackend, so zero-cache still
|
|
14
|
+
* uses its real PG wire protocol, but storage is Cloudflare DO SQLite instead
|
|
15
|
+
* of PGlite.
|
|
14
16
|
*
|
|
15
17
|
* usage in a Durable Object:
|
|
16
18
|
*
|
|
17
19
|
* import { startZeroCacheEmbedCF } from 'orez/worker'
|
|
18
20
|
*
|
|
19
21
|
* // in ensureInitialized():
|
|
20
|
-
* globalThis.__orez_pglite = pglite // for postgres shim
|
|
21
|
-
* globalThis.__orez_do_sqlite = ctx.storage.sql // for sqlite shim
|
|
22
|
-
*
|
|
23
22
|
* const zc = await startZeroCacheEmbedCF({ ... })
|
|
24
23
|
*
|
|
25
24
|
* // in DO fetch():
|
|
26
25
|
* return zc.handleRequest(request)
|
|
27
26
|
*/
|
|
28
|
-
import
|
|
27
|
+
import './shims/zero-process-env.js';
|
|
28
|
+
import { DoBackend } from '../pg-proxy-do-backend.js';
|
|
29
29
|
export interface ZeroCacheEmbedCFOptions {
|
|
30
|
-
/** PGlite instance (also registered on globalThis.__orez_pglite) */
|
|
31
|
-
pglite: PGlite;
|
|
32
30
|
/** DO SQLite storage (also registered on globalThis.__orez_do_sqlite) */
|
|
33
31
|
doSqlite: unknown;
|
|
32
|
+
/**
|
|
33
|
+
* base URL for the DO SQL execution endpoints (`/exec`, `/batch`).
|
|
34
|
+
* ignored when `backends` is supplied.
|
|
35
|
+
*/
|
|
36
|
+
backendUrl?: string;
|
|
37
|
+
/** custom fetch used by DoBackend; lets a DO route directly to another DO stub. */
|
|
38
|
+
backendFetch?: typeof fetch;
|
|
39
|
+
/** namespace sent to the DO SQL endpoints. */
|
|
40
|
+
backendNamespace?: string;
|
|
41
|
+
/** pre-created DoBackend instances. mainly useful for tests. */
|
|
42
|
+
backends?: {
|
|
43
|
+
postgres: DoBackend;
|
|
44
|
+
cvr: DoBackend;
|
|
45
|
+
cdb: DoBackend;
|
|
46
|
+
};
|
|
47
|
+
/** postgres username/password expected by the in-process proxy. */
|
|
48
|
+
pgUser?: string;
|
|
49
|
+
pgPassword?: string;
|
|
34
50
|
/** zero app ID (default: 'zero') */
|
|
35
51
|
appId?: string;
|
|
36
52
|
/** publication names */
|
|
37
53
|
publications?: string[];
|
|
38
54
|
/** additional env vars passed to zero-cache */
|
|
39
55
|
env?: Record<string, string>;
|
|
56
|
+
/** fetch implementation for Worker-local mutate/query API URLs. */
|
|
57
|
+
apiFetch?: typeof fetch;
|
|
40
58
|
/** timeout in ms waiting for zero-cache ready (default: 30000) */
|
|
41
59
|
readyTimeout?: number;
|
|
42
60
|
}
|
|
@@ -55,9 +73,8 @@ export interface ZeroCacheEmbedCF {
|
|
|
55
73
|
/**
|
|
56
74
|
* start zero-cache in embedded CF Workers mode.
|
|
57
75
|
*
|
|
58
|
-
* must be called
|
|
59
|
-
*
|
|
60
|
-
* globalThis.__orez_do_sqlite = ctx.storage.sql
|
|
76
|
+
* must be called with a DO SQLite handle for zero-cache's replica storage and
|
|
77
|
+
* a DoBackend target for upstream/CVR/change Postgres connections.
|
|
61
78
|
*/
|
|
62
79
|
export declare function startZeroCacheEmbedCF(opts: ZeroCacheEmbedCFOptions): Promise<ZeroCacheEmbedCF>;
|
|
63
80
|
//# sourceMappingURL=zero-cache-embed-cf.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zero-cache-embed-cf.d.ts","sourceRoot":"","sources":["../../src/worker/zero-cache-embed-cf.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"zero-cache-embed-cf.d.ts","sourceRoot":"","sources":["../../src/worker/zero-cache-embed-cf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,6BAA6B,CAAA;AAUpC,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAOrD,MAAM,WAAW,uBAAuB;IACtC,yEAAyE;IACzE,QAAQ,EAAE,OAAO,CAAA;IAEjB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB,mFAAmF;IACnF,YAAY,CAAC,EAAE,OAAO,KAAK,CAAA;IAE3B,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB,gEAAgE;IAChE,QAAQ,CAAC,EAAE;QACT,QAAQ,EAAE,SAAS,CAAA;QACnB,GAAG,EAAE,SAAS,CAAA;QACd,GAAG,EAAE,SAAS,CAAA;KACf,CAAA;IAED,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,wBAAwB;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IAEvB,+CAA+C;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE5B,mEAAmE;IACnE,QAAQ,CAAC,EAAE,OAAO,KAAK,CAAA;IAEvB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IAEvB;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAElD,sBAAsB;IACtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAgQ3B"}
|
|
@@ -4,46 +4,83 @@
|
|
|
4
4
|
* runs zero-cache in-process with SINGLE_PROCESS=1, using bundler aliases
|
|
5
5
|
* to swap Node.js dependencies for CF-compatible shims:
|
|
6
6
|
*
|
|
7
|
-
* postgres → orez/worker/shims/postgres
|
|
7
|
+
* postgres → orez/worker/shims/postgres-browser
|
|
8
|
+
* (real postgres package over MessagePort)
|
|
8
9
|
* @rocicorp/zero-sqlite3 → orez/worker/shims/sqlite (DO SQLite)
|
|
9
10
|
* fastify → orez/worker/shims/fastify (route capture)
|
|
10
11
|
* ws → orez/worker/shims/ws (CF WebSocket)
|
|
11
12
|
*
|
|
12
|
-
* the
|
|
13
|
-
*
|
|
13
|
+
* the postgres MessagePort proxy is backed by DoBackend, so zero-cache still
|
|
14
|
+
* uses its real PG wire protocol, but storage is Cloudflare DO SQLite instead
|
|
15
|
+
* of PGlite.
|
|
14
16
|
*
|
|
15
17
|
* usage in a Durable Object:
|
|
16
18
|
*
|
|
17
19
|
* import { startZeroCacheEmbedCF } from 'orez/worker'
|
|
18
20
|
*
|
|
19
21
|
* // in ensureInitialized():
|
|
20
|
-
* globalThis.__orez_pglite = pglite // for postgres shim
|
|
21
|
-
* globalThis.__orez_do_sqlite = ctx.storage.sql // for sqlite shim
|
|
22
|
-
*
|
|
23
22
|
* const zc = await startZeroCacheEmbedCF({ ... })
|
|
24
23
|
*
|
|
25
24
|
* // in DO fetch():
|
|
26
25
|
* return zc.handleRequest(request)
|
|
27
26
|
*/
|
|
27
|
+
import './shims/zero-process-env.js';
|
|
28
28
|
import EventEmitter from 'node:events';
|
|
29
29
|
// static import so wrangler can follow the dependency tree and bundle
|
|
30
30
|
// zero-cache with all its transitive deps + our shim aliases.
|
|
31
31
|
// @ts-expect-error — internal zero-cache module, no type declarations
|
|
32
32
|
import { runWorker as _runWorker } from '@rocicorp/zero/out/zero-cache/src/server/runner/run-worker.js';
|
|
33
|
+
import { createBrowserProxy } from '../pg-proxy-browser.js';
|
|
34
|
+
import { DoBackend } from '../pg-proxy-do-backend.js';
|
|
33
35
|
const runWorkerFn = _runWorker;
|
|
34
36
|
/**
|
|
35
37
|
* start zero-cache in embedded CF Workers mode.
|
|
36
38
|
*
|
|
37
|
-
* must be called
|
|
38
|
-
*
|
|
39
|
-
* globalThis.__orez_do_sqlite = ctx.storage.sql
|
|
39
|
+
* must be called with a DO SQLite handle for zero-cache's replica storage and
|
|
40
|
+
* a DoBackend target for upstream/CVR/change Postgres connections.
|
|
40
41
|
*/
|
|
41
42
|
export async function startZeroCacheEmbedCF(opts) {
|
|
42
43
|
const appId = opts.appId || 'zero';
|
|
43
44
|
const publications = opts.publications?.join(',') || `orez_${appId}_public`;
|
|
44
45
|
const readyTimeout = opts.readyTimeout ?? 30000;
|
|
45
|
-
|
|
46
|
+
const pgUser = opts.pgUser || 'user';
|
|
47
|
+
const pgPassword = opts.pgPassword || '';
|
|
48
|
+
const backendUrl = opts.backendUrl || 'https://orez-do-backend.local';
|
|
49
|
+
const backendNamespace = opts.backendNamespace || appId;
|
|
50
|
+
const backends = opts.backends ??
|
|
51
|
+
{
|
|
52
|
+
postgres: new DoBackend(backendUrl, 'postgres', backendNamespace, {
|
|
53
|
+
fetch: opts.backendFetch,
|
|
54
|
+
}),
|
|
55
|
+
cvr: new DoBackend(backendUrl, 'zero_cvr', backendNamespace, {
|
|
56
|
+
fetch: opts.backendFetch,
|
|
57
|
+
}),
|
|
58
|
+
cdb: new DoBackend(backendUrl, 'zero_cdb', backendNamespace, {
|
|
59
|
+
fetch: opts.backendFetch,
|
|
60
|
+
}),
|
|
61
|
+
};
|
|
62
|
+
await Promise.all([
|
|
63
|
+
backends.postgres.waitReady,
|
|
64
|
+
backends.cvr.waitReady,
|
|
65
|
+
backends.cdb.waitReady,
|
|
66
|
+
]);
|
|
67
|
+
const proxy = await createBrowserProxy({
|
|
68
|
+
postgres: backends.postgres,
|
|
69
|
+
cvr: backends.cvr,
|
|
70
|
+
cdb: backends.cdb,
|
|
71
|
+
postgresReplicas: [],
|
|
72
|
+
}, {
|
|
73
|
+
pgUser,
|
|
74
|
+
pgPassword,
|
|
75
|
+
singleDb: false,
|
|
76
|
+
logLevel: opts.env?.ZERO_LOG_LEVEL || 'info',
|
|
77
|
+
});
|
|
46
78
|
globalThis.__orez_do_sqlite = opts.doSqlite;
|
|
79
|
+
globalThis.__orez_proxy_connect = (port) => {
|
|
80
|
+
proxy.handleConnection(port);
|
|
81
|
+
};
|
|
82
|
+
globalThis.__orez_proxy_user = pgUser;
|
|
83
|
+
globalThis.__orez_proxy_password = pgPassword;
|
|
47
84
|
globalThis.process ??= {};
|
|
48
85
|
globalThis.process.env ??= {};
|
|
49
86
|
globalThis.process.pid ??= 1;
|
|
@@ -67,29 +104,44 @@ export async function startZeroCacheEmbedCF(opts) {
|
|
|
67
104
|
const origExit = globalThis.process.exit;
|
|
68
105
|
const origNodeEnv = globalThis.process.env.NODE_ENV;
|
|
69
106
|
const origKill = globalThis.process.kill;
|
|
107
|
+
const origFetch = globalThis.fetch;
|
|
70
108
|
globalThis.process.exit = (code) => {
|
|
71
109
|
parent.emit('exit', code ?? 0);
|
|
72
110
|
};
|
|
111
|
+
if (opts.apiFetch) {
|
|
112
|
+
;
|
|
113
|
+
globalThis.fetch = (input, init) => {
|
|
114
|
+
const request = new Request(input, init);
|
|
115
|
+
const url = new URL(request.url);
|
|
116
|
+
if (url.hostname === 'orez-zero-api.local')
|
|
117
|
+
return opts.apiFetch(request);
|
|
118
|
+
return origFetch(input, init);
|
|
119
|
+
};
|
|
120
|
+
}
|
|
73
121
|
// build env for zero-cache
|
|
74
122
|
const env = {
|
|
75
123
|
...globalThis.process.env,
|
|
76
124
|
SINGLE_PROCESS: '1',
|
|
77
125
|
NODE_ENV: 'development',
|
|
78
|
-
//
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
126
|
+
// postgres-browser intercepts these URLs and routes PG wire over
|
|
127
|
+
// MessagePort to the DoBackend-backed proxy above.
|
|
128
|
+
ZERO_UPSTREAM_DB: `postgres://${pgUser}:ignored@127.0.0.1/postgres`,
|
|
129
|
+
ZERO_CVR_DB: `postgres://${pgUser}:ignored@127.0.0.1/zero_cvr`,
|
|
130
|
+
ZERO_CHANGE_DB: `postgres://${pgUser}:ignored@127.0.0.1/zero_cdb`,
|
|
82
131
|
// this path is intercepted by the sqlite shim
|
|
83
132
|
ZERO_REPLICA_FILE: ':do-sqlite:',
|
|
84
133
|
// don't bind a port — we route via inject/handoff
|
|
85
134
|
ZERO_PORT: '0',
|
|
86
135
|
ZERO_APP_ID: appId,
|
|
87
136
|
ZERO_APP_PUBLICATIONS: publications,
|
|
137
|
+
ZERO_ADMIN_PASSWORD: opts.env?.ZERO_ADMIN_PASSWORD || crypto.randomUUID(),
|
|
88
138
|
ZERO_LOG_LEVEL: opts.env?.ZERO_LOG_LEVEL || 'info',
|
|
89
139
|
ZERO_NUM_SYNC_WORKERS: opts.env?.ZERO_NUM_SYNC_WORKERS || '1',
|
|
90
140
|
ZERO_ENABLE_QUERY_PLANNER: 'false',
|
|
91
141
|
...opts.env,
|
|
92
142
|
};
|
|
143
|
+
Object.assign(globalThis.process.env, env);
|
|
144
|
+
const debugEmbed = env.OREZ_DEBUG_EMBED === '1' || globalThis.__OREZ_DEBUG_EMBED__ === true;
|
|
93
145
|
// wrap parent with onMessageType/onceMessageType helpers
|
|
94
146
|
// must forward sendHandle (second arg) for WebSocket handoff
|
|
95
147
|
const wrappedParent = new Proxy(parent, {
|
|
@@ -131,6 +183,8 @@ export async function startZeroCacheEmbedCF(opts) {
|
|
|
131
183
|
reject(new Error(`zero-cache CF embed: timed out waiting for ready after ${readyTimeout}ms`));
|
|
132
184
|
}, readyTimeout);
|
|
133
185
|
parentEmitter.on('message', (msg) => {
|
|
186
|
+
if (debugEmbed)
|
|
187
|
+
console.debug('[orez-zero-cache-cf] parent message', msg);
|
|
134
188
|
if (Array.isArray(msg) && msg[0] === 'ready') {
|
|
135
189
|
clearTimeout(timeout);
|
|
136
190
|
isReady = true;
|
|
@@ -140,6 +194,8 @@ export async function startZeroCacheEmbedCF(opts) {
|
|
|
140
194
|
});
|
|
141
195
|
// start zero-cache
|
|
142
196
|
runWorkerPromise = runWorkerFn(wrappedParent, env).catch((err) => {
|
|
197
|
+
if (debugEmbed)
|
|
198
|
+
console.error('[orez-zero-cache-cf] runWorker error', err);
|
|
143
199
|
if (!isReady) {
|
|
144
200
|
throw err;
|
|
145
201
|
}
|
|
@@ -172,6 +228,12 @@ export async function startZeroCacheEmbedCF(opts) {
|
|
|
172
228
|
await Promise.race([runWorkerPromise, new Promise((r) => setTimeout(r, 5000))]);
|
|
173
229
|
}
|
|
174
230
|
await new Promise((r) => setTimeout(r, 200));
|
|
231
|
+
proxy.close();
|
|
232
|
+
await Promise.all([
|
|
233
|
+
backends.postgres.close(),
|
|
234
|
+
backends.cvr.close(),
|
|
235
|
+
backends.cdb.close(),
|
|
236
|
+
]);
|
|
175
237
|
// restore all modified globals
|
|
176
238
|
if (origExit) {
|
|
177
239
|
;
|
|
@@ -185,7 +247,14 @@ export async function startZeroCacheEmbedCF(opts) {
|
|
|
185
247
|
;
|
|
186
248
|
globalThis.process.kill = origKill;
|
|
187
249
|
}
|
|
250
|
+
if (opts.apiFetch) {
|
|
251
|
+
;
|
|
252
|
+
globalThis.fetch = origFetch;
|
|
253
|
+
}
|
|
188
254
|
delete globalThis.process.env.SINGLE_PROCESS;
|
|
255
|
+
delete globalThis.__orez_proxy_connect;
|
|
256
|
+
delete globalThis.__orez_proxy_user;
|
|
257
|
+
delete globalThis.__orez_proxy_password;
|
|
189
258
|
},
|
|
190
259
|
};
|
|
191
260
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zero-cache-embed-cf.js","sourceRoot":"","sources":["../../src/worker/zero-cache-embed-cf.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"zero-cache-embed-cf.js","sourceRoot":"","sources":["../../src/worker/zero-cache-embed-cf.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "orez",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.26",
|
|
4
4
|
"description": "PGlite-powered zero-sync development backend. No Docker required.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -34,6 +34,10 @@
|
|
|
34
34
|
"./worker/shims/*": {
|
|
35
35
|
"types": "./dist/worker/shims/*.d.ts",
|
|
36
36
|
"import": "./dist/worker/shims/*.js"
|
|
37
|
+
},
|
|
38
|
+
"./cf-do": {
|
|
39
|
+
"types": "./dist/cf-do/worker.d.ts",
|
|
40
|
+
"import": "./dist/cf-do/worker.js"
|
|
37
41
|
}
|
|
38
42
|
},
|
|
39
43
|
"bin": {
|
|
@@ -79,7 +83,7 @@
|
|
|
79
83
|
"dependencies": {
|
|
80
84
|
"@electric-sql/pglite": "0.4.1",
|
|
81
85
|
"@electric-sql/pglite-tools": "^0.3.1",
|
|
82
|
-
"bedrock-sqlite": "0.2.
|
|
86
|
+
"bedrock-sqlite": "0.2.26",
|
|
83
87
|
"citty": "^0.2.0",
|
|
84
88
|
"pg-gateway": "0.3.0-beta.4",
|
|
85
89
|
"pgsql-parser": "^17.9.11",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"httpProtocol":"HTTP/1.1","clientAcceptEncoding":"gzip, deflate, br","requestPriority":"","edgeRequestKeepAliveStatus":1,"requestHeaderNames":{},"clientTcpRtt":74,"clientQuicRtt":0,"colo":"LAX","asn":21928,"asOrganization":"T-Mobile USA, Inc.","country":"US","isEUCountry":false,"city":"Honolulu","continent":"NA","region":"Hawaii","regionCode":"HI","timezone":"Pacific/Honolulu","longitude":"-157.85833","latitude":"21.30694","postalCode":"96802","metroCode":"744","tlsVersion":"TLSv1.3","tlsCipher":"AEAD-AES256-GCM-SHA384","tlsClientRandom":"8lAacoE+Gg3H5AKn8BQNpAGr3fgr0OV1txs9E+GEKXk=","tlsClientCiphersSha1":"JZtiTn8H/ntxORk+XXvU2EvNoz8=","tlsClientExtensionsSha1":"Y7DIC8A6G0/aXviZ8ie/xDbJb7g=","tlsClientExtensionsSha1Le":"6e+q3vPm88rSgMTN/h7WTTxQ2wQ=","tlsExportedAuthenticator":{"clientHandshake":"88b6a0bf9d7b4c6bc26b9f11255fe3f55b2bae485c86026892687913505e6a337a54221c8ec52b88741035fde8e80b91","serverHandshake":"a611a55711347da40c0167874992b47d75a4de9ed1c0bc731dd1f80051efde3b73a8baff4e484f30b284d662cd503dcb","clientFinished":"81b77db43ca14e8934ebd5f4c6d3656a1ccc726f04a10164cf7d599128d7dfbd3fa15f932068a583f288a0327d69a5f5","serverFinished":"68efa1737e629e56c92cbb680f96730052e8269e6248b62dd26a62d3ea7be55991e9f0ea85e6bebf95dbc6adbb41334e"},"tlsClientHelloLength":"386","tlsClientAuth":{"certPresented":"0","certVerified":"NONE","certRevoked":"0","certIssuerDN":"","certSubjectDN":"","certIssuerDNRFC2253":"","certSubjectDNRFC2253":"","certIssuerDNLegacy":"","certSubjectDNLegacy":"","certSerial":"","certIssuerSerial":"","certSKI":"","certIssuerSKI":"","certFingerprintSHA1":"","certFingerprintSHA256":"","certNotBefore":"","certNotAfter":"","certRFC9440":"","certRFC9440TooLarge":false,"certChainRFC9440":"","certChainRFC9440TooLarge":false},"verifiedBotCategory":"","edgeL4":{"deliveryRate":52536},"botManagement":{"corporateProxy":false,"verifiedBot":false,"jsDetection":{"passed":false},"staticResource":false,"detectionIds":{},"score":99}}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# orez/cf-do architecture - READ FIRST
|
|
2
|
+
|
|
3
|
+
## The fundamental constraint
|
|
4
|
+
|
|
5
|
+
**Cloudflare Durable Objects have a 128 MB memory budget per instance.**
|
|
6
|
+
|
|
7
|
+
PGlite + WASM Postgres + extension binaries pushes real deployments over that
|
|
8
|
+
budget. That is the dead end. zero-cache is still essential: it owns the sync
|
|
9
|
+
protocol, IVM/CVR machinery, replication handling, and client semantics.
|
|
10
|
+
|
|
11
|
+
The orez Cloudflare path is therefore:
|
|
12
|
+
|
|
13
|
+
- **yes** real `@rocicorp/zero` zero-cache
|
|
14
|
+
- **yes** Durable Object SQLite as the durable storage engine
|
|
15
|
+
- **yes** orez `DoBackend` serving Postgres-protocol semantics to zero-cache
|
|
16
|
+
- **no** PGlite
|
|
17
|
+
- **no** `pglite.wasm`, `pglite.data`, extension `.so` files, or WASM Postgres
|
|
18
|
+
|
|
19
|
+
## Production shape
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
┌────────────────────────────────────────────────────────────────┐
|
|
23
|
+
│ Worker │
|
|
24
|
+
│ │
|
|
25
|
+
│ /sync/v* and /api/zero/* ─────► ZERO_CACHE_DO singleton │
|
|
26
|
+
│ everything else ──────────────► ASSETS │
|
|
27
|
+
└────────────────────────────────────────────────────────────────┘
|
|
28
|
+
|
|
29
|
+
┌────────────────────────────────────────────────────────────────┐
|
|
30
|
+
│ ZERO_CACHE_DO Durable Object │
|
|
31
|
+
│ │
|
|
32
|
+
│ startZeroCacheEmbedCF() runs real zero-cache in-process │
|
|
33
|
+
│ │ │
|
|
34
|
+
│ ├─ zero-cache replica/CVR/CDB SQLite │
|
|
35
|
+
│ │ @rocicorp/zero-sqlite3 -> orez worker SQLite shim │
|
|
36
|
+
│ │ backed by ctx.storage.sql │
|
|
37
|
+
│ │ │
|
|
38
|
+
│ └─ zero-cache upstream Postgres connections │
|
|
39
|
+
│ postgres -> orez postgres browser shim │
|
|
40
|
+
│ DoBackend -> ZERO_SQL_DO /exec and /batch │
|
|
41
|
+
└────────────────────────────────────────────────────────────────┘
|
|
42
|
+
|
|
43
|
+
┌────────────────────────────────────────────────────────────────┐
|
|
44
|
+
│ ZERO_SQL_DO Durable Object │
|
|
45
|
+
│ │
|
|
46
|
+
│ ZeroDO raw SQL endpoints │
|
|
47
|
+
│ /exec, /batch, /changes, /notify, /__orez/* │
|
|
48
|
+
│ ctx.storage.sql │
|
|
49
|
+
│ _orez.changes populated by SQL tracking triggers │
|
|
50
|
+
└────────────────────────────────────────────────────────────────┘
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
All app traffic for a deployed project must use singleton DO IDs for both
|
|
54
|
+
`ZERO_CACHE_DO` and `ZERO_SQL_DO`; otherwise browser sessions will not share the
|
|
55
|
+
same zero-cache process and durable SQLite state.
|
|
56
|
+
|
|
57
|
+
## Important files
|
|
58
|
+
|
|
59
|
+
- `src/worker/zero-cache-embed-cf.ts` - starts real zero-cache inside a Durable
|
|
60
|
+
Object and wires its storage/network dependencies to CF-safe shims.
|
|
61
|
+
- `src/worker/cf-patches.ts` - patches zero-cache internals so its worker
|
|
62
|
+
graph and writer run in the Workers runtime.
|
|
63
|
+
- `src/pg-proxy-do-backend.ts` - translates Postgres protocol operations from
|
|
64
|
+
zero-cache into DO SQL endpoint requests.
|
|
65
|
+
- `src/cf-do/worker.ts` - `ZeroDO`, the generic DO SQL backend. It also still
|
|
66
|
+
contains a bespoke Zero sync protocol handler used for development and
|
|
67
|
+
protocol experiments, but the production Soot deploy path uses real
|
|
68
|
+
zero-cache through `startZeroCacheEmbedCF()`.
|
|
69
|
+
- `src/do-sql-tracking.ts` and `src/replication/*` - change tracking and
|
|
70
|
+
logical replication support over `_orez.changes`.
|
|
71
|
+
|
|
72
|
+
## What not to do
|
|
73
|
+
|
|
74
|
+
- Do not import `@electric-sql/pglite` into the Cloudflare DO deploy path.
|
|
75
|
+
- Do not bundle PGlite WASM/data/extensions into the deploy template.
|
|
76
|
+
- Do not replace zero-cache with the bespoke handler for production sync.
|
|
77
|
+
- Do not add a second fallback path that silently switches between PGlite,
|
|
78
|
+
bespoke sync, and zero-cache. There should be one production path:
|
|
79
|
+
zero-cache -> orez Postgres protocol -> DO SQLite.
|
|
80
|
+
|
|
81
|
+
If a future change needs more Postgres behavior, implement it in
|
|
82
|
+
`DoBackend`/the SQL translator or the DO SQL backend. Do not put PGlite back in
|
|
83
|
+
the request path.
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest'
|
|
2
|
+
|
|
3
|
+
import { DurableWatermarkState } from './watermark.js'
|
|
4
|
+
|
|
5
|
+
class FakeResult {
|
|
6
|
+
constructor(private readonly rows: Array<Record<string, unknown>> = []) {}
|
|
7
|
+
|
|
8
|
+
one() {
|
|
9
|
+
return this.rows[0]
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
toArray() {
|
|
13
|
+
return this.rows
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
class FakeSql {
|
|
18
|
+
changes: Array<{ watermark: number }> = []
|
|
19
|
+
state = 0
|
|
20
|
+
sequence = { name: '_orez___zero_watermark', last_value: 1, is_called: 0 }
|
|
21
|
+
|
|
22
|
+
exec(sql: string, ...params: unknown[]) {
|
|
23
|
+
if (sql.startsWith('CREATE TABLE IF NOT EXISTS')) return new FakeResult()
|
|
24
|
+
|
|
25
|
+
if (sql.startsWith('SELECT last_value FROM "_zero_change_state"')) {
|
|
26
|
+
return new FakeResult([{ last_value: this.state }])
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (sql.startsWith('INSERT OR IGNORE INTO "_zero_change_state"')) {
|
|
30
|
+
return new FakeResult()
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (sql.startsWith('UPDATE "_zero_change_state" SET last_value = ?')) {
|
|
34
|
+
this.state = Number(params[0])
|
|
35
|
+
return new FakeResult()
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (
|
|
39
|
+
sql.startsWith('SELECT COALESCE(MAX(watermark), 0) AS watermark FROM _zero_changes')
|
|
40
|
+
) {
|
|
41
|
+
const watermark = Math.max(0, ...this.changes.map((change) => change.watermark))
|
|
42
|
+
return new FakeResult([{ watermark }])
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (sql.includes('sqlite_master') && sql.includes('%zero_watermark%')) {
|
|
46
|
+
return new FakeResult([{ name: this.sequence.name }])
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (sql.startsWith('SELECT last_value, is_called FROM "_orez___zero_watermark"')) {
|
|
50
|
+
return new FakeResult([
|
|
51
|
+
{
|
|
52
|
+
last_value: this.sequence.last_value,
|
|
53
|
+
is_called: this.sequence.is_called,
|
|
54
|
+
},
|
|
55
|
+
])
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (sql.startsWith('INSERT OR IGNORE INTO "_orez___zero_watermark"')) {
|
|
59
|
+
return new FakeResult()
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (sql.startsWith('UPDATE "_orez___zero_watermark" SET last_value = ?')) {
|
|
63
|
+
this.sequence.last_value = Number(params[0])
|
|
64
|
+
this.sequence.is_called = 1
|
|
65
|
+
return new FakeResult()
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
throw new Error(`unexpected fake sql: ${sql}`)
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
describe('DurableWatermarkState', () => {
|
|
73
|
+
it('does not reuse watermarks after consumed changes are purged', () => {
|
|
74
|
+
const sql = new FakeSql()
|
|
75
|
+
const watermarks = new DurableWatermarkState(sql)
|
|
76
|
+
|
|
77
|
+
expect(watermarks.current()).toBe(0)
|
|
78
|
+
|
|
79
|
+
const first = watermarks.next()
|
|
80
|
+
sql.changes.push({ watermark: first })
|
|
81
|
+
watermarks.mark(first)
|
|
82
|
+
expect(first).toBe(1)
|
|
83
|
+
|
|
84
|
+
sql.changes = []
|
|
85
|
+
|
|
86
|
+
const second = watermarks.next()
|
|
87
|
+
sql.changes.push({ watermark: second })
|
|
88
|
+
watermarks.mark(second)
|
|
89
|
+
|
|
90
|
+
expect(second).toBe(2)
|
|
91
|
+
expect(sql.sequence).toMatchObject({ last_value: 2, is_called: 1 })
|
|
92
|
+
})
|
|
93
|
+
|
|
94
|
+
it('synchronizes from existing change rows and sequence state', () => {
|
|
95
|
+
const sql = new FakeSql()
|
|
96
|
+
sql.changes.push({ watermark: 7 })
|
|
97
|
+
const watermarks = new DurableWatermarkState(sql)
|
|
98
|
+
|
|
99
|
+
expect(watermarks.current()).toBe(7)
|
|
100
|
+
expect(sql.state).toBe(7)
|
|
101
|
+
expect(sql.sequence).toMatchObject({ last_value: 7, is_called: 1 })
|
|
102
|
+
})
|
|
103
|
+
})
|