on-zero 0.7.2 → 0.7.3-1784533014336

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 (355) hide show
  1. package/dist/cjs/helpers/createMutators.cjs +4 -3
  2. package/dist/cjs/helpers/createMutators.native.js +6 -3
  3. package/dist/cjs/helpers/createMutators.native.js.map +1 -1
  4. package/dist/cjs/index.cjs +0 -1
  5. package/dist/cjs/index.native.js +0 -1
  6. package/dist/cjs/index.native.js.map +1 -1
  7. package/dist/cjs/orez.cjs +231 -0
  8. package/dist/cjs/orez.native.js +324 -0
  9. package/dist/cjs/orez.native.js.map +1 -0
  10. package/dist/cjs/orez.test.cjs +268 -0
  11. package/dist/cjs/orez.test.native.js +288 -0
  12. package/dist/cjs/orez.test.native.js.map +1 -0
  13. package/dist/cjs/run.cjs +1 -1
  14. package/dist/cjs/run.native.js +1 -1
  15. package/dist/cjs/state.cjs +1 -1
  16. package/dist/cjs/state.native.js +1 -1
  17. package/dist/cjs/zeroRunner.cjs +1 -1
  18. package/dist/cjs/zeroRunner.native.js +1 -1
  19. package/dist/esm/cli.native.js +1 -1
  20. package/dist/esm/cli.native.js.map +1 -1
  21. package/dist/esm/combineZeroClients.native.js +2 -2
  22. package/dist/esm/combineZeroClients.native.js.map +1 -1
  23. package/dist/esm/createPermissions.native.js +4 -4
  24. package/dist/esm/createPermissions.native.js.map +1 -1
  25. package/dist/esm/createSchemaFromDrizzle.native.js +1 -1
  26. package/dist/esm/createSchemaFromDrizzle.native.js.map +1 -1
  27. package/dist/esm/createUseQuery.native.js +2 -2
  28. package/dist/esm/createUseQuery.native.js.map +1 -1
  29. package/dist/esm/createUseQueryDirect.native.js +2 -2
  30. package/dist/esm/createUseQueryDirect.native.js.map +1 -1
  31. package/dist/esm/createZeroClient.authData.test.native.js +2 -2
  32. package/dist/esm/createZeroClient.authData.test.native.js.map +1 -1
  33. package/dist/esm/createZeroClient.connection.test.native.js +1 -1
  34. package/dist/esm/createZeroClient.connection.test.native.js.map +1 -1
  35. package/dist/esm/createZeroClient.native.js +15 -15
  36. package/dist/esm/createZeroClient.native.js.map +1 -1
  37. package/dist/esm/createZeroClient.recovery.test.native.js +1 -1
  38. package/dist/esm/createZeroClient.recovery.test.native.js.map +1 -1
  39. package/dist/esm/generate-helpers.native.js.map +1 -1
  40. package/dist/esm/generate-lite.native.js +1 -1
  41. package/dist/esm/generate-lite.native.js.map +1 -1
  42. package/dist/esm/generate-lite.test.native.js +1 -1
  43. package/dist/esm/generate-lite.test.native.js.map +1 -1
  44. package/dist/esm/generate.native.js +1 -1
  45. package/dist/esm/generate.native.js.map +1 -1
  46. package/dist/esm/generate.test.native.js +1 -1
  47. package/dist/esm/generate.test.native.js.map +1 -1
  48. package/dist/esm/helpers/batchQuery.native.js.map +1 -1
  49. package/dist/esm/helpers/clearZeroClientData.native.js.map +1 -1
  50. package/dist/esm/helpers/createMutators.mjs +4 -3
  51. package/dist/esm/helpers/createMutators.mjs.map +1 -1
  52. package/dist/esm/helpers/createMutators.native.js +8 -5
  53. package/dist/esm/helpers/createMutators.native.js.map +1 -1
  54. package/dist/esm/helpers/createMutators.test.native.js +1 -1
  55. package/dist/esm/helpers/createMutators.test.native.js.map +1 -1
  56. package/dist/esm/helpers/ensureLoggedIn.native.js +1 -1
  57. package/dist/esm/helpers/ensureLoggedIn.native.js.map +1 -1
  58. package/dist/esm/helpers/getAuth.native.js +3 -3
  59. package/dist/esm/helpers/getAuth.native.js.map +1 -1
  60. package/dist/esm/helpers/mutatorContext.native.js.map +1 -1
  61. package/dist/esm/helpers/prettyFormatZeroQuery.native.js.map +1 -1
  62. package/dist/esm/helpers/queryContext.native.js.map +1 -1
  63. package/dist/esm/helpers/recoverZeroClient.native.js.map +1 -1
  64. package/dist/esm/helpers/recoverZeroClient.test.native.js +1 -1
  65. package/dist/esm/helpers/recoverZeroClient.test.native.js.map +1 -1
  66. package/dist/esm/helpers/showZeroClientError.native.js +1 -1
  67. package/dist/esm/helpers/showZeroClientError.native.js.map +1 -1
  68. package/dist/esm/helpers/useMutation.native.js.map +1 -1
  69. package/dist/esm/helpers/useMutation.test.native.js +1 -1
  70. package/dist/esm/helpers/useMutation.test.native.js.map +1 -1
  71. package/dist/esm/helpers/useZeroDebug.native.js +1 -1
  72. package/dist/esm/helpers/useZeroDebug.native.js.map +1 -1
  73. package/dist/esm/httpPull/fixtureSchema.native.js.map +1 -1
  74. package/dist/esm/httpPull/transport.test.native.js +3 -3
  75. package/dist/esm/httpPull/transport.test.native.js.map +1 -1
  76. package/dist/esm/httpPullTransport.native.js.map +1 -1
  77. package/dist/esm/index.js +0 -1
  78. package/dist/esm/index.js.map +1 -1
  79. package/dist/esm/index.mjs +0 -1
  80. package/dist/esm/index.mjs.map +1 -1
  81. package/dist/esm/index.native.js +22 -23
  82. package/dist/esm/index.native.js.map +1 -1
  83. package/dist/esm/instanceRegistry.native.js +1 -1
  84. package/dist/esm/instanceRegistry.native.js.map +1 -1
  85. package/dist/esm/modelRegistry.native.js.map +1 -1
  86. package/dist/esm/multi.native.js +3 -3
  87. package/dist/esm/multi.native.js.map +1 -1
  88. package/dist/esm/multiInstance.test.native.js +8 -8
  89. package/dist/esm/multiInstance.test.native.js.map +1 -1
  90. package/dist/esm/multiInstanceNested.test.native.js +3 -3
  91. package/dist/esm/multiInstanceNested.test.native.js.map +1 -1
  92. package/dist/esm/multiPartition.test.native.js +1 -1
  93. package/dist/esm/multiPartition.test.native.js.map +1 -1
  94. package/dist/esm/mutations.native.js +1 -1
  95. package/dist/esm/mutations.native.js.map +1 -1
  96. package/dist/esm/mutations.test.native.js +2 -2
  97. package/dist/esm/mutations.test.native.js.map +1 -1
  98. package/dist/esm/orez.mjs +205 -0
  99. package/dist/esm/orez.mjs.map +1 -0
  100. package/dist/esm/orez.native.js +295 -0
  101. package/dist/esm/orez.native.js.map +1 -0
  102. package/dist/esm/orez.test.mjs +245 -0
  103. package/dist/esm/orez.test.mjs.map +1 -0
  104. package/dist/esm/orez.test.native.js +262 -0
  105. package/dist/esm/orez.test.native.js.map +1 -0
  106. package/dist/esm/provideZero.hydration.test.native.js +1 -1
  107. package/dist/esm/provideZero.hydration.test.native.js.map +1 -1
  108. package/dist/esm/queryRegistry.native.js.map +1 -1
  109. package/dist/esm/resolveQuery.native.js +1 -1
  110. package/dist/esm/resolveQuery.native.js.map +1 -1
  111. package/dist/esm/run.mjs +1 -1
  112. package/dist/esm/run.mjs.map +1 -1
  113. package/dist/esm/run.native.js +5 -5
  114. package/dist/esm/run.native.js.map +1 -1
  115. package/dist/esm/serverWhere.native.js +1 -1
  116. package/dist/esm/serverWhere.native.js.map +1 -1
  117. package/dist/esm/serverWhere.test.native.js +3 -3
  118. package/dist/esm/serverWhere.test.native.js.map +1 -1
  119. package/dist/esm/state.mjs +1 -1
  120. package/dist/esm/state.native.js +1 -1
  121. package/dist/esm/state.native.js.map +1 -1
  122. package/dist/esm/testSetup.native.js.map +1 -1
  123. package/dist/esm/types.native.js.map +1 -1
  124. package/dist/esm/usePermission.test.native.js +3 -3
  125. package/dist/esm/usePermission.test.native.js.map +1 -1
  126. package/dist/esm/useQuery.empty.test.native.js +2 -2
  127. package/dist/esm/useQuery.empty.test.native.js.map +1 -1
  128. package/dist/esm/useQuery.ssr.test.native.js +2 -2
  129. package/dist/esm/useQuery.ssr.test.native.js.map +1 -1
  130. package/dist/esm/vite-plugin.native.js +1 -1
  131. package/dist/esm/vite-plugin.native.js.map +1 -1
  132. package/dist/esm/where.native.js +2 -2
  133. package/dist/esm/where.native.js.map +1 -1
  134. package/dist/esm/zeroRunner.mjs +1 -1
  135. package/dist/esm/zeroRunner.mjs.map +1 -1
  136. package/dist/esm/zeroRunner.native.js +2 -2
  137. package/dist/esm/zeroRunner.native.js.map +1 -1
  138. package/dist/esm/zql.native.js +1 -1
  139. package/dist/esm/zql.native.js.map +1 -1
  140. package/package.json +7 -23
  141. package/readme.md +40 -65
  142. package/src/createZeroClient.tsx +1 -1
  143. package/src/helpers/createMutators.ts +6 -2
  144. package/src/index.ts +0 -1
  145. package/src/orez.test.ts +266 -0
  146. package/src/orez.ts +344 -0
  147. package/src/run.ts +1 -1
  148. package/src/state.ts +1 -1
  149. package/src/types.ts +0 -5
  150. package/src/zeroRunner.ts +1 -1
  151. package/test-fixtures/server-return-types.ts +21 -58
  152. package/types/helpers/createMutators.d.ts +2 -1
  153. package/types/helpers/createMutators.d.ts.map +1 -1
  154. package/types/httpPull/fixtureSchema.d.ts +1 -1
  155. package/types/index.d.ts +0 -1
  156. package/types/index.d.ts.map +1 -1
  157. package/types/orez.d.ts +54 -0
  158. package/types/orez.d.ts.map +1 -0
  159. package/types/orez.test.d.ts +2 -0
  160. package/types/orez.test.d.ts.map +1 -0
  161. package/types/types.d.ts +0 -4
  162. package/types/types.d.ts.map +1 -1
  163. package/dist/cjs/asyncTasks.cjs +0 -51
  164. package/dist/cjs/asyncTasks.native.js +0 -84
  165. package/dist/cjs/asyncTasks.native.js.map +0 -1
  166. package/dist/cjs/createZeroDirectServer.cjs +0 -269
  167. package/dist/cjs/createZeroDirectServer.native.js +0 -287
  168. package/dist/cjs/createZeroDirectServer.native.js.map +0 -1
  169. package/dist/cjs/createZeroSQLiteServer.cjs +0 -50
  170. package/dist/cjs/createZeroSQLiteServer.native.js +0 -58
  171. package/dist/cjs/createZeroSQLiteServer.native.js.map +0 -1
  172. package/dist/cjs/createZeroSQLiteServer.test.cjs +0 -595
  173. package/dist/cjs/createZeroSQLiteServer.test.native.js +0 -647
  174. package/dist/cjs/createZeroSQLiteServer.test.native.js.map +0 -1
  175. package/dist/cjs/createZeroServer.cjs +0 -82
  176. package/dist/cjs/createZeroServer.native.js +0 -93
  177. package/dist/cjs/createZeroServer.native.js.map +0 -1
  178. package/dist/cjs/createZeroServer.test.cjs +0 -378
  179. package/dist/cjs/createZeroServer.test.native.js +0 -448
  180. package/dist/cjs/createZeroServer.test.native.js.map +0 -1
  181. package/dist/cjs/createZeroServerCore.cjs +0 -211
  182. package/dist/cjs/createZeroServerCore.native.js +0 -355
  183. package/dist/cjs/createZeroServerCore.native.js.map +0 -1
  184. package/dist/cjs/httpPull/auth.test.cjs +0 -197
  185. package/dist/cjs/httpPull/auth.test.native.js +0 -279
  186. package/dist/cjs/httpPull/auth.test.native.js.map +0 -1
  187. package/dist/cjs/httpPull/churn.test.cjs +0 -132
  188. package/dist/cjs/httpPull/churn.test.native.js +0 -155
  189. package/dist/cjs/httpPull/churn.test.native.js.map +0 -1
  190. package/dist/cjs/httpPull/completeAck.test.cjs +0 -69
  191. package/dist/cjs/httpPull/completeAck.test.native.js +0 -76
  192. package/dist/cjs/httpPull/completeAck.test.native.js.map +0 -1
  193. package/dist/cjs/httpPull/fixtureServer.cjs +0 -340
  194. package/dist/cjs/httpPull/fixtureServer.native.js +0 -534
  195. package/dist/cjs/httpPull/fixtureServer.native.js.map +0 -1
  196. package/dist/cjs/httpPull/integration.test.cjs +0 -53
  197. package/dist/cjs/httpPull/integration.test.native.js +0 -60
  198. package/dist/cjs/httpPull/integration.test.native.js.map +0 -1
  199. package/dist/cjs/httpPull/rebase.test.cjs +0 -360
  200. package/dist/cjs/httpPull/rebase.test.native.js +0 -420
  201. package/dist/cjs/httpPull/rebase.test.native.js.map +0 -1
  202. package/dist/cjs/httpPull/relations.test.cjs +0 -107
  203. package/dist/cjs/httpPull/relations.test.native.js +0 -119
  204. package/dist/cjs/httpPull/relations.test.native.js.map +0 -1
  205. package/dist/cjs/httpPull/testHarness.cjs +0 -100
  206. package/dist/cjs/httpPull/testHarness.native.js +0 -112
  207. package/dist/cjs/httpPull/testHarness.native.js.map +0 -1
  208. package/dist/cjs/server.cjs +0 -22
  209. package/dist/cjs/server.native.js +0 -4
  210. package/dist/cjs/server.native.js.map +0 -1
  211. package/dist/cjs/sqliteRuntime.cjs +0 -318
  212. package/dist/cjs/sqliteRuntime.native.js +0 -438
  213. package/dist/cjs/sqliteRuntime.native.js.map +0 -1
  214. package/dist/cjs/syncHost.cjs +0 -179
  215. package/dist/cjs/syncHost.native.js +0 -388
  216. package/dist/cjs/syncHost.native.js.map +0 -1
  217. package/dist/cjs/syncHost.test.cjs +0 -240
  218. package/dist/cjs/syncHost.test.native.js +0 -290
  219. package/dist/cjs/syncHost.test.native.js.map +0 -1
  220. package/dist/esm/asyncTasks.mjs +0 -26
  221. package/dist/esm/asyncTasks.mjs.map +0 -1
  222. package/dist/esm/asyncTasks.native.js +0 -56
  223. package/dist/esm/asyncTasks.native.js.map +0 -1
  224. package/dist/esm/createZeroDirectServer.mjs +0 -241
  225. package/dist/esm/createZeroDirectServer.mjs.map +0 -1
  226. package/dist/esm/createZeroDirectServer.native.js +0 -256
  227. package/dist/esm/createZeroDirectServer.native.js.map +0 -1
  228. package/dist/esm/createZeroSQLiteServer.mjs +0 -24
  229. package/dist/esm/createZeroSQLiteServer.mjs.map +0 -1
  230. package/dist/esm/createZeroSQLiteServer.native.js +0 -29
  231. package/dist/esm/createZeroSQLiteServer.native.js.map +0 -1
  232. package/dist/esm/createZeroSQLiteServer.test.mjs +0 -596
  233. package/dist/esm/createZeroSQLiteServer.test.mjs.map +0 -1
  234. package/dist/esm/createZeroSQLiteServer.test.native.js +0 -645
  235. package/dist/esm/createZeroSQLiteServer.test.native.js.map +0 -1
  236. package/dist/esm/createZeroServer.mjs +0 -57
  237. package/dist/esm/createZeroServer.mjs.map +0 -1
  238. package/dist/esm/createZeroServer.native.js +0 -65
  239. package/dist/esm/createZeroServer.native.js.map +0 -1
  240. package/dist/esm/createZeroServer.test.mjs +0 -379
  241. package/dist/esm/createZeroServer.test.mjs.map +0 -1
  242. package/dist/esm/createZeroServer.test.native.js +0 -446
  243. package/dist/esm/createZeroServer.test.native.js.map +0 -1
  244. package/dist/esm/createZeroServerCore.mjs +0 -186
  245. package/dist/esm/createZeroServerCore.mjs.map +0 -1
  246. package/dist/esm/createZeroServerCore.native.js +0 -327
  247. package/dist/esm/createZeroServerCore.native.js.map +0 -1
  248. package/dist/esm/httpPull/auth.test.mjs +0 -198
  249. package/dist/esm/httpPull/auth.test.mjs.map +0 -1
  250. package/dist/esm/httpPull/auth.test.native.js +0 -277
  251. package/dist/esm/httpPull/auth.test.native.js.map +0 -1
  252. package/dist/esm/httpPull/churn.test.mjs +0 -133
  253. package/dist/esm/httpPull/churn.test.mjs.map +0 -1
  254. package/dist/esm/httpPull/churn.test.native.js +0 -153
  255. package/dist/esm/httpPull/churn.test.native.js.map +0 -1
  256. package/dist/esm/httpPull/completeAck.test.mjs +0 -70
  257. package/dist/esm/httpPull/completeAck.test.mjs.map +0 -1
  258. package/dist/esm/httpPull/completeAck.test.native.js +0 -74
  259. package/dist/esm/httpPull/completeAck.test.native.js.map +0 -1
  260. package/dist/esm/httpPull/fixtureServer.mjs +0 -315
  261. package/dist/esm/httpPull/fixtureServer.mjs.map +0 -1
  262. package/dist/esm/httpPull/fixtureServer.native.js +0 -506
  263. package/dist/esm/httpPull/fixtureServer.native.js.map +0 -1
  264. package/dist/esm/httpPull/integration.test.mjs +0 -54
  265. package/dist/esm/httpPull/integration.test.mjs.map +0 -1
  266. package/dist/esm/httpPull/integration.test.native.js +0 -58
  267. package/dist/esm/httpPull/integration.test.native.js.map +0 -1
  268. package/dist/esm/httpPull/rebase.test.mjs +0 -361
  269. package/dist/esm/httpPull/rebase.test.mjs.map +0 -1
  270. package/dist/esm/httpPull/rebase.test.native.js +0 -418
  271. package/dist/esm/httpPull/rebase.test.native.js.map +0 -1
  272. package/dist/esm/httpPull/relations.test.mjs +0 -108
  273. package/dist/esm/httpPull/relations.test.mjs.map +0 -1
  274. package/dist/esm/httpPull/relations.test.native.js +0 -117
  275. package/dist/esm/httpPull/relations.test.native.js.map +0 -1
  276. package/dist/esm/httpPull/testHarness.mjs +0 -72
  277. package/dist/esm/httpPull/testHarness.mjs.map +0 -1
  278. package/dist/esm/httpPull/testHarness.native.js +0 -81
  279. package/dist/esm/httpPull/testHarness.native.js.map +0 -1
  280. package/dist/esm/server.mjs +0 -4
  281. package/dist/esm/server.mjs.map +0 -1
  282. package/dist/esm/server.native.js +0 -2
  283. package/dist/esm/server.native.js.map +0 -1
  284. package/dist/esm/sqliteRuntime.mjs +0 -289
  285. package/dist/esm/sqliteRuntime.mjs.map +0 -1
  286. package/dist/esm/sqliteRuntime.native.js +0 -406
  287. package/dist/esm/sqliteRuntime.native.js.map +0 -1
  288. package/dist/esm/syncHost.mjs +0 -153
  289. package/dist/esm/syncHost.mjs.map +0 -1
  290. package/dist/esm/syncHost.native.js +0 -359
  291. package/dist/esm/syncHost.native.js.map +0 -1
  292. package/dist/esm/syncHost.test.mjs +0 -217
  293. package/dist/esm/syncHost.test.mjs.map +0 -1
  294. package/dist/esm/syncHost.test.native.js +0 -264
  295. package/dist/esm/syncHost.test.native.js.map +0 -1
  296. package/src/asyncTasks.ts +0 -36
  297. package/src/createZeroDirectServer.ts +0 -411
  298. package/src/createZeroSQLiteServer.test.ts +0 -614
  299. package/src/createZeroSQLiteServer.ts +0 -56
  300. package/src/createZeroServer.test.ts +0 -421
  301. package/src/createZeroServer.ts +0 -105
  302. package/src/createZeroServerCore.ts +0 -296
  303. package/src/httpPull/auth.test.ts +0 -208
  304. package/src/httpPull/churn.test.ts +0 -147
  305. package/src/httpPull/completeAck.test.ts +0 -80
  306. package/src/httpPull/fixtureServer.ts +0 -391
  307. package/src/httpPull/integration.test.ts +0 -57
  308. package/src/httpPull/rebase.test.ts +0 -368
  309. package/src/httpPull/relations.test.ts +0 -135
  310. package/src/httpPull/testHarness.ts +0 -95
  311. package/src/server.native.ts +0 -3
  312. package/src/server.ts +0 -4
  313. package/src/sqliteRuntime.ts +0 -512
  314. package/src/syncHost.test.ts +0 -223
  315. package/src/syncHost.ts +0 -294
  316. package/types/asyncTasks.d.ts +0 -11
  317. package/types/asyncTasks.d.ts.map +0 -1
  318. package/types/createZeroDirectServer.d.ts +0 -80
  319. package/types/createZeroDirectServer.d.ts.map +0 -1
  320. package/types/createZeroSQLiteServer.d.ts +0 -12
  321. package/types/createZeroSQLiteServer.d.ts.map +0 -1
  322. package/types/createZeroSQLiteServer.test.d.ts +0 -2
  323. package/types/createZeroSQLiteServer.test.d.ts.map +0 -1
  324. package/types/createZeroServer.d.ts +0 -18
  325. package/types/createZeroServer.d.ts.map +0 -1
  326. package/types/createZeroServer.test.d.ts +0 -2
  327. package/types/createZeroServer.test.d.ts.map +0 -1
  328. package/types/createZeroServerCore.d.ts +0 -256
  329. package/types/createZeroServerCore.d.ts.map +0 -1
  330. package/types/httpPull/auth.test.d.ts +0 -2
  331. package/types/httpPull/auth.test.d.ts.map +0 -1
  332. package/types/httpPull/churn.test.d.ts +0 -2
  333. package/types/httpPull/churn.test.d.ts.map +0 -1
  334. package/types/httpPull/completeAck.test.d.ts +0 -2
  335. package/types/httpPull/completeAck.test.d.ts.map +0 -1
  336. package/types/httpPull/fixtureServer.d.ts +0 -14
  337. package/types/httpPull/fixtureServer.d.ts.map +0 -1
  338. package/types/httpPull/integration.test.d.ts +0 -2
  339. package/types/httpPull/integration.test.d.ts.map +0 -1
  340. package/types/httpPull/rebase.test.d.ts +0 -2
  341. package/types/httpPull/rebase.test.d.ts.map +0 -1
  342. package/types/httpPull/relations.test.d.ts +0 -2
  343. package/types/httpPull/relations.test.d.ts.map +0 -1
  344. package/types/httpPull/testHarness.d.ts +0 -32
  345. package/types/httpPull/testHarness.d.ts.map +0 -1
  346. package/types/server.d.ts +0 -5
  347. package/types/server.d.ts.map +0 -1
  348. package/types/server.native.d.ts +0 -1
  349. package/types/server.native.d.ts.map +0 -1
  350. package/types/sqliteRuntime.d.ts +0 -71
  351. package/types/sqliteRuntime.d.ts.map +0 -1
  352. package/types/syncHost.d.ts +0 -42
  353. package/types/syncHost.d.ts.map +0 -1
  354. package/types/syncHost.test.d.ts +0 -2
  355. package/types/syncHost.test.d.ts.map +0 -1
