on-zero 0.0.1

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 (371) hide show
  1. package/LICENSE +21 -0
  2. package/cli.cjs +3 -0
  3. package/dist/cjs/cli.cjs +405 -0
  4. package/dist/cjs/cli.js +397 -0
  5. package/dist/cjs/cli.js.map +6 -0
  6. package/dist/cjs/cli.native.js +505 -0
  7. package/dist/cjs/cli.native.js.map +1 -0
  8. package/dist/cjs/constants.cjs +28 -0
  9. package/dist/cjs/constants.js +22 -0
  10. package/dist/cjs/constants.js.map +6 -0
  11. package/dist/cjs/constants.native.js +31 -0
  12. package/dist/cjs/constants.native.js.map +1 -0
  13. package/dist/cjs/createPermissions.cjs +82 -0
  14. package/dist/cjs/createPermissions.js +77 -0
  15. package/dist/cjs/createPermissions.js.map +6 -0
  16. package/dist/cjs/createPermissions.native.js +107 -0
  17. package/dist/cjs/createPermissions.native.js.map +1 -0
  18. package/dist/cjs/createUseQuery.cjs +59 -0
  19. package/dist/cjs/createUseQuery.js +34 -0
  20. package/dist/cjs/createUseQuery.js.map +6 -0
  21. package/dist/cjs/createUseQuery.native.js +70 -0
  22. package/dist/cjs/createUseQuery.native.js.map +1 -0
  23. package/dist/cjs/createZeroClient.cjs +162 -0
  24. package/dist/cjs/createZeroClient.js +126 -0
  25. package/dist/cjs/createZeroClient.js.map +6 -0
  26. package/dist/cjs/createZeroClient.native.js +214 -0
  27. package/dist/cjs/createZeroClient.native.js.map +1 -0
  28. package/dist/cjs/createZeroServer.cjs +148 -0
  29. package/dist/cjs/createZeroServer.js +126 -0
  30. package/dist/cjs/createZeroServer.js.map +6 -0
  31. package/dist/cjs/createZeroServer.native.js +170 -0
  32. package/dist/cjs/createZeroServer.native.js.map +1 -0
  33. package/dist/cjs/helpers/batchQuery.cjs +49 -0
  34. package/dist/cjs/helpers/batchQuery.js +38 -0
  35. package/dist/cjs/helpers/batchQuery.js.map +6 -0
  36. package/dist/cjs/helpers/batchQuery.native.js +49 -0
  37. package/dist/cjs/helpers/batchQuery.native.js.map +1 -0
  38. package/dist/cjs/helpers/createMutators.cjs +90 -0
  39. package/dist/cjs/helpers/createMutators.js +85 -0
  40. package/dist/cjs/helpers/createMutators.js.map +6 -0
  41. package/dist/cjs/helpers/createMutators.native.js +132 -0
  42. package/dist/cjs/helpers/createMutators.native.js.map +1 -0
  43. package/dist/cjs/helpers/didRunPermissionCheck.cjs +30 -0
  44. package/dist/cjs/helpers/didRunPermissionCheck.js +26 -0
  45. package/dist/cjs/helpers/didRunPermissionCheck.js.map +6 -0
  46. package/dist/cjs/helpers/didRunPermissionCheck.native.js +39 -0
  47. package/dist/cjs/helpers/didRunPermissionCheck.native.js.map +1 -0
  48. package/dist/cjs/helpers/ensureLoggedIn.cjs +33 -0
  49. package/dist/cjs/helpers/ensureLoggedIn.js +25 -0
  50. package/dist/cjs/helpers/ensureLoggedIn.js.map +6 -0
  51. package/dist/cjs/helpers/ensureLoggedIn.native.js +36 -0
  52. package/dist/cjs/helpers/ensureLoggedIn.native.js.map +1 -0
  53. package/dist/cjs/helpers/getQueryOrMutatorAuthData.cjs +30 -0
  54. package/dist/cjs/helpers/getQueryOrMutatorAuthData.js +24 -0
  55. package/dist/cjs/helpers/getQueryOrMutatorAuthData.js.map +6 -0
  56. package/dist/cjs/helpers/getQueryOrMutatorAuthData.native.js +33 -0
  57. package/dist/cjs/helpers/getQueryOrMutatorAuthData.native.js.map +1 -0
  58. package/dist/cjs/helpers/mutatorContext.cjs +40 -0
  59. package/dist/cjs/helpers/mutatorContext.js +36 -0
  60. package/dist/cjs/helpers/mutatorContext.js.map +6 -0
  61. package/dist/cjs/helpers/mutatorContext.native.js +43 -0
  62. package/dist/cjs/helpers/mutatorContext.native.js.map +1 -0
  63. package/dist/cjs/helpers/prettyFormatZeroQuery.cjs +107 -0
  64. package/dist/cjs/helpers/prettyFormatZeroQuery.js +92 -0
  65. package/dist/cjs/helpers/prettyFormatZeroQuery.js.map +6 -0
  66. package/dist/cjs/helpers/prettyFormatZeroQuery.native.js +119 -0
  67. package/dist/cjs/helpers/prettyFormatZeroQuery.native.js.map +1 -0
  68. package/dist/cjs/helpers/useZeroDebug.cjs +68 -0
  69. package/dist/cjs/helpers/useZeroDebug.js +49 -0
  70. package/dist/cjs/helpers/useZeroDebug.js.map +6 -0
  71. package/dist/cjs/helpers/useZeroDebug.native.js +81 -0
  72. package/dist/cjs/helpers/useZeroDebug.native.js.map +1 -0
  73. package/dist/cjs/index.cjs +42 -0
  74. package/dist/cjs/index.js +35 -0
  75. package/dist/cjs/index.js.map +6 -0
  76. package/dist/cjs/index.native.js +45 -0
  77. package/dist/cjs/index.native.js.map +1 -0
  78. package/dist/cjs/mutations.cjs +51 -0
  79. package/dist/cjs/mutations.js +44 -0
  80. package/dist/cjs/mutations.js.map +6 -0
  81. package/dist/cjs/mutations.native.js +56 -0
  82. package/dist/cjs/mutations.native.js.map +1 -0
  83. package/dist/cjs/queryRegistry.cjs +33 -0
  84. package/dist/cjs/queryRegistry.js +28 -0
  85. package/dist/cjs/queryRegistry.js.map +6 -0
  86. package/dist/cjs/queryRegistry.native.js +36 -0
  87. package/dist/cjs/queryRegistry.native.js.map +1 -0
  88. package/dist/cjs/resolveQuery.cjs +41 -0
  89. package/dist/cjs/resolveQuery.js +40 -0
  90. package/dist/cjs/resolveQuery.js.map +6 -0
  91. package/dist/cjs/resolveQuery.native.js +46 -0
  92. package/dist/cjs/resolveQuery.native.js.map +1 -0
  93. package/dist/cjs/run.cjs +48 -0
  94. package/dist/cjs/run.js +37 -0
  95. package/dist/cjs/run.js.map +6 -0
  96. package/dist/cjs/run.native.js +52 -0
  97. package/dist/cjs/run.native.js.map +1 -0
  98. package/dist/cjs/server.cjs +18 -0
  99. package/dist/cjs/server.js +15 -0
  100. package/dist/cjs/server.js.map +6 -0
  101. package/dist/cjs/server.native.js +21 -0
  102. package/dist/cjs/server.native.js.map +1 -0
  103. package/dist/cjs/serverWhere.cjs +29 -0
  104. package/dist/cjs/serverWhere.js +24 -0
  105. package/dist/cjs/serverWhere.js.map +6 -0
  106. package/dist/cjs/serverWhere.native.js +32 -0
  107. package/dist/cjs/serverWhere.native.js.map +1 -0
  108. package/dist/cjs/state.cjs +49 -0
  109. package/dist/cjs/state.js +37 -0
  110. package/dist/cjs/state.js.map +6 -0
  111. package/dist/cjs/state.native.js +54 -0
  112. package/dist/cjs/state.native.js.map +1 -0
  113. package/dist/cjs/types.cjs +16 -0
  114. package/dist/cjs/types.js +14 -0
  115. package/dist/cjs/types.js.map +6 -0
  116. package/dist/cjs/types.native.js +19 -0
  117. package/dist/cjs/types.native.js.map +1 -0
  118. package/dist/cjs/where.cjs +41 -0
  119. package/dist/cjs/where.js +35 -0
  120. package/dist/cjs/where.js.map +6 -0
  121. package/dist/cjs/where.native.js +46 -0
  122. package/dist/cjs/where.native.js.map +1 -0
  123. package/dist/cjs/zeroRunner.cjs +34 -0
  124. package/dist/cjs/zeroRunner.js +32 -0
  125. package/dist/cjs/zeroRunner.js.map +6 -0
  126. package/dist/cjs/zeroRunner.native.js +37 -0
  127. package/dist/cjs/zeroRunner.native.js.map +1 -0
  128. package/dist/cjs/zql.cjs +31 -0
  129. package/dist/cjs/zql.js +26 -0
  130. package/dist/cjs/zql.js.map +6 -0
  131. package/dist/cjs/zql.native.js +35 -0
  132. package/dist/cjs/zql.native.js.map +1 -0
  133. package/dist/esm/cli.js +383 -0
  134. package/dist/esm/cli.js.map +6 -0
  135. package/dist/esm/cli.mjs +384 -0
  136. package/dist/esm/cli.mjs.map +1 -0
  137. package/dist/esm/cli.native.js +481 -0
  138. package/dist/esm/cli.native.js.map +1 -0
  139. package/dist/esm/constants.js +6 -0
  140. package/dist/esm/constants.js.map +6 -0
  141. package/dist/esm/constants.mjs +4 -0
  142. package/dist/esm/constants.mjs.map +1 -0
  143. package/dist/esm/constants.native.js +4 -0
  144. package/dist/esm/constants.native.js.map +1 -0
  145. package/dist/esm/createPermissions.js +66 -0
  146. package/dist/esm/createPermissions.js.map +6 -0
  147. package/dist/esm/createPermissions.mjs +59 -0
  148. package/dist/esm/createPermissions.mjs.map +1 -0
  149. package/dist/esm/createPermissions.native.js +81 -0
  150. package/dist/esm/createPermissions.native.js.map +1 -0
  151. package/dist/esm/createUseQuery.js +21 -0
  152. package/dist/esm/createUseQuery.js.map +6 -0
  153. package/dist/esm/createUseQuery.mjs +36 -0
  154. package/dist/esm/createUseQuery.mjs.map +1 -0
  155. package/dist/esm/createUseQuery.native.js +44 -0
  156. package/dist/esm/createUseQuery.native.js.map +1 -0
  157. package/dist/esm/createZeroClient.js +135 -0
  158. package/dist/esm/createZeroClient.js.map +6 -0
  159. package/dist/esm/createZeroClient.mjs +139 -0
  160. package/dist/esm/createZeroClient.mjs.map +1 -0
  161. package/dist/esm/createZeroClient.native.js +188 -0
  162. package/dist/esm/createZeroClient.native.js.map +1 -0
  163. package/dist/esm/createZeroServer.js +121 -0
  164. package/dist/esm/createZeroServer.js.map +6 -0
  165. package/dist/esm/createZeroServer.mjs +125 -0
  166. package/dist/esm/createZeroServer.mjs.map +1 -0
  167. package/dist/esm/createZeroServer.native.js +144 -0
  168. package/dist/esm/createZeroServer.native.js.map +1 -0
  169. package/dist/esm/helpers/batchQuery.js +22 -0
  170. package/dist/esm/helpers/batchQuery.js.map +6 -0
  171. package/dist/esm/helpers/batchQuery.mjs +26 -0
  172. package/dist/esm/helpers/batchQuery.mjs.map +1 -0
  173. package/dist/esm/helpers/batchQuery.native.js +23 -0
  174. package/dist/esm/helpers/batchQuery.native.js.map +1 -0
  175. package/dist/esm/helpers/createMutators.js +71 -0
  176. package/dist/esm/helpers/createMutators.js.map +6 -0
  177. package/dist/esm/helpers/createMutators.mjs +67 -0
  178. package/dist/esm/helpers/createMutators.mjs.map +1 -0
  179. package/dist/esm/helpers/createMutators.native.js +106 -0
  180. package/dist/esm/helpers/createMutators.native.js.map +1 -0
  181. package/dist/esm/helpers/didRunPermissionCheck.js +10 -0
  182. package/dist/esm/helpers/didRunPermissionCheck.js.map +6 -0
  183. package/dist/esm/helpers/didRunPermissionCheck.mjs +6 -0
  184. package/dist/esm/helpers/didRunPermissionCheck.mjs.map +1 -0
  185. package/dist/esm/helpers/didRunPermissionCheck.native.js +12 -0
  186. package/dist/esm/helpers/didRunPermissionCheck.native.js.map +1 -0
  187. package/dist/esm/helpers/ensureLoggedIn.js +10 -0
  188. package/dist/esm/helpers/ensureLoggedIn.js.map +6 -0
  189. package/dist/esm/helpers/ensureLoggedIn.mjs +10 -0
  190. package/dist/esm/helpers/ensureLoggedIn.mjs.map +1 -0
  191. package/dist/esm/helpers/ensureLoggedIn.native.js +10 -0
  192. package/dist/esm/helpers/ensureLoggedIn.native.js.map +1 -0
  193. package/dist/esm/helpers/getQueryOrMutatorAuthData.js +9 -0
  194. package/dist/esm/helpers/getQueryOrMutatorAuthData.js.map +6 -0
  195. package/dist/esm/helpers/getQueryOrMutatorAuthData.mjs +7 -0
  196. package/dist/esm/helpers/getQueryOrMutatorAuthData.mjs.map +1 -0
  197. package/dist/esm/helpers/getQueryOrMutatorAuthData.native.js +7 -0
  198. package/dist/esm/helpers/getQueryOrMutatorAuthData.native.js.map +1 -0
  199. package/dist/esm/helpers/mutatorContext.js +20 -0
  200. package/dist/esm/helpers/mutatorContext.js.map +6 -0
  201. package/dist/esm/helpers/mutatorContext.mjs +15 -0
  202. package/dist/esm/helpers/mutatorContext.mjs.map +1 -0
  203. package/dist/esm/helpers/mutatorContext.native.js +15 -0
  204. package/dist/esm/helpers/mutatorContext.native.js.map +1 -0
  205. package/dist/esm/helpers/prettyFormatZeroQuery.js +76 -0
  206. package/dist/esm/helpers/prettyFormatZeroQuery.js.map +6 -0
  207. package/dist/esm/helpers/prettyFormatZeroQuery.mjs +84 -0
  208. package/dist/esm/helpers/prettyFormatZeroQuery.mjs.map +1 -0
  209. package/dist/esm/helpers/prettyFormatZeroQuery.native.js +93 -0
  210. package/dist/esm/helpers/prettyFormatZeroQuery.native.js.map +1 -0
  211. package/dist/esm/helpers/useZeroDebug.js +35 -0
  212. package/dist/esm/helpers/useZeroDebug.js.map +6 -0
  213. package/dist/esm/helpers/useZeroDebug.mjs +45 -0
  214. package/dist/esm/helpers/useZeroDebug.mjs.map +1 -0
  215. package/dist/esm/helpers/useZeroDebug.native.js +55 -0
  216. package/dist/esm/helpers/useZeroDebug.native.js.map +1 -0
  217. package/dist/esm/index.js +20 -0
  218. package/dist/esm/index.js.map +6 -0
  219. package/dist/esm/index.mjs +17 -0
  220. package/dist/esm/index.mjs.map +1 -0
  221. package/dist/esm/index.native.js +17 -0
  222. package/dist/esm/index.native.js.map +1 -0
  223. package/dist/esm/mutations.js +28 -0
  224. package/dist/esm/mutations.js.map +6 -0
  225. package/dist/esm/mutations.mjs +28 -0
  226. package/dist/esm/mutations.mjs.map +1 -0
  227. package/dist/esm/mutations.native.js +30 -0
  228. package/dist/esm/mutations.native.js.map +1 -0
  229. package/dist/esm/queryRegistry.js +12 -0
  230. package/dist/esm/queryRegistry.js.map +6 -0
  231. package/dist/esm/queryRegistry.mjs +9 -0
  232. package/dist/esm/queryRegistry.mjs.map +1 -0
  233. package/dist/esm/queryRegistry.native.js +9 -0
  234. package/dist/esm/queryRegistry.native.js.map +1 -0
  235. package/dist/esm/resolveQuery.js +24 -0
  236. package/dist/esm/resolveQuery.js.map +6 -0
  237. package/dist/esm/resolveQuery.mjs +18 -0
  238. package/dist/esm/resolveQuery.mjs.map +1 -0
  239. package/dist/esm/resolveQuery.native.js +20 -0
  240. package/dist/esm/resolveQuery.native.js.map +1 -0
  241. package/dist/esm/run.js +22 -0
  242. package/dist/esm/run.js.map +6 -0
  243. package/dist/esm/run.mjs +24 -0
  244. package/dist/esm/run.mjs.map +1 -0
  245. package/dist/esm/run.native.js +25 -0
  246. package/dist/esm/run.native.js.map +1 -0
  247. package/dist/esm/server.js +2 -0
  248. package/dist/esm/server.js.map +6 -0
  249. package/dist/esm/server.mjs +2 -0
  250. package/dist/esm/server.mjs.map +1 -0
  251. package/dist/esm/server.native.js +2 -0
  252. package/dist/esm/server.native.js.map +1 -0
  253. package/dist/esm/serverWhere.js +8 -0
  254. package/dist/esm/serverWhere.js.map +6 -0
  255. package/dist/esm/serverWhere.mjs +6 -0
  256. package/dist/esm/serverWhere.mjs.map +1 -0
  257. package/dist/esm/serverWhere.native.js +6 -0
  258. package/dist/esm/serverWhere.native.js.map +1 -0
  259. package/dist/esm/state.js +21 -0
  260. package/dist/esm/state.js.map +6 -0
  261. package/dist/esm/state.mjs +22 -0
  262. package/dist/esm/state.mjs.map +1 -0
  263. package/dist/esm/state.native.js +24 -0
  264. package/dist/esm/state.native.js.map +1 -0
  265. package/dist/esm/types.js +1 -0
  266. package/dist/esm/types.js.map +6 -0
  267. package/dist/esm/types.mjs +2 -0
  268. package/dist/esm/types.mjs.map +1 -0
  269. package/dist/esm/types.native.js +2 -0
  270. package/dist/esm/types.native.js.map +1 -0
  271. package/dist/esm/where.js +20 -0
  272. package/dist/esm/where.js.map +6 -0
  273. package/dist/esm/where.mjs +17 -0
  274. package/dist/esm/where.mjs.map +1 -0
  275. package/dist/esm/where.native.js +19 -0
  276. package/dist/esm/where.native.js.map +1 -0
  277. package/dist/esm/zeroRunner.js +16 -0
  278. package/dist/esm/zeroRunner.js.map +6 -0
  279. package/dist/esm/zeroRunner.mjs +10 -0
  280. package/dist/esm/zeroRunner.mjs.map +1 -0
  281. package/dist/esm/zeroRunner.native.js +10 -0
  282. package/dist/esm/zeroRunner.native.js.map +1 -0
  283. package/dist/esm/zql.js +10 -0
  284. package/dist/esm/zql.js.map +6 -0
  285. package/dist/esm/zql.mjs +8 -0
  286. package/dist/esm/zql.mjs.map +1 -0
  287. package/dist/esm/zql.native.js +9 -0
  288. package/dist/esm/zql.native.js.map +1 -0
  289. package/package.json +98 -0
  290. package/readme.md +594 -0
  291. package/src/cli.ts +626 -0
  292. package/src/constants.native.ts +3 -0
  293. package/src/constants.ts +3 -0
  294. package/src/createPermissions.ts +131 -0
  295. package/src/createUseQuery.tsx +82 -0
  296. package/src/createZeroClient.tsx +301 -0
  297. package/src/createZeroServer.ts +226 -0
  298. package/src/helpers/batchQuery.ts +46 -0
  299. package/src/helpers/createMutators.ts +138 -0
  300. package/src/helpers/didRunPermissionCheck.ts +16 -0
  301. package/src/helpers/ensureLoggedIn.ts +11 -0
  302. package/src/helpers/getQueryOrMutatorAuthData.ts +12 -0
  303. package/src/helpers/mutatorContext.ts +25 -0
  304. package/src/helpers/prettyFormatZeroQuery.ts +167 -0
  305. package/src/helpers/useZeroDebug.ts +102 -0
  306. package/src/index.ts +18 -0
  307. package/src/mutations.ts +133 -0
  308. package/src/queryRegistry.ts +12 -0
  309. package/src/resolveQuery.ts +44 -0
  310. package/src/run.ts +62 -0
  311. package/src/server.ts +1 -0
  312. package/src/serverWhere.ts +21 -0
  313. package/src/state.ts +32 -0
  314. package/src/types.ts +136 -0
  315. package/src/where.ts +58 -0
  316. package/src/zeroRunner.ts +28 -0
  317. package/src/zql.ts +10 -0
  318. package/types/cli.d.ts +3 -0
  319. package/types/cli.d.ts.map +1 -0
  320. package/types/constants.d.ts +3 -0
  321. package/types/constants.d.ts.map +1 -0
  322. package/types/constants.native.d.ts +3 -0
  323. package/types/constants.native.d.ts.map +1 -0
  324. package/types/createPermissions.d.ts +10 -0
  325. package/types/createPermissions.d.ts.map +1 -0
  326. package/types/createUseQuery.d.ts +20 -0
  327. package/types/createUseQuery.d.ts.map +1 -0
  328. package/types/createZeroClient.d.ts +35 -0
  329. package/types/createZeroClient.d.ts.map +1 -0
  330. package/types/createZeroServer.d.ts +146 -0
  331. package/types/createZeroServer.d.ts.map +1 -0
  332. package/types/helpers/batchQuery.d.ts +7 -0
  333. package/types/helpers/batchQuery.d.ts.map +1 -0
  334. package/types/helpers/createMutators.d.ts +10 -0
  335. package/types/helpers/createMutators.d.ts.map +1 -0
  336. package/types/helpers/didRunPermissionCheck.d.ts +4 -0
  337. package/types/helpers/didRunPermissionCheck.d.ts.map +1 -0
  338. package/types/helpers/ensureLoggedIn.d.ts +3 -0
  339. package/types/helpers/ensureLoggedIn.d.ts.map +1 -0
  340. package/types/helpers/getQueryOrMutatorAuthData.d.ts +3 -0
  341. package/types/helpers/getQueryOrMutatorAuthData.d.ts.map +1 -0
  342. package/types/helpers/mutatorContext.d.ts +5 -0
  343. package/types/helpers/mutatorContext.d.ts.map +1 -0
  344. package/types/helpers/prettyFormatZeroQuery.d.ts +3 -0
  345. package/types/helpers/prettyFormatZeroQuery.d.ts.map +1 -0
  346. package/types/helpers/useZeroDebug.d.ts +3 -0
  347. package/types/helpers/useZeroDebug.d.ts.map +1 -0
  348. package/types/index.d.ts +17 -0
  349. package/types/index.d.ts.map +1 -0
  350. package/types/mutations.d.ts +20 -0
  351. package/types/mutations.d.ts.map +1 -0
  352. package/types/queryRegistry.d.ts +3 -0
  353. package/types/queryRegistry.d.ts.map +1 -0
  354. package/types/resolveQuery.d.ts +11 -0
  355. package/types/resolveQuery.d.ts.map +1 -0
  356. package/types/run.d.ts +7 -0
  357. package/types/run.d.ts.map +1 -0
  358. package/types/server.d.ts +2 -0
  359. package/types/server.d.ts.map +1 -0
  360. package/types/serverWhere.d.ts +5 -0
  361. package/types/serverWhere.d.ts.map +1 -0
  362. package/types/state.d.ts +8 -0
  363. package/types/state.d.ts.map +1 -0
  364. package/types/types.d.ts +78 -0
  365. package/types/types.d.ts.map +1 -0
  366. package/types/where.d.ts +6 -0
  367. package/types/where.d.ts.map +1 -0
  368. package/types/zeroRunner.d.ts +6 -0
  369. package/types/zeroRunner.d.ts.map +1 -0
  370. package/types/zql.d.ts +3 -0
  371. package/types/zql.d.ts.map +1 -0
