orez 0.1.43 → 0.1.44

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 (108) hide show
  1. package/dist/admin/http-proxy.d.ts.map +1 -1
  2. package/dist/admin/http-proxy.js +3 -1
  3. package/dist/admin/http-proxy.js.map +1 -1
  4. package/dist/admin/log-store.d.ts.map +1 -1
  5. package/dist/admin/log-store.js +5 -1
  6. package/dist/admin/log-store.js.map +1 -1
  7. package/dist/admin/server.d.ts.map +1 -1
  8. package/dist/admin/server.js +25 -25
  9. package/dist/admin/server.js.map +1 -1
  10. package/dist/browser.d.ts +54 -0
  11. package/dist/browser.d.ts.map +1 -0
  12. package/dist/browser.js +110 -0
  13. package/dist/browser.js.map +1 -0
  14. package/dist/cli.js +1 -1
  15. package/dist/cli.js.map +1 -1
  16. package/dist/index.d.ts +1 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +5 -2
  19. package/dist/index.js.map +1 -1
  20. package/dist/pg-proxy-browser.d.ts +26 -0
  21. package/dist/pg-proxy-browser.d.ts.map +1 -0
  22. package/dist/pg-proxy-browser.js +1460 -0
  23. package/dist/pg-proxy-browser.js.map +1 -0
  24. package/dist/pg-proxy.d.ts.map +1 -1
  25. package/dist/pg-proxy.js +48 -34
  26. package/dist/pg-proxy.js.map +1 -1
  27. package/dist/pglite-ipc.d.ts.map +1 -1
  28. package/dist/pglite-ipc.js +3 -2
  29. package/dist/pglite-ipc.js.map +1 -1
  30. package/dist/pglite-manager.d.ts.map +1 -1
  31. package/dist/pglite-manager.js +33 -85
  32. package/dist/pglite-manager.js.map +1 -1
  33. package/dist/pglite-web-proxy.d.ts +38 -0
  34. package/dist/pglite-web-proxy.d.ts.map +1 -0
  35. package/dist/pglite-web-proxy.js +155 -0
  36. package/dist/pglite-web-proxy.js.map +1 -0
  37. package/dist/pglite-web-worker.d.ts +24 -0
  38. package/dist/pglite-web-worker.d.ts.map +1 -0
  39. package/dist/pglite-web-worker.js +119 -0
  40. package/dist/pglite-web-worker.js.map +1 -0
  41. package/dist/recovery.js +2 -2
  42. package/dist/recovery.js.map +1 -1
  43. package/dist/replication/change-tracker.js +9 -9
  44. package/dist/replication/change-tracker.js.map +1 -1
  45. package/dist/replication/handler.d.ts.map +1 -1
  46. package/dist/replication/handler.js +34 -26
  47. package/dist/replication/handler.js.map +1 -1
  48. package/dist/worker/browser-build-config.d.ts.map +1 -1
  49. package/dist/worker/browser-build-config.js +5 -2
  50. package/dist/worker/browser-build-config.js.map +1 -1
  51. package/dist/worker/browser-embed.d.ts.map +1 -1
  52. package/dist/worker/browser-embed.js +31 -26
  53. package/dist/worker/browser-embed.js.map +1 -1
  54. package/dist/worker/shims/fastify.d.ts +1 -0
  55. package/dist/worker/shims/fastify.d.ts.map +1 -1
  56. package/dist/worker/shims/fastify.js +31 -20
  57. package/dist/worker/shims/fastify.js.map +1 -1
  58. package/dist/worker/shims/postgres-browser.d.ts +12 -0
  59. package/dist/worker/shims/postgres-browser.d.ts.map +1 -0
  60. package/dist/worker/shims/postgres-browser.js +52 -0
  61. package/dist/worker/shims/postgres-browser.js.map +1 -0
  62. package/dist/worker/shims/postgres-socket.d.ts +83 -0
  63. package/dist/worker/shims/postgres-socket.d.ts.map +1 -0
  64. package/dist/worker/shims/postgres-socket.js +278 -0
  65. package/dist/worker/shims/postgres-socket.js.map +1 -0
  66. package/dist/worker/shims/postgres.d.ts.map +1 -1
  67. package/dist/worker/shims/postgres.js +18 -9
  68. package/dist/worker/shims/postgres.js.map +1 -1
  69. package/dist/worker/shims/stream-browser.d.ts +5 -4
  70. package/dist/worker/shims/stream-browser.d.ts.map +1 -1
  71. package/dist/worker/shims/stream-browser.js +7 -6
  72. package/dist/worker/shims/stream-browser.js.map +1 -1
  73. package/dist/worker/shims/ws-browser.d.ts.map +1 -1
  74. package/dist/worker/shims/ws-browser.js +43 -21
  75. package/dist/worker/shims/ws-browser.js.map +1 -1
  76. package/dist/worker/shims/ws.d.ts.map +1 -1
  77. package/dist/worker/shims/ws.js +81 -17
  78. package/dist/worker/shims/ws.js.map +1 -1
  79. package/package.json +11 -58
  80. package/src/admin/http-proxy.ts +4 -1
  81. package/src/admin/log-store.ts +5 -1
  82. package/src/admin/server.ts +26 -25
  83. package/src/browser.ts +195 -0
  84. package/src/cli.ts +1 -1
  85. package/src/index.ts +5 -2
  86. package/src/integration/integration.test.ts +1 -1
  87. package/src/integration/restore-live-stress.test.ts +2 -2
  88. package/src/pg-proxy-browser.ts +1673 -0
  89. package/src/pg-proxy.ts +48 -40
  90. package/src/pglite-ipc.ts +3 -2
  91. package/src/pglite-manager.ts +45 -107
  92. package/src/pglite-web-proxy.ts +180 -0
  93. package/src/pglite-web-worker.ts +132 -0
  94. package/src/recovery.ts +2 -2
  95. package/src/replication/change-tracker.test.ts +1 -1
  96. package/src/replication/change-tracker.ts +9 -9
  97. package/src/replication/handler.ts +37 -26
  98. package/src/worker/browser-build-config.test.ts +1 -1
  99. package/src/worker/browser-build-config.ts +5 -2
  100. package/src/worker/browser-embed.ts +33 -30
  101. package/src/worker/shims/fastify.ts +37 -24
  102. package/src/worker/shims/postgres-browser.ts +59 -0
  103. package/src/worker/shims/postgres-socket.test.ts +576 -0
  104. package/src/worker/shims/postgres-socket.ts +310 -0
  105. package/src/worker/shims/postgres.ts +30 -15
  106. package/src/worker/shims/stream-browser.ts +15 -0
  107. package/src/worker/shims/ws-browser.ts +38 -20
  108. package/src/worker/shims/ws.ts +76 -21
