tinybase 7.0.0-beta.2 → 7.0.0

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