orez 0.1.49 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/bench/proxy-throughput.bench.d.ts +13 -0
  2. package/dist/bench/proxy-throughput.bench.d.ts.map +1 -0
  3. package/dist/bench/proxy-throughput.bench.js +249 -0
  4. package/dist/bench/proxy-throughput.bench.js.map +1 -0
  5. package/dist/browser.d.ts.map +1 -1
  6. package/dist/browser.js +1 -0
  7. package/dist/browser.js.map +1 -1
  8. package/dist/cli.js +8 -0
  9. package/dist/cli.js.map +1 -1
  10. package/dist/config.d.ts +3 -0
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +6 -0
  13. package/dist/config.js.map +1 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +13 -93
  16. package/dist/index.js.map +1 -1
  17. package/dist/mutex.d.ts +2 -0
  18. package/dist/mutex.d.ts.map +1 -1
  19. package/dist/mutex.js +4 -0
  20. package/dist/mutex.js.map +1 -1
  21. package/dist/pg-proxy-browser.d.ts.map +1 -1
  22. package/dist/pg-proxy-browser.js +6 -1
  23. package/dist/pg-proxy-browser.js.map +1 -1
  24. package/dist/pg-proxy.d.ts.map +1 -1
  25. package/dist/pg-proxy.js +146 -75
  26. package/dist/pg-proxy.js.map +1 -1
  27. package/dist/pglite-ipc.d.ts +15 -0
  28. package/dist/pglite-ipc.d.ts.map +1 -1
  29. package/dist/pglite-ipc.js +24 -0
  30. package/dist/pglite-ipc.js.map +1 -1
  31. package/dist/pglite-manager.d.ts +13 -0
  32. package/dist/pglite-manager.d.ts.map +1 -1
  33. package/dist/pglite-manager.js +43 -3
  34. package/dist/pglite-manager.js.map +1 -1
  35. package/dist/pglite-worker-thread.d.ts +2 -0
  36. package/dist/pglite-worker-thread.d.ts.map +1 -1
  37. package/dist/pglite-worker-thread.js +35 -0
  38. package/dist/pglite-worker-thread.js.map +1 -1
  39. package/package.json +2 -2
  40. package/src/bench/proxy-throughput.bench.ts +343 -0
  41. package/src/browser.ts +1 -0
  42. package/src/cli.ts +9 -0
  43. package/src/config.ts +11 -0
  44. package/src/index.ts +15 -112
  45. package/src/mutex.ts +5 -0
  46. package/src/pg-proxy-browser.ts +6 -1
  47. package/src/pg-proxy.ts +159 -73
  48. package/src/pglite-ipc.ts +32 -0
  49. package/src/pglite-manager.ts +60 -3
  50. package/src/pglite-worker-thread.ts +39 -0
  51. package/src/worker/embed-integration.test.ts +1 -1
@@ -208,7 +208,7 @@ export async function createPGliteInstances(config) {
208
208
  createInstance(config, 'cdb', false),
209
209
  ]);
210
210
  await ensurePublication(postgres);
211
- return { postgres, cvr, cdb };
211
+ return { postgres, cvr, cdb, postgresReplicas: [] };
212
212
  }
213
213
  /**
214
214
  * create worker-backed pglite instances.
@@ -249,6 +249,7 @@ export async function createPGliteWorkerInstances(config) {
249
249
  postgres: pgProxy,
250
250
  cvr: cvrProxy,
251
251
  cdb: cdbProxy,
252
+ postgresReplicas: [],
252
253
  };
253
254
  }
254
255
  /**
@@ -264,7 +265,7 @@ export async function createSinglePGliteInstance(config) {
264
265
  const db = await createInstance(config, 'postgres', true);
265
266
  await ensurePublication(db);
266
267
  // same instance for all three — pg-proxy detects this and shares a mutex
267
- return { postgres: db, cvr: db, cdb: db };
268
+ return { postgres: db, cvr: db, cdb: db, postgresReplicas: [] };
268
269
  }
269
270
  /**
270
271
  * create a single worker-backed pglite instance shared across all databases.
@@ -293,7 +294,7 @@ export async function createSinglePGliteWorkerInstance(config) {
293
294
  log.pglite('single worker thread ready');
294
295
  await ensurePublication(proxy);
295
296
  const db = proxy;
296
- return { postgres: db, cvr: db, cdb: db };
297
+ return { postgres: db, cvr: db, cdb: db, postgresReplicas: [] };
297
298
  }
298
299
  /** create a single worker-backed PGlite instance (for CVR/CDB recreation during reset) */
299
300
  export function createPGliteWorker(dataDir, name) {
@@ -305,6 +306,45 @@ export function createPGliteWorker(dataDir, name) {
305
306
  pgliteOptions: {},
306
307
  });
307
308
  }
309
+ /**
310
+ * create read replicas of the postgres instance.
311
+ *
312
+ * dumps the primary's data directory and initializes N new worker threads
313
+ * from the dump. each replica is an independent PGlite instance on its own
314
+ * core, handling read queries concurrently.
315
+ *
316
+ * call this AFTER migrations, seed, on-db-ready — the dump captures the
317
+ * full database state at the time of cloning.
318
+ */
319
+ export async function createReadReplicas(primary, count, config) {
320
+ if (count <= 0)
321
+ return [];
322
+ const proxy = primary;
323
+ if (typeof proxy.dumpDataDir !== 'function') {
324
+ log.pglite('read replicas require worker threads (dumpDataDir not available)');
325
+ return [];
326
+ }
327
+ log.pglite(`creating ${count} read replica(s)...`);
328
+ const t0 = performance.now();
329
+ const dump = await proxy.dumpDataDir();
330
+ log.debug.pglite(`primary dump: ${(dump.byteLength / 1024 / 1024).toFixed(1)}MB`);
331
+ const { dataDir: _ud, debug: _dbg, ...userOpts } = config.pgliteOptions;
332
+ const replicas = [];
333
+ for (let i = 0; i < count; i++) {
334
+ const replica = new PGliteWorkerProxy({
335
+ dataDir: 'memory://',
336
+ name: `postgres-replica-${i}`,
337
+ withExtensions: true,
338
+ debug: config.logLevel === 'debug' ? 1 : 0,
339
+ pgliteOptions: userOpts,
340
+ loadDataDir: dump,
341
+ });
342
+ replicas.push(replica);
343
+ }
344
+ await Promise.all(replicas.map((r) => r.waitReady));
345
+ log.pglite(`${count} read replica(s) ready in ${(performance.now() - t0).toFixed(0)}ms`);
346
+ return replicas;
347
+ }
308
348
  /** run pending migrations, returns count of newly applied migrations */
