tinybase 6.1.0-beta.3 → 6.1.0-beta.5

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 (233) hide show
  1. package/@types/persisters/index.d.ts +83 -40
  2. package/@types/persisters/persister-automerge/index.d.ts +4 -4
  3. package/@types/persisters/persister-automerge/with-schemas/index.d.ts +4 -4
  4. package/@types/persisters/persister-browser/index.d.ts +4 -4
  5. package/@types/persisters/persister-browser/with-schemas/index.d.ts +4 -4
  6. package/@types/persisters/persister-cr-sqlite-wasm/index.d.ts +3 -3
  7. package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +3 -3
  8. package/@types/persisters/persister-electric-sql/index.d.ts +3 -3
  9. package/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +3 -3
  10. package/@types/persisters/persister-expo-sqlite/index.d.ts +3 -3
  11. package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +3 -3
  12. package/@types/persisters/persister-file/index.d.ts +2 -2
  13. package/@types/persisters/persister-file/with-schemas/index.d.ts +2 -2
  14. package/@types/persisters/persister-indexed-db/index.d.ts +2 -2
  15. package/@types/persisters/persister-indexed-db/with-schemas/index.d.ts +2 -2
  16. package/@types/persisters/persister-libsql/index.d.ts +3 -3
  17. package/@types/persisters/persister-libsql/with-schemas/index.d.ts +3 -3
  18. package/@types/persisters/persister-partykit-client/index.d.ts +2 -2
  19. package/@types/persisters/persister-partykit-client/with-schemas/index.d.ts +2 -2
  20. package/@types/persisters/persister-pglite/index.d.ts +3 -3
  21. package/@types/persisters/persister-pglite/with-schemas/index.d.ts +3 -3
  22. package/@types/persisters/persister-postgres/index.d.ts +3 -3
  23. package/@types/persisters/persister-postgres/with-schemas/index.d.ts +3 -3
  24. package/@types/persisters/persister-powersync/index.d.ts +3 -3
  25. package/@types/persisters/persister-powersync/with-schemas/index.d.ts +3 -3
  26. package/@types/persisters/persister-remote/index.d.ts +2 -2
  27. package/@types/persisters/persister-remote/with-schemas/index.d.ts +2 -2
  28. package/@types/persisters/persister-sqlite-bun/index.d.ts +159 -0
  29. package/@types/persisters/persister-sqlite-bun/with-schemas/index.d.ts +178 -0
  30. package/@types/persisters/persister-sqlite-wasm/index.d.ts +3 -3
  31. package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +3 -3
  32. package/@types/persisters/persister-sqlite3/index.d.ts +3 -3
  33. package/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +3 -3
  34. package/@types/persisters/persister-yjs/index.d.ts +4 -4
  35. package/@types/persisters/persister-yjs/with-schemas/index.d.ts +4 -4
  36. package/@types/persisters/with-schemas/index.d.ts +87 -42
  37. package/@types/synchronizers/index.d.ts +18 -16
  38. package/@types/synchronizers/synchronizer-broadcast-channel/index.d.ts +3 -3
  39. package/@types/synchronizers/synchronizer-broadcast-channel/with-schemas/index.d.ts +3 -3
  40. package/@types/synchronizers/synchronizer-local/index.d.ts +2 -2
  41. package/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +2 -2
  42. package/@types/synchronizers/synchronizer-ws-client/index.d.ts +5 -5
  43. package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +5 -5
  44. package/@types/synchronizers/synchronizer-ws-server/index.d.ts +37 -37
  45. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +37 -37
  46. package/@types/synchronizers/synchronizer-ws-server-simple/index.d.ts +7 -7
  47. package/@types/synchronizers/synchronizer-ws-server-simple/with-schemas/index.d.ts +7 -7
  48. package/@types/synchronizers/with-schemas/index.d.ts +18 -16
  49. package/@types/ui-react/index.d.ts +2 -2
  50. package/@types/ui-react/with-schemas/index.d.ts +2 -2
  51. package/index.js +23 -17
  52. package/mergeable-store/index.js +23 -17
  53. package/mergeable-store/with-schemas/index.js +23 -17
  54. package/min/index.js +1 -1
  55. package/min/index.js.gz +0 -0
  56. package/min/mergeable-store/index.js +1 -1
  57. package/min/mergeable-store/index.js.gz +0 -0
  58. package/min/mergeable-store/with-schemas/index.js +1 -1
  59. package/min/mergeable-store/with-schemas/index.js.gz +0 -0
  60. package/min/persisters/index.js +1 -1
  61. package/min/persisters/index.js.gz +0 -0
  62. package/min/persisters/persister-automerge/index.js +1 -1
  63. package/min/persisters/persister-automerge/index.js.gz +0 -0
  64. package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  65. package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  66. package/min/persisters/persister-browser/index.js +1 -1
  67. package/min/persisters/persister-browser/index.js.gz +0 -0
  68. package/min/persisters/persister-browser/with-schemas/index.js +1 -1
  69. package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  70. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  71. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  72. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  73. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  74. package/min/persisters/persister-durable-object-storage/index.js +1 -1
  75. package/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
  76. package/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -1
  77. package/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
  78. package/min/persisters/persister-electric-sql/index.js +1 -1
  79. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  80. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  81. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  82. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  83. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  84. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  85. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  86. package/min/persisters/persister-file/index.js +1 -1
  87. package/min/persisters/persister-file/index.js.gz +0 -0
  88. package/min/persisters/persister-file/with-schemas/index.js +1 -1
  89. package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  90. package/min/persisters/persister-indexed-db/index.js +1 -1
  91. package/min/persisters/persister-indexed-db/index.js.gz +0 -0
  92. package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  93. package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  94. package/min/persisters/persister-libsql/index.js +1 -1
  95. package/min/persisters/persister-libsql/index.js.gz +0 -0
  96. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  97. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  98. package/min/persisters/persister-partykit-client/index.js +1 -1
  99. package/min/persisters/persister-partykit-client/index.js.gz +0 -0
  100. package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
  101. package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  102. package/min/persisters/persister-pglite/index.js +1 -1
  103. package/min/persisters/persister-pglite/index.js.gz +0 -0
  104. package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  105. package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  106. package/min/persisters/persister-postgres/index.js +1 -1
  107. package/min/persisters/persister-postgres/index.js.gz +0 -0
  108. package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  109. package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  110. package/min/persisters/persister-powersync/index.js +1 -1
  111. package/min/persisters/persister-powersync/index.js.gz +0 -0
  112. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  113. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  114. package/min/persisters/persister-remote/index.js +1 -1
  115. package/min/persisters/persister-remote/index.js.gz +0 -0
  116. package/min/persisters/persister-remote/with-schemas/index.js +1 -1
  117. package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  118. package/min/persisters/persister-sqlite-bun/index.js +1 -0
  119. package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
  120. package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -0
  121. package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
  122. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  123. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  124. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  125. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  126. package/min/persisters/persister-sqlite3/index.js +1 -1
  127. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  128. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  129. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  130. package/min/persisters/persister-yjs/index.js +1 -1
  131. package/min/persisters/persister-yjs/index.js.gz +0 -0
  132. package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  133. package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  134. package/min/persisters/with-schemas/index.js +1 -1
  135. package/min/persisters/with-schemas/index.js.gz +0 -0
  136. package/min/store/index.js +1 -1
  137. package/min/store/index.js.gz +0 -0
  138. package/min/store/with-schemas/index.js +1 -1
  139. package/min/store/with-schemas/index.js.gz +0 -0
  140. package/min/synchronizers/index.js +1 -1
  141. package/min/synchronizers/index.js.gz +0 -0
  142. package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
  143. package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  144. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
  145. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  146. package/min/synchronizers/synchronizer-local/index.js +1 -1
  147. package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  148. package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  149. package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  150. package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  151. package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  152. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  153. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  154. package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  155. package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  156. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  157. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  158. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
  159. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
  160. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
  161. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
  162. package/min/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
  163. package/min/synchronizers/synchronizer-ws-server-simple/index.js.gz +0 -0
  164. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
  165. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js.gz +0 -0
  166. package/min/synchronizers/with-schemas/index.js +1 -1
  167. package/min/synchronizers/with-schemas/index.js.gz +0 -0
  168. package/min/ui-react-inspector/index.js +1 -1
  169. package/min/ui-react-inspector/index.js.gz +0 -0
  170. package/min/ui-react-inspector/with-schemas/index.js +1 -1
  171. package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  172. package/min/with-schemas/index.js +1 -1
  173. package/min/with-schemas/index.js.gz +0 -0
  174. package/package.json +46 -6
  175. package/persisters/index.js +293 -161
  176. package/persisters/persister-automerge/index.js +55 -50
  177. package/persisters/persister-automerge/with-schemas/index.js +55 -50
  178. package/persisters/persister-browser/index.js +56 -55
  179. package/persisters/persister-browser/with-schemas/index.js +56 -55
  180. package/persisters/persister-cr-sqlite-wasm/index.js +181 -134
  181. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +181 -134
  182. package/persisters/persister-durable-object-storage/index.js +58 -53
  183. package/persisters/persister-durable-object-storage/with-schemas/index.js +58 -53
  184. package/persisters/persister-electric-sql/index.js +181 -134
  185. package/persisters/persister-electric-sql/with-schemas/index.js +181 -134
  186. package/persisters/persister-expo-sqlite/index.js +181 -134
  187. package/persisters/persister-expo-sqlite/with-schemas/index.js +181 -134
  188. package/persisters/persister-file/index.js +55 -50
  189. package/persisters/persister-file/with-schemas/index.js +55 -50
  190. package/persisters/persister-indexed-db/index.js +82 -78
  191. package/persisters/persister-indexed-db/with-schemas/index.js +82 -78
  192. package/persisters/persister-libsql/index.js +182 -135
  193. package/persisters/persister-libsql/with-schemas/index.js +182 -135
  194. package/persisters/persister-partykit-client/index.js +56 -51
  195. package/persisters/persister-partykit-client/with-schemas/index.js +56 -51
  196. package/persisters/persister-pglite/index.js +299 -173
  197. package/persisters/persister-pglite/with-schemas/index.js +299 -173
  198. package/persisters/persister-postgres/index.js +296 -171
  199. package/persisters/persister-postgres/with-schemas/index.js +296 -171
  200. package/persisters/persister-powersync/index.js +189 -138
  201. package/persisters/persister-powersync/with-schemas/index.js +189 -138
  202. package/persisters/persister-remote/index.js +55 -50
  203. package/persisters/persister-remote/with-schemas/index.js +55 -50
  204. package/persisters/persister-sqlite-bun/index.js +1171 -0
  205. package/persisters/persister-sqlite-bun/with-schemas/index.js +1171 -0
  206. package/persisters/persister-sqlite-wasm/index.js +182 -135
  207. package/persisters/persister-sqlite-wasm/with-schemas/index.js +182 -135
  208. package/persisters/persister-sqlite3/index.js +181 -134
  209. package/persisters/persister-sqlite3/with-schemas/index.js +181 -134
  210. package/persisters/persister-yjs/index.js +55 -50
  211. package/persisters/persister-yjs/with-schemas/index.js +55 -50
  212. package/persisters/with-schemas/index.js +293 -161
  213. package/readme.md +2 -2
  214. package/releases.md +29 -1
  215. package/store/index.js +20 -15
  216. package/store/with-schemas/index.js +20 -15
  217. package/synchronizers/index.js +68 -63
  218. package/synchronizers/synchronizer-broadcast-channel/index.js +68 -63
  219. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +68 -63
  220. package/synchronizers/synchronizer-local/index.js +68 -63
  221. package/synchronizers/synchronizer-local/with-schemas/index.js +68 -63
  222. package/synchronizers/synchronizer-ws-client/index.js +68 -63
  223. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +68 -63
  224. package/synchronizers/synchronizer-ws-server/index.js +79 -70
  225. package/synchronizers/synchronizer-ws-server/with-schemas/index.js +79 -70
  226. package/synchronizers/synchronizer-ws-server-durable-object/index.js +69 -51
  227. package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +69 -51
  228. package/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
  229. package/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
  230. package/synchronizers/with-schemas/index.js +68 -63
  231. package/ui-react-inspector/index.js +68 -60
  232. package/ui-react-inspector/with-schemas/index.js +68 -60
  233. package/with-schemas/index.js +23 -17