@@ -1,645 +0,0 @@
1
- import { DatabaseSync } from "node:sqlite";
2
- import { boolean, createSchema, json, relationships, string, table } from "@rocicorp/zero";
3
- import { asQueryInternals } from "@rocicorp/zero/bindings";
4
- import { afterEach, beforeEach, describe, expect, test } from "vitest";
5
- import { createZeroSQLiteServer } from "./createZeroSQLiteServer.native.js";
6
- import { zeroHttpFixtureSchema } from "./httpPull/fixtureSchema.native.js";
7
- import { mutations } from "./mutations.native.js";
8
- import { serverWhere } from "./serverWhere.native.js";
9
- var note = table("note").from("note_records").columns({
10
- id: string().from("note_id"),
11
- done: boolean(),
12
- data: json().optional()
13
- }).primaryKey("id");
14
- var sqliteTypesSchema = createSchema({
15
- tables: [note],
16
- relationships: [],
17
- enableLegacyQueries: true
18
- });
19
- var person = table("person").columns({
20
- id: string()
21
- }).primaryKey("id");
22
- var membership = table("membership").columns({
23
- personId: string(),
24
- teamId: string()
25
- }).primaryKey("personId", "teamId");
26
- var team = table("team").from("team_records").columns({
27
- id: string().from("team_id"),
28
- active: boolean().from("is_active"),
29
- metadata: json().from("metadata_json")
30
- }).primaryKey("id");
31
- var twoHopSchema = createSchema({
32
- tables: [person, membership, team],
33
- relationships: [relationships(person, function (param) {
34
- var {
35
- many
36
- } = param;
37
- return {
38
- teams: many({
39
- sourceField: ["id"],
40
- destSchema: membership,
41
- destField: ["personId"]
42
- }, {
43
- sourceField: ["teamId"],
44
- destSchema: team,
45
- destField: ["id"]
46
- })
47
- };
48
- })]
49
- });
50
- function pushRequest(id, name, args) {
51
- return new Request("http://localhost/push?schema=zero_0&appID=zero", {
52
- method: "POST",
53
- headers: {
54
- "content-type": "application/json"
55
- },
56
- body: JSON.stringify({
57
- clientGroupID: "cg1",
58
- mutations: [{
59
- type: "custom",
60
- id,
61
- clientID: "client-a",
62
- name,
63
- args: [args],
64
- timestamp: 1
65
- }],
66
- pushVersion: 1,
67
- timestamp: 1,
68
- requestID: "req-" + id
69
- })
70
- });
71
- }
72
- function cleanupRequest() {
73
- return new Request("http://localhost/push?schema=zero_0&appID=zero", {
74
- method: "POST",
75
- headers: {
76
- "content-type": "application/json"
77
- },
78
- body: JSON.stringify({
79
- clientGroupID: "cg1",
80
- mutations: [{
81
- type: "custom",
82
- id: 2,
83
- clientID: "client-a",
84
- name: "_zero_cleanupResults",
85
- args: [{
86
- clientGroupID: "cg1",
87
- clientID: "client-a",
88
- upToMutationID: 1
89
- }],
90
- timestamp: 1
91
- }],
92
- pushVersion: 1,
93
- timestamp: 1,
94
- requestID: "cleanup"
95
- })
96
- });
97
- }
98
- describe("createZeroSQLiteServer", function () {
99
- var db;
100
- var retryNextTransaction;
101
- var transactionProvider;
102
- var statements;
103
- beforeEach(function () {
104
- db = new DatabaseSync(":memory:");
105
- db.exec(["CREATE TABLE project (id TEXT PRIMARY KEY, ownerId TEXT NOT NULL, name TEXT NOT NULL);", "CREATE TABLE note_records (note_id TEXT PRIMARY KEY, done INTEGER NOT NULL, data TEXT);"].join("\n"));
106
- retryNextTransaction = false;
107
- statements = [];
108
- var executor = {
109
- async exec(sql) {
110
- var params = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [],
111
- metadata = arguments.length > 2 ? arguments[2] : void 0;
112
- if (metadata) statements.push(metadata);
113
- var result = db.prepare(sql).run(...params);
114
- return {
115
- changes: Number(result.changes)
116
- };
117
- },
118
- async query(sql) {
119
- var params = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
120
- return db.prepare(sql).all(...params);
121
- },
122
- async queryAst(ast, format) {
123
- var rows;
124
- if (ast.table === "project") {
125
- rows = db.prepare("SELECT * FROM project ORDER BY id").all();
126
- } else if (ast.table === "note") {
127
- rows = db.prepare("SELECT note_id, done, data FROM note_records ORDER BY note_id").all().map(function (row) {
128
- return {
129
- id: row.note_id,
130
- done: row.done !== 0,
131
- data: typeof row.data === "string" ? JSON.parse(row.data) : row.data
132
- };
133
- });
134
- } else if (ast.table === "person") {
135
- rows = [{
136
- id: "p1",
137
- teams: [{
138
- id: "t1",
139
- active: true,
140
- metadata: {
141
- label: "core"
142
- }
143
- }]
144
- }];
145
- } else {
146
- throw new Error("unexpected table " + ast.table);
147
- }
148
- return format.singular ? rows[0] : rows;
149
- }
150
- };
151
- var run = async function (callback) {
152
- db.exec("BEGIN");
153
- try {
154
- var value = await callback(executor);
155
- db.exec("COMMIT");
156
- return value;
157
- } catch (error) {
158
- db.exec("ROLLBACK");
159
- throw error;
160
- }
161
- };
162
- transactionProvider = async function (callback) {
163
- if (retryNextTransaction) {
164
- retryNextTransaction = false;
165
- db.exec("BEGIN");
166
- await callback(executor);
167
- db.exec("ROLLBACK");
168
- }
169
- return run(callback);
170
- };
171
- });
172
- afterEach(function () {
173
- db.close();
174
- });
175
- test("commits CRUD, the mutation ledger, and one retry-safe async task", async function () {
176
- var effectRuns = 0;
177
- var server = createZeroSQLiteServer({
178
- schema: zeroHttpFixtureSchema,
179
- models: {
180
- project: {
181
- mutate: {
182
- create: async function (param, value) {
183
- var {
184
- tx,
185
- server: server2
186
- } = param;
187
- await tx.mutate.project.insert(value);
188
- server2 === null || server2 === void 0 ? void 0 : server2.enqueueTask(async function () {
189
- effectRuns++;
190
- }, {
191
- barrier: true
192
- });
193
- }
194
- }
195
- }
196
- },
197
- createServerActions: function () {
198
- return {};
199
- },
200
- transactionProvider
201
- });
202
- retryNextTransaction = true;
203
- var result = await server.handleMutationRequest({
204
- authData: null,
205
- request: pushRequest(1, "project.create", {
206
- id: "p1",
207
- ownerId: "u1",
208
- name: "first"
209
- }),
210
- skipAsyncTasks: true
211
- });
212
- expect(result.response.mutations[0].result).toEqual({});
213
- expect(db.prepare("SELECT * FROM project").all()).toEqual([{
214
- id: "p1",
215
- ownerId: "u1",
216
- name: "first"
217
- }]);
218
- expect(db.prepare("SELECT * FROM zero_0_clients").all()).toEqual([{
219
- clientGroupID: "cg1",
220
- clientID: "client-a",
221
- lastMutationID: 1
222
- }]);
223
- expect(result.asyncTasks).toHaveLength(1);
224
- expect(result.asyncTasks[0].barrier).toBe(true);
225
- await result.asyncTasks[0].task();
226
- expect(effectRuns).toBe(1);
227
- });
228
- test("keeps later writes after inserting an existing primary key", async function () {
229
- db.prepare("INSERT INTO project (id, ownerId, name) VALUES (?, ?, ?)").run("p1", "u1", "original");
230
- db.prepare("INSERT INTO project (id, ownerId, name) VALUES (?, ?, ?)").run("p2", "u1", "before");
231
- var server = createZeroSQLiteServer({
232
- schema: zeroHttpFixtureSchema,
233
- models: {
234
- project: {
235
- mutate: {
236
- converge: async function (param) {
237
- var {
238
- tx
239
- } = param;
240
- await tx.mutate.project.insert({
241
- id: "p1",
242
- ownerId: "u2",
243
- name: "replacement"
244
- });
245
- await tx.mutate.project.update({
246
- id: "p2",
247
- name: "after"
248
- });
249
- }
250
- }
251
- }
252
- },
253
- createServerActions: function () {
254
- return {};
255
- },
256
- transactionProvider
257
- });
258
- var result = await server.handleMutationRequest({
259
- authData: null,
260
- request: pushRequest(1, "project.converge", {})
261
- });
262
- expect(result.response.mutations[0].result).toEqual({});
263
- expect(db.prepare("SELECT * FROM project ORDER BY id").all()).toEqual([{
264
- id: "p1",
265
- ownerId: "u1",
266
- name: "original"
267
- }, {
268
- id: "p2",
269
- ownerId: "u1",
270
- name: "after"
271
- }]);
272
- });
273
- test("rolls back row writes and persists an application error with its LMID", async function () {
274
- var server = createZeroSQLiteServer({
275
- schema: zeroHttpFixtureSchema,
276
- models: {
277
- project: {
278
- mutate: {
279
- fail: async function (param, value) {
280
- var {
281
- tx
282
- } = param;
283
- await tx.mutate.project.insert(value);
284
- throw new Error("rejected");
285
- }
286
- }
287
- }
288
- },
289
- createServerActions: function () {
290
- return {};
291
- },
292
- transactionProvider
293
- });
294
- var result = await server.handleMutationRequest({
295
- authData: null,
296
- request: pushRequest(1, "project.fail", {
297
- id: "p1",
298
- ownerId: "u1",
299
- name: "first"
300
- })
301
- });
302
- expect(result.response.mutations[0].result).toMatchObject({
303
- error: "app",
304
- message: "rejected"
305
- });
306
- expect(db.prepare("SELECT * FROM project").all()).toEqual([]);
307
- expect(db.prepare("SELECT lastMutationID FROM zero_0_clients").get()).toEqual({
308
- lastMutationID: 1
309
- });
310
- var stored = db.prepare("SELECT result FROM zero_0_mutations").get();
311
- expect(JSON.parse(stored.result)).toMatchObject({
312
- error: "app",
313
- message: "rejected"
314
- });
315
- });
316
- test("allows a custom CRUD mutation to no-op without an automatic permission check", async function () {
317
- var projectPermission = serverWhere("project", function (q) {
318
- return q.cmp("ownerId", "u1");
319
- });
320
- var projectMutations = mutations("project", projectPermission, {
321
- insert: async function () {}
322
- });
323
- var server = createZeroSQLiteServer({
324
- schema: zeroHttpFixtureSchema,
325
- models: {
326
- project: {
327
- mutate: projectMutations
328
- }
329
- },
330
- createServerActions: function () {
331
- return {};
332
- },
333
- transactionProvider
334
- });
335
- var result = await server.handleMutationRequest({
336
- authData: {
337
- id: "u1",
338
- role: "user"
339
- },
340
- request: pushRequest(1, "project.insert", {
341
- id: "p1",
342
- ownerId: "u1",
343
- name: "skip"
344
- })
345
- });
346
- expect(result.response.mutations[0].result).toEqual({});
347
- expect(db.prepare("SELECT * FROM project").all()).toEqual([]);
348
- });
349
- test("rolls back when a custom CRUD mutation throws", async function () {
350
- var projectPermission = serverWhere("project", function (q) {
351
- return q.cmp("ownerId", "u1");
352
- });
353
- var projectMutations = mutations("project", projectPermission, {
354
- insert: async function (param, value) {
355
- var {
356
- tx
357
- } = param;
358
- await tx.mutate.project.insert(value);
359
- throw new Error("denied by custom validation");
360
- }
361
- });
362
- var server = createZeroSQLiteServer({
363
- schema: zeroHttpFixtureSchema,
364
- models: {
365
- project: {
366
- mutate: projectMutations
367
- }
368
- },
369
- createServerActions: function () {
370
- return {};
371
- },
372
- transactionProvider
373
- });
374
- var result = await server.handleMutationRequest({
375
- authData: {
376
- id: "u2",
377
- role: "user"
378
- },
379
- request: pushRequest(1, "project.insert", {
380
- id: "p2",
381
- ownerId: "u2",
382
- name: "unauthorized"
383
- })
384
- });
385
- expect(result.response.mutations[0].result).toMatchObject({
386
- error: "app",
387
- message: "denied by custom validation"
388
- });
389
- expect(db.prepare("SELECT * FROM project").all()).toEqual([]);
390
- });
391
- test("permission-checks generated CRUD mutations", async function () {
392
- var inserted;
393
- var permissionChecks = 0;
394
- var projectPermission = serverWhere("project", function (q) {
395
- return q.cmp("ownerId", "u1");
396
- });
397
- var projectMutations = mutations("project", projectPermission);
398
- var value = {
399
- id: "p3",
400
- ownerId: "u2",
401
- name: "unauthorized"
402
- };
403
- await expect(projectMutations.insert({
404
- tx: {
405
- mutate: {
406
- project: {
407
- insert: async function (row) {
408
- inserted = row;
409
- }
410
- }
411
- }
412
- },
413
- can: async function (_where, row) {
414
- permissionChecks++;
415
- expect(row).toEqual(value);
416
- throw new Error("denied");
417
- }
418
- }, value)).rejects.toThrow("denied");
419
- expect(inserted).toEqual(value);
420
- expect(permissionChecks).toBe(1);
421
- });
422
- test("recovers duplicate results and deletes them through the cleanup mutation", async function () {
423
- var server = createZeroSQLiteServer({
424
- schema: zeroHttpFixtureSchema,
425
- models: {
426
- project: {
427
- mutate: {
428
- create: async function (param, value2) {
429
- var {
430
- tx
431
- } = param;
432
- await tx.mutate.project.insert(value2);
433
- }
434
- }
435
- }
436
- },
437
- createServerActions: function () {
438
- return {};
439
- },
440
- transactionProvider
441
- });
442
- var value = {
443
- id: "p1",
444
- ownerId: "u1",
445
- name: "first"
446
- };
447
- await server.handleMutationRequest({
448
- authData: null,
449
- request: pushRequest(1, "project.create", value)
450
- });
451
- var duplicate = await server.handleMutationRequest({
452
- authData: null,
453
- request: pushRequest(1, "project.create", value)
454
- });
455
- expect(duplicate.response.mutations[0].result).toMatchObject({
456
- error: "alreadyProcessed"
457
- });
458
- expect(db.prepare("SELECT lastMutationID FROM zero_0_clients").get()).toEqual({
459
- lastMutationID: 1
460
- });
461
- expect(db.prepare("SELECT COUNT(*) AS count FROM zero_0_mutations").get()).toEqual({
462
- count: 1
463
- });
464
- await server.handleMutationRequest({
465
- authData: null,
466
- request: cleanupRequest()
467
- });
468
- expect(db.prepare("SELECT COUNT(*) AS count FROM zero_0_mutations").get()).toEqual({
469
- count: 0
470
- });
471
- });
472
- test("supports direct CRUD, server names, value codecs, and query AST execution", async function () {
473
- var server = createZeroSQLiteServer({
474
- schema: sqliteTypesSchema,
475
- models: {
476
- note: {
477
- mutate: {
478
- insert: async function (param, value) {
479
- var {
480
- tx
481
- } = param;
482
- await tx.mutate.note.insert(value);
483
- },
484
- upsert: async function (param, value) {
485
- var {
486
- tx
487
- } = param;
488
- await tx.mutate.note.upsert(value);
489
- },
490
- update: async function (param, value) {
491
- var {
492
- tx
493
- } = param;
494
- await tx.mutate.note.update(value);
495
- },
496
- delete: async function (param, value) {
497
- var {
498
- tx
499
- } = param;
500
- await tx.mutate.note.delete(value);
501
- }
502
- }
503
- }
504
- },
505
- createServerActions: function () {
506
- return {};
507
- },
508
- transactionProvider
509
- });
510
- await server.mutate.note.insert({
511
- id: "n1",
512
- done: false,
513
- data: {
514
- label: "first"
515
- }
516
- });
517
- await server.mutate.note.upsert({
518
- id: "n1",
519
- done: true,
520
- data: {
521
- label: "second"
522
- }
523
- });
524
- await server.mutate.note.update({
525
- id: "n1",
526
- done: false
527
- });
528
- expect(db.prepare("SELECT * FROM note_records").get()).toEqual({
529
- note_id: "n1",
530
- done: 0,
531
- data: JSON.stringify({
532
- label: "second"
533
- })
534
- });
535
- await expect(server.query(function (q) {
536
- return q.note;
537
- })).resolves.toEqual([{
538
- id: "n1",
539
- done: false,
540
- data: {
541
- label: "second"
542
- }
543
- }]);
544
- await server.transaction(async function (tx) {
545
- if (tx.location !== "server") throw new Error("expected server transaction");
546
- await expect(tx.query.note.one().run()).resolves.toEqual({
547
- id: "n1",
548
- done: false,
549
- data: {
550
- label: "second"
551
- }
552
- });
553
- await expect(tx.dbTransaction.query("SELECT * FROM note_records", [])).resolves.toEqual([{
554
- note_id: "n1",
555
- done: 0,
556
- data: JSON.stringify({
557
- label: "second"
558
- })
559
- }]);
560
- });
561
- await server.mutate.note.delete({
562
- id: "n1"
563
- });
564
- expect(db.prepare("SELECT * FROM note_records").all()).toEqual([]);
565
- expect(statements).toEqual([{
566
- table: "note_records",
567
- publicTable: "note",
568
- kind: "insert"
569
- }, {
570
- table: "note_records",
571
- publicTable: "note",
572
- kind: "upsert"
573
- }, {
574
- table: "note_records",
575
- publicTable: "note",
576
- kind: "update"
577
- }, {
578
- table: "note_records",
579
- publicTable: "note",
580
- kind: "delete"
581
- }]);
582
- });
583
- test("decodes destination rows through a hidden two-hop junction", async function () {
584
- var server = createZeroSQLiteServer({
585
- schema: twoHopSchema,
586
- models: {},
587
- createServerActions: function () {
588
- return {};
589
- },
590
- transactionProvider
591
- });
592
- await expect(server.query(function (q) {
593
- return q.person.related("teams");
594
- })).resolves.toEqual([{
595
- id: "p1",
596
- teams: [{
597
- id: "t1",
598
- active: true,
599
- metadata: {
600
- label: "core"
601
- }
602
- }]
603
- }]);
604
- });
605
- test("accepts a hydrated singular query result from the transaction executor", async function () {
606
- var hydrated = {
607
- id: "n1",
608
- done: false,
609
- data: {
610
- label: "already decoded"
611
- }
612
- };
613
- var receivedQueryName;
614
- var hydratedExecutor = {
615
- async exec() {
616
- return {
617
- changes: 0
618
- };
619
- },
620
- async query() {
621
- return [];
622
- },
623
- async queryAst(_ast, _format, queryName) {
624
- receivedQueryName = queryName;
625
- return hydrated;
626
- }
627
- };
628
- var hydratedProvider = async function (callback) {
629
- return callback(hydratedExecutor);
630
- };
631
- var server = createZeroSQLiteServer({
632
- schema: sqliteTypesSchema,
633
- models: {},
634
- createServerActions: function () {
635
- return {};
636
- },
637
- transactionProvider: hydratedProvider
638
- });
639
- await expect(server.query(function (q) {
640
- return asQueryInternals(q.note.one()).nameAndArgs("noteByID", ["n1"]);
641
- })).resolves.toEqual(hydrated);
642
- expect(receivedQueryName).toBe("noteByID");
643
- });
644
- });
645
- //# sourceMappingURL=createZeroSQLiteServer.test.native.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["DatabaseSync","boolean","createSchema","json","relationships","string","table","asQueryInternals","afterEach","beforeEach","describe","expect","test","createZeroSQLiteServer","zeroHttpFixtureSchema","mutations","serverWhere","note","from","columns","id","done","data","optional","primaryKey","sqliteTypesSchema","tables","enableLegacyQueries","person","membership","personId","teamId","team","active","metadata","twoHopSchema","param","many","teams","sourceField","destSchema","destField","pushRequest","name","args","Request","method","headers","body","JSON","stringify","clientGroupID","type","clientID","timestamp","pushVersion","requestID","cleanupRequest","upToMutationID","db","retryNextTransaction","transactionProvider","statements","exec","join","executor","sql","params","arguments","length","push","result","prepare","run","changes","Number","query","all","queryAst","ast","format","rows","map","row","note_id","parse","label","Error","singular","callback","value","error","close","effectRuns","server","schema","models","project","mutate","create","tx","server2","insert","enqueueTask","barrier","createServerActions","handleMutationRequest","authData","request","ownerId","skipAsyncTasks","response","toEqual","lastMutationID","asyncTasks","toHaveLength","toBe","task","converge","update","fail","toMatchObject","message","get","stored","projectPermission","q","cmp","projectMutations","role","inserted","permissionChecks","can","_where","rejects","toThrow","value2","duplicate","count","upsert","delete"],"sources":["../../src/createZeroSQLiteServer.test.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,YAAA,QAAwC;AAEjD,SAASC,OAAA,EAASC,YAAA,EAAcC,IAAA,EAAMC,aAAA,EAAeC,MAAA,EAAQC,KAAA,QAAa;AAC1E,SAASC,gBAAA,QAAwB;AACjC,SAASC,SAAA,EAAWC,UAAA,EAAYC,QAAA,EAAUC,MAAA,EAAQC,IAAA,QAAY;AAE9D,SAASC,sBAAA,QAA8B;AACvC,SAASC,qBAAA,QAA6B;AACtC,SAASC,SAAA,QAAiB;AAC1B,SAASC,WAAA,QAAmB;AAQ5B,IAAAC,IAAM,GAAAX,KAAO,OAAM,EAAMY,IACtB,eAAK,EAAcC,OACnB;EACCC,EAAA,EAAIf,MAAA,CAAO,EAAEa,IAAA,CAAK,SAAS;EAC3BG,IAAA,EAAMpB,OAAA,CAAQ;EACdqB,IAAA,EAAMnB,IAAA,CAAwB,EAAEoB,QAAA,CAAS;AAC3C,CAAC,EACAC,UAAA,CAAW,IAAI;AAElB,IAAAC,iBAAM,GAAAvB,YAAoB;EACxBwB,MAAA,EAAQ,CACRT,IAAA,CACA;EACDb,aAAA;EAEDuB,mBAAqB;AACrB;AAGA,IAAAC,MAAM,GAAOtB,KAAA,CAAM,QAChB,EAAAa,OAAK;EAEJC,EAAA,EAAIf,MAAA,CAAO;AAAgB,EAC3B,CAAAmB,UAAQ,KAAQ;AAAkB,IAClCK,UAAU,GAAwBvB,KAAE,aAAK,EAAAa,OAAe;EACzDW,QACA,EAAAzB,MAAe;EAClB0B,MAAM,EAAA1B,MAAA;AAA4B,EAChC,CAAAmB,UAAS,WAAQ,UAAY,CAAI;AAAA,IACjCQ,IAAA,GAAA1B,KAAA,CAAe,QAAAY,IAAA,iBAAAC,OAAA;EAAAC,EACb,EAAAf,MAAA,GAAAa,IAAc,UAAW;EAAYe,MACnC,EAAAhC,OAAO,GAAAiB,IAAA;EAAAgB,QACL,EAAA/B,IAAA,GAAAe,IAAA;AAAA,GAAAM,UACE;AAAkB,IAAAW,YAClB,GAAAjC,YAAY;EAAAwB,MAAA,EACZ,CAAsBE,MACxB,EAAAC,UACA,EAAAG,IAAA,CACwB;EACV5B,aACZ,GAAgBA,aAClB,CAAAwB,MAAA,YAAAQ,KAAA;IACF;MAAAC;IAAA,IAAAD,KAAA;IACA;MACJE,KAAA,EAAAD,IAAA;QACDE,WAAA,GAEQ,KACA;QACLC,UAAQ,EAAAX,UAAA;QACRY,SAAW,GACL,UAAK;MAET;QACEF,WAAA,GACE,QAAM,CACN;QACAC,UAAU,EAAAR,IAAA;QACVS,SAAA,GACA,IAAM;MAER;IACF;EAAA,EACA;AACW;AACS,SACrBC,YAAAtB,EAAA,EAAAuB,IAAA,EAAAC,IAAA;EACH,OAAC,IAAAC,OAAA;IACHC,MAAA;IAEAC,OAAS;MACP,cAAW,EAAQ;IACjB;IACAC,IAAA,EAAAC,IAAS,CAAEC,SAAA;MACXC,aAAW,OAAU;MACnBpC,SAAA,GACA;QACEqC,IAAA;QACEhC,EAAA;QACAiC,QAAI;QACJV,IAAA;QACAC,IAAA,EAAM,CACNA,IAAM;QACJU,SACE;MAAe,EACL;MACMC,WAClB;MAAAD,SACF;MAAAE,SACA,QAAW,GAAApC;IAAA;EACb;AACF;AACa,SACbqC,cAAWA,CAAA;EAAA,OACX,IAAAZ,OAAW;IACbC,MAAC;IACFC,OAAA;MACH;IAEA;IACEC,IAAI,EAAAC,IAAA,CAAAC,SAAA;MACAC,aAAA;MACApC,SAAA,GACA;QAEJqC,IAAW,UAAM;QACVhC,EAAA,EAAI;QACNiC,QAAA;QACDV,IAAA;QACEC,IAAA,GACA;UACKO,aAAI;UACbE,QAAA;UAEAK,cAAuB;QACvB,EACM;QACJJ,SAAW;MACT,EACA;MACAC,WAAS;MACXD,SAAA;MACAE,SAAM;IACJ;EAAyD;AAC3D;AAEE9C,QAAA,yBAAI;EACJ,IAAAiD,EAAA;EACE,IAAAC,oBAAU;EAAiD,IAAAC,mBAC9C;EACb,IAAAC,UAAA;EAGiBrD,UACb,aAAQ;IAAAkD,EAAA,OACR3D,YAAU,WAAS;IAAA2D,EAAA,CAAAI,IAAA,CACnB,CAAgE,wFAChE,2FAC6B,CACjC,CAAAC,IAAA,OAAO;IAAAJ,oBACL;IAAAE,UACE,KAAI;IAAA,IAAAG,QACJ;MAAO,MAAAF,IACLA,CAAAG,GAAA;QAAA,IAAAC,MACE,GAAAC,SAAI,CAAAC,MAAA,QAAAD,SAAA,iBAAAA,SAAA;UAAAlC,QAAA,GAAAkC,SAAA,CAAAC,MAAA,OAAAD,SAAA;QAAA,IAAAlC,QACJ,EAAA4B,UAAQ,CAAAQ,IAAA,CAAApC,QAAA;QAAA,IAAAqC,MACR,GAAAZ,EAAA,CAAAa,OAAY,CAAAN,GAAA,EAAOO,GAAA,IAAON,MAAA;QAAA;UAC5BO,OACF,EAAAC,MAAA,CAAAJ,MAAA,CAAAG,OAAA;QAAA;MACF;MACF,MACFE,KAAOA,CAAAV,GAAA;QACL,IAAAC,MAAM,GAAIC,SAAM,CAAAC,MAAA,QAAAD,SAA0B,GAAK,cAAAA,SAAA;QACjD,OAAAT,EAAA,CAAAa,OAAA,CAAAN,GAAA,EAAAW,GAAA,IAAAV,MAAA;MACA;MACF,MAAAW,SAAAC,GAAA,EAAAC,MAAA;QACF,IAAAC,IAAA;QACA,IAAMF,GAAA,CAAMzE,KAAA,KACV,WACG;UACA2E,IAAK,GAAAtB,EAAA,CAAAa,OAAO,sCAAAK,GAAA;QACf,OAAI,IAAAE,GAAA,CAAAzE,KAAA;UACF2E,IAAM,GAAAtB,EAAA,CAAAa,OAAQ,CAAM,+DAAiB,EAAAK,GAAA,GAAAK,GAAA,WAAAC,GAAA;YAClC,OAAK;cACR/D,EAAO,EAAA+D,GAAA,CAAAC,OAAA;cACT/D,IAAS,EAAA8D,GAAO,CAAA9D,IAAA;cACXC,IAAK,SAAU6D,GAAA,CAAA7D,IAAA,gBAAA2B,IAAA,CAAAoC,KAAA,CAAAF,GAAA,CAAA7D,IAAA,IAAA6D,GAAA,CAAA7D;YAClB;UACF;QACF,WAAAyD,GAAA,CAAAzE,KAAA;UACA2E,IAAA,IAGM;YACF7D,EAAA;YACGkB,KAAK,GACF;cACElB,EAAA,MAAU;cACpBa,MAAA;cACWC,QAAQ;gBACrBoD,KAAA;cACD;YAES;UAET,EAEI;QACC;UACE,UAASC,KAAA,oBAAuB,GAAAR,GAAA,CAAAzE,KAAA;QACpC;QACA,OAAQ0E,MAAA,CAAAQ,QAAA,GAAAP,IAAA,MAAAA,IAAA;MAAA;IACG;IACC,IAAAR,GAAA,GACN,eAAAA,CAAiBgB,QAAI;MACnB9B,EAAA,CAAAI,IAAA,QAAM;MACN;QAAQ,IAAA2B,KACN,SAAAD,QAAY,CAAAxB,QAAA;QACVN,EAAA,CAAAI,IAAA;QAAA,OAAA2B,KACF;MAAA,SAAAC,KACE;QAAchC,EAAA,CAAAI,IAClB;QAAA,MACF4B,KAAA;MAAA;IACF;IACF9B,mBACF,kBAAAA,CAAA4B,QAAA;MACA,IAAA7B,oBAAqB;QACrBA,oBAAA;QACDD,EAAA,CAAAI,IAAA;QAED,MAAA0B,QAAA,CAAAxB,QAAuB;QACvBN,EAAM,CAAAI,IAAA,WAAe;MACnB;MACA,OAAAU,GAAS,CAAAgB,QAAA;IAAiC;EACpC;EACKjF,SACT,aAAM;IAAAmD,EACR,CAACiC,KAAA;EAAA;EACehF,IACjB;IAED,IAAAiF,UAAe;IACf,IAAAC,MAAU,GAAAjF,sBAAQ;MAChBkF,MAAM,EAAAjF,qBAAqB;MAC5BkF,MAAA;QACDC,OAAU;UACNC,MAAA;YACHC,MAAA,iBAAAA,CAAA/D,KAAA,EAAAsD,KAAA;cACM,IAAO;gBAAAU,EAAA;gBAAAN,MAAY,EAAAO;cAAA,IAAcjE,KAAA;cACjC,MAAOgE,EAAA,CAAAF,MAAW,CAACD,OAAG,CAAAK,MAAS,CAAAZ,KAAS;cACzCW,OAAO,SAAY,IAAGA,OAAK,uBAAAA,OAAA,CAAAE,WAAA;gBAC1BV,UAAY,EAAK;cACzB;gBAEIW,OAAA;cACA,CAAQ;YACT;UACA;QACA;MACF;MACAC,mBAAW,WAAAA,CAAA;QACT;MACA;MACA5C;IACF;IACAD,oBAAe;IAAuB,IACpCW,MAAQ,SAAAuB,MAAA,CAAAY,qBAAA;MACRC,QAAQ;MAAAC,OACN,EAAAlE,WAAS;QAAAtB,EACP;QAAQyF,OACN;QACElE,IAAA;MAA+B;MACzBmE,cACJ;IAAS;IACHnG,MAAA,CAAA4D,MACP,CAAAwC,QAAA,CAAAhG,SAAA,IAAAwD,MAAA,EAAAyC,OAAA;IACDrG,MAAA,CAAAgD,EAAA,CAAAa,OAAM,wBAAyB,EAAEK,GAAA,CAAI,GAAAmC,OAAM,EAAe;MAC5D5F,EACF;MACFyF,OAAA;MACFlE,IAAA;IACA,EAA6B,CAC7B;IACFhC,MAAC,CAAAgD,EAAA,CAAAa,OAAA,iCAAAK,GAAA,IAAAmC,OAAA,EAED;MACE7D,aAAU;MACVE,QAAS,YAAY;MACtB4D,cAAA;IAED,EACA;IAAsEtG,MAClE,CAAA4D,MAAI,CAAM2C,UAAS,EAAAC,YAAY;IAAWxG,MAC1C,CAAA4D,MAAI,CAAM2C,UAAS,IAAAV,OAAY,EAAAY,IAAA,KAAQ;IAC3C,MAAC7C,MAAA,CAAA2C,UAAA,IAAAG,IAAA;IACF1G,MAAA,CAAAkF,UAAA,EAAAuB,IAAA;EAED;EACExG,IAAA,6DAAsC;IAAA+C,EACpC,CAAAa,OAAQ,6DAAAC,GAAA;IAAAd,EACR,CAAAa,OAAQ,6DAAAC,GAAA;IAAA,IACNqB,MAAA,GAASjF,sBAAA;MAAAkF,MACP,EAAAjF,qBAAQ;MAAAkF,MACN;QACEC,OAAA;UACAC,MAAA;YACFoB,QAAA,iBAAAA,CAAAlF,KAAA;cACF;gBAAAgE;cAAA,IAAAhE,KAAA;cACF,MAAAgE,EAAA,CAAAF,MAAA,CAAAD,OAAA,CAAAK,MAAA;gBACFlF,EAAA;gBACAyF,OAAA,MAAqB;gBACrBlE,IAAA;cACD;cAEK,MAASyD,EAAA,CAAAF,MAAM,CAAAD,OAAO,CAAAsB,MAAA;gBAChBnG,EAAA;gBACDuB,IAAA;cACH;YACJ;UACA;QACD;MACF;MAED8D,mBAAe,EAAiB,SAAAA,CAAA,EAAW;QACzC,OAAO;MACP;MACD5C;IACD;IACA,IAAAU,MAAU,SAAQuB,MAAA,CAAAY,qBAAA;MAChBC,QAAA;MACDC,OAAA,EAAAlE,WAAA;IACD;IAGA/B,MAAA,CAAO4D,MAAK,CAAAwC,QAAM,CAAAhG,SAAc,EAAE,EAAAwD,MAAA,EAAAyC,OAAc;IAAArG,MAC9C,CAAAgD,EAAO,CAAAa,OAAA,sCAAAK,GAAA,IAAAmC,OAAA,EACP;MACD5F,EAAA;MACFyF,OAAA;MAEIlE,IAAA;IACH,GACA;MACEvB,EAAA,MAAQ;MAAayF,OAAA;MACtBlE,IAAA;IACD,EAAsC,CACpC;EAAQ;EACA/B,IAAA,wEAC8B;IAAA,IACtCkF,MAAA,GAAAjF,sBAAA;MACAkF,MAAA,EAAAjF,qBAA6B;MAC7BkF,MAAA;QACDC,OAAA;UAEKC,MAAA;YACJsB,IAAU,EAAE,eAAAA,CAAUpF,KAAM,EAAAsD,KAAO;cACnC,IAAS;gBAAAU;cAAA,IAAYhE,KAAG;cAClB,MAAAgE,EAAA,CAAAF,MAAA,CAAAD,OAAA,CAAAK,MAAA,CAAAZ,KAAA;cACJ,MAAS,IAAAH,KAAA;YACT;UACD;QACF;MAED;MACAkB,mBAAkB,WAAAA,CAAA;QACnB;MAED,CAAK;MACH5C;IACA;IAAiE,IAC/DU,MAAQ,SAASuB,MAAM,CAAAY,qBAAyD;MAC9EC,QAAM,MAAG;MACTC,OAAA,EAAMlE,WAAU;QAClBtB,EAAA;QACDyF,OAAA;QACDlE,IAAM;MACJ;IAAQ,EACR;IAAQhC,MACN,CAAA4D,MAAS,CAAAwC,QAAE,CAAQhG,SAAA,IAAAwD,MAAiB,EAAAkD,aAAA;MACtC9B,KAAA;MACA+B,OAAA;IAA6B,EAC7B;IACF/G,MAAC,CAAAgD,EAAA,CAAAa,OAAA,0BAAAK,GAAA,IAAAmC,OAAA;IAEDrG,MAAM,CAAAgD,EAAA,CAAAa,OAAS,4CAAmC,EAAAmD,GAAA,IAAAX,OAAA;MAChDC,cAAY,EAAI;IAAmB,EACnC;IAA0C,IACxCW,MAAI,GAAAjE,EAAA,CAAAa,OAAA,wCAAAmD,GAAA;IAAAhH,MACJ,CAAAsC,IAAA,CAAAoC,KAAS,CAAAuC,MAAA,CAAArD,MAAA,GAAAkD,aAAA;MAAA9B,KACT,OAAM;MACR+B,OAAC;IACH,CAAC;EAED;EAAmE9G,IACjE,+EAAO;IAAA,IACPiH,iBAAS,GAAA7G,WAAA,sBAAA8G,CAAA;MACV,OAAAA,CAAA,CAAAC,GAAA;IACD;IACD,IAAAC,gBAAA,GAAAjH,SAAA,YAAA8G,iBAAA;MAEDvB,MAAK,iBAAAA,CAAA,GACH;IACA;IACA,IAAAR,MAAM,GAAAjF,sBAAoB;MAC1BkF,MAAM,EAAAjF,qBAAmB;MACzBkF,MAAM;QAENC,OAAM;UACJC,MAAA,EAAA8B;QACE;MAAA;MACMvB,mBACM,WAAAA,CAAA;QAAA,OACN;MAAS;MAEL5C;IAAW;IACb,IAAAU,MACF,SAAAuB,MAAA,CAAAY,qBAAA;MAAAC,QACF;QAAAvF,EACF;QAAA6G,IACA;MACE;MACArB,OAAA,EAAAlE,WAAY,oBAAa;QACzBtB,EAAA;QAAwByF,OAC1B;QACFlE,IAAA;MAAA;IACA,EACF;IACFhC,MAAE,CAAA4D,MAAQ,CAAAwC,QAAQ,CAAAhG,SAAQ,IAAAwD,MAAA,EAAAyC,OAAA;IAC1BrG,MAAA,CAAOgD,EAAA,CAAAa,OAAU,wBAAa,EAAAK,GAAA,IAAAmC,OAAA;EAC9B;EACFpG,IAAC;IAED,IAAKiH,iBAAA,GAAA7G,WAAA,sBAAA8G,CAAA;MACH,OAAMA,CAAA,CAAAC,GAAA,CAAS;IAAuB,EACpC;IAAQ,IACRC,gBAAQ,GAAAjH,SAAA,YAAA8G,iBAAA;MAAAvB,MACN,iBAAAA,CAASlE,KAAA,EAAAsD,KAAA;QAAA,IACP;UAAAU;QAAA,CAAQ,GAAAhE,KAAA;QAAA,MACNgE,EAAA,CAAAF,MAAQ,CAAAD,OAAS,CAAGK,MAAG,CAAAZ,KAAA;QACrB,UAAAH,KAAS,8BAAoC;MAAA;IAC/C;IACF,IACFO,MAAA,GAAAjF,sBAAA;MACFkF,MAAA,EAAAjF,qBAAA;MACAkF,MAAA;QACAC,OAAA;UACDC,MAAA,EAAA8B;QACD;MACE;MACAvB,mBAAS,WAAAA,CAAA;QACT,OAAM;MACR;MAEA5C;IAAmC,EACjC;IAAU,IACVU,MAAA,GAAS,MAAAuB,MAAY,CAAGY,qBAAkB;MAC3CC,QAAA;QACDvF,EAAM;QACJ6G,IAAA;MACA;MACDrB,OAAA,EAAAlE,WAAA;QAEDtB,EAAA,EAAQ;QACNyF,OAAO;QACRlE,IAAA;MACD;IAA8E,EAC5E;IACFhC,MAAC,CAAA4D,MAAA,CAAAwC,QAAA,CAAAhG,SAAA,IAAAwD,MAAA,EAAAkD,aAAA;MACD9B,KAAO,OAAG;MACR+B,OAAO;IACT,CAAC;IAED/G,MAAM,CAAAgD,EAAA,CAAAa,OAAO,wBAAsB,EAAAK,GAAA,IAAAmC,OAAA;EAAA;EACvBpG,IACV,6CAAwB;IAC1B,IAACsH,QAAA;IACD,IAAAC,gBAAkB;IAAiE,IACjFN,iBAAO,GAAA7G,WAAA,sBAAA8G,CAAA;MACR,OAAAA,CAAA,CAAAC,GAAA;IACF;IAED,IAAKC,gBAAA,GAAAjH,SAAA,YAAA8G,iBAAA;IACH,IAAAnC,KAAM;MACJtE,EAAA,MAAQ;MACRyF,OAAA,EAAQ;MAAAlE,IACN;IAAM;IACI,MAAAhC,MACN,CAAAqH,gBAAoB,CAAA1B,MAAG;MACrBF,EAAA;QAA0CF,MAC5C;UAAAD,OACA;YACEK,MAAA,EAAM,eAAAA,CAAenB,GAAA;cACvB+C,QAAA,GAAA/C,GAAA;YACA;UACE;QAA0C;MAC5C;MAEEiD,GAAA,iBAAAA,CAASC,MAAO,EAAAlD,GAAK;QAAqBgD,gBAC5C;QAAAxH,MACF,CAAAwE,GAAA,EAAA6B,OAAA,CAAAtB,KAAA;QACF,UAAAH,KAAA;MACF;IAAA,GACAG,KAAA,GAAA4C,OAAA,CAAAC,OAAqB,SAAQ;IAAA5H,MAC7B,CAAAuH,QAAA,EAAAlB,OAAA,CAAAtB,KAAA;IACF/E,MAAC,CAAAwH,gBAAA,EAAAf,IAAA;EAED;EAAgCxG,IAC9B,2EAAI;IAAA,IACJkF,MAAM,GAAAjF,sBAAA;MACNkF,MAAM,EAAEjF,qBAAe;MACxBkF,MAAA;QACDC,OAAM,EAAO;UACPC,MAAA;YACEC,MAAA,iBAAAA,CAAA/D,KAAA,EAAAoG,MAAA;cACE;gBAAApC;cAAO,IAAAhE,KAAS;cACzB,MAAAgE,EAAA,CAAAF,MAAA,CAAAD,OAAA,CAAAK,MAAA,CAAAkC,MAAA;YACK;UACA;QACJ;MACD;MAED/B,mBAAkB,WAAAA,CAAA;QAChB,OAAS;MACT;MACA5C;IACF,CAAC;IACD,IAAA6B,KAAM;MACJtE,EAAA;MAAAyF,OACM;MAAAlE,IACJ;IAAM;IACkB,MAC1BmD,MAAA,CAAAY,qBAAA;MACDC,QAAA;MACDC,OAAM,EAAAlE,WAAO,IAAY,gBAAc,EAAAgD,KAAA;IACrC;IACA,IAAA+C,SAAM,GAAQ,MAAG3C,MAAc,CAAKY,qBAAa,CAAS;MAAQC,QAC5D;MAAAC,OACJ,EAAMlE,WAAA,sBAAAgD,KAAA;IAAA;IACkB/E,MACzB,CAAA8H,SAAA,CAAA1B,QAAA,CAAAhG,SAAA,IAAAwD,MAAA,EAAAkD,aAAA;MACD9B,KAAA,EAAM;IAAA;IACmDhF,MACvD,CAAAgD,EAAA,CAAAa,OAAS,4CAAQ,EAAAmD,GAAA,IAAAX,OAAA;MAAAC,cACjB;IAAA;IACWtG,MACT,CAAAgD,EAAA,CAAAa,OAAM,mDAAAmD,GAAA,IAAAX,OAAA;MAAA0B,KACN;IAAwC;IAC1C,MACD5C,MAAA,CAAAY,qBAAA;MACFC,QAAA;MAEDC,OAAM,EAAAnD,cAAmB;IACzB;IACA9C,MAAA,CAAOgD,EAAA,CAAAa,OAAU,iDAAU,EAAAmD,GAAA,IAAAX,OAAA;MACzB0B,KAAE;IAA2D,EAC7D;EAA6D;EACA9H,IAC7D,4EAA6D;IAC/D,IAACkF,MAAA,GAAAjF,sBAAA;MACFkF,MAAA,EAAAtE,iBAAA;MAEDuE,MAAK;QACH/E,IAAM;UACJiF,MAAQ;YACRI,MAAS,iBAAAA,CAAAlE,KAAA,EAAAsD,KAAA;cACT;gBAAAU;cAAA,IAAqBhE,KAAA;cACrB,MAAAgE,EAAA,CAAAF,MAAA,CAAAjF,IAAA,CAAAqF,MAAA,CAAAZ,KAAA;YACD;YAEKiD,MAAO,iBAAAA,CAAcvG,KAAa,EAAAsD,KAAO;cAC7C;gBAAAU;cAAA,IAAAhE,KAAA;cACM,MAAAgE,EAAA,CAAAF,MAAA,CAAAjF,IAAA,CAAA0H,MAAA,CAAAjD,KAAA;YACJ;YACE6B,MAAA,iBAAAA,CAAAnF,KAAA,EAAAsD,KAAA;cACE,IAAI;gBAAAU;cAAA,IAAAhE,KAAA;cACJ,MAAQgE,EAAA,CAAAF,MAAA,CAAAjF,IAAA,CAAAsG,MAAA,CAAA7B,KAAA;YACR;YACFkD,MAAA,iBAAAA,CAAAxG,KAAA,EAAAsD,KAAA;cACF;gBAAAU;cAAA,IAAAhE,KAAA;cACF,MAAAgE,EAAA,CAAAF,MAAA,CAAAjF,IAAA,CAAA2H,MAAA,CAAAlD,KAAA;YACD;UACF;QAEI;MACH;MACEe,mBAAI,WAAAA,CAAA;QACJ,OAAM;MACN;MACF5C;IACA;IACA,MAAMiC,MAAA,CAAAI,MAAA,CAAAjF,IAAA,CAAmBqF,MAAA;MACvBlF,EAAA,MAAM;MACJC,IAAA,OAAS;MACXC,IAAA;QACAgE,KAAM;MACJ;IAAQ,EACV;IAAA,MACAQ,MAAM,CAAAI,MAAS,CAAAjF,IAAe,CAAA0H,MAAA,CAAkB;MAC9CvH,EAAA;MACAC,IAAA,MAAO;MACTC,IAAA;QACFgE,KAAA;MACA;IAEA;IAAsC,MACpCQ,MAAQ,CAAAI,MAAA,CAAAjF,IAAA,CAAAsG,MAAA;MACRnG,EAAA,MAAQ;MACRC,IAAA;IAA6B,EAC7B;IACFV,MAAC,CAAAgD,EAAA,CAAAa,OAAA,+BAAAmD,GAAA,IAAAX,OAAA;MAED5B,OAAM;MACJ/D,IAAA,GAAO;MACPC,IAAA,EAAA2B,IAAS,CAAAC,SAAQ;QACnBoC,KAAO;MACR;IACF","ignoreList":[]}