tinybase 5.0.0-beta.27 → 5.0.0-beta.28

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 (249) hide show
  1. package/@types/_internal/ui-react/with-schemas/index.d.cts +274 -0
  2. package/@types/_internal/ui-react/with-schemas/index.d.ts +274 -0
  3. package/@types/checkpoints/index.d.cts +30 -1
  4. package/@types/checkpoints/index.d.ts +30 -1
  5. package/@types/checkpoints/with-schemas/index.d.cts +30 -1
  6. package/@types/checkpoints/with-schemas/index.d.ts +30 -1
  7. package/@types/common/index.d.cts +9 -0
  8. package/@types/common/index.d.ts +9 -0
  9. package/@types/common/with-schemas/index.d.cts +9 -0
  10. package/@types/common/with-schemas/index.d.ts +9 -0
  11. package/@types/index.d.cts +1 -0
  12. package/@types/index.d.ts +1 -0
  13. package/@types/indexes/index.d.cts +32 -1
  14. package/@types/indexes/index.d.ts +32 -1
  15. package/@types/indexes/with-schemas/index.d.cts +32 -1
  16. package/@types/indexes/with-schemas/index.d.ts +32 -1
  17. package/@types/mergeable-store/index.d.cts +0 -2
  18. package/@types/mergeable-store/index.d.ts +0 -2
  19. package/@types/mergeable-store/with-schemas/index.d.cts +2 -2
  20. package/@types/mergeable-store/with-schemas/index.d.ts +2 -2
  21. package/@types/metrics/index.d.cts +30 -4
  22. package/@types/metrics/index.d.ts +30 -4
  23. package/@types/metrics/with-schemas/index.d.cts +30 -4
  24. package/@types/metrics/with-schemas/index.d.ts +30 -4
  25. package/@types/persisters/index.d.cts +87 -25
  26. package/@types/persisters/index.d.ts +87 -25
  27. package/@types/persisters/persister-automerge/index.d.cts +4 -4
  28. package/@types/persisters/persister-automerge/index.d.ts +4 -4
  29. package/@types/persisters/persister-automerge/with-schemas/index.d.cts +4 -4
  30. package/@types/persisters/persister-automerge/with-schemas/index.d.ts +4 -4
  31. package/@types/persisters/persister-browser/index.d.cts +7 -4
  32. package/@types/persisters/persister-browser/index.d.ts +7 -4
  33. package/@types/persisters/persister-browser/with-schemas/index.d.cts +7 -4
  34. package/@types/persisters/persister-browser/with-schemas/index.d.ts +7 -4
  35. package/@types/persisters/persister-cr-sqlite-wasm/index.d.cts +4 -4
  36. package/@types/persisters/persister-cr-sqlite-wasm/index.d.ts +4 -4
  37. package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.cts +4 -4
  38. package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +4 -4
  39. package/@types/persisters/persister-electric-sql/index.d.cts +4 -4
  40. package/@types/persisters/persister-electric-sql/index.d.ts +4 -4
  41. package/@types/persisters/persister-electric-sql/with-schemas/index.d.cts +4 -4
  42. package/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +4 -4
  43. package/@types/persisters/persister-expo-sqlite/index.d.cts +4 -4
  44. package/@types/persisters/persister-expo-sqlite/index.d.ts +4 -4
  45. package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.cts +4 -4
  46. package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +4 -4
  47. package/@types/persisters/persister-file/index.d.cts +6 -4
  48. package/@types/persisters/persister-file/index.d.ts +6 -4
  49. package/@types/persisters/persister-file/with-schemas/index.d.cts +6 -4
  50. package/@types/persisters/persister-file/with-schemas/index.d.ts +6 -4
  51. package/@types/persisters/persister-indexed-db/index.d.cts +5 -4
  52. package/@types/persisters/persister-indexed-db/index.d.ts +5 -4
  53. package/@types/persisters/persister-indexed-db/with-schemas/index.d.cts +5 -4
  54. package/@types/persisters/persister-indexed-db/with-schemas/index.d.ts +5 -4
  55. package/@types/persisters/persister-libsql/index.d.cts +5 -4
  56. package/@types/persisters/persister-libsql/index.d.ts +5 -4
  57. package/@types/persisters/persister-libsql/with-schemas/index.d.cts +5 -4
  58. package/@types/persisters/persister-libsql/with-schemas/index.d.ts +5 -4
  59. package/@types/persisters/persister-partykit-client/index.d.cts +12 -6
  60. package/@types/persisters/persister-partykit-client/index.d.ts +12 -6
  61. package/@types/persisters/persister-partykit-client/with-schemas/index.d.cts +12 -6
  62. package/@types/persisters/persister-partykit-client/with-schemas/index.d.ts +12 -6
  63. package/@types/persisters/persister-partykit-server/index.d.cts +11 -3
  64. package/@types/persisters/persister-partykit-server/index.d.ts +11 -3
  65. package/@types/persisters/persister-partykit-server/with-schemas/index.d.cts +11 -3
  66. package/@types/persisters/persister-partykit-server/with-schemas/index.d.ts +11 -3
  67. package/@types/persisters/persister-powersync/index.d.cts +5 -4
  68. package/@types/persisters/persister-powersync/index.d.ts +5 -4
  69. package/@types/persisters/persister-powersync/with-schemas/index.d.cts +5 -4
  70. package/@types/persisters/persister-powersync/with-schemas/index.d.ts +5 -4
  71. package/@types/persisters/persister-remote/index.d.cts +6 -4
  72. package/@types/persisters/persister-remote/index.d.ts +6 -4
  73. package/@types/persisters/persister-remote/with-schemas/index.d.cts +6 -4
  74. package/@types/persisters/persister-remote/with-schemas/index.d.ts +6 -4
  75. package/@types/persisters/persister-sqlite-wasm/index.d.cts +4 -4
  76. package/@types/persisters/persister-sqlite-wasm/index.d.ts +4 -4
  77. package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.cts +4 -4
  78. package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +4 -4
  79. package/@types/persisters/persister-sqlite3/index.d.cts +4 -4
  80. package/@types/persisters/persister-sqlite3/index.d.ts +4 -4
  81. package/@types/persisters/persister-sqlite3/with-schemas/index.d.cts +4 -4
  82. package/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +4 -4
  83. package/@types/persisters/persister-yjs/index.d.cts +4 -4
  84. package/@types/persisters/persister-yjs/index.d.ts +4 -4
  85. package/@types/persisters/persister-yjs/with-schemas/index.d.cts +4 -4
  86. package/@types/persisters/persister-yjs/with-schemas/index.d.ts +4 -4
  87. package/@types/persisters/with-schemas/index.d.cts +87 -25
  88. package/@types/persisters/with-schemas/index.d.ts +87 -25
  89. package/@types/queries/index.d.cts +64 -4
  90. package/@types/queries/index.d.ts +64 -4
  91. package/@types/queries/with-schemas/index.d.cts +64 -4
  92. package/@types/queries/with-schemas/index.d.ts +64 -4
  93. package/@types/relationships/index.d.cts +34 -1
  94. package/@types/relationships/index.d.ts +34 -1
  95. package/@types/relationships/with-schemas/index.d.cts +34 -1
  96. package/@types/relationships/with-schemas/index.d.ts +34 -1
  97. package/@types/store/index.d.cts +125 -0
  98. package/@types/store/index.d.ts +125 -0
  99. package/@types/store/with-schemas/index.d.cts +125 -0
  100. package/@types/store/with-schemas/index.d.ts +125 -0
  101. package/@types/synchronizers/index.d.cts +32 -10
  102. package/@types/synchronizers/index.d.ts +32 -10
  103. package/@types/synchronizers/synchronizer-broadcast-channel/index.d.cts +114 -0
  104. package/@types/synchronizers/synchronizer-broadcast-channel/index.d.ts +114 -0
  105. package/@types/synchronizers/synchronizer-broadcast-channel/with-schemas/index.d.cts +128 -0
  106. package/@types/synchronizers/synchronizer-broadcast-channel/with-schemas/index.d.ts +128 -0
  107. package/@types/synchronizers/synchronizer-local/index.d.cts +16 -17
  108. package/@types/synchronizers/synchronizer-local/index.d.ts +16 -17
  109. package/@types/synchronizers/synchronizer-local/with-schemas/index.d.cts +16 -17
  110. package/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +16 -17
  111. package/@types/synchronizers/synchronizer-ws-client/index.d.cts +66 -6
  112. package/@types/synchronizers/synchronizer-ws-client/index.d.ts +66 -6
  113. package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.cts +77 -6
  114. package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +77 -6
  115. package/@types/synchronizers/synchronizer-ws-server/index.d.cts +486 -7
  116. package/@types/synchronizers/synchronizer-ws-server/index.d.ts +486 -7
  117. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.cts +486 -7
  118. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +486 -7
  119. package/@types/synchronizers/with-schemas/index.d.cts +29 -11
  120. package/@types/synchronizers/with-schemas/index.d.ts +29 -11
  121. package/@types/tools/index.d.cts +22 -0
  122. package/@types/tools/index.d.ts +22 -0
  123. package/@types/tools/with-schemas/index.d.cts +22 -0
  124. package/@types/tools/with-schemas/index.d.ts +22 -0
  125. package/@types/ui-react/index.d.cts +375 -1
  126. package/@types/ui-react/index.d.ts +375 -1
  127. package/@types/ui-react/with-schemas/index.d.cts +100 -1
  128. package/@types/ui-react/with-schemas/index.d.ts +100 -1
  129. package/@types/ui-react-dom/index.d.cts +112 -0
  130. package/@types/ui-react-dom/index.d.ts +112 -0
  131. package/@types/ui-react-dom/with-schemas/index.d.cts +112 -0
  132. package/@types/ui-react-dom/with-schemas/index.d.ts +112 -0
  133. package/@types/ui-react-inspector/index.d.cts +6 -2
  134. package/@types/ui-react-inspector/index.d.ts +6 -2
  135. package/@types/ui-react-inspector/with-schemas/index.d.cts +118 -2
  136. package/@types/ui-react-inspector/with-schemas/index.d.ts +118 -2
  137. package/@types/with-schemas/index.d.cts +1 -0
  138. package/@types/with-schemas/index.d.ts +1 -0
  139. package/cjs/es6/index.cjs +2 -2
  140. package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/index.cjs +1 -0
  141. package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/index.cjs.gz +0 -0
  142. package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +1 -0
  143. package/cjs/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs.gz +0 -0
  144. package/cjs/es6/min/synchronizers/synchronizer-ws-client/index.cjs +1 -1
  145. package/cjs/es6/min/synchronizers/synchronizer-ws-client/index.cjs.gz +0 -0
  146. package/cjs/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -1
  147. package/cjs/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs.gz +0 -0
  148. package/cjs/es6/synchronizers/index.cjs +2 -2
  149. package/cjs/es6/synchronizers/synchronizer-broadcast-channel/index.cjs +628 -0
  150. package/cjs/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +628 -0
  151. package/cjs/es6/synchronizers/synchronizer-local/index.cjs +4 -4
  152. package/cjs/es6/synchronizers/synchronizer-local/with-schemas/index.cjs +4 -4
  153. package/cjs/es6/synchronizers/synchronizer-ws-client/index.cjs +15 -21
  154. package/cjs/es6/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +15 -21
  155. package/cjs/es6/synchronizers/with-schemas/index.cjs +2 -2
  156. package/cjs/es6/with-schemas/index.cjs +2 -2
  157. package/cjs/index.cjs +2 -2
  158. package/cjs/min/synchronizers/synchronizer-broadcast-channel/index.cjs +1 -0
  159. package/cjs/min/synchronizers/synchronizer-broadcast-channel/index.cjs.gz +0 -0
  160. package/cjs/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +1 -0
  161. package/cjs/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs.gz +0 -0
  162. package/cjs/min/synchronizers/synchronizer-ws-client/index.cjs +1 -1
  163. package/cjs/min/synchronizers/synchronizer-ws-client/index.cjs.gz +0 -0
  164. package/cjs/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +1 -1
  165. package/cjs/min/synchronizers/synchronizer-ws-client/with-schemas/index.cjs.gz +0 -0
  166. package/cjs/synchronizers/index.cjs +2 -2
  167. package/cjs/synchronizers/synchronizer-broadcast-channel/index.cjs +500 -0
  168. package/cjs/synchronizers/synchronizer-broadcast-channel/with-schemas/index.cjs +500 -0
  169. package/cjs/synchronizers/synchronizer-local/index.cjs +4 -4
  170. package/cjs/synchronizers/synchronizer-local/with-schemas/index.cjs +4 -4
  171. package/cjs/synchronizers/synchronizer-ws-client/index.cjs +15 -21
  172. package/cjs/synchronizers/synchronizer-ws-client/with-schemas/index.cjs +15 -21
  173. package/cjs/synchronizers/with-schemas/index.cjs +2 -2
  174. package/cjs/with-schemas/index.cjs +2 -2
  175. package/es6/index.js +2 -2
  176. package/es6/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -0
  177. package/es6/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  178. package/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -0
  179. package/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  180. package/es6/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  181. package/es6/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  182. package/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  183. package/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  184. package/es6/synchronizers/index.js +2 -2
  185. package/es6/synchronizers/synchronizer-broadcast-channel/index.js +626 -0
  186. package/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +626 -0
  187. package/es6/synchronizers/synchronizer-local/index.js +4 -4
  188. package/es6/synchronizers/synchronizer-local/with-schemas/index.js +4 -4
  189. package/es6/synchronizers/synchronizer-ws-client/index.js +15 -21
  190. package/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +15 -21
  191. package/es6/synchronizers/with-schemas/index.js +2 -2
  192. package/es6/with-schemas/index.js +2 -2
  193. package/index.js +2 -2
  194. package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -0
  195. package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  196. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -0
  197. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  198. package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  199. package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  200. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  201. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  202. package/package.json +105 -1
  203. package/readme.md +9 -9
  204. package/releases.md +4 -4
  205. package/synchronizers/index.js +2 -2
  206. package/synchronizers/synchronizer-broadcast-channel/index.js +498 -0
  207. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +498 -0
  208. package/synchronizers/synchronizer-local/index.js +4 -4
  209. package/synchronizers/synchronizer-local/with-schemas/index.js +4 -4
  210. package/synchronizers/synchronizer-ws-client/index.js +15 -21
  211. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +15 -21
  212. package/synchronizers/with-schemas/index.js +2 -2
  213. package/umd/es6/index.js +2 -2
  214. package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -0
  215. package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  216. package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -0
  217. package/umd/es6/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  218. package/umd/es6/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  219. package/umd/es6/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  220. package/umd/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  221. package/umd/es6/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  222. package/umd/es6/synchronizers/index.js +2 -2
  223. package/umd/es6/synchronizers/synchronizer-broadcast-channel/index.js +654 -0
  224. package/umd/es6/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +654 -0
  225. package/umd/es6/synchronizers/synchronizer-local/index.js +4 -4
  226. package/umd/es6/synchronizers/synchronizer-local/with-schemas/index.js +4 -4
  227. package/umd/es6/synchronizers/synchronizer-ws-client/index.js +15 -21
  228. package/umd/es6/synchronizers/synchronizer-ws-client/with-schemas/index.js +15 -21
  229. package/umd/es6/synchronizers/with-schemas/index.js +2 -2
  230. package/umd/es6/with-schemas/index.js +2 -2
  231. package/umd/index.js +2 -2
  232. package/umd/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -0
  233. package/umd/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  234. package/umd/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -0
  235. package/umd/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  236. package/umd/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  237. package/umd/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  238. package/umd/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  239. package/umd/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  240. package/umd/synchronizers/index.js +2 -2
  241. package/umd/synchronizers/synchronizer-broadcast-channel/index.js +516 -0
  242. package/umd/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +516 -0
  243. package/umd/synchronizers/synchronizer-local/index.js +4 -4
  244. package/umd/synchronizers/synchronizer-local/with-schemas/index.js +4 -4
  245. package/umd/synchronizers/synchronizer-ws-client/index.js +15 -21
  246. package/umd/synchronizers/synchronizer-ws-client/with-schemas/index.js +15 -21
  247. package/umd/synchronizers/with-schemas/index.js +2 -2
  248. package/umd/with-schemas/index.js +2 -2
  249. package/with-schemas/index.js +2 -2