@@ -1,9 +1,10 @@
1
1
  /**
2
- * stream shim — re-exports stream-browserify with missing Node.js stream functions.
2
+ * stream shim — re-exports readable-stream with missing Node.js stream functions.
3
3
  *
4
- * stream-browserify doesn't include getDefaultHighWaterMark which zero-cache uses.
4
+ * readable-stream/stream-browserify don't include getDefaultHighWaterMark
5
+ * which zero-cache uses (added in Node.js 18+).
5
6
  */
6
- export * from 'stream-browserify';
7
- export { default } from 'stream-browserify';
7
+ export * from 'readable-stream';
8
+ export { default } from 'readable-stream';
8
9
  export declare function getDefaultHighWaterMark(objectMode: boolean): number;
9
10
  //# sourceMappingURL=stream-browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stream-browser.d.ts","sourceRoot":"","sources":["../../../src/worker/shims/stream-browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,mBAAmB,CAAA;AAEjC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAE3C,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,CAEnE"}
1
+ {"version":3,"file":"stream-browser.d.ts","sourceRoot":"","sources":["../../../src/worker/shims/stream-browser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,cAAc,iBAAiB,CAAA;AAE/B,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAEzC,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,CAEnE"}
@@ -1,12 +1,13 @@
1
1
  /**
2
- * stream shim — re-exports stream-browserify with missing Node.js stream functions.
2
+ * stream shim — re-exports readable-stream with missing Node.js stream functions.
3
3
  *
4
- * stream-browserify doesn't include getDefaultHighWaterMark which zero-cache uses.
4
+ * readable-stream/stream-browserify don't include getDefaultHighWaterMark
5
+ * which zero-cache uses (added in Node.js 18+).
5
6
  */
6
- // @ts-expect-error — stream-browserify is CJS
7
- export * from 'stream-browserify';
8
- // @ts-expect-error — stream-browserify is CJS
9
- export { default } from 'stream-browserify';
7
+ // @ts-expect-error — readable-stream is CJS
8
+ export * from 'readable-stream';
9
+ // @ts-expect-error — readable-stream is CJS
10
+ export { default } from 'readable-stream';
10
11
  export function getDefaultHighWaterMark(objectMode) {
11
12
  return objectMode ? 16 : 16 * 1024;
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stream-browser.js","sourceRoot":"","sources":["../../../src/worker/shims/stream-browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,8CAA8C;AAC9C,cAAc,mBAAmB,CAAA;AACjC,8CAA8C;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAE3C,MAAM,UAAU,uBAAuB,CAAC,UAAmB;IACzD,OAAO,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAA;AACpC,CAAC"}
1
+ {"version":3,"file":"stream-browser.js","sourceRoot":"","sources":["../../../src/worker/shims/stream-browser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,4CAA4C;AAC5C,cAAc,iBAAiB,CAAA;AAC/B,4CAA4C;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAEzC,MAAM,UAAU,uBAAuB,CAAC,UAAmB;IACzD,OAAO,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAA;AACpC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ws-browser.d.ts","sourceRoot":"","sources":["../../../src/worker/shims/ws-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,UAAU,YAAY;IAEpB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,eAAe,GAAG,IAAI,CAAA;IACxD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3C,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAA;IACnE,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAA;IACtE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAA;IACrD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAA;CACvD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,CAwE/D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,SAAS,GAAG,YAAY,CAmCzD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAGlE"}
1
+ {"version":3,"file":"ws-browser.d.ts","sourceRoot":"","sources":["../../../src/worker/shims/ws-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,UAAU,YAAY;IAEpB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,eAAe,GAAG,IAAI,CAAA;IACxD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3C,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAA;IACnE,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAA;IACtE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAA;IACrD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAA;CACvD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,CA0F/D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,SAAS,GAAG,YAAY,CAmCzD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAGlE"}
@@ -29,35 +29,58 @@
29
29
  * listener — which would silently drop messages.
30
30
  */
31
31
  export function messagePortToWs(port) {
32
- const listeners = new Map();
32
+ // separate listener sets for on() vs addEventListener() to match real ws behavior.
33
+ // in the ws package, on() is EventEmitter-style and addEventListener() is DOM-style.
34
+ // createWebSocketStream uses ws.on('message') exclusively for inbound data.
35
+ // streamOut uses ws.addEventListener('message') for ack handling.
36
+ // if they share the same set, ack messages reach both handlers and
37
+ // handleMessage tries to parse acks as protocol messages, closing the connection.
38
+ const onListeners = new Map();
39
+ const domListeners = new Map();
33
40
  let closed = false;
34
- // buffer messages until a 'message' listener is registered
41
+ // buffer messages until a 'message' listener is registered (either kind)
35
42
  const pendingMessages = [];
36
- function addListener(type, handler) {
37
- if (!listeners.has(type))
38
- listeners.set(type, new Set());
39
- listeners.get(type).add(handler);
40
- // flush buffered messages when first 'message' listener is added
43
+ function addOnListener(type, handler) {
44
+ if (!onListeners.has(type))
45
+ onListeners.set(type, new Set());
46
+ onListeners.get(type).add(handler);
41
47
  if (type === 'message' && pendingMessages.length > 0) {
42
48
  const queued = pendingMessages.splice(0);
43
49
  for (const event of queued)
44
50
  handler(event);
45
51
  }
46
52
  }
47
- function removeListener(type, handler) {
48
- listeners.get(type)?.delete(handler);
53
+ function removeOnListener(type, handler) {
54
+ onListeners.get(type)?.delete(handler);
55
+ }
56
+ function addDomListener(type, handler) {
57
+ if (!domListeners.has(type))
58
+ domListeners.set(type, new Set());
59
+ domListeners.get(type).add(handler);
60
+ if (type === 'message' && pendingMessages.length > 0) {
61
+ const queued = pendingMessages.splice(0);
62
+ for (const event of queued)
63
+ handler(event);
64
+ }
65
+ }
66
+ function removeDomListener(type, handler) {
67
+ domListeners.get(type)?.delete(handler);
49
68
  }
50
69
  function emit(type, event) {
51
- const handlers = listeners.get(type);
52
- if (!handlers || handlers.size === 0) {
53
- // no listeners yet buffer message events
54
- if (type === 'message') {
70
+ const onHandlers = onListeners.get(type);
71
+ const domHandlers = domListeners.get(type);
72
+ const hasAny = (onHandlers && onHandlers.size > 0) || (domHandlers && domHandlers.size > 0);
73
+ if (!hasAny) {
74
+ if (type === 'message')
55
75
  pendingMessages.push(event);
56
- }
57
76
  return;
58
77
  }
59
- for (const h of handlers)
60
- h(event);
78
+ if (onHandlers)
79
+ for (const h of onHandlers)
80
+ h(event);
81
+ if (domHandlers)
82
+ for (const h of domHandlers)
83
+ h(event);
61
84
  }
62
85
  // forward port messages → ws 'message' events
63
86
  port.onmessage = (event) => {
@@ -78,7 +101,6 @@ export function messagePortToWs(port) {
78
101
  send(data) {
79
102
  if (closed)
80
103
  return;
81
- // MessagePort uses postMessage (structured clone)
82
104
  port.postMessage(data);
83
105
  },
84
106
  close(code, _reason) {
@@ -88,10 +110,10 @@ export function messagePortToWs(port) {
88
110
  port.close();
89
111
  emit('close', { code: code ?? 1000, reason: '', wasClean: true });
90
112
  },
91
- addEventListener: addListener,
92
- removeEventListener: removeListener,
93
- on: addListener,
94
- off: removeListener,
113
+ addEventListener: addDomListener,
114
+ removeEventListener: removeDomListener,
115
+ on: addOnListener,
116
+ off: removeOnListener,
95
117
  };
96
118
  }
97
119
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ws-browser.js","sourceRoot":"","sources":["../../../src/worker/shims/ws-browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ws-browser.js","sourceRoot":"","sources":["../../../src/worker/shims/ws-browser.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../../src/worker/shims/ws.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AAEH,OAAO,YAAY,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AASpC,UAAU,WAAW;IACnB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,eAAe,GAAG,IAAI,CAAA;IACxD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3C,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAA;IACnE,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAA;IACtE,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,IAAI,IAAI,CAAA;CAChB;AAKD,cAAM,SAAU,SAAQ,YAAY;;IAClC,MAAM,CAAC,QAAQ,CAAC,UAAU,KAAa;IACvC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAO;IAC3B,MAAM,CAAC,QAAQ,CAAC,OAAO,KAAU;IACjC,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAS;IAE/B,QAAQ,CAAC,UAAU,KAAa;IAChC,QAAQ,CAAC,IAAI,KAAO;IACpB,QAAQ,CAAC,OAAO,KAAU;IAC1B,QAAQ,CAAC,MAAM,KAAS;gBAMZ,WAAW,EAAE,MAAM,GAAG,WAAW,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO;IA6HpF,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,CACF,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,eAAe,EACrD,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,GACzB,IAAI;IAmBP,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ3C,SAAS,IAAI,IAAI;IAMjB,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAU9D,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAKnE,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;CAiCvE;AAKD,cAAM,eAAgB,SAAQ,YAAY;gBAC5B,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE;IAI1C,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAKvC;;;;;;;;OAQG;IACH,aAAa,CACX,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,WAAW,GAAG,OAAO,EAC7B,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,CAAC,EAAE,EAAE,SAAS,KAAK,IAAI,GAChC,IAAI;CAKR;AAMD,iBAAS,qBAAqB,CAC5B,EAAE,EAAE,SAAS,EACb,KAAK,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GAClC,MAAM,CAoDR;AAED,eAAe,SAAS,CAAA;AACxB,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,qBAAqB,EAAE,CAAA"}
1
+ {"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../../src/worker/shims/ws.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AAEH,OAAO,YAAY,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AASpC,UAAU,WAAW;IACnB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,eAAe,GAAG,IAAI,CAAA;IACxD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3C,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAA;IACnE,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAA;IACtE,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,IAAI,IAAI,CAAA;CAChB;AAKD,cAAM,SAAU,SAAQ,YAAY;;IAClC,MAAM,CAAC,QAAQ,CAAC,UAAU,KAAa;IACvC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAO;IAC3B,MAAM,CAAC,QAAQ,CAAC,OAAO,KAAU;IACjC,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAS;IAE/B,QAAQ,CAAC,UAAU,KAAa;IAChC,QAAQ,CAAC,IAAI,KAAO;IACpB,QAAQ,CAAC,OAAO,KAAU;IAC1B,QAAQ,CAAC,MAAM,KAAS;gBAMZ,WAAW,EAAE,MAAM,GAAG,WAAW,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO;IAyJpF,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,CACF,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,eAAe,EACrD,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,GACzB,IAAI;IAmBP,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ3C,SAAS,IAAI,IAAI;IAMjB,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAe9D,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAiBnE,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;CA2CvE;AAKD,cAAM,eAAgB,SAAQ,YAAY;gBAC5B,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE;IAI1C,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAKvC;;;;;;;;OAQG;IACH,aAAa,CACX,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,WAAW,GAAG,OAAO,EAC7B,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,CAAC,EAAE,EAAE,SAAS,KAAK,IAAI,GAChC,IAAI;CAKR;AAMD,iBAAS,qBAAqB,CAC5B,EAAE,EAAE,SAAS,EACb,KAAK,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GAClC,MAAM,CAoDR;AAED,eAAe,SAAS,CAAA;AACxB,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,qBAAqB,EAAE,CAAA"}
@@ -42,8 +42,10 @@ class WebSocket extends EventEmitter {
42
42
  parsedUrl.hostname === 'localhost';
43
43
  if (isInProcess) {
44
44
  // in-process: connect via fastify server's handoff mechanism
45
- const fastifyInstance = globalThis.__orez_fastify_instance;
46
- if (fastifyInstance?.server) {
45
+ // try all registered fastify instances via tryHandoff, stop at first match
46
+ const instances = globalThis.__orez_fastify_instances || [];
47
+ const fallbackInstance = globalThis.__orez_fastify_instance;
48
+ if (instances.length > 0 || fallbackInstance?.server) {
47
49
  // create paired message channels for bidirectional communication
48
50
  // the client-side WS (this) and serverWs are cross-linked so
49
51
  // ping/pong, messages, and close propagate between them
@@ -53,7 +55,8 @@ class WebSocket extends EventEmitter {
53
55
  _listeners: {},
54
56
  send: (data) => {
55
57
  // deliver to client side
56
- queueMicrotask(() => clientSide.emit('message', data));
58
+ // wrap in event object — zero-cache handleMessage reads event.data
59
+ queueMicrotask(() => clientSide.emit('message', { data }));
57
60
  },
58
61
  close: (code, reason) => {
59
62
  serverWs.readyState = 3;
@@ -78,10 +81,13 @@ class WebSocket extends EventEmitter {
78
81
  }
79
82
  },
80
83
  };
84
+ // client-side internal ws — forwards send() to server,
85
+ // receives messages from server via addEventListener.
86
+ // addEventListener MUST work because WebSocket#setupListeners registers here.
87
+ const clientWsListeners = {};
81
88
  this.#ws = {
82
89
  accept: () => { },
83
90
  send: (data) => {
84
- // deliver to server side
85
91
  const handlers = serverWs._listeners['message'] || [];
86
92
  for (const h of handlers)
87
93
  h({ data });
@@ -91,22 +97,50 @@ class WebSocket extends EventEmitter {
91
97
  for (const h of handlers)
92
98
  h({ code, reason });
93
99
  },
94
- addEventListener: () => { },
95
- removeEventListener: () => { },
100
+ addEventListener: (type, handler) => {
101
+ if (!clientWsListeners[type])
102
+ clientWsListeners[type] = [];
103
+ clientWsListeners[type].push(handler);
104
+ },
105
+ removeEventListener: (type, handler) => {
106
+ const arr = clientWsListeners[type];
107
+ if (arr) {
108
+ const idx = arr.indexOf(handler);
109
+ if (idx >= 0)
110
+ arr.splice(idx, 1);
111
+ }
112
+ },
96
113
  get readyState() {
97
114
  return 1;
98
115
  },
99
116
  };
100
- // emit handoff to fastify server
117
+ // wire server client: when server sends data, deliver to client's
118
+ // addEventListener handlers AND emit on the WebSocket instance
119
+ const origServerSend = serverWs.send;
120
+ serverWs.send = (data) => {
121
+ const handlers = clientWsListeners['message'] || [];
122
+ for (const h of handlers)
123
+ h({ data });
124
+ queueMicrotask(() => clientSide.emit('message', { data }));
125
+ };
126
+ // try handoff against all fastify instances, stop at first match
101
127
  const path = parsedUrl.pathname + parsedUrl.search;
128
+ const handoffMsg = {
129
+ message: { url: path, headers: {}, method: 'GET' },
130
+ head: new Uint8Array(0),
131
+ };
102
132
  queueMicrotask(() => {
103
- fastifyInstance.server.emit('message', [
104
- 'handoff',
105
- {
106
- message: { url: path, headers: {}, method: 'GET' },
107
- head: new Uint8Array(0),
108
- },
109
- ], serverWs);
133
+ let handled = false;
134
+ for (const inst of instances) {
135
+ if (inst?.tryHandoff?.(handoffMsg, serverWs)) {
136
+ handled = true;
137
+ break;
138
+ }
139
+ }
140
+ // fallback: if no instance handled it and we have a fallback, emit directly
141
+ if (!handled && fallbackInstance?.server) {
142
+ fallbackInstance.server.emit('message', ['handoff', handoffMsg], serverWs);
143
+ }
110
144
  this.emit('open');
111
145
  });
112
146
  }
@@ -196,12 +230,42 @@ class WebSocket extends EventEmitter {
196
230
  this.emit('pong');
197
231
  }
198
232
  // standard EventTarget-style addEventListener (used by Connection)
233
+ // for 'message' events, wrap the handler so EventEmitter-style (data, isBinary)
234
+ // args get converted to DOM-style { data } events. streamOut uses
235
+ // addEventListener('message', ({data}) => ...) which needs DOM-style events.
236
+ #adapterMap = new WeakMap();
199
237
  addEventListener(type, handler) {
200
- // wrap to emit EventEmitter-style
201
- this.on(type, handler);
238
+ if (type === 'message') {
239
+ const wrapper = (data, isBinary) => {
240
+ // if already a DOM-style event object with .data, pass through
241
+ if (data && typeof data === 'object' && 'data' in data) {
242
+ handler(data);
243
+ }
244
+ else {
245
+ handler({ data, isBinary });
246
+ }
247
+ };
248
+ this.#adapterMap.set(handler, wrapper);
249
+ this.on(type, wrapper);
250
+ }
251
+ else {
252
+ this.on(type, handler);
253
+ }
202
254
  }
203
255
  removeEventListener(type, handler) {
204
- this.off(type, handler);
256
+ if (type === 'message') {
257
+ const wrapper = this.#adapterMap.get(handler);
258
+ if (wrapper) {
259
+ this.off(type, wrapper);
260
+ this.#adapterMap.delete(handler);
261
+ }
262
+ else {
263
+ this.off(type, handler);
264
+ }
265
+ }
266
+ else {
267
+ this.off(type, handler);
268
+ }
205
269
  }
206
270
  #setupListeners() {
207
271
  // match ws npm package event signatures:
@@ -1 +1 @@
1
- {"version":3,"file":"ws.js","sourceRoot":"","sources":["../../../src/worker/shims/ws.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ws.js","sourceRoot":"","sources":["../../../src/worker/shims/ws.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.43",
3
+ "version": "0.1.44",
4
4
  "description": "PGlite-powered zero-sync development backend. No Docker required.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -19,64 +19,17 @@
19
19
  "types": "./dist/vite-plugin.d.ts",
20
20
  "import": "./dist/vite-plugin.js"
21
21
  },
22
- "./worker": {
23
- "types": "./dist/worker/index.d.ts",
24
- "import": "./dist/worker/index.js"
22
+ "./browser": {
23
+ "types": "./dist/browser.d.ts",
24
+ "import": "./dist/browser.js"
25
25
  },
26
- "./worker/cf-embed": {
27
- "types": "./dist/worker/zero-cache-embed-cf.d.ts",
28
- "import": "./dist/worker/zero-cache-embed-cf.js",
29
- "default": "./dist/worker/zero-cache-embed-cf.js"
26
+ "./worker/*": {
27
+ "types": "./dist/worker/*.d.ts",
28
+ "import": "./dist/worker/*.js"
30
29
  },
31
- "./worker/cf-patches": {
32
- "types": "./dist/worker/cf-patches.d.ts",
33
- "import": "./dist/worker/cf-patches.js",
34
- "default": "./dist/worker/cf-patches.js"
35
- },
36
- "./worker/shims/postgres": {
37
- "types": "./dist/worker/shims/postgres.d.ts",
38
- "import": "./dist/worker/shims/postgres.js",
39
- "default": "./dist/worker/shims/postgres.js"
40
- },
41
- "./worker/shims/sqlite": {
42
- "types": "./dist/worker/shims/sqlite.d.ts",
43
- "import": "./dist/worker/shims/sqlite.js",
44
- "default": "./dist/worker/shims/sqlite.js"
45
- },
46
- "./worker/shims/fastify": {
47
- "types": "./dist/worker/shims/fastify.d.ts",
48
- "import": "./dist/worker/shims/fastify.js",
49
- "default": "./dist/worker/shims/fastify.js"
50
- },
51
- "./worker/shims/ws": {
52
- "types": "./dist/worker/shims/ws.d.ts",
53
- "import": "./dist/worker/shims/ws.js",
54
- "default": "./dist/worker/shims/ws.js"
55
- },
56
- "./worker/shims/sqlite-browser": {
57
- "types": "./dist/worker/shims/sqlite-browser.d.ts",
58
- "import": "./dist/worker/shims/sqlite-browser.js",
59
- "default": "./dist/worker/shims/sqlite-browser.js"
60
- },
61
- "./worker/shims/ws-browser": {
62
- "types": "./dist/worker/shims/ws-browser.d.ts",
63
- "import": "./dist/worker/shims/ws-browser.js",
64
- "default": "./dist/worker/shims/ws-browser.js"
65
- },
66
- "./worker/shims/node-stub": {
67
- "types": "./dist/worker/shims/node-stub.d.ts",
68
- "import": "./dist/worker/shims/node-stub.js",
69
- "default": "./dist/worker/shims/node-stub.js"
70
- },
71
- "./worker/browser-embed": {
72
- "types": "./dist/worker/browser-embed.d.ts",
73
- "import": "./dist/worker/browser-embed.js",
74
- "default": "./dist/worker/browser-embed.js"
75
- },
76
- "./worker/browser-build-config": {
77
- "types": "./dist/worker/browser-build-config.d.ts",
78
- "import": "./dist/worker/browser-build-config.js",
79
- "default": "./dist/worker/browser-build-config.js"
30
+ "./worker/shims/*": {
31
+ "types": "./dist/worker/shims/*.d.ts",
32
+ "import": "./dist/worker/shims/*.js"
80
33
  }
81
34
  },
82
35
  "bin": {
@@ -111,7 +64,7 @@
111
64
  "dependencies": {
112
65
  "@electric-sql/pglite": "0.4.1",
113
66
  "@electric-sql/pglite-tools": "^0.3.1",
114
- "bedrock-sqlite": "0.1.43",
67
+ "bedrock-sqlite": "0.1.44",
115
68
  "citty": "^0.2.0",
116
69
  "pg-gateway": "0.3.0-beta.4",
117
70
  "pgsql-parser": "^17.9.11",
@@ -23,6 +23,7 @@ export interface HttpLogStore {
23
23
  }
24
24
 
25
25
  const MAX_ENTRIES = 10_000
26
+ const TRIM_BATCH = Math.floor(MAX_ENTRIES * 0.1)
26
27
 
27
28
  export function createHttpLogStore(): HttpLogStore {
28
29
  const entries: HttpLogEntry[] = []
@@ -31,7 +32,9 @@ export function createHttpLogStore(): HttpLogStore {
31
32
  function push(entry: Omit<HttpLogEntry, 'id'>) {
32
33
  const full: HttpLogEntry = { ...entry, id: nextId++ }
33
34
  entries.push(full)
34
- if (entries.length > MAX_ENTRIES) entries.splice(0, entries.length - MAX_ENTRIES)
35
+ if (entries.length > MAX_ENTRIES + TRIM_BATCH) {
36
+ entries.splice(0, entries.length - MAX_ENTRIES)
37
+ }
35
38
  }
36
39
 
37
40
  function query(opts?: { since?: number; path?: string }) {
@@ -21,6 +21,8 @@ export interface LogStore {
21
21
 
22
22
  const ANSI_RE = /\x1b\[[0-9;]*m/g
23
23
  const MAX_ENTRIES = 50_000
24
+ // trim in batches of 10% to avoid O(n) splice on every single push
25
+ const TRIM_BATCH = Math.floor(MAX_ENTRIES * 0.1)
24
26
  const MAX_FILE_SIZE = 5 * 1024 * 1024
25
27
  const LEVEL_PRIORITY: Record<string, number> = { error: 0, warn: 1, info: 2, debug: 3 }
26
28
 
@@ -90,7 +92,9 @@ export function createLogStore(dataDir: string, writeToDisk = true): LogStore {
90
92
  msg: msg.replace(ANSI_RE, ''),
91
93
  }
92
94
  entries.push(entry)
93
- if (entries.length > MAX_ENTRIES) {
95
+ // trim in batches to amortize the O(n) splice cost — instead of shifting
96
+ // 50k elements on every push, we shift once every ~5k pushes
97
+ if (entries.length > MAX_ENTRIES + TRIM_BATCH) {
94
98
  entries.splice(0, entries.length - MAX_ENTRIES)
95
99
  }
96
100
  if (writeToDisk) {
@@ -29,29 +29,41 @@ export interface AdminServerOpts {
29
29
  httpLog?: HttpLogStore
30
30
  }
31
31
 
32
- function corsHeaders(): Record<string, string> {
33
- return {
34
- 'Access-Control-Allow-Origin': '*',
35
- 'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
36
- 'Access-Control-Allow-Headers': '*',
37
- }
32
+ const CORS_HEADERS: Record<string, string> = {
33
+ 'Access-Control-Allow-Origin': '*',
34
+ 'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
35
+ 'Access-Control-Allow-Headers': '*',
36
+ }
37
+
38
+ const JSON_HEADERS: Record<string, string> = {
39
+ ...CORS_HEADERS,
40
+ 'Content-Type': 'application/json',
38
41
  }
39
42
 
40
43
  function json(res: ServerResponse, data: unknown, status = 200) {
41
- const headers = { ...corsHeaders(), 'Content-Type': 'application/json' }
42
- res.writeHead(status, headers)
44
+ res.writeHead(status, JSON_HEADERS)
43
45
  res.end(JSON.stringify(data))
44
46
  }
45
47
 
48
+ const UI_PATHS = new Set([
49
+ '/',
50
+ '/all',
51
+ '/zero',
52
+ '/pglite',
53
+ '/proxy',
54
+ '/orez',
55
+ '/s3',
56
+ '/http',
57
+ '/env',
58
+ ])
59
+
46
60
  export function startAdminServer(opts: AdminServerOpts): Promise<Server> {
47
61
  const { logStore, config, zeroEnv, actions, startTime } = opts
48
62
  const html = getAdminHtml()
49
63
 
50
64
  const server = createServer(async (req: IncomingMessage, res: ServerResponse) => {
51
- const headers = corsHeaders()
52
-
53
65
  if (req.method === 'OPTIONS') {
54
- res.writeHead(200, headers)
66
+ res.writeHead(200, CORS_HEADERS)
55
67
  res.end()
56
68
  return
57
69
  }
@@ -59,19 +71,8 @@ export function startAdminServer(opts: AdminServerOpts): Promise<Server> {
59
71
  const url = new URL(req.url || '/', 'http://localhost:' + opts.port)
60
72
 
61
73
  try {
62
- const uiPaths = new Set([
63
- '/',
64
- '/all',
65
- '/zero',
66
- '/pglite',
67
- '/proxy',
68
- '/orez',
69
- '/s3',
70
- '/http',
71
- '/env',
72
- ])
73
- if (req.method === 'GET' && uiPaths.has(url.pathname)) {
74
- res.writeHead(200, { ...headers, 'Content-Type': 'text/html' })
74
+ if (req.method === 'GET' && UI_PATHS.has(url.pathname)) {
75
+ res.writeHead(200, { ...CORS_HEADERS, 'Content-Type': 'text/html' })
75
76
  res.end(html)
76
77
  return
77
78
  }
@@ -174,7 +175,7 @@ export function startAdminServer(opts: AdminServerOpts): Promise<Server> {
174
175
  return
175
176
  }
176
177
 
177
- res.writeHead(404, headers)
178
+ res.writeHead(404, CORS_HEADERS)
178
179
  res.end('not found')
179
180
  } catch (err: any) {
180
181
  json(res, { error: err?.message ?? 'internal error' }, 500)