orez 0.2.34 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bench/serial-mutations.bench.js +1 -1
- package/dist/cf-do/worker.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/pg-proxy-do-backend.d.ts +6 -0
- package/dist/pg-proxy-do-backend.d.ts.map +1 -1
- package/dist/pg-proxy-do-backend.js +230 -21
- package/dist/pg-proxy-do-backend.js.map +1 -1
- package/dist/pglite-manager.js +1 -1
- package/dist/worker/zero-cache-embed.d.ts.map +1 -1
- package/dist/worker/zero-cache-embed.js +5 -0
- package/dist/worker/zero-cache-embed.js.map +1 -1
- package/dist/zero-litestream-patch.d.ts +39 -0
- package/dist/zero-litestream-patch.d.ts.map +1 -0
- package/dist/zero-litestream-patch.js +80 -0
- package/dist/zero-litestream-patch.js.map +1 -0
- package/package.json +4 -4
package/dist/pglite-manager.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zero-cache-embed.d.ts","sourceRoot":"","sources":["../../src/worker/zero-cache-embed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;
|
|
1
|
+
{"version":3,"file":"zero-cache-embed.d.ts","sourceRoot":"","sources":["../../src/worker/zero-cache-embed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAOH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAElD,MAAM,WAAW,qBAAqB;IACpC,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAA;IAEd,mEAAmE;IACnE,UAAU,EAAE,MAAM,CAAA;IAElB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAA;IAEb,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAA;IAEhB,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAA;IAEnB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb,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,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IAEvB,iDAAiD;IACjD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAED;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,cAAc,CAAC,CAqMzB"}
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
*/
|
|
24
24
|
import EventEmitter from 'node:events';
|
|
25
25
|
import { resolve } from 'node:path';
|
|
26
|
+
import { disableZeroLitestreamRestore } from '../zero-litestream-patch.js';
|
|
26
27
|
/**
|
|
27
28
|
* start zero-cache in embedded (in-process) mode.
|
|
28
29
|
*
|
|
@@ -109,6 +110,10 @@ export async function startZeroCacheEmbed(opts) {
|
|
|
109
110
|
return Reflect.get(target, prop, receiver);
|
|
110
111
|
},
|
|
111
112
|
});
|
|
113
|
+
// orez owns the replica on disk and has no litestream backup; stop zero 1.5's
|
|
114
|
+
// change-streamer from erroring + resyncing on every restart. must run before
|
|
115
|
+
// the dynamic import below pulls in the litestream commands module.
|
|
116
|
+
disableZeroLitestreamRestore();
|
|
112
117
|
// import and start zero-cache's runner
|
|
113
118
|
let runWorkerFn;
|
|
114
119
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zero-cache-embed.js","sourceRoot":"","sources":["../../src/worker/zero-cache-embed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,YAAY,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA+
|
|
1
|
+
{"version":3,"file":"zero-cache-embed.js","sourceRoot":"","sources":["../../src/worker/zero-cache-embed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* neutralize zero-cache's litestream replica restore for orez.
|
|
3
|
+
*
|
|
4
|
+
* zero 1.5's dedicated change-streamer worker unconditionally calls
|
|
5
|
+
* `restoreReplica()` on startup whenever the change-log already has rows
|
|
6
|
+
* (i.e. on every restart after the first replication). it assumes a litestream
|
|
7
|
+
* backup exists to restore the SQLite replica from. orez has no litestream
|
|
8
|
+
* backup — it owns the replica on disk directly — so the restore throws
|
|
9
|
+
* "Missing --litestream-executable" (or "Missing required value" for the backup
|
|
10
|
+
* URL), which zero logs as an error and "recovers" from by wastefully
|
|
11
|
+
* re-syncing the entire replica from scratch.
|
|
12
|
+
*
|
|
13
|
+
* the correct config gate doesn't exist for the dedicated change-streamer:
|
|
14
|
+
* - leaving litestream unconfigured -> the error above + resync.
|
|
15
|
+
* - setting ZERO_LITESTREAM_BACKUP_URL to satisfy the restore -> switches the
|
|
16
|
+
* replicator into "serving-copy" mode (VACUUM INTO a copy on every start)
|
|
17
|
+
* and spawns a backup worker + litestream `replicate` subprocess. wrong for
|
|
18
|
+
* an ephemeral dev backend.
|
|
19
|
+
*
|
|
20
|
+
* so we patch the compiled `restoreReplica` to be a no-op when no litestream
|
|
21
|
+
* backup URL is configured. zero's own dispatcher (`main.js`) already gates all
|
|
22
|
+
* backup/restore work behind `litestream.backupURL`; this brings the dedicated
|
|
23
|
+
* change-streamer in line. a no-op restore leaves orez's existing local replica
|
|
24
|
+
* in place with the purge-lock held — identical to the path where a real
|
|
25
|
+
* restore found a backup matching the current replica — so the change-streamer
|
|
26
|
+
* resumes from the local replica and releases the lock on ownership assumption.
|
|
27
|
+
*
|
|
28
|
+
* this mirrors orez's existing in-place patching of @rocicorp/zero-sqlite3
|
|
29
|
+
* (see sqlite-mode/apply-mode.ts). it is idempotent and only touches orez's
|
|
30
|
+
* own resolved @rocicorp/zero, which is what every orez launch path (node
|
|
31
|
+
* spawn, node in-process, and the browser bundle built from these files) loads.
|
|
32
|
+
*/
|
|
33
|
+
/**
|
|
34
|
+
* patch zero-cache so the change-streamer's replica restore is a no-op when
|
|
35
|
+
* no litestream backup is configured. idempotent and safe to call on every
|
|
36
|
+
* startup.
|
|
37
|
+
*/
|
|
38
|
+
export declare function disableZeroLitestreamRestore(): void;
|
|
39
|
+
//# sourceMappingURL=zero-litestream-patch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zero-litestream-patch.d.ts","sourceRoot":"","sources":["../src/zero-litestream-patch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAwCH;;;;GAIG;AACH,wBAAgB,4BAA4B,IAAI,IAAI,CAmBnD"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* neutralize zero-cache's litestream replica restore for orez.
|
|
3
|
+
*
|
|
4
|
+
* zero 1.5's dedicated change-streamer worker unconditionally calls
|
|
5
|
+
* `restoreReplica()` on startup whenever the change-log already has rows
|
|
6
|
+
* (i.e. on every restart after the first replication). it assumes a litestream
|
|
7
|
+
* backup exists to restore the SQLite replica from. orez has no litestream
|
|
8
|
+
* backup — it owns the replica on disk directly — so the restore throws
|
|
9
|
+
* "Missing --litestream-executable" (or "Missing required value" for the backup
|
|
10
|
+
* URL), which zero logs as an error and "recovers" from by wastefully
|
|
11
|
+
* re-syncing the entire replica from scratch.
|
|
12
|
+
*
|
|
13
|
+
* the correct config gate doesn't exist for the dedicated change-streamer:
|
|
14
|
+
* - leaving litestream unconfigured -> the error above + resync.
|
|
15
|
+
* - setting ZERO_LITESTREAM_BACKUP_URL to satisfy the restore -> switches the
|
|
16
|
+
* replicator into "serving-copy" mode (VACUUM INTO a copy on every start)
|
|
17
|
+
* and spawns a backup worker + litestream `replicate` subprocess. wrong for
|
|
18
|
+
* an ephemeral dev backend.
|
|
19
|
+
*
|
|
20
|
+
* so we patch the compiled `restoreReplica` to be a no-op when no litestream
|
|
21
|
+
* backup URL is configured. zero's own dispatcher (`main.js`) already gates all
|
|
22
|
+
* backup/restore work behind `litestream.backupURL`; this brings the dedicated
|
|
23
|
+
* change-streamer in line. a no-op restore leaves orez's existing local replica
|
|
24
|
+
* in place with the purge-lock held — identical to the path where a real
|
|
25
|
+
* restore found a backup matching the current replica — so the change-streamer
|
|
26
|
+
* resumes from the local replica and releases the lock on ownership assumption.
|
|
27
|
+
*
|
|
28
|
+
* this mirrors orez's existing in-place patching of @rocicorp/zero-sqlite3
|
|
29
|
+
* (see sqlite-mode/apply-mode.ts). it is idempotent and only touches orez's
|
|
30
|
+
* own resolved @rocicorp/zero, which is what every orez launch path (node
|
|
31
|
+
* spawn, node in-process, and the browser bundle built from these files) loads.
|
|
32
|
+
*/
|
|
33
|
+
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
34
|
+
import { dirname, resolve } from 'node:path';
|
|
35
|
+
import { resolvePackage } from './sqlite-mode/package-resolve.js';
|
|
36
|
+
const OREZ_MARKER = '/* orez: litestream restore disabled (no backup configured) */';
|
|
37
|
+
// the early-return guard injected at the top of restoreReplica's body. when
|
|
38
|
+
// no backup URL is configured there is nothing to restore, so the local
|
|
39
|
+
// replica is used as-is and the change-streamer resumes from it.
|
|
40
|
+
const GUARD = `${OREZ_MARKER}\n\tif (!config.litestream?.backupURL) return;`;
|
|
41
|
+
/** locate the compiled litestream commands.js inside the resolved @rocicorp/zero */
|
|
42
|
+
function findLitestreamCommands() {
|
|
43
|
+
const zeroEntry = resolvePackage('@rocicorp/zero');
|
|
44
|
+
if (!zeroEntry)
|
|
45
|
+
return null;
|
|
46
|
+
// zeroEntry resolves to .../@rocicorp/zero/out/zero/src/zero.js (the "main").
|
|
47
|
+
// walk up to the package root, then into the known compiled location.
|
|
48
|
+
let dir = dirname(zeroEntry);
|
|
49
|
+
while (dir && !existsSync(resolve(dir, 'package.json'))) {
|
|
50
|
+
const parent = resolve(dir, '..');
|
|
51
|
+
if (parent === dir)
|
|
52
|
+
break;
|
|
53
|
+
dir = parent;
|
|
54
|
+
}
|
|
55
|
+
const commandsPath = resolve(dir, 'out', 'zero-cache', 'src', 'services', 'litestream', 'commands.js');
|
|
56
|
+
return existsSync(commandsPath) ? commandsPath : null;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* patch zero-cache so the change-streamer's replica restore is a no-op when
|
|
60
|
+
* no litestream backup is configured. idempotent and safe to call on every
|
|
61
|
+
* startup.
|
|
62
|
+
*/
|
|
63
|
+
export function disableZeroLitestreamRestore() {
|
|
64
|
+
const commandsPath = findLitestreamCommands();
|
|
65
|
+
if (!commandsPath)
|
|
66
|
+
return;
|
|
67
|
+
const content = readFileSync(commandsPath, 'utf-8');
|
|
68
|
+
if (content.includes(OREZ_MARKER))
|
|
69
|
+
return; // already patched
|
|
70
|
+
const anchor = 'async function restoreReplica(lc, config, replicaConstraints) {';
|
|
71
|
+
if (!content.includes(anchor)) {
|
|
72
|
+
// upstream shape changed — fail loudly rather than silently leaving the
|
|
73
|
+
// restore enabled, so the patch can be updated to match.
|
|
74
|
+
throw new Error(`orez: could not patch zero-cache litestream restore — restoreReplica signature not found in ${commandsPath}. ` +
|
|
75
|
+
`@rocicorp/zero may have changed; update zero-litestream-patch.ts.`);
|
|
76
|
+
}
|
|
77
|
+
const patched = content.replace(anchor, `${anchor}\n\t${GUARD}`);
|
|
78
|
+
writeFileSync(commandsPath, patched);
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=zero-litestream-patch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zero-litestream-patch.js","sourceRoot":"","sources":["../src/zero-litestream-patch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACjE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEjE,MAAM,WAAW,GAAG,gEAAgE,CAAA;AAEpF,4EAA4E;AAC5E,wEAAwE;AACxE,iEAAiE;AACjE,MAAM,KAAK,GAAG,GAAG,WAAW,gDAAgD,CAAA;AAE5E,oFAAoF;AACpF,SAAS,sBAAsB;IAC7B,MAAM,SAAS,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAA;IAClD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAA;IAE3B,8EAA8E;IAC9E,sEAAsE;IACtE,IAAI,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IAC5B,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,MAAK;QACzB,GAAG,GAAG,MAAM,CAAA;IACd,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EACH,KAAK,EACL,YAAY,EACZ,KAAK,EACL,UAAU,EACV,YAAY,EACZ,aAAa,CACd,CAAA;IACD,OAAO,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAA;AACvD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B;IAC1C,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAA;IAC7C,IAAI,CAAC,YAAY;QAAE,OAAM;IAEzB,MAAM,OAAO,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IACnD,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAM,CAAC,kBAAkB;IAE5D,MAAM,MAAM,GAAG,iEAAiE,CAAA;IAChF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,wEAAwE;QACxE,yDAAyD;QACzD,MAAM,IAAI,KAAK,CACb,+FAA+F,YAAY,IAAI;YAC7G,mEAAmE,CACtE,CAAA;IACH,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,MAAM,OAAO,KAAK,EAAE,CAAC,CAAA;IAChE,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;AACtC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "orez",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "PGlite-powered zero-sync development backend. No Docker required.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"@electric-sql/pglite": "0.4.1",
|
|
88
88
|
"@electric-sql/pglite-tools": "^0.3.1",
|
|
89
89
|
"@pgsql/traverse": "17.2.6",
|
|
90
|
-
"bedrock-sqlite": "0.
|
|
90
|
+
"bedrock-sqlite": "0.3.1",
|
|
91
91
|
"citty": "^0.2.0",
|
|
92
92
|
"pg-gateway": "0.3.0-beta.4",
|
|
93
93
|
"pgsql-parser": "^17.9.11",
|
|
@@ -103,8 +103,8 @@
|
|
|
103
103
|
}
|
|
104
104
|
},
|
|
105
105
|
"devDependencies": {
|
|
106
|
-
"@rocicorp/zero": "1.
|
|
107
|
-
"@rocicorp/zero-sqlite3": "
|
|
106
|
+
"@rocicorp/zero": "1.5.0",
|
|
107
|
+
"@rocicorp/zero-sqlite3": "1.0.18",
|
|
108
108
|
"@types/node": "^22.0.0",
|
|
109
109
|
"@types/ws": "^8.18.1",
|
|
110
110
|
"oxfmt": "latest",
|