on-zero 0.7.10 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. package/{readme.md → README.md} +172 -231
  2. package/dist/cjs/cli.cjs +5 -2
  3. package/dist/cjs/cli.native.js +5 -2
  4. package/dist/cjs/cli.native.js.map +1 -1
  5. package/dist/cjs/combineZeroClients.cjs +2 -2
  6. package/dist/cjs/combineZeroClients.native.js +6 -6
  7. package/dist/cjs/combineZeroClients.native.js.map +1 -1
  8. package/dist/cjs/config.cjs +30 -0
  9. package/dist/cjs/config.native.js +33 -0
  10. package/dist/cjs/config.native.js.map +1 -0
  11. package/dist/cjs/createPermissions.cjs +2 -2
  12. package/dist/cjs/createPermissions.native.js +17 -27
  13. package/dist/cjs/createPermissions.native.js.map +1 -1
  14. package/dist/cjs/createUseQuery.cjs +3 -3
  15. package/dist/cjs/createUseQuery.native.js +4 -4
  16. package/dist/cjs/createUseQuery.native.js.map +1 -1
  17. package/dist/cjs/createUseQueryDirect.cjs +4 -3
  18. package/dist/cjs/createUseQueryDirect.native.js +14 -18
  19. package/dist/cjs/createUseQueryDirect.native.js.map +1 -1
  20. package/dist/cjs/createZeroClient.cjs +29 -9
  21. package/dist/cjs/createZeroClient.connection.test.cjs +11 -0
  22. package/dist/cjs/createZeroClient.connection.test.native.js +14 -7
  23. package/dist/cjs/createZeroClient.connection.test.native.js.map +1 -1
  24. package/dist/cjs/createZeroClient.native.js +58 -32
  25. package/dist/cjs/createZeroClient.native.js.map +1 -1
  26. package/dist/cjs/createZeroClient.recovery.test.cjs +90 -3
  27. package/dist/cjs/createZeroClient.recovery.test.native.js +109 -19
  28. package/dist/cjs/createZeroClient.recovery.test.native.js.map +1 -1
  29. package/dist/cjs/generate-helpers.cjs +70 -17
  30. package/dist/cjs/generate-helpers.native.js +110 -23
  31. package/dist/cjs/generate-helpers.native.js.map +1 -1
  32. package/dist/cjs/generate-layout.cjs +586 -0
  33. package/dist/cjs/generate-layout.native.js +1275 -0
  34. package/dist/cjs/generate-layout.native.js.map +1 -0
  35. package/dist/cjs/generate-lite.cjs +295 -27
  36. package/dist/cjs/generate-lite.native.js +854 -102
  37. package/dist/cjs/generate-lite.native.js.map +1 -1
  38. package/dist/cjs/generate-lite.test.cjs +433 -41
  39. package/dist/cjs/generate-lite.test.native.js +446 -41
  40. package/dist/cjs/generate-lite.test.native.js.map +1 -1
  41. package/dist/cjs/generate.cjs +172 -94
  42. package/dist/cjs/generate.native.js +324 -148
  43. package/dist/cjs/generate.native.js.map +1 -1
  44. package/dist/cjs/generate.test.cjs +362 -45
  45. package/dist/cjs/generate.test.native.js +374 -45
  46. package/dist/cjs/generate.test.native.js.map +1 -1
  47. package/dist/cjs/helpers/NullToOptional.cjs +18 -0
  48. package/dist/cjs/helpers/NullToOptional.native.js +21 -0
  49. package/dist/cjs/helpers/NullToOptional.native.js.map +1 -0
  50. package/dist/cjs/helpers/asyncContext.cjs +128 -0
  51. package/dist/cjs/helpers/asyncContext.native.js +87 -0
  52. package/dist/cjs/helpers/asyncContext.native.js.map +1 -0
  53. package/dist/cjs/helpers/batchQuery.cjs +2 -2
  54. package/dist/cjs/helpers/batchQuery.native.js +2 -2
  55. package/dist/cjs/helpers/batchQuery.native.js.map +1 -1
  56. package/dist/cjs/helpers/createMutators.cjs +7 -4
  57. package/dist/cjs/helpers/createMutators.native.js +12 -9
  58. package/dist/cjs/helpers/createMutators.native.js.map +1 -1
  59. package/dist/cjs/helpers/createMutators.test.native.js +2 -2
  60. package/dist/cjs/helpers/createMutators.test.native.js.map +1 -1
  61. package/dist/cjs/helpers/ellipsis.cjs +35 -0
  62. package/dist/cjs/helpers/ellipsis.native.js +38 -0
  63. package/dist/cjs/helpers/ellipsis.native.js.map +1 -0
  64. package/dist/cjs/helpers/emitter.cjs +99 -0
  65. package/dist/cjs/helpers/emitter.native.js +125 -0
  66. package/dist/cjs/helpers/emitter.native.js.map +1 -0
  67. package/dist/cjs/helpers/ensure.cjs +33 -0
  68. package/dist/cjs/helpers/ensure.native.js +37 -0
  69. package/dist/cjs/helpers/ensure.native.js.map +1 -0
  70. package/dist/cjs/helpers/ensureLoggedIn.cjs +2 -2
  71. package/dist/cjs/helpers/ensureLoggedIn.native.js +3 -3
  72. package/dist/cjs/helpers/ensureLoggedIn.native.js.map +1 -1
  73. package/dist/cjs/helpers/errors.cjs +40 -0
  74. package/dist/cjs/helpers/errors.native.js +152 -0
  75. package/dist/cjs/helpers/errors.native.js.map +1 -0
  76. package/dist/cjs/helpers/getCurrentComponentStack.cjs +71 -0
  77. package/dist/cjs/helpers/getCurrentComponentStack.native.js +93 -0
  78. package/dist/cjs/helpers/getCurrentComponentStack.native.js.map +1 -0
  79. package/dist/cjs/helpers/globalValue.cjs +39 -0
  80. package/dist/cjs/helpers/globalValue.native.js +42 -0
  81. package/dist/cjs/helpers/globalValue.native.js.map +1 -0
  82. package/dist/cjs/helpers/mapObject.cjs +36 -0
  83. package/dist/cjs/helpers/mapObject.native.js +39 -0
  84. package/dist/cjs/helpers/mapObject.native.js.map +1 -0
  85. package/dist/cjs/helpers/mutationLifecycle.cjs +251 -0
  86. package/dist/cjs/helpers/mutationLifecycle.native.js +392 -0
  87. package/dist/cjs/helpers/mutationLifecycle.native.js.map +1 -0
  88. package/dist/cjs/helpers/mutationLifecycle.test.cjs +174 -0
  89. package/dist/cjs/helpers/mutationLifecycle.test.native.js +182 -0
  90. package/dist/cjs/helpers/mutationLifecycle.test.native.js.map +1 -0
  91. package/dist/cjs/helpers/mutatorContext.cjs +3 -3
  92. package/dist/cjs/helpers/mutatorContext.native.js +5 -5
  93. package/dist/cjs/helpers/mutatorContext.native.js.map +1 -1
  94. package/dist/cjs/helpers/platform.cjs +31 -0
  95. package/dist/cjs/helpers/platform.native.js +33 -0
  96. package/dist/cjs/helpers/platform.native.js.map +1 -0
  97. package/dist/cjs/helpers/prettyFormatZeroQuery.cjs +2 -2
  98. package/dist/cjs/helpers/prettyFormatZeroQuery.native.js +7 -7
  99. package/dist/cjs/helpers/prettyFormatZeroQuery.native.js.map +1 -1
  100. package/dist/cjs/helpers/queryContext.cjs +2 -2
  101. package/dist/cjs/helpers/queryContext.native.js +4 -4
  102. package/dist/cjs/helpers/queryContext.native.js.map +1 -1
  103. package/dist/cjs/helpers/recoverZeroClient.cjs +14 -15
  104. package/dist/cjs/helpers/recoverZeroClient.native.js +26 -23
  105. package/dist/cjs/helpers/recoverZeroClient.native.js.map +1 -1
  106. package/dist/cjs/helpers/recoverZeroClient.test.cjs +10 -8
  107. package/dist/cjs/helpers/recoverZeroClient.test.native.js +17 -21
  108. package/dist/cjs/helpers/recoverZeroClient.test.native.js.map +1 -1
  109. package/dist/cjs/helpers/sleep.cjs +34 -0
  110. package/dist/cjs/helpers/sleep.native.js +39 -0
  111. package/dist/cjs/helpers/sleep.native.js.map +1 -0
  112. package/dist/cjs/helpers/time.cjs +47 -0
  113. package/dist/cjs/helpers/time.native.js +80 -0
  114. package/dist/cjs/helpers/time.native.js.map +1 -0
  115. package/dist/cjs/helpers/tuple.cjs +18 -0
  116. package/dist/cjs/helpers/tuple.native.js +21 -0
  117. package/dist/cjs/helpers/tuple.native.js.map +1 -0
  118. package/dist/cjs/helpers/useMutation.native.js +5 -5
  119. package/dist/cjs/helpers/useMutation.native.js.map +1 -1
  120. package/dist/cjs/helpers/useMutation.test.native.js +1 -1
  121. package/dist/cjs/helpers/useMutation.test.native.js.map +1 -1
  122. package/dist/cjs/helpers/useZeroDebug.cjs +2 -2
  123. package/dist/cjs/helpers/useZeroDebug.native.js +7 -8
  124. package/dist/cjs/helpers/useZeroDebug.native.js.map +1 -1
  125. package/dist/cjs/index.cjs +9 -1
  126. package/dist/cjs/index.native.js +8 -0
  127. package/dist/cjs/index.native.js.map +1 -1
  128. package/dist/cjs/instanceRegistry.cjs +16 -4
  129. package/dist/cjs/instanceRegistry.native.js +56 -6
  130. package/dist/cjs/instanceRegistry.native.js.map +1 -1
  131. package/dist/cjs/multi.cjs +34 -13
  132. package/dist/cjs/multi.native.js +39 -17
  133. package/dist/cjs/multi.native.js.map +1 -1
  134. package/dist/cjs/multiInstance.test.cjs +6 -2
  135. package/dist/cjs/multiInstance.test.native.js +13 -9
  136. package/dist/cjs/multiInstance.test.native.js.map +1 -1
  137. package/dist/cjs/multiInstanceNested.test.native.js +10 -10
  138. package/dist/cjs/multiInstanceNested.test.native.js.map +1 -1
  139. package/dist/cjs/multiPartition.test.cjs +85 -36
  140. package/dist/cjs/multiPartition.test.native.js +102 -39
  141. package/dist/cjs/multiPartition.test.native.js.map +1 -1
  142. package/dist/cjs/mutations.cjs +2 -2
  143. package/dist/cjs/mutations.native.js +4 -4
  144. package/dist/cjs/mutations.native.js.map +1 -1
  145. package/dist/cjs/mutations.test.native.js +3 -3
  146. package/dist/cjs/mutations.test.native.js.map +1 -1
  147. package/dist/cjs/provideZero.hydration.test.cjs +3 -3
  148. package/dist/cjs/provideZero.hydration.test.native.js +4 -4
  149. package/dist/cjs/provideZero.hydration.test.native.js.map +1 -1
  150. package/dist/cjs/run.cjs +1 -1
  151. package/dist/cjs/run.native.js +3 -3
  152. package/dist/cjs/run.native.js.map +1 -1
  153. package/dist/cjs/server.cjs +20 -16
  154. package/dist/cjs/server.native.js +50 -57
  155. package/dist/cjs/server.native.js.map +1 -1
  156. package/dist/cjs/server.test.cjs +129 -6
  157. package/dist/cjs/server.test.native.js +141 -10
  158. package/dist/cjs/server.test.native.js.map +1 -1
  159. package/dist/cjs/serverWhere.test.native.js +3 -3
  160. package/dist/cjs/serverWhere.test.native.js.map +1 -1
  161. package/dist/cjs/state.cjs +2 -2
  162. package/dist/cjs/state.native.js +10 -10
  163. package/dist/cjs/state.native.js.map +1 -1
  164. package/dist/cjs/usePermission.test.native.js +3 -3
  165. package/dist/cjs/usePermission.test.native.js.map +1 -1
  166. package/dist/cjs/useQuery.empty.test.cjs +3 -3
  167. package/dist/cjs/useQuery.empty.test.native.js +6 -6
  168. package/dist/cjs/useQuery.empty.test.native.js.map +1 -1
  169. package/dist/cjs/useQuery.ssr.test.native.js +2 -2
  170. package/dist/cjs/useQuery.ssr.test.native.js.map +1 -1
  171. package/dist/cjs/vite-plugin.cjs +7 -8
  172. package/dist/cjs/vite-plugin.native.js +11 -11
  173. package/dist/cjs/vite-plugin.native.js.map +1 -1
  174. package/dist/cjs/where.cjs +3 -3
  175. package/dist/cjs/where.native.js +4 -4
  176. package/dist/cjs/where.native.js.map +1 -1
  177. package/dist/esm/cli.mjs +6 -3
  178. package/dist/esm/cli.mjs.map +1 -1
  179. package/dist/esm/cli.native.js +6 -3
  180. package/dist/esm/cli.native.js.map +1 -1
  181. package/dist/esm/combineZeroClients.mjs +1 -1
  182. package/dist/esm/combineZeroClients.mjs.map +1 -1
  183. package/dist/esm/combineZeroClients.native.js +5 -5
  184. package/dist/esm/combineZeroClients.native.js.map +1 -1
  185. package/dist/esm/config.mjs +5 -0
  186. package/dist/esm/config.mjs.map +1 -0
  187. package/dist/esm/config.native.js +5 -0
  188. package/dist/esm/config.native.js.map +1 -0
  189. package/dist/esm/createPermissions.mjs +1 -1
  190. package/dist/esm/createPermissions.mjs.map +1 -1
  191. package/dist/esm/createPermissions.native.js +16 -26
  192. package/dist/esm/createPermissions.native.js.map +1 -1
  193. package/dist/esm/createUseQuery.mjs +2 -2
  194. package/dist/esm/createUseQuery.mjs.map +1 -1
  195. package/dist/esm/createUseQuery.native.js +3 -3
  196. package/dist/esm/createUseQuery.native.js.map +1 -1
  197. package/dist/esm/createUseQueryDirect.mjs +2 -1
  198. package/dist/esm/createUseQueryDirect.mjs.map +1 -1
  199. package/dist/esm/createUseQueryDirect.native.js +12 -16
  200. package/dist/esm/createUseQueryDirect.native.js.map +1 -1
  201. package/dist/esm/createZeroClient.connection.test.mjs +11 -0
  202. package/dist/esm/createZeroClient.connection.test.mjs.map +1 -1
  203. package/dist/esm/createZeroClient.connection.test.native.js +14 -7
  204. package/dist/esm/createZeroClient.connection.test.native.js.map +1 -1
  205. package/dist/esm/createZeroClient.mjs +25 -5
  206. package/dist/esm/createZeroClient.mjs.map +1 -1
  207. package/dist/esm/createZeroClient.native.js +54 -28
  208. package/dist/esm/createZeroClient.native.js.map +1 -1
  209. package/dist/esm/createZeroClient.recovery.test.mjs +90 -3
  210. package/dist/esm/createZeroClient.recovery.test.mjs.map +1 -1
  211. package/dist/esm/createZeroClient.recovery.test.native.js +109 -19
  212. package/dist/esm/createZeroClient.recovery.test.native.js.map +1 -1
  213. package/dist/esm/generate-helpers.mjs +70 -18
  214. package/dist/esm/generate-helpers.mjs.map +1 -1
  215. package/dist/esm/generate-helpers.native.js +110 -24
  216. package/dist/esm/generate-helpers.native.js.map +1 -1
  217. package/dist/esm/generate-layout.mjs +560 -0
  218. package/dist/esm/generate-layout.mjs.map +1 -0
  219. package/dist/esm/generate-layout.native.js +1246 -0
  220. package/dist/esm/generate-layout.native.js.map +1 -0
  221. package/dist/esm/generate-lite.mjs +296 -28
  222. package/dist/esm/generate-lite.mjs.map +1 -1
  223. package/dist/esm/generate-lite.native.js +855 -103
  224. package/dist/esm/generate-lite.native.js.map +1 -1
  225. package/dist/esm/generate-lite.test.mjs +434 -42
  226. package/dist/esm/generate-lite.test.mjs.map +1 -1
  227. package/dist/esm/generate-lite.test.native.js +447 -42
  228. package/dist/esm/generate-lite.test.native.js.map +1 -1
  229. package/dist/esm/generate.mjs +172 -96
  230. package/dist/esm/generate.mjs.map +1 -1
  231. package/dist/esm/generate.native.js +324 -150
  232. package/dist/esm/generate.native.js.map +1 -1
  233. package/dist/esm/generate.test.mjs +366 -49
  234. package/dist/esm/generate.test.mjs.map +1 -1
  235. package/dist/esm/generate.test.native.js +378 -49
  236. package/dist/esm/generate.test.native.js.map +1 -1
  237. package/dist/esm/helpers/NullToOptional.mjs +2 -0
  238. package/dist/esm/helpers/NullToOptional.mjs.map +1 -0
  239. package/dist/esm/helpers/NullToOptional.native.js +2 -0
  240. package/dist/esm/helpers/NullToOptional.native.js.map +1 -0
  241. package/dist/esm/helpers/asyncContext.mjs +102 -0
  242. package/dist/esm/helpers/asyncContext.mjs.map +1 -0
  243. package/dist/esm/helpers/asyncContext.native.js +58 -0
  244. package/dist/esm/helpers/asyncContext.native.js.map +1 -0
  245. package/dist/esm/helpers/batchQuery.mjs +1 -1
  246. package/dist/esm/helpers/batchQuery.native.js +1 -1
  247. package/dist/esm/helpers/createMutators.mjs +5 -2
  248. package/dist/esm/helpers/createMutators.mjs.map +1 -1
  249. package/dist/esm/helpers/createMutators.native.js +10 -7
  250. package/dist/esm/helpers/createMutators.native.js.map +1 -1
  251. package/dist/esm/helpers/createMutators.test.native.js +2 -2
  252. package/dist/esm/helpers/createMutators.test.native.js.map +1 -1
  253. package/dist/esm/helpers/ellipsis.mjs +10 -0
  254. package/dist/esm/helpers/ellipsis.mjs.map +1 -0
  255. package/dist/esm/helpers/ellipsis.native.js +10 -0
  256. package/dist/esm/helpers/ellipsis.native.js.map +1 -0
  257. package/dist/esm/helpers/emitter.mjs +72 -0
  258. package/dist/esm/helpers/emitter.mjs.map +1 -0
  259. package/dist/esm/helpers/emitter.native.js +95 -0
  260. package/dist/esm/helpers/emitter.native.js.map +1 -0
  261. package/dist/esm/helpers/ensure.mjs +8 -0
  262. package/dist/esm/helpers/ensure.mjs.map +1 -0
  263. package/dist/esm/helpers/ensure.native.js +9 -0
  264. package/dist/esm/helpers/ensure.native.js.map +1 -0
  265. package/dist/esm/helpers/ensureLoggedIn.mjs +1 -1
  266. package/dist/esm/helpers/ensureLoggedIn.mjs.map +1 -1
  267. package/dist/esm/helpers/ensureLoggedIn.native.js +2 -2
  268. package/dist/esm/helpers/ensureLoggedIn.native.js.map +1 -1
  269. package/dist/esm/helpers/errors.mjs +14 -0
  270. package/dist/esm/helpers/errors.mjs.map +1 -0
  271. package/dist/esm/helpers/errors.native.js +123 -0
  272. package/dist/esm/helpers/errors.native.js.map +1 -0
  273. package/dist/esm/helpers/getCurrentComponentStack.mjs +35 -0
  274. package/dist/esm/helpers/getCurrentComponentStack.mjs.map +1 -0
  275. package/dist/esm/helpers/getCurrentComponentStack.native.js +54 -0
  276. package/dist/esm/helpers/getCurrentComponentStack.native.js.map +1 -0
  277. package/dist/esm/helpers/globalValue.mjs +14 -0
  278. package/dist/esm/helpers/globalValue.mjs.map +1 -0
  279. package/dist/esm/helpers/globalValue.native.js +14 -0
  280. package/dist/esm/helpers/globalValue.native.js.map +1 -0
  281. package/dist/esm/helpers/mapObject.mjs +11 -0
  282. package/dist/esm/helpers/mapObject.mjs.map +1 -0
  283. package/dist/esm/helpers/mapObject.native.js +11 -0
  284. package/dist/esm/helpers/mapObject.native.js.map +1 -0
  285. package/dist/esm/helpers/mutationLifecycle.mjs +221 -0
  286. package/dist/esm/helpers/mutationLifecycle.mjs.map +1 -0
  287. package/dist/esm/helpers/mutationLifecycle.native.js +359 -0
  288. package/dist/esm/helpers/mutationLifecycle.native.js.map +1 -0
  289. package/dist/esm/helpers/mutationLifecycle.test.mjs +175 -0
  290. package/dist/esm/helpers/mutationLifecycle.test.mjs.map +1 -0
  291. package/dist/esm/helpers/mutationLifecycle.test.native.js +180 -0
  292. package/dist/esm/helpers/mutationLifecycle.test.native.js.map +1 -0
  293. package/dist/esm/helpers/mutatorContext.mjs +1 -1
  294. package/dist/esm/helpers/mutatorContext.native.js +4 -4
  295. package/dist/esm/helpers/mutatorContext.native.js.map +1 -1
  296. package/dist/esm/helpers/platform.mjs +5 -0
  297. package/dist/esm/helpers/platform.mjs.map +1 -0
  298. package/dist/esm/helpers/platform.native.js +4 -0
  299. package/dist/esm/helpers/platform.native.js.map +1 -0
  300. package/dist/esm/helpers/prettyFormatZeroQuery.mjs +1 -1
  301. package/dist/esm/helpers/prettyFormatZeroQuery.native.js +6 -6
  302. package/dist/esm/helpers/prettyFormatZeroQuery.native.js.map +1 -1
  303. package/dist/esm/helpers/queryContext.mjs +1 -1
  304. package/dist/esm/helpers/queryContext.native.js +3 -3
  305. package/dist/esm/helpers/queryContext.native.js.map +1 -1
  306. package/dist/esm/helpers/recoverZeroClient.mjs +14 -15
  307. package/dist/esm/helpers/recoverZeroClient.mjs.map +1 -1
  308. package/dist/esm/helpers/recoverZeroClient.native.js +26 -23
  309. package/dist/esm/helpers/recoverZeroClient.native.js.map +1 -1
  310. package/dist/esm/helpers/recoverZeroClient.test.mjs +8 -6
  311. package/dist/esm/helpers/recoverZeroClient.test.mjs.map +1 -1
  312. package/dist/esm/helpers/recoverZeroClient.test.native.js +15 -19
  313. package/dist/esm/helpers/recoverZeroClient.test.native.js.map +1 -1
  314. package/dist/esm/helpers/sleep.mjs +9 -0
  315. package/dist/esm/helpers/sleep.mjs.map +1 -0
  316. package/dist/esm/helpers/sleep.native.js +11 -0
  317. package/dist/esm/helpers/sleep.native.js.map +1 -0
  318. package/dist/esm/helpers/time.mjs +22 -0
  319. package/dist/esm/helpers/time.mjs.map +1 -0
  320. package/dist/esm/helpers/time.native.js +52 -0
  321. package/dist/esm/helpers/time.native.js.map +1 -0
  322. package/dist/esm/helpers/tuple.mjs +2 -0
  323. package/dist/esm/helpers/tuple.mjs.map +1 -0
  324. package/dist/esm/helpers/tuple.native.js +2 -0
  325. package/dist/esm/helpers/tuple.native.js.map +1 -0
  326. package/dist/esm/helpers/useMutation.native.js +5 -5
  327. package/dist/esm/helpers/useMutation.native.js.map +1 -1
  328. package/dist/esm/helpers/useMutation.test.native.js +1 -1
  329. package/dist/esm/helpers/useMutation.test.native.js.map +1 -1
  330. package/dist/esm/helpers/useZeroDebug.mjs +1 -1
  331. package/dist/esm/helpers/useZeroDebug.mjs.map +1 -1
  332. package/dist/esm/helpers/useZeroDebug.native.js +6 -7
  333. package/dist/esm/helpers/useZeroDebug.native.js.map +1 -1
  334. package/dist/esm/index.js +3 -1
  335. package/dist/esm/index.js.map +1 -1
  336. package/dist/esm/index.mjs +3 -1
  337. package/dist/esm/index.mjs.map +1 -1
  338. package/dist/esm/index.native.js +3 -1
  339. package/dist/esm/index.native.js.map +1 -1
  340. package/dist/esm/instanceRegistry.mjs +13 -2
  341. package/dist/esm/instanceRegistry.mjs.map +1 -1
  342. package/dist/esm/instanceRegistry.native.js +53 -4
  343. package/dist/esm/instanceRegistry.native.js.map +1 -1
  344. package/dist/esm/multi.mjs +33 -12
  345. package/dist/esm/multi.mjs.map +1 -1
  346. package/dist/esm/multi.native.js +38 -16
  347. package/dist/esm/multi.native.js.map +1 -1
  348. package/dist/esm/multiInstance.test.mjs +5 -1
  349. package/dist/esm/multiInstance.test.mjs.map +1 -1
  350. package/dist/esm/multiInstance.test.native.js +12 -8
  351. package/dist/esm/multiInstance.test.native.js.map +1 -1
  352. package/dist/esm/multiInstanceNested.test.native.js +10 -10
  353. package/dist/esm/multiInstanceNested.test.native.js.map +1 -1
  354. package/dist/esm/multiPartition.test.mjs +86 -37
  355. package/dist/esm/multiPartition.test.mjs.map +1 -1
  356. package/dist/esm/multiPartition.test.native.js +103 -40
  357. package/dist/esm/multiPartition.test.native.js.map +1 -1
  358. package/dist/esm/mutations.mjs +1 -1
  359. package/dist/esm/mutations.mjs.map +1 -1
  360. package/dist/esm/mutations.native.js +3 -3
  361. package/dist/esm/mutations.native.js.map +1 -1
  362. package/dist/esm/mutations.test.native.js +3 -3
  363. package/dist/esm/mutations.test.native.js.map +1 -1
  364. package/dist/esm/provideZero.hydration.test.mjs +1 -1
  365. package/dist/esm/provideZero.hydration.test.mjs.map +1 -1
  366. package/dist/esm/provideZero.hydration.test.native.js +2 -2
  367. package/dist/esm/provideZero.hydration.test.native.js.map +1 -1
  368. package/dist/esm/run.mjs +1 -1
  369. package/dist/esm/run.mjs.map +1 -1
  370. package/dist/esm/run.native.js +3 -3
  371. package/dist/esm/run.native.js.map +1 -1
  372. package/dist/esm/server.mjs +20 -15
  373. package/dist/esm/server.mjs.map +1 -1
  374. package/dist/esm/server.native.js +50 -56
  375. package/dist/esm/server.native.js.map +1 -1
  376. package/dist/esm/server.test.mjs +130 -7
  377. package/dist/esm/server.test.mjs.map +1 -1
  378. package/dist/esm/server.test.native.js +142 -11
  379. package/dist/esm/server.test.native.js.map +1 -1
  380. package/dist/esm/serverWhere.test.mjs.map +1 -1
  381. package/dist/esm/serverWhere.test.native.js +3 -3
  382. package/dist/esm/serverWhere.test.native.js.map +1 -1
  383. package/dist/esm/state.mjs +1 -1
  384. package/dist/esm/state.mjs.map +1 -1
  385. package/dist/esm/state.native.js +9 -9
  386. package/dist/esm/state.native.js.map +1 -1
  387. package/dist/esm/usePermission.test.native.js +3 -3
  388. package/dist/esm/usePermission.test.native.js.map +1 -1
  389. package/dist/esm/useQuery.empty.test.mjs +1 -1
  390. package/dist/esm/useQuery.empty.test.mjs.map +1 -1
  391. package/dist/esm/useQuery.empty.test.native.js +4 -4
  392. package/dist/esm/useQuery.empty.test.native.js.map +1 -1
  393. package/dist/esm/useQuery.ssr.test.native.js +2 -2
  394. package/dist/esm/useQuery.ssr.test.native.js.map +1 -1
  395. package/dist/esm/vite-plugin.mjs +7 -8
  396. package/dist/esm/vite-plugin.mjs.map +1 -1
  397. package/dist/esm/vite-plugin.native.js +11 -11
  398. package/dist/esm/vite-plugin.native.js.map +1 -1
  399. package/dist/esm/where.mjs +1 -1
  400. package/dist/esm/where.mjs.map +1 -1
  401. package/dist/esm/where.native.js +2 -2
  402. package/dist/esm/where.native.js.map +1 -1
  403. package/package.json +18 -6
  404. package/src/cli.ts +11 -3
  405. package/src/combineZeroClients.tsx +18 -10
  406. package/src/config.ts +72 -0
  407. package/src/createPermissions.ts +3 -4
  408. package/src/createUseQuery.tsx +8 -8
  409. package/src/createUseQueryDirect.tsx +11 -10
  410. package/src/createZeroClient.authData.test.tsx +1 -1
  411. package/src/createZeroClient.connection.test.tsx +13 -2
  412. package/src/createZeroClient.recovery.test.tsx +100 -4
  413. package/src/createZeroClient.tsx +87 -30
  414. package/src/generate-helpers.ts +108 -31
  415. package/src/generate-layout.ts +841 -0
  416. package/src/generate-lite.test.ts +421 -42
  417. package/src/generate-lite.ts +479 -43
  418. package/src/generate.test.ts +552 -90
  419. package/src/generate.ts +360 -163
  420. package/src/helpers/NullToOptional.ts +5 -0
  421. package/src/helpers/asyncContext.native.ts +90 -0
  422. package/src/helpers/asyncContext.ts +159 -0
  423. package/src/helpers/batchQuery.ts +2 -2
  424. package/src/helpers/createMutators.ts +11 -8
  425. package/src/helpers/ellipsis.ts +9 -0
  426. package/src/helpers/emitter.tsx +106 -0
  427. package/src/helpers/ensure.ts +10 -0
  428. package/src/helpers/ensureLoggedIn.ts +1 -2
  429. package/src/helpers/errors.ts +13 -0
  430. package/src/helpers/getCurrentComponentStack.ts +56 -0
  431. package/src/helpers/globalValue.ts +40 -0
  432. package/src/helpers/mapObject.ts +14 -0
  433. package/src/helpers/mutationLifecycle.test.ts +180 -0
  434. package/src/helpers/mutationLifecycle.ts +313 -0
  435. package/src/helpers/mutatorContext.ts +3 -3
  436. package/src/helpers/platform.native.ts +2 -0
  437. package/src/helpers/platform.ts +16 -0
  438. package/src/helpers/prettyFormatZeroQuery.ts +2 -2
  439. package/src/helpers/queryContext.ts +2 -2
  440. package/src/helpers/recoverZeroClient.test.ts +23 -21
  441. package/src/helpers/recoverZeroClient.ts +56 -49
  442. package/src/helpers/sleep.ts +8 -0
  443. package/src/helpers/time.ts +51 -0
  444. package/src/helpers/tuple.ts +1 -0
  445. package/src/helpers/useMutation.tsx +3 -3
  446. package/src/helpers/useZeroDebug.ts +3 -3
  447. package/src/index.ts +13 -1
  448. package/src/instanceRegistry.ts +19 -6
  449. package/src/multi.ts +75 -31
  450. package/src/multiInstance.test.tsx +31 -13
  451. package/src/multiInstanceNested.test.tsx +2 -2
  452. package/src/multiPartition.test.ts +62 -27
  453. package/src/mutations.ts +10 -10
  454. package/src/provideZero.hydration.test.tsx +1 -1
  455. package/src/resolveQuery.ts +2 -2
  456. package/src/run.ts +7 -7
  457. package/src/server.test.ts +117 -18
  458. package/src/server.ts +70 -43
  459. package/src/serverWhere.ts +2 -2
  460. package/src/state.ts +2 -2
  461. package/src/types.ts +47 -6
  462. package/src/useQuery.empty.test.tsx +3 -3
  463. package/src/useQuery.ssr.test.ts +1 -1
  464. package/src/vite-plugin.ts +12 -9
  465. package/src/where.ts +6 -7
  466. package/src/zeroRunner.ts +2 -2
  467. package/types/combineZeroClients.d.ts +11 -5
  468. package/types/combineZeroClients.d.ts.map +1 -1
  469. package/types/config.d.ts +62 -0
  470. package/types/config.d.ts.map +1 -0
  471. package/types/createPermissions.d.ts.map +1 -1
  472. package/types/createUseQuery.d.ts.map +1 -1
  473. package/types/createUseQueryDirect.d.ts +1 -1
  474. package/types/createUseQueryDirect.d.ts.map +1 -1
  475. package/types/createZeroClient.d.ts +22 -12
  476. package/types/createZeroClient.d.ts.map +1 -1
  477. package/types/createZeroClient.recovery.test.d.ts.map +1 -1
  478. package/types/generate-helpers.d.ts +17 -2
  479. package/types/generate-helpers.d.ts.map +1 -1
  480. package/types/generate-layout.d.ts +26 -0
  481. package/types/generate-layout.d.ts.map +1 -0
  482. package/types/generate-lite.d.ts +29 -1
  483. package/types/generate-lite.d.ts.map +1 -1
  484. package/types/generate.d.ts +20 -0
  485. package/types/generate.d.ts.map +1 -1
  486. package/types/helpers/NullToOptional.d.ts +6 -0
  487. package/types/helpers/NullToOptional.d.ts.map +1 -0
  488. package/types/helpers/asyncContext.d.ts +15 -0
  489. package/types/helpers/asyncContext.d.ts.map +1 -0
  490. package/types/helpers/asyncContext.native.d.ts +8 -0
  491. package/types/helpers/asyncContext.native.d.ts.map +1 -0
  492. package/types/helpers/createMutators.d.ts +2 -1
  493. package/types/helpers/createMutators.d.ts.map +1 -1
  494. package/types/helpers/ellipsis.d.ts +2 -0
  495. package/types/helpers/ellipsis.d.ts.map +1 -0
  496. package/types/helpers/emitter.d.ts +21 -0
  497. package/types/helpers/emitter.d.ts.map +1 -0
  498. package/types/helpers/ensure.d.ts +2 -0
  499. package/types/helpers/ensure.d.ts.map +1 -0
  500. package/types/helpers/ensureLoggedIn.d.ts.map +1 -1
  501. package/types/helpers/errors.d.ts +7 -0
  502. package/types/helpers/errors.d.ts.map +1 -0
  503. package/types/helpers/getCurrentComponentStack.d.ts +2 -0
  504. package/types/helpers/getCurrentComponentStack.d.ts.map +1 -0
  505. package/types/helpers/globalValue.d.ts +23 -0
  506. package/types/helpers/globalValue.d.ts.map +1 -0
  507. package/types/helpers/mapObject.d.ts +4 -0
  508. package/types/helpers/mapObject.d.ts.map +1 -0
  509. package/types/helpers/mutationLifecycle.d.ts +44 -0
  510. package/types/helpers/mutationLifecycle.d.ts.map +1 -0
  511. package/types/helpers/mutationLifecycle.test.d.ts +2 -0
  512. package/types/helpers/mutationLifecycle.test.d.ts.map +1 -0
  513. package/types/helpers/platform.d.ts +3 -0
  514. package/types/helpers/platform.d.ts.map +1 -0
  515. package/types/helpers/platform.native.d.ts +3 -0
  516. package/types/helpers/platform.native.d.ts.map +1 -0
  517. package/types/helpers/recoverZeroClient.d.ts +13 -9
  518. package/types/helpers/recoverZeroClient.d.ts.map +1 -1
  519. package/types/helpers/sleep.d.ts +2 -0
  520. package/types/helpers/sleep.d.ts.map +1 -0
  521. package/types/helpers/time.d.ts +28 -0
  522. package/types/helpers/time.d.ts.map +1 -0
  523. package/types/helpers/tuple.d.ts +2 -0
  524. package/types/helpers/tuple.d.ts.map +1 -0
  525. package/types/index.d.ts +3 -1
  526. package/types/index.d.ts.map +1 -1
  527. package/types/instanceRegistry.d.ts +1 -0
  528. package/types/instanceRegistry.d.ts.map +1 -1
  529. package/types/multi.d.ts +23 -1
  530. package/types/multi.d.ts.map +1 -1
  531. package/types/mutations.d.ts +1 -1
  532. package/types/mutations.d.ts.map +1 -1
  533. package/types/run.d.ts.map +1 -1
  534. package/types/server.d.ts +12 -8
  535. package/types/server.d.ts.map +1 -1
  536. package/types/state.d.ts +1 -1
  537. package/types/state.d.ts.map +1 -1
  538. package/types/types.d.ts +23 -1
  539. package/types/types.d.ts.map +1 -1
  540. package/types/vite-plugin.d.ts.map +1 -1
  541. package/types/where.d.ts.map +1 -1
  542. package/lint/ssr-guards.js +0 -165
  543. package/test-fixtures/server-return-types.ts +0 -58
  544. package/test-fixtures/tsconfig.json +0 -13
  545. package/tsconfig.json +0 -26
  546. package/vitest.config.ts +0 -8
