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