@@ -1 +1 @@
1
- const e="",t=(e,t="",a)=>e.split(t,a),a=Promise,n=globalThis,s=Math,o=s.floor,r=e=>null==e,i=(e,t,a)=>r(e)?a?.():t(e),c=e=>Array.isArray(e),l=(e,t,a)=>e.slice(t,a),g=e=>e.length,u=e=>new a(e),d=e=>{throw Error(e)},y=(e,t)=>e.forEach(t),h=(e,...t)=>e.push(...t),v=e=>e.shift(),p=Object,f=e=>p.getPrototypeOf(e),w=p.entries,S=p.keys,b=p.freeze,M=(e,t)=>y(w(e),(([e,a])=>t(a,e))),A=e=>(e=>!r(e)&&i(f(e),(e=>e==p.prototype||r(f(e))),(()=>!0)))(e)&&0==(e=>g(S(e)))(e),C=(e,t,a)=>(((e,t)=>t in e)(e,t)||(e[t]=a()),e[t]),L=JSON.stringify,m=JSON.parse,T=e=>r(e)||0==(e=>e?.size??0)(e),E=(e,t)=>e?.forEach(t),H=(e,t)=>e?.delete(t),D=e=>new Map(e),O=(e,t)=>e?.get(t),N=(e,t,a)=>r(a)?(H(e,t),e):e?.set(t,a),P=(e,t,a,n)=>{var s,o;return s=e,o=t,s?.has(o)?n?.(O(e,t)):N(e,t,a()),O(e,t)},z=(e,t,a,n,s=0)=>i((a?P:O)(e,t[s],s>g(t)-2?a:D),(o=>{if(s>g(t)-2)return n?.(o)&&N(e,t[s]),o;const r=z(o,t,a,n,s+1);return T(o)&&N(e,t[s]),r})),R=t("-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"),V=n.crypto?e=>n.crypto.getRandomValues(e):e=>(e=>e.map((()=>o(256*s.random()))))(e),k=(e=16)=>{return t=(e,t)=>e+R[63&t],V(new Uint8Array(e)).reduce(t,"");var t},x=(e,t)=>t?[e,t]:[e],J=(e,t)=>((e??"")>(t??"")?e:t)??"",$=(e="")=>x(((e=[])=>p.fromEntries(e))(),e),j=/^\d+$/,F=e=>new Set(c(e)||r(e)?e:[e]),U=D(),W=D(),q=(t,a,n,s,o,l,u,p={},f=0,w=[])=>{let S,M,C,L=0,m=0,R=0;P(U,w,(()=>0)),P(W,w,(()=>[]));const V=D(),[k,x,J,$,q]=((e=1,t,a)=>1!=e&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!a),([[e],[t]])=>!A(e)||!A(t),t.setDefaultContent]:2!=e?[0,t.getContent,t.getTransactionChanges,([e,t])=>!A(e)||!A(t),t.setContent]:d("Store type not supported by this Persister"))(u,t,f),[B,G,I]=(()=>{let t;const[a,n]=(()=>{const t=[];let a=0;return[n=>(n?v(t):null)??e+a++,e=>{j.test(e)&&g(t)<1e3&&h(t,e)}]})(),s=D();return[(n,o,r,i=[],c=()=>[])=>{t??=te;const l=a(1);var g,u;return N(s,l,[n,o,r,i,c]),g=z(o,r??[e],F),u=l,g?.add(u),l},(a,n,...o)=>y(((t,a=[e])=>{const n=[],s=(e,t)=>t==g(a)?h(n,e):null===a[t]?E(e,(e=>s(e,t+1))):y([a[t],null],(a=>s(O(e,a),t+1)));return s(t,0),n})(a,n),(e=>E(e,(e=>O(s,e)[0](t,...n??[],...o))))),t=>i(O(s,t),(([,a,o])=>(z(a,o??[e],void 0,(e=>(H(e,t),T(e)?1:0))),N(s,t),n(t),o))),e=>i(O(s,e),(([e,,a=[],n,s])=>{const o=(...i)=>{const c=g(i);c==g(a)?e(t,...i,...s(i)):r(a[c])?y(n[c]?.(...i)??[],(e=>o(...i,e))):o(...i,a[c])};o()}))]})(),K=e=>{e!=L&&(L=e,G(V,void 0,L))},Q=e=>{(k&&c(e?.[0])?1===e?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===e?.[2]?t.applyChanges:t.setContent)(e)},X=async e=>(2!=L&&(K(1),m++,await ee((async()=>{try{const t=await a();c(t)?Q(t):e?q(e):d("Content is not an array: "+t)}catch(t){l?.(t),e&&q(e)}K(0)}))),te),Y=()=>(M&&(o(M),M=void 0),te),Z=async e=>(1!=L&&(K(2),R++,await ee((async()=>{try{await n(x,e)}catch(e){l?.(e)}K(0)}))),te),_=()=>(C&&(t.delListener(C),C=void 0),te),ee=async(...e)=>(h(O(W,w),...e),await(async()=>{if(!O(U,w)){for(N(U,w,1);!r(S=v(O(W,w)));)try{await S()}catch(e){l?.(e)}N(U,w,0)}})(),te),te={load:X,startAutoLoad:async e=>{Y(),await X(e);try{M=await s((async(e,t)=>{t||e?2!=L&&(K(1),m++,Q(t??e),K(0)):await X()}))}catch(e){l?.(e)}return te},stopAutoLoad:Y,isAutoLoading:()=>!r(M),save:Z,startAutoSave:async()=>(_(),await Z(),C=t.addDidFinishTransactionListener((()=>{const e=J();$(e)&&Z(e)})),te),stopAutoSave:_,isAutoSaving:()=>!r(C),getStatus:()=>L,addStatusListener:e=>B(e,V),delListener:e=>(I(e),t),schedule:ee,getStore:()=>t,destroy:()=>(O(W,w).splice(0,void 0),Y().stopAutoSave()),getStats:()=>({loads:m,saves:R}),...p};return b(te)},B=async(t,a,n=1,s,o,c)=>{const g=(e,t)=>(a.addEventListener(e,t),()=>a.removeEventListener(e,t)),d=((t,a,n,s,o,c,l,g,d={})=>{let y,h=0,v=0,p=0;const f=D(),w=()=>k(11),S=(e,t,n,s)=>{v++,c?.(e,t,n,s),a(e,t,n,s)},b=async(e,t,a,n)=>u(((s,r)=>{const i=n+"."+k(4),c=((e,t=0)=>setTimeout(e,1e3*t))((()=>{H(f,i),r(`No response from ${e??"anyone"} to ${i}, `+t)}),o);N(f,i,[e,(e,t)=>{clearTimeout(c),H(f,i),s([e,t,n])}]),S(e,i,t,a)})),L=(e,[t,a])=>{M(t,(([t,a],n)=>{const s=C(e[0],n,$);M(t,(([e,t],a)=>{const n=C(s[0],a,$);M(e,(([e,t],a)=>n[0][a]=x(e,t))),n[1]=J(n[1],t)})),s[1]=J(s[1],a)})),e[1]=J(e[1],a)},m=async(a=null,n,s=w())=>{try{r(n)&&([n,a,s]=await b(null,1,e,s));const[o,i]=n,[c,l]=t.getMergeableContentHashes();let g=$();if(c!=o){const[e,n]=(await b(a,4,t.getMergeableTableHashes(),s))[0];if(g=e,!A(n)){const[e,o]=(await b(a,5,t.getMergeableRowHashes(n),s))[0];if(L(g,e),!A(o)){const e=(await b(a,6,t.getMergeableCellHashes(o),s))[0];L(g,e)}}}return[g,l==i?$():(await b(a,7,t.getMergeableValueHashes(),s))[0],1]}catch(e){g?.(e)}},T=q(t,(async()=>{const e=await m();return!e||A(e[0][0])&&A(e[1][0])?void 0:e}),(async(e,a)=>a?S(null,w(),3,a):S(null,w(),2,t.getMergeableContentHashes())),(e=>y=e),(()=>y=void 0),g,2,{startSync:async e=>(h=1,await(await T.startAutoLoad(e)).startAutoSave()),stopSync:()=>(h=0,T.stopAutoLoad().stopAutoSave()),destroy:()=>(s(),T.stopSync()),getSynchronizerStats:()=>({sends:v,receives:p}),...d},1);return n(((e,a,n,s)=>{const o=h||T.isAutoLoading();p++,l?.(e,a,n,s),0==n?i(O(f,a),(([t,a])=>r(t)||t==e?a(s,e):0)):2==n&&o?m(e,s,a??void 0).then((e=>{y?.(void 0,e)})).catch(g):3==n&&o?y?.(void 0,s):i(1==n&&(h||T.isAutoSaving())?t.getMergeableContentHashes():4==n?t.getMergeableTableDiff(s):5==n?t.getMergeableRowDiff(s):6==n?t.getMergeableCellDiff(s):7==n?t.getMergeableValueDiff(s):void 0,(t=>{S(e,a,0,t)}))})),T})(t,((t,...n)=>a.send(((t,...a)=>{return n=t??e,s=L(a,((e,t)=>void 0===t?"":t)),n+"\n"+s;var n,s})(t,...n))),(e=>g("message",(({data:t})=>((e,t)=>(e=>{const a=e.indexOf("\n");var n,s,o;-1!==a&&(n=l(e,0,a),s=l(e,a+1),t(n,...(o=s,m(o,((e,t)=>""===t?void 0:t)))))})(e))(t.toString("utf8"),e)))),(()=>{a.close()}),n,s,o,c,{getWebSocket:()=>a});return u((e=>{if(a.readyState!=a.OPEN){const t=t=>{t&&c?.(t),a(),n(),e(d)},a=g("open",(()=>t())),n=g("error",t)}else e(d)}))};export{B as createWsSynchronizer};
1
+ const t="",e=(t,e="",a)=>t.split(e,a),a=Promise,n=globalThis,s=Math,o=s.floor,r=t=>null==t,i=(t,e,a)=>r(t)?a?.():e(t),c=t=>Array.isArray(t),l=(t,e,a)=>t.slice(e,a),g=t=>t.length,u=t=>new a(t),d=t=>{throw Error(t)},y=async(t,e,a)=>{try{return await t()}catch(t){e?.(t)}},w=(t,e)=>t.forEach(e),v=(t,...e)=>t.push(...e),p=t=>t.shift(),f=Object,h=t=>f.getPrototypeOf(t),S=f.entries,b=f.keys,M=f.freeze,A=(t,e)=>w(S(t),(([t,a])=>e(a,t))),C=t=>(t=>!r(t)&&i(h(t),(t=>t==f.prototype||r(h(t))),(()=>!0)))(t)&&0==(t=>g(b(t)))(t),L=(t,e,a)=>(((t,e)=>e in t)(t,e)||(t[e]=a()),t[e]),m=JSON.stringify,T=JSON.parse,E=t=>r(t)||0==(t=>t?.size??0)(t),H=(t,e)=>t?.forEach(e),D=(t,e)=>t?.delete(e),O=t=>new Map(t),N=(t,e)=>t?.get(e),P=(t,e,a)=>r(a)?(D(t,e),t):t?.set(e,a),z=(t,e,a,n)=>{var s,o;return s=t,o=e,s?.has(o)?n?.(N(t,e)):P(t,e,a()),N(t,e)},R=(t,e,a,n,s=0)=>i((a?z:N)(t,e[s],s>g(e)-2?a:O),(o=>{if(s>g(e)-2)return n?.(o)&&P(t,e[s]),o;const r=R(o,e,a,n,s+1);return E(o)&&P(t,e[s]),r})),V=e("-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"),k=n.crypto?t=>n.crypto.getRandomValues(t):t=>(t=>t.map((()=>o(256*s.random()))))(t),x=(t=16)=>{return e=(t,e)=>t+V[63&e],k(new Uint8Array(t)).reduce(e,"");var e},J=(t,e)=>e?[t,e]:[t],$=(t,e)=>((t??"")>(e??"")?t:e)??"",j=(t="")=>J(((t=[])=>f.fromEntries(t))(),t),F=/^\d+$/,U=t=>new Set(c(t)||r(t)?t:[t]),W=O(),q=O(),B=(e,a,n,s,o,l,u,f={},h=0,S=[])=>{let b,A,L,m=0,T=0,V=0;z(W,S,(()=>0)),z(q,S,(()=>[]));const k=O(),[x,J,$,j,B]=((t=1,e,a)=>1!=t&&e.isMergeable()?[1,e.getMergeableContent,()=>e.getTransactionMergeableChanges(!a),([[t],[e]])=>!C(t)||!C(e),e.setDefaultContent]:2!=t?[0,e.getContent,e.getTransactionChanges,([t,e])=>!C(t)||!C(e),e.setContent]:d("Store type not supported by this Persister"))(u,e,h),[G,I,K]=(()=>{let e;const[a,n]=(()=>{const e=[];let a=0;return[n=>(n?p(e):null)??t+a++,t=>{F.test(t)&&g(e)<1e3&&v(e,t)}]})(),s=O();return[(n,o,r,i=[],c=()=>[])=>{e??=at;const l=a(1);var g,u;return P(s,l,[n,o,r,i,c]),g=R(o,r??[t],U),u=l,g?.add(u),l},(a,n,...o)=>w(((e,a=[t])=>{const n=[],s=(t,e)=>e==g(a)?v(n,t):null===a[e]?H(t,(t=>s(t,e+1))):w([a[e],null],(a=>s(N(t,a),e+1)));return s(e,0),n})(a,n),(t=>H(t,(t=>N(s,t)[0](e,...n??[],...o))))),e=>i(N(s,e),(([,a,o])=>(R(a,o??[t],void 0,(t=>(D(t,e),E(t)?1:0))),P(s,e),n(e),o))),t=>i(N(s,t),(([t,,a=[],n,s])=>{const o=(...i)=>{const c=g(i);c==g(a)?t(e,...i,...s(i)):r(a[c])?w(n[c]?.(...i)??[],(t=>o(...i,t))):o(...i,a[c])};o()}))]})(),Q=t=>{t!=m&&(m=t,I(k,void 0,m))},X=t=>{(x&&c(t?.[0])?1===t?.[2]?e.applyMergeableChanges:e.setMergeableContent:1===t?.[2]?e.applyChanges:e.setContent)(t)},Y=async t=>(2!=m&&(Q(1),T++,await et((async()=>{await y((async()=>{const e=await a();c(e)?X(e):t?B(t):d("Content is not an array: "+e)}),(()=>{t&&B(t)})),Q(0)}))),at),Z=async()=>(A&&(await y((()=>o(A)),l),A=void 0),at),_=async t=>(1!=m&&(Q(2),V++,await et((async()=>{await y((()=>n(J,t)),l),Q(0)}))),at),tt=async()=>(L&&(e.delListener(L),L=void 0),at),et=async(...t)=>(v(N(q,S),...t),await(async()=>{if(!N(W,S)){for(P(W,S,1);!r(b=p(N(q,S)));)await y(b,l);P(W,S,0)}})(),at),at={load:Y,startAutoLoad:async t=>(Z(),await Y(t),await y((async()=>A=await s((async(t,e)=>{e||t?2!=m&&(Q(1),T++,X(e??t),Q(0)):await Y()}))),l),at),stopAutoLoad:Z,isAutoLoading:()=>!r(A),save:_,startAutoSave:async()=>(tt(),await _(),L=e.addDidFinishTransactionListener((()=>{const t=$();j(t)&&_(t)})),at),stopAutoSave:tt,isAutoSaving:()=>!r(L),getStatus:()=>m,addStatusListener:t=>G(t,k),delListener:t=>(K(t),e),schedule:et,getStore:()=>e,destroy:async()=>(N(q,S).splice(0,void 0),await at.stopAutoLoad(),await at.stopAutoSave()),getStats:()=>({loads:T,saves:V}),...f};return M(at)},G=async(e,a,n=1,s,o,c)=>{const g=(t,e)=>(a.addEventListener(t,e),()=>a.removeEventListener(t,e)),d=((e,a,n,s,o,c,l,g,d={})=>{let w,v=0,p=0,f=0;const h=O(),S=()=>x(11),b=(t,e,n,s)=>{p++,c?.(t,e,n,s),a(t,e,n,s)},M=async(t,e,a,n)=>u(((s,r)=>{const i=n+"."+x(4),c=((t,e=0)=>setTimeout(t,1e3*e))((()=>{D(h,i),r(`No response from ${t??"anyone"} to ${i}, `+e)}),o);P(h,i,[t,(t,e)=>{clearTimeout(c),D(h,i),s([t,e,n])}]),b(t,i,e,a)})),m=(t,[e,a])=>{A(e,(([e,a],n)=>{const s=L(t[0],n,j);A(e,(([t,e],a)=>{const n=L(s[0],a,j);A(t,(([t,e],a)=>n[0][a]=J(t,e))),n[1]=$(n[1],e)})),s[1]=$(s[1],a)})),t[1]=$(t[1],a)},T=(a=null,n,s=S())=>y((async()=>{r(n)&&([n,a,s]=await M(null,1,t,s));const[o,i]=n,[c,l]=e.getMergeableContentHashes();let g=j();if(c!=o){const[t,n]=(await M(a,4,e.getMergeableTableHashes(),s))[0];if(g=t,!C(n)){const[t,o]=(await M(a,5,e.getMergeableRowHashes(n),s))[0];if(m(g,t),!C(o)){const t=(await M(a,6,e.getMergeableCellHashes(o),s))[0];m(g,t)}}}return[g,l==i?j():(await M(a,7,e.getMergeableValueHashes(),s))[0],1]}),g),E=B(e,(async()=>{const t=await T();return!t||C(t[0][0])&&C(t[1][0])?void 0:t}),(async(t,a)=>a?b(null,S(),3,a):b(null,S(),2,e.getMergeableContentHashes())),(t=>w=t),(()=>w=void 0),g,2,{startSync:async t=>(v=1,await(await E.startAutoLoad(t)).startAutoSave()),stopSync:async()=>(v=0,await E.stopAutoLoad(),await E.stopAutoSave(),E),destroy:async()=>(await E.stopSync(),s(),E),getSynchronizerStats:()=>({sends:p,receives:f}),...d},1);return n(((t,a,n,s)=>{const o=v||E.isAutoLoading();f++,l?.(t,a,n,s),0==n?i(N(h,a),(([e,a])=>r(e)||e==t?a(s,t):0)):2==n&&o?T(t,s,a??void 0).then((t=>{w?.(void 0,t)})).catch(g):3==n&&o?w?.(void 0,s):i(1==n&&(v||E.isAutoSaving())?e.getMergeableContentHashes():4==n?e.getMergeableTableDiff(s):5==n?e.getMergeableRowDiff(s):6==n?e.getMergeableCellDiff(s):7==n?e.getMergeableValueDiff(s):void 0,(e=>{b(t,a,0,e)}))})),E})(e,((e,...n)=>a.send(((e,...a)=>{return n=e??t,s=m(a,((t,e)=>void 0===e?"":e)),n+"\n"+s;var n,s})(e,...n))),(t=>g("message",(({data:e})=>((t,e)=>(t=>{const a=t.indexOf("\n");var n,s,o;-1!==a&&(n=l(t,0,a),s=l(t,a+1),e(n,...(o=s,T(o,((t,e)=>""===e?void 0:e)))))})(t))(e.toString("utf8"),t)))),(()=>{a.close()}),n,s,o,c,{getWebSocket:()=>a});return u((t=>{if(a.readyState!=a.OPEN){const e=e=>{e&&c?.(e),a(),n(),t(d)},a=g("open",(()=>e())),n=g("error",e)}else t(d)}))};export{G as createWsSynchronizer};
@@ -1 +1 @@
1
- const e="",t=(e,t="",a)=>e.split(t,a),a=Promise,n=globalThis,s=Math,o=s.floor,r=e=>null==e,i=(e,t,a)=>r(e)?a?.():t(e),c=e=>Array.isArray(e),l=(e,t,a)=>e.slice(t,a),g=e=>e.length,u=e=>new a(e),d=e=>{throw Error(e)},y=(e,t)=>e.forEach(t),h=(e,...t)=>e.push(...t),v=e=>e.shift(),p=Object,f=e=>p.getPrototypeOf(e),w=p.entries,S=p.keys,b=p.freeze,M=(e,t)=>y(w(e),(([e,a])=>t(a,e))),A=e=>(e=>!r(e)&&i(f(e),(e=>e==p.prototype||r(f(e))),(()=>!0)))(e)&&0==(e=>g(S(e)))(e),C=(e,t,a)=>(((e,t)=>t in e)(e,t)||(e[t]=a()),e[t]),L=JSON.stringify,m=JSON.parse,T=e=>r(e)||0==(e=>e?.size??0)(e),E=(e,t)=>e?.forEach(t),H=(e,t)=>e?.delete(t),D=e=>new Map(e),O=(e,t)=>e?.get(t),N=(e,t,a)=>r(a)?(H(e,t),e):e?.set(t,a),P=(e,t,a,n)=>{var s,o;return s=e,o=t,s?.has(o)?n?.(O(e,t)):N(e,t,a()),O(e,t)},z=(e,t,a,n,s=0)=>i((a?P:O)(e,t[s],s>g(t)-2?a:D),(o=>{if(s>g(t)-2)return n?.(o)&&N(e,t[s]),o;const r=z(o,t,a,n,s+1);return T(o)&&N(e,t[s]),r})),R=t("-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"),V=n.crypto?e=>n.crypto.getRandomValues(e):e=>(e=>e.map((()=>o(256*s.random()))))(e),k=(e=16)=>{return t=(e,t)=>e+R[63&t],V(new Uint8Array(e)).reduce(t,"");var t},x=(e,t)=>t?[e,t]:[e],J=(e,t)=>((e??"")>(t??"")?e:t)??"",$=(e="")=>x(((e=[])=>p.fromEntries(e))(),e),j=/^\d+$/,F=e=>new Set(c(e)||r(e)?e:[e]),U=D(),W=D(),q=(t,a,n,s,o,l,u,p={},f=0,w=[])=>{let S,M,C,L=0,m=0,R=0;P(U,w,(()=>0)),P(W,w,(()=>[]));const V=D(),[k,x,J,$,q]=((e=1,t,a)=>1!=e&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!a),([[e],[t]])=>!A(e)||!A(t),t.setDefaultContent]:2!=e?[0,t.getContent,t.getTransactionChanges,([e,t])=>!A(e)||!A(t),t.setContent]:d("Store type not supported by this Persister"))(u,t,f),[B,G,I]=(()=>{let t;const[a,n]=(()=>{const t=[];let a=0;return[n=>(n?v(t):null)??e+a++,e=>{j.test(e)&&g(t)<1e3&&h(t,e)}]})(),s=D();return[(n,o,r,i=[],c=()=>[])=>{t??=te;const l=a(1);var g,u;return N(s,l,[n,o,r,i,c]),g=z(o,r??[e],F),u=l,g?.add(u),l},(a,n,...o)=>y(((t,a=[e])=>{const n=[],s=(e,t)=>t==g(a)?h(n,e):null===a[t]?E(e,(e=>s(e,t+1))):y([a[t],null],(a=>s(O(e,a),t+1)));return s(t,0),n})(a,n),(e=>E(e,(e=>O(s,e)[0](t,...n??[],...o))))),t=>i(O(s,t),(([,a,o])=>(z(a,o??[e],void 0,(e=>(H(e,t),T(e)?1:0))),N(s,t),n(t),o))),e=>i(O(s,e),(([e,,a=[],n,s])=>{const o=(...i)=>{const c=g(i);c==g(a)?e(t,...i,...s(i)):r(a[c])?y(n[c]?.(...i)??[],(e=>o(...i,e))):o(...i,a[c])};o()}))]})(),K=e=>{e!=L&&(L=e,G(V,void 0,L))},Q=e=>{(k&&c(e?.[0])?1===e?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===e?.[2]?t.applyChanges:t.setContent)(e)},X=async e=>(2!=L&&(K(1),m++,await ee((async()=>{try{const t=await a();c(t)?Q(t):e?q(e):d("Content is not an array: "+t)}catch(t){l?.(t),e&&q(e)}K(0)}))),te),Y=()=>(M&&(o(M),M=void 0),te),Z=async e=>(1!=L&&(K(2),R++,await ee((async()=>{try{await n(x,e)}catch(e){l?.(e)}K(0)}))),te),_=()=>(C&&(t.delListener(C),C=void 0),te),ee=async(...e)=>(h(O(W,w),...e),await(async()=>{if(!O(U,w)){for(N(U,w,1);!r(S=v(O(W,w)));)try{await S()}catch(e){l?.(e)}N(U,w,0)}})(),te),te={load:X,startAutoLoad:async e=>{Y(),await X(e);try{M=await s((async(e,t)=>{t||e?2!=L&&(K(1),m++,Q(t??e),K(0)):await X()}))}catch(e){l?.(e)}return te},stopAutoLoad:Y,isAutoLoading:()=>!r(M),save:Z,startAutoSave:async()=>(_(),await Z(),C=t.addDidFinishTransactionListener((()=>{const e=J();$(e)&&Z(e)})),te),stopAutoSave:_,isAutoSaving:()=>!r(C),getStatus:()=>L,addStatusListener:e=>B(e,V),delListener:e=>(I(e),t),schedule:ee,getStore:()=>t,destroy:()=>(O(W,w).splice(0,void 0),Y().stopAutoSave()),getStats:()=>({loads:m,saves:R}),...p};return b(te)},B=async(t,a,n=1,s,o,c)=>{const g=(e,t)=>(a.addEventListener(e,t),()=>a.removeEventListener(e,t)),d=((t,a,n,s,o,c,l,g,d={})=>{let y,h=0,v=0,p=0;const f=D(),w=()=>k(11),S=(e,t,n,s)=>{v++,c?.(e,t,n,s),a(e,t,n,s)},b=async(e,t,a,n)=>u(((s,r)=>{const i=n+"."+k(4),c=((e,t=0)=>setTimeout(e,1e3*t))((()=>{H(f,i),r(`No response from ${e??"anyone"} to ${i}, `+t)}),o);N(f,i,[e,(e,t)=>{clearTimeout(c),H(f,i),s([e,t,n])}]),S(e,i,t,a)})),L=(e,[t,a])=>{M(t,(([t,a],n)=>{const s=C(e[0],n,$);M(t,(([e,t],a)=>{const n=C(s[0],a,$);M(e,(([e,t],a)=>n[0][a]=x(e,t))),n[1]=J(n[1],t)})),s[1]=J(s[1],a)})),e[1]=J(e[1],a)},m=async(a=null,n,s=w())=>{try{r(n)&&([n,a,s]=await b(null,1,e,s));const[o,i]=n,[c,l]=t.getMergeableContentHashes();let g=$();if(c!=o){const[e,n]=(await b(a,4,t.getMergeableTableHashes(),s))[0];if(g=e,!A(n)){const[e,o]=(await b(a,5,t.getMergeableRowHashes(n),s))[0];if(L(g,e),!A(o)){const e=(await b(a,6,t.getMergeableCellHashes(o),s))[0];L(g,e)}}}return[g,l==i?$():(await b(a,7,t.getMergeableValueHashes(),s))[0],1]}catch(e){g?.(e)}},T=q(t,(async()=>{const e=await m();return!e||A(e[0][0])&&A(e[1][0])?void 0:e}),(async(e,a)=>a?S(null,w(),3,a):S(null,w(),2,t.getMergeableContentHashes())),(e=>y=e),(()=>y=void 0),g,2,{startSync:async e=>(h=1,await(await T.startAutoLoad(e)).startAutoSave()),stopSync:()=>(h=0,T.stopAutoLoad().stopAutoSave()),destroy:()=>(s(),T.stopSync()),getSynchronizerStats:()=>({sends:v,receives:p}),...d},1);return n(((e,a,n,s)=>{const o=h||T.isAutoLoading();p++,l?.(e,a,n,s),0==n?i(O(f,a),(([t,a])=>r(t)||t==e?a(s,e):0)):2==n&&o?m(e,s,a??void 0).then((e=>{y?.(void 0,e)})).catch(g):3==n&&o?y?.(void 0,s):i(1==n&&(h||T.isAutoSaving())?t.getMergeableContentHashes():4==n?t.getMergeableTableDiff(s):5==n?t.getMergeableRowDiff(s):6==n?t.getMergeableCellDiff(s):7==n?t.getMergeableValueDiff(s):void 0,(t=>{S(e,a,0,t)}))})),T})(t,((t,...n)=>a.send(((t,...a)=>{return n=t??e,s=L(a,((e,t)=>void 0===t?"":t)),n+"\n"+s;var n,s})(t,...n))),(e=>g("message",(({data:t})=>((e,t)=>(e=>{const a=e.indexOf("\n");var n,s,o;-1!==a&&(n=l(e,0,a),s=l(e,a+1),t(n,...(o=s,m(o,((e,t)=>""===t?void 0:t)))))})(e))(t.toString("utf8"),e)))),(()=>{a.close()}),n,s,o,c,{getWebSocket:()=>a});return u((e=>{if(a.readyState!=a.OPEN){const t=t=>{t&&c?.(t),a(),n(),e(d)},a=g("open",(()=>t())),n=g("error",t)}else e(d)}))};export{B as createWsSynchronizer};
1
+ const t="",e=(t,e="",a)=>t.split(e,a),a=Promise,n=globalThis,s=Math,o=s.floor,r=t=>null==t,i=(t,e,a)=>r(t)?a?.():e(t),c=t=>Array.isArray(t),l=(t,e,a)=>t.slice(e,a),g=t=>t.length,u=t=>new a(t),d=t=>{throw Error(t)},y=async(t,e,a)=>{try{return await t()}catch(t){e?.(t)}},w=(t,e)=>t.forEach(e),v=(t,...e)=>t.push(...e),p=t=>t.shift(),f=Object,h=t=>f.getPrototypeOf(t),S=f.entries,b=f.keys,M=f.freeze,A=(t,e)=>w(S(t),(([t,a])=>e(a,t))),C=t=>(t=>!r(t)&&i(h(t),(t=>t==f.prototype||r(h(t))),(()=>!0)))(t)&&0==(t=>g(b(t)))(t),L=(t,e,a)=>(((t,e)=>e in t)(t,e)||(t[e]=a()),t[e]),m=JSON.stringify,T=JSON.parse,E=t=>r(t)||0==(t=>t?.size??0)(t),H=(t,e)=>t?.forEach(e),D=(t,e)=>t?.delete(e),O=t=>new Map(t),N=(t,e)=>t?.get(e),P=(t,e,a)=>r(a)?(D(t,e),t):t?.set(e,a),z=(t,e,a,n)=>{var s,o;return s=t,o=e,s?.has(o)?n?.(N(t,e)):P(t,e,a()),N(t,e)},R=(t,e,a,n,s=0)=>i((a?z:N)(t,e[s],s>g(e)-2?a:O),(o=>{if(s>g(e)-2)return n?.(o)&&P(t,e[s]),o;const r=R(o,e,a,n,s+1);return E(o)&&P(t,e[s]),r})),V=e("-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"),k=n.crypto?t=>n.crypto.getRandomValues(t):t=>(t=>t.map((()=>o(256*s.random()))))(t),x=(t=16)=>{return e=(t,e)=>t+V[63&e],k(new Uint8Array(t)).reduce(e,"");var e},J=(t,e)=>e?[t,e]:[t],$=(t,e)=>((t??"")>(e??"")?t:e)??"",j=(t="")=>J(((t=[])=>f.fromEntries(t))(),t),F=/^\d+$/,U=t=>new Set(c(t)||r(t)?t:[t]),W=O(),q=O(),B=(e,a,n,s,o,l,u,f={},h=0,S=[])=>{let b,A,L,m=0,T=0,V=0;z(W,S,(()=>0)),z(q,S,(()=>[]));const k=O(),[x,J,$,j,B]=((t=1,e,a)=>1!=t&&e.isMergeable()?[1,e.getMergeableContent,()=>e.getTransactionMergeableChanges(!a),([[t],[e]])=>!C(t)||!C(e),e.setDefaultContent]:2!=t?[0,e.getContent,e.getTransactionChanges,([t,e])=>!C(t)||!C(e),e.setContent]:d("Store type not supported by this Persister"))(u,e,h),[G,I,K]=(()=>{let e;const[a,n]=(()=>{const e=[];let a=0;return[n=>(n?p(e):null)??t+a++,t=>{F.test(t)&&g(e)<1e3&&v(e,t)}]})(),s=O();return[(n,o,r,i=[],c=()=>[])=>{e??=at;const l=a(1);var g,u;return P(s,l,[n,o,r,i,c]),g=R(o,r??[t],U),u=l,g?.add(u),l},(a,n,...o)=>w(((e,a=[t])=>{const n=[],s=(t,e)=>e==g(a)?v(n,t):null===a[e]?H(t,(t=>s(t,e+1))):w([a[e],null],(a=>s(N(t,a),e+1)));return s(e,0),n})(a,n),(t=>H(t,(t=>N(s,t)[0](e,...n??[],...o))))),e=>i(N(s,e),(([,a,o])=>(R(a,o??[t],void 0,(t=>(D(t,e),E(t)?1:0))),P(s,e),n(e),o))),t=>i(N(s,t),(([t,,a=[],n,s])=>{const o=(...i)=>{const c=g(i);c==g(a)?t(e,...i,...s(i)):r(a[c])?w(n[c]?.(...i)??[],(t=>o(...i,t))):o(...i,a[c])};o()}))]})(),Q=t=>{t!=m&&(m=t,I(k,void 0,m))},X=t=>{(x&&c(t?.[0])?1===t?.[2]?e.applyMergeableChanges:e.setMergeableContent:1===t?.[2]?e.applyChanges:e.setContent)(t)},Y=async t=>(2!=m&&(Q(1),T++,await et((async()=>{await y((async()=>{const e=await a();c(e)?X(e):t?B(t):d("Content is not an array: "+e)}),(()=>{t&&B(t)})),Q(0)}))),at),Z=async()=>(A&&(await y((()=>o(A)),l),A=void 0),at),_=async t=>(1!=m&&(Q(2),V++,await et((async()=>{await y((()=>n(J,t)),l),Q(0)}))),at),tt=async()=>(L&&(e.delListener(L),L=void 0),at),et=async(...t)=>(v(N(q,S),...t),await(async()=>{if(!N(W,S)){for(P(W,S,1);!r(b=p(N(q,S)));)await y(b,l);P(W,S,0)}})(),at),at={load:Y,startAutoLoad:async t=>(Z(),await Y(t),await y((async()=>A=await s((async(t,e)=>{e||t?2!=m&&(Q(1),T++,X(e??t),Q(0)):await Y()}))),l),at),stopAutoLoad:Z,isAutoLoading:()=>!r(A),save:_,startAutoSave:async()=>(tt(),await _(),L=e.addDidFinishTransactionListener((()=>{const t=$();j(t)&&_(t)})),at),stopAutoSave:tt,isAutoSaving:()=>!r(L),getStatus:()=>m,addStatusListener:t=>G(t,k),delListener:t=>(K(t),e),schedule:et,getStore:()=>e,destroy:async()=>(N(q,S).splice(0,void 0),await at.stopAutoLoad(),await at.stopAutoSave()),getStats:()=>({loads:T,saves:V}),...f};return M(at)},G=async(e,a,n=1,s,o,c)=>{const g=(t,e)=>(a.addEventListener(t,e),()=>a.removeEventListener(t,e)),d=((e,a,n,s,o,c,l,g,d={})=>{let w,v=0,p=0,f=0;const h=O(),S=()=>x(11),b=(t,e,n,s)=>{p++,c?.(t,e,n,s),a(t,e,n,s)},M=async(t,e,a,n)=>u(((s,r)=>{const i=n+"."+x(4),c=((t,e=0)=>setTimeout(t,1e3*e))((()=>{D(h,i),r(`No response from ${t??"anyone"} to ${i}, `+e)}),o);P(h,i,[t,(t,e)=>{clearTimeout(c),D(h,i),s([t,e,n])}]),b(t,i,e,a)})),m=(t,[e,a])=>{A(e,(([e,a],n)=>{const s=L(t[0],n,j);A(e,(([t,e],a)=>{const n=L(s[0],a,j);A(t,(([t,e],a)=>n[0][a]=J(t,e))),n[1]=$(n[1],e)})),s[1]=$(s[1],a)})),t[1]=$(t[1],a)},T=(a=null,n,s=S())=>y((async()=>{r(n)&&([n,a,s]=await M(null,1,t,s));const[o,i]=n,[c,l]=e.getMergeableContentHashes();let g=j();if(c!=o){const[t,n]=(await M(a,4,e.getMergeableTableHashes(),s))[0];if(g=t,!C(n)){const[t,o]=(await M(a,5,e.getMergeableRowHashes(n),s))[0];if(m(g,t),!C(o)){const t=(await M(a,6,e.getMergeableCellHashes(o),s))[0];m(g,t)}}}return[g,l==i?j():(await M(a,7,e.getMergeableValueHashes(),s))[0],1]}),g),E=B(e,(async()=>{const t=await T();return!t||C(t[0][0])&&C(t[1][0])?void 0:t}),(async(t,a)=>a?b(null,S(),3,a):b(null,S(),2,e.getMergeableContentHashes())),(t=>w=t),(()=>w=void 0),g,2,{startSync:async t=>(v=1,await(await E.startAutoLoad(t)).startAutoSave()),stopSync:async()=>(v=0,await E.stopAutoLoad(),await E.stopAutoSave(),E),destroy:async()=>(await E.stopSync(),s(),E),getSynchronizerStats:()=>({sends:p,receives:f}),...d},1);return n(((t,a,n,s)=>{const o=v||E.isAutoLoading();f++,l?.(t,a,n,s),0==n?i(N(h,a),(([e,a])=>r(e)||e==t?a(s,t):0)):2==n&&o?T(t,s,a??void 0).then((t=>{w?.(void 0,t)})).catch(g):3==n&&o?w?.(void 0,s):i(1==n&&(v||E.isAutoSaving())?e.getMergeableContentHashes():4==n?e.getMergeableTableDiff(s):5==n?e.getMergeableRowDiff(s):6==n?e.getMergeableCellDiff(s):7==n?e.getMergeableValueDiff(s):void 0,(e=>{b(t,a,0,e)}))})),E})(e,((e,...n)=>a.send(((e,...a)=>{return n=e??t,s=m(a,((t,e)=>void 0===e?"":e)),n+"\n"+s;var n,s})(e,...n))),(t=>g("message",(({data:e})=>((t,e)=>(t=>{const a=t.indexOf("\n");var n,s,o;-1!==a&&(n=l(t,0,a),s=l(t,a+1),e(n,...(o=s,T(o,((t,e)=>""===e?void 0:e)))))})(t))(e.toString("utf8"),t)))),(()=>{a.close()}),n,s,o,c,{getWebSocket:()=>a});return u((t=>{if(a.readyState!=a.OPEN){const e=e=>{e&&c?.(e),a(),n(),t(d)},a=g("open",(()=>e())),n=g("error",e)}else t(d)}))};export{G as createWsSynchronizer};
@@ -1 +1 @@
1
- const t="",e="error",a=(t,e="",a)=>t.split(e,a),s=Promise,n=globalThis,o=Math,r=o.floor,i=t=>null==t,c=(t,e,a)=>i(t)?a?.():e(t),l=t=>Array.isArray(t),d=(t,e,a)=>t.slice(e,a),g=t=>t.length,u=t=>{throw Error(t)},y=(t,e)=>t.forEach(e),h=(t,e,a)=>t.reduce(e,a),v=(t,...e)=>t.push(...e),S=t=>t.shift(),w=t=>t?.size??0,p=(f=w,t=>h(A(t),((t,e)=>t+f(e)),0));var f;const b=t=>i(t)||0==w(t),A=t=>[...t?.values()??[]],C=(t,e)=>t?.forEach(e),M=(t,e)=>t?.delete(e),L=Object,m=t=>L.getPrototypeOf(t),T=L.entries,H=L.keys,D=L.freeze,k=(t,e)=>y(T(t),(([t,a])=>e(a,t))),O=t=>(t=>!i(t)&&c(m(t),(t=>t==L.prototype||i(m(t))),(()=>!0)))(t)&&0==(t=>g(H(t)))(t),P=(t,e,a)=>(((t,e)=>e in t)(t,e)||(t[e]=a()),t[e]),E=t=>new Map(t),I=t=>[...t?.keys()??[]],z=(t,e)=>t?.get(e),N=(t,e,a)=>i(a)?(M(t,e),t):t?.set(e,a),R=(t,e,a,s)=>{var n,o;return n=t,o=e,n?.has(o)?s?.(z(t,e)):N(t,e,a()),z(t,e)},V=(t,e,a,s,n=0)=>c((a?R:z)(t,e[n],n>g(e)-2?a:E),(o=>{if(n>g(e)-2)return s?.(o)&&N(t,e[n]),o;const r=V(o,e,a,s,n+1);return b(o)&&N(t,e[n]),r})),x=/^\d+$/,J=t=>new Set(l(t)||i(t)?t:[t]),$=e=>{let a;const[s,n]=(()=>{const e=[];let a=0;return[s=>(s?S(e):null)??t+a++,t=>{x.test(t)&&g(e)<1e3&&v(e,t)}]})(),o=E();return[(n,r,i,c=[],l=()=>[])=>{a??=e();const d=s(1);var g,u;return N(o,d,[n,r,i,c,l]),g=V(r,i??[t],J),u=d,g?.add(u),d},(e,s,...n)=>y(((e,a=[t])=>{const s=[],n=(t,e)=>e==g(a)?v(s,t):null===a[e]?C(t,(t=>n(t,e+1))):y([a[e],null],(a=>n(z(t,a),e+1)));return n(e,0),s})(e,s),(t=>C(t,(t=>z(o,t)[0](a,...s??[],...n))))),e=>c(z(o,e),(([,a,s])=>(V(a,s??[t],void 0,(t=>(M(t,e),b(t)?1:0))),N(o,e),n(e),s))),t=>c(z(o,t),(([t,,e=[],s,n])=>{const o=(...r)=>{const c=g(r);c==g(e)?t(a,...r,...n(r)):i(e[c])?y(s[c]?.(...r)??[],(t=>o(...r,t))):o(...r,e[c])};o()}))]},j=JSON.stringify,F=JSON.parse,U=(t,e)=>{const a=t.indexOf("\n");-1!==a&&e(d(t,0,a),d(t,a+1))},W=(t,e)=>t+"\n"+e,q=a("-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"),B=n.crypto?t=>n.crypto.getRandomValues(t):t=>(t=>t.map((()=>r(256*o.random()))))(t),G=(t=16)=>h(B(new Uint8Array(t)),((t,e)=>t+q[63&e]),""),K=(t,e)=>e?[t,e]:[t],Q=(t,e)=>((t??"")>(e??"")?t:e)??"",X=(t="")=>K(((t=[])=>L.fromEntries(t))(),t),Y=E(),Z=E(),_=/\/([^?]*)/,tt=(a,n,o)=>{const r=E(),d=E(),g=E(),h=E(),[f,A,L]=$((()=>H)),m=t=>{t[1]?.destroy(),t[2]?.destroy()},T=(e,a,s)=>n=>U(n,((n,o)=>{const r=W(e,o);var i;n===t?("S"!==e&&s[3]?.(r),i=(t,a)=>t!==e?a.send(r):0,C(a,((t,e)=>i(e,t)))):"S"===n?s[3]?.(r):z(a,n)?.send(r)}));a.on("connection",((a,w)=>{return c((p=w.url,f=_,p?.match(f)),(([,p])=>c(w.headers["sec-websocket-key"],(async w=>{const f=R(g,p,E),C=R(h,p,(()=>[0])),L=T(w,f,C);b(f)&&(A(r,void 0,p,1),await(async(e,a,r)=>c(await(n?.(a)),(a=>{e[0]=1,e[1]=l(a)?a[0]:a;const n=T("S",r,e);e[2]=((e,a,n,o,r,d,g,y,h={})=>{let w,p=0,f=0,b=0;const A=E(),C=()=>G(11),L=(t,e,s,n)=>{f++,a(t,e,s,n)},m=async(t,e,a,n)=>new s(((s,o)=>{const i=n+"."+G(4),c=((t,e=0)=>setTimeout(t,1e3*e))((()=>{M(A,i),o(`No response from ${t??"anyone"} to ${i}, `+e)}),r);N(A,i,[t,(t,e)=>{clearTimeout(c),M(A,i),s([t,e,n])}]),L(t,i,e,a)})),T=(t,[e,a])=>{k(e,(([e,a],s)=>{const n=P(t[0],s,X);k(e,(([t,e],a)=>{const s=P(n[0],a,X);k(t,(([t,e],a)=>s[0][a]=K(t,e))),s[1]=Q(s[1],e)})),n[1]=Q(n[1],a)})),t[1]=Q(t[1],a)},H=async(a=null,s,n=C())=>{try{i(s)&&([s,a,n]=await m(null,1,t,n));const[o,r]=s,[c,l]=e.getMergeableContentHashes();let d=X();if(c!=o){const[t,s]=(await m(a,4,e.getMergeableTableHashes(),n))[0];if(d=t,!O(s)){const[t,o]=(await m(a,5,e.getMergeableRowHashes(s),n))[0];if(T(d,t),!O(o)){const t=(await m(a,6,e.getMergeableCellHashes(o),n))[0];T(d,t)}}}return[d,l==r?X():(await m(a,7,e.getMergeableValueHashes(),n))[0],1]}catch(t){y?.(t)}},I=((t,e,a,s,n,o,r,c={},d=0,g=[])=>{let y,h,w,p=0,f=0,b=0;R(Y,g,(()=>0)),R(Z,g,(()=>[]));const A=E(),[C,M,L,m,T]=((t=1,e,a)=>1!=t&&e.isMergeable()?[1,e.getMergeableContent,()=>e.getTransactionMergeableChanges(!a),([[t],[e]])=>!O(t)||!O(e),e.setDefaultContent]:2!=t?[0,e.getContent,e.getTransactionChanges,([t,e])=>!O(t)||!O(e),e.setContent]:u("Store type not supported by this Persister"))(r,t,d),[H,k,P]=$((()=>W)),I=t=>{t!=p&&(p=t,k(A,void 0,p))},V=e=>{(C&&l(e?.[0])?1===e?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===e?.[2]?t.applyChanges:t.setContent)(e)},x=async t=>(2!=p&&(I(1),f++,await U((async()=>{try{const a=await e();l(a)?V(a):t?T(t):u("Content is not an array: "+a)}catch(e){o?.(e),t&&T(t)}I(0)}))),W),J=()=>(h&&(n(h),h=void 0),W),j=async t=>(1!=p&&(I(2),b++,await U((async()=>{try{await a(M,t)}catch(t){o?.(t)}I(0)}))),W),F=()=>(w&&(t.delListener(w),w=void 0),W),U=async(...t)=>(v(z(Z,g),...t),await(async()=>{if(!z(Y,g)){for(N(Y,g,1);!i(y=S(z(Z,g)));)try{await y()}catch(t){o?.(t)}N(Y,g,0)}})(),W),W={load:x,startAutoLoad:async t=>{J(),await x(t);try{h=await s((async(t,e)=>{e||t?2!=p&&(I(1),f++,V(e??t),I(0)):await x()}))}catch(t){o?.(t)}return W},stopAutoLoad:J,isAutoLoading:()=>!i(h),save:j,startAutoSave:async()=>(F(),await j(),w=t.addDidFinishTransactionListener((()=>{const t=L();m(t)&&j(t)})),W),stopAutoSave:F,isAutoSaving:()=>!i(w),getStatus:()=>p,addStatusListener:t=>H(t,A),delListener:e=>(P(e),t),schedule:U,getStore:()=>t,destroy:()=>(z(Z,g).splice(0,void 0),J().stopAutoSave()),getStats:()=>({loads:f,saves:b}),...c};return D(W)})(e,(async()=>{const t=await H();return!t||O(t[0][0])&&O(t[1][0])?void 0:t}),(async(t,a)=>a?L(null,C(),3,a):L(null,C(),2,e.getMergeableContentHashes())),(t=>w=t),(()=>w=void 0),y,2,{startSync:async t=>(p=1,await(await I.startAutoLoad(t)).startAutoSave()),stopSync:()=>(p=0,I.stopAutoLoad().stopAutoSave()),destroy:()=>I.stopSync(),getSynchronizerStats:()=>({sends:f,receives:b}),...h},1);return n(((t,a,s,n)=>{const o=p||I.isAutoLoading();b++,0==s?c(z(A,a),(([e,a])=>i(e)||e==t?a(n,t):0)):2==s&&o?H(t,n,a??void 0).then((t=>{w?.(void 0,t)})).catch(y):3==s&&o?w?.(void 0,n):c(1==s&&(p||I.isAutoSaving())?e.getMergeableContentHashes():4==s?e.getMergeableTableDiff(n):5==s?e.getMergeableRowDiff(n):6==s?e.getMergeableCellDiff(n):7==s?e.getMergeableValueDiff(n):void 0,(e=>{L(t,a,0,e)}))})),I})(e[1].getStore(),((e,a,s,o)=>n(((e,...a)=>W(e??t,j(a,((t,e)=>void 0===e?"":e))))(e,a,s,o))),(t=>e[3]=e=>((t,e)=>U(t,((t,a)=>{return e(t,...(s=a,F(s,((t,e)=>""===e?void 0:e))));var s})))(e,t)),0,1,0,0,o),e[4]=[],e[5]=l(a)?a[1]:t=>0})))(C,p,f)),N(f,w,a),A(d,[p],w,1),a.on("message",(t=>{const e=t.toString("utf8");0==C[0]?L(e):v(C[4],e)})),1==C[0]&&(await(async t=>{t[0]=2,await t[1].schedule(t[1].startAutoLoad,t[1].startAutoSave,t[2].startSync),t[5](t[1].getStore()),t[0]=0})(C),y(C[4],L),C[4]=[]),a.on("close",(()=>{M(f,w),A(d,[p],w,-1),b(f)&&(m(C),M(h,p),M(g,p),A(r,void 0,p,-1))})),o&&a.on(e,o)}))));var p,f})),o&&a.on(e,o);const H={getWebSocketServer:()=>a,getPathIds:()=>I(g),getClientIds:t=>I(z(g,t)),addPathIdsListener:t=>f(t,r),addClientIdsListener:(t,e)=>f(e,d,[t]),delListener:t=>(L(t),H),getStats:()=>({paths:w(g),clients:p(g)}),destroy:()=>{g.clear(),C(h,m),a.close()}};return D(H)};export{tt as createWsServer};
1
+ const t="",e="error",a=(t,e="",a)=>t.split(e,a),s=Promise,n=globalThis,o=Math,r=o.floor,i=t=>null==t,c=(t,e,a)=>i(t)?a?.():e(t),l=t=>Array.isArray(t),d=(t,e,a)=>t.slice(e,a),g=t=>t.length,y=t=>{throw Error(t)},u=async(t,e,a)=>{try{return await t()}catch(t){e?.(t)}},w=(t,e)=>t.forEach(e),v=(t,e)=>t.map(e),h=(t,e,a)=>t.reduce(e,a),S=(t,...e)=>t.push(...e),p=t=>t.shift(),f=t=>t?.size??0,b=(A=f,t=>h(M(t),((t,e)=>t+A(e)),0));var A;const C=t=>i(t)||0==f(t),M=t=>[...t?.values()??[]],L=(t,e)=>t?.forEach(e),m=(t,e)=>t?.delete(e),T=Object,H=t=>T.getPrototypeOf(t),D=T.entries,k=T.keys,O=T.freeze,P=(t,e)=>w(D(t),(([t,a])=>e(a,t))),E=t=>(t=>!i(t)&&c(H(t),(t=>t==T.prototype||i(H(t))),(()=>!0)))(t)&&0==(t=>g(k(t)))(t),I=(t,e,a)=>(((t,e)=>e in t)(t,e)||(t[e]=a()),t[e]),z=t=>new Map(t),N=t=>[...t?.keys()??[]],R=(t,e)=>t?.get(e),V=(t,e,a)=>i(a)?(m(t,e),t):t?.set(e,a),x=(t,e,a,s)=>{var n,o;return n=t,o=e,n?.has(o)?s?.(R(t,e)):V(t,e,a()),R(t,e)},J=(t,e,a,s,n=0)=>c((a?x:R)(t,e[n],n>g(e)-2?a:z),(o=>{if(n>g(e)-2)return s?.(o)&&V(t,e[n]),o;const r=J(o,e,a,s,n+1);return C(o)&&V(t,e[n]),r})),$=/^\d+$/,j=t=>new Set(l(t)||i(t)?t:[t]),F=e=>{let a;const[s,n]=(()=>{const e=[];let a=0;return[s=>(s?p(e):null)??t+a++,t=>{$.test(t)&&g(e)<1e3&&S(e,t)}]})(),o=z();return[(n,r,i,c=[],l=()=>[])=>{a??=e();const d=s(1);var g,y;return V(o,d,[n,r,i,c,l]),g=J(r,i??[t],j),y=d,g?.add(y),d},(e,s,...n)=>w(((e,a=[t])=>{const s=[],n=(t,e)=>e==g(a)?S(s,t):null===a[e]?L(t,(t=>n(t,e+1))):w([a[e],null],(a=>n(R(t,a),e+1)));return n(e,0),s})(e,s),(t=>L(t,(t=>R(o,t)[0](a,...s??[],...n))))),e=>c(R(o,e),(([,a,s])=>(J(a,s??[t],void 0,(t=>(m(t,e),C(t)?1:0))),V(o,e),n(e),s))),t=>c(R(o,t),(([t,,e=[],s,n])=>{const o=(...r)=>{const c=g(r);c==g(e)?t(a,...r,...n(r)):i(e[c])?w(s[c]?.(...r)??[],(t=>o(...r,t))):o(...r,e[c])};o()}))]},U=JSON.stringify,W=JSON.parse,q=(t,e)=>{const a=t.indexOf("\n");-1!==a&&e(d(t,0,a),d(t,a+1))},B=(t,e)=>t+"\n"+e,G=a("-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"),K=n.crypto?t=>n.crypto.getRandomValues(t):t=>v(t,(()=>r(256*o.random()))),Q=(t=16)=>h(K(new Uint8Array(t)),((t,e)=>t+G[63&e]),""),X=(t,e)=>e?[t,e]:[t],Y=(t,e)=>((t??"")>(e??"")?t:e)??"",Z=(t="")=>X(((t=[])=>T.fromEntries(t))(),t),_=z(),tt=z(),et=/\/([^?]*)/,at=(a,n,o)=>{const r=z(),d=z(),g=z(),h=z(),[A,M,T]=F((()=>k)),H=async t=>{await(t[1]?.destroy()),await(t[2]?.destroy())},D=(e,a,s)=>n=>q(n,((n,o)=>{const r=B(e,o);var i;n===t?("S"!==e&&s[3]?.(r),i=(t,a)=>t!==e?a.send(r):0,L(a,((t,e)=>i(e,t)))):"S"===n?s[3]?.(r):R(a,n)?.send(r)}));a.on("connection",((a,v)=>{return c((f=v.url,b=et,f?.match(b)),(([,f])=>c(v.headers["sec-websocket-key"],(async v=>{const b=x(g,f,z),A=x(h,f,(()=>[0])),L=D(v,b,A);C(b)&&(M(r,void 0,f,1),await(async(e,a,r)=>c(await(n?.(a)),(a=>{e[0]=1,e[1]=l(a)?a[0]:a;const n=D("S",r,e);e[2]=((e,a,n,o,r,d,g,w,v={})=>{let h,f=0,b=0,A=0;const C=z(),M=()=>Q(11),L=(t,e,s,n)=>{b++,a(t,e,s,n)},T=async(t,e,a,n)=>new s(((s,o)=>{const i=n+"."+Q(4),c=((t,e=0)=>setTimeout(t,1e3*e))((()=>{m(C,i),o(`No response from ${t??"anyone"} to ${i}, `+e)}),r);V(C,i,[t,(t,e)=>{clearTimeout(c),m(C,i),s([t,e,n])}]),L(t,i,e,a)})),H=(t,[e,a])=>{P(e,(([e,a],s)=>{const n=I(t[0],s,Z);P(e,(([t,e],a)=>{const s=I(n[0],a,Z);P(t,(([t,e],a)=>s[0][a]=X(t,e))),s[1]=Y(s[1],e)})),n[1]=Y(n[1],a)})),t[1]=Y(t[1],a)},D=(a=null,s,n=M())=>u((async()=>{i(s)&&([s,a,n]=await T(null,1,t,n));const[o,r]=s,[c,l]=e.getMergeableContentHashes();let d=Z();if(c!=o){const[t,s]=(await T(a,4,e.getMergeableTableHashes(),n))[0];if(d=t,!E(s)){const[t,o]=(await T(a,5,e.getMergeableRowHashes(s),n))[0];if(H(d,t),!E(o)){const t=(await T(a,6,e.getMergeableCellHashes(o),n))[0];H(d,t)}}}return[d,l==r?Z():(await T(a,7,e.getMergeableValueHashes(),n))[0],1]}),w),k=((t,e,a,s,n,o,r,c={},d=0,g=[])=>{let w,v,h,f=0,b=0,A=0;x(_,g,(()=>0)),x(tt,g,(()=>[]));const C=z(),[M,L,m,T,H]=((t=1,e,a)=>1!=t&&e.isMergeable()?[1,e.getMergeableContent,()=>e.getTransactionMergeableChanges(!a),([[t],[e]])=>!E(t)||!E(e),e.setDefaultContent]:2!=t?[0,e.getContent,e.getTransactionChanges,([t,e])=>!E(t)||!E(e),e.setContent]:y("Store type not supported by this Persister"))(r,t,d),[D,k,P]=F((()=>q)),I=t=>{t!=f&&(f=t,k(C,void 0,f))},N=e=>{(M&&l(e?.[0])?1===e?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===e?.[2]?t.applyChanges:t.setContent)(e)},J=async t=>(2!=f&&(I(1),b++,await W((async()=>{await u((async()=>{const a=await e();l(a)?N(a):t?H(t):y("Content is not an array: "+a)}),(()=>{t&&H(t)})),I(0)}))),q),$=async()=>(v&&(await u((()=>n(v)),o),v=void 0),q),j=async t=>(1!=f&&(I(2),A++,await W((async()=>{await u((()=>a(L,t)),o),I(0)}))),q),U=async()=>(h&&(t.delListener(h),h=void 0),q),W=async(...t)=>(S(R(tt,g),...t),await(async()=>{if(!R(_,g)){for(V(_,g,1);!i(w=p(R(tt,g)));)await u(w,o);V(_,g,0)}})(),q),q={load:J,startAutoLoad:async t=>($(),await J(t),await u((async()=>v=await s((async(t,e)=>{e||t?2!=f&&(I(1),b++,N(e??t),I(0)):await J()}))),o),q),stopAutoLoad:$,isAutoLoading:()=>!i(v),save:j,startAutoSave:async()=>(U(),await j(),h=t.addDidFinishTransactionListener((()=>{const t=m();T(t)&&j(t)})),q),stopAutoSave:U,isAutoSaving:()=>!i(h),getStatus:()=>f,addStatusListener:t=>D(t,C),delListener:e=>(P(e),t),schedule:W,getStore:()=>t,destroy:async()=>(R(tt,g).splice(0,void 0),await q.stopAutoLoad(),await q.stopAutoSave()),getStats:()=>({loads:b,saves:A}),...c};return O(q)})(e,(async()=>{const t=await D();return!t||E(t[0][0])&&E(t[1][0])?void 0:t}),(async(t,a)=>a?L(null,M(),3,a):L(null,M(),2,e.getMergeableContentHashes())),(t=>h=t),(()=>h=void 0),w,2,{startSync:async t=>(f=1,await(await k.startAutoLoad(t)).startAutoSave()),stopSync:async()=>(f=0,await k.stopAutoLoad(),await k.stopAutoSave(),k),destroy:async()=>(await k.stopSync(),k),getSynchronizerStats:()=>({sends:b,receives:A}),...v},1);return n(((t,a,s,n)=>{const o=f||k.isAutoLoading();A++,0==s?c(R(C,a),(([e,a])=>i(e)||e==t?a(n,t):0)):2==s&&o?D(t,n,a??void 0).then((t=>{h?.(void 0,t)})).catch(w):3==s&&o?h?.(void 0,n):c(1==s&&(f||k.isAutoSaving())?e.getMergeableContentHashes():4==s?e.getMergeableTableDiff(n):5==s?e.getMergeableRowDiff(n):6==s?e.getMergeableCellDiff(n):7==s?e.getMergeableValueDiff(n):void 0,(e=>{L(t,a,0,e)}))})),k})(e[1].getStore(),((e,a,s,o)=>n(((e,...a)=>B(e??t,U(a,((t,e)=>void 0===e?"":e))))(e,a,s,o))),(t=>e[3]=e=>((t,e)=>q(t,((t,a)=>{return e(t,...(s=a,W(s,((t,e)=>""===e?void 0:e))));var s})))(e,t)),0,1,0,0,o),e[4]=[],e[5]=l(a)?a[1]:t=>0})))(A,f,b)),V(b,v,a),M(d,[f],v,1),a.on("message",(t=>{const e=t.toString("utf8");0==A[0]?L(e):S(A[4],e)})),1==A[0]&&(await(async t=>{t[0]=2,await t[1].schedule(t[1].startAutoLoad,t[1].startAutoSave,t[2].startSync),t[5](t[1].getStore()),t[0]=0})(A),w(A[4],L),A[4]=[]),a.on("close",(async()=>{m(b,v),M(d,[f],v,-1),C(b)&&(await H(A),m(h,f),m(g,f),M(r,void 0,f,-1))})),o&&a.on(e,o)}))));var f,b})),o&&a.on(e,o);const k={getWebSocketServer:()=>a,getPathIds:()=>N(g),getClientIds:t=>N(R(g,t)),addPathIdsListener:t=>A(t,r),addClientIdsListener:(t,e)=>A(e,d,[t]),delListener:t=>(T(t),k),getStats:()=>({paths:f(g),clients:b(g)}),destroy:async()=>{var t,e;g.clear(),await(async t=>s.all(t))((t=h,e=H,v([...t?.entries()??[]],(([t,a])=>e(a,t))))),a.close()}};return O(k)};export{at as createWsServer};
@@ -1 +1 @@
1
- const t="",e="error",a=(t,e="",a)=>t.split(e,a),s=Promise,n=globalThis,o=Math,r=o.floor,i=t=>null==t,c=(t,e,a)=>i(t)?a?.():e(t),l=t=>Array.isArray(t),d=(t,e,a)=>t.slice(e,a),g=t=>t.length,u=t=>{throw Error(t)},y=(t,e)=>t.forEach(e),h=(t,e,a)=>t.reduce(e,a),v=(t,...e)=>t.push(...e),S=t=>t.shift(),w=t=>t?.size??0,p=(f=w,t=>h(A(t),((t,e)=>t+f(e)),0));var f;const b=t=>i(t)||0==w(t),A=t=>[...t?.values()??[]],C=(t,e)=>t?.forEach(e),M=(t,e)=>t?.delete(e),L=Object,m=t=>L.getPrototypeOf(t),T=L.entries,H=L.keys,D=L.freeze,k=(t,e)=>y(T(t),(([t,a])=>e(a,t))),O=t=>(t=>!i(t)&&c(m(t),(t=>t==L.prototype||i(m(t))),(()=>!0)))(t)&&0==(t=>g(H(t)))(t),P=(t,e,a)=>(((t,e)=>e in t)(t,e)||(t[e]=a()),t[e]),E=t=>new Map(t),I=t=>[...t?.keys()??[]],z=(t,e)=>t?.get(e),N=(t,e,a)=>i(a)?(M(t,e),t):t?.set(e,a),R=(t,e,a,s)=>{var n,o;return n=t,o=e,n?.has(o)?s?.(z(t,e)):N(t,e,a()),z(t,e)},V=(t,e,a,s,n=0)=>c((a?R:z)(t,e[n],n>g(e)-2?a:E),(o=>{if(n>g(e)-2)return s?.(o)&&N(t,e[n]),o;const r=V(o,e,a,s,n+1);return b(o)&&N(t,e[n]),r})),x=/^\d+$/,J=t=>new Set(l(t)||i(t)?t:[t]),$=e=>{let a;const[s,n]=(()=>{const e=[];let a=0;return[s=>(s?S(e):null)??t+a++,t=>{x.test(t)&&g(e)<1e3&&v(e,t)}]})(),o=E();return[(n,r,i,c=[],l=()=>[])=>{a??=e();const d=s(1);var g,u;return N(o,d,[n,r,i,c,l]),g=V(r,i??[t],J),u=d,g?.add(u),d},(e,s,...n)=>y(((e,a=[t])=>{const s=[],n=(t,e)=>e==g(a)?v(s,t):null===a[e]?C(t,(t=>n(t,e+1))):y([a[e],null],(a=>n(z(t,a),e+1)));return n(e,0),s})(e,s),(t=>C(t,(t=>z(o,t)[0](a,...s??[],...n))))),e=>c(z(o,e),(([,a,s])=>(V(a,s??[t],void 0,(t=>(M(t,e),b(t)?1:0))),N(o,e),n(e),s))),t=>c(z(o,t),(([t,,e=[],s,n])=>{const o=(...r)=>{const c=g(r);c==g(e)?t(a,...r,...n(r)):i(e[c])?y(s[c]?.(...r)??[],(t=>o(...r,t))):o(...r,e[c])};o()}))]},j=JSON.stringify,F=JSON.parse,U=(t,e)=>{const a=t.indexOf("\n");-1!==a&&e(d(t,0,a),d(t,a+1))},W=(t,e)=>t+"\n"+e,q=a("-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"),B=n.crypto?t=>n.crypto.getRandomValues(t):t=>(t=>t.map((()=>r(256*o.random()))))(t),G=(t=16)=>h(B(new Uint8Array(t)),((t,e)=>t+q[63&e]),""),K=(t,e)=>e?[t,e]:[t],Q=(t,e)=>((t??"")>(e??"")?t:e)??"",X=(t="")=>K(((t=[])=>L.fromEntries(t))(),t),Y=E(),Z=E(),_=/\/([^?]*)/,tt=(a,n,o)=>{const r=E(),d=E(),g=E(),h=E(),[f,A,L]=$((()=>H)),m=t=>{t[1]?.destroy(),t[2]?.destroy()},T=(e,a,s)=>n=>U(n,((n,o)=>{const r=W(e,o);var i;n===t?("S"!==e&&s[3]?.(r),i=(t,a)=>t!==e?a.send(r):0,C(a,((t,e)=>i(e,t)))):"S"===n?s[3]?.(r):z(a,n)?.send(r)}));a.on("connection",((a,w)=>{return c((p=w.url,f=_,p?.match(f)),(([,p])=>c(w.headers["sec-websocket-key"],(async w=>{const f=R(g,p,E),C=R(h,p,(()=>[0])),L=T(w,f,C);b(f)&&(A(r,void 0,p,1),await(async(e,a,r)=>c(await(n?.(a)),(a=>{e[0]=1,e[1]=l(a)?a[0]:a;const n=T("S",r,e);e[2]=((e,a,n,o,r,d,g,y,h={})=>{let w,p=0,f=0,b=0;const A=E(),C=()=>G(11),L=(t,e,s,n)=>{f++,a(t,e,s,n)},m=async(t,e,a,n)=>new s(((s,o)=>{const i=n+"."+G(4),c=((t,e=0)=>setTimeout(t,1e3*e))((()=>{M(A,i),o(`No response from ${t??"anyone"} to ${i}, `+e)}),r);N(A,i,[t,(t,e)=>{clearTimeout(c),M(A,i),s([t,e,n])}]),L(t,i,e,a)})),T=(t,[e,a])=>{k(e,(([e,a],s)=>{const n=P(t[0],s,X);k(e,(([t,e],a)=>{const s=P(n[0],a,X);k(t,(([t,e],a)=>s[0][a]=K(t,e))),s[1]=Q(s[1],e)})),n[1]=Q(n[1],a)})),t[1]=Q(t[1],a)},H=async(a=null,s,n=C())=>{try{i(s)&&([s,a,n]=await m(null,1,t,n));const[o,r]=s,[c,l]=e.getMergeableContentHashes();let d=X();if(c!=o){const[t,s]=(await m(a,4,e.getMergeableTableHashes(),n))[0];if(d=t,!O(s)){const[t,o]=(await m(a,5,e.getMergeableRowHashes(s),n))[0];if(T(d,t),!O(o)){const t=(await m(a,6,e.getMergeableCellHashes(o),n))[0];T(d,t)}}}return[d,l==r?X():(await m(a,7,e.getMergeableValueHashes(),n))[0],1]}catch(t){y?.(t)}},I=((t,e,a,s,n,o,r,c={},d=0,g=[])=>{let y,h,w,p=0,f=0,b=0;R(Y,g,(()=>0)),R(Z,g,(()=>[]));const A=E(),[C,M,L,m,T]=((t=1,e,a)=>1!=t&&e.isMergeable()?[1,e.getMergeableContent,()=>e.getTransactionMergeableChanges(!a),([[t],[e]])=>!O(t)||!O(e),e.setDefaultContent]:2!=t?[0,e.getContent,e.getTransactionChanges,([t,e])=>!O(t)||!O(e),e.setContent]:u("Store type not supported by this Persister"))(r,t,d),[H,k,P]=$((()=>W)),I=t=>{t!=p&&(p=t,k(A,void 0,p))},V=e=>{(C&&l(e?.[0])?1===e?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===e?.[2]?t.applyChanges:t.setContent)(e)},x=async t=>(2!=p&&(I(1),f++,await U((async()=>{try{const a=await e();l(a)?V(a):t?T(t):u("Content is not an array: "+a)}catch(e){o?.(e),t&&T(t)}I(0)}))),W),J=()=>(h&&(n(h),h=void 0),W),j=async t=>(1!=p&&(I(2),b++,await U((async()=>{try{await a(M,t)}catch(t){o?.(t)}I(0)}))),W),F=()=>(w&&(t.delListener(w),w=void 0),W),U=async(...t)=>(v(z(Z,g),...t),await(async()=>{if(!z(Y,g)){for(N(Y,g,1);!i(y=S(z(Z,g)));)try{await y()}catch(t){o?.(t)}N(Y,g,0)}})(),W),W={load:x,startAutoLoad:async t=>{J(),await x(t);try{h=await s((async(t,e)=>{e||t?2!=p&&(I(1),f++,V(e??t),I(0)):await x()}))}catch(t){o?.(t)}return W},stopAutoLoad:J,isAutoLoading:()=>!i(h),save:j,startAutoSave:async()=>(F(),await j(),w=t.addDidFinishTransactionListener((()=>{const t=L();m(t)&&j(t)})),W),stopAutoSave:F,isAutoSaving:()=>!i(w),getStatus:()=>p,addStatusListener:t=>H(t,A),delListener:e=>(P(e),t),schedule:U,getStore:()=>t,destroy:()=>(z(Z,g).splice(0,void 0),J().stopAutoSave()),getStats:()=>({loads:f,saves:b}),...c};return D(W)})(e,(async()=>{const t=await H();return!t||O(t[0][0])&&O(t[1][0])?void 0:t}),(async(t,a)=>a?L(null,C(),3,a):L(null,C(),2,e.getMergeableContentHashes())),(t=>w=t),(()=>w=void 0),y,2,{startSync:async t=>(p=1,await(await I.startAutoLoad(t)).startAutoSave()),stopSync:()=>(p=0,I.stopAutoLoad().stopAutoSave()),destroy:()=>I.stopSync(),getSynchronizerStats:()=>({sends:f,receives:b}),...h},1);return n(((t,a,s,n)=>{const o=p||I.isAutoLoading();b++,0==s?c(z(A,a),(([e,a])=>i(e)||e==t?a(n,t):0)):2==s&&o?H(t,n,a??void 0).then((t=>{w?.(void 0,t)})).catch(y):3==s&&o?w?.(void 0,n):c(1==s&&(p||I.isAutoSaving())?e.getMergeableContentHashes():4==s?e.getMergeableTableDiff(n):5==s?e.getMergeableRowDiff(n):6==s?e.getMergeableCellDiff(n):7==s?e.getMergeableValueDiff(n):void 0,(e=>{L(t,a,0,e)}))})),I})(e[1].getStore(),((e,a,s,o)=>n(((e,...a)=>W(e??t,j(a,((t,e)=>void 0===e?"":e))))(e,a,s,o))),(t=>e[3]=e=>((t,e)=>U(t,((t,a)=>{return e(t,...(s=a,F(s,((t,e)=>""===e?void 0:e))));var s})))(e,t)),0,1,0,0,o),e[4]=[],e[5]=l(a)?a[1]:t=>0})))(C,p,f)),N(f,w,a),A(d,[p],w,1),a.on("message",(t=>{const e=t.toString("utf8");0==C[0]?L(e):v(C[4],e)})),1==C[0]&&(await(async t=>{t[0]=2,await t[1].schedule(t[1].startAutoLoad,t[1].startAutoSave,t[2].startSync),t[5](t[1].getStore()),t[0]=0})(C),y(C[4],L),C[4]=[]),a.on("close",(()=>{M(f,w),A(d,[p],w,-1),b(f)&&(m(C),M(h,p),M(g,p),A(r,void 0,p,-1))})),o&&a.on(e,o)}))));var p,f})),o&&a.on(e,o);const H={getWebSocketServer:()=>a,getPathIds:()=>I(g),getClientIds:t=>I(z(g,t)),addPathIdsListener:t=>f(t,r),addClientIdsListener:(t,e)=>f(e,d,[t]),delListener:t=>(L(t),H),getStats:()=>({paths:w(g),clients:p(g)}),destroy:()=>{g.clear(),C(h,m),a.close()}};return D(H)};export{tt as createWsServer};
1
+ const t="",e="error",a=(t,e="",a)=>t.split(e,a),s=Promise,n=globalThis,o=Math,r=o.floor,i=t=>null==t,c=(t,e,a)=>i(t)?a?.():e(t),l=t=>Array.isArray(t),d=(t,e,a)=>t.slice(e,a),g=t=>t.length,y=t=>{throw Error(t)},u=async(t,e,a)=>{try{return await t()}catch(t){e?.(t)}},w=(t,e)=>t.forEach(e),v=(t,e)=>t.map(e),h=(t,e,a)=>t.reduce(e,a),S=(t,...e)=>t.push(...e),p=t=>t.shift(),f=t=>t?.size??0,b=(A=f,t=>h(M(t),((t,e)=>t+A(e)),0));var A;const C=t=>i(t)||0==f(t),M=t=>[...t?.values()??[]],L=(t,e)=>t?.forEach(e),m=(t,e)=>t?.delete(e),T=Object,H=t=>T.getPrototypeOf(t),D=T.entries,k=T.keys,O=T.freeze,P=(t,e)=>w(D(t),(([t,a])=>e(a,t))),E=t=>(t=>!i(t)&&c(H(t),(t=>t==T.prototype||i(H(t))),(()=>!0)))(t)&&0==(t=>g(k(t)))(t),I=(t,e,a)=>(((t,e)=>e in t)(t,e)||(t[e]=a()),t[e]),z=t=>new Map(t),N=t=>[...t?.keys()??[]],R=(t,e)=>t?.get(e),V=(t,e,a)=>i(a)?(m(t,e),t):t?.set(e,a),x=(t,e,a,s)=>{var n,o;return n=t,o=e,n?.has(o)?s?.(R(t,e)):V(t,e,a()),R(t,e)},J=(t,e,a,s,n=0)=>c((a?x:R)(t,e[n],n>g(e)-2?a:z),(o=>{if(n>g(e)-2)return s?.(o)&&V(t,e[n]),o;const r=J(o,e,a,s,n+1);return C(o)&&V(t,e[n]),r})),$=/^\d+$/,j=t=>new Set(l(t)||i(t)?t:[t]),F=e=>{let a;const[s,n]=(()=>{const e=[];let a=0;return[s=>(s?p(e):null)??t+a++,t=>{$.test(t)&&g(e)<1e3&&S(e,t)}]})(),o=z();return[(n,r,i,c=[],l=()=>[])=>{a??=e();const d=s(1);var g,y;return V(o,d,[n,r,i,c,l]),g=J(r,i??[t],j),y=d,g?.add(y),d},(e,s,...n)=>w(((e,a=[t])=>{const s=[],n=(t,e)=>e==g(a)?S(s,t):null===a[e]?L(t,(t=>n(t,e+1))):w([a[e],null],(a=>n(R(t,a),e+1)));return n(e,0),s})(e,s),(t=>L(t,(t=>R(o,t)[0](a,...s??[],...n))))),e=>c(R(o,e),(([,a,s])=>(J(a,s??[t],void 0,(t=>(m(t,e),C(t)?1:0))),V(o,e),n(e),s))),t=>c(R(o,t),(([t,,e=[],s,n])=>{const o=(...r)=>{const c=g(r);c==g(e)?t(a,...r,...n(r)):i(e[c])?w(s[c]?.(...r)??[],(t=>o(...r,t))):o(...r,e[c])};o()}))]},U=JSON.stringify,W=JSON.parse,q=(t,e)=>{const a=t.indexOf("\n");-1!==a&&e(d(t,0,a),d(t,a+1))},B=(t,e)=>t+"\n"+e,G=a("-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"),K=n.crypto?t=>n.crypto.getRandomValues(t):t=>v(t,(()=>r(256*o.random()))),Q=(t=16)=>h(K(new Uint8Array(t)),((t,e)=>t+G[63&e]),""),X=(t,e)=>e?[t,e]:[t],Y=(t,e)=>((t??"")>(e??"")?t:e)??"",Z=(t="")=>X(((t=[])=>T.fromEntries(t))(),t),_=z(),tt=z(),et=/\/([^?]*)/,at=(a,n,o)=>{const r=z(),d=z(),g=z(),h=z(),[A,M,T]=F((()=>k)),H=async t=>{await(t[1]?.destroy()),await(t[2]?.destroy())},D=(e,a,s)=>n=>q(n,((n,o)=>{const r=B(e,o);var i;n===t?("S"!==e&&s[3]?.(r),i=(t,a)=>t!==e?a.send(r):0,L(a,((t,e)=>i(e,t)))):"S"===n?s[3]?.(r):R(a,n)?.send(r)}));a.on("connection",((a,v)=>{return c((f=v.url,b=et,f?.match(b)),(([,f])=>c(v.headers["sec-websocket-key"],(async v=>{const b=x(g,f,z),A=x(h,f,(()=>[0])),L=D(v,b,A);C(b)&&(M(r,void 0,f,1),await(async(e,a,r)=>c(await(n?.(a)),(a=>{e[0]=1,e[1]=l(a)?a[0]:a;const n=D("S",r,e);e[2]=((e,a,n,o,r,d,g,w,v={})=>{let h,f=0,b=0,A=0;const C=z(),M=()=>Q(11),L=(t,e,s,n)=>{b++,a(t,e,s,n)},T=async(t,e,a,n)=>new s(((s,o)=>{const i=n+"."+Q(4),c=((t,e=0)=>setTimeout(t,1e3*e))((()=>{m(C,i),o(`No response from ${t??"anyone"} to ${i}, `+e)}),r);V(C,i,[t,(t,e)=>{clearTimeout(c),m(C,i),s([t,e,n])}]),L(t,i,e,a)})),H=(t,[e,a])=>{P(e,(([e,a],s)=>{const n=I(t[0],s,Z);P(e,(([t,e],a)=>{const s=I(n[0],a,Z);P(t,(([t,e],a)=>s[0][a]=X(t,e))),s[1]=Y(s[1],e)})),n[1]=Y(n[1],a)})),t[1]=Y(t[1],a)},D=(a=null,s,n=M())=>u((async()=>{i(s)&&([s,a,n]=await T(null,1,t,n));const[o,r]=s,[c,l]=e.getMergeableContentHashes();let d=Z();if(c!=o){const[t,s]=(await T(a,4,e.getMergeableTableHashes(),n))[0];if(d=t,!E(s)){const[t,o]=(await T(a,5,e.getMergeableRowHashes(s),n))[0];if(H(d,t),!E(o)){const t=(await T(a,6,e.getMergeableCellHashes(o),n))[0];H(d,t)}}}return[d,l==r?Z():(await T(a,7,e.getMergeableValueHashes(),n))[0],1]}),w),k=((t,e,a,s,n,o,r,c={},d=0,g=[])=>{let w,v,h,f=0,b=0,A=0;x(_,g,(()=>0)),x(tt,g,(()=>[]));const C=z(),[M,L,m,T,H]=((t=1,e,a)=>1!=t&&e.isMergeable()?[1,e.getMergeableContent,()=>e.getTransactionMergeableChanges(!a),([[t],[e]])=>!E(t)||!E(e),e.setDefaultContent]:2!=t?[0,e.getContent,e.getTransactionChanges,([t,e])=>!E(t)||!E(e),e.setContent]:y("Store type not supported by this Persister"))(r,t,d),[D,k,P]=F((()=>q)),I=t=>{t!=f&&(f=t,k(C,void 0,f))},N=e=>{(M&&l(e?.[0])?1===e?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===e?.[2]?t.applyChanges:t.setContent)(e)},J=async t=>(2!=f&&(I(1),b++,await W((async()=>{await u((async()=>{const a=await e();l(a)?N(a):t?H(t):y("Content is not an array: "+a)}),(()=>{t&&H(t)})),I(0)}))),q),$=async()=>(v&&(await u((()=>n(v)),o),v=void 0),q),j=async t=>(1!=f&&(I(2),A++,await W((async()=>{await u((()=>a(L,t)),o),I(0)}))),q),U=async()=>(h&&(t.delListener(h),h=void 0),q),W=async(...t)=>(S(R(tt,g),...t),await(async()=>{if(!R(_,g)){for(V(_,g,1);!i(w=p(R(tt,g)));)await u(w,o);V(_,g,0)}})(),q),q={load:J,startAutoLoad:async t=>($(),await J(t),await u((async()=>v=await s((async(t,e)=>{e||t?2!=f&&(I(1),b++,N(e??t),I(0)):await J()}))),o),q),stopAutoLoad:$,isAutoLoading:()=>!i(v),save:j,startAutoSave:async()=>(U(),await j(),h=t.addDidFinishTransactionListener((()=>{const t=m();T(t)&&j(t)})),q),stopAutoSave:U,isAutoSaving:()=>!i(h),getStatus:()=>f,addStatusListener:t=>D(t,C),delListener:e=>(P(e),t),schedule:W,getStore:()=>t,destroy:async()=>(R(tt,g).splice(0,void 0),await q.stopAutoLoad(),await q.stopAutoSave()),getStats:()=>({loads:b,saves:A}),...c};return O(q)})(e,(async()=>{const t=await D();return!t||E(t[0][0])&&E(t[1][0])?void 0:t}),(async(t,a)=>a?L(null,M(),3,a):L(null,M(),2,e.getMergeableContentHashes())),(t=>h=t),(()=>h=void 0),w,2,{startSync:async t=>(f=1,await(await k.startAutoLoad(t)).startAutoSave()),stopSync:async()=>(f=0,await k.stopAutoLoad(),await k.stopAutoSave(),k),destroy:async()=>(await k.stopSync(),k),getSynchronizerStats:()=>({sends:b,receives:A}),...v},1);return n(((t,a,s,n)=>{const o=f||k.isAutoLoading();A++,0==s?c(R(C,a),(([e,a])=>i(e)||e==t?a(n,t):0)):2==s&&o?D(t,n,a??void 0).then((t=>{h?.(void 0,t)})).catch(w):3==s&&o?h?.(void 0,n):c(1==s&&(f||k.isAutoSaving())?e.getMergeableContentHashes():4==s?e.getMergeableTableDiff(n):5==s?e.getMergeableRowDiff(n):6==s?e.getMergeableCellDiff(n):7==s?e.getMergeableValueDiff(n):void 0,(e=>{L(t,a,0,e)}))})),k})(e[1].getStore(),((e,a,s,o)=>n(((e,...a)=>B(e??t,U(a,((t,e)=>void 0===e?"":e))))(e,a,s,o))),(t=>e[3]=e=>((t,e)=>q(t,((t,a)=>{return e(t,...(s=a,W(s,((t,e)=>""===e?void 0:e))));var s})))(e,t)),0,1,0,0,o),e[4]=[],e[5]=l(a)?a[1]:t=>0})))(A,f,b)),V(b,v,a),M(d,[f],v,1),a.on("message",(t=>{const e=t.toString("utf8");0==A[0]?L(e):S(A[4],e)})),1==A[0]&&(await(async t=>{t[0]=2,await t[1].schedule(t[1].startAutoLoad,t[1].startAutoSave,t[2].startSync),t[5](t[1].getStore()),t[0]=0})(A),w(A[4],L),A[4]=[]),a.on("close",(async()=>{m(b,v),M(d,[f],v,-1),C(b)&&(await H(A),m(h,f),m(g,f),M(r,void 0,f,-1))})),o&&a.on(e,o)}))));var f,b})),o&&a.on(e,o);const k={getWebSocketServer:()=>a,getPathIds:()=>N(g),getClientIds:t=>N(R(g,t)),addPathIdsListener:t=>A(t,r),addClientIdsListener:(t,e)=>A(e,d,[t]),delListener:t=>(T(t),k),getStats:()=>({paths:f(g),clients:b(g)}),destroy:async()=>{var t,e;g.clear(),await(async t=>s.all(t))((t=h,e=H,v([...t?.entries()??[]],(([t,a])=>e(a,t))))),a.close()}};return O(k)};export{at as createWsServer};
@@ -1 +1 @@
1
- import{DurableObject as e}from"cloudflare:workers";const t="",s=(e,t="",s)=>e.split(t,s),a=Promise,n=globalThis,r=(e,t=0)=>setTimeout(e,1e3*t),o=Math,i=o.floor,c=e=>null==e,l=(e,t,s)=>c(e)?s?.():t(e),g=e=>Array.isArray(e),h=(e,t,s)=>e.slice(t,s),d=e=>e.length,u=e=>{throw Error(e)},y=(e,t)=>e.forEach(t),w=(e,t)=>e.map(t),S=(e,...t)=>e.push(...t),v=e=>e.shift(),p=Object,C=e=>p.getPrototypeOf(e),b=p.entries,f=p.keys,M=p.freeze,A=(e,t)=>y(b(e),(([e,s])=>t(s,e))),m=e=>(e=>!c(e)&&l(C(e),(e=>e==p.prototype||c(C(e))),(()=>!0)))(e)&&0==(e=>d(f(e)))(e),k=(e,t,s)=>(((e,t)=>t in e)(e,t)||(e[t]=s()),e[t]),L=JSON.stringify,T=JSON.parse,x=(e,t)=>{const s=e.indexOf("\n");-1!==s&&t(h(e,0,s),h(e,s+1))},P=(e,...s)=>I(e??t,L(s,((e,t)=>void 0===t?"":t))),I=(e,t)=>e+"\n"+t,H=e=>c(e)||0==(e=>e?.size??0)(e),D=(e,t)=>e?.forEach(t),O=(e,t)=>e?.delete(t),R=e=>new Map(e),E=(e,t)=>e?.get(t),N=(e,t,s)=>c(s)?(O(e,t),e):e?.set(t,s),W=(e,t,s,a)=>{var n,r;return n=e,r=t,n?.has(r)?a?.(E(e,t)):N(e,t,s()),E(e,t)},z=(e,t,s,a,n=0)=>l((s?W:E)(e,t[n],n>d(t)-2?s:R),(r=>{if(n>d(t)-2)return a?.(r)&&N(e,t[n]),r;const o=z(r,t,s,a,n+1);return H(r)&&N(e,t[n]),o})),U=s("-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"),V=n.crypto?e=>n.crypto.getRandomValues(e):e=>w(e,(()=>i(256*o.random()))),F=(e=16)=>{return t=(e,t)=>e+U[63&t],V(new Uint8Array(e)).reduce(t,"");var t},J=(e,t)=>t?[e,t]:[e],$=(e,t)=>((e??"")>(t??"")?e:t)??"",j=(e="")=>J(((e=[])=>p.fromEntries(e))(),e),q=/^\d+$/,B=e=>new Set(g(e)||c(e)?e:[e]),G=R(),K=R(),Q=(e,s,a,n,r,o,i,h={},w=0,p=[])=>{let C,b,f,A=0,k=0,L=0;W(G,p,(()=>0)),W(K,p,(()=>[]));const T=R(),[x,P,I,U,V]=((e=1,t,s)=>1!=e&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!s),([[e],[t]])=>!m(e)||!m(t),t.setDefaultContent]:2!=e?[0,t.getContent,t.getTransactionChanges,([e,t])=>!m(e)||!m(t),t.setContent]:u("Store type not supported by this Persister"))(i,e,w),[F,J,$]=(()=>{let e;const[s,a]=(()=>{const e=[];let s=0;return[a=>(a?v(e):null)??t+s++,t=>{q.test(t)&&d(e)<1e3&&S(e,t)}]})(),n=R();return[(a,r,o,i=[],c=()=>[])=>{e??=te;const l=s(1);var g,h;return N(n,l,[a,r,o,i,c]),g=z(r,o??[t],B),h=l,g?.add(h),l},(s,a,...r)=>y(((e,s=[t])=>{const a=[],n=(e,t)=>t==d(s)?S(a,e):null===s[t]?D(e,(e=>n(e,t+1))):y([s[t],null],(s=>n(E(e,s),t+1)));return n(e,0),a})(s,a),(t=>D(t,(t=>E(n,t)[0](e,...a??[],...r))))),e=>l(E(n,e),(([,s,r])=>(z(s,r??[t],void 0,(t=>(O(t,e),H(t)?1:0))),N(n,e),a(e),r))),t=>l(E(n,t),(([t,,s=[],a,n])=>{const r=(...o)=>{const i=d(o);i==d(s)?t(e,...o,...n(o)):c(s[i])?y(a[i]?.(...o)??[],(e=>r(...o,e))):r(...o,s[i])};r()}))]})(),j=e=>{e!=A&&(A=e,J(T,void 0,A))},Q=t=>{(x&&g(t?.[0])?1===t?.[2]?e.applyMergeableChanges:e.setMergeableContent:1===t?.[2]?e.applyChanges:e.setContent)(t)},X=async e=>(2!=A&&(j(1),k++,await ee((async()=>{try{const t=await s();g(t)?Q(t):e?V(e):u("Content is not an array: "+t)}catch(t){e&&V(e)}j(0)}))),te),Y=()=>(b&&(r(b),b=void 0),te),Z=async e=>(1!=A&&(j(2),L++,await ee((async()=>{try{await a(P,e)}catch(e){}j(0)}))),te),_=()=>(f&&(e.delListener(f),f=void 0),te),ee=async(...e)=>(S(E(K,p),...e),await(async()=>{if(!E(G,p)){for(N(G,p,1);!c(C=v(E(K,p)));)try{await C()}catch(e){}N(G,p,0)}})(),te),te={load:X,startAutoLoad:async e=>{Y(),await X(e);try{b=await n((async(e,t)=>{t||e?2!=A&&(j(1),k++,Q(t??e),j(0)):await X()}))}catch(e){}return te},stopAutoLoad:Y,isAutoLoading:()=>!c(b),save:Z,startAutoSave:async()=>(_(),await Z(),f=e.addDidFinishTransactionListener((()=>{const e=I();U(e)&&Z(e)})),te),stopAutoSave:_,isAutoSaving:()=>!c(f),getStatus:()=>A,addStatusListener:e=>F(e,T),delListener:t=>($(t),e),schedule:ee,getStore:()=>e,destroy:()=>(E(K,p).splice(0,void 0),Y().stopAutoSave()),getStats:()=>({loads:k,saves:L}),...h};return M(te)},X=/\/([^?]*)/,Y="S",Z=e=>{return(s=new URL(e.url).pathname,a=X,s?.match(a))?.[1]??t;var s,a},_=e=>"websocket"==e.headers.get("upgrade")?.toLowerCase()?e.headers.get("sec-websocket-key"):null,ee=(e,t=null,s=null)=>new Response(s,{status:e,webSocket:t}),te=()=>ee(426,null,"Upgrade required");class se extends e{#e;constructor(e,s){super(e,s),this.ctx.blockConcurrencyWhile((async()=>await l(await this.createPersister(),(async e=>{const s=((e,s,n,o,i,g,h,d,u={})=>{let y,w=0,S=0,v=0;const p=R(),C=()=>F(11),b=(e,t,a,n)=>{S++,s(e,t,a,n)},f=async(e,t,s,n)=>new a(((a,o)=>{const c=n+"."+F(4),l=r((()=>{O(p,c),o(`No response from ${e??"anyone"} to ${c}, `+t)}),i);N(p,c,[e,(e,t)=>{clearTimeout(l),O(p,c),a([e,t,n])}]),b(e,c,t,s)})),M=(e,[t,s])=>{A(t,(([t,s],a)=>{const n=k(e[0],a,j);A(t,(([e,t],s)=>{const a=k(n[0],s,j);A(e,(([e,t],s)=>a[0][s]=J(e,t))),a[1]=$(a[1],t)})),n[1]=$(n[1],s)})),e[1]=$(e[1],s)},L=async(s=null,a,n=C())=>{try{c(a)&&([a,s,n]=await f(null,1,t,n));const[r,o]=a,[i,l]=e.getMergeableContentHashes();let g=j();if(i!=r){const[t,a]=(await f(s,4,e.getMergeableTableHashes(),n))[0];if(g=t,!m(a)){const[t,r]=(await f(s,5,e.getMergeableRowHashes(a),n))[0];if(M(g,t),!m(r)){const t=(await f(s,6,e.getMergeableCellHashes(r),n))[0];M(g,t)}}}return[g,l==o?j():(await f(s,7,e.getMergeableValueHashes(),n))[0],1]}catch(e){}},T=Q(e,(async()=>{const e=await L();return!e||m(e[0][0])&&m(e[1][0])?void 0:e}),(async(t,s)=>s?b(null,C(),3,s):b(null,C(),2,e.getMergeableContentHashes())),(e=>y=e),(()=>y=void 0),0,2,{startSync:async e=>(w=1,await(await T.startAutoLoad(e)).startAutoSave()),stopSync:()=>(w=0,T.stopAutoLoad().stopAutoSave()),destroy:()=>T.stopSync(),getSynchronizerStats:()=>({sends:S,receives:v}),...u},1);return n(((t,s,a,n)=>{const r=w||T.isAutoLoading();v++,0==a?l(E(p,s),(([e,s])=>c(e)||e==t?s(n,t):0)):2==a&&r?L(t,n,s??void 0).then((e=>{y?.(void 0,e)})).catch(d):3==a&&r?y?.(void 0,n):l(1==a&&(w||T.isAutoSaving())?e.getMergeableContentHashes():4==a?e.getMergeableTableDiff(n):5==a?e.getMergeableRowDiff(n):6==a?e.getMergeableCellDiff(n):7==a?e.getMergeableValueDiff(n):void 0,(e=>{b(t,s,0,e)}))})),T})(e.getStore(),((e,t,s,a)=>this.#t(Y,P(e,t,s,a))),(e=>this.#e=t=>((e,t)=>x(e,((e,s)=>{return t(e,...(a=s,T(a,((e,t)=>""===t?void 0:t))));var a})))(t,e)),0,1);await e.load(),await e.startAutoSave(),r(s.startSync)}))))}fetch(e){const s=Z(e);return l(_(e),(e=>{const[a,n]=(r=new WebSocketPair,p.values(r));var r,o;return o=this.#s(),0==d(o)&&this.onPathId(s,1),this.ctx.acceptWebSocket(n,[e,s]),this.onClientId(s,e,1),n.send(P(Y,null,1,t)),ee(101,a)}),te)}webSocketMessage(e,t){l(this.ctx.getTags(e)[0],(s=>this.#t(s,t.toString(),e)))}webSocketClose(e){const[t,s]=this.ctx.getTags(e);this.onClientId(s,t,-1),1==d(this.#s())&&this.onPathId(s,-1)}#t(e,s,a){x(s.toString(),((s,n)=>{const r=I(e,n);this.onMessage(e,s,n),s==t?(e!=Y&&this.#e?.(r),y(this.#s(),(e=>{e!=a&&e.send(r)}))):s==Y?this.#e?.(r):s!=e&&this.#s(s)[0]?.send(r)}))}#s(e){return this.ctx.getWebSockets(e)}createPersister(){}getPathId(){return this.ctx.getTags(this.#s()[0])?.[1]}getClientIds(){return w(this.#s(),(e=>this.ctx.getTags(e)[0]))}onPathId(e,t){}onClientId(e,t,s){}onMessage(e,t,s){}}const ae=e=>(t,s)=>_(t)?s[e].get(s[e].idFromName(Z(t))).fetch(t):te();export{se as WsServerDurableObject,ae as getWsServerDurableObjectFetch};
1
+ import{DurableObject as e}from"cloudflare:workers";const t="",a=(e,t="",a)=>e.split(t,a),s=Promise,n=globalThis,r=(e,t=0)=>setTimeout(e,1e3*t),o=Math,i=o.floor,c=e=>null==e,l=(e,t,a)=>c(e)?a?.():t(e),g=e=>Array.isArray(e),d=(e,t,a)=>e.slice(t,a),u=e=>e.length,h=e=>{throw Error(e)},y=async(e,t,a)=>{try{return await e()}catch(e){t?.(e)}},w=(e,t)=>e.forEach(t),S=(e,t)=>e.map(t),p=(e,...t)=>e.push(...t),v=e=>e.shift(),C=Object,b=e=>C.getPrototypeOf(e),f=C.entries,M=C.keys,A=C.freeze,m=(e,t)=>w(f(e),(([e,a])=>t(a,e))),L=e=>(e=>!c(e)&&l(b(e),(e=>e==C.prototype||c(b(e))),(()=>!0)))(e)&&0==(e=>u(M(e)))(e),k=(e,t,a)=>(((e,t)=>t in e)(e,t)||(e[t]=a()),e[t]),T=JSON.stringify,x=JSON.parse,P=(e,t)=>{const a=e.indexOf("\n");-1!==a&&t(d(e,0,a),d(e,a+1))},I=(e,...a)=>H(e??t,T(a,((e,t)=>void 0===t?"":t))),H=(e,t)=>e+"\n"+t,D=e=>c(e)||0==(e=>e?.size??0)(e),O=(e,t)=>e?.forEach(t),R=(e,t)=>e?.delete(t),E=e=>new Map(e),N=(e,t)=>e?.get(t),W=(e,t,a)=>c(a)?(R(e,t),e):e?.set(t,a),z=(e,t,a,s)=>{var n,r;return n=e,r=t,n?.has(r)?s?.(N(e,t)):W(e,t,a()),N(e,t)},U=(e,t,a,s,n=0)=>l((a?z:N)(e,t[n],n>u(t)-2?a:E),(r=>{if(n>u(t)-2)return s?.(r)&&W(e,t[n]),r;const o=U(r,t,a,s,n+1);return D(r)&&W(e,t[n]),o})),V=a("-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"),F=n.crypto?e=>n.crypto.getRandomValues(e):e=>S(e,(()=>i(256*o.random()))),J=(e=16)=>{return t=(e,t)=>e+V[63&t],F(new Uint8Array(e)).reduce(t,"");var t},$=(e,t)=>t?[e,t]:[e],j=(e,t)=>((e??"")>(t??"")?e:t)??"",q=(e="")=>$(((e=[])=>C.fromEntries(e))(),e),B=/^\d+$/,G=e=>new Set(g(e)||c(e)?e:[e]),K=E(),Q=E(),X=(e,a,s,n,r,o,i,d={},S=0,C=[])=>{let b,f,M,m=0,k=0,T=0;z(K,C,(()=>0)),z(Q,C,(()=>[]));const x=E(),[P,I,H,V,F]=((e=1,t,a)=>1!=e&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!a),([[e],[t]])=>!L(e)||!L(t),t.setDefaultContent]:2!=e?[0,t.getContent,t.getTransactionChanges,([e,t])=>!L(e)||!L(t),t.setContent]:h("Store type not supported by this Persister"))(i,e,S),[J,$,j]=(()=>{let e;const[a,s]=(()=>{const e=[];let a=0;return[s=>(s?v(e):null)??t+a++,t=>{B.test(t)&&u(e)<1e3&&p(e,t)}]})(),n=E();return[(s,r,o,i=[],c=()=>[])=>{e??=ae;const l=a(1);var g,d;return W(n,l,[s,r,o,i,c]),g=U(r,o??[t],G),d=l,g?.add(d),l},(a,s,...r)=>w(((e,a=[t])=>{const s=[],n=(e,t)=>t==u(a)?p(s,e):null===a[t]?O(e,(e=>n(e,t+1))):w([a[t],null],(a=>n(N(e,a),t+1)));return n(e,0),s})(a,s),(t=>O(t,(t=>N(n,t)[0](e,...s??[],...r))))),e=>l(N(n,e),(([,a,r])=>(U(a,r??[t],void 0,(t=>(R(t,e),D(t)?1:0))),W(n,e),s(e),r))),t=>l(N(n,t),(([t,,a=[],s,n])=>{const r=(...o)=>{const i=u(o);i==u(a)?t(e,...o,...n(o)):c(a[i])?w(s[i]?.(...o)??[],(e=>r(...o,e))):r(...o,a[i])};r()}))]})(),q=e=>{e!=m&&(m=e,$(x,void 0,m))},X=t=>{(P&&g(t?.[0])?1===t?.[2]?e.applyMergeableChanges:e.setMergeableContent:1===t?.[2]?e.applyChanges:e.setContent)(t)},Y=async e=>(2!=m&&(q(1),k++,await te((async()=>{await y((async()=>{const t=await a();g(t)?X(t):e?F(e):h("Content is not an array: "+t)}),(()=>{e&&F(e)})),q(0)}))),ae),Z=async()=>(f&&(await y((()=>r(f)),o),f=void 0),ae),_=async e=>(1!=m&&(q(2),T++,await te((async()=>{await y((()=>s(I,e)),o),q(0)}))),ae),ee=async()=>(M&&(e.delListener(M),M=void 0),ae),te=async(...e)=>(p(N(Q,C),...e),await(async()=>{if(!N(K,C)){for(W(K,C,1);!c(b=v(N(Q,C)));)await y(b,o);W(K,C,0)}})(),ae),ae={load:Y,startAutoLoad:async e=>(Z(),await Y(e),await y((async()=>f=await n((async(e,t)=>{t||e?2!=m&&(q(1),k++,X(t??e),q(0)):await Y()}))),o),ae),stopAutoLoad:Z,isAutoLoading:()=>!c(f),save:_,startAutoSave:async()=>(ee(),await _(),M=e.addDidFinishTransactionListener((()=>{const e=H();V(e)&&_(e)})),ae),stopAutoSave:ee,isAutoSaving:()=>!c(M),getStatus:()=>m,addStatusListener:e=>J(e,x),delListener:t=>(j(t),e),schedule:te,getStore:()=>e,destroy:async()=>(N(Q,C).splice(0,void 0),await ae.stopAutoLoad(),await ae.stopAutoSave()),getStats:()=>({loads:k,saves:T}),...d};return A(ae)},Y=/\/([^?]*)/,Z="S",_=e=>{return(a=new URL(e.url).pathname,s=Y,a?.match(s))?.[1]??t;var a,s},ee=e=>"websocket"==e.headers.get("upgrade")?.toLowerCase()?e.headers.get("sec-websocket-key"):null,te=(e,t=null,a=null)=>new Response(a,{status:e,webSocket:t}),ae=()=>te(426,null,"Upgrade required");class se extends e{#e;constructor(e,a){super(e,a),this.ctx.blockConcurrencyWhile((async()=>await l(await this.createPersister(),(async e=>{const a=((e,a,n,o,i,g,d,u,h={})=>{let w,S=0,p=0,v=0;const C=E(),b=()=>J(11),f=(e,t,s,n)=>{p++,a(e,t,s,n)},M=async(e,t,a,n)=>new s(((s,o)=>{const c=n+"."+J(4),l=r((()=>{R(C,c),o(`No response from ${e??"anyone"} to ${c}, `+t)}),i);W(C,c,[e,(e,t)=>{clearTimeout(l),R(C,c),s([e,t,n])}]),f(e,c,t,a)})),A=(e,[t,a])=>{m(t,(([t,a],s)=>{const n=k(e[0],s,q);m(t,(([e,t],a)=>{const s=k(n[0],a,q);m(e,(([e,t],a)=>s[0][a]=$(e,t))),s[1]=j(s[1],t)})),n[1]=j(n[1],a)})),e[1]=j(e[1],a)},T=(a=null,s,n=b())=>y((async()=>{c(s)&&([s,a,n]=await M(null,1,t,n));const[r,o]=s,[i,l]=e.getMergeableContentHashes();let g=q();if(i!=r){const[t,s]=(await M(a,4,e.getMergeableTableHashes(),n))[0];if(g=t,!L(s)){const[t,r]=(await M(a,5,e.getMergeableRowHashes(s),n))[0];if(A(g,t),!L(r)){const t=(await M(a,6,e.getMergeableCellHashes(r),n))[0];A(g,t)}}}return[g,l==o?q():(await M(a,7,e.getMergeableValueHashes(),n))[0],1]}),u),x=X(e,(async()=>{const e=await T();return!e||L(e[0][0])&&L(e[1][0])?void 0:e}),(async(t,a)=>a?f(null,b(),3,a):f(null,b(),2,e.getMergeableContentHashes())),(e=>w=e),(()=>w=void 0),u,2,{startSync:async e=>(S=1,await(await x.startAutoLoad(e)).startAutoSave()),stopSync:async()=>(S=0,await x.stopAutoLoad(),await x.stopAutoSave(),x),destroy:async()=>(await x.stopSync(),x),getSynchronizerStats:()=>({sends:p,receives:v}),...h},1);return n(((t,a,s,n)=>{const r=S||x.isAutoLoading();v++,0==s?l(N(C,a),(([e,a])=>c(e)||e==t?a(n,t):0)):2==s&&r?T(t,n,a??void 0).then((e=>{w?.(void 0,e)})).catch(u):3==s&&r?w?.(void 0,n):l(1==s&&(S||x.isAutoSaving())?e.getMergeableContentHashes():4==s?e.getMergeableTableDiff(n):5==s?e.getMergeableRowDiff(n):6==s?e.getMergeableCellDiff(n):7==s?e.getMergeableValueDiff(n):void 0,(e=>{f(t,a,0,e)}))})),x})(e.getStore(),((e,t,a,s)=>this.#t(Z,I(e,t,a,s))),(e=>this.#e=t=>((e,t)=>P(e,((e,a)=>{return t(e,...(s=a,x(s,((e,t)=>""===t?void 0:t))));var s})))(t,e)),0,1);await e.load(),await e.startAutoSave(),r(a.startSync)}))))}fetch(e){const a=_(e);return l(ee(e),(e=>{const[s,n]=(r=new WebSocketPair,C.values(r));var r,o;return o=this.#a(),0==u(o)&&this.onPathId(a,1),this.ctx.acceptWebSocket(n,[e,a]),this.onClientId(a,e,1),n.send(I(Z,null,1,t)),te(101,s)}),ae)}webSocketMessage(e,t){l(this.ctx.getTags(e)[0],(a=>this.#t(a,t.toString(),e)))}webSocketClose(e){const[t,a]=this.ctx.getTags(e);this.onClientId(a,t,-1),1==u(this.#a())&&this.onPathId(a,-1)}#t(e,a,s){P(a.toString(),((a,n)=>{const r=H(e,n);this.onMessage(e,a,n),a==t?(e!=Z&&this.#e?.(r),w(this.#a(),(e=>{e!=s&&e.send(r)}))):a==Z?this.#e?.(r):a!=e&&this.#a(a)[0]?.send(r)}))}#a(e){return this.ctx.getWebSockets(e)}createPersister(){}getPathId(){return this.ctx.getTags(this.#a()[0])?.[1]}getClientIds(){return S(this.#a(),(e=>this.ctx.getTags(e)[0]))}onPathId(e,t){}onClientId(e,t,a){}onMessage(e,t,a){}}const ne=e=>(t,a)=>ee(t)?a[e].get(a[e].idFromName(_(t))).fetch(t):ae();export{se as WsServerDurableObject,ne as getWsServerDurableObjectFetch};
@@ -1 +1 @@
1
- import{DurableObject as e}from"cloudflare:workers";const t="",s=(e,t="",s)=>e.split(t,s),a=Promise,n=globalThis,r=(e,t=0)=>setTimeout(e,1e3*t),o=Math,i=o.floor,c=e=>null==e,l=(e,t,s)=>c(e)?s?.():t(e),g=e=>Array.isArray(e),h=(e,t,s)=>e.slice(t,s),d=e=>e.length,u=e=>{throw Error(e)},y=(e,t)=>e.forEach(t),w=(e,t)=>e.map(t),S=(e,...t)=>e.push(...t),v=e=>e.shift(),p=Object,C=e=>p.getPrototypeOf(e),b=p.entries,f=p.keys,M=p.freeze,A=(e,t)=>y(b(e),(([e,s])=>t(s,e))),m=e=>(e=>!c(e)&&l(C(e),(e=>e==p.prototype||c(C(e))),(()=>!0)))(e)&&0==(e=>d(f(e)))(e),k=(e,t,s)=>(((e,t)=>t in e)(e,t)||(e[t]=s()),e[t]),L=JSON.stringify,T=JSON.parse,x=(e,t)=>{const s=e.indexOf("\n");-1!==s&&t(h(e,0,s),h(e,s+1))},P=(e,...s)=>I(e??t,L(s,((e,t)=>void 0===t?"":t))),I=(e,t)=>e+"\n"+t,H=e=>c(e)||0==(e=>e?.size??0)(e),D=(e,t)=>e?.forEach(t),O=(e,t)=>e?.delete(t),R=e=>new Map(e),E=(e,t)=>e?.get(t),N=(e,t,s)=>c(s)?(O(e,t),e):e?.set(t,s),W=(e,t,s,a)=>{var n,r;return n=e,r=t,n?.has(r)?a?.(E(e,t)):N(e,t,s()),E(e,t)},z=(e,t,s,a,n=0)=>l((s?W:E)(e,t[n],n>d(t)-2?s:R),(r=>{if(n>d(t)-2)return a?.(r)&&N(e,t[n]),r;const o=z(r,t,s,a,n+1);return H(r)&&N(e,t[n]),o})),U=s("-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"),V=n.crypto?e=>n.crypto.getRandomValues(e):e=>w(e,(()=>i(256*o.random()))),F=(e=16)=>{return t=(e,t)=>e+U[63&t],V(new Uint8Array(e)).reduce(t,"");var t},J=(e,t)=>t?[e,t]:[e],$=(e,t)=>((e??"")>(t??"")?e:t)??"",j=(e="")=>J(((e=[])=>p.fromEntries(e))(),e),q=/^\d+$/,B=e=>new Set(g(e)||c(e)?e:[e]),G=R(),K=R(),Q=(e,s,a,n,r,o,i,h={},w=0,p=[])=>{let C,b,f,A=0,k=0,L=0;W(G,p,(()=>0)),W(K,p,(()=>[]));const T=R(),[x,P,I,U,V]=((e=1,t,s)=>1!=e&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!s),([[e],[t]])=>!m(e)||!m(t),t.setDefaultContent]:2!=e?[0,t.getContent,t.getTransactionChanges,([e,t])=>!m(e)||!m(t),t.setContent]:u("Store type not supported by this Persister"))(i,e,w),[F,J,$]=(()=>{let e;const[s,a]=(()=>{const e=[];let s=0;return[a=>(a?v(e):null)??t+s++,t=>{q.test(t)&&d(e)<1e3&&S(e,t)}]})(),n=R();return[(a,r,o,i=[],c=()=>[])=>{e??=te;const l=s(1);var g,h;return N(n,l,[a,r,o,i,c]),g=z(r,o??[t],B),h=l,g?.add(h),l},(s,a,...r)=>y(((e,s=[t])=>{const a=[],n=(e,t)=>t==d(s)?S(a,e):null===s[t]?D(e,(e=>n(e,t+1))):y([s[t],null],(s=>n(E(e,s),t+1)));return n(e,0),a})(s,a),(t=>D(t,(t=>E(n,t)[0](e,...a??[],...r))))),e=>l(E(n,e),(([,s,r])=>(z(s,r??[t],void 0,(t=>(O(t,e),H(t)?1:0))),N(n,e),a(e),r))),t=>l(E(n,t),(([t,,s=[],a,n])=>{const r=(...o)=>{const i=d(o);i==d(s)?t(e,...o,...n(o)):c(s[i])?y(a[i]?.(...o)??[],(e=>r(...o,e))):r(...o,s[i])};r()}))]})(),j=e=>{e!=A&&(A=e,J(T,void 0,A))},Q=t=>{(x&&g(t?.[0])?1===t?.[2]?e.applyMergeableChanges:e.setMergeableContent:1===t?.[2]?e.applyChanges:e.setContent)(t)},X=async e=>(2!=A&&(j(1),k++,await ee((async()=>{try{const t=await s();g(t)?Q(t):e?V(e):u("Content is not an array: "+t)}catch(t){e&&V(e)}j(0)}))),te),Y=()=>(b&&(r(b),b=void 0),te),Z=async e=>(1!=A&&(j(2),L++,await ee((async()=>{try{await a(P,e)}catch(e){}j(0)}))),te),_=()=>(f&&(e.delListener(f),f=void 0),te),ee=async(...e)=>(S(E(K,p),...e),await(async()=>{if(!E(G,p)){for(N(G,p,1);!c(C=v(E(K,p)));)try{await C()}catch(e){}N(G,p,0)}})(),te),te={load:X,startAutoLoad:async e=>{Y(),await X(e);try{b=await n((async(e,t)=>{t||e?2!=A&&(j(1),k++,Q(t??e),j(0)):await X()}))}catch(e){}return te},stopAutoLoad:Y,isAutoLoading:()=>!c(b),save:Z,startAutoSave:async()=>(_(),await Z(),f=e.addDidFinishTransactionListener((()=>{const e=I();U(e)&&Z(e)})),te),stopAutoSave:_,isAutoSaving:()=>!c(f),getStatus:()=>A,addStatusListener:e=>F(e,T),delListener:t=>($(t),e),schedule:ee,getStore:()=>e,destroy:()=>(E(K,p).splice(0,void 0),Y().stopAutoSave()),getStats:()=>({loads:k,saves:L}),...h};return M(te)},X=/\/([^?]*)/,Y="S",Z=e=>{return(s=new URL(e.url).pathname,a=X,s?.match(a))?.[1]??t;var s,a},_=e=>"websocket"==e.headers.get("upgrade")?.toLowerCase()?e.headers.get("sec-websocket-key"):null,ee=(e,t=null,s=null)=>new Response(s,{status:e,webSocket:t}),te=()=>ee(426,null,"Upgrade required");class se extends e{#e;constructor(e,s){super(e,s),this.ctx.blockConcurrencyWhile((async()=>await l(await this.createPersister(),(async e=>{const s=((e,s,n,o,i,g,h,d,u={})=>{let y,w=0,S=0,v=0;const p=R(),C=()=>F(11),b=(e,t,a,n)=>{S++,s(e,t,a,n)},f=async(e,t,s,n)=>new a(((a,o)=>{const c=n+"."+F(4),l=r((()=>{O(p,c),o(`No response from ${e??"anyone"} to ${c}, `+t)}),i);N(p,c,[e,(e,t)=>{clearTimeout(l),O(p,c),a([e,t,n])}]),b(e,c,t,s)})),M=(e,[t,s])=>{A(t,(([t,s],a)=>{const n=k(e[0],a,j);A(t,(([e,t],s)=>{const a=k(n[0],s,j);A(e,(([e,t],s)=>a[0][s]=J(e,t))),a[1]=$(a[1],t)})),n[1]=$(n[1],s)})),e[1]=$(e[1],s)},L=async(s=null,a,n=C())=>{try{c(a)&&([a,s,n]=await f(null,1,t,n));const[r,o]=a,[i,l]=e.getMergeableContentHashes();let g=j();if(i!=r){const[t,a]=(await f(s,4,e.getMergeableTableHashes(),n))[0];if(g=t,!m(a)){const[t,r]=(await f(s,5,e.getMergeableRowHashes(a),n))[0];if(M(g,t),!m(r)){const t=(await f(s,6,e.getMergeableCellHashes(r),n))[0];M(g,t)}}}return[g,l==o?j():(await f(s,7,e.getMergeableValueHashes(),n))[0],1]}catch(e){}},T=Q(e,(async()=>{const e=await L();return!e||m(e[0][0])&&m(e[1][0])?void 0:e}),(async(t,s)=>s?b(null,C(),3,s):b(null,C(),2,e.getMergeableContentHashes())),(e=>y=e),(()=>y=void 0),0,2,{startSync:async e=>(w=1,await(await T.startAutoLoad(e)).startAutoSave()),stopSync:()=>(w=0,T.stopAutoLoad().stopAutoSave()),destroy:()=>T.stopSync(),getSynchronizerStats:()=>({sends:S,receives:v}),...u},1);return n(((t,s,a,n)=>{const r=w||T.isAutoLoading();v++,0==a?l(E(p,s),(([e,s])=>c(e)||e==t?s(n,t):0)):2==a&&r?L(t,n,s??void 0).then((e=>{y?.(void 0,e)})).catch(d):3==a&&r?y?.(void 0,n):l(1==a&&(w||T.isAutoSaving())?e.getMergeableContentHashes():4==a?e.getMergeableTableDiff(n):5==a?e.getMergeableRowDiff(n):6==a?e.getMergeableCellDiff(n):7==a?e.getMergeableValueDiff(n):void 0,(e=>{b(t,s,0,e)}))})),T})(e.getStore(),((e,t,s,a)=>this.#t(Y,P(e,t,s,a))),(e=>this.#e=t=>((e,t)=>x(e,((e,s)=>{return t(e,...(a=s,T(a,((e,t)=>""===t?void 0:t))));var a})))(t,e)),0,1);await e.load(),await e.startAutoSave(),r(s.startSync)}))))}fetch(e){const s=Z(e);return l(_(e),(e=>{const[a,n]=(r=new WebSocketPair,p.values(r));var r,o;return o=this.#s(),0==d(o)&&this.onPathId(s,1),this.ctx.acceptWebSocket(n,[e,s]),this.onClientId(s,e,1),n.send(P(Y,null,1,t)),ee(101,a)}),te)}webSocketMessage(e,t){l(this.ctx.getTags(e)[0],(s=>this.#t(s,t.toString(),e)))}webSocketClose(e){const[t,s]=this.ctx.getTags(e);this.onClientId(s,t,-1),1==d(this.#s())&&this.onPathId(s,-1)}#t(e,s,a){x(s.toString(),((s,n)=>{const r=I(e,n);this.onMessage(e,s,n),s==t?(e!=Y&&this.#e?.(r),y(this.#s(),(e=>{e!=a&&e.send(r)}))):s==Y?this.#e?.(r):s!=e&&this.#s(s)[0]?.send(r)}))}#s(e){return this.ctx.getWebSockets(e)}createPersister(){}getPathId(){return this.ctx.getTags(this.#s()[0])?.[1]}getClientIds(){return w(this.#s(),(e=>this.ctx.getTags(e)[0]))}onPathId(e,t){}onClientId(e,t,s){}onMessage(e,t,s){}}const ae=e=>(t,s)=>_(t)?s[e].get(s[e].idFromName(Z(t))).fetch(t):te();export{se as WsServerDurableObject,ae as getWsServerDurableObjectFetch};
1
+ import{DurableObject as e}from"cloudflare:workers";const t="",a=(e,t="",a)=>e.split(t,a),s=Promise,n=globalThis,r=(e,t=0)=>setTimeout(e,1e3*t),o=Math,i=o.floor,c=e=>null==e,l=(e,t,a)=>c(e)?a?.():t(e),g=e=>Array.isArray(e),d=(e,t,a)=>e.slice(t,a),u=e=>e.length,h=e=>{throw Error(e)},y=async(e,t,a)=>{try{return await e()}catch(e){t?.(e)}},w=(e,t)=>e.forEach(t),S=(e,t)=>e.map(t),p=(e,...t)=>e.push(...t),v=e=>e.shift(),C=Object,b=e=>C.getPrototypeOf(e),f=C.entries,M=C.keys,A=C.freeze,m=(e,t)=>w(f(e),(([e,a])=>t(a,e))),L=e=>(e=>!c(e)&&l(b(e),(e=>e==C.prototype||c(b(e))),(()=>!0)))(e)&&0==(e=>u(M(e)))(e),k=(e,t,a)=>(((e,t)=>t in e)(e,t)||(e[t]=a()),e[t]),T=JSON.stringify,x=JSON.parse,P=(e,t)=>{const a=e.indexOf("\n");-1!==a&&t(d(e,0,a),d(e,a+1))},I=(e,...a)=>H(e??t,T(a,((e,t)=>void 0===t?"":t))),H=(e,t)=>e+"\n"+t,D=e=>c(e)||0==(e=>e?.size??0)(e),O=(e,t)=>e?.forEach(t),R=(e,t)=>e?.delete(t),E=e=>new Map(e),N=(e,t)=>e?.get(t),W=(e,t,a)=>c(a)?(R(e,t),e):e?.set(t,a),z=(e,t,a,s)=>{var n,r;return n=e,r=t,n?.has(r)?s?.(N(e,t)):W(e,t,a()),N(e,t)},U=(e,t,a,s,n=0)=>l((a?z:N)(e,t[n],n>u(t)-2?a:E),(r=>{if(n>u(t)-2)return s?.(r)&&W(e,t[n]),r;const o=U(r,t,a,s,n+1);return D(r)&&W(e,t[n]),o})),V=a("-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"),F=n.crypto?e=>n.crypto.getRandomValues(e):e=>S(e,(()=>i(256*o.random()))),J=(e=16)=>{return t=(e,t)=>e+V[63&t],F(new Uint8Array(e)).reduce(t,"");var t},$=(e,t)=>t?[e,t]:[e],j=(e,t)=>((e??"")>(t??"")?e:t)??"",q=(e="")=>$(((e=[])=>C.fromEntries(e))(),e),B=/^\d+$/,G=e=>new Set(g(e)||c(e)?e:[e]),K=E(),Q=E(),X=(e,a,s,n,r,o,i,d={},S=0,C=[])=>{let b,f,M,m=0,k=0,T=0;z(K,C,(()=>0)),z(Q,C,(()=>[]));const x=E(),[P,I,H,V,F]=((e=1,t,a)=>1!=e&&t.isMergeable()?[1,t.getMergeableContent,()=>t.getTransactionMergeableChanges(!a),([[e],[t]])=>!L(e)||!L(t),t.setDefaultContent]:2!=e?[0,t.getContent,t.getTransactionChanges,([e,t])=>!L(e)||!L(t),t.setContent]:h("Store type not supported by this Persister"))(i,e,S),[J,$,j]=(()=>{let e;const[a,s]=(()=>{const e=[];let a=0;return[s=>(s?v(e):null)??t+a++,t=>{B.test(t)&&u(e)<1e3&&p(e,t)}]})(),n=E();return[(s,r,o,i=[],c=()=>[])=>{e??=ae;const l=a(1);var g,d;return W(n,l,[s,r,o,i,c]),g=U(r,o??[t],G),d=l,g?.add(d),l},(a,s,...r)=>w(((e,a=[t])=>{const s=[],n=(e,t)=>t==u(a)?p(s,e):null===a[t]?O(e,(e=>n(e,t+1))):w([a[t],null],(a=>n(N(e,a),t+1)));return n(e,0),s})(a,s),(t=>O(t,(t=>N(n,t)[0](e,...s??[],...r))))),e=>l(N(n,e),(([,a,r])=>(U(a,r??[t],void 0,(t=>(R(t,e),D(t)?1:0))),W(n,e),s(e),r))),t=>l(N(n,t),(([t,,a=[],s,n])=>{const r=(...o)=>{const i=u(o);i==u(a)?t(e,...o,...n(o)):c(a[i])?w(s[i]?.(...o)??[],(e=>r(...o,e))):r(...o,a[i])};r()}))]})(),q=e=>{e!=m&&(m=e,$(x,void 0,m))},X=t=>{(P&&g(t?.[0])?1===t?.[2]?e.applyMergeableChanges:e.setMergeableContent:1===t?.[2]?e.applyChanges:e.setContent)(t)},Y=async e=>(2!=m&&(q(1),k++,await te((async()=>{await y((async()=>{const t=await a();g(t)?X(t):e?F(e):h("Content is not an array: "+t)}),(()=>{e&&F(e)})),q(0)}))),ae),Z=async()=>(f&&(await y((()=>r(f)),o),f=void 0),ae),_=async e=>(1!=m&&(q(2),T++,await te((async()=>{await y((()=>s(I,e)),o),q(0)}))),ae),ee=async()=>(M&&(e.delListener(M),M=void 0),ae),te=async(...e)=>(p(N(Q,C),...e),await(async()=>{if(!N(K,C)){for(W(K,C,1);!c(b=v(N(Q,C)));)await y(b,o);W(K,C,0)}})(),ae),ae={load:Y,startAutoLoad:async e=>(Z(),await Y(e),await y((async()=>f=await n((async(e,t)=>{t||e?2!=m&&(q(1),k++,X(t??e),q(0)):await Y()}))),o),ae),stopAutoLoad:Z,isAutoLoading:()=>!c(f),save:_,startAutoSave:async()=>(ee(),await _(),M=e.addDidFinishTransactionListener((()=>{const e=H();V(e)&&_(e)})),ae),stopAutoSave:ee,isAutoSaving:()=>!c(M),getStatus:()=>m,addStatusListener:e=>J(e,x),delListener:t=>(j(t),e),schedule:te,getStore:()=>e,destroy:async()=>(N(Q,C).splice(0,void 0),await ae.stopAutoLoad(),await ae.stopAutoSave()),getStats:()=>({loads:k,saves:T}),...d};return A(ae)},Y=/\/([^?]*)/,Z="S",_=e=>{return(a=new URL(e.url).pathname,s=Y,a?.match(s))?.[1]??t;var a,s},ee=e=>"websocket"==e.headers.get("upgrade")?.toLowerCase()?e.headers.get("sec-websocket-key"):null,te=(e,t=null,a=null)=>new Response(a,{status:e,webSocket:t}),ae=()=>te(426,null,"Upgrade required");class se extends e{#e;constructor(e,a){super(e,a),this.ctx.blockConcurrencyWhile((async()=>await l(await this.createPersister(),(async e=>{const a=((e,a,n,o,i,g,d,u,h={})=>{let w,S=0,p=0,v=0;const C=E(),b=()=>J(11),f=(e,t,s,n)=>{p++,a(e,t,s,n)},M=async(e,t,a,n)=>new s(((s,o)=>{const c=n+"."+J(4),l=r((()=>{R(C,c),o(`No response from ${e??"anyone"} to ${c}, `+t)}),i);W(C,c,[e,(e,t)=>{clearTimeout(l),R(C,c),s([e,t,n])}]),f(e,c,t,a)})),A=(e,[t,a])=>{m(t,(([t,a],s)=>{const n=k(e[0],s,q);m(t,(([e,t],a)=>{const s=k(n[0],a,q);m(e,(([e,t],a)=>s[0][a]=$(e,t))),s[1]=j(s[1],t)})),n[1]=j(n[1],a)})),e[1]=j(e[1],a)},T=(a=null,s,n=b())=>y((async()=>{c(s)&&([s,a,n]=await M(null,1,t,n));const[r,o]=s,[i,l]=e.getMergeableContentHashes();let g=q();if(i!=r){const[t,s]=(await M(a,4,e.getMergeableTableHashes(),n))[0];if(g=t,!L(s)){const[t,r]=(await M(a,5,e.getMergeableRowHashes(s),n))[0];if(A(g,t),!L(r)){const t=(await M(a,6,e.getMergeableCellHashes(r),n))[0];A(g,t)}}}return[g,l==o?q():(await M(a,7,e.getMergeableValueHashes(),n))[0],1]}),u),x=X(e,(async()=>{const e=await T();return!e||L(e[0][0])&&L(e[1][0])?void 0:e}),(async(t,a)=>a?f(null,b(),3,a):f(null,b(),2,e.getMergeableContentHashes())),(e=>w=e),(()=>w=void 0),u,2,{startSync:async e=>(S=1,await(await x.startAutoLoad(e)).startAutoSave()),stopSync:async()=>(S=0,await x.stopAutoLoad(),await x.stopAutoSave(),x),destroy:async()=>(await x.stopSync(),x),getSynchronizerStats:()=>({sends:p,receives:v}),...h},1);return n(((t,a,s,n)=>{const r=S||x.isAutoLoading();v++,0==s?l(N(C,a),(([e,a])=>c(e)||e==t?a(n,t):0)):2==s&&r?T(t,n,a??void 0).then((e=>{w?.(void 0,e)})).catch(u):3==s&&r?w?.(void 0,n):l(1==s&&(S||x.isAutoSaving())?e.getMergeableContentHashes():4==s?e.getMergeableTableDiff(n):5==s?e.getMergeableRowDiff(n):6==s?e.getMergeableCellDiff(n):7==s?e.getMergeableValueDiff(n):void 0,(e=>{f(t,a,0,e)}))})),x})(e.getStore(),((e,t,a,s)=>this.#t(Z,I(e,t,a,s))),(e=>this.#e=t=>((e,t)=>P(e,((e,a)=>{return t(e,...(s=a,x(s,((e,t)=>""===t?void 0:t))));var s})))(t,e)),0,1);await e.load(),await e.startAutoSave(),r(a.startSync)}))))}fetch(e){const a=_(e);return l(ee(e),(e=>{const[s,n]=(r=new WebSocketPair,C.values(r));var r,o;return o=this.#a(),0==u(o)&&this.onPathId(a,1),this.ctx.acceptWebSocket(n,[e,a]),this.onClientId(a,e,1),n.send(I(Z,null,1,t)),te(101,s)}),ae)}webSocketMessage(e,t){l(this.ctx.getTags(e)[0],(a=>this.#t(a,t.toString(),e)))}webSocketClose(e){const[t,a]=this.ctx.getTags(e);this.onClientId(a,t,-1),1==u(this.#a())&&this.onPathId(a,-1)}#t(e,a,s){P(a.toString(),((a,n)=>{const r=H(e,n);this.onMessage(e,a,n),a==t?(e!=Z&&this.#e?.(r),w(this.#a(),(e=>{e!=s&&e.send(r)}))):a==Z?this.#e?.(r):a!=e&&this.#a(a)[0]?.send(r)}))}#a(e){return this.ctx.getWebSockets(e)}createPersister(){}getPathId(){return this.ctx.getTags(this.#a()[0])?.[1]}getClientIds(){return S(this.#a(),(e=>this.ctx.getTags(e)[0]))}onPathId(e,t){}onClientId(e,t,a){}onMessage(e,t,a){}}const ne=e=>(t,a)=>ee(t)?a[e].get(a[e].idFromName(_(t))).fetch(t):ae();export{se as WsServerDurableObject,ne as getWsServerDurableObjectFetch};
@@ -1 +1 @@
1
- const e=e=>null==e,n=(n,t,s)=>e(n)?s?.():t(n),t=(e,n,t)=>e.slice(n,t),s=(e,n)=>e?.delete(n),r=Object.freeze,c=e=>new Map(e),o=(e,n)=>e?.get(n),a=(n,t,r)=>e(r)?(s(n,t),n):n?.set(t,r),l=/\/([^?]*)/,d=d=>{const u=c();return d.on("connection",((r,d)=>{return n((i=d.url,f=l,i?.match(f)),(([,l])=>n(d.headers["sec-websocket-key"],(async n=>{const d=(g=c,h=i=u,v=f=l,h?.has(v)||a(i,f,g()),o(i,f));var i,f,g,h,v;a(d,n,r),r.on("message",(e=>(e=>{const s=e.indexOf("\n");-1!==s&&((e,t)=>{const s=((e,n)=>e+"\n"+n)(n,t);""===e?(e=>{((e,n)=>{e?.forEach(n)})(e,((e,t)=>{return r=e,t!==n?r.send(s):0;var r}))})(d):o(d,e)?.send(s)})(t(e,0,s),t(e,s+1))})(e.toString("utf8")))),r.on("close",(()=>{s(d,n),(n=>e(n)||0==(e=>e?.size??0)(n))(d)&&s(u,l)}))}))));var i,f})),r({getWebSocketServer:()=>d,destroy:()=>{u.clear(),d.close()}})};export{d as createWsServerSimple};
1
+ const e=e=>null==e,n=(n,t,s)=>e(n)?s?.():t(n),t=(e,n,t)=>e.slice(n,t),s=(e,n)=>e?.delete(n),c=Object.freeze,r=e=>new Map(e),o=(e,n)=>e?.get(n),a=(n,t,c)=>e(c)?(s(n,t),n):n?.set(t,c),l=/\/([^?]*)/,d=d=>{const u=r();return d.on("connection",((c,d)=>{return n((i=d.url,f=l,i?.match(f)),(([,l])=>n(d.headers["sec-websocket-key"],(async n=>{const d=(g=r,h=i=u,v=f=l,h?.has(v)||a(i,f,g()),o(i,f));var i,f,g,h,v;a(d,n,c),c.on("message",(e=>(e=>{const s=e.indexOf("\n");-1!==s&&((e,t)=>{const s=((e,n)=>e+"\n"+n)(n,t);""===e?(e=>{((e,n)=>{e?.forEach(n)})(e,((e,t)=>{return c=e,t!==n?c.send(s):0;var c}))})(d):o(d,e)?.send(s)})(t(e,0,s),t(e,s+1))})(e.toString("utf8")))),c.on("close",(()=>{s(d,n),(n=>e(n)||0==(e=>e?.size??0)(n))(d)&&s(u,l)}))}))));var i,f})),c({getWebSocketServer:()=>d,destroy:async()=>{u.clear(),d.close()}})};export{d as createWsServerSimple};
@@ -1 +1 @@
1
- const e=e=>null==e,n=(n,t,s)=>e(n)?s?.():t(n),t=(e,n,t)=>e.slice(n,t),s=(e,n)=>e?.delete(n),r=Object.freeze,c=e=>new Map(e),o=(e,n)=>e?.get(n),a=(n,t,r)=>e(r)?(s(n,t),n):n?.set(t,r),l=/\/([^?]*)/,d=d=>{const u=c();return d.on("connection",((r,d)=>{return n((i=d.url,f=l,i?.match(f)),(([,l])=>n(d.headers["sec-websocket-key"],(async n=>{const d=(g=c,h=i=u,v=f=l,h?.has(v)||a(i,f,g()),o(i,f));var i,f,g,h,v;a(d,n,r),r.on("message",(e=>(e=>{const s=e.indexOf("\n");-1!==s&&((e,t)=>{const s=((e,n)=>e+"\n"+n)(n,t);""===e?(e=>{((e,n)=>{e?.forEach(n)})(e,((e,t)=>{return r=e,t!==n?r.send(s):0;var r}))})(d):o(d,e)?.send(s)})(t(e,0,s),t(e,s+1))})(e.toString("utf8")))),r.on("close",(()=>{s(d,n),(n=>e(n)||0==(e=>e?.size??0)(n))(d)&&s(u,l)}))}))));var i,f})),r({getWebSocketServer:()=>d,destroy:()=>{u.clear(),d.close()}})};export{d as createWsServerSimple};
1
+ const e=e=>null==e,n=(n,t,s)=>e(n)?s?.():t(n),t=(e,n,t)=>e.slice(n,t),s=(e,n)=>e?.delete(n),c=Object.freeze,r=e=>new Map(e),o=(e,n)=>e?.get(n),a=(n,t,c)=>e(c)?(s(n,t),n):n?.set(t,c),l=/\/([^?]*)/,d=d=>{const u=r();return d.on("connection",((c,d)=>{return n((i=d.url,f=l,i?.match(f)),(([,l])=>n(d.headers["sec-websocket-key"],(async n=>{const d=(g=r,h=i=u,v=f=l,h?.has(v)||a(i,f,g()),o(i,f));var i,f,g,h,v;a(d,n,c),c.on("message",(e=>(e=>{const s=e.indexOf("\n");-1!==s&&((e,t)=>{const s=((e,n)=>e+"\n"+n)(n,t);""===e?(e=>{((e,n)=>{e?.forEach(n)})(e,((e,t)=>{return c=e,t!==n?c.send(s):0;var c}))})(d):o(d,e)?.send(s)})(t(e,0,s),t(e,s+1))})(e.toString("utf8")))),c.on("close",(()=>{s(d,n),(n=>e(n)||0==(e=>e?.size??0)(n))(d)&&s(u,l)}))}))));var i,f})),c({getWebSocketServer:()=>d,destroy:async()=>{u.clear(),d.close()}})};export{d as createWsServerSimple};
@@ -1 +1 @@
1
- const t=(t,e="",a)=>t.split(e,a),e=Promise,a=globalThis,n=Math,s=n.floor,o=t=>null==t,r=(t,e,a)=>o(t)?a?.():e(t),i=t=>Array.isArray(t),l=t=>t.length,c=t=>{throw Error(t)},g=(t,e)=>t.forEach(e),u=(t,...e)=>t.push(...e),y=t=>t.shift(),d=t=>o(t)||0==(t=>t?.size??0)(t),f=(t,e)=>t?.forEach(e),h=(t,e)=>t?.delete(e),p=Object,w=t=>p.getPrototypeOf(t),v=p.entries,b=p.keys,C=p.freeze,M=(t,e)=>g(v(t),(([t,a])=>e(a,t))),S=t=>(t=>!o(t)&&r(w(t),(t=>t==p.prototype||o(w(t))),(()=>!0)))(t)&&0==(t=>l(b(t)))(t),A=(t,e,a)=>(((t,e)=>e in t)(t,e)||(t[e]=a()),t[e]),D=t=>new Map(t),L=(t,e)=>t?.get(e),H=(t,e,a)=>o(a)?(h(t,e),t):t?.set(e,a),T=(t,e,a,n)=>{var s,o;return s=t,o=e,s?.has(o)?n?.(L(t,e)):H(t,e,a()),L(t,e)},m=(t,e,a,n,s=0)=>r((a?T:L)(t,e[s],s>l(e)-2?a:D),(o=>{if(s>l(e)-2)return n?.(o)&&H(t,e[s]),o;const r=m(o,e,a,n,s+1);return d(o)&&H(t,e[s]),r})),G=t("-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"),R=a.crypto?t=>a.crypto.getRandomValues(t):t=>(t=>t.map((()=>s(256*n.random()))))(t),E=(t=16)=>{return e=(t,e)=>t+G[63&e],R(new Uint8Array(t)).reduce(e,"");var e},V=(t,e)=>e?[t,e]:[t],z=(t,e)=>((t??"")>(e??"")?t:e)??"",P=(t="")=>V(((t=[])=>p.fromEntries(t))(),t),O=/^\d+$/,$=t=>new Set(i(t)||o(t)?t:[t]),j=D(),k=D(),x=(t,e,a,n,s,p,w,v={},b=0,M=[])=>{let A,G,R,E=0,V=0,z=0;T(j,M,(()=>0)),T(k,M,(()=>[]));const P=D(),[x,F,N,U,q]=((t=1,e,a)=>1!=t&&e.isMergeable()?[1,e.getMergeableContent,()=>e.getTransactionMergeableChanges(!a),([[t],[e]])=>!S(t)||!S(e),e.setDefaultContent]:2!=t?[0,e.getContent,e.getTransactionChanges,([t,e])=>!S(t)||!S(e),e.setContent]:c("Store type not supported by this Persister"))(w,t,b),[B,I,J]=(()=>{let t;const[e,a]=(()=>{const t=[];let e=0;return[a=>(a?y(t):null)??""+e++,e=>{O.test(e)&&l(t)<1e3&&u(t,e)}]})(),n=D();return[(a,s,o,r=[],i=()=>[])=>{t??=tt;const l=e(1);var c,g;return H(n,l,[a,s,o,r,i]),c=m(s,o??[""],$),g=l,c?.add(g),l},(e,a,...s)=>g(((t,e=[""])=>{const a=[],n=(t,s)=>s==l(e)?u(a,t):null===e[s]?f(t,(t=>n(t,s+1))):g([e[s],null],(e=>n(L(t,e),s+1)));return n(t,0),a})(e,a),(e=>f(e,(e=>L(n,e)[0](t,...a??[],...s))))),t=>r(L(n,t),(([,e,s])=>(m(e,s??[""],void 0,(e=>(h(e,t),d(e)?1:0))),H(n,t),a(t),s))),e=>r(L(n,e),(([e,,a=[],n,s])=>{const r=(...i)=>{const c=l(i);c==l(a)?e(t,...i,...s(i)):o(a[c])?g(n[c]?.(...i)??[],(t=>r(...i,t))):r(...i,a[c])};r()}))]})(),K=t=>{t!=E&&(E=t,I(P,void 0,E))},Q=e=>{(x&&i(e?.[0])?1===e?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===e?.[2]?t.applyChanges:t.setContent)(e)},W=async t=>(2!=E&&(K(1),V++,await _((async()=>{try{const a=await e();i(a)?Q(a):t?q(t):c("Content is not an array: "+a)}catch(e){p?.(e),t&&q(t)}K(0)}))),tt),X=()=>(G&&(s(G),G=void 0),tt),Y=async t=>(1!=E&&(K(2),z++,await _((async()=>{try{await a(F,t)}catch(t){p?.(t)}K(0)}))),tt),Z=()=>(R&&(t.delListener(R),R=void 0),tt),_=async(...t)=>(u(L(k,M),...t),await(async()=>{if(!L(j,M)){for(H(j,M,1);!o(A=y(L(k,M)));)try{await A()}catch(t){p?.(t)}H(j,M,0)}})(),tt),tt={load:W,startAutoLoad:async t=>{X(),await W(t);try{G=await n((async(t,e)=>{e||t?2!=E&&(K(1),V++,Q(e??t),K(0)):await W()}))}catch(t){p?.(t)}return tt},stopAutoLoad:X,isAutoLoading:()=>!o(G),save:Y,startAutoSave:async()=>(Z(),await Y(),R=t.addDidFinishTransactionListener((()=>{const t=N();U(t)&&Y(t)})),tt),stopAutoSave:Z,isAutoSaving:()=>!o(R),getStatus:()=>E,addStatusListener:t=>B(t,P),delListener:e=>(J(e),t),schedule:_,getStore:()=>t,destroy:()=>(L(k,M).splice(0,void 0),X().stopAutoSave()),getStats:()=>({loads:V,saves:z}),...v};return C(tt)},F={Response:0,GetContentHashes:1,ContentHashes:2,ContentDiff:3,GetTableDiff:4,GetRowDiff:5,GetCellDiff:6,GetValueDiff:7},N=(t,a,n,s,i,l,c,g,u={})=>{let y,d=0,f=0,p=0;const w=D(),v=()=>E(11),b=(t,e,n,s)=>{f++,l?.(t,e,n,s),a(t,e,n,s)},C=async(t,a,n,s)=>new e(((e,o)=>{const r=s+"."+E(4),l=((t,e=0)=>setTimeout(t,1e3*e))((()=>{h(w,r),o(`No response from ${t??"anyone"} to ${r}, `+a)}),i);H(w,r,[t,(t,a)=>{clearTimeout(l),h(w,r),e([t,a,s])}]),b(t,r,a,n)})),T=(t,[e,a])=>{M(e,(([e,a],n)=>{const s=A(t[0],n,P);M(e,(([t,e],a)=>{const n=A(s[0],a,P);M(t,(([t,e],a)=>n[0][a]=V(t,e))),n[1]=z(n[1],e)})),s[1]=z(s[1],a)})),t[1]=z(t[1],a)},m=async(e=null,a,n=v())=>{try{o(a)&&([a,e,n]=await C(null,1,"",n));const[s,r]=a,[i,l]=t.getMergeableContentHashes();let c=P();if(i!=s){const[a,s]=(await C(e,4,t.getMergeableTableHashes(),n))[0];if(c=a,!S(s)){const[a,o]=(await C(e,5,t.getMergeableRowHashes(s),n))[0];if(T(c,a),!S(o)){const a=(await C(e,6,t.getMergeableCellHashes(o),n))[0];T(c,a)}}}return[c,l==r?P():(await C(e,7,t.getMergeableValueHashes(),n))[0],1]}catch(t){g?.(t)}},G=x(t,(async()=>{const t=await m();return!t||S(t[0][0])&&S(t[1][0])?void 0:t}),(async(e,a)=>a?b(null,v(),3,a):b(null,v(),2,t.getMergeableContentHashes())),(t=>y=t),(()=>y=void 0),g,2,{startSync:async t=>(d=1,await(await G.startAutoLoad(t)).startAutoSave()),stopSync:()=>(d=0,G.stopAutoLoad().stopAutoSave()),destroy:()=>(s(),G.stopSync()),getSynchronizerStats:()=>({sends:f,receives:p}),...u},1);return n(((e,a,n,s)=>{const i=d||G.isAutoLoading();p++,c?.(e,a,n,s),0==n?r(L(w,a),(([t,a])=>o(t)||t==e?a(s,e):0)):2==n&&i?m(e,s,a??void 0).then((t=>{y?.(void 0,t)})).catch(g):3==n&&i?y?.(void 0,s):r(1==n&&(d||G.isAutoSaving())?t.getMergeableContentHashes():4==n?t.getMergeableTableDiff(s):5==n?t.getMergeableRowDiff(s):6==n?t.getMergeableCellDiff(s):7==n?t.getMergeableValueDiff(s):void 0,(t=>{b(e,a,0,t)}))})),G};export{F as Message,N as createCustomSynchronizer};
1
+ const t=(t,e="",a)=>t.split(e,a),e=Promise,a=globalThis,n=Math,s=n.floor,o=t=>null==t,r=(t,e,a)=>o(t)?a?.():e(t),i=t=>Array.isArray(t),l=t=>t.length,c=t=>{throw Error(t)},g=async(t,e,a)=>{try{return await t()}catch(t){e?.(t)}},u=(t,e)=>t.forEach(e),y=(t,...e)=>t.push(...e),d=t=>t.shift(),w=t=>o(t)||0==(t=>t?.size??0)(t),f=(t,e)=>t?.forEach(e),h=(t,e)=>t?.delete(e),p=Object,v=t=>p.getPrototypeOf(t),b=p.entries,C=p.keys,M=p.freeze,S=(t,e)=>u(b(t),(([t,a])=>e(a,t))),A=t=>(t=>!o(t)&&r(v(t),(t=>t==p.prototype||o(v(t))),(()=>!0)))(t)&&0==(t=>l(C(t)))(t),D=(t,e,a)=>(((t,e)=>e in t)(t,e)||(t[e]=a()),t[e]),L=t=>new Map(t),H=(t,e)=>t?.get(e),T=(t,e,a)=>o(a)?(h(t,e),t):t?.set(e,a),m=(t,e,a,n)=>{var s,o;return s=t,o=e,s?.has(o)?n?.(H(t,e)):T(t,e,a()),H(t,e)},G=(t,e,a,n,s=0)=>r((a?m:H)(t,e[s],s>l(e)-2?a:L),(o=>{if(s>l(e)-2)return n?.(o)&&T(t,e[s]),o;const r=G(o,e,a,n,s+1);return w(o)&&T(t,e[s]),r})),R=t("-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"),E=a.crypto?t=>a.crypto.getRandomValues(t):t=>(t=>t.map((()=>s(256*n.random()))))(t),V=(t=16)=>{return e=(t,e)=>t+R[63&e],E(new Uint8Array(t)).reduce(e,"");var e},z=(t,e)=>e?[t,e]:[t],P=(t,e)=>((t??"")>(e??"")?t:e)??"",O=(t="")=>z(((t=[])=>p.fromEntries(t))(),t),$=/^\d+$/,j=t=>new Set(i(t)||o(t)?t:[t]),k=L(),x=L(),F=(t,e,a,n,s,p,v,b={},C=0,S=[])=>{let D,R,E,V=0,z=0,P=0;m(k,S,(()=>0)),m(x,S,(()=>[]));const O=L(),[F,N,U,q,B]=((t=1,e,a)=>1!=t&&e.isMergeable()?[1,e.getMergeableContent,()=>e.getTransactionMergeableChanges(!a),([[t],[e]])=>!A(t)||!A(e),e.setDefaultContent]:2!=t?[0,e.getContent,e.getTransactionChanges,([t,e])=>!A(t)||!A(e),e.setContent]:c("Store type not supported by this Persister"))(v,t,C),[I,J,K]=(()=>{let t;const[e,a]=(()=>{const t=[];let e=0;return[a=>(a?d(t):null)??""+e++,e=>{$.test(e)&&l(t)<1e3&&y(t,e)}]})(),n=L();return[(a,s,o,r=[],i=()=>[])=>{t??=et;const l=e(1);var c,g;return T(n,l,[a,s,o,r,i]),c=G(s,o??[""],j),g=l,c?.add(g),l},(e,a,...s)=>u(((t,e=[""])=>{const a=[],n=(t,s)=>s==l(e)?y(a,t):null===e[s]?f(t,(t=>n(t,s+1))):u([e[s],null],(e=>n(H(t,e),s+1)));return n(t,0),a})(e,a),(e=>f(e,(e=>H(n,e)[0](t,...a??[],...s))))),t=>r(H(n,t),(([,e,s])=>(G(e,s??[""],void 0,(e=>(h(e,t),w(e)?1:0))),T(n,t),a(t),s))),e=>r(H(n,e),(([e,,a=[],n,s])=>{const r=(...i)=>{const c=l(i);c==l(a)?e(t,...i,...s(i)):o(a[c])?u(n[c]?.(...i)??[],(t=>r(...i,t))):r(...i,a[c])};r()}))]})(),Q=t=>{t!=V&&(V=t,J(O,void 0,V))},W=e=>{(F&&i(e?.[0])?1===e?.[2]?t.applyMergeableChanges:t.setMergeableContent:1===e?.[2]?t.applyChanges:t.setContent)(e)},X=async t=>(2!=V&&(Q(1),z++,await tt((async()=>{await g((async()=>{const a=await e();i(a)?W(a):t?B(t):c("Content is not an array: "+a)}),(()=>{t&&B(t)})),Q(0)}))),et),Y=async()=>(R&&(await g((()=>s(R)),p),R=void 0),et),Z=async t=>(1!=V&&(Q(2),P++,await tt((async()=>{await g((()=>a(N,t)),p),Q(0)}))),et),_=async()=>(E&&(t.delListener(E),E=void 0),et),tt=async(...t)=>(y(H(x,S),...t),await(async()=>{if(!H(k,S)){for(T(k,S,1);!o(D=d(H(x,S)));)await g(D,p);T(k,S,0)}})(),et),et={load:X,startAutoLoad:async t=>(Y(),await X(t),await g((async()=>R=await n((async(t,e)=>{e||t?2!=V&&(Q(1),z++,W(e??t),Q(0)):await X()}))),p),et),stopAutoLoad:Y,isAutoLoading:()=>!o(R),save:Z,startAutoSave:async()=>(_(),await Z(),E=t.addDidFinishTransactionListener((()=>{const t=U();q(t)&&Z(t)})),et),stopAutoSave:_,isAutoSaving:()=>!o(E),getStatus:()=>V,addStatusListener:t=>I(t,O),delListener:e=>(K(e),t),schedule:tt,getStore:()=>t,destroy:async()=>(H(x,S).splice(0,void 0),await et.stopAutoLoad(),await et.stopAutoSave()),getStats:()=>({loads:z,saves:P}),...b};return M(et)},N={Response:0,GetContentHashes:1,ContentHashes:2,ContentDiff:3,GetTableDiff:4,GetRowDiff:5,GetCellDiff:6,GetValueDiff:7},U=(t,a,n,s,i,l,c,u,y={})=>{let d,w=0,f=0,p=0;const v=L(),b=()=>V(11),C=(t,e,n,s)=>{f++,l?.(t,e,n,s),a(t,e,n,s)},M=async(t,a,n,s)=>new e(((e,o)=>{const r=s+"."+V(4),l=((t,e=0)=>setTimeout(t,1e3*e))((()=>{h(v,r),o(`No response from ${t??"anyone"} to ${r}, `+a)}),i);T(v,r,[t,(t,a)=>{clearTimeout(l),h(v,r),e([t,a,s])}]),C(t,r,a,n)})),m=(t,[e,a])=>{S(e,(([e,a],n)=>{const s=D(t[0],n,O);S(e,(([t,e],a)=>{const n=D(s[0],a,O);S(t,(([t,e],a)=>n[0][a]=z(t,e))),n[1]=P(n[1],e)})),s[1]=P(s[1],a)})),t[1]=P(t[1],a)},G=(e=null,a,n=b())=>g((async()=>{o(a)&&([a,e,n]=await M(null,1,"",n));const[s,r]=a,[i,l]=t.getMergeableContentHashes();let c=O();if(i!=s){const[a,s]=(await M(e,4,t.getMergeableTableHashes(),n))[0];if(c=a,!A(s)){const[a,o]=(await M(e,5,t.getMergeableRowHashes(s),n))[0];if(m(c,a),!A(o)){const a=(await M(e,6,t.getMergeableCellHashes(o),n))[0];m(c,a)}}}return[c,l==r?O():(await M(e,7,t.getMergeableValueHashes(),n))[0],1]}),u),R=F(t,(async()=>{const t=await G();return!t||A(t[0][0])&&A(t[1][0])?void 0:t}),(async(e,a)=>a?C(null,b(),3,a):C(null,b(),2,t.getMergeableContentHashes())),(t=>d=t),(()=>d=void 0),u,2,{startSync:async t=>(w=1,await(await R.startAutoLoad(t)).startAutoSave()),stopSync:async()=>(w=0,await R.stopAutoLoad(),await R.stopAutoSave(),R),destroy:async()=>(await R.stopSync(),s(),R),getSynchronizerStats:()=>({sends:f,receives:p}),...y},1);return n(((e,a,n,s)=>{const i=w||R.isAutoLoading();p++,c?.(e,a,n,s),0==n?r(H(v,a),(([t,a])=>o(t)||t==e?a(s,e):0)):2==n&&i?G(e,s,a??void 0).then((t=>{d?.(void 0,t)})).catch(u):3==n&&i?d?.(void 0,s):r(1==n&&(w||R.isAutoSaving())?t.getMergeableContentHashes():4==n?t.getMergeableTableDiff(s):5==n?t.getMergeableRowDiff(s):6==n?t.getMergeableCellDiff(s):7==n?t.getMergeableValueDiff(s):void 0,(t=>{C(e,a,0,t)}))})),R};export{N as Message,U as createCustomSynchronizer};