@@ -1,4 +1,4 @@
1
- import { generateGroupedQueriesFile, generateModelsFile, generateReadmeFile, generateSyncedMutationsFile, generateSyncedQueriesFile, generateTablesFile, generateTypesFile, parseColumnType, parseTypeString } from "./generate-helpers.native.js";
1
+ import { generateGroupedQueriesFile, generateInstancesFile, generateModelsFile, generateReadmeFile, generateSyncedMutationsFile, generateSyncedQueriesFile, generateTablesFile, generateTypesFile, parseColumnType, parseTypeString } from "./generate-helpers.native.js";
2
2
  function stripTrailingSlash(s) {
3
3
  return s.endsWith("/") ? s.slice(0, -1) : s;
4
4
  }
@@ -8,6 +8,51 @@ function baseName(path, ext) {
8
8
  if (ext && base.endsWith(ext)) base = base.slice(0, -ext.length);
9
9
  return base;
10
10
  }
11
+ function resolvePath(path) {
12
+ var absolute = path.startsWith("/");
13
+ var parts = [];
14
+ var _iteratorNormalCompletion = true,
15
+ _didIteratorError = false,
16
+ _iteratorError = void 0;
17
+ try {
18
+ for (var _iterator = path.split("/")[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
19
+ var part = _step.value;
20
+ if (!part || part === ".") continue;
21
+ if (part === "..") parts.pop();else parts.push(part);
22
+ }
23
+ } catch (err) {
24
+ _didIteratorError = true;
25
+ _iteratorError = err;
26
+ } finally {
27
+ try {
28
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
29
+ _iterator.return();
30
+ }
31
+ } finally {
32
+ if (_didIteratorError) {
33
+ throw _iteratorError;
34
+ }
35
+ }
36
+ }
37
+ return `${absolute ? "/" : ""}${parts.join("/")}`;
38
+ }
39
+ function parentDir(path) {
40
+ return path.slice(0, path.lastIndexOf("/"));
41
+ }
42
+ function relativePath(from, to) {
43
+ var fromParts = resolvePath(from).split("/").filter(Boolean);
44
+ var toParts = resolvePath(to).split("/").filter(Boolean);
45
+ var common = 0;
46
+ while (fromParts[common] === toParts[common] && common < fromParts.length) common++;
47
+ return [...Array.from({
48
+ length: fromParts.length - common
49
+ }, function () {
50
+ return "..";
51
+ }), ...toParts.slice(common)].join("/");
52
+ }
53
+ var isWithin = function isWithin2(root, path) {
54
+ return path === root || path.startsWith(`${root}/`);
55
+ };
11
56
  function listDirectTsFiles(files, dirPrefix) {
12
57
  var prefix = stripTrailingSlash(dirPrefix) + "/";
13
58
  var out = [];
@@ -41,93 +86,468 @@ function listDirectTsFiles(files, dirPrefix) {
41
86
  }
42
87
  return out.sort();
43
88
  }