@@ -0,0 +1,188 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { defineQueries, defineQuery } from "@rocicorp/zero";
3
+ import { useConnectionState, useZero, ZeroProvider, useQuery as zeroUseQuery } from "@rocicorp/zero/react";
4
+ import { createEmitter, mapObject } from "@take-out/helpers";
5
+ import { createContext, memo, use, useEffect, useMemo, useRef } from "react";
6
+ import { createPermissions } from "./createPermissions.native.js";
7
+ import { createUseQuery } from "./createUseQuery.native.js";
8
+ import { createMutators } from "./helpers/createMutators.native.js";
9
+ import { prettyFormatZeroQuery } from "./helpers/prettyFormatZeroQuery.native.js";
10
+ import { registerQuery } from "./queryRegistry.native.js";
11
+ import { resolveQuery } from "./resolveQuery.native.js";
12
+ import { setCustomQueries } from "./run.native.js";
13
+ import { setAuthData, setSchema } from "./state.native.js";
14
+ import { setRunner } from "./zeroRunner.native.js";
15
+ function createZeroClient(param) {
16
+ var {
17
+ schema,
18
+ models,
19
+ groupedQueries
20
+ } = param;
21
+ setSchema(schema);
22
+ var wrappedNamespaces = {},
23
+ _iteratorNormalCompletion = !0,
24
+ _didIteratorError = !1,
25
+ _iteratorError = void 0;
26
+ try {
27
+ for (var _iterator = Object.entries(groupedQueries)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
28
+ var [namespace, queries] = _step.value;
29
+ wrappedNamespaces[namespace] = {};
30
+ var _iteratorNormalCompletion1 = !0,
31
+ _didIteratorError1 = !1,
32
+ _iteratorError1 = void 0;
33
+ try {
34
+ for (var _loop = function () {
35
+ var [name, fn] = _step1.value;
36
+ registerQuery(fn, `${namespace}.${name}`), wrappedNamespaces[namespace][name] = defineQuery(function (param2) {
37
+ var {
38
+ args
39
+ } = param2;
40
+ return fn(args);
41
+ });
42
+ }, _iterator1 = Object.entries(queries)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = !0) _loop();
43
+ } catch (err) {
44
+ _didIteratorError1 = !0, _iteratorError1 = err;
45
+ } finally {
46
+ try {
47
+ !_iteratorNormalCompletion1 && _iterator1.return != null && _iterator1.return();
48
+ } finally {
49
+ if (_didIteratorError1) throw _iteratorError1;
50
+ }
51
+ }
52
+ }
53
+ } catch (err) {
54
+ _didIteratorError = !0, _iteratorError = err;
55
+ } finally {
56
+ try {
57
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
58
+ } finally {
59
+ if (_didIteratorError) throw _iteratorError;
60
+ }
61
+ }
62
+ var customQueries = defineQueries(wrappedNamespaces);
63
+ setCustomQueries(customQueries);
64
+ var DisabledContext = /* @__PURE__ */createContext(!1),
65
+ modelWritePermissions = mapObject(models, function (val) {
66
+ return val.permissions;
67
+ }),
68
+ latestZeroInstance = null,
69
+ zero = new Proxy({}, {
70
+ get(_, key) {
71
+ if (latestZeroInstance === null) throw new Error("Zero instance not initialized. Ensure ZeroProvider is mounted before accessing 'zero'.");
72
+ return Reflect.get(latestZeroInstance, key, latestZeroInstance);
73
+ }
74
+ }),
75
+ permissionsHelpers = createPermissions({
76
+ schema,
77
+ environment: "client"
78
+ }),
79
+ zeroEvents = createEmitter("zero", null),
80
+ AuthDataContext = /* @__PURE__ */createContext({}),
81
+ useAuthData = function () {
82
+ return use(AuthDataContext);
83
+ },
84
+ useQuery = createUseQuery({
85
+ DisabledContext,
86
+ customQueries
87
+ });
88
+ function usePermission(table, objOrId) {
89
+ var enabled = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : typeof objOrId < "u",
90
+ debug = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : !1,
91
+ disabled = use(DisabledContext),
92
+ authData = useAuthData(),
93
+ permission = modelWritePermissions[table],
94
+ query = function () {
95
+ var baseQuery = zero.query[table].one();
96
+ return disabled || !enabled || !permission ? baseQuery : baseQuery.where(function (eb) {
97
+ return permissionsHelpers.buildPermissionQuery(authData, eb, permission, objOrId);
98
+ });
99
+ }(),
100
+ [data, status] = zeroUseQuery(query, {
101
+ enabled: !!(enabled && permission && authData && objOrId)
102
+ });
103
+ debug && console.info("usePermission()", {
104
+ data,
105
+ status,
106
+ authData,
107
+ permission
108
+ }, prettyFormatZeroQuery(query));
109
+ var result = data,
110
+ allowed = !!result;
111
+ return objOrId ? allowed : !1;
112
+ }
113
+ var ProvideZero = function (param2) {
114
+ var {
115
+ children,
116
+ authData: authDataIn,
117
+ disable,
118
+ ...props
119
+ } = param2,
120
+ authData = authDataIn ?? null,
121
+ mutators = useMemo(function () {
122
+ return setAuthData(authData), createMutators({
123
+ models,
124
+ environment: "client",
125
+ authData,
126
+ can: permissionsHelpers.can
127
+ });
128
+ }, [authData]);
129
+ return disable ? children : /* @__PURE__ */_jsx(AuthDataContext.Provider, {
130
+ value: authData,
131
+ children: /* @__PURE__ */_jsxs(ZeroProvider, {
132
+ schema,
133
+ kvStore: "mem",
134
+ mutators,
135
+ ...props,
136
+ children: [/* @__PURE__ */_jsx(SetZeroInstance, {}), /* @__PURE__ */_jsx(ConnectionMonitor, {
137
+ zeroEvents
138
+ }), children]
139
+ })
140
+ });
141
+ },
142
+ SetZeroInstance = function () {
143
+ var zeroInstance = useZero();
144
+ return zeroInstance !== latestZeroInstance && (latestZeroInstance = zeroInstance, setRunner(function (query, options) {
145
+ return zeroInstance.run(query, options);
146
+ })), null;
147
+ },
148
+ ConnectionMonitor = /* @__PURE__ */memo(function (param2) {
149
+ var {
150
+ zeroEvents: zeroEvents2
151
+ } = param2,
152
+ state = useConnectionState(),
153
+ prevState = useRef(state.name);
154
+ return useEffect(function () {
155
+ if (state.name !== prevState.current) {
156
+ var reason = "reason" in state ? state.reason : "";
157
+ if (prevState.current = state.name, state.name === "error" || state.name === "needs-auth") {
158
+ var message = typeof reason == "string" ? reason : state.name;
159
+ zeroEvents2.emit({
160
+ type: "error",
161
+ message
162
+ });
163
+ }
164
+ }
165
+ }, [state, zeroEvents2]), null;
166
+ });
167
+ function preload(fnArg, paramsOrOptions, optionsArg) {
168
+ var hasParams = optionsArg !== void 0 || paramsOrOptions && !("ttl" in paramsOrOptions),
169
+ params = hasParams ? paramsOrOptions : void 0,
170
+ options = hasParams ? optionsArg : paramsOrOptions,
171
+ queryRequest = resolveQuery({
172
+ customQueries,
173
+ fn: fnArg,
174
+ params
175
+ });
176
+ return zero.preload(queryRequest, options);
177
+ }
178
+ return {
179
+ zeroEvents,
180
+ ProvideZero,
181
+ useQuery,
182
+ usePermission,
183
+ zero,
184
+ preload
185
+ };
186
+ }
187
+ export { createZeroClient };
188
+ //# sourceMappingURL=createZeroClient.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["jsx","_jsx","jsxs","_jsxs","defineQueries","defineQuery","useConnectionState","useZero","ZeroProvider","useQuery","zeroUseQuery","createEmitter","mapObject","createContext","memo","use","useEffect","useMemo","useRef","createPermissions","createUseQuery","createMutators","prettyFormatZeroQuery","registerQuery","resolveQuery","setCustomQueries","setAuthData","setSchema","setRunner","createZeroClient","param","schema","models","groupedQueries","wrappedNamespaces","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Object","entries","Symbol","iterator","_step","next","done","namespace","queries","value","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_loop","name","fn","_step1","param2","args","_iterator1","err","return","customQueries","DisabledContext","modelWritePermissions","val","permissions","latestZeroInstance","zero","Proxy","get","_","key","Error","Reflect","permissionsHelpers","environment","zeroEvents","AuthDataContext","useAuthData","usePermission","table","objOrId","enabled","arguments","length","debug","disabled","authData","permission","query","baseQuery","one","where","eb","buildPermissionQuery","data","status","console","info","result","allowed","ProvideZero","children","authDataIn","disable","props","mutators","can","Provider","kvStore","SetZeroInstance","ConnectionMonitor","zeroInstance","options","run","zeroEvents2","state","prevState","current","reason","message","emit","type"],"sources":["../../src/createZeroClient.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,121 @@
1
+ import { mustGetQuery } from "@rocicorp/zero";
2
+ import { PushProcessor } from "@rocicorp/zero/pg";
3
+ import { handleQueryRequest as zeroHandleQueryRequest } from "@rocicorp/zero/server";
4
+ import { zeroNodePg } from "@rocicorp/zero/server/adapters/pg";
5
+ import { assertString, randomId } from "@take-out/helpers";
6
+ import { Pool } from "pg";
7
+ import { createPermissions } from "./createPermissions";
8
+ import { createMutators } from "./helpers/createMutators";
9
+ import { isInZeroMutation, mutatorContext } from "./helpers/mutatorContext";
10
+ import { setCustomQueries } from "./run";
11
+ import { setAuthData, setSchema } from "./state";
12
+ import { setRunner } from "./zeroRunner";
13
+ function createZeroServer({
14
+ createServerActions,
15
+ database,
16
+ schema,
17
+ models,
18
+ queries
19
+ }) {
20
+ setSchema(schema);
21
+ const dbString = assertString(database, 'createZeroServer "database"'), zeroDb = zeroNodePg(
22
+ schema,
23
+ new Pool({
24
+ connectionString: dbString,
25
+ // handle self-signed certificates in production
26
+ ssl: dbString.includes("sslmode=require") ? { rejectUnauthorized: !1 } : void 0
27
+ })
28
+ ), permissions = createPermissions({
29
+ environment: "server",
30
+ schema
31
+ }), processor = new PushProcessor(zeroDb), handleMutationRequest = async ({
32
+ authData,
33
+ request,
34
+ skipAsyncTasks
35
+ }) => {
36
+ const asyncTasks = [], mutators = createMutators({
37
+ asyncTasks,
38
+ can: permissions.can,
39
+ createServerActions,
40
+ environment: "server",
41
+ models,
42
+ authData
43
+ }), response = await processor.process(mutators, request);
44
+ if (!skipAsyncTasks && asyncTasks.length) {
45
+ const id = randomId();
46
+ console.info(`[push] complete, running async tasks ${asyncTasks.length} id ${id}`), Promise.all(asyncTasks.map((task) => task())).then(() => {
47
+ console.info(`[push] async tasks complete ${id}`);
48
+ }).catch((err) => {
49
+ console.error("[push] error: async tasks failed \u{1F61E}", err);
50
+ });
51
+ }
52
+ return {
53
+ response,
54
+ asyncTasks
55
+ };
56
+ }, handleQueryRequest = async ({
57
+ authData,
58
+ request
59
+ }) => {
60
+ if (!queries)
61
+ throw new Error(
62
+ "No queries registered with createZeroServer. Pass the syncedQueries registry to createZeroServer via the queries option."
63
+ );
64
+ return setAuthData(authData || {}), {
65
+ response: await zeroHandleQueryRequest(
66
+ (name, args) => mustGetQuery(queries, name).fn({ args, ctx: authData }),
67
+ schema,
68
+ request
69
+ )
70
+ };
71
+ }, mutate = async (run, authData) => {
72
+ const asyncTasks = [], mutators = createMutators({
73
+ models,
74
+ environment: "server",
75
+ asyncTasks,
76
+ authData: {
77
+ id: "",
78
+ email: "admin@start.chat",
79
+ role: "admin",
80
+ ...authData
81
+ },
82
+ createServerActions,
83
+ can: permissions.can
84
+ });
85
+ await transaction(async (tx) => {
86
+ await run(tx, mutators);
87
+ }), await Promise.all(asyncTasks.map((t) => t()));
88
+ };
89
+ async function transaction(query2) {
90
+ try {
91
+ if (isInZeroMutation()) {
92
+ const { tx } = mutatorContext();
93
+ return await query2(tx);
94
+ }
95
+ return await zeroDb.transaction(query2, dummyTransactionInput);
96
+ } catch (err) {
97
+ throw console.error(`Error running transaction(): ${err}`), err;
98
+ }
99
+ }
100
+ function query(cb) {
101
+ return transaction(async (tx) => cb(tx.query));
102
+ }
103
+ queries && setCustomQueries(queries), setRunner((queryObj) => transaction(async (tx) => tx.run(queryObj)));
104
+ const dummyTransactionInput = {
105
+ clientGroupID: "unused",
106
+ clientID: "unused",
107
+ mutationID: 42,
108
+ upstreamSchema: "unused"
109
+ };
110
+ return {
111
+ handleMutationRequest,
112
+ handleQueryRequest,
113
+ transaction,
114
+ mutate,
115
+ query
116
+ };
117
+ }
118
+ export {
119
+ createZeroServer
120
+ };
121
+ //# sourceMappingURL=createZeroServer.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/createZeroServer.ts"],
4
+ "mappings": "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",
5
+ "names": ["query"]
6
+ }
@@ -0,0 +1,125 @@
1
+ import { mustGetQuery } from "@rocicorp/zero";
2
+ import { PushProcessor } from "@rocicorp/zero/pg";
3
+ import { handleQueryRequest as zeroHandleQueryRequest } from "@rocicorp/zero/server";
4
+ import { zeroNodePg } from "@rocicorp/zero/server/adapters/pg";
5
+ import { assertString, randomId } from "@take-out/helpers";
6
+ import { Pool } from "pg";
7
+ import { createPermissions } from "./createPermissions.mjs";
8
+ import { createMutators } from "./helpers/createMutators.mjs";
9
+ import { isInZeroMutation, mutatorContext } from "./helpers/mutatorContext.mjs";
10
+ import { setCustomQueries } from "./run.mjs";
11
+ import { setAuthData, setSchema } from "./state.mjs";
12
+ import { setRunner } from "./zeroRunner.mjs";
13
+ function createZeroServer({
14
+ createServerActions,
15
+ database,
16
+ schema,
17
+ models,
18
+ queries
19
+ }) {
20
+ setSchema(schema);
21
+ const dbString = assertString(database, 'createZeroServer "database"'),
22
+ zeroDb = zeroNodePg(schema, new Pool({
23
+ connectionString: dbString,
24
+ // handle self-signed certificates in production
25
+ ssl: dbString.includes("sslmode=require") ? {
26
+ rejectUnauthorized: !1
27
+ } : void 0
28
+ })),
29
+ permissions = createPermissions({
30
+ environment: "server",
31
+ schema
32
+ }),
33
+ processor = new PushProcessor(zeroDb),
34
+ handleMutationRequest = async ({
35
+ authData,
36
+ request,
37
+ skipAsyncTasks
38
+ }) => {
39
+ const asyncTasks = [],
40
+ mutators = createMutators({
41
+ asyncTasks,
42
+ can: permissions.can,
43
+ createServerActions,
44
+ environment: "server",
45
+ models,
46
+ authData
47
+ }),
48
+ response = await processor.process(mutators, request);
49
+ if (!skipAsyncTasks && asyncTasks.length) {
50
+ const id = randomId();
51
+ console.info(`[push] complete, running async tasks ${asyncTasks.length} id ${id}`), Promise.all(asyncTasks.map(task => task())).then(() => {
52
+ console.info(`[push] async tasks complete ${id}`);
53
+ }).catch(err => {
54
+ console.error("[push] error: async tasks failed \u{1F61E}", err);
55
+ });
56
+ }
57
+ return {
58
+ response,
59
+ asyncTasks
60
+ };
61
+ },
62
+ handleQueryRequest = async ({
63
+ authData,
64
+ request
65
+ }) => {
66
+ if (!queries) throw new Error("No queries registered with createZeroServer. Pass the syncedQueries registry to createZeroServer via the queries option.");
67
+ return setAuthData(authData || {}), {
68
+ response: await zeroHandleQueryRequest((name, args) => mustGetQuery(queries, name).fn({
69
+ args,
70
+ ctx: authData
71
+ }), schema, request)
72
+ };
73
+ },
74
+ mutate = async (run, authData) => {
75
+ const asyncTasks = [],
76
+ mutators = createMutators({
77
+ models,
78
+ environment: "server",
79
+ asyncTasks,
80
+ authData: {
81
+ id: "",
82
+ email: "admin@start.chat",
83
+ role: "admin",
84
+ ...authData
85
+ },
86
+ createServerActions,
87
+ can: permissions.can
88
+ });
89
+ await transaction(async tx => {
90
+ await run(tx, mutators);
91
+ }), await Promise.all(asyncTasks.map(t => t()));
92
+ };
93
+ async function transaction(query2) {
94
+ try {
95
+ if (isInZeroMutation()) {
96
+ const {
97
+ tx
98
+ } = mutatorContext();
99
+ return await query2(tx);
100
+ }
101
+ return await zeroDb.transaction(query2, dummyTransactionInput);
102
+ } catch (err) {
103
+ throw console.error(`Error running transaction(): ${err}`), err;
104
+ }
105
+ }
106
+ function query(cb) {
107
+ return transaction(async tx => cb(tx.query));
108
+ }
109
+ queries && setCustomQueries(queries), setRunner(queryObj => transaction(async tx => tx.run(queryObj)));
110
+ const dummyTransactionInput = {
111
+ clientGroupID: "unused",
112
+ clientID: "unused",
113
+ mutationID: 42,
114
+ upstreamSchema: "unused"
115
+ };
116
+ return {
117
+ handleMutationRequest,
118
+ handleQueryRequest,
119
+ transaction,
120
+ mutate,
121
+ query
122
+ };
123
+ }
124
+ export { createZeroServer };
125
+ //# sourceMappingURL=createZeroServer.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["mustGetQuery","PushProcessor","handleQueryRequest","zeroHandleQueryRequest","zeroNodePg","assertString","randomId","Pool","createPermissions","createMutators","isInZeroMutation","mutatorContext","setCustomQueries","setAuthData","setSchema","setRunner","createZeroServer","createServerActions","database","schema","models","queries","dbString","zeroDb","connectionString","ssl","includes","rejectUnauthorized","permissions","environment","processor","handleMutationRequest","authData","request","skipAsyncTasks","asyncTasks","mutators","can","response","process","length","id","console","info","Promise","all","map","task","then","catch","err","error","Error","name","args","fn","ctx","mutate","run","email","role","transaction","tx","t","query2","dummyTransactionInput","query","cb","queryObj","clientGroupID","clientID","mutationID","upstreamSchema"],"sources":["../../src/createZeroServer.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,YAAA,QAAoB;AAC7B,SAASC,aAAA,QAAqB;AAC9B,SAASC,kBAAA,IAAsBC,sBAAA,QAA8B;AAC7D,SAASC,UAAA,QAAkB;AAC3B,SAASC,YAAA,EAAcC,QAAA,QAAgB;AACvC,SAASC,IAAA,QAAY;AAErB,SAASC,iBAAA,QAAyB;AAClC,SAASC,cAAA,QAAsB;AAC/B,SAASC,gBAAA,EAAkBC,cAAA,QAAsB;AACjD,SAASC,gBAAA,QAAwB;AACjC,SAASC,WAAA,EAAaC,SAAA,QAAiB;AACvC,SAASC,SAAA,QAAiB;AAiBnB,SAASC,iBAId;EACAC,mBAAA;EACAC,QAAA;EACAC,MAAA;EACAC,MAAA;EACAC;AACF,GASG;EACDP,SAAA,CAAUK,MAAM;EAEhB,MAAMG,QAAA,GAAWjB,YAAA,CAAaa,QAAA,EAAU,6BAA6B;IAE/DK,MAAA,GAASnB,UAAA,CACbe,MAAA,EACA,IAAIZ,IAAA,CAAK;MACPiB,gBAAA,EAAkBF,QAAA;MAAA;MAElBG,GAAA,EAAKH,QAAA,CAASI,QAAA,CAAS,iBAAiB,IACpC;QAAEC,kBAAA,EAAoB;MAAM,IAC5B;IACN,CAAC,CACH;IAEMC,WAAA,GAAcpB,iBAAA,CAA0B;MAC5CqB,WAAA,EAAa;MACbV;IACF,CAAC;IAEKW,SAAA,GAAY,IAAI7B,aAAA,CAAcsB,MAAM;IAEpCQ,qBAAA,GAAwB,MAAAA,CAAO;MACnCC,QAAA;MACAC,OAAA;MACAC;IACF,MAIM;MAEJ,MAAMC,UAAA,GAA4B,EAAC;QAE7BC,QAAA,GAAW3B,cAAA,CAAe;UAC9B0B,UAAA;UACAE,GAAA,EAAKT,WAAA,CAAYS,GAAA;UACjBpB,mBAAA;UACAY,WAAA,EAAa;UACbT,MAAA;UACAY;QACF,CAAC;QAGKM,QAAA,GAAW,MAAMR,SAAA,CAAUS,OAAA,CAAQH,QAAA,EAAUH,OAAO;MAG1D,IAAI,CAACC,cAAA,IAAkBC,UAAA,CAAWK,MAAA,EAAQ;QACxC,MAAMC,EAAA,GAAKnC,QAAA,CAAS;QACpBoC,OAAA,CAAQC,IAAA,CAAK,wCAAwCR,UAAA,CAAWK,MAAM,OAAOC,EAAE,EAAE,GACjFG,OAAA,CAAQC,GAAA,CAAIV,UAAA,CAAWW,GAAA,CAAKC,IAAA,IAASA,IAAA,CAAK,CAAC,CAAC,EACzCC,IAAA,CAAK,MAAM;UACVN,OAAA,CAAQC,IAAA,CAAK,+BAA+BF,EAAE,EAAE;QAClD,CAAC,EACAQ,KAAA,CAAOC,GAAA,IAAQ;UACdR,OAAA,CAAQS,KAAA,CAAM,8CAAuCD,GAAG;QAC1D,CAAC;MACL;MAEA,OAAO;QACLZ,QAAA;QACAH;MACF;IACF;IAEMjC,kBAAA,GAAqB,MAAAA,CAAO;MAChC8B,QAAA;MACAC;IACF,MAGM;MACJ,IAAI,CAACZ,OAAA,EACH,MAAM,IAAI+B,KAAA,CACR,0HAEF;MAIF,OAAAvC,WAAA,CAAYmB,QAAA,IAAa,CAAC,CAAc,GAWjC;QACLM,QAAA,EAVe,MAAMnC,sBAAA,CACrB,CAACkD,IAAA,EAAMC,IAAA,KACUtD,YAAA,CAAqBqB,OAAA,EAASgC,IAAI,EACpCE,EAAA,CAAG;UAAED,IAAA;UAAME,GAAA,EAAKxB;QAAS,CAAC,GAEzCb,MAAA,EACAc,OACF;MAIA;IACF;IAEMwB,MAAA,GAAS,MAAAA,CACbC,GAAA,EACA1B,QAAA,KACG;MACH,MAAMG,UAAA,GAAyC,EAAC;QAE1CC,QAAA,GAAW3B,cAAA,CAAe;UAC9BW,MAAA;UACAS,WAAA,EAAa;UACbM,UAAA;UACAH,QAAA,EAAU;YACRS,EAAA,EAAI;YACJkB,KAAA,EAAO;YACPC,IAAA,EAAM;YACN,GAAG5B;UACL;UACAf,mBAAA;UACAoB,GAAA,EAAKT,WAAA,CAAYS;QACnB,CAAC;MAED,MAAMwB,WAAA,CAAY,MAAOC,EAAA,IAAO;QAC9B,MAAMJ,GAAA,CAAII,EAAA,EAAI1B,QAAQ;MACxB,CAAC,GAED,MAAMQ,OAAA,CAAQC,GAAA,CAAIV,UAAA,CAAWW,GAAA,CAAKiB,CAAA,IAAMA,CAAA,CAAE,CAAC,CAAC;IAC9C;EAEA,eAAeF,YAGbG,MAAA,EAA6B;IAC7B,IAAI;MACF,IAAItD,gBAAA,CAAiB,GAAG;QACtB,MAAM;UAAEoD;QAAG,IAAInD,cAAA,CAAe;QAC9B,OAAO,MAAMqD,MAAA,CAAMF,EAAE;MACvB;MAGA,OADe,MAAMvC,MAAA,CAAOsC,WAAA,CAAYG,MAAA,EAAOC,qBAAqB;IAEtE,SAASf,GAAA,EAAK;MACZ,MAAAR,OAAA,CAAQS,KAAA,CAAM,gCAAgCD,GAAG,EAAE,GAC7CA,GAAA;IACR;EACF;EAEA,SAASgB,MACPC,EAAA,EAC2B;IAC3B,OAAON,WAAA,CAAY,MAAOC,EAAA,IACjBK,EAAA,CAAGL,EAAA,CAAGI,KAAK,CACnB;EACH;EAGI7C,OAAA,IACFT,gBAAA,CAAiBS,OAAO,GAI1BN,SAAA,CAAWqD,QAAA,IACFP,WAAA,CAAY,MAAOC,EAAA,IACjBA,EAAA,CAAGJ,GAAA,CAAIU,QAAQ,CACvB,CACF;EAGD,MAAMH,qBAAA,GAAkD;IACtDI,aAAA,EAAe;IACfC,QAAA,EAAU;IACVC,UAAA,EAAY;IACZC,cAAA,EAAgB;EAClB;EAEA,OAAO;IACLzC,qBAAA;IACA7B,kBAAA;IACA2D,WAAA;IACAJ,MAAA;IACAS;EACF;AACF","ignoreList":[]}
@@ -0,0 +1,144 @@
1
+ import { mustGetQuery } from "@rocicorp/zero";
2
+ import { PushProcessor } from "@rocicorp/zero/pg";
3
+ import { handleQueryRequest as zeroHandleQueryRequest } from "@rocicorp/zero/server";
4
+ import { zeroNodePg } from "@rocicorp/zero/server/adapters/pg";
5
+ import { assertString, randomId } from "@take-out/helpers";
6
+ import { Pool } from "pg";
7
+ import { createPermissions } from "./createPermissions.native.js";
8
+ import { createMutators } from "./helpers/createMutators.native.js";
9
+ import { isInZeroMutation, mutatorContext } from "./helpers/mutatorContext.native.js";
10
+ import { setCustomQueries } from "./run.native.js";
11
+ import { setAuthData, setSchema } from "./state.native.js";
12
+ import { setRunner } from "./zeroRunner.native.js";
13
+ function createZeroServer(param) {
14
+ var {
15
+ createServerActions,
16
+ database,
17
+ schema,
18
+ models,
19
+ queries
20
+ } = param;
21
+ setSchema(schema);
22
+ var dbString = assertString(database, 'createZeroServer "database"'),
23
+ zeroDb = zeroNodePg(schema, new Pool({
24
+ connectionString: dbString,
25
+ // handle self-signed certificates in production
26
+ ssl: dbString.includes("sslmode=require") ? {
27
+ rejectUnauthorized: !1
28
+ } : void 0
29
+ })),
30
+ permissions = createPermissions({
31
+ environment: "server",
32
+ schema
33
+ }),
34
+ processor = new PushProcessor(zeroDb),
35
+ handleMutationRequest = async function (param2) {
36
+ var {
37
+ authData,
38
+ request,
39
+ skipAsyncTasks
40
+ } = param2,
41
+ asyncTasks = [],
42
+ mutators = createMutators({
43
+ asyncTasks,
44
+ can: permissions.can,
45
+ createServerActions,
46
+ environment: "server",
47
+ models,
48
+ authData
49
+ }),
50
+ response = await processor.process(mutators, request);
51
+ if (!skipAsyncTasks && asyncTasks.length) {
52
+ var id = randomId();
53
+ console.info(`[push] complete, running async tasks ${asyncTasks.length} id ${id}`), Promise.all(asyncTasks.map(function (task) {
54
+ return task();
55
+ })).then(function () {
56
+ console.info(`[push] async tasks complete ${id}`);
57
+ }).catch(function (err) {
58
+ console.error("[push] error: async tasks failed \u{1F61E}", err);
59
+ });
60
+ }
61
+ return {
62
+ response,
63
+ asyncTasks
64
+ };
65
+ },
66
+ handleQueryRequest = async function (param2) {
67
+ var {
68
+ authData,
69
+ request
70
+ } = param2;
71
+ if (!queries) throw new Error("No queries registered with createZeroServer. Pass the syncedQueries registry to createZeroServer via the queries option.");
72
+ setAuthData(authData || {});
73
+ var response = await zeroHandleQueryRequest(function (name, args) {
74
+ var _$query = mustGetQuery(queries, name);
75
+ return _$query.fn({
76
+ args,
77
+ ctx: authData
78
+ });
79
+ }, schema, request);
80
+ return {
81
+ response
82
+ };
83
+ },
84
+ mutate = async function (run, authData) {
85
+ var asyncTasks = [],
86
+ mutators = createMutators({
87
+ models,
88
+ environment: "server",
89
+ asyncTasks,
90
+ authData: {
91
+ id: "",
92
+ email: "admin@start.chat",
93
+ role: "admin",
94
+ ...authData
95
+ },
96
+ createServerActions,
97
+ can: permissions.can
98
+ });
99
+ await transaction(async function (tx) {
100
+ await run(tx, mutators);
101
+ }), await Promise.all(asyncTasks.map(function (t) {
102
+ return t();
103
+ }));
104
+ };
105
+ async function transaction(query2) {
106
+ try {
107
+ if (isInZeroMutation()) {
108
+ var {
109
+ tx
110
+ } = mutatorContext();
111
+ return await query2(tx);
112
+ }
113
+ var output = await zeroDb.transaction(query2, dummyTransactionInput);
114
+ return output;
115
+ } catch (err) {
116
+ throw console.error(`Error running transaction(): ${err}`), err;
117
+ }
118
+ }
119
+ function query(cb) {
120
+ return transaction(async function (tx) {
121
+ return cb(tx.query);
122
+ });
123
+ }
124
+ queries && setCustomQueries(queries), setRunner(function (queryObj) {
125
+ return transaction(async function (tx) {
126
+ return tx.run(queryObj);
127
+ });
128
+ });
129
+ var dummyTransactionInput = {
130
+ clientGroupID: "unused",
131
+ clientID: "unused",
132
+ mutationID: 42,
133
+ upstreamSchema: "unused"
134
+ };
135
+ return {
136
+ handleMutationRequest,
137
+ handleQueryRequest,
138
+ transaction,
139
+ mutate,
140
+ query
141
+ };
142
+ }
143
+ export { createZeroServer };
144
+ //# sourceMappingURL=createZeroServer.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["mustGetQuery","PushProcessor","handleQueryRequest","zeroHandleQueryRequest","zeroNodePg","assertString","randomId","Pool","createPermissions","createMutators","isInZeroMutation","mutatorContext","setCustomQueries","setAuthData","setSchema","setRunner","createZeroServer","param","createServerActions","database","schema","models","queries","dbString","zeroDb","connectionString","ssl","includes","rejectUnauthorized","permissions","environment","processor","handleMutationRequest","param2","authData","request","skipAsyncTasks","asyncTasks","mutators","can","response","process","length","id","console","info","Promise","all","map","task","then","catch","err","error","Error","name","args","_$query","fn","ctx","mutate","run","email","role","transaction","tx","t","query2","output","dummyTransactionInput","query","cb","queryObj","clientGroupID","clientID","mutationID","upstreamSchema"],"sources":["../../src/createZeroServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ import { sleep } from "@take-out/helpers";
2
+ async function batchQuery(q, mapper, {
3
+ chunk,
4
+ pause = 0,
5
+ stopAfter = 1e5
6
+ } = { chunk: 20 }) {
7
+ let hasMore = !0, last = null, iterations = 0;
8
+ for (; hasMore; ) {
9
+ let query = q.limit(chunk);
10
+ last && (query = query.start(last));
11
+ const results = await query.run({ type: "complete" });
12
+ if (await mapper(results), results.length < chunk && (hasMore = !1), iterations > stopAfter) {
13
+ console.error(`[batchQuery] \u203C\uFE0F stopping batch, ran ${stopAfter} chunks`);
14
+ break;
15
+ }
16
+ pause && await sleep(pause);
17
+ }
18
+ }
19
+ export {
20
+ batchQuery
21
+ };
22
+ //# sourceMappingURL=batchQuery.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/helpers/batchQuery.ts"],
4
+ "mappings": "AAAA,SAAS,aAAa;AAItB,eAAsB,WACpB,GACA,QACA;AAAA,EACE;AAAA,EACA,QAAQ;AAAA,EACR,YAAY;AACd,IAII,EAAE,OAAO,GAAG,GAChB;AACA,MAAI,UAAU,IACV,OAAoB,MACpB,aAAa;AAEjB,SAAO,WAAS;AACd,QAAI,QAAQ,EAAE,MAAM,KAAK;AAEzB,IAAI,SACF,QAAQ,MAAM,MAAM,IAAI;AAG1B,UAAM,UAAU,MAAM,MAAM,IAAI,EAAE,MAAM,WAAW,CAAC;AAQpD,QANA,MAAM,OAAO,OAAiB,GAE1B,QAAQ,SAAS,UACnB,UAAU,KAGR,aAAa,WAAW;AAC1B,cAAQ,MAAM,iDAAuC,SAAS,SAAS;AACvE;AAAA,IACF;AAEA,IAAI,SACF,MAAM,MAAM,KAAK;AAAA,EAErB;AACF;",
5
+ "names": []
6
+ }