@@ -420,7 +420,7 @@ const Message = {
420
420
  const createCustomSynchronizer = (
421
421
  store,
422
422
  send,
423
- onReceive,
423
+ registerReceive,
424
424
  destroyImpl,
425
425
  requestTimeoutSeconds,
426
426
  onIgnoredError,
@@ -430,7 +430,7 @@ const createCustomSynchronizer = (
430
430
  let sends = 0;
431
431
  let receives = 0;
432
432
  const pendingRequests = mapNew();
433
- onReceive((fromClientId, requestId, message, body) => {
433
+ registerReceive((fromClientId, requestId, message, body) => {
434
434
  receives++;
435
435
  if (message == Message.Response) {
436
436
  ifNotUndefined(
@@ -634,43 +634,37 @@ const createWsSynchronizer = (
634
634
  onIgnoredError,
635
635
  ) =>
636
636
  __async(void 0, null, function* () {
637
- let currentReceive;
638
637
  const addEventListener = (event, handler) =>
639
638
  webSocket.addEventListener(event, handler);
640
- const onReceive = (receive) => {
641
- currentReceive = receive;
642
- };
643
- const send = (toClientId, ...args) => {
639
+ const registerReceive = (receive) =>
640
+ addEventListener('message', ({data}) => {
641
+ const payload = data.toString(UTF8);
642
+ const splitAt = payload.indexOf(MESSAGE_SEPARATOR);
643
+ if (splitAt !== -1) {
644
+ receive(
645
+ slice(data, 0, splitAt),
646
+ ...jsonParseWithUndefined(slice(data, splitAt + 1)),
647
+ );
648
+ }
649
+ });
650
+ const send = (toClientId, ...args) =>
644
651
  webSocket.send(
645
652
  (toClientId != null ? toClientId : EMPTY_STRING) +
646
653
  MESSAGE_SEPARATOR +
647
654
  jsonStringWithUndefined(args),
648
655
  );
649
- };
650
656
  const destroy = () => {
651
657
  webSocket.close();
652
658
  };
653
659
  const synchronizer = createCustomSynchronizer(
654
660
  store,
655
661
  send,
656
- onReceive,
662
+ registerReceive,
657
663
  destroy,
658
664
  requestTimeoutSeconds,
659
665
  onIgnoredError,
660
666
  {getWebSocket: () => webSocket},
661
667
  );
662
- addEventListener('message', ({data}) => {
663
- if (!isUndefined(currentReceive)) {
664
- const payload = data.toString(UTF8);
665
- const splitAt = payload.indexOf(MESSAGE_SEPARATOR);
666
- if (splitAt !== -1) {
667
- currentReceive(
668
- slice(data, 0, splitAt),
669
- ...jsonParseWithUndefined(slice(data, splitAt + 1)),
670
- );
671
- }
672
- }
673
- });
674
668
  return promiseNew((resolve, reject) => {
675
669
  if (webSocket.readyState != webSocket.OPEN) {
676
670
  addEventListener('error', reject);
@@ -420,7 +420,7 @@ const Message = {
420
420
  const createCustomSynchronizer = (
421
421
  store,
422
422
  send,
423
- onReceive,
423
+ registerReceive,
424
424
  destroyImpl,
425
425
  requestTimeoutSeconds,
426
426
  onIgnoredError,
@@ -430,7 +430,7 @@ const createCustomSynchronizer = (
430
430
  let sends = 0;
431
431
  let receives = 0;
432
432
  const pendingRequests = mapNew();
433
- onReceive((fromClientId, requestId, message, body) => {
433
+ registerReceive((fromClientId, requestId, message, body) => {
434
434
  receives++;
435
435
  if (message == Message.Response) {
436
436
  ifNotUndefined(
@@ -634,43 +634,37 @@ const createWsSynchronizer = (
634
634
  onIgnoredError,
635
635
  ) =>
636
636
  __async(void 0, null, function* () {
637
- let currentReceive;
638
637
  const addEventListener = (event, handler) =>
639
638
  webSocket.addEventListener(event, handler);
640
- const onReceive = (receive) => {
641
- currentReceive = receive;
642
- };
643
- const send = (toClientId, ...args) => {
639
+ const registerReceive = (receive) =>
640
+ addEventListener('message', ({data}) => {
641
+ const payload = data.toString(UTF8);
642
+ const splitAt = payload.indexOf(MESSAGE_SEPARATOR);
643
+ if (splitAt !== -1) {
644
+ receive(
645
+ slice(data, 0, splitAt),
646
+ ...jsonParseWithUndefined(slice(data, splitAt + 1)),
647
+ );
648
+ }
649
+ });
650
+ const send = (toClientId, ...args) =>
644
651
  webSocket.send(
645
652
  (toClientId != null ? toClientId : EMPTY_STRING) +
646
653
  MESSAGE_SEPARATOR +
647
654
  jsonStringWithUndefined(args),
648
655
  );
649
- };
650
656
  const destroy = () => {
651
657
  webSocket.close();
652
658
  };
653
659
  const synchronizer = createCustomSynchronizer(
654
660
  store,
655
661
  send,
656
- onReceive,
662
+ registerReceive,
657
663
  destroy,
658
664
  requestTimeoutSeconds,
659
665
  onIgnoredError,
660
666
  {getWebSocket: () => webSocket},
661
667
  );
662
- addEventListener('message', ({data}) => {
663
- if (!isUndefined(currentReceive)) {
664
- const payload = data.toString(UTF8);
665
- const splitAt = payload.indexOf(MESSAGE_SEPARATOR);
666
- if (splitAt !== -1) {
667
- currentReceive(
668
- slice(data, 0, splitAt),
669
- ...jsonParseWithUndefined(slice(data, splitAt + 1)),
670
- );
671
- }
672
- }
673
- });
674
668
  return promiseNew((resolve, reject) => {
675
669
  if (webSocket.readyState != webSocket.OPEN) {
676
670
  addEventListener('error', reject);
@@ -410,7 +410,7 @@ const Message = {
410
410
  const createCustomSynchronizer = (
411
411
  store,
412
412
  send,
413
- onReceive,
413
+ registerReceive,
414
414
  destroyImpl,
415
415
  requestTimeoutSeconds,
416
416
  onIgnoredError,
@@ -420,7 +420,7 @@ const createCustomSynchronizer = (
420
420
  let sends = 0;
421
421
  let receives = 0;
422
422
  const pendingRequests = mapNew();
423
- onReceive((fromClientId, requestId, message, body) => {
423
+ registerReceive((fromClientId, requestId, message, body) => {
424
424
  receives++;
425
425
  if (message == Message.Response) {
426
426
  ifNotUndefined(
@@ -1569,7 +1569,7 @@ const Message = {
1569
1569
  const createCustomSynchronizer = (
1570
1570
  store,
1571
1571
  send,
1572
- onReceive,
1572
+ registerReceive,
1573
1573
  destroyImpl,
1574
1574
  requestTimeoutSeconds,
1575
1575
  onIgnoredError,
@@ -1579,7 +1579,7 @@ const createCustomSynchronizer = (
1579
1579
  let sends = 0;
1580
1580
  let receives = 0;
1581
1581
  const pendingRequests = mapNew();
1582
- onReceive((fromClientId, requestId, message, body) => {
1582
+ registerReceive((fromClientId, requestId, message, body) => {
1583
1583
  receives++;
1584
1584
  if (message == Message.Response) {
1585
1585
  ifNotUndefined(
package/cjs/index.cjs CHANGED
@@ -1384,7 +1384,7 @@ const Message = {
1384
1384
  const createCustomSynchronizer = (
1385
1385
  store,
1386
1386
  send,
1387
- onReceive,
1387
+ registerReceive,
1388
1388
  destroyImpl,
1389
1389
  requestTimeoutSeconds,
1390
1390
  onIgnoredError,
@@ -1394,7 +1394,7 @@ const createCustomSynchronizer = (
1394
1394
  let sends = 0;
1395
1395
  let receives = 0;
1396
1396
  const pendingRequests = mapNew();
1397
- onReceive((fromClientId, requestId, message, body) => {
1397
+ registerReceive((fromClientId, requestId, message, body) => {
1398
1398
  receives++;
1399
1399
  if (message == Message.Response) {
1400
1400
  ifNotUndefined(
@@ -0,0 +1 @@
1
+ "use strict";const e=Promise,t=globalThis,a=Math,s=a.floor,n=e=>null==e,o=(e,t,a)=>n(e)?a?.():t(e),r=(e,t)=>e.map(t),i=Object,l=e=>i.getPrototypeOf(e),c=i.entries,g=i.keys,u=i.freeze,y=(e,t)=>((e,t)=>e.forEach(t))(c(e),(([e,a])=>t(a,e))),d=e=>(e=>!n(e)&&o(l(e),(e=>e==i.prototype||n(l(e))),(()=>!0)))(e)&&0==(e=>g(e).length)(e),h=(e,t,a)=>(((e,t)=>t in e)(e,t)||(e[t]=a()),e[t]),p=(e,t)=>e?.delete(t),w=e=>new Map(e),v=(e,t)=>e?.get(t),b=(e,t,a)=>n(a)?(p(e,t),e):e?.set(t,a),f=(e,t,a,s)=>{var n,o;return n=e,o=t,n?.has(o)||b(e,t,a()),v(e,t)},M=w(),C=w();new t.TextEncoder;const A=(e,t)=>t?[e,t]:[e],S=(e,t)=>((e??"")>(t??"")?e:t)??"",m=(e="")=>A(((e=[])=>i.fromEntries(e))(),e),L="-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz".split("");w(r(L,((e,t)=>[e,t])));const T=t.crypto?e=>t.crypto.getRandomValues(e):e=>r(e,(()=>s(256*a.random()))),H=(e=16)=>{return t=(e,t)=>e+L[63&t],T(new Uint8Array(e)).reduce(t,"");var t};exports.createBroadcastChannelSynchronizer=(t,a,s)=>{const r=H(),i=new BroadcastChannel(a);return((t,a,s,r,i,l,c={})=>{let g,L=0,T=0;const D=w();s(((e,s,r,i)=>{T++,0==r?o(v(D,s),(([t,a])=>n(t)||t==e?a(i,e):0)):2==r&&R.isAutoLoading()?P(e,i).then((e=>{g?.(void 0,e)})):3==r&&R.isAutoLoading()?g?.(void 0,i):o(1==r&&R.isAutoSaving()?t.getMergeableContentHashes():4==r?t.getMergeableTableDiff(i):5==r?t.getMergeableRowDiff(i):6==r?t.getMergeableCellDiff(i):7==r?t.getMergeableValueDiff(i):void 0,(t=>{L++,a(e,s,0,t)}))}));const E=async(t,s,n="")=>new e(((e,o)=>{const r=H(),l=setTimeout((()=>{p(D,r),o(`No response from ${t??"anyone"} to '${s}'`)}),1e3*i);b(D,r,[t,(t,a)=>{clearTimeout(l),p(D,r),e([t,a])}]),L++,a(t,r,s,n)})),z=(e,[t,a])=>{y(t,(([t,a],s)=>{const n=h(e[0],s,m);y(t,(([e,t],a)=>{const s=h(n[0],a,m);y(e,(([e,t],a)=>s[0][a]=A(e,t))),s[1]=S(s[1],t)})),n[1]=S(n[1],a)})),e[1]=S(e[1],a)},P=async(e=null,a)=>{n(a)&&([a,e]=await E(e,1));const[s,o]=a,[r,i]=t.getMergeableContentHashes();let l=m();if(r!=s){const[a,s]=(await E(e,4,t.getMergeableTableHashes()))[0];if(l=a,!d(s)){const[a,n]=(await E(e,5,t.getMergeableRowHashes(s)))[0];if(z(l,a),!d(n)){const a=(await E(e,6,t.getMergeableCellHashes(n)))[0];z(l,a)}}}return[l,i==o?m():(await E(e,7,t.getMergeableValueHashes()))[0],1]},R=((e,t,a,s,r,i,l,c={},g=[])=>{let y,h,p,w=0,A=0,S=0;f(M,g,(()=>0)),f(C,g,(()=>[]));const[m,L,T,H,D]=((e=1,t)=>1!=e&&t.isMergeable()?[1,t.getMergeableContent,t.getTransactionMergeableChanges,([[e],[t]])=>!d(e)||!d(t),t.setDefaultContent]:2!=e?[0,t.getContent,t.getTransactionChanges,([e,t])=>!d(e)||!d(t),t.setContent]:(e=>{throw Error("Store type not supported by this Persister")})())(l,e),E=t=>{var a;(m&&(a=t?.[0],Array.isArray(a))?1===t?.[2]?e.applyMergeableChanges:e.setMergeableContent:1===t?.[2]?e.applyChanges:e.setContent)(t)},z=async e=>(2!=w&&(w=1,A++,await x((async()=>{try{E(await t())}catch(t){i?.(t),e&&D(e)}w=0}))),B),P=()=>(h&&(r(h),h=void 0),B),R=async e=>(1!=w&&(w=2,S++,await x((async()=>{try{await a(L,e)}catch(e){i?.(e)}w=0}))),B),V=()=>(o(p,e.delListener),p=void 0,B),x=async(...e)=>(((e,...t)=>{e.push(...t)})(v(C,g),...e),await(async()=>{if(!v(M,g)){for(b(M,g,1);!n((e=v(C,g),y=e.shift()));)try{await y()}catch(e){i?.(e)}b(M,g,0)}var e})(),B),B={load:z,startAutoLoad:async e=>(await P().load(e),h=s((async(e,t)=>{t||e?2!=w&&(w=1,A++,E(t??e),w=0):await z()})),B),stopAutoLoad:P,isAutoLoading:()=>!n(h),save:R,startAutoSave:async()=>(await V().save(),p=e.addDidFinishTransactionListener((()=>{const e=T();H(e)&&R(e)})),B),stopAutoSave:V,isAutoSaving:()=>!n(p),schedule:x,getStore:()=>e,destroy:()=>P().stopAutoSave(),getStats:()=>({loads:A,saves:S}),...c};return u(B)})(t,(async()=>{const e=await P();return d(e[0][0])&&d(e[1][0])?void 0:e}),(async(e,s)=>{L++,s?a(null,null,3,s):a(null,null,2,t.getMergeableContentHashes())}),(e=>g=e),(()=>g=void 0),l,2,{startSync:async e=>await(await R.startAutoLoad(e)).startAutoSave(),stopSync:()=>R.stopAutoLoad().stopAutoSave(),destroy:()=>(r(),R.stopSync()),getSynchronizerStats:()=>({sends:L,receives:T}),...c});return R})(t,((e,t,a,s)=>i.postMessage([r,e,t,a,s])),(e=>{i.onmessage=({data:[t,a,s,o,i]})=>n(a)||a==r?e(t,s,o,i):0}),(()=>{i.close()}),.01,s,{getChannelName:()=>a})};
@@ -0,0 +1 @@
1
+ "use strict";const e=Promise,t=globalThis,a=Math,s=a.floor,n=e=>null==e,o=(e,t,a)=>n(e)?a?.():t(e),r=(e,t)=>e.map(t),i=Object,l=e=>i.getPrototypeOf(e),c=i.entries,g=i.keys,u=i.freeze,y=(e,t)=>((e,t)=>e.forEach(t))(c(e),(([e,a])=>t(a,e))),d=e=>(e=>!n(e)&&o(l(e),(e=>e==i.prototype||n(l(e))),(()=>!0)))(e)&&0==(e=>g(e).length)(e),h=(e,t,a)=>(((e,t)=>t in e)(e,t)||(e[t]=a()),e[t]),p=(e,t)=>e?.delete(t),w=e=>new Map(e),v=(e,t)=>e?.get(t),b=(e,t,a)=>n(a)?(p(e,t),e):e?.set(t,a),f=(e,t,a,s)=>{var n,o;return n=e,o=t,n?.has(o)||b(e,t,a()),v(e,t)},M=w(),C=w();new t.TextEncoder;const A=(e,t)=>t?[e,t]:[e],S=(e,t)=>((e??"")>(t??"")?e:t)??"",m=(e="")=>A(((e=[])=>i.fromEntries(e))(),e),L="-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz".split("");w(r(L,((e,t)=>[e,t])));const T=t.crypto?e=>t.crypto.getRandomValues(e):e=>r(e,(()=>s(256*a.random()))),H=(e=16)=>{return t=(e,t)=>e+L[63&t],T(new Uint8Array(e)).reduce(t,"");var t};exports.createBroadcastChannelSynchronizer=(t,a,s)=>{const r=H(),i=new BroadcastChannel(a);return((t,a,s,r,i,l,c={})=>{let g,L=0,T=0;const D=w();s(((e,s,r,i)=>{T++,0==r?o(v(D,s),(([t,a])=>n(t)||t==e?a(i,e):0)):2==r&&R.isAutoLoading()?P(e,i).then((e=>{g?.(void 0,e)})):3==r&&R.isAutoLoading()?g?.(void 0,i):o(1==r&&R.isAutoSaving()?t.getMergeableContentHashes():4==r?t.getMergeableTableDiff(i):5==r?t.getMergeableRowDiff(i):6==r?t.getMergeableCellDiff(i):7==r?t.getMergeableValueDiff(i):void 0,(t=>{L++,a(e,s,0,t)}))}));const E=async(t,s,n="")=>new e(((e,o)=>{const r=H(),l=setTimeout((()=>{p(D,r),o(`No response from ${t??"anyone"} to '${s}'`)}),1e3*i);b(D,r,[t,(t,a)=>{clearTimeout(l),p(D,r),e([t,a])}]),L++,a(t,r,s,n)})),z=(e,[t,a])=>{y(t,(([t,a],s)=>{const n=h(e[0],s,m);y(t,(([e,t],a)=>{const s=h(n[0],a,m);y(e,(([e,t],a)=>s[0][a]=A(e,t))),s[1]=S(s[1],t)})),n[1]=S(n[1],a)})),e[1]=S(e[1],a)},P=async(e=null,a)=>{n(a)&&([a,e]=await E(e,1));const[s,o]=a,[r,i]=t.getMergeableContentHashes();let l=m();if(r!=s){const[a,s]=(await E(e,4,t.getMergeableTableHashes()))[0];if(l=a,!d(s)){const[a,n]=(await E(e,5,t.getMergeableRowHashes(s)))[0];if(z(l,a),!d(n)){const a=(await E(e,6,t.getMergeableCellHashes(n)))[0];z(l,a)}}}return[l,i==o?m():(await E(e,7,t.getMergeableValueHashes()))[0],1]},R=((e,t,a,s,r,i,l,c={},g=[])=>{let y,h,p,w=0,A=0,S=0;f(M,g,(()=>0)),f(C,g,(()=>[]));const[m,L,T,H,D]=((e=1,t)=>1!=e&&t.isMergeable()?[1,t.getMergeableContent,t.getTransactionMergeableChanges,([[e],[t]])=>!d(e)||!d(t),t.setDefaultContent]:2!=e?[0,t.getContent,t.getTransactionChanges,([e,t])=>!d(e)||!d(t),t.setContent]:(e=>{throw Error("Store type not supported by this Persister")})())(l,e),E=t=>{var a;(m&&(a=t?.[0],Array.isArray(a))?1===t?.[2]?e.applyMergeableChanges:e.setMergeableContent:1===t?.[2]?e.applyChanges:e.setContent)(t)},z=async e=>(2!=w&&(w=1,A++,await x((async()=>{try{E(await t())}catch(t){i?.(t),e&&D(e)}w=0}))),B),P=()=>(h&&(r(h),h=void 0),B),R=async e=>(1!=w&&(w=2,S++,await x((async()=>{try{await a(L,e)}catch(e){i?.(e)}w=0}))),B),V=()=>(o(p,e.delListener),p=void 0,B),x=async(...e)=>(((e,...t)=>{e.push(...t)})(v(C,g),...e),await(async()=>{if(!v(M,g)){for(b(M,g,1);!n((e=v(C,g),y=e.shift()));)try{await y()}catch(e){i?.(e)}b(M,g,0)}var e})(),B),B={load:z,startAutoLoad:async e=>(await P().load(e),h=s((async(e,t)=>{t||e?2!=w&&(w=1,A++,E(t??e),w=0):await z()})),B),stopAutoLoad:P,isAutoLoading:()=>!n(h),save:R,startAutoSave:async()=>(await V().save(),p=e.addDidFinishTransactionListener((()=>{const e=T();H(e)&&R(e)})),B),stopAutoSave:V,isAutoSaving:()=>!n(p),schedule:x,getStore:()=>e,destroy:()=>P().stopAutoSave(),getStats:()=>({loads:A,saves:S}),...c};return u(B)})(t,(async()=>{const e=await P();return d(e[0][0])&&d(e[1][0])?void 0:e}),(async(e,s)=>{L++,s?a(null,null,3,s):a(null,null,2,t.getMergeableContentHashes())}),(e=>g=e),(()=>g=void 0),l,2,{startSync:async e=>await(await R.startAutoLoad(e)).startAutoSave(),stopSync:()=>R.stopAutoLoad().stopAutoSave(),destroy:()=>(r(),R.stopSync()),getSynchronizerStats:()=>({sends:L,receives:T}),...c});return R})(t,((e,t,a,s)=>i.postMessage([r,e,t,a,s])),(e=>{i.onmessage=({data:[t,a,s,o,i]})=>n(a)||a==r?e(t,s,o,i):0}),(()=>{i.close()}),.01,s,{getChannelName:()=>a})};
@@ -1 +1 @@
1
- "use strict";const e=Promise,t=globalThis,a=Math,s=a.floor,n=e=>null==e,o=(e,t,a)=>n(e)?a?.():t(e),r=(e,t,a)=>e.slice(t,a),i=t=>new e(t),c=(e,t)=>e.map(t),l=Object,g=e=>l.getPrototypeOf(e),y=l.entries,d=l.keys,u=l.freeze,h=(e,t)=>((e,t)=>e.forEach(t))(y(e),(([e,a])=>t(a,e))),p=e=>(e=>!n(e)&&o(g(e),(e=>e==l.prototype||n(g(e))),(()=>!0)))(e)&&0==(e=>d(e).length)(e),v=(e,t,a)=>(((e,t)=>t in e)(e,t)||(e[t]=a()),e[t]),f=(e,t)=>e?.delete(t),w=e=>new Map(e),b=(e,t)=>e?.get(t),S=(e,t,a)=>n(a)?(f(e,t),e):e?.set(t,a),M=(e,t,a,s)=>{var n,o;return n=e,o=t,n?.has(o)||S(e,t,a()),b(e,t)},A=w(),C=w();new t.TextEncoder;const L=(e,t)=>t?[e,t]:[e],m=(e,t)=>((e??"")>(t??"")?e:t)??"",T=(e="")=>L(((e=[])=>l.fromEntries(e))(),e),H="-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz".split("");w(c(H,((e,t)=>[e,t])));const D=t.crypto?e=>t.crypto.getRandomValues(e):e=>c(e,(()=>s(256*a.random())));exports.createWsSynchronizer=async(e,t,a=1,s)=>{let c;const l=(e,a)=>t.addEventListener(e,a),g=((e,t,a,s,r,c,l={})=>{let g,y=0,d=0;const E=w();a(((a,s,r,i)=>{d++,0==r?o(b(E,s),(([e,t])=>n(e)||e==a?t(i,a):0)):2==r&&x.isAutoLoading()?P(a,i).then((e=>{g?.(void 0,e)})):3==r&&x.isAutoLoading()?g?.(void 0,i):o(1==r&&x.isAutoSaving()?e.getMergeableContentHashes():4==r?e.getMergeableTableDiff(i):5==r?e.getMergeableRowDiff(i):6==r?e.getMergeableCellDiff(i):7==r?e.getMergeableValueDiff(i):void 0,(e=>{y++,t(a,s,0,e)}))}));const O=async(e,a,s="")=>i(((n,o)=>{const i=((e=16)=>{return t=(e,t)=>e+H[63&t],D(new Uint8Array(e)).reduce(t,"");var t})(),c=setTimeout((()=>{f(E,i),o(`No response from ${e??"anyone"} to '${a}'`)}),1e3*r);S(E,i,[e,(e,t)=>{clearTimeout(c),f(E,i),n([e,t])}]),y++,t(e,i,a,s)})),N=(e,[t,a])=>{h(t,(([t,a],s)=>{const n=v(e[0],s,T);h(t,(([e,t],a)=>{const s=v(n[0],a,T);h(e,(([e,t],a)=>s[0][a]=L(e,t))),s[1]=m(s[1],t)})),n[1]=m(n[1],a)})),e[1]=m(e[1],a)},P=async(t=null,a)=>{n(a)&&([a,t]=await O(t,1));const[s,o]=a,[r,i]=e.getMergeableContentHashes();let c=T();if(r!=s){const[a,s]=(await O(t,4,e.getMergeableTableHashes()))[0];if(c=a,!p(s)){const[a,n]=(await O(t,5,e.getMergeableRowHashes(s)))[0];if(N(c,a),!p(n)){const a=(await O(t,6,e.getMergeableCellHashes(n)))[0];N(c,a)}}}return[c,i==o?T():(await O(t,7,e.getMergeableValueHashes()))[0],1]},x=((e,t,a,s,r,i,c,l={},g=[])=>{let y,d,h,v=0,f=0,w=0;M(A,g,(()=>0)),M(C,g,(()=>[]));const[L,m,T,H,D]=((e=1,t)=>1!=e&&t.isMergeable()?[1,t.getMergeableContent,t.getTransactionMergeableChanges,([[e],[t]])=>!p(e)||!p(t),t.setDefaultContent]:2!=e?[0,t.getContent,t.getTransactionChanges,([e,t])=>!p(e)||!p(t),t.setContent]:(e=>{throw Error("Store type not supported by this Persister")})())(c,e),E=t=>{var a;(L&&(a=t?.[0],Array.isArray(a))?1===t?.[2]?e.applyMergeableChanges:e.setMergeableContent:1===t?.[2]?e.applyChanges:e.setContent)(t)},O=async e=>(2!=v&&(v=1,f++,await z((async()=>{try{E(await t())}catch(t){i?.(t),e&&D(e)}v=0}))),R),N=()=>(d&&(r(d),d=void 0),R),P=async e=>(1!=v&&(v=2,w++,await z((async()=>{try{await a(m,e)}catch(e){i?.(e)}v=0}))),R),x=()=>(o(h,e.delListener),h=void 0,R),z=async(...e)=>(((e,...t)=>{e.push(...t)})(b(C,g),...e),await(async()=>{if(!b(A,g)){for(S(A,g,1);!n((e=b(C,g),y=e.shift()));)try{await y()}catch(e){i?.(e)}S(A,g,0)}var e})(),R),R={load:O,startAutoLoad:async e=>(await N().load(e),d=s((async(e,t)=>{t||e?2!=v&&(v=1,f++,E(t??e),v=0):await O()})),R),stopAutoLoad:N,isAutoLoading:()=>!n(d),save:P,startAutoSave:async()=>(await x().save(),h=e.addDidFinishTransactionListener((()=>{const e=T();H(e)&&P(e)})),R),stopAutoSave:x,isAutoSaving:()=>!n(h),schedule:z,getStore:()=>e,destroy:()=>N().stopAutoSave(),getStats:()=>({loads:f,saves:w}),...l};return u(R)})(e,(async()=>{const e=await P();return p(e[0][0])&&p(e[1][0])?void 0:e}),(async(a,s)=>{y++,s?t(null,null,3,s):t(null,null,2,e.getMergeableContentHashes())}),(e=>g=e),(()=>g=void 0),c,2,{startSync:async e=>await(await x.startAutoLoad(e)).startAutoSave(),stopSync:()=>x.stopAutoLoad().stopAutoSave(),destroy:()=>(s(),x.stopSync()),getSynchronizerStats:()=>({sends:y,receives:d}),...l});return x})(e,((e,...a)=>{t.send((e??"")+"\n"+JSON.stringify(a,((e,t)=>void 0===t?"":t)))}),(e=>{c=e}),(()=>{t.close()}),a,s,{getWebSocket:()=>t});return l("message",(({data:e})=>{if(!n(c)){const a=e.toString("utf8").indexOf("\n");-1!==a&&c(r(e,0,a),...(t=r(e,a+1),JSON.parse(t,((e,t)=>""===t?void 0:t))))}var t})),i(((e,a)=>{t.readyState!=t.OPEN?(l("error",a),l("open",(()=>e(g)))):e(g)}))};
1
+ "use strict";const e=Promise,t=globalThis,a=Math,s=a.floor,n=e=>null==e,o=(e,t,a)=>n(e)?a?.():t(e),r=(e,t,a)=>e.slice(t,a),i=t=>new e(t),c=(e,t)=>e.map(t),l=Object,g=e=>l.getPrototypeOf(e),y=l.entries,d=l.keys,u=l.freeze,h=(e,t)=>((e,t)=>e.forEach(t))(y(e),(([e,a])=>t(a,e))),p=e=>(e=>!n(e)&&o(g(e),(e=>e==l.prototype||n(g(e))),(()=>!0)))(e)&&0==(e=>d(e).length)(e),v=(e,t,a)=>(((e,t)=>t in e)(e,t)||(e[t]=a()),e[t]),f=(e,t)=>e?.delete(t),w=e=>new Map(e),b=(e,t)=>e?.get(t),S=(e,t,a)=>n(a)?(f(e,t),e):e?.set(t,a),M=(e,t,a,s)=>{var n,o;return n=e,o=t,n?.has(o)||S(e,t,a()),b(e,t)},A=w(),C=w();new t.TextEncoder;const L=(e,t)=>t?[e,t]:[e],m=(e,t)=>((e??"")>(t??"")?e:t)??"",T=(e="")=>L(((e=[])=>l.fromEntries(e))(),e),H="-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz".split("");w(c(H,((e,t)=>[e,t])));const D=t.crypto?e=>t.crypto.getRandomValues(e):e=>c(e,(()=>s(256*a.random())));exports.createWsSynchronizer=async(e,t,a=1,s)=>{const c=(e,a)=>t.addEventListener(e,a),l=((e,t,a,s,r,c,l={})=>{let g,y=0,d=0;const E=w();a(((a,s,r,i)=>{d++,0==r?o(b(E,s),(([e,t])=>n(e)||e==a?t(i,a):0)):2==r&&x.isAutoLoading()?P(a,i).then((e=>{g?.(void 0,e)})):3==r&&x.isAutoLoading()?g?.(void 0,i):o(1==r&&x.isAutoSaving()?e.getMergeableContentHashes():4==r?e.getMergeableTableDiff(i):5==r?e.getMergeableRowDiff(i):6==r?e.getMergeableCellDiff(i):7==r?e.getMergeableValueDiff(i):void 0,(e=>{y++,t(a,s,0,e)}))}));const O=async(e,a,s="")=>i(((n,o)=>{const i=((e=16)=>{return t=(e,t)=>e+H[63&t],D(new Uint8Array(e)).reduce(t,"");var t})(),c=setTimeout((()=>{f(E,i),o(`No response from ${e??"anyone"} to '${a}'`)}),1e3*r);S(E,i,[e,(e,t)=>{clearTimeout(c),f(E,i),n([e,t])}]),y++,t(e,i,a,s)})),N=(e,[t,a])=>{h(t,(([t,a],s)=>{const n=v(e[0],s,T);h(t,(([e,t],a)=>{const s=v(n[0],a,T);h(e,(([e,t],a)=>s[0][a]=L(e,t))),s[1]=m(s[1],t)})),n[1]=m(n[1],a)})),e[1]=m(e[1],a)},P=async(t=null,a)=>{n(a)&&([a,t]=await O(t,1));const[s,o]=a,[r,i]=e.getMergeableContentHashes();let c=T();if(r!=s){const[a,s]=(await O(t,4,e.getMergeableTableHashes()))[0];if(c=a,!p(s)){const[a,n]=(await O(t,5,e.getMergeableRowHashes(s)))[0];if(N(c,a),!p(n)){const a=(await O(t,6,e.getMergeableCellHashes(n)))[0];N(c,a)}}}return[c,i==o?T():(await O(t,7,e.getMergeableValueHashes()))[0],1]},x=((e,t,a,s,r,i,c,l={},g=[])=>{let y,d,h,v=0,f=0,w=0;M(A,g,(()=>0)),M(C,g,(()=>[]));const[L,m,T,H,D]=((e=1,t)=>1!=e&&t.isMergeable()?[1,t.getMergeableContent,t.getTransactionMergeableChanges,([[e],[t]])=>!p(e)||!p(t),t.setDefaultContent]:2!=e?[0,t.getContent,t.getTransactionChanges,([e,t])=>!p(e)||!p(t),t.setContent]:(e=>{throw Error("Store type not supported by this Persister")})())(c,e),E=t=>{var a;(L&&(a=t?.[0],Array.isArray(a))?1===t?.[2]?e.applyMergeableChanges:e.setMergeableContent:1===t?.[2]?e.applyChanges:e.setContent)(t)},O=async e=>(2!=v&&(v=1,f++,await z((async()=>{try{E(await t())}catch(t){i?.(t),e&&D(e)}v=0}))),R),N=()=>(d&&(r(d),d=void 0),R),P=async e=>(1!=v&&(v=2,w++,await z((async()=>{try{await a(m,e)}catch(e){i?.(e)}v=0}))),R),x=()=>(o(h,e.delListener),h=void 0,R),z=async(...e)=>(((e,...t)=>{e.push(...t)})(b(C,g),...e),await(async()=>{if(!b(A,g)){for(S(A,g,1);!n((e=b(C,g),y=e.shift()));)try{await y()}catch(e){i?.(e)}S(A,g,0)}var e})(),R),R={load:O,startAutoLoad:async e=>(await N().load(e),d=s((async(e,t)=>{t||e?2!=v&&(v=1,f++,E(t??e),v=0):await O()})),R),stopAutoLoad:N,isAutoLoading:()=>!n(d),save:P,startAutoSave:async()=>(await x().save(),h=e.addDidFinishTransactionListener((()=>{const e=T();H(e)&&P(e)})),R),stopAutoSave:x,isAutoSaving:()=>!n(h),schedule:z,getStore:()=>e,destroy:()=>N().stopAutoSave(),getStats:()=>({loads:f,saves:w}),...l};return u(R)})(e,(async()=>{const e=await P();return p(e[0][0])&&p(e[1][0])?void 0:e}),(async(a,s)=>{y++,s?t(null,null,3,s):t(null,null,2,e.getMergeableContentHashes())}),(e=>g=e),(()=>g=void 0),c,2,{startSync:async e=>await(await x.startAutoLoad(e)).startAutoSave(),stopSync:()=>x.stopAutoLoad().stopAutoSave(),destroy:()=>(s(),x.stopSync()),getSynchronizerStats:()=>({sends:y,receives:d}),...l});return x})(e,((e,...a)=>t.send((e??"")+"\n"+JSON.stringify(a,((e,t)=>void 0===t?"":t)))),(e=>c("message",(({data:t})=>{const a=t.toString("utf8").indexOf("\n");var s;-1!==a&&e(r(t,0,a),...(s=r(t,a+1),JSON.parse(s,((e,t)=>""===t?void 0:t))))}))),(()=>{t.close()}),a,s,{getWebSocket:()=>t});return i(((e,a)=>{t.readyState!=t.OPEN?(c("error",a),c("open",(()=>e(l)))):e(l)}))};
@@ -1 +1 @@
1
- "use strict";const e=Promise,t=globalThis,a=Math,s=a.floor,n=e=>null==e,o=(e,t,a)=>n(e)?a?.():t(e),r=(e,t,a)=>e.slice(t,a),i=t=>new e(t),c=(e,t)=>e.map(t),l=Object,g=e=>l.getPrototypeOf(e),y=l.entries,d=l.keys,u=l.freeze,h=(e,t)=>((e,t)=>e.forEach(t))(y(e),(([e,a])=>t(a,e))),p=e=>(e=>!n(e)&&o(g(e),(e=>e==l.prototype||n(g(e))),(()=>!0)))(e)&&0==(e=>d(e).length)(e),v=(e,t,a)=>(((e,t)=>t in e)(e,t)||(e[t]=a()),e[t]),f=(e,t)=>e?.delete(t),w=e=>new Map(e),b=(e,t)=>e?.get(t),S=(e,t,a)=>n(a)?(f(e,t),e):e?.set(t,a),M=(e,t,a,s)=>{var n,o;return n=e,o=t,n?.has(o)||S(e,t,a()),b(e,t)},A=w(),C=w();new t.TextEncoder;const L=(e,t)=>t?[e,t]:[e],m=(e,t)=>((e??"")>(t??"")?e:t)??"",T=(e="")=>L(((e=[])=>l.fromEntries(e))(),e),H="-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz".split("");w(c(H,((e,t)=>[e,t])));const D=t.crypto?e=>t.crypto.getRandomValues(e):e=>c(e,(()=>s(256*a.random())));exports.createWsSynchronizer=async(e,t,a=1,s)=>{let c;const l=(e,a)=>t.addEventListener(e,a),g=((e,t,a,s,r,c,l={})=>{let g,y=0,d=0;const E=w();a(((a,s,r,i)=>{d++,0==r?o(b(E,s),(([e,t])=>n(e)||e==a?t(i,a):0)):2==r&&x.isAutoLoading()?P(a,i).then((e=>{g?.(void 0,e)})):3==r&&x.isAutoLoading()?g?.(void 0,i):o(1==r&&x.isAutoSaving()?e.getMergeableContentHashes():4==r?e.getMergeableTableDiff(i):5==r?e.getMergeableRowDiff(i):6==r?e.getMergeableCellDiff(i):7==r?e.getMergeableValueDiff(i):void 0,(e=>{y++,t(a,s,0,e)}))}));const O=async(e,a,s="")=>i(((n,o)=>{const i=((e=16)=>{return t=(e,t)=>e+H[63&t],D(new Uint8Array(e)).reduce(t,"");var t})(),c=setTimeout((()=>{f(E,i),o(`No response from ${e??"anyone"} to '${a}'`)}),1e3*r);S(E,i,[e,(e,t)=>{clearTimeout(c),f(E,i),n([e,t])}]),y++,t(e,i,a,s)})),N=(e,[t,a])=>{h(t,(([t,a],s)=>{const n=v(e[0],s,T);h(t,(([e,t],a)=>{const s=v(n[0],a,T);h(e,(([e,t],a)=>s[0][a]=L(e,t))),s[1]=m(s[1],t)})),n[1]=m(n[1],a)})),e[1]=m(e[1],a)},P=async(t=null,a)=>{n(a)&&([a,t]=await O(t,1));const[s,o]=a,[r,i]=e.getMergeableContentHashes();let c=T();if(r!=s){const[a,s]=(await O(t,4,e.getMergeableTableHashes()))[0];if(c=a,!p(s)){const[a,n]=(await O(t,5,e.getMergeableRowHashes(s)))[0];if(N(c,a),!p(n)){const a=(await O(t,6,e.getMergeableCellHashes(n)))[0];N(c,a)}}}return[c,i==o?T():(await O(t,7,e.getMergeableValueHashes()))[0],1]},x=((e,t,a,s,r,i,c,l={},g=[])=>{let y,d,h,v=0,f=0,w=0;M(A,g,(()=>0)),M(C,g,(()=>[]));const[L,m,T,H,D]=((e=1,t)=>1!=e&&t.isMergeable()?[1,t.getMergeableContent,t.getTransactionMergeableChanges,([[e],[t]])=>!p(e)||!p(t),t.setDefaultContent]:2!=e?[0,t.getContent,t.getTransactionChanges,([e,t])=>!p(e)||!p(t),t.setContent]:(e=>{throw Error("Store type not supported by this Persister")})())(c,e),E=t=>{var a;(L&&(a=t?.[0],Array.isArray(a))?1===t?.[2]?e.applyMergeableChanges:e.setMergeableContent:1===t?.[2]?e.applyChanges:e.setContent)(t)},O=async e=>(2!=v&&(v=1,f++,await z((async()=>{try{E(await t())}catch(t){i?.(t),e&&D(e)}v=0}))),R),N=()=>(d&&(r(d),d=void 0),R),P=async e=>(1!=v&&(v=2,w++,await z((async()=>{try{await a(m,e)}catch(e){i?.(e)}v=0}))),R),x=()=>(o(h,e.delListener),h=void 0,R),z=async(...e)=>(((e,...t)=>{e.push(...t)})(b(C,g),...e),await(async()=>{if(!b(A,g)){for(S(A,g,1);!n((e=b(C,g),y=e.shift()));)try{await y()}catch(e){i?.(e)}S(A,g,0)}var e})(),R),R={load:O,startAutoLoad:async e=>(await N().load(e),d=s((async(e,t)=>{t||e?2!=v&&(v=1,f++,E(t??e),v=0):await O()})),R),stopAutoLoad:N,isAutoLoading:()=>!n(d),save:P,startAutoSave:async()=>(await x().save(),h=e.addDidFinishTransactionListener((()=>{const e=T();H(e)&&P(e)})),R),stopAutoSave:x,isAutoSaving:()=>!n(h),schedule:z,getStore:()=>e,destroy:()=>N().stopAutoSave(),getStats:()=>({loads:f,saves:w}),...l};return u(R)})(e,(async()=>{const e=await P();return p(e[0][0])&&p(e[1][0])?void 0:e}),(async(a,s)=>{y++,s?t(null,null,3,s):t(null,null,2,e.getMergeableContentHashes())}),(e=>g=e),(()=>g=void 0),c,2,{startSync:async e=>await(await x.startAutoLoad(e)).startAutoSave(),stopSync:()=>x.stopAutoLoad().stopAutoSave(),destroy:()=>(s(),x.stopSync()),getSynchronizerStats:()=>({sends:y,receives:d}),...l});return x})(e,((e,...a)=>{t.send((e??"")+"\n"+JSON.stringify(a,((e,t)=>void 0===t?"":t)))}),(e=>{c=e}),(()=>{t.close()}),a,s,{getWebSocket:()=>t});return l("message",(({data:e})=>{if(!n(c)){const a=e.toString("utf8").indexOf("\n");-1!==a&&c(r(e,0,a),...(t=r(e,a+1),JSON.parse(t,((e,t)=>""===t?void 0:t))))}var t})),i(((e,a)=>{t.readyState!=t.OPEN?(l("error",a),l("open",(()=>e(g)))):e(g)}))};
1
+ "use strict";const e=Promise,t=globalThis,a=Math,s=a.floor,n=e=>null==e,o=(e,t,a)=>n(e)?a?.():t(e),r=(e,t,a)=>e.slice(t,a),i=t=>new e(t),c=(e,t)=>e.map(t),l=Object,g=e=>l.getPrototypeOf(e),y=l.entries,d=l.keys,u=l.freeze,h=(e,t)=>((e,t)=>e.forEach(t))(y(e),(([e,a])=>t(a,e))),p=e=>(e=>!n(e)&&o(g(e),(e=>e==l.prototype||n(g(e))),(()=>!0)))(e)&&0==(e=>d(e).length)(e),v=(e,t,a)=>(((e,t)=>t in e)(e,t)||(e[t]=a()),e[t]),f=(e,t)=>e?.delete(t),w=e=>new Map(e),b=(e,t)=>e?.get(t),S=(e,t,a)=>n(a)?(f(e,t),e):e?.set(t,a),M=(e,t,a,s)=>{var n,o;return n=e,o=t,n?.has(o)||S(e,t,a()),b(e,t)},A=w(),C=w();new t.TextEncoder;const L=(e,t)=>t?[e,t]:[e],m=(e,t)=>((e??"")>(t??"")?e:t)??"",T=(e="")=>L(((e=[])=>l.fromEntries(e))(),e),H="-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz".split("");w(c(H,((e,t)=>[e,t])));const D=t.crypto?e=>t.crypto.getRandomValues(e):e=>c(e,(()=>s(256*a.random())));exports.createWsSynchronizer=async(e,t,a=1,s)=>{const c=(e,a)=>t.addEventListener(e,a),l=((e,t,a,s,r,c,l={})=>{let g,y=0,d=0;const E=w();a(((a,s,r,i)=>{d++,0==r?o(b(E,s),(([e,t])=>n(e)||e==a?t(i,a):0)):2==r&&x.isAutoLoading()?P(a,i).then((e=>{g?.(void 0,e)})):3==r&&x.isAutoLoading()?g?.(void 0,i):o(1==r&&x.isAutoSaving()?e.getMergeableContentHashes():4==r?e.getMergeableTableDiff(i):5==r?e.getMergeableRowDiff(i):6==r?e.getMergeableCellDiff(i):7==r?e.getMergeableValueDiff(i):void 0,(e=>{y++,t(a,s,0,e)}))}));const O=async(e,a,s="")=>i(((n,o)=>{const i=((e=16)=>{return t=(e,t)=>e+H[63&t],D(new Uint8Array(e)).reduce(t,"");var t})(),c=setTimeout((()=>{f(E,i),o(`No response from ${e??"anyone"} to '${a}'`)}),1e3*r);S(E,i,[e,(e,t)=>{clearTimeout(c),f(E,i),n([e,t])}]),y++,t(e,i,a,s)})),N=(e,[t,a])=>{h(t,(([t,a],s)=>{const n=v(e[0],s,T);h(t,(([e,t],a)=>{const s=v(n[0],a,T);h(e,(([e,t],a)=>s[0][a]=L(e,t))),s[1]=m(s[1],t)})),n[1]=m(n[1],a)})),e[1]=m(e[1],a)},P=async(t=null,a)=>{n(a)&&([a,t]=await O(t,1));const[s,o]=a,[r,i]=e.getMergeableContentHashes();let c=T();if(r!=s){const[a,s]=(await O(t,4,e.getMergeableTableHashes()))[0];if(c=a,!p(s)){const[a,n]=(await O(t,5,e.getMergeableRowHashes(s)))[0];if(N(c,a),!p(n)){const a=(await O(t,6,e.getMergeableCellHashes(n)))[0];N(c,a)}}}return[c,i==o?T():(await O(t,7,e.getMergeableValueHashes()))[0],1]},x=((e,t,a,s,r,i,c,l={},g=[])=>{let y,d,h,v=0,f=0,w=0;M(A,g,(()=>0)),M(C,g,(()=>[]));const[L,m,T,H,D]=((e=1,t)=>1!=e&&t.isMergeable()?[1,t.getMergeableContent,t.getTransactionMergeableChanges,([[e],[t]])=>!p(e)||!p(t),t.setDefaultContent]:2!=e?[0,t.getContent,t.getTransactionChanges,([e,t])=>!p(e)||!p(t),t.setContent]:(e=>{throw Error("Store type not supported by this Persister")})())(c,e),E=t=>{var a;(L&&(a=t?.[0],Array.isArray(a))?1===t?.[2]?e.applyMergeableChanges:e.setMergeableContent:1===t?.[2]?e.applyChanges:e.setContent)(t)},O=async e=>(2!=v&&(v=1,f++,await z((async()=>{try{E(await t())}catch(t){i?.(t),e&&D(e)}v=0}))),R),N=()=>(d&&(r(d),d=void 0),R),P=async e=>(1!=v&&(v=2,w++,await z((async()=>{try{await a(m,e)}catch(e){i?.(e)}v=0}))),R),x=()=>(o(h,e.delListener),h=void 0,R),z=async(...e)=>(((e,...t)=>{e.push(...t)})(b(C,g),...e),await(async()=>{if(!b(A,g)){for(S(A,g,1);!n((e=b(C,g),y=e.shift()));)try{await y()}catch(e){i?.(e)}S(A,g,0)}var e})(),R),R={load:O,startAutoLoad:async e=>(await N().load(e),d=s((async(e,t)=>{t||e?2!=v&&(v=1,f++,E(t??e),v=0):await O()})),R),stopAutoLoad:N,isAutoLoading:()=>!n(d),save:P,startAutoSave:async()=>(await x().save(),h=e.addDidFinishTransactionListener((()=>{const e=T();H(e)&&P(e)})),R),stopAutoSave:x,isAutoSaving:()=>!n(h),schedule:z,getStore:()=>e,destroy:()=>N().stopAutoSave(),getStats:()=>({loads:f,saves:w}),...l};return u(R)})(e,(async()=>{const e=await P();return p(e[0][0])&&p(e[1][0])?void 0:e}),(async(a,s)=>{y++,s?t(null,null,3,s):t(null,null,2,e.getMergeableContentHashes())}),(e=>g=e),(()=>g=void 0),c,2,{startSync:async e=>await(await x.startAutoLoad(e)).startAutoSave(),stopSync:()=>x.stopAutoLoad().stopAutoSave(),destroy:()=>(s(),x.stopSync()),getSynchronizerStats:()=>({sends:y,receives:d}),...l});return x})(e,((e,...a)=>t.send((e??"")+"\n"+JSON.stringify(a,((e,t)=>void 0===t?"":t)))),(e=>c("message",(({data:t})=>{const a=t.toString("utf8").indexOf("\n");var s;-1!==a&&e(r(t,0,a),...(s=r(t,a+1),JSON.parse(s,((e,t)=>""===t?void 0:t))))}))),(()=>{t.close()}),a,s,{getWebSocket:()=>t});return i(((e,a)=>{t.readyState!=t.OPEN?(c("error",a),c("open",(()=>e(l)))):e(l)}))};
@@ -286,7 +286,7 @@ const Message = {
286
286
  const createCustomSynchronizer = (
287
287
  store,
288
288
  send,
289
- onReceive,
289
+ registerReceive,
290
290
  destroyImpl,
291
291
  requestTimeoutSeconds,
292
292
  onIgnoredError,
@@ -296,7 +296,7 @@ const createCustomSynchronizer = (
296
296
  let sends = 0;
297
297
  let receives = 0;
298
298
  const pendingRequests = mapNew();
299
- onReceive((fromClientId, requestId, message, body) => {
299
+ registerReceive((fromClientId, requestId, message, body) => {
300
300
  receives++;
301
301
  if (message == Message.Response) {
302
302
  ifNotUndefined(