309
349
  export async function runMigrations(db, config) {
310
350
  if (!config.migrationsDir) {
@@ -1 +1 @@
1
- {"version":3,"file":"pglite-manager.js","sourceRoot":"","sources":["../src/pglite-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,GACX,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAA;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAA;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAA;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAA;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAA;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,oCAAoC,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAA;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAA;AAEpD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAInD,wDAAwD;AACxD,SAAS,gBAAgB,CAAC,GAAW;IACnC,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA,CAAC,kDAAkD;QACvE,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,gDAAgD;AAChD,qCAAqC;AACrC,SAAS,eAAe,CAAC,QAAgB;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAA;IAChD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAA;IAEtC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC9C,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAEhD,IAAI,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,2CAA2C;YAC3C,OAAO,KAAK,CAAA;QACd,CAAC;QAED,wCAAwC;QACxC,MAAM,SAAS,GAAG;YAChB,OAAO;YACP,GAAG,WAAW,CAAC,QAAQ,CAAC;iBACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;iBACxC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;SACjC,CAAA;QAED,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,UAAU,CAAC,IAAI,CAAC,CAAA;YAClB,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;QAED,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAA;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAQD,4DAA4D;AAE5D,+EAA+E;AAC/E,SAAS,cAAc,CAAC,MAAsB;IAC5C,MAAM,aAAa,GAAI,MAAM,CAAC,aAAqC,EAAE,OAAO,CAAA;IAC5E,IAAI,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACrE,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;QACrD,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAA;QAC9D,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACxD,UAAU,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;YACpC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;AACH,CAAC;AAED,uFAAuF;AACvF,KAAK,UAAU,iBAAiB,CAAC,EAGhC;IACC,MAAM,EAAE,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;IAEvD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE,CAAA;IACzD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CACzB,iEAAiE,EACjE,CAAC,OAAO,CAAC,CACV,CAAA;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAA;YACtD,MAAM,EAAE,CAAC,IAAI,CAAC,sBAAsB,MAAM,EAAE,CAAC,CAAA;QAC/C,CAAC;IACH,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,MAAM,iBAAiB,GAAG;IACxB,UAAU;IACV,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,oBAAoB;IACpB,IAAI;IACJ,qBAAqB;IACrB,IAAI;IACJ,uBAAuB;CACxB,CAAA;AAED,iEAAiE;AACjE,MAAM,iBAAiB,GAAG;IACxB,GAAG,iBAAiB;IACpB,IAAI;IACJ,sBAAsB;IACtB,IAAI;IACJ,kBAAkB;IAClB,IAAI;IACJ,eAAe;IACf,IAAI;IACJ,0BAA0B;IAC1B,IAAI;IACJ,oBAAoB;CACrB,CAAA;AAED,4DAA4D;AAC5D,KAAK,UAAU,cAAc,CAC3B,MAAsB,EACtB,IAAY,EACZ,cAAuB;IAEvB,MAAM,EACJ,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,IAAI,EACX,GAAG,QAAQ,EACZ,GAAG,MAAM,CAAC,aAAoC,CAAA;IAE/C,MAAM,SAAS,GAAG,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;IACxF,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,CAAA;IAEpF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACxC,gEAAgE;QAChE,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAA;QACpD,CAAC;IACH,CAAC;IAED,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,IAAI,gBAAgB,QAAQ,EAAE,CAAC,CAAA;IAE5D,MAAM,MAAM,GAAG,cAAc,CAAA;IAE7B,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC;YACpB,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,iBAAiB,EAAE,IAAI;YACvB,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI;YAC3D,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;YACrD,yEAAyE;YACzE,GAAG,CAAC,MAAM;gBACR,CAAC,CAAC;oBACE,WAAW,EAAE;wBACX,GAAG,iBAAiB;wBACpB,IAAI;wBACJ,oBAAoB;wBACpB,IAAI;wBACJ,iBAAiB;qBAClB;oBACD,GAAG,QAAQ;oBACX,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI;wBACjC,MAAM;wBACN,OAAO;wBACP,QAAQ;wBACR,SAAS;wBACT,MAAM;wBACN,MAAM;wBACN,KAAK;wBACL,aAAa;wBACb,SAAS;wBACT,UAAU;wBACV,IAAI;wBACJ,aAAa;qBACd;iBACF;gBACH,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;SACxB,CAAC,CAAA;QAEF,MAAM,EAAE,CAAC,SAAS,CAAA;QAElB,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,EAAE,CAAC,IAAI,CAAC;;;;;;OAMb,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QACjC,CAAC;QAED,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAA;QACjC,OAAO,EAAE,CAAA;IACX,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QACvB,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5D,GAAG,CAAC,MAAM,CAAC,mBAAmB,IAAI,WAAW,CAAC,CAAA;YAC9C,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACd,GAAG,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAA;YAC5D,GAAG,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAA;YACjC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACd,GAAG,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAA;YACrC,GAAG,CAAC,MAAM,CAAC,cAAc,QAAQ,mBAAmB,QAAQ,aAAa,CAAC,CAAA;YAC1E,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACd,GAAG,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAA;YAC5C,GAAG,CAAC,MAAM,CACR,eAAe,MAAM,CAAC,OAAO,aAAa,MAAM,CAAC,OAAO,mBAAmB,CAC5E,CAAA;YACD,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAChB,CAAC;QACD,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAsB;IAEtB,cAAc,CAAC,MAAM,CAAC,CAAA;IAEtB,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7C,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC;QACxC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;QACpC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;KACrC,CAAC,CAAA;IAEF,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IACjC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;AAC/B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,MAAsB;IAEtB,cAAc,CAAC,MAAM,CAAC,CAAA;IAEtB,MAAM,aAAa,GAAI,MAAM,CAAC,aAAqC,EAAE,OAAO,CAAA;IAC5E,MAAM,SAAS,GACb,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;IAC5E,MAAM,EACJ,OAAO,EAAE,GAAG,EACZ,KAAK,EAAE,IAAI,EACX,GAAG,QAAQ,EACZ,GAAG,MAAM,CAAC,aAAoC,CAAA;IAE/C,SAAS,gBAAgB,CAAC,IAAY,EAAE,cAAuB;QAC7D,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,CAAA;QACpF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACxC,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9B,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAA;YACpD,CAAC;QACH,CAAC;QACD,OAAO;YACL,OAAO,EAAE,QAAQ;YACjB,IAAI;YACJ,cAAc;YACd,KAAK,EAAE,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,aAAa,EAAE,QAAQ;SACxB,CAAA;IACH,CAAC;IAED,GAAG,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAA;IAE5D,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAA;IACzE,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;IACtE,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;IAEtE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAA;IAC9E,GAAG,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAA;IAEtC,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAEhC,OAAO;QACL,QAAQ,EAAE,OAA4B;QACtC,GAAG,EAAE,QAA6B;QAClC,GAAG,EAAE,QAA6B;KACnC,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAAsB;IAEtB,cAAc,CAAC,MAAM,CAAC,CAAA;IACtB,GAAG,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAA;IAEpD,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;IACzD,MAAM,iBAAiB,CAAC,EAAE,CAAC,CAAA;IAE3B,yEAAyE;IACzE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAA;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,MAAsB;IAEtB,cAAc,CAAC,MAAM,CAAC,CAAA;IAEtB,MAAM,aAAa,GAAI,MAAM,CAAC,aAAqC,EAAE,OAAO,CAAA;IAC5E,MAAM,SAAS,GACb,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;IAC5E,MAAM,EACJ,OAAO,EAAE,GAAG,EACZ,KAAK,EAAE,IAAI,EACX,GAAG,QAAQ,EACZ,GAAG,MAAM,CAAC,aAAoC,CAAA;IAE/C,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAA;IACrF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACxC,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAA;QACrD,CAAC;IACH,CAAC;IAED,GAAG,CAAC,MAAM,CAAC,6CAA6C,CAAC,CAAA;IAEzD,MAAM,KAAK,GAAG,IAAI,iBAAiB,CAAC;QAClC,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,UAAU;QAChB,cAAc,EAAE,IAAI;QACpB,KAAK,EAAE,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,aAAa,EAAE,QAAQ;KACxB,CAAC,CAAA;IAEF,MAAM,KAAK,CAAC,SAAS,CAAA;IACrB,GAAG,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAA;IAExC,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAA;IAE9B,MAAM,EAAE,GAAG,KAA0B,CAAA;IACrC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAA;AAC3C,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,IAAY;IAC9D,OAAO,IAAI,iBAAiB,CAAC;QAC3B,OAAO;QACP,IAAI;QACJ,cAAc,EAAE,KAAK;QACrB,KAAK,EAAE,CAAC;QACR,aAAa,EAAE,EAAE;KAClB,CAAC,CAAA;AACJ,CAAC;AAED,wEAAwE;AACxE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAAU,EAAE,MAAsB;IACpE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC1B,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAA;QAC9D,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;IACnD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAA;QACzD,OAAO,CAAC,CAAA;IACV,CAAC;IAED,mCAAmC;IACnC,MAAM,EAAE,CAAC,IAAI,CAAC;;;;;;GAMb,CAAC,CAAA;IAEF,mDAAmD;IACnD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,eAAe,CAAC,CAAA;IAChE,IAAI,KAAe,CAAA;IACnB,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAA;QAC9D,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAkB,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAA;IACrE,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC;aAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aACjC,IAAI,EAAE,CAAA;IACX,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAEvC,2BAA2B;QAC3B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAC3B,iEAAiE,EACjE,CAAC,IAAI,CAAC,CACP,CAAA;QACD,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,SAAQ;QACV,CAAC;QAED,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAA;QAC7C,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;QAE5D,iDAAiD;QACjD,MAAM,UAAU,GAAG,GAAG;aACnB,KAAK,CAAC,0BAA0B,CAAC;aACjC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC,CAAA;QAElB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrB,CAAC;QAED,MAAM,EAAE,CAAC,KAAK,CAAC,kDAAkD,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;QAC1E,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAA;QAC5C,OAAO,EAAE,CAAA;IACX,CAAC;IAED,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IACrC,OAAO,OAAO,CAAA;AAChB,CAAC"}
1
+ {"version":3,"file":"pglite-manager.js","sourceRoot":"","sources":["../src/pglite-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,GACX,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAA;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAA;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAA;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAA;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAA;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,oCAAoC,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAA;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAA;AAEpD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAInD,wDAAwD;AACxD,SAAS,gBAAgB,CAAC,GAAW;IACnC,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA,CAAC,kDAAkD;QACvE,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,gDAAgD;AAChD,qCAAqC;AACrC,SAAS,eAAe,CAAC,QAAgB;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAA;IAChD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAA;IAEtC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC9C,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAEhD,IAAI,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,2CAA2C;YAC3C,OAAO,KAAK,CAAA;QACd,CAAC;QAED,wCAAwC;QACxC,MAAM,SAAS,GAAG;YAChB,OAAO;YACP,GAAG,WAAW,CAAC,QAAQ,CAAC;iBACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;iBACxC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;SACjC,CAAA;QAED,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,UAAU,CAAC,IAAI,CAAC,CAAA;YAClB,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;QAED,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAA;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAUD,4DAA4D;AAE5D,+EAA+E;AAC/E,SAAS,cAAc,CAAC,MAAsB;IAC5C,MAAM,aAAa,GAAI,MAAM,CAAC,aAAqC,EAAE,OAAO,CAAA;IAC5E,IAAI,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACrE,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;QACrD,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAA;QAC9D,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACxD,UAAU,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;YACpC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;AACH,CAAC;AAED,uFAAuF;AACvF,KAAK,UAAU,iBAAiB,CAAC,EAGhC;IACC,MAAM,EAAE,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;IAEvD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE,CAAA;IACzD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CACzB,iEAAiE,EACjE,CAAC,OAAO,CAAC,CACV,CAAA;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAA;YACtD,MAAM,EAAE,CAAC,IAAI,CAAC,sBAAsB,MAAM,EAAE,CAAC,CAAA;QAC/C,CAAC;IACH,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,MAAM,iBAAiB,GAAG;IACxB,UAAU;IACV,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,oBAAoB;IACpB,IAAI;IACJ,qBAAqB;IACrB,IAAI;IACJ,uBAAuB;CACxB,CAAA;AAED,iEAAiE;AACjE,MAAM,iBAAiB,GAAG;IACxB,GAAG,iBAAiB;IACpB,IAAI;IACJ,sBAAsB;IACtB,IAAI;IACJ,kBAAkB;IAClB,IAAI;IACJ,eAAe;IACf,IAAI;IACJ,0BAA0B;IAC1B,IAAI;IACJ,oBAAoB;CACrB,CAAA;AAED,4DAA4D;AAC5D,KAAK,UAAU,cAAc,CAC3B,MAAsB,EACtB,IAAY,EACZ,cAAuB;IAEvB,MAAM,EACJ,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,IAAI,EACX,GAAG,QAAQ,EACZ,GAAG,MAAM,CAAC,aAAoC,CAAA;IAE/C,MAAM,SAAS,GAAG,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;IACxF,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,CAAA;IAEpF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACxC,gEAAgE;QAChE,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAA;QACpD,CAAC;IACH,CAAC;IAED,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,IAAI,gBAAgB,QAAQ,EAAE,CAAC,CAAA;IAE5D,MAAM,MAAM,GAAG,cAAc,CAAA;IAE7B,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC;YACpB,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,iBAAiB,EAAE,IAAI;YACvB,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI;YAC3D,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;YACrD,yEAAyE;YACzE,GAAG,CAAC,MAAM;gBACR,CAAC,CAAC;oBACE,WAAW,EAAE;wBACX,GAAG,iBAAiB;wBACpB,IAAI;wBACJ,oBAAoB;wBACpB,IAAI;wBACJ,iBAAiB;qBAClB;oBACD,GAAG,QAAQ;oBACX,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI;wBACjC,MAAM;wBACN,OAAO;wBACP,QAAQ;wBACR,SAAS;wBACT,MAAM;wBACN,MAAM;wBACN,KAAK;wBACL,aAAa;wBACb,SAAS;wBACT,UAAU;wBACV,IAAI;wBACJ,aAAa;qBACd;iBACF;gBACH,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;SACxB,CAAC,CAAA;QAEF,MAAM,EAAE,CAAC,SAAS,CAAA;QAElB,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,EAAE,CAAC,IAAI,CAAC;;;;;;OAMb,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QACjC,CAAC;QAED,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAA;QACjC,OAAO,EAAE,CAAA;IACX,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QACvB,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5D,GAAG,CAAC,MAAM,CAAC,mBAAmB,IAAI,WAAW,CAAC,CAAA;YAC9C,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACd,GAAG,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAA;YAC5D,GAAG,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAA;YACjC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACd,GAAG,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAA;YACrC,GAAG,CAAC,MAAM,CAAC,cAAc,QAAQ,mBAAmB,QAAQ,aAAa,CAAC,CAAA;YAC1E,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACd,GAAG,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAA;YAC5C,GAAG,CAAC,MAAM,CACR,eAAe,MAAM,CAAC,OAAO,aAAa,MAAM,CAAC,OAAO,mBAAmB,CAC5E,CAAA;YACD,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAChB,CAAC;QACD,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAsB;IAEtB,cAAc,CAAC,MAAM,CAAC,CAAA;IAEtB,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7C,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC;QACxC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;QACpC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;KACrC,CAAC,CAAA;IAEF,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IACjC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAA;AACrD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,MAAsB;IAEtB,cAAc,CAAC,MAAM,CAAC,CAAA;IAEtB,MAAM,aAAa,GAAI,MAAM,CAAC,aAAqC,EAAE,OAAO,CAAA;IAC5E,MAAM,SAAS,GACb,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;IAC5E,MAAM,EACJ,OAAO,EAAE,GAAG,EACZ,KAAK,EAAE,IAAI,EACX,GAAG,QAAQ,EACZ,GAAG,MAAM,CAAC,aAAoC,CAAA;IAE/C,SAAS,gBAAgB,CAAC,IAAY,EAAE,cAAuB;QAC7D,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,CAAA;QACpF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACxC,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9B,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAA;YACpD,CAAC;QACH,CAAC;QACD,OAAO;YACL,OAAO,EAAE,QAAQ;YACjB,IAAI;YACJ,cAAc;YACd,KAAK,EAAE,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,aAAa,EAAE,QAAQ;SACxB,CAAA;IACH,CAAC;IAED,GAAG,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAA;IAE5D,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAA;IACzE,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;IACtE,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;IAEtE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAA;IAC9E,GAAG,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAA;IAEtC,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAEhC,OAAO;QACL,QAAQ,EAAE,OAA4B;QACtC,GAAG,EAAE,QAA6B;QAClC,GAAG,EAAE,QAA6B;QAClC,gBAAgB,EAAE,EAAE;KACrB,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAAsB;IAEtB,cAAc,CAAC,MAAM,CAAC,CAAA;IACtB,GAAG,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAA;IAEpD,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;IACzD,MAAM,iBAAiB,CAAC,EAAE,CAAC,CAAA;IAE3B,yEAAyE;IACzE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAA;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,MAAsB;IAEtB,cAAc,CAAC,MAAM,CAAC,CAAA;IAEtB,MAAM,aAAa,GAAI,MAAM,CAAC,aAAqC,EAAE,OAAO,CAAA;IAC5E,MAAM,SAAS,GACb,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;IAC5E,MAAM,EACJ,OAAO,EAAE,GAAG,EACZ,KAAK,EAAE,IAAI,EACX,GAAG,QAAQ,EACZ,GAAG,MAAM,CAAC,aAAoC,CAAA;IAE/C,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAA;IACrF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACxC,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAA;QACrD,CAAC;IACH,CAAC;IAED,GAAG,CAAC,MAAM,CAAC,6CAA6C,CAAC,CAAA;IAEzD,MAAM,KAAK,GAAG,IAAI,iBAAiB,CAAC;QAClC,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,UAAU;QAChB,cAAc,EAAE,IAAI;QACpB,KAAK,EAAE,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,aAAa,EAAE,QAAQ;KACxB,CAAC,CAAA;IAEF,MAAM,KAAK,CAAC,SAAS,CAAA;IACrB,GAAG,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAA;IAExC,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAA;IAE9B,MAAM,EAAE,GAAG,KAA0B,CAAA;IACrC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAA;AACjE,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,IAAY;IAC9D,OAAO,IAAI,iBAAiB,CAAC;QAC3B,OAAO;QACP,IAAI;QACJ,cAAc,EAAE,KAAK;QACrB,KAAK,EAAE,CAAC;QACR,aAAa,EAAE,EAAE;KAClB,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAe,EACf,KAAa,EACb,MAAsB;IAEtB,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,EAAE,CAAA;IAEzB,MAAM,KAAK,GAAG,OAAuC,CAAA;IACrD,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;QAC5C,GAAG,CAAC,MAAM,CAAC,kEAAkE,CAAC,CAAA;QAC9E,OAAO,EAAE,CAAA;IACX,CAAC;IAED,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,qBAAqB,CAAC,CAAA;IAClD,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;IAE5B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAA;IACtC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAEjF,MAAM,EACJ,OAAO,EAAE,GAAG,EACZ,KAAK,EAAE,IAAI,EACX,GAAG,QAAQ,EACZ,GAAG,MAAM,CAAC,aAAoC,CAAA;IAE/C,MAAM,QAAQ,GAAwB,EAAE,CAAA;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC;YACpC,OAAO,EAAE,WAAW;YACpB,IAAI,EAAE,oBAAoB,CAAC,EAAE;YAC7B,cAAc,EAAE,IAAI;YACpB,KAAK,EAAE,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,aAAa,EAAE,QAAQ;YACvB,WAAW,EAAE,IAAI;SAClB,CAAC,CAAA;QACF,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxB,CAAC;IAED,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;IACnD,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,6BAA6B,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAExF,OAAO,QAA+B,CAAA;AACxC,CAAC;AAED,wEAAwE;AACxE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAAU,EAAE,MAAsB;IACpE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC1B,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAA;QAC9D,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;IACnD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAA;QACzD,OAAO,CAAC,CAAA;IACV,CAAC;IAED,mCAAmC;IACnC,MAAM,EAAE,CAAC,IAAI,CAAC;;;;;;GAMb,CAAC,CAAA;IAEF,mDAAmD;IACnD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,eAAe,CAAC,CAAA;IAChE,IAAI,KAAe,CAAA;IACnB,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAA;QAC9D,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAkB,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAA;IACrE,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC;aAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aACjC,IAAI,EAAE,CAAA;IACX,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAEvC,2BAA2B;QAC3B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAC3B,iEAAiE,EACjE,CAAC,IAAI,CAAC,CACP,CAAA;QACD,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,SAAQ;QACV,CAAC;QAED,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAA;QAC7C,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;QAE5D,iDAAiD;QACjD,MAAM,UAAU,GAAG,GAAG;aACnB,KAAK,CAAC,0BAA0B,CAAC;aACjC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC,CAAA;QAElB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrB,CAAC;QAED,MAAM,EAAE,CAAC,KAAK,CAAC,kDAAkD,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;QAC1E,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAA;QAC5C,OAAO,EAAE,CAAA;IACX,CAAC;IAED,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IACrC,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -11,5 +11,7 @@ export interface WorkerInitConfig {
11
11
  withExtensions: boolean;
12
12
  debug: number;
13
13
  pgliteOptions?: Record<string, unknown>;
14
+ /** tar dump from another instance's dumpDataDir() — used for read replicas */
15
+ loadDataDir?: ArrayBuffer;
14
16
  }
15
17
  //# sourceMappingURL=pglite-worker-thread.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pglite-worker-thread.d.ts","sourceRoot":"","sources":["../src/pglite-worker-thread.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAkBH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,OAAO,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACxC"}
1
+ {"version":3,"file":"pglite-worker-thread.d.ts","sourceRoot":"","sources":["../src/pglite-worker-thread.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAkBH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,OAAO,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC,8EAA8E;IAC9E,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B"}
@@ -56,6 +56,7 @@ async function init() {
56
56
  dataDir: config.dataDir,
57
57
  debug: config.debug,
58
58
  relaxedDurability: true,
59
+ ...(config.loadDataDir ? { loadDataDir: new Blob([config.loadDataDir]) } : {}),
59
60
  initialMemory: isMain ? 32 * 1024 * 1024 : 16 * 1024 * 1024,
60
61
  ...(isMain ? {} : { startParams: ZERO_START_PARAMS }),
61
62
  ...(isMain
@@ -113,6 +114,33 @@ port.on('message', async (msg) => {
113
114
  port.postMessage({ type: 'result', id, data: buf }, [buf]);
114
115
  break;
115
116
  }
117
+ case 'execProtocolRawBatch': {
118
+ // execute multiple wire protocol messages serially, return concatenated result.
119
+ // eliminates N-1 IPC round-trips for extended protocol pipelines.
120
+ const buffers = msg.buffers;
121
+ const opts = msg.options;
122
+ const resultParts = [];
123
+ let totalLen = 0;
124
+ for (const ab of buffers) {
125
+ const input = new Uint8Array(ab);
126
+ const result = await db.execProtocolRaw(input, opts);
127
+ // copy each result (pglite reuses wasm memory between calls)
128
+ const copy = new Uint8Array(result.byteLength);
129
+ copy.set(result);
130
+ resultParts.push(copy);
131
+ totalLen += copy.byteLength;
132
+ }
133
+ // concatenate all results into one transferable buffer
134
+ const combined = new ArrayBuffer(totalLen);
135
+ const view = new Uint8Array(combined);
136
+ let offset = 0;
137
+ for (const part of resultParts) {
138
+ view.set(part, offset);
139
+ offset += part.byteLength;
140
+ }
141
+ port.postMessage({ type: 'result', id, data: combined }, [combined]);
142
+ break;
143
+ }
116
144
  case 'query': {
117
145
  const result = await db.query(msg.sql, msg.params);
118
146
  port.postMessage({
@@ -149,6 +177,13 @@ port.on('message', async (msg) => {
149
177
  port.postMessage({ type: 'result', id });
150
178
  break;
151
179
  }
180
+ case 'dumpDataDir': {
181
+ const dump = await db.dumpDataDir('none');
182
+ // convert Blob/File to ArrayBuffer for transfer
183
+ const arrayBuf = await dump.arrayBuffer();
184
+ port.postMessage({ type: 'result', id, data: arrayBuf }, [arrayBuf]);
185
+ break;
186
+ }
152
187
  case 'close': {
153
188
  for (const unsub of listeners.values()) {
154
189
  await unsub().catch(() => { });
@@ -1 +1 @@
1
- {"version":3,"file":"pglite-worker-thread.js","sourceRoot":"","sources":["../src/pglite-worker-thread.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pglite-worker-thread.js","sourceRoot":"","sources":["../src/pglite-worker-thread.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "orez",
3
- "version": "0.1.49",
3
+ "version": "0.2.0",
4
4
  "description": "PGlite-powered zero-sync development backend. No Docker required.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -64,7 +64,7 @@
64
64
  "dependencies": {
65
65
  "@electric-sql/pglite": "0.4.1",
66
66
  "@electric-sql/pglite-tools": "^0.3.1",
67
- "bedrock-sqlite": "0.1.49",
67
+ "bedrock-sqlite": "0.2.0",
68
68
  "citty": "^0.2.0",
69
69
  "pg-gateway": "0.3.0-beta.4",
70
70
  "pgsql-parser": "^17.9.11",
@@ -0,0 +1,343 @@
1
+ /**
2
+ * benchmark: proxy throughput
3
+ *
4
+ * measures raw query throughput through the TCP proxy pipeline:
5
+ * TCP socket → main thread proxy → worker thread → PGlite WASM → back
6
+ *
7
+ * tests both serial and concurrent query patterns to expose
8
+ * single-thread bottlenecks and mutex contention.
9
+ *
10
+ * run: bun src/bench/proxy-throughput.bench.ts
11
+ */
12
+
13
+ import { createConnection, type Socket } from 'node:net'
14
+
15
+ import { startZeroLite } from '../index.js'
16
+
17
+ import type { PGlite } from '@electric-sql/pglite'
18
+
19
+ const textEncoder = new TextEncoder()
20
+ const textDecoder = new TextDecoder()
21
+
22
+ // --- wire protocol helpers ---
23
+
24
+ function buildSimpleQuery(sql: string): Uint8Array {
25
+ const queryBytes = textEncoder.encode(sql + '\0')
26
+ const buf = new Uint8Array(5 + queryBytes.length)
27
+ buf[0] = 0x51 // 'Q'
28
+ new DataView(buf.buffer).setInt32(1, 4 + queryBytes.length)
29
+ buf.set(queryBytes, 5)
30
+ return buf
31
+ }
32
+
33
+ function buildStartupMessage(user: string, database: string): Buffer {
34
+ const params = `user\0${user}\0database\0${database}\0\0`
35
+ const paramsBytes = Buffer.from(params, 'utf-8')
36
+ const len = 4 + 4 + paramsBytes.length // length + protocol version + params
37
+ const buf = Buffer.alloc(len)
38
+ buf.writeInt32BE(len, 0)
39
+ buf.writeInt32BE(196608, 4) // protocol 3.0
40
+ paramsBytes.copy(buf, 8)
41
+ return buf
42
+ }
43
+
44
+ function buildPasswordMessage(password: string): Buffer {
45
+ const passBytes = Buffer.from(password + '\0', 'utf-8')
46
+ const len = 4 + passBytes.length
47
+ const buf = Buffer.alloc(1 + len)
48
+ buf[0] = 0x70 // 'p'
49
+ buf.writeInt32BE(len, 1)
50
+ passBytes.copy(buf, 5)
51
+ return buf
52
+ }
53
+
54
+ // read messages from socket until we get ReadyForQuery (0x5a)
55
+ function readUntilReady(socket: Socket): Promise<Buffer[]> {
56
+ return new Promise((resolve, reject) => {
57
+ const messages: Buffer[] = []
58
+ let buffer = Buffer.alloc(0)
59
+ const timeout = setTimeout(
60
+ () => reject(new Error('timeout waiting for ReadyForQuery')),
61
+ 10000
62
+ )
63
+
64
+ const onData = (data: Buffer) => {
65
+ buffer = Buffer.concat([buffer, data])
66
+ // parse complete messages
67
+ while (buffer.length >= 5) {
68
+ const msgType = buffer[0]
69
+ const msgLen = buffer.readInt32BE(1)
70
+ const totalLen = 1 + msgLen
71
+ if (buffer.length < totalLen) break
72
+ const msg = buffer.subarray(0, totalLen)
73
+ messages.push(Buffer.from(msg))
74
+ buffer = buffer.subarray(totalLen)
75
+ if (msgType === 0x5a) {
76
+ // ReadyForQuery
77
+ clearTimeout(timeout)
78
+ socket.off('data', onData)
79
+ resolve(messages)
80
+ return
81
+ }
82
+ }
83
+ }
84
+ socket.on('data', onData)
85
+ socket.on('error', (err) => {
86
+ clearTimeout(timeout)
87
+ reject(err)
88
+ })
89
+ })
90
+ }
91
+
92
+ async function connectPg(
93
+ port: number,
94
+ user: string,
95
+ password: string,
96
+ database = 'postgres'
97
+ ): Promise<Socket> {
98
+ const socket = await new Promise<Socket>((resolve, reject) => {
99
+ const s = createConnection({ host: '127.0.0.1', port }, () => resolve(s))
100
+ s.setMaxListeners(0) // suppress MaxListenersExceeded warnings for benchmarks
101
+ s.on('error', reject)
102
+ })
103
+ socket.setNoDelay(true)
104
+
105
+ // startup
106
+ socket.write(buildStartupMessage(user, database))
107
+
108
+ // wait for auth request
109
+ await new Promise<void>((resolve) => {
110
+ const onData = (data: Buffer) => {
111
+ if (data[0] === 0x52) {
112
+ // AuthenticationCleartextPassword
113
+ socket.off('data', onData)
114
+ resolve()
115
+ }
116
+ }
117
+ socket.on('data', onData)
118
+ })
119
+
120
+ // send password
121
+ socket.write(buildPasswordMessage(password))
122
+
123
+ // wait for ReadyForQuery
124
+ await readUntilReady(socket)
125
+ return socket
126
+ }
127
+
128
+ async function sendQuery(
129
+ socket: Socket,
130
+ sql: string
131
+ ): Promise<{ messages: Buffer[]; elapsed: number }> {
132
+ const t0 = performance.now()
133
+ socket.write(buildSimpleQuery(sql))
134
+ const messages = await readUntilReady(socket)
135
+ return { messages, elapsed: performance.now() - t0 }
136
+ }
137
+
138
+ // --- benchmarks ---
139
+
140
+ interface BenchResult {
141
+ name: string
142
+ ops: number
143
+ totalMs: number
144
+ opsPerSec: number
145
+ avgLatencyMs: number
146
+ p50Ms: number
147
+ p99Ms: number
148
+ }
149
+
150
+ function percentile(sorted: number[], p: number): number {
151
+ const idx = Math.ceil(sorted.length * p) - 1
152
+ return sorted[Math.max(0, idx)]
153
+ }
154
+
155
+ function formatResult(r: BenchResult) {
156
+ return [
157
+ ` ${r.name}`,
158
+ ` ops: ${r.ops}`,
159
+ ` total: ${r.totalMs.toFixed(1)}ms`,
160
+ ` throughput: ${r.opsPerSec.toFixed(0)} ops/sec`,
161
+ ` avg latency: ${r.avgLatencyMs.toFixed(2)}ms`,
162
+ ` p50: ${r.p50Ms.toFixed(2)}ms`,
163
+ ` p99: ${r.p99Ms.toFixed(2)}ms`,
164
+ ].join('\n')
165
+ }
166
+
167
+ async function benchSerial(
168
+ socket: Socket,
169
+ sql: string,
170
+ ops: number,
171
+ name: string
172
+ ): Promise<BenchResult> {
173
+ const latencies: number[] = []
174
+ const t0 = performance.now()
175
+ for (let i = 0; i < ops; i++) {
176
+ const { elapsed } = await sendQuery(socket, sql)
177
+ latencies.push(elapsed)
178
+ }
179
+ const totalMs = performance.now() - t0
180
+ latencies.sort((a, b) => a - b)
181
+ return {
182
+ name,
183
+ ops,
184
+ totalMs,
185
+ opsPerSec: (ops / totalMs) * 1000,
186
+ avgLatencyMs: totalMs / ops,
187
+ p50Ms: percentile(latencies, 0.5),
188
+ p99Ms: percentile(latencies, 0.99),
189
+ }
190
+ }
191
+
192
+ async function benchConcurrent(
193
+ sockets: Socket[],
194
+ sql: string,
195
+ opsPerSocket: number,
196
+ name: string
197
+ ): Promise<BenchResult> {
198
+ const allLatencies: number[] = []
199
+ const t0 = performance.now()
200
+ await Promise.all(
201
+ sockets.map(async (socket) => {
202
+ for (let i = 0; i < opsPerSocket; i++) {
203
+ const { elapsed } = await sendQuery(socket, sql)
204
+ allLatencies.push(elapsed)
205
+ }
206
+ })
207
+ )
208
+ const totalMs = performance.now() - t0
209
+ const ops = sockets.length * opsPerSocket
210
+ allLatencies.sort((a, b) => a - b)
211
+ return {
212
+ name,
213
+ ops,
214
+ totalMs,
215
+ opsPerSec: (ops / totalMs) * 1000,
216
+ avgLatencyMs: allLatencies.reduce((s, v) => s + v, 0) / ops,
217
+ p50Ms: percentile(allLatencies, 0.5),
218
+ p99Ms: percentile(allLatencies, 0.99),
219
+ }
220
+ }
221
+
222
+ async function run() {
223
+ console.log('\n=== Proxy Throughput Benchmark ===\n')
224
+
225
+ const pgPort = 25000 + Math.floor(Math.random() * 1000)
226
+ const zeroPort = pgPort + 100
227
+ const dataDir = `.orez-bench-proxy-${Date.now()}`
228
+
229
+ console.log(`starting orez (pg:${pgPort}, skipZero)...`)
230
+ const result = await startZeroLite({
231
+ pgPort,
232
+ zeroPort,
233
+ dataDir,
234
+ logLevel: 'error',
235
+ skipZeroCache: true, // pure proxy benchmark, no zero-cache overhead
236
+ })
237
+
238
+ const db = result.db as PGlite
239
+ const user = 'user'
240
+ const password = 'password'
241
+
242
+ try {
243
+ // set up test table
244
+ await db.exec(`
245
+ CREATE TABLE bench_rows (
246
+ id SERIAL PRIMARY KEY,
247
+ value TEXT,
248
+ num INTEGER
249
+ );
250
+ INSERT INTO bench_rows (value, num)
251
+ SELECT 'row-' || i, i FROM generate_series(1, 1000) AS i;
252
+ `)
253
+
254
+ // warmup
255
+ const warmupSocket = await connectPg(pgPort, user, password)
256
+ for (let i = 0; i < 50; i++) {
257
+ await sendQuery(warmupSocket, 'SELECT 1')
258
+ }
259
+ warmupSocket.destroy()
260
+
261
+ const results: BenchResult[] = []
262
+
263
+ // --- serial benchmarks (1 connection) ---
264
+ console.log('running serial benchmarks...')
265
+ const s1 = await connectPg(pgPort, user, password)
266
+
267
+ results.push(await benchSerial(s1, 'SELECT 1', 500, 'serial: SELECT 1 (ping)'))
268
+ results.push(
269
+ await benchSerial(
270
+ s1,
271
+ 'SELECT * FROM bench_rows LIMIT 10',
272
+ 500,
273
+ 'serial: SELECT 10 rows'
274
+ )
275
+ )
276
+ results.push(
277
+ await benchSerial(s1, 'SELECT * FROM bench_rows', 200, 'serial: SELECT 1000 rows')
278
+ )
279
+ results.push(
280
+ await benchSerial(
281
+ s1,
282
+ "INSERT INTO bench_rows (value, num) VALUES ('x', 1)",
283
+ 200,
284
+ 'serial: INSERT'
285
+ )
286
+ )
287
+
288
+ s1.destroy()
289
+
290
+ // --- concurrent benchmarks (multiple connections, same db) ---
291
+ console.log('running concurrent benchmarks...')
292
+ const concSockets: Socket[] = []
293
+ for (let i = 0; i < 4; i++) {
294
+ concSockets.push(await connectPg(pgPort, user, password))
295
+ }
296
+
297
+ results.push(
298
+ await benchConcurrent(concSockets, 'SELECT 1', 200, 'concurrent 4x: SELECT 1')
299
+ )
300
+ results.push(
301
+ await benchConcurrent(
302
+ concSockets,
303
+ 'SELECT * FROM bench_rows LIMIT 10',
304
+ 200,
305
+ 'concurrent 4x: SELECT 10 rows'
306
+ )
307
+ )
308
+
309
+ for (const s of concSockets) s.destroy()
310
+
311
+ // --- report ---
312
+ console.log('\n=== Results ===\n')
313
+ for (const r of results) {
314
+ console.log(formatResult(r))
315
+ console.log()
316
+ }
317
+
318
+ // summary: serial vs concurrent throughput ratio
319
+ const serialPing = results.find((r) => r.name.includes('serial: SELECT 1'))!
320
+ const concPing = results.find((r) => r.name.includes('concurrent 4x: SELECT 1'))!
321
+ const serialReal = results.find((r) => r.name.includes('serial: SELECT 10'))!
322
+ const concReal = results.find((r) => r.name.includes('concurrent 4x: SELECT 10'))!
323
+ const pingRatio = concPing.opsPerSec / serialPing.opsPerSec
324
+ const realRatio = concReal.opsPerSec / serialReal.opsPerSec
325
+ console.log(` === scaling analysis (ideal = 4.0x with 4 connections) ===`)
326
+ console.log(
327
+ ` ping (no mutex/pglite): ${pingRatio.toFixed(2)}x ← main thread parallelism`
328
+ )
329
+ console.log(` real queries (mutex): ${realRatio.toFixed(2)}x ← bottleneck here`)
330
+ console.log()
331
+ } finally {
332
+ await result.stop()
333
+ const { rmSync } = await import('node:fs')
334
+ try {
335
+ rmSync(dataDir, { recursive: true, force: true })
336
+ } catch {}
337
+ }
338
+ }
339
+
340
+ run().catch((err) => {
341
+ console.error('benchmark failed:', err)
342
+ process.exit(1)
343
+ })
package/src/browser.ts CHANGED
@@ -130,6 +130,7 @@ export async function startOrezBrowser(
130
130
  postgres: pgPostgres as unknown as PGlite,
131
131
  cvr: pgCvr as unknown as PGlite,
132
132
  cdb: pgCdb as unknown as PGlite,
133
+ postgresReplicas: [],
133
134
  },
134
135
  { pgPassword: '', pgUser: 'user' }
135
136
  )
package/src/cli.ts CHANGED
@@ -956,6 +956,12 @@ const main = defineCommand({
956
956
  'use a single pglite instance for all databases (lighter for constrained environments)',
957
957
  default: false,
958
958
  },
959
+ 'read-replicas': {
960
+ type: 'string',
961
+ description:
962
+ 'number of pglite read replicas for postgres (0 to disable, default: auto)',
963
+ default: '',
964
+ },
959
965
  'on-db-ready': {
960
966
  type: 'string',
961
967
  description: 'command to run after db+proxy are ready, before zero-cache starts',
@@ -1005,6 +1011,7 @@ const main = defineCommand({
1005
1011
  'force-wasm-sqlite': false,
1006
1012
  'no-worker-threads': false,
1007
1013
  'single-db': false,
1014
+ 'read-replicas': '',
1008
1015
  'on-db-ready': '',
1009
1016
  'on-healthy': '',
1010
1017
  'disable-admin': false,
@@ -1037,6 +1044,7 @@ const main = defineCommand({
1037
1044
  ...(wasSet('force-wasm-sqlite') && { forceWasmSqlite: args['force-wasm-sqlite'] }),
1038
1045
  ...(wasSet('no-worker-threads') && { noWorkerThreads: args['no-worker-threads'] }),
1039
1046
  ...(wasSet('single-db') && { singleDb: args['single-db'] }),
1047
+ ...(wasSet('read-replicas') && { readReplicas: Number(args['read-replicas']) }),
1040
1048
  ...(wasSet('on-db-ready') && { onDbReady: args['on-db-ready'] }),
1041
1049
  ...(wasSet('on-healthy') && { onHealthy: args['on-healthy'] }),
1042
1050
  ...(wasSet('disable-admin') && { disableAdmin: args['disable-admin'] }),
@@ -1076,6 +1084,7 @@ const main = defineCommand({
1076
1084
  forceWasmSqlite: cliOverrides.forceWasmSqlite,
1077
1085
  useWorkerThreads: resolvedUseWorkerThreads,
1078
1086
  singleDb: cliOverrides.singleDb,
1087
+ readReplicas: cliOverrides.readReplicas,
1079
1088
  logLevel: cliOverrides.logLevel,
1080
1089
  onDbReady: cliOverrides.onDbReady || undefined,
1081
1090
  onHealthy: cliOverrides.onHealthy || undefined,