tinybase 7.3.3 → 7.3.4

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