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
@@ -0,0 +1,1275 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var generate_layout_exports = {};
26
+ __export(generate_layout_exports, {
27
+ discoverDataLayout: () => discoverDataLayout,
28
+ namespaceImportPath: () => namespaceImportPath
29
+ });
30
+ module.exports = __toCommonJS(generate_layout_exports);
31
+ var import_fs = require("fs");
32
+ var import_path = require("path");
33
+ var isSourceFile = function isSourceFile2(name) {
34
+ return name.endsWith(".ts") && !name.endsWith(".d.ts") && !name.endsWith(".test.ts") && !name.endsWith(".spec.ts");
35
+ };
36
+ var toImportPath = function toImportPath2(baseDir, path) {
37
+ return (0, import_path.relative)(baseDir, path).split(import_path.sep).join("/").replace(/\.ts$/, "");
38
+ };
39
+ var isWithin = function isWithin2(root, path) {
40
+ var child = (0, import_path.relative)(root, path);
41
+ return child === "" || child !== ".." && !child.startsWith(`..${import_path.sep}`);
42
+ };
43
+ function propertyName(ts, name) {
44
+ if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)) {
45
+ return name.text;
46
+ }
47
+ return null;
48
+ }
49
+ function readDataConfig(ts, baseDir, configPath) {
50
+ var path = configPath ? (0, import_path.resolve)(configPath) : (0, import_path.resolve)(baseDir, "on-zero.config.ts");
51
+ if (!(0, import_fs.existsSync)(path)) {
52
+ if (configPath) throw new Error(`[on-zero] config file does not exist: ${path}`);
53
+ return null;
54
+ }
55
+ if ((0, import_path.dirname)(path) !== baseDir) {
56
+ throw new Error(`[on-zero] ${path} must be at the data root ${baseDir}`);
57
+ }
58
+ var source = ts.createSourceFile(path, (0, import_fs.readFileSync)(path, "utf8"), ts.ScriptTarget.Latest, true);
59
+ if (hasParseErrors(source)) throw new Error(`[on-zero] unable to parse ${path}`);
60
+ var config = null;
61
+ var _iteratorNormalCompletion = true,
62
+ _didIteratorError = false,
63
+ _iteratorError = void 0;
64
+ try {
65
+ for (var _iterator = source.statements[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
66
+ var statement = _step.value;
67
+ if (!ts.isExportAssignment(statement) || statement.isExportEquals) continue;
68
+ var call = statement.expression;
69
+ if (!ts.isCallExpression(call) || call.expression.getText(source) !== "defineConfig") {
70
+ continue;
71
+ }
72
+ var value = call.arguments[0];
73
+ if (value && ts.isObjectLiteralExpression(value)) config = value;
74
+ }
75
+ } catch (err) {
76
+ _didIteratorError = true;
77
+ _iteratorError = err;
78
+ } finally {
79
+ try {
80
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
81
+ _iterator.return();
82
+ }
83
+ } finally {
84
+ if (_didIteratorError) {
85
+ throw _iteratorError;
86
+ }
87
+ }
88
+ }
89
+ if (!config) {
90
+ throw new Error(`[on-zero] ${path} must default export defineConfig({ instances: { ... } })`);
91
+ }
92
+ var rootOptions = /* @__PURE__ */new Map();
93
+ var _iteratorNormalCompletion1 = true,
94
+ _didIteratorError1 = false,
95
+ _iteratorError1 = void 0;
96
+ try {
97
+ for (var _iterator1 = config.properties[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
98
+ var option = _step1.value;
99
+ if (!ts.isPropertyAssignment(option)) {
100
+ throw new Error(`[on-zero] ${path} options must use explicit property assignments`);
101
+ }
102
+ var name = propertyName(ts, option.name);
103
+ if (!name) throw new Error(`[on-zero] ${path} has an unsupported option name`);
104
+ if (rootOptions.has(name)) throw new Error(`[on-zero] ${path} repeats option '${name}'`);
105
+ rootOptions.set(name, option.initializer);
106
+ }
107
+ } catch (err) {
108
+ _didIteratorError1 = true;
109
+ _iteratorError1 = err;
110
+ } finally {
111
+ try {
112
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
113
+ _iterator1.return();
114
+ }
115
+ } finally {
116
+ if (_didIteratorError1) {
117
+ throw _iteratorError1;
118
+ }
119
+ }
120
+ }
121
+ var _iteratorNormalCompletion2 = true,
122
+ _didIteratorError2 = false,
123
+ _iteratorError2 = void 0;
124
+ try {
125
+ for (var _iterator2 = rootOptions.keys()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
126
+ var name1 = _step2.value;
127
+ if (name1 !== "instances") throw new Error(`[on-zero] ${path} has unknown option '${name1}'`);
128
+ }
129
+ } catch (err) {
130
+ _didIteratorError2 = true;
131
+ _iteratorError2 = err;
132
+ } finally {
133
+ try {
134
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
135
+ _iterator2.return();
136
+ }
137
+ } finally {
138
+ if (_didIteratorError2) {
139
+ throw _iteratorError2;
140
+ }
141
+ }
142
+ }
143
+ var instancesNode = rootOptions.get("instances");
144
+ if (!instancesNode || !ts.isObjectLiteralExpression(instancesNode)) {
145
+ throw new Error(`[on-zero] ${path} must declare a non-empty instances object`);
146
+ }
147
+ var instances = [];
148
+ var _iteratorNormalCompletion3 = true,
149
+ _didIteratorError3 = false,
150
+ _iteratorError3 = void 0;
151
+ try {
152
+ var _loop = function () {
153
+ var property = _step3.value;
154
+ if (!ts.isPropertyAssignment(property)) {
155
+ throw new Error(`[on-zero] ${path} instances must use explicit property assignments`);
156
+ }
157
+ var name2 = propertyName(ts, property.name);
158
+ if (!name2) throw new Error(`[on-zero] ${path} has an unsupported instance name`);
159
+ if (!ts.isObjectLiteralExpression(property.initializer)) {
160
+ throw new Error(`[on-zero] instance '${name2}' must be an object`);
161
+ }
162
+ if (instances.some(function (instance) {
163
+ return instance.name === name2;
164
+ })) {
165
+ throw new Error(`[on-zero] duplicate instance name '${name2}'`);
166
+ }
167
+ var dir = (0, import_path.resolve)((0, import_path.dirname)(path), name2);
168
+ var scope = null;
169
+ var supportTables = [];
170
+ var seen = /* @__PURE__ */new Set();
171
+ var _iteratorNormalCompletion5 = true,
172
+ _didIteratorError5 = false,
173
+ _iteratorError5 = void 0;
174
+ try {
175
+ for (var _iterator5 = property.initializer.properties[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
176
+ var option2 = _step5.value;
177
+ if (!ts.isPropertyAssignment(option2)) {
178
+ throw new Error(`[on-zero] instance '${name2}' options must be assignments`);
179
+ }
180
+ var optionName = propertyName(ts, option2.name);
181
+ if (!optionName) throw new Error(`[on-zero] instance '${name2}' has an invalid option`);
182
+ if (seen.has(optionName)) {
183
+ throw new Error(`[on-zero] instance '${name2}' repeats option '${optionName}'`);
184
+ }
185
+ seen.add(optionName);
186
+ if (optionName === "dir") {
187
+ if (!ts.isStringLiteral(option2.initializer)) {
188
+ throw new Error(`[on-zero] instance '${name2}' dir must be a string literal`);
189
+ }
190
+ if (option2.initializer.text.startsWith("/")) {
191
+ throw new Error(`[on-zero] instance '${name2}' dir must be relative to ${path}`);
192
+ }
193
+ dir = (0, import_path.resolve)((0, import_path.dirname)(path), option2.initializer.text);
194
+ continue;
195
+ }
196
+ if (optionName === "scope") {
197
+ if (!ts.isStringLiteral(option2.initializer)) {
198
+ throw new Error(`[on-zero] instance '${name2}' scope must be a string literal`);
199
+ }
200
+ if (!option2.initializer.text) {
201
+ throw new Error(`[on-zero] instance '${name2}' scope cannot be empty`);
202
+ }
203
+ scope = option2.initializer.text;
204
+ continue;
205
+ }
206
+ if (optionName === "supportTables") {
207
+ if (!ts.isArrayLiteralExpression(option2.initializer)) {
208
+ throw new Error(`[on-zero] instance '${name2}' supportTables must be an array`);
209
+ }
210
+ var _iteratorNormalCompletion12 = true,
211
+ _didIteratorError12 = false,
212
+ _iteratorError12 = void 0;
213
+ try {
214
+ for (var _iterator12 = option2.initializer.elements[Symbol.iterator](), _step12; !(_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done); _iteratorNormalCompletion12 = true) {
215
+ var table = _step12.value;
216
+ if (!ts.isStringLiteral(table)) {
217
+ throw new Error(`[on-zero] instance '${name2}' supportTables must contain string literals`);
218
+ }
219
+ if (!table.text) {
220
+ throw new Error(`[on-zero] instance '${name2}' supportTables cannot contain an empty table name`);
221
+ }
222
+ supportTables.push(table.text);
223
+ }
224
+ } catch (err) {
225
+ _didIteratorError12 = true;
226
+ _iteratorError12 = err;
227
+ } finally {
228
+ try {
229
+ if (!_iteratorNormalCompletion12 && _iterator12.return != null) {
230
+ _iterator12.return();
231
+ }
232
+ } finally {
233
+ if (_didIteratorError12) {
234
+ throw _iteratorError12;
235
+ }
236
+ }
237
+ }
238
+ continue;
239
+ }
240
+ throw new Error(`[on-zero] instance '${name2}' has unknown option '${optionName}'`);
241
+ }
242
+ } catch (err) {
243
+ _didIteratorError5 = true;
244
+ _iteratorError5 = err;
245
+ } finally {
246
+ try {
247
+ if (!_iteratorNormalCompletion5 && _iterator5.return != null) {
248
+ _iterator5.return();
249
+ }
250
+ } finally {
251
+ if (_didIteratorError5) {
252
+ throw _iteratorError5;
253
+ }
254
+ }
255
+ }
256
+ if (!(0, import_fs.existsSync)(dir) || !(0, import_fs.statSync)(dir).isDirectory()) {
257
+ throw new Error(`[on-zero] instance '${name2}' directory does not exist: ${dir}`);
258
+ }
259
+ instances.push({
260
+ name: name2,
261
+ dir,
262
+ scope,
263
+ supportTables
264
+ });
265
+ };
266
+ for (var _iterator3 = instancesNode.properties[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) _loop();
267
+ } catch (err) {
268
+ _didIteratorError3 = true;
269
+ _iteratorError3 = err;
270
+ } finally {
271
+ try {
272
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
273
+ _iterator3.return();
274
+ }
275
+ } finally {
276
+ if (_didIteratorError3) {
277
+ throw _iteratorError3;
278
+ }
279
+ }
280
+ }
281
+ if (instances.length === 0) {
282
+ throw new Error(`[on-zero] ${path} must declare at least one instance`);
283
+ }
284
+ var _iteratorNormalCompletion4 = true,
285
+ _didIteratorError4 = false,
286
+ _iteratorError4 = void 0;
287
+ try {
288
+ var _loop1 = function () {
289
+ var instance = _step4.value;
290
+ var duplicate = instances.find(function (candidate) {
291
+ return candidate !== instance && candidate.dir === instance.dir;
292
+ });
293
+ if (duplicate) {
294
+ throw new Error(`[on-zero] instances '${instance.name}' and '${duplicate.name}' resolve to the same directory: ${instance.dir}`);
295
+ }
296
+ };
297
+ for (var _iterator4 = instances[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) _loop1();
298
+ } catch (err) {
299
+ _didIteratorError4 = true;
300
+ _iteratorError4 = err;
301
+ } finally {
302
+ try {
303
+ if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
304
+ _iterator4.return();
305
+ }
306
+ } finally {
307
+ if (_didIteratorError4) {
308
+ throw _iteratorError4;
309
+ }
310
+ }
311
+ }
312
+ return {
313
+ path,
314
+ instances
315
+ };
316
+ }
317
+ function hasParseErrors(source) {
318
+ var _source_parseDiagnostics;
319
+ return Boolean((_source_parseDiagnostics = source.parseDiagnostics) === null || _source_parseDiagnostics === void 0 ? void 0 : _source_parseDiagnostics.length);
320
+ }
321
+ function hasNamespaceExports(ts, baseDir, path) {
322
+ var source = ts.createSourceFile(path, (0, import_fs.readFileSync)(path, "utf8"), ts.ScriptTarget.Latest, true);
323
+ if (hasParseErrors(source)) {
324
+ var displayPath = (0, import_path.relative)((0, import_path.dirname)(baseDir), path).split(import_path.sep).join("/");
325
+ console.warn(`[on-zero] ignoring ${displayPath}: no recognized data exports`);
326
+ return false;
327
+ }
328
+ var functions = /* @__PURE__ */new Map();
329
+ var exported = /* @__PURE__ */new Set();
330
+ var _iteratorNormalCompletion = true,
331
+ _didIteratorError = false,
332
+ _iteratorError = void 0;
333
+ try {
334
+ for (var _iterator = source.statements[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
335
+ var statement = _step.value;
336
+ if (ts.isVariableStatement(statement)) {
337
+ var _statement_modifiers;
338
+ var isExported = (_statement_modifiers = statement.modifiers) === null || _statement_modifiers === void 0 ? void 0 : _statement_modifiers.some(function (modifier) {
339
+ return modifier.kind === ts.SyntaxKind.ExportKeyword;
340
+ });
341
+ var _iteratorNormalCompletion1 = true,
342
+ _didIteratorError1 = false,
343
+ _iteratorError1 = void 0;
344
+ try {
345
+ for (var _iterator1 = statement.declarationList.declarations[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
346
+ var declaration = _step1.value;
347
+ if (!ts.isIdentifier(declaration.name) || !declaration.initializer) continue;
348
+ var name = declaration.name.text;
349
+ var initializer = declaration.initializer;
350
+ if (isExported && ts.isCallExpression(initializer)) {
351
+ var initializerText = initializer.getText(source);
352
+ if (name === "mutate" && initializerText.startsWith("mutations(") || name === "where" && initializerText.startsWith("serverWhere(") || name === "schema" && initializerText.startsWith("table(")) {
353
+ return true;
354
+ }
355
+ }
356
+ if (ts.isArrowFunction(initializer) || ts.isFunctionExpression(initializer)) {
357
+ functions.set(name, initializer.body);
358
+ if (isExported) exported.add(name);
359
+ }
360
+ }
361
+ } catch (err) {
362
+ _didIteratorError1 = true;
363
+ _iteratorError1 = err;
364
+ } finally {
365
+ try {
366
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
367
+ _iterator1.return();
368
+ }
369
+ } finally {
370
+ if (_didIteratorError1) {
371
+ throw _iteratorError1;
372
+ }
373
+ }
374
+ }
375
+ continue;
376
+ }
377
+ if (ts.isFunctionDeclaration(statement) && statement.name && statement.body) {
378
+ var _statement_modifiers1;
379
+ functions.set(statement.name.text, statement.body);
380
+ if ((_statement_modifiers1 = statement.modifiers) === null || _statement_modifiers1 === void 0 ? void 0 : _statement_modifiers1.some(function (modifier) {
381
+ return modifier.kind === ts.SyntaxKind.ExportKeyword;
382
+ })) {
383
+ exported.add(statement.name.text);
384
+ }
385
+ }
386
+ }
387
+ } catch (err) {
388
+ _didIteratorError = true;
389
+ _iteratorError = err;
390
+ } finally {
391
+ try {
392
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
393
+ _iterator.return();
394
+ }
395
+ } finally {
396
+ if (_didIteratorError) {
397
+ throw _iteratorError;
398
+ }
399
+ }
400
+ }
401
+ var visiting = /* @__PURE__ */new Set();
402
+ var reachesQuery = function reachesQuery1(node) {
403
+ if (ts.isPropertyAccessExpression(node)) {
404
+ if (ts.isIdentifier(node.expression) && node.expression.text === "zql") return true;
405
+ if (ts.isPropertyAccessExpression(node.expression) && node.expression.name.text === "query") return true;
406
+ }
407
+ if (ts.isCallExpression(node) && ts.isIdentifier(node.expression)) {
408
+ var name2 = node.expression.text;
409
+ var helper = functions.get(name2);
410
+ if (helper && !visiting.has(name2)) {
411
+ visiting.add(name2);
412
+ var found = reachesQuery(helper);
413
+ visiting.delete(name2);
414
+ if (found) return true;
415
+ }
416
+ }
417
+ var found1 = false;
418
+ ts.forEachChild(node, function (child) {
419
+ if (!found1 && reachesQuery(child)) found1 = true;
420
+ });
421
+ return found1;
422
+ };
423
+ return [...exported].some(function (name2) {
424
+ return reachesQuery(functions.get(name2));
425
+ });
426
+ }
427
+ function discoverNamespaces(ts, baseDir, instance, instanceDirs) {
428
+ var namespaces = [];
429
+ var _iteratorNormalCompletion = true,
430
+ _didIteratorError = false,
431
+ _iteratorError = void 0;
432
+ try {
433
+ for (var _iterator = (0, import_fs.readdirSync)(instance.dir, {
434
+ withFileTypes: true
435
+ }).sort(function (a, b) {
436
+ return a.name.localeCompare(b.name);
437
+ })[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
438
+ var entry = _step.value;
439
+ if (entry.isFile()) {
440
+ if (!isSourceFile(entry.name) || entry.name === "on-zero.config.ts") continue;
441
+ var path = (0, import_path.resolve)(instance.dir, entry.name);
442
+ if (!hasNamespaceExports(ts, baseDir, path)) continue;
443
+ var name = (0, import_path.basename)(entry.name, ".ts");
444
+ namespaces.push({
445
+ name,
446
+ instance: instance.name,
447
+ queryPath: path,
448
+ modelPath: path,
449
+ sourcePaths: [path]
450
+ });
451
+ continue;
452
+ }
453
+ if (!entry.isDirectory()) continue;
454
+ var folder = (0, import_path.resolve)(instance.dir, entry.name);
455
+ if (entry.name === "generated" || instanceDirs.has(folder)) continue;
456
+ var queryPath = (0, import_path.resolve)(folder, "queries.ts");
457
+ var modelPath = (0, import_path.resolve)(folder, "mutations.ts");
458
+ var hasQueries = (0, import_fs.existsSync)(queryPath);
459
+ var hasMutations = (0, import_fs.existsSync)(modelPath);
460
+ if (!hasQueries && !hasMutations) {
461
+ if (["models", "mutations", "queries"].includes(entry.name) && (0, import_fs.readdirSync)(folder).some(isSourceFile)) {
462
+ throw new Error(`[on-zero] ${folder} uses the removed top-level ${entry.name}/ layout; move each namespace to <name>.ts or <name>/queries.ts + mutations.ts`);
463
+ }
464
+ continue;
465
+ }
466
+ namespaces.push({
467
+ name: entry.name,
468
+ instance: instance.name,
469
+ queryPath: hasQueries ? queryPath : null,
470
+ modelPath: hasMutations ? modelPath : null,
471
+ sourcePaths: [hasQueries && queryPath, hasMutations && modelPath].filter(function (path2) {
472
+ return Boolean(path2);
473
+ })
474
+ });
475
+ }
476
+ } catch (err) {
477
+ _didIteratorError = true;
478
+ _iteratorError = err;
479
+ } finally {
480
+ try {
481
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
482
+ _iterator.return();
483
+ }
484
+ } finally {
485
+ if (_didIteratorError) {
486
+ throw _iteratorError;
487
+ }
488
+ }
489
+ }
490
+ return namespaces;
491
+ }
492
+ function metadataPaths(baseDir) {
493
+ var paths = [];
494
+ var relations = (0, import_path.resolve)(baseDir, "relations.ts");
495
+ if ((0, import_fs.existsSync)(relations)) paths.push(relations);
496
+ var databaseDir = (0, import_path.resolve)((0, import_path.dirname)(baseDir), "database");
497
+ if (!(0, import_fs.existsSync)(databaseDir)) return paths;
498
+ var _iteratorNormalCompletion = true,
499
+ _didIteratorError = false,
500
+ _iteratorError = void 0;
501
+ try {
502
+ for (var _iterator = (0, import_fs.readdirSync)(databaseDir, {
503
+ withFileTypes: true
504
+ })[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
505
+ var entry = _step.value;
506
+ if (!entry.isFile() || !isSourceFile(entry.name)) continue;
507
+ if (entry.name === "relations.ts" || entry.name === "zeroSchemaInput.ts" || entry.name.startsWith("schema")) {
508
+ paths.push((0, import_path.resolve)(databaseDir, entry.name));
509
+ }
510
+ }
511
+ } catch (err) {
512
+ _didIteratorError = true;
513
+ _iteratorError = err;
514
+ } finally {
515
+ try {
516
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
517
+ _iterator.return();
518
+ }
519
+ } finally {
520
+ if (_didIteratorError) {
521
+ throw _iteratorError;
522
+ }
523
+ }
524
+ }
525
+ return paths.sort();
526
+ }
527
+ function relationTargets(ts, paths) {
528
+ var relations = /* @__PURE__ */new Map();
529
+ var _iteratorNormalCompletion = true,
530
+ _didIteratorError = false,
531
+ _iteratorError = void 0;
532
+ try {
533
+ var _loop = function () {
534
+ var path = _step.value;
535
+ var source = ts.createSourceFile(path, (0, import_fs.readFileSync)(path, "utf8"), ts.ScriptTarget.Latest, true);
536
+ var visit = function visit1(node) {
537
+ if (!ts.isCallExpression(node) || node.expression.getText(source) !== "defineRelations") {
538
+ ts.forEachChild(node, visit);
539
+ return;
540
+ }
541
+ var factory = node.arguments[1];
542
+ if (!factory || !ts.isArrowFunction(factory) && !ts.isFunctionExpression(factory)) return;
543
+ var body = ts.isParenthesizedExpression(factory.body) ? factory.body.expression : factory.body;
544
+ if (!ts.isObjectLiteralExpression(body)) return;
545
+ var _iteratorNormalCompletion2 = true,
546
+ _didIteratorError2 = false,
547
+ _iteratorError2 = void 0;
548
+ try {
549
+ for (var _iterator2 = body.properties[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
550
+ var tableProperty = _step2.value;
551
+ var _relations_get;
552
+ if (!ts.isPropertyAssignment(tableProperty) || !ts.isObjectLiteralExpression(tableProperty.initializer)) {
553
+ continue;
554
+ }
555
+ var table = tableProperty.name.getText(source).replace(/^['"]|['"]$/g, "");
556
+ var tableRelations = (_relations_get = relations.get(table)) !== null && _relations_get !== void 0 ? _relations_get : /* @__PURE__ */new Map();
557
+ var _iteratorNormalCompletion1 = true,
558
+ _didIteratorError1 = false,
559
+ _iteratorError1 = void 0;
560
+ try {
561
+ for (var _iterator1 = tableProperty.initializer.properties[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
562
+ var relationProperty = _step1.value;
563
+ if (!ts.isPropertyAssignment(relationProperty) || !ts.isCallExpression(relationProperty.initializer)) {
564
+ continue;
565
+ }
566
+ var expression = relationProperty.initializer.expression;
567
+ if (!ts.isPropertyAccessExpression(expression)) continue;
568
+ var name = relationProperty.name.getText(source).replace(/^['"]|['"]$/g, "");
569
+ tableRelations.set(name, expression.name.text);
570
+ }
571
+ } catch (err) {
572
+ _didIteratorError1 = true;
573
+ _iteratorError1 = err;
574
+ } finally {
575
+ try {
576
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
577
+ _iterator1.return();
578
+ }
579
+ } finally {
580
+ if (_didIteratorError1) {
581
+ throw _iteratorError1;
582
+ }
583
+ }
584
+ }
585
+ relations.set(table, tableRelations);
586
+ }
587
+ } catch (err) {
588
+ _didIteratorError2 = true;
589
+ _iteratorError2 = err;
590
+ } finally {
591
+ try {
592
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
593
+ _iterator2.return();
594
+ }
595
+ } finally {
596
+ if (_didIteratorError2) {
597
+ throw _iteratorError2;
598
+ }
599
+ }
600
+ }
601
+ };
602
+ visit(source);
603
+ };
604
+ for (var _iterator = paths.filter(function (path) {
605
+ return (0, import_path.basename)(path) === "relations.ts";
606
+ })[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) _loop();
607
+ } catch (err) {
608
+ _didIteratorError = true;
609
+ _iteratorError = err;
610
+ } finally {
611
+ try {
612
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
613
+ _iterator.return();
614
+ }
615
+ } finally {
616
+ if (_didIteratorError) {
617
+ throw _iteratorError;
618
+ }
619
+ }
620
+ }
621
+ return relations;
622
+ }
623
+ function tableColumns(ts, paths, namespaces) {
624
+ var columns = /* @__PURE__ */new Map();
625
+ var sources = /* @__PURE__ */new Set([...paths, ...namespaces.flatMap(function (namespace) {
626
+ return namespace.sourcePaths;
627
+ })]);
628
+ var _iteratorNormalCompletion = true,
629
+ _didIteratorError = false,
630
+ _iteratorError = void 0;
631
+ try {
632
+ var _loop = function () {
633
+ var path = _step.value;
634
+ var source = ts.createSourceFile(path, (0, import_fs.readFileSync)(path, "utf8"), ts.ScriptTarget.Latest, true);
635
+ var visit = function visit1(node) {
636
+ if (!ts.isVariableDeclaration(node) || !ts.isIdentifier(node.name) || !node.initializer) {
637
+ ts.forEachChild(node, visit);
638
+ return;
639
+ }
640
+ var tableNames = /* @__PURE__ */new Set([node.name.text]);
641
+ var foundColumns = null;
642
+ var inspect = function inspect1(candidate) {
643
+ if (!ts.isCallExpression(candidate)) {
644
+ ts.forEachChild(candidate, inspect);
645
+ return;
646
+ }
647
+ var _iteratorNormalCompletion3 = true,
648
+ _didIteratorError3 = false,
649
+ _iteratorError3 = void 0;
650
+ try {
651
+ for (var _iterator3 = candidate.arguments[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
652
+ var argument = _step3.value;
653
+ if (ts.isStringLiteral(argument) && /table/i.test(candidate.expression.getText(source))) {
654
+ tableNames.add(argument.text);
655
+ }
656
+ if (ts.isObjectLiteralExpression(argument)) foundColumns = argument;
657
+ }
658
+ } catch (err) {
659
+ _didIteratorError3 = true;
660
+ _iteratorError3 = err;
661
+ } finally {
662
+ try {
663
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
664
+ _iterator3.return();
665
+ }
666
+ } finally {
667
+ if (_didIteratorError3) {
668
+ throw _iteratorError3;
669
+ }
670
+ }
671
+ }
672
+ inspect(candidate.expression);
673
+ };
674
+ inspect(node.initializer);
675
+ if (foundColumns) {
676
+ var names = new Set(foundColumns.properties.map(function (property) {
677
+ var _property_name;
678
+ return (_property_name = property.name) === null || _property_name === void 0 ? void 0 : _property_name.getText(source).replace(/^['"]|['"]$/g, "");
679
+ }).filter(function (name) {
680
+ return Boolean(name);
681
+ }));
682
+ var _iteratorNormalCompletion2 = true,
683
+ _didIteratorError2 = false,
684
+ _iteratorError2 = void 0;
685
+ try {
686
+ for (var _iterator2 = tableNames[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
687
+ var tableName = _step2.value;
688
+ columns.set(tableName, names);
689
+ }
690
+ } catch (err) {
691
+ _didIteratorError2 = true;
692
+ _iteratorError2 = err;
693
+ } finally {
694
+ try {
695
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
696
+ _iterator2.return();
697
+ }
698
+ } finally {
699
+ if (_didIteratorError2) {
700
+ throw _iteratorError2;
701
+ }
702
+ }
703
+ }
704
+ }
705
+ ts.forEachChild(node, visit);
706
+ };
707
+ visit(source);
708
+ };
709
+ for (var _iterator = sources[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) _loop();
710
+ } catch (err) {
711
+ _didIteratorError = true;
712
+ _iteratorError = err;
713
+ } finally {
714
+ try {
715
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
716
+ _iterator.return();
717
+ }
718
+ } finally {
719
+ if (_didIteratorError) {
720
+ throw _iteratorError;
721
+ }
722
+ }
723
+ }
724
+ return columns;
725
+ }
726
+ function relatedTables(ts, namespace, relations) {
727
+ if (!namespace.queryPath) return [];
728
+ var source = ts.createSourceFile(namespace.queryPath, (0, import_fs.readFileSync)(namespace.queryPath, "utf8"), ts.ScriptTarget.Latest, true);
729
+ var reached = [];
730
+ var functions = /* @__PURE__ */new Map();
731
+ var exported = /* @__PURE__ */new Set();
732
+ var _iteratorNormalCompletion = true,
733
+ _didIteratorError = false,
734
+ _iteratorError = void 0;
735
+ try {
736
+ for (var _iterator = source.statements[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
737
+ var statement = _step.value;
738
+ if (ts.isVariableStatement(statement)) {
739
+ var _statement_modifiers;
740
+ var isExported = (_statement_modifiers = statement.modifiers) === null || _statement_modifiers === void 0 ? void 0 : _statement_modifiers.some(function (modifier) {
741
+ return modifier.kind === ts.SyntaxKind.ExportKeyword;
742
+ });
743
+ var _iteratorNormalCompletion1 = true,
744
+ _didIteratorError1 = false,
745
+ _iteratorError1 = void 0;
746
+ try {
747
+ for (var _iterator1 = statement.declarationList.declarations[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
748
+ var declaration = _step1.value;
749
+ if (ts.isIdentifier(declaration.name) && declaration.initializer && (ts.isArrowFunction(declaration.initializer) || ts.isFunctionExpression(declaration.initializer))) {
750
+ functions.set(declaration.name.text, declaration.initializer.body);
751
+ if (isExported) exported.add(declaration.name.text);
752
+ }
753
+ }
754
+ } catch (err) {
755
+ _didIteratorError1 = true;
756
+ _iteratorError1 = err;
757
+ } finally {
758
+ try {
759
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
760
+ _iterator1.return();
761
+ }
762
+ } finally {
763
+ if (_didIteratorError1) {
764
+ throw _iteratorError1;
765
+ }
766
+ }
767
+ }
768
+ } else if (ts.isFunctionDeclaration(statement) && statement.name && statement.body) {
769
+ var _statement_modifiers1;
770
+ functions.set(statement.name.text, statement.body);
771
+ if ((_statement_modifiers1 = statement.modifiers) === null || _statement_modifiers1 === void 0 ? void 0 : _statement_modifiers1.some(function (modifier) {
772
+ return modifier.kind === ts.SyntaxKind.ExportKeyword;
773
+ })) {
774
+ exported.add(statement.name.text);
775
+ }
776
+ }
777
+ }
778
+ } catch (err) {
779
+ _didIteratorError = true;
780
+ _iteratorError = err;
781
+ } finally {
782
+ try {
783
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
784
+ _iterator.return();
785
+ }
786
+ } finally {
787
+ if (_didIteratorError) {
788
+ throw _iteratorError;
789
+ }
790
+ }
791
+ }
792
+ var rootTable = function rootTable2(node) {
793
+ var _ref;
794
+ var _text_match;
795
+ var text = node.getText(source);
796
+ return (_ref = (_text_match = text.match(/(?:\bzql|\.query)\.([A-Za-z_$][\w$]*)/)) === null || _text_match === void 0 ? void 0 : _text_match[1]) !== null && _ref !== void 0 ? _ref : null;
797
+ };
798
+ var visiting = /* @__PURE__ */new Set();
799
+ var visit = function visit1(node, currentTable, query) {
800
+ if (ts.isCallExpression(node) && ts.isPropertyAccessExpression(node.expression) && node.expression.name.text === "related") {
801
+ var _rootTable;
802
+ var _relations_get;
803
+ var nameArg = node.arguments[0];
804
+ if (!nameArg || !ts.isStringLiteral(nameArg)) {
805
+ throw new Error(`[on-zero] ${namespace.name}.${query} uses related() without a string literal; sync membership must be statically derivable`);
806
+ }
807
+ var sourceTable = (_rootTable = rootTable(node.expression.expression)) !== null && _rootTable !== void 0 ? _rootTable : currentTable;
808
+ var target = (_relations_get = relations.get(sourceTable)) === null || _relations_get === void 0 ? void 0 : _relations_get.get(nameArg.text);
809
+ if (!target) {
810
+ throw new Error(`[on-zero] ${namespace.name}.${query} related('${nameArg.text}') cannot be resolved from table '${sourceTable}' through relations.ts`);
811
+ }
812
+ reached.push({
813
+ table: target,
814
+ query
815
+ });
816
+ visit(node.expression.expression, currentTable, query);
817
+ var callback = node.arguments[1];
818
+ if (callback && (ts.isArrowFunction(callback) || ts.isFunctionExpression(callback))) {
819
+ visit(callback.body, target, query);
820
+ }
821
+ return;
822
+ }
823
+ if (ts.isCallExpression(node) && ts.isIdentifier(node.expression)) {
824
+ var helper = functions.get(node.expression.text);
825
+ var key = `${query}:${node.expression.text}`;
826
+ if (helper && !visiting.has(key)) {
827
+ visiting.add(key);
828
+ visit(helper, currentTable, query);
829
+ visiting.delete(key);
830
+ }
831
+ }
832
+ ts.forEachChild(node, function (child) {
833
+ return visit(child, currentTable, query);
834
+ });
835
+ };
836
+ var _iteratorNormalCompletion2 = true,
837
+ _didIteratorError2 = false,
838
+ _iteratorError2 = void 0;
839
+ try {
840
+ for (var _iterator2 = exported[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
841
+ var name = _step2.value;
842
+ if (["mutate", "schema", "where"].includes(name)) continue;
843
+ visit(functions.get(name), namespace.name, name);
844
+ }
845
+ } catch (err) {
846
+ _didIteratorError2 = true;
847
+ _iteratorError2 = err;
848
+ } finally {
849
+ try {
850
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
851
+ _iterator2.return();
852
+ }
853
+ } finally {
854
+ if (_didIteratorError2) {
855
+ throw _iteratorError2;
856
+ }
857
+ }
858
+ }
859
+ return reached;
860
+ }
861
+ function mutationSupportTables(ts, baseDir, sourceRoots, namespace) {
862
+ if (!namespace.modelPath) return [];
863
+ var tables = /* @__PURE__ */new Set();
864
+ var visited = /* @__PURE__ */new Set();
865
+ var scan = function scan1(path) {
866
+ if (visited.has(path)) return;
867
+ visited.add(path);
868
+ var source = ts.createSourceFile(path, (0, import_fs.readFileSync)(path, "utf8"), ts.ScriptTarget.Latest, true);
869
+ var visit = function visit1(node) {
870
+ if (ts.isPropertyAccessExpression(node) && ts.isPropertyAccessExpression(node.expression) && ["mutate", "query"].includes(node.expression.name.text)) {
871
+ var transaction = node.expression.expression;
872
+ if (ts.isIdentifier(transaction) && transaction.text === "tx" || ts.isPropertyAccessExpression(transaction) && transaction.name.text === "tx") {
873
+ tables.add(node.name.text);
874
+ }
875
+ }
876
+ if ((ts.isImportDeclaration(node) || ts.isExportDeclaration(node)) && node.moduleSpecifier && ts.isStringLiteral(node.moduleSpecifier)) {
877
+ var specifier = node.moduleSpecifier.text;
878
+ var unresolved = specifier.startsWith("~/data/") ? (0, import_path.resolve)(baseDir, specifier.slice("~/data/".length)) : specifier.startsWith(".") ? (0, import_path.resolve)((0, import_path.dirname)(path), specifier) : null;
879
+ if (unresolved) {
880
+ var _loop = function (_i2, _iter2) {
881
+ var candidate = _iter2[_i2];
882
+ if ((0, import_fs.existsSync)(candidate) && sourceRoots.some(function (root) {
883
+ return isWithin(root, candidate);
884
+ })) {
885
+ scan(candidate);
886
+ return "break";
887
+ }
888
+ };
889
+ for (var _i = 0, _iter = [unresolved.endsWith(".ts") ? unresolved : `${unresolved}.ts`, (0, import_path.resolve)(unresolved, "index.ts")]; _i < _iter.length; _i++) {
890
+ var _ret = _loop(_i, _iter);
891
+ if (_ret === "break") break;
892
+ }
893
+ }
894
+ }
895
+ ts.forEachChild(node, visit);
896
+ };
897
+ visit(source);
898
+ };
899
+ scan(namespace.modelPath);
900
+ return [...tables].sort();
901
+ }
902
+ function assertNoInstanceFiles(roots) {
903
+ var visited = /* @__PURE__ */new Set();
904
+ var walk = function walk1(dir) {
905
+ if (visited.has(dir) || !(0, import_fs.existsSync)(dir)) return;
906
+ visited.add(dir);
907
+ var _iteratorNormalCompletion2 = true,
908
+ _didIteratorError2 = false,
909
+ _iteratorError2 = void 0;
910
+ try {
911
+ for (var _iterator2 = (0, import_fs.readdirSync)(dir, {
912
+ withFileTypes: true
913
+ })[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
914
+ var entry = _step2.value;
915
+ if (entry.name === "node_modules" || entry.name === "generated") continue;
916
+ var path = (0, import_path.resolve)(dir, entry.name);
917
+ if (entry.isDirectory()) {
918
+ walk(path);
919
+ } else if (entry.isFile() && entry.name === "instance.ts") {
920
+ throw new Error(`[on-zero] ${path} uses removed instance.ts configuration; delete it and configure instances in on-zero.config.ts`);
921
+ }
922
+ }
923
+ } catch (err) {
924
+ _didIteratorError2 = true;
925
+ _iteratorError2 = err;
926
+ } finally {
927
+ try {
928
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
929
+ _iterator2.return();
930
+ }
931
+ } finally {
932
+ if (_didIteratorError2) {
933
+ throw _iteratorError2;
934
+ }
935
+ }
936
+ }
937
+ };
938
+ var _iteratorNormalCompletion = true,
939
+ _didIteratorError = false,
940
+ _iteratorError = void 0;
941
+ try {
942
+ for (var _iterator = roots[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
943
+ var root = _step.value;
944
+ walk(root);
945
+ }
946
+ } catch (err) {
947
+ _didIteratorError = true;
948
+ _iteratorError = err;
949
+ } finally {
950
+ try {
951
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
952
+ _iterator.return();
953
+ }
954
+ } finally {
955
+ if (_didIteratorError) {
956
+ throw _iteratorError;
957
+ }
958
+ }
959
+ }
960
+ }
961
+ function assertNoUnclaimedNamespaces(ts, baseDir, configPath, instanceDirs) {
962
+ var walk = function walk1(dir) {
963
+ if (instanceDirs.some(function (instanceDir) {
964
+ return isWithin(instanceDir, dir);
965
+ })) return;
966
+ var _iteratorNormalCompletion = true,
967
+ _didIteratorError = false,
968
+ _iteratorError = void 0;
969
+ try {
970
+ for (var _iterator = (0, import_fs.readdirSync)(dir, {
971
+ withFileTypes: true
972
+ })[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
973
+ var entry = _step.value;
974
+ if (entry.name === "node_modules" || entry.name === "generated") continue;
975
+ var path = (0, import_path.resolve)(dir, entry.name);
976
+ if (entry.isDirectory()) {
977
+ walk(path);
978
+ continue;
979
+ }
980
+ if (!entry.isFile() || !isSourceFile(entry.name) || path === configPath || entry.name === "instance.ts") {
981
+ continue;
982
+ }
983
+ if (hasNamespaceExports(ts, baseDir, path)) {
984
+ throw new Error(`[on-zero] data namespace ${path} is outside every instance directory declared in ${configPath}`);
985
+ }
986
+ }
987
+ } catch (err) {
988
+ _didIteratorError = true;
989
+ _iteratorError = err;
990
+ } finally {
991
+ try {
992
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
993
+ _iterator.return();
994
+ }
995
+ } finally {
996
+ if (_didIteratorError) {
997
+ throw _iteratorError;
998
+ }
999
+ }
1000
+ }
1001
+ };
1002
+ walk(baseDir);
1003
+ }
1004
+ function discoverDataLayout(ts, baseDir, configPath) {
1005
+ var _ref;
1006
+ var config = readDataConfig(ts, baseDir, configPath);
1007
+ var configured = (_ref = config === null || config === void 0 ? void 0 : config.instances) !== null && _ref !== void 0 ? _ref : [{
1008
+ name: "default",
1009
+ dir: baseDir,
1010
+ scope: null,
1011
+ supportTables: []
1012
+ }];
1013
+ var sourceRoots = [... /* @__PURE__ */new Set([baseDir, ...configured.map(function (instance2) {
1014
+ return instance2.dir;
1015
+ })])];
1016
+ assertNoInstanceFiles(sourceRoots);
1017
+ if (config) {
1018
+ assertNoUnclaimedNamespaces(ts, baseDir, config.path, configured.map(function (instance2) {
1019
+ return instance2.dir;
1020
+ }));
1021
+ }
1022
+ var instances = configured.map(function (instance2) {
1023
+ return {
1024
+ name: instance2.name,
1025
+ dir: instance2.dir,
1026
+ scope: instance2.scope,
1027
+ namespaces: [],
1028
+ syncTables: [],
1029
+ supportTables: [],
1030
+ declaredSupportTables: instance2.supportTables
1031
+ };
1032
+ });
1033
+ var instanceDirs = new Set(instances.map(function (instance2) {
1034
+ return instance2.dir;
1035
+ }));
1036
+ var _iteratorNormalCompletion = true,
1037
+ _didIteratorError = false,
1038
+ _iteratorError = void 0;
1039
+ try {
1040
+ for (var _iterator = instances[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
1041
+ var instance = _step.value;
1042
+ instance.namespaces = discoverNamespaces(ts, baseDir, instance, instanceDirs);
1043
+ }
1044
+ } catch (err) {
1045
+ _didIteratorError = true;
1046
+ _iteratorError = err;
1047
+ } finally {
1048
+ try {
1049
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
1050
+ _iterator.return();
1051
+ }
1052
+ } finally {
1053
+ if (_didIteratorError) {
1054
+ throw _iteratorError;
1055
+ }
1056
+ }
1057
+ }
1058
+ var namespaces = instances.flatMap(function (instance2) {
1059
+ return instance2.namespaces;
1060
+ });
1061
+ var owners = /* @__PURE__ */new Map();
1062
+ var _iteratorNormalCompletion1 = true,
1063
+ _didIteratorError1 = false,
1064
+ _iteratorError1 = void 0;
1065
+ try {
1066
+ for (var _iterator1 = namespaces[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
1067
+ var namespace = _step1.value;
1068
+ var owner = owners.get(namespace.name);
1069
+ if (owner) {
1070
+ throw new Error(`[on-zero] namespace '${namespace.name}' is claimed by instances '${owner}' and '${namespace.instance}'`);
1071
+ }
1072
+ owners.set(namespace.name, namespace.instance);
1073
+ }
1074
+ } catch (err) {
1075
+ _didIteratorError1 = true;
1076
+ _iteratorError1 = err;
1077
+ } finally {
1078
+ try {
1079
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
1080
+ _iterator1.return();
1081
+ }
1082
+ } finally {
1083
+ if (_didIteratorError1) {
1084
+ throw _iteratorError1;
1085
+ }
1086
+ }
1087
+ }
1088
+ var metadata = metadataPaths(baseDir);
1089
+ var relations = relationTargets(ts, metadata);
1090
+ var columns = tableColumns(ts, metadata, namespaces);
1091
+ var relatedOwners = /* @__PURE__ */new Map();
1092
+ var _iteratorNormalCompletion2 = true,
1093
+ _didIteratorError2 = false,
1094
+ _iteratorError2 = void 0;
1095
+ try {
1096
+ for (var _iterator2 = instances[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
1097
+ var instance1 = _step2.value;
1098
+ var syncTables = new Set(instance1.namespaces.map(function (namespace2) {
1099
+ return namespace2.name;
1100
+ }));
1101
+ var _iteratorNormalCompletion3 = true,
1102
+ _didIteratorError3 = false,
1103
+ _iteratorError3 = void 0;
1104
+ try {
1105
+ for (var _iterator3 = instance1.namespaces[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
1106
+ var namespace1 = _step3.value;
1107
+ var _iteratorNormalCompletion4 = true,
1108
+ _didIteratorError4 = false,
1109
+ _iteratorError4 = void 0;
1110
+ try {
1111
+ for (var _iterator4 = relatedTables(ts, namespace1, relations)[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
1112
+ var reached = _step4.value;
1113
+ var _owners_get;
1114
+ var owner1 = (_owners_get = owners.get(reached.table)) !== null && _owners_get !== void 0 ? _owners_get : relatedOwners.get(reached.table);
1115
+ if (owner1 && owner1 !== instance1.name) {
1116
+ throw new Error(`[on-zero] ${namespace1.name}.${reached.query} in instance '${instance1.name}' reaches table '${reached.table}' owned by instance '${owner1}'`);
1117
+ }
1118
+ relatedOwners.set(reached.table, instance1.name);
1119
+ syncTables.add(reached.table);
1120
+ }
1121
+ } catch (err) {
1122
+ _didIteratorError4 = true;
1123
+ _iteratorError4 = err;
1124
+ } finally {
1125
+ try {
1126
+ if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
1127
+ _iterator4.return();
1128
+ }
1129
+ } finally {
1130
+ if (_didIteratorError4) {
1131
+ throw _iteratorError4;
1132
+ }
1133
+ }
1134
+ }
1135
+ }
1136
+ } catch (err) {
1137
+ _didIteratorError3 = true;
1138
+ _iteratorError3 = err;
1139
+ } finally {
1140
+ try {
1141
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
1142
+ _iterator3.return();
1143
+ }
1144
+ } finally {
1145
+ if (_didIteratorError3) {
1146
+ throw _iteratorError3;
1147
+ }
1148
+ }
1149
+ }
1150
+ instance1.syncTables = [...syncTables].sort();
1151
+ if (instance1.scope) {
1152
+ var _iteratorNormalCompletion5 = true,
1153
+ _didIteratorError5 = false,
1154
+ _iteratorError5 = void 0;
1155
+ try {
1156
+ for (var _iterator5 = instance1.syncTables[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
1157
+ var table = _step5.value;
1158
+ var _columns_get;
1159
+ if (!((_columns_get = columns.get(table)) === null || _columns_get === void 0 ? void 0 : _columns_get.has(instance1.scope))) {
1160
+ throw new Error(`[on-zero] table '${table}' in instance '${instance1.name}' is missing scope column '${instance1.scope}'`);
1161
+ }
1162
+ }
1163
+ } catch (err) {
1164
+ _didIteratorError5 = true;
1165
+ _iteratorError5 = err;
1166
+ } finally {
1167
+ try {
1168
+ if (!_iteratorNormalCompletion5 && _iterator5.return != null) {
1169
+ _iterator5.return();
1170
+ }
1171
+ } finally {
1172
+ if (_didIteratorError5) {
1173
+ throw _iteratorError5;
1174
+ }
1175
+ }
1176
+ }
1177
+ }
1178
+ }
1179
+ } catch (err) {
1180
+ _didIteratorError2 = true;
1181
+ _iteratorError2 = err;
1182
+ } finally {
1183
+ try {
1184
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
1185
+ _iterator2.return();
1186
+ }
1187
+ } finally {
1188
+ if (_didIteratorError2) {
1189
+ throw _iteratorError2;
1190
+ }
1191
+ }
1192
+ }
1193
+ var _iteratorNormalCompletion6 = true,
1194
+ _didIteratorError6 = false,
1195
+ _iteratorError6 = void 0;
1196
+ try {
1197
+ var _loop = function () {
1198
+ var instance2 = _step6.value;
1199
+ var supportTables = new Set(instance2.declaredSupportTables);
1200
+ var _iteratorNormalCompletion7 = true,
1201
+ _didIteratorError7 = false,
1202
+ _iteratorError7 = void 0;
1203
+ try {
1204
+ for (var _iterator7 = instance2.namespaces[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {
1205
+ var namespace2 = _step7.value;
1206
+ var _iteratorNormalCompletion12 = true,
1207
+ _didIteratorError12 = false,
1208
+ _iteratorError12 = void 0;
1209
+ try {
1210
+ for (var _iterator12 = mutationSupportTables(ts, baseDir, sourceRoots, namespace2)[Symbol.iterator](), _step12; !(_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done); _iteratorNormalCompletion12 = true) {
1211
+ var table2 = _step12.value;
1212
+ if (owners.has(table2) || relatedOwners.has(table2)) continue;
1213
+ if (!instance2.syncTables.includes(table2)) {
1214
+ supportTables.add(table2);
1215
+ }
1216
+ }
1217
+ } catch (err) {
1218
+ _didIteratorError12 = true;
1219
+ _iteratorError12 = err;
1220
+ } finally {
1221
+ try {
1222
+ if (!_iteratorNormalCompletion12 && _iterator12.return != null) {
1223
+ _iterator12.return();
1224
+ }
1225
+ } finally {
1226
+ if (_didIteratorError12) {
1227
+ throw _iteratorError12;
1228
+ }
1229
+ }
1230
+ }
1231
+ }
1232
+ } catch (err) {
1233
+ _didIteratorError7 = true;
1234
+ _iteratorError7 = err;
1235
+ } finally {
1236
+ try {
1237
+ if (!_iteratorNormalCompletion7 && _iterator7.return != null) {
1238
+ _iterator7.return();
1239
+ }
1240
+ } finally {
1241
+ if (_didIteratorError7) {
1242
+ throw _iteratorError7;
1243
+ }
1244
+ }
1245
+ }
1246
+ instance2.supportTables = [...supportTables].filter(function (table3) {
1247
+ return !instance2.syncTables.includes(table3);
1248
+ }).sort();
1249
+ };
1250
+ for (var _iterator6 = instances[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) _loop();
1251
+ } catch (err) {
1252
+ _didIteratorError6 = true;
1253
+ _iteratorError6 = err;
1254
+ } finally {
1255
+ try {
1256
+ if (!_iteratorNormalCompletion6 && _iterator6.return != null) {
1257
+ _iterator6.return();
1258
+ }
1259
+ } finally {
1260
+ if (_didIteratorError6) {
1261
+ throw _iteratorError6;
1262
+ }
1263
+ }
1264
+ }
1265
+ return {
1266
+ instances,
1267
+ namespaces,
1268
+ metadataPaths: config ? [...metadata, config.path].sort() : metadata,
1269
+ sourceRoots
1270
+ };
1271
+ }
1272
+ function namespaceImportPath(baseDir, path) {
1273
+ return `../${toImportPath(baseDir, path)}`;
1274
+ }
1275
+ //# sourceMappingURL=generate-layout.native.js.map