89
+ function discoverLiteLayout(files, baseDir, parse, explicitConfigPath) {
90
+ var paths = Object.keys(files);
91
+ var configPath = resolvePath(explicitConfigPath !== null && explicitConfigPath !== void 0 ? explicitConfigPath : `${baseDir}/on-zero.config.ts`);
92
+ var configSource = files[configPath];
93
+ var config;
94
+ if (configSource !== void 0) {
95
+ var parsed = parse(configSource, configPath);
96
+ if (parsed.parseError) {
97
+ throw new Error(`[on-zero] unable to parse ${configPath}: ${parsed.parseError}`);
98
+ }
99
+ config = parsed.dataConfig;
100
+ if (!config) {
101
+ throw new Error(`[on-zero] ${configPath} must default export defineConfig({ instances: { ... } })`);
102
+ }
103
+ } else if (explicitConfigPath) {
104
+ throw new Error(`[on-zero] config file does not exist: ${configPath}`);
105
+ }
106
+ if (explicitConfigPath && parentDir(configPath) !== baseDir) {
107
+ throw new Error(`[on-zero] ${configPath} must be at the data root ${baseDir}`);
108
+ }
109
+ var instances = config ? Object.entries(config.instances).map(function (param) {
110
+ var [name, options] = param;
111
+ var _options_dir, _options_scope, _options_supportTables;
112
+ var _options_dir1, _options_supportTables1;
113
+ if ((_options_dir1 = options.dir) === null || _options_dir1 === void 0 ? void 0 : _options_dir1.startsWith("/")) {
114
+ throw new Error(`[on-zero] instance '${name}' dir must be relative to ${configPath}`);
115
+ }
116
+ if (options.scope === "") {
117
+ throw new Error(`[on-zero] instance '${name}' scope cannot be empty`);
118
+ }
119
+ if ((_options_supportTables1 = options.supportTables) === null || _options_supportTables1 === void 0 ? void 0 : _options_supportTables1.some(function (table) {
120
+ return table === "";
121
+ })) {
122
+ throw new Error(`[on-zero] instance '${name}' supportTables cannot contain an empty table name`);
123
+ }
124
+ return {
125
+ name,
126
+ dir: resolvePath(`${parentDir(configPath)}/${(_options_dir = options.dir) !== null && _options_dir !== void 0 ? _options_dir : name}`),
127
+ scope: (_options_scope = options.scope) !== null && _options_scope !== void 0 ? _options_scope : null,
128
+ declaredSupportTables: [...((_options_supportTables = options.supportTables) !== null && _options_supportTables !== void 0 ? _options_supportTables : [])],
129
+ namespaces: []
130
+ };
131
+ }) : [{
132
+ name: "default",
133
+ dir: baseDir,
134
+ scope: null,
135
+ declaredSupportTables: [],
136
+ namespaces: []
137
+ }];
138
+ if (config && instances.length === 0) {
139
+ throw new Error(`[on-zero] ${configPath} must declare at least one instance`);
140
+ }
141
+ var _iteratorNormalCompletion = true,
142
+ _didIteratorError = false,
143
+ _iteratorError = void 0;
144
+ try {
145
+ var _loop = function () {
146
+ var instance2 = _step.value;
147
+ if (!paths.some(function (path2) {
148
+ return isWithin(instance2.dir, path2);
149
+ })) {
150
+ throw new Error(`[on-zero] instance '${instance2.name}' directory does not exist: ${instance2.dir}`);
151
+ }
152
+ var duplicate = instances.find(function (candidate) {
153
+ return candidate !== instance2 && candidate.dir === instance2.dir;
154
+ });
155
+ if (duplicate) {
156
+ throw new Error(`[on-zero] instances '${instance2.name}' and '${duplicate.name}' resolve to the same directory: ${instance2.dir}`);
157
+ }
158
+ };
159
+ for (var _iterator = instances[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) _loop();
160
+ } catch (err) {
161
+ _didIteratorError = true;
162
+ _iteratorError = err;
163
+ } finally {
164
+ try {
165
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
166
+ _iterator.return();
167
+ }
168
+ } finally {
169
+ if (_didIteratorError) {
170
+ throw _iteratorError;
171
+ }
172
+ }
173
+ }
174
+ var instanceDirs = new Set(instances.map(function (instance2) {
175
+ return instance2.dir;
176
+ }));
177
+ var sourceRoots = [baseDir, ...instances.map(function (instance2) {
178
+ return instance2.dir;
179
+ })];
180
+ var remnant = paths.find(function (path2) {
181
+ return baseName(path2) === "instance.ts" && sourceRoots.some(function (root) {
182
+ return isWithin(root, path2);
183
+ });
184
+ });
185
+ if (remnant) {
186
+ throw new Error(`[on-zero] ${remnant} uses removed instance.ts configuration; delete it and configure instances in on-zero.config.ts`);
187
+ }
188
+ var parseDataFile = function parseDataFile2(path2) {
189
+ var parsed2;
190
+ try {
191
+ parsed2 = parse(files[path2], path2);
192
+ } catch (unused) {
193
+ console.warn(`[on-zero] ignoring ${path2.slice(baseDir.lastIndexOf("/") + 1)}: no recognized data exports`);
194
+ return null;
195
+ }
196
+ if (parsed2.parseError) {
197
+ console.warn(`[on-zero] ignoring ${path2.slice(baseDir.lastIndexOf("/") + 1)}: no recognized data exports`);
198
+ return null;
199
+ }
200
+ return parsed2;
201
+ };
202
+ var hasDataExport = function hasDataExport2(source2, parsed2) {
203
+ var _ref;
204
+ var _parsed_tables;
205
+ return parsed2.queries.length > 0 || parsed2.mutations.length > 0 || ((_ref = (_parsed_tables = parsed2.tables) === null || _parsed_tables === void 0 ? void 0 : _parsed_tables.length) !== null && _ref !== void 0 ? _ref : 0) > 0 || /export\s+const\s+(?:mutate|schema|where)\s*=\s*(?:mutations|serverWhere|table)\s*\(/.test(source2);
206
+ };
207
+ if (config) {
208
+ var _iteratorNormalCompletion1 = true,
209
+ _didIteratorError1 = false,
210
+ _iteratorError1 = void 0;
211
+ try {
212
+ var _loop1 = function () {
213
+ var path2 = _step1.value;
214
+ if (path2 === configPath || !isWithin(baseDir, path2) || instances.some(function (instance2) {
215
+ return isWithin(instance2.dir, path2);
216
+ }) || isWithin(`${baseDir}/generated`, path2) || !path2.endsWith(".ts") || path2.endsWith(".d.ts") || path2.endsWith(".test.ts") || path2.endsWith(".spec.ts") || baseName(path2) === "instance.ts") {
217
+ return "continue";
218
+ }
219
+ var parsed2 = parseDataFile(path2);
220
+ if (parsed2 && hasDataExport(files[path2], parsed2)) {
221
+ throw new Error(`[on-zero] data namespace ${path2} is outside every instance directory declared in ${configPath}`);
222
+ }
223
+ };
224
+ for (var _iterator1 = paths[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) _loop1();
225
+ } catch (err) {
226
+ _didIteratorError1 = true;
227
+ _iteratorError1 = err;
228
+ } finally {
229
+ try {
230
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
231
+ _iterator1.return();
232
+ }
233
+ } finally {
234
+ if (_didIteratorError1) {
235
+ throw _iteratorError1;
236
+ }
237
+ }
238
+ }
239
+ }
240
+ var _iteratorNormalCompletion2 = true,
241
+ _didIteratorError2 = false,
242
+ _iteratorError2 = void 0;
243
+ try {
244
+ for (var _iterator2 = instances[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
245
+ var instance = _step2.value;
246
+ var directFiles = listDirectTsFiles(files, instance.dir).filter(function (path2) {
247
+ return baseName(path2) !== "on-zero.config.ts";
248
+ });
249
+ var _iteratorNormalCompletion3 = true,
250
+ _didIteratorError3 = false,
251
+ _iteratorError3 = void 0;
252
+ try {
253
+ for (var _iterator3 = directFiles[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
254
+ var path = _step3.value;
255
+ var source = files[path];
256
+ var parsed1 = parseDataFile(path);
257
+ if (!parsed1 || !hasDataExport(source, parsed1)) continue;
258
+ instance.namespaces.push({
259
+ name: baseName(path, ".ts"),
260
+ instance: instance.name,
261
+ queryPath: path,
262
+ modelPath: path
263
+ });
264
+ }
265
+ } catch (err) {
266
+ _didIteratorError3 = true;
267
+ _iteratorError3 = err;
268
+ } finally {
269
+ try {
270
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
271
+ _iterator3.return();
272
+ }
273
+ } finally {
274
+ if (_didIteratorError3) {
275
+ throw _iteratorError3;
276
+ }
277
+ }
278
+ }
279
+ var prefix = `${instance.dir}/`;
280
+ var folders = /* @__PURE__ */new Set();
281
+ var _iteratorNormalCompletion4 = true,
282
+ _didIteratorError4 = false,
283
+ _iteratorError4 = void 0;
284
+ try {
285
+ for (var _iterator4 = paths[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
286
+ var path1 = _step4.value;
287
+ if (!path1.startsWith(prefix)) continue;
288
+ var rest = path1.slice(prefix.length);
289
+ var slash = rest.indexOf("/");
290
+ if (slash > 0) folders.add(`${instance.dir}/${rest.slice(0, slash)}`);
291
+ }
292
+ } catch (err) {
293
+ _didIteratorError4 = true;
294
+ _iteratorError4 = err;
295
+ } finally {
296
+ try {
297
+ if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
298
+ _iterator4.return();
299
+ }
300
+ } finally {
301
+ if (_didIteratorError4) {
302
+ throw _iteratorError4;
303
+ }
304
+ }
305
+ }
306
+ var _iteratorNormalCompletion5 = true,
307
+ _didIteratorError5 = false,
308
+ _iteratorError5 = void 0;
309
+ try {
310
+ for (var _iterator5 = [...folders].sort()[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
311
+ var folder = _step5.value;
312
+ if (folder === `${baseDir}/generated` || instanceDirs.has(folder)) continue;
313
+ var queries = `${folder}/queries.ts`;
314
+ var mutations = `${folder}/mutations.ts`;
315
+ if (!(queries in files) && !(mutations in files)) {
316
+ var oldName = baseName(folder);
317
+ if (["models", "mutations", "queries"].includes(oldName) && listDirectTsFiles(files, folder).length > 0) {
318
+ throw new Error(`[on-zero] ${folder} uses the removed top-level ${oldName}/ layout; move each namespace to <name>.ts or <name>/queries.ts + mutations.ts`);
319
+ }
320
+ continue;
321
+ }
322
+ instance.namespaces.push({
323
+ name: baseName(folder),
324
+ instance: instance.name,
325
+ queryPath: queries in files ? queries : null,
326
+ modelPath: mutations in files ? mutations : null
327
+ });
328
+ }
329
+ } catch (err) {
330
+ _didIteratorError5 = true;
331
+ _iteratorError5 = err;
332
+ } finally {
333
+ try {
334
+ if (!_iteratorNormalCompletion5 && _iterator5.return != null) {
335
+ _iterator5.return();
336
+ }
337
+ } finally {
338
+ if (_didIteratorError5) {
339
+ throw _iteratorError5;
340
+ }
341
+ }
342
+ }
343
+ }
344
+ } catch (err) {
345
+ _didIteratorError2 = true;
346
+ _iteratorError2 = err;
347
+ } finally {
348
+ try {
349
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
350
+ _iterator2.return();
351
+ }
352
+ } finally {
353
+ if (_didIteratorError2) {
354
+ throw _iteratorError2;
355
+ }
356
+ }
357
+ }
358
+ var owners = /* @__PURE__ */new Map();
359
+ var _iteratorNormalCompletion6 = true,
360
+ _didIteratorError6 = false,
361
+ _iteratorError6 = void 0;
362
+ try {
363
+ for (var _iterator6 = instances.flatMap(function (instance2) {
364
+ return instance2.namespaces;
365
+ })[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {
366
+ var namespace = _step6.value;
367
+ var owner = owners.get(namespace.name);
368
+ if (owner) {
369
+ throw new Error(`[on-zero] namespace '${namespace.name}' is claimed by instances '${owner}' and '${namespace.instance}'`);
370
+ }
371
+ owners.set(namespace.name, namespace.instance);
372
+ }
373
+ } catch (err) {
374
+ _didIteratorError6 = true;
375
+ _iteratorError6 = err;
376
+ } finally {
377
+ try {
378
+ if (!_iteratorNormalCompletion6 && _iterator6.return != null) {
379
+ _iterator6.return();
380
+ }
381
+ } finally {
382
+ if (_didIteratorError6) {
383
+ throw _iteratorError6;
384
+ }
385
+ }
386
+ }
387
+ return instances;
388
+ }
44
389
  function generateLite(opts) {
45
390
  var {
46
391
  files,
47
392
  parse
48
393
  } = opts;
49
- var baseDir = stripTrailingSlash(opts.dir);
50
- var modelsDirName;
51
- if (opts.modelsDir) {
52
- modelsDirName = opts.modelsDir;
53
- } else {
54
- var mutationsPrefix = `${baseDir}/mutations/`;
55
- var hasMutationsDir = Object.keys(files).some(function (p) {
56
- return p.startsWith(mutationsPrefix);
57
- });
58
- modelsDirName = hasMutationsDir ? "mutations" : "models";
59
- }
60
- var modelsDirPath = `${baseDir}/${modelsDirName}`;
61
- var queriesDirPath = `${baseDir}/queries`;
62
- var modelFilePaths = listDirectTsFiles(files, modelsDirPath);
63
- var queryFilePaths = listDirectTsFiles(files, queriesDirPath);
64
- var allModelMutations = [];
65
- var modelNamesWithSchema = [];
394
+ var baseDir = resolvePath(stripTrailingSlash(opts.dir));
395
+ var instances = discoverLiteLayout(files, baseDir, parse, opts.config);
396
+ var sourceRoots = [baseDir, ...instances.map(function (instance2) {
397
+ return instance2.dir;
398
+ })];
399
+ var namespaces = instances.flatMap(function (instance2) {
400
+ return instance2.namespaces;
401
+ });
402
+ var modelNamespaces = namespaces.filter(function (namespace3) {
403
+ return namespace3.modelPath !== null;
404
+ });
405
+ var relations = /* @__PURE__ */new Map();
406
+ var tableColumns = /* @__PURE__ */new Map();
66
407
  var _iteratorNormalCompletion = true,
67
408
  _didIteratorError = false,
68
409
  _iteratorError = void 0;
69
410
  try {
70
- for (var _iterator = modelFilePaths[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
71
- var filePath = _step.value;
72
- var modelName = baseName(filePath, ".ts");
411
+ for (var _iterator = Object.keys(files).filter(function (path2) {
412
+ return path2.endsWith("/relations.ts") || /\/database\/(?:schema[^/]*|zeroSchemaInput)\.ts$/.test(path2);
413
+ })[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
414
+ var path = _step.value;
415
+ var _parsed_relations, _parsed_tables;
416
+ var parsed = parse(files[path], path);
417
+ var _iteratorNormalCompletion1 = true,
418
+ _didIteratorError1 = false,
419
+ _iteratorError1 = void 0;
420
+ try {
421
+ for (var _iterator1 = ((_parsed_relations = parsed.relations) !== null && _parsed_relations !== void 0 ? _parsed_relations : [])[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
422
+ var relation = _step1.value;
423
+ var _relations_get;
424
+ var tableRelations = (_relations_get = relations.get(relation.sourceTable)) !== null && _relations_get !== void 0 ? _relations_get : /* @__PURE__ */new Map();
425
+ tableRelations.set(relation.name, relation.targetTable);
426
+ relations.set(relation.sourceTable, tableRelations);
427
+ }
428
+ } catch (err) {
429
+ _didIteratorError1 = true;
430
+ _iteratorError1 = err;
431
+ } finally {
432
+ try {
433
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
434
+ _iterator1.return();
435
+ }
436
+ } finally {
437
+ if (_didIteratorError1) {
438
+ throw _iteratorError1;
439
+ }
440
+ }
441
+ }
442
+ var _iteratorNormalCompletion2 = true,
443
+ _didIteratorError2 = false,
444
+ _iteratorError2 = void 0;
445
+ try {
446
+ for (var _iterator2 = ((_parsed_tables = parsed.tables) !== null && _parsed_tables !== void 0 ? _parsed_tables : [])[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
447
+ var table = _step2.value;
448
+ tableColumns.set(table.name, new Set(table.columns));
449
+ }
450
+ } catch (err) {
451
+ _didIteratorError2 = true;
452
+ _iteratorError2 = err;
453
+ } finally {
454
+ try {
455
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
456
+ _iterator2.return();
457
+ }
458
+ } finally {
459
+ if (_didIteratorError2) {
460
+ throw _iteratorError2;
461
+ }
462
+ }
463
+ }
464
+ }
465
+ } catch (err) {
466
+ _didIteratorError = true;
467
+ _iteratorError = err;
468
+ } finally {
469
+ try {
470
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
471
+ _iterator.return();
472
+ }
473
+ } finally {
474
+ if (_didIteratorError) {
475
+ throw _iteratorError;
476
+ }
477
+ }
478
+ }
479
+ var allModelMutations = [];
480
+ var modelNamesWithSchema = [];
481
+ var _iteratorNormalCompletion3 = true,
482
+ _didIteratorError3 = false,
483
+ _iteratorError3 = void 0;
484
+ try {
485
+ for (var _iterator3 = modelNamespaces[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
486
+ var namespace = _step3.value;
487
+ var _parsed_mutations_, _ref;
488
+ var filePath = namespace.modelPath;
489
+ var modelName = namespace.name;
73
490
  var content = files[filePath];
74
- var parsed = parse(content, filePath);
75
- var _parsed_mutations_;
76
- var mutationExport = (_parsed_mutations_ = parsed.mutations[0]) !== null && _parsed_mutations_ !== void 0 ? _parsed_mutations_ : null;
491
+ var parsed1 = parse(content, filePath);
492
+ var mutationExport = (_parsed_mutations_ = parsed1.mutations[0]) !== null && _parsed_mutations_ !== void 0 ? _parsed_mutations_ : null;
77
493
  var columns = {};
78
494
  var primaryKeys = [];
79
495
  var hasSchema = false;
80
496
  if (mutationExport === null || mutationExport === void 0 ? void 0 : mutationExport.schema) {
81
497
  hasSchema = true;
82
498
  modelNamesWithSchema.push(modelName);
83
- var _iteratorNormalCompletion1 = true,
84
- _didIteratorError1 = false,
85
- _iteratorError1 = void 0;
499
+ var _iteratorNormalCompletion4 = true,
500
+ _didIteratorError4 = false,
501
+ _iteratorError4 = void 0;
86
502
  try {
87
- for (var _iterator1 = mutationExport.schema.primaryKeys[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
88
- var pk = _step1.value;
503
+ for (var _iterator4 = mutationExport.schema.primaryKeys[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
504
+ var pk = _step4.value;
89
505
  primaryKeys.push(pk);
90
506
  }
91
507
  } catch (err) {
92
- _didIteratorError1 = true;
93
- _iteratorError1 = err;
508
+ _didIteratorError4 = true;
509
+ _iteratorError4 = err;
94
510
  } finally {
95
511
  try {
96
- if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
97
- _iterator1.return();
512
+ if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
513
+ _iterator4.return();
98
514
  }
99
515
  } finally {
100
- if (_didIteratorError1) {
101
- throw _iteratorError1;
516
+ if (_didIteratorError4) {
517
+ throw _iteratorError4;
102
518
  }
103
519
  }
104
520
  }
105
- var _iteratorNormalCompletion2 = true,
106
- _didIteratorError2 = false,
107
- _iteratorError2 = void 0;
521
+ var _iteratorNormalCompletion5 = true,
522
+ _didIteratorError5 = false,
523
+ _iteratorError5 = void 0;
108
524
  try {
109
- for (var _iterator2 = mutationExport.schema.columns[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
110
- var col = _step2.value;
525
+ for (var _iterator5 = mutationExport.schema.columns[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
526
+ var col = _step5.value;
111
527
  columns[col.name] = parseColumnType(col.builderText);
112
528
  }
113
529
  } catch (err) {
114
- _didIteratorError2 = true;
115
- _iteratorError2 = err;
530
+ _didIteratorError5 = true;
531
+ _iteratorError5 = err;
116
532
  } finally {
117
533
  try {
118
- if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
119
- _iterator2.return();
534
+ if (!_iteratorNormalCompletion5 && _iterator5.return != null) {
535
+ _iterator5.return();
120
536
  }
121
537
  } finally {
122
- if (_didIteratorError2) {
123
- throw _iteratorError2;
538
+ if (_didIteratorError5) {
539
+ throw _iteratorError5;
124
540
  }
125
541
  }
126
542
  }
543
+ var names = new Set(mutationExport.schema.columns.map(function (column) {
544
+ return column.name;
545
+ }));
546
+ tableColumns.set(modelName, names);
547
+ tableColumns.set(mutationExport.schema.tableName, names);
127
548
  }
128
549
  var hasCRUD = hasSchema && mutationExport !== null;
129
- var _mutationExport_handlers;
130
- var custom = ((_mutationExport_handlers = mutationExport === null || mutationExport === void 0 ? void 0 : mutationExport.handlers) !== null && _mutationExport_handlers !== void 0 ? _mutationExport_handlers : []).map(function (h) {
550
+ var custom = ((_ref = mutationExport === null || mutationExport === void 0 ? void 0 : mutationExport.handlers) !== null && _ref !== void 0 ? _ref : []).map(function (h) {
131
551
  if (h.paramTypeText == null) {
132
552
  return {
133
553
  name: h.name,
@@ -146,7 +566,7 @@ function generateLite(opts) {
146
566
  var valibotCode2 = null;
147
567
  try {
148
568
  valibotCode2 = parseTypeString(paramType2);
149
- } catch (e) {
569
+ } catch (unused) {
150
570
  valibotCode2 = null;
151
571
  }
152
572
  return {
@@ -164,42 +584,62 @@ function generateLite(opts) {
164
584
  });
165
585
  }
166
586
  } catch (err) {
167
- _didIteratorError = true;
168
- _iteratorError = err;
587
+ _didIteratorError3 = true;
588
+ _iteratorError3 = err;
169
589
  } finally {
170
590
  try {
171
- if (!_iteratorNormalCompletion && _iterator.return != null) {
172
- _iterator.return();
591
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
592
+ _iterator3.return();
173
593
  }
174
594
  } finally {
175
- if (_didIteratorError) {
176
- throw _iteratorError;
595
+ if (_didIteratorError3) {
596
+ throw _iteratorError3;
177
597
  }
178
598
  }
179
599
  }
180
600
  var allQueries = [];
181
- var _iteratorNormalCompletion3 = true,
182
- _didIteratorError3 = false,
183
- _iteratorError3 = void 0;
601
+ var relatedPaths = /* @__PURE__ */new Map();
602
+ var _iteratorNormalCompletion6 = true,
603
+ _didIteratorError6 = false,
604
+ _iteratorError6 = void 0;
184
605
  try {
185
- for (var _iterator3 = queryFilePaths[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
186
- var filePath1 = _step3.value;
187
- var fileBaseName = baseName(filePath1, ".ts");
606
+ for (var _iterator6 = namespaces.filter(function (namespace3) {
607
+ return namespace3.queryPath !== null;
608
+ })[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {
609
+ var namespace1 = _step6.value;
610
+ var filePath1 = namespace1.queryPath;
611
+ var fileBaseName = namespace1.name;
188
612
  var content1 = files[filePath1];
189
- var parsed1 = parse(content1, filePath1);
190
- var _iteratorNormalCompletion4 = true,
191
- _didIteratorError4 = false,
192
- _iteratorError4 = void 0;
613
+ var parsed2 = parse(content1, filePath1);
614
+ if (content1.includes(".related(") && !parsed2.queries.some(function (query2) {
615
+ return query2.relatedPaths;
616
+ })) {
617
+ throw new Error(`[on-zero] ${filePath1} uses related(), but the lite parser did not return relatedPaths`);
618
+ }
619
+ var _iteratorNormalCompletion7 = true,
620
+ _didIteratorError7 = false,
621
+ _iteratorError7 = void 0;
193
622
  try {
194
- for (var _iterator4 = parsed1.queries[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
195
- var q = _step4.value;
196
- if (q.name === "permission") continue;
623
+ for (var _iterator7 = parsed2.queries[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {
624
+ var q = _step7.value;
625
+ var _q_relatedPaths;
626
+ if (["mutate", "permission", "schema", "where"].includes(q.name)) continue;
627
+ if ((_q_relatedPaths = q.relatedPaths) === null || _q_relatedPaths === void 0 ? void 0 : _q_relatedPaths.length) {
628
+ var _relatedPaths_get;
629
+ var entries = (_relatedPaths_get = relatedPaths.get(namespace1.name)) !== null && _relatedPaths_get !== void 0 ? _relatedPaths_get : [];
630
+ entries.push({
631
+ query: q.name,
632
+ paths: q.relatedPaths
633
+ });
634
+ relatedPaths.set(namespace1.name, entries);
635
+ }
197
636
  if (q.paramTypeText == null) {
198
637
  allQueries.push({
199
638
  name: q.name,
200
639
  params: "void",
201
640
  valibotCode: "",
202
- sourceFile: fileBaseName
641
+ sourceFile: fileBaseName,
642
+ importPath: `../${relativePath(baseDir, filePath1).replace(/\.ts$/, "")}`
203
643
  });
204
644
  continue;
205
645
  }
@@ -207,91 +647,403 @@ function generateLite(opts) {
207
647
  var valibotCode = null;
208
648
  try {
209
649
  valibotCode = parseTypeString(paramType);
210
- } catch (e) {
650
+ } catch (unused) {
211
651
  valibotCode = null;
212
652
  }
213
653
  allQueries.push({
214
654
  name: q.name,
215
655
  params: paramType,
216
656
  valibotCode: valibotCode !== null && valibotCode !== void 0 ? valibotCode : "v.unknown()",
217
- sourceFile: fileBaseName
657
+ sourceFile: fileBaseName,
658
+ importPath: `../${relativePath(baseDir, filePath1).replace(/\.ts$/, "")}`
218
659
  });
219
660
  }
220
661
  } catch (err) {
221
- _didIteratorError4 = true;
222
- _iteratorError4 = err;
662
+ _didIteratorError7 = true;
663
+ _iteratorError7 = err;
223
664
  } finally {
224
665
  try {
225
- if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
226
- _iterator4.return();
666
+ if (!_iteratorNormalCompletion7 && _iterator7.return != null) {
667
+ _iterator7.return();
227
668
  }
228
669
  } finally {
229
- if (_didIteratorError4) {
230
- throw _iteratorError4;
670
+ if (_didIteratorError7) {
671
+ throw _iteratorError7;
231
672
  }
232
673
  }
233
674
  }
234
675
  }
235
676
  } catch (err) {
236
- _didIteratorError3 = true;
237
- _iteratorError3 = err;
677
+ _didIteratorError6 = true;
678
+ _iteratorError6 = err;
238
679
  } finally {
239
680
  try {
240
- if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
241
- _iterator3.return();
681
+ if (!_iteratorNormalCompletion6 && _iterator6.return != null) {
682
+ _iterator6.return();
242
683
  }
243
684
  } finally {
244
- if (_didIteratorError3) {
245
- throw _iteratorError3;
685
+ if (_didIteratorError6) {
686
+ throw _iteratorError6;
246
687
  }
247
688
  }
248
689
  }
249
- var modelNames = modelFilePaths.map(function (p) {
250
- return baseName(p, ".ts");
690
+ var owners = new Map(namespaces.map(function (namespace3) {
691
+ return [namespace3.name, namespace3.instance];
692
+ }));
693
+ var relatedOwners = /* @__PURE__ */new Map();
694
+ var syncTables = /* @__PURE__ */new Map();
695
+ var _iteratorNormalCompletion8 = true,
696
+ _didIteratorError8 = false,
697
+ _iteratorError8 = void 0;
698
+ try {
699
+ for (var _iterator8 = instances[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {
700
+ var instance = _step8.value;
701
+ var synced = new Set(instance.namespaces.map(function (namespace3) {
702
+ return namespace3.name;
703
+ }));
704
+ var _iteratorNormalCompletion9 = true,
705
+ _didIteratorError9 = false,
706
+ _iteratorError9 = void 0;
707
+ try {
708
+ for (var _iterator9 = instance.namespaces[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {
709
+ var namespace2 = _step9.value;
710
+ var _relatedPaths_get1;
711
+ var _iteratorNormalCompletion10 = true,
712
+ _didIteratorError10 = false,
713
+ _iteratorError10 = void 0;
714
+ try {
715
+ for (var _iterator10 = ((_relatedPaths_get1 = relatedPaths.get(namespace2.name)) !== null && _relatedPaths_get1 !== void 0 ? _relatedPaths_get1 : [])[Symbol.iterator](), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) {
716
+ var query = _step10.value;
717
+ var _iteratorNormalCompletion11 = true,
718
+ _didIteratorError11 = false,
719
+ _iteratorError11 = void 0;
720
+ try {
721
+ for (var _iterator11 = query.paths[Symbol.iterator](), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) {
722
+ var path1 = _step11.value;
723
+ var sourceTable = namespace2.name;
724
+ var _iteratorNormalCompletion12 = true,
725
+ _didIteratorError12 = false,
726
+ _iteratorError12 = void 0;
727
+ try {
728
+ for (var _iterator12 = path1[Symbol.iterator](), _step12; !(_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done); _iteratorNormalCompletion12 = true) {
729
+ var relationName = _step12.value;
730
+ var _owners_get;
731
+ var _relations_get1;
732
+ var target = (_relations_get1 = relations.get(sourceTable)) === null || _relations_get1 === void 0 ? void 0 : _relations_get1.get(relationName);
733
+ if (!target) {
734
+ throw new Error(`[on-zero] ${namespace2.name}.${query.query} related('${relationName}') cannot be resolved from table '${sourceTable}' through relations.ts`);
735
+ }
736
+ var owner = (_owners_get = owners.get(target)) !== null && _owners_get !== void 0 ? _owners_get : relatedOwners.get(target);
737
+ if (owner && owner !== instance.name) {
738
+ throw new Error(`[on-zero] ${namespace2.name}.${query.query} in instance '${instance.name}' reaches table '${target}' owned by instance '${owner}'`);
739
+ }
740
+ relatedOwners.set(target, instance.name);
741
+ synced.add(target);
742
+ sourceTable = target;
743
+ }
744
+ } catch (err) {
745
+ _didIteratorError12 = true;
746
+ _iteratorError12 = err;
747
+ } finally {
748
+ try {
749
+ if (!_iteratorNormalCompletion12 && _iterator12.return != null) {
750
+ _iterator12.return();
751
+ }
752
+ } finally {
753
+ if (_didIteratorError12) {
754
+ throw _iteratorError12;
755
+ }
756
+ }
757
+ }
758
+ }
759
+ } catch (err) {
760
+ _didIteratorError11 = true;
761
+ _iteratorError11 = err;
762
+ } finally {
763
+ try {
764
+ if (!_iteratorNormalCompletion11 && _iterator11.return != null) {
765
+ _iterator11.return();
766
+ }
767
+ } finally {
768
+ if (_didIteratorError11) {
769
+ throw _iteratorError11;
770
+ }
771
+ }
772
+ }
773
+ }
774
+ } catch (err) {
775
+ _didIteratorError10 = true;
776
+ _iteratorError10 = err;
777
+ } finally {
778
+ try {
779
+ if (!_iteratorNormalCompletion10 && _iterator10.return != null) {
780
+ _iterator10.return();
781
+ }
782
+ } finally {
783
+ if (_didIteratorError10) {
784
+ throw _iteratorError10;
785
+ }
786
+ }
787
+ }
788
+ }
789
+ } catch (err) {
790
+ _didIteratorError9 = true;
791
+ _iteratorError9 = err;
792
+ } finally {
793
+ try {
794
+ if (!_iteratorNormalCompletion9 && _iterator9.return != null) {
795
+ _iterator9.return();
796
+ }
797
+ } finally {
798
+ if (_didIteratorError9) {
799
+ throw _iteratorError9;
800
+ }
801
+ }
802
+ }
803
+ var tables = [...synced].sort();
804
+ if (instance.scope) {
805
+ var _iteratorNormalCompletion13 = true,
806
+ _didIteratorError13 = false,
807
+ _iteratorError13 = void 0;
808
+ try {
809
+ for (var _iterator13 = tables[Symbol.iterator](), _step13; !(_iteratorNormalCompletion13 = (_step13 = _iterator13.next()).done); _iteratorNormalCompletion13 = true) {
810
+ var table1 = _step13.value;
811
+ var _tableColumns_get;
812
+ if (!((_tableColumns_get = tableColumns.get(table1)) === null || _tableColumns_get === void 0 ? void 0 : _tableColumns_get.has(instance.scope))) {
813
+ throw new Error(`[on-zero] table '${table1}' in instance '${instance.name}' is missing scope column '${instance.scope}'`);
814
+ }
815
+ }
816
+ } catch (err) {
817
+ _didIteratorError13 = true;
818
+ _iteratorError13 = err;
819
+ } finally {
820
+ try {
821
+ if (!_iteratorNormalCompletion13 && _iterator13.return != null) {
822
+ _iterator13.return();
823
+ }
824
+ } finally {
825
+ if (_didIteratorError13) {
826
+ throw _iteratorError13;
827
+ }
828
+ }
829
+ }
830
+ }
831
+ syncTables.set(instance.name, tables);
832
+ }
833
+ } catch (err) {
834
+ _didIteratorError8 = true;
835
+ _iteratorError8 = err;
836
+ } finally {
837
+ try {
838
+ if (!_iteratorNormalCompletion8 && _iterator8.return != null) {
839
+ _iterator8.return();
840
+ }
841
+ } finally {
842
+ if (_didIteratorError8) {
843
+ throw _iteratorError8;
844
+ }
845
+ }
846
+ }
847
+ var supportTables = /* @__PURE__ */new Map();
848
+ var _iteratorNormalCompletion14 = true,
849
+ _didIteratorError14 = false,
850
+ _iteratorError14 = void 0;
851
+ try {
852
+ var _loop = function () {
853
+ var instance2 = _step14.value;
854
+ var supported = new Set(instance2.declaredSupportTables);
855
+ var _iteratorNormalCompletion16 = true,
856
+ _didIteratorError16 = false,
857
+ _iteratorError16 = void 0;
858
+ try {
859
+ var _loop2 = function () {
860
+ var namespace3 = _step16.value;
861
+ if (!namespace3.modelPath) return "continue";
862
+ var visited = /* @__PURE__ */new Set();
863
+ var scan = function scan1(path2) {
864
+ var _parsed_supportTables, _parsed_imports;
865
+ if (visited.has(path2)) return;
866
+ visited.add(path2);
867
+ var parsed3 = parse(files[path2], path2);
868
+ if (parsed3.parseError) {
869
+ throw new Error(`[on-zero] unable to derive mutation dependencies from ${path2}: ${parsed3.parseError}`);
870
+ }
871
+ var _iteratorNormalCompletion17 = true,
872
+ _didIteratorError17 = false,
873
+ _iteratorError17 = void 0;
874
+ try {
875
+ for (var _iterator17 = ((_parsed_supportTables = parsed3.supportTables) !== null && _parsed_supportTables !== void 0 ? _parsed_supportTables : [])[Symbol.iterator](), _step17; !(_iteratorNormalCompletion17 = (_step17 = _iterator17.next()).done); _iteratorNormalCompletion17 = true) {
876
+ var table2 = _step17.value;
877
+ if (owners.has(table2) || relatedOwners.has(table2)) continue;
878
+ if (!syncTables.get(instance2.name).includes(table2)) {
879
+ supported.add(table2);
880
+ }
881
+ }
882
+ } catch (err) {
883
+ _didIteratorError17 = true;
884
+ _iteratorError17 = err;
885
+ } finally {
886
+ try {
887
+ if (!_iteratorNormalCompletion17 && _iterator17.return != null) {
888
+ _iterator17.return();
889
+ }
890
+ } finally {
891
+ if (_didIteratorError17) {
892
+ throw _iteratorError17;
893
+ }
894
+ }
895
+ }
896
+ var _iteratorNormalCompletion18 = true,
897
+ _didIteratorError18 = false,
898
+ _iteratorError18 = void 0;
899
+ try {
900
+ for (var _iterator18 = ((_parsed_imports = parsed3.imports) !== null && _parsed_imports !== void 0 ? _parsed_imports : [])[Symbol.iterator](), _step18; !(_iteratorNormalCompletion18 = (_step18 = _iterator18.next()).done); _iteratorNormalCompletion18 = true) {
901
+ var specifier = _step18.value;
902
+ var unresolved = specifier.startsWith("~/data/") ? `${baseDir}/${specifier.slice("~/data/".length)}` : specifier.startsWith(".") ? `${parentDir(path2)}/${specifier}` : null;
903
+ if (!unresolved) continue;
904
+ var normalized = resolvePath(unresolved);
905
+ var dependency = [normalized.endsWith(".ts") ? normalized : `${normalized}.ts`, `${normalized}/index.ts`].find(function (candidate) {
906
+ return candidate in files && sourceRoots.some(function (root) {
907
+ return isWithin(root, candidate);
908
+ });
909
+ });
910
+ if (dependency) scan(dependency);
911
+ }
912
+ } catch (err) {
913
+ _didIteratorError18 = true;
914
+ _iteratorError18 = err;
915
+ } finally {
916
+ try {
917
+ if (!_iteratorNormalCompletion18 && _iterator18.return != null) {
918
+ _iterator18.return();
919
+ }
920
+ } finally {
921
+ if (_didIteratorError18) {
922
+ throw _iteratorError18;
923
+ }
924
+ }
925
+ }
926
+ };
927
+ scan(namespace3.modelPath);
928
+ };
929
+ for (var _iterator16 = instance2.namespaces[Symbol.iterator](), _step16; !(_iteratorNormalCompletion16 = (_step16 = _iterator16.next()).done); _iteratorNormalCompletion16 = true) _loop2();
930
+ } catch (err) {
931
+ _didIteratorError16 = true;
932
+ _iteratorError16 = err;
933
+ } finally {
934
+ try {
935
+ if (!_iteratorNormalCompletion16 && _iterator16.return != null) {
936
+ _iterator16.return();
937
+ }
938
+ } finally {
939
+ if (_didIteratorError16) {
940
+ throw _iteratorError16;
941
+ }
942
+ }
943
+ }
944
+ supportTables.set(instance2.name, [...supported].sort());
945
+ };
946
+ for (var _iterator14 = instances[Symbol.iterator](), _step14; !(_iteratorNormalCompletion14 = (_step14 = _iterator14.next()).done); _iteratorNormalCompletion14 = true) _loop();
947
+ } catch (err) {
948
+ _didIteratorError14 = true;
949
+ _iteratorError14 = err;
950
+ } finally {
951
+ try {
952
+ if (!_iteratorNormalCompletion14 && _iterator14.return != null) {
953
+ _iterator14.return();
954
+ }
955
+ } finally {
956
+ if (_didIteratorError14) {
957
+ throw _iteratorError14;
958
+ }
959
+ }
960
+ }
961
+ var modelNames = modelNamespaces.map(function (namespace3) {
962
+ return namespace3.name;
251
963
  });
252
964
  var out = {};
253
- out["models.ts"] = generateModelsFile(modelNames, modelsDirName);
965
+ out["models.ts"] = generateModelsFile(modelNamespaces.map(function (namespace3) {
966
+ return {
967
+ name: namespace3.name,
968
+ importPath: `../${relativePath(baseDir, namespace3.modelPath).replace(/\.ts$/, "")}`
969
+ };
970
+ }));
254
971
  if (modelNamesWithSchema.length > 0) {
255
972
  out["types.ts"] = generateTypesFile(modelNamesWithSchema);
256
- out["tables.ts"] = generateTablesFile(modelNamesWithSchema, modelsDirName);
973
+ out["tables.ts"] = generateTablesFile(modelNamespaces.filter(function (namespace3) {
974
+ return modelNamesWithSchema.includes(namespace3.name);
975
+ }).map(function (namespace3) {
976
+ return {
977
+ name: namespace3.name,
978
+ importPath: `../${relativePath(baseDir, namespace3.modelPath).replace(/\.ts$/, "")}`
979
+ };
980
+ }));
257
981
  }
258
982
  out["README.md"] = generateReadmeFile();
259
- if (queryFilePaths.length > 0) {
260
- out["groupedQueries.ts"] = generateGroupedQueriesFile(allQueries);
261
- out["syncedQueries.ts"] = generateSyncedQueriesFile(allQueries);
262
- }
983
+ out["groupedQueries.ts"] = generateGroupedQueriesFile(allQueries);
984
+ out["syncedQueries.ts"] = generateSyncedQueriesFile(allQueries);
985
+ out["instances.ts"] = generateInstancesFile(instances.map(function (instance2) {
986
+ return {
987
+ name: instance2.name,
988
+ scope: instance2.scope,
989
+ queryNames: instance2.namespaces.map(function (namespace3) {
990
+ return namespace3.name;
991
+ }).filter(function (name) {
992
+ return allQueries.some(function (query2) {
993
+ return query2.sourceFile === name;
994
+ });
995
+ }),
996
+ modelNames: instance2.namespaces.filter(function (namespace3) {
997
+ return namespace3.modelPath;
998
+ }).map(function (namespace3) {
999
+ return namespace3.name;
1000
+ }),
1001
+ tables: instance2.namespaces.map(function (namespace3) {
1002
+ return namespace3.name;
1003
+ }),
1004
+ syncTables: syncTables.get(instance2.name),
1005
+ supportTables: supportTables.get(instance2.name)
1006
+ };
1007
+ }));
263
1008
  if (allModelMutations.length > 0) {
264
1009
  out["syncedMutations.ts"] = generateSyncedMutationsFile(allModelMutations);
265
1010
  }
266
1011
  var mutationCount = 0;
267
- var _iteratorNormalCompletion5 = true,
268
- _didIteratorError5 = false,
269
- _iteratorError5 = void 0;
1012
+ var _iteratorNormalCompletion15 = true,
1013
+ _didIteratorError15 = false,
1014
+ _iteratorError15 = void 0;
270
1015
  try {
271
- var _loop = function () {
272
- var m = _step5.value;
1016
+ var _loop1 = function () {
1017
+ var m = _step15.value;
273
1018
  if (m.hasCRUD) mutationCount += 3;
274
1019
  mutationCount += m.custom.filter(function (mut) {
275
1020
  return !m.hasCRUD || !["insert", "update", "delete", "upsert"].includes(mut.name);
276
1021
  }).length;
277
1022
  };
278
- for (var _iterator5 = allModelMutations[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) _loop();
1023
+ for (var _iterator15 = allModelMutations[Symbol.iterator](), _step15; !(_iteratorNormalCompletion15 = (_step15 = _iterator15.next()).done); _iteratorNormalCompletion15 = true) _loop1();
279
1024
  } catch (err) {
280
- _didIteratorError5 = true;
281
- _iteratorError5 = err;
1025
+ _didIteratorError15 = true;
1026
+ _iteratorError15 = err;
282
1027
  } finally {
283
1028
  try {
284
- if (!_iteratorNormalCompletion5 && _iterator5.return != null) {
285
- _iterator5.return();
1029
+ if (!_iteratorNormalCompletion15 && _iterator15.return != null) {
1030
+ _iterator15.return();
286
1031
  }
287
1032
  } finally {
288
- if (_didIteratorError5) {
289
- throw _iteratorError5;
1033
+ if (_didIteratorError15) {
1034
+ throw _iteratorError15;
290
1035
  }
291
1036
  }
292
1037
  }
293
1038
  return {
294
1039
  files: out,
1040
+ instances: instances.map(function (instance2) {
1041
+ return {
1042
+ name: instance2.name,
1043
+ syncTables: syncTables.get(instance2.name),
1044
+ supportTables: supportTables.get(instance2.name)
1045
+ };
1046
+ }),
295
1047
  modelCount: modelNames.length,
296
1048
  queryCount: allQueries.length,
297
1049
  mutationCount,