on-zero 0.7.10 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. package/{readme.md → README.md} +172 -231
  2. package/dist/cjs/cli.cjs +5 -2
  3. package/dist/cjs/cli.native.js +5 -2
  4. package/dist/cjs/cli.native.js.map +1 -1
  5. package/dist/cjs/combineZeroClients.cjs +2 -2
  6. package/dist/cjs/combineZeroClients.native.js +6 -6
  7. package/dist/cjs/combineZeroClients.native.js.map +1 -1
  8. package/dist/cjs/config.cjs +30 -0
  9. package/dist/cjs/config.native.js +33 -0
  10. package/dist/cjs/config.native.js.map +1 -0
  11. package/dist/cjs/createPermissions.cjs +2 -2
  12. package/dist/cjs/createPermissions.native.js +17 -27
  13. package/dist/cjs/createPermissions.native.js.map +1 -1
  14. package/dist/cjs/createUseQuery.cjs +3 -3
  15. package/dist/cjs/createUseQuery.native.js +4 -4
  16. package/dist/cjs/createUseQuery.native.js.map +1 -1
  17. package/dist/cjs/createUseQueryDirect.cjs +4 -3
  18. package/dist/cjs/createUseQueryDirect.native.js +14 -18
  19. package/dist/cjs/createUseQueryDirect.native.js.map +1 -1
  20. package/dist/cjs/createZeroClient.cjs +29 -9
  21. package/dist/cjs/createZeroClient.connection.test.cjs +11 -0
  22. package/dist/cjs/createZeroClient.connection.test.native.js +14 -7
  23. package/dist/cjs/createZeroClient.connection.test.native.js.map +1 -1
  24. package/dist/cjs/createZeroClient.native.js +58 -32
  25. package/dist/cjs/createZeroClient.native.js.map +1 -1
  26. package/dist/cjs/createZeroClient.recovery.test.cjs +90 -3
  27. package/dist/cjs/createZeroClient.recovery.test.native.js +109 -19
  28. package/dist/cjs/createZeroClient.recovery.test.native.js.map +1 -1
  29. package/dist/cjs/generate-helpers.cjs +70 -17
  30. package/dist/cjs/generate-helpers.native.js +110 -23
  31. package/dist/cjs/generate-helpers.native.js.map +1 -1
  32. package/dist/cjs/generate-layout.cjs +586 -0
  33. package/dist/cjs/generate-layout.native.js +1275 -0
  34. package/dist/cjs/generate-layout.native.js.map +1 -0
  35. package/dist/cjs/generate-lite.cjs +295 -27
  36. package/dist/cjs/generate-lite.native.js +854 -102
  37. package/dist/cjs/generate-lite.native.js.map +1 -1
  38. package/dist/cjs/generate-lite.test.cjs +433 -41
  39. package/dist/cjs/generate-lite.test.native.js +446 -41
  40. package/dist/cjs/generate-lite.test.native.js.map +1 -1
  41. package/dist/cjs/generate.cjs +172 -94
  42. package/dist/cjs/generate.native.js +324 -148
  43. package/dist/cjs/generate.native.js.map +1 -1
  44. package/dist/cjs/generate.test.cjs +362 -45
  45. package/dist/cjs/generate.test.native.js +374 -45
  46. package/dist/cjs/generate.test.native.js.map +1 -1
  47. package/dist/cjs/helpers/NullToOptional.cjs +18 -0
  48. package/dist/cjs/helpers/NullToOptional.native.js +21 -0
  49. package/dist/cjs/helpers/NullToOptional.native.js.map +1 -0
  50. package/dist/cjs/helpers/asyncContext.cjs +128 -0
  51. package/dist/cjs/helpers/asyncContext.native.js +87 -0
  52. package/dist/cjs/helpers/asyncContext.native.js.map +1 -0
  53. package/dist/cjs/helpers/batchQuery.cjs +2 -2
  54. package/dist/cjs/helpers/batchQuery.native.js +2 -2
  55. package/dist/cjs/helpers/batchQuery.native.js.map +1 -1
  56. package/dist/cjs/helpers/createMutators.cjs +7 -4
  57. package/dist/cjs/helpers/createMutators.native.js +12 -9
  58. package/dist/cjs/helpers/createMutators.native.js.map +1 -1
  59. package/dist/cjs/helpers/createMutators.test.native.js +2 -2
  60. package/dist/cjs/helpers/createMutators.test.native.js.map +1 -1
  61. package/dist/cjs/helpers/ellipsis.cjs +35 -0
  62. package/dist/cjs/helpers/ellipsis.native.js +38 -0
  63. package/dist/cjs/helpers/ellipsis.native.js.map +1 -0
  64. package/dist/cjs/helpers/emitter.cjs +99 -0
  65. package/dist/cjs/helpers/emitter.native.js +125 -0
  66. package/dist/cjs/helpers/emitter.native.js.map +1 -0
  67. package/dist/cjs/helpers/ensure.cjs +33 -0
  68. package/dist/cjs/helpers/ensure.native.js +37 -0
  69. package/dist/cjs/helpers/ensure.native.js.map +1 -0
  70. package/dist/cjs/helpers/ensureLoggedIn.cjs +2 -2
  71. package/dist/cjs/helpers/ensureLoggedIn.native.js +3 -3
  72. package/dist/cjs/helpers/ensureLoggedIn.native.js.map +1 -1
  73. package/dist/cjs/helpers/errors.cjs +40 -0
  74. package/dist/cjs/helpers/errors.native.js +152 -0
  75. package/dist/cjs/helpers/errors.native.js.map +1 -0
  76. package/dist/cjs/helpers/getCurrentComponentStack.cjs +71 -0
  77. package/dist/cjs/helpers/getCurrentComponentStack.native.js +93 -0
  78. package/dist/cjs/helpers/getCurrentComponentStack.native.js.map +1 -0
  79. package/dist/cjs/helpers/globalValue.cjs +39 -0
  80. package/dist/cjs/helpers/globalValue.native.js +42 -0
  81. package/dist/cjs/helpers/globalValue.native.js.map +1 -0
  82. package/dist/cjs/helpers/mapObject.cjs +36 -0
  83. package/dist/cjs/helpers/mapObject.native.js +39 -0
  84. package/dist/cjs/helpers/mapObject.native.js.map +1 -0
  85. package/dist/cjs/helpers/mutationLifecycle.cjs +251 -0
  86. package/dist/cjs/helpers/mutationLifecycle.native.js +392 -0
  87. package/dist/cjs/helpers/mutationLifecycle.native.js.map +1 -0
  88. package/dist/cjs/helpers/mutationLifecycle.test.cjs +174 -0
  89. package/dist/cjs/helpers/mutationLifecycle.test.native.js +182 -0
  90. package/dist/cjs/helpers/mutationLifecycle.test.native.js.map +1 -0
  91. package/dist/cjs/helpers/mutatorContext.cjs +3 -3
  92. package/dist/cjs/helpers/mutatorContext.native.js +5 -5
  93. package/dist/cjs/helpers/mutatorContext.native.js.map +1 -1
  94. package/dist/cjs/helpers/platform.cjs +31 -0
  95. package/dist/cjs/helpers/platform.native.js +33 -0
  96. package/dist/cjs/helpers/platform.native.js.map +1 -0
  97. package/dist/cjs/helpers/prettyFormatZeroQuery.cjs +2 -2
  98. package/dist/cjs/helpers/prettyFormatZeroQuery.native.js +7 -7
  99. package/dist/cjs/helpers/prettyFormatZeroQuery.native.js.map +1 -1
  100. package/dist/cjs/helpers/queryContext.cjs +2 -2
  101. package/dist/cjs/helpers/queryContext.native.js +4 -4
  102. package/dist/cjs/helpers/queryContext.native.js.map +1 -1
  103. package/dist/cjs/helpers/recoverZeroClient.cjs +14 -15
  104. package/dist/cjs/helpers/recoverZeroClient.native.js +26 -23
  105. package/dist/cjs/helpers/recoverZeroClient.native.js.map +1 -1
  106. package/dist/cjs/helpers/recoverZeroClient.test.cjs +10 -8
  107. package/dist/cjs/helpers/recoverZeroClient.test.native.js +17 -21
  108. package/dist/cjs/helpers/recoverZeroClient.test.native.js.map +1 -1
  109. package/dist/cjs/helpers/sleep.cjs +34 -0
  110. package/dist/cjs/helpers/sleep.native.js +39 -0
  111. package/dist/cjs/helpers/sleep.native.js.map +1 -0
  112. package/dist/cjs/helpers/time.cjs +47 -0
  113. package/dist/cjs/helpers/time.native.js +80 -0
  114. package/dist/cjs/helpers/time.native.js.map +1 -0
  115. package/dist/cjs/helpers/tuple.cjs +18 -0
  116. package/dist/cjs/helpers/tuple.native.js +21 -0
  117. package/dist/cjs/helpers/tuple.native.js.map +1 -0
  118. package/dist/cjs/helpers/useMutation.native.js +5 -5
  119. package/dist/cjs/helpers/useMutation.native.js.map +1 -1
  120. package/dist/cjs/helpers/useMutation.test.native.js +1 -1
  121. package/dist/cjs/helpers/useMutation.test.native.js.map +1 -1
  122. package/dist/cjs/helpers/useZeroDebug.cjs +2 -2
  123. package/dist/cjs/helpers/useZeroDebug.native.js +7 -8
  124. package/dist/cjs/helpers/useZeroDebug.native.js.map +1 -1
  125. package/dist/cjs/index.cjs +9 -1
  126. package/dist/cjs/index.native.js +8 -0
  127. package/dist/cjs/index.native.js.map +1 -1
  128. package/dist/cjs/instanceRegistry.cjs +16 -4
  129. package/dist/cjs/instanceRegistry.native.js +56 -6
  130. package/dist/cjs/instanceRegistry.native.js.map +1 -1
  131. package/dist/cjs/multi.cjs +34 -13
  132. package/dist/cjs/multi.native.js +39 -17
  133. package/dist/cjs/multi.native.js.map +1 -1
  134. package/dist/cjs/multiInstance.test.cjs +6 -2
  135. package/dist/cjs/multiInstance.test.native.js +13 -9
  136. package/dist/cjs/multiInstance.test.native.js.map +1 -1
  137. package/dist/cjs/multiInstanceNested.test.native.js +10 -10
  138. package/dist/cjs/multiInstanceNested.test.native.js.map +1 -1
  139. package/dist/cjs/multiPartition.test.cjs +85 -36
  140. package/dist/cjs/multiPartition.test.native.js +102 -39
  141. package/dist/cjs/multiPartition.test.native.js.map +1 -1
  142. package/dist/cjs/mutations.cjs +2 -2
  143. package/dist/cjs/mutations.native.js +4 -4
  144. package/dist/cjs/mutations.native.js.map +1 -1
  145. package/dist/cjs/mutations.test.native.js +3 -3
  146. package/dist/cjs/mutations.test.native.js.map +1 -1
  147. package/dist/cjs/provideZero.hydration.test.cjs +3 -3
  148. package/dist/cjs/provideZero.hydration.test.native.js +4 -4
  149. package/dist/cjs/provideZero.hydration.test.native.js.map +1 -1
  150. package/dist/cjs/run.cjs +1 -1
  151. package/dist/cjs/run.native.js +3 -3
  152. package/dist/cjs/run.native.js.map +1 -1
  153. package/dist/cjs/server.cjs +20 -16
  154. package/dist/cjs/server.native.js +50 -57
  155. package/dist/cjs/server.native.js.map +1 -1
  156. package/dist/cjs/server.test.cjs +129 -6
  157. package/dist/cjs/server.test.native.js +141 -10
  158. package/dist/cjs/server.test.native.js.map +1 -1
  159. package/dist/cjs/serverWhere.test.native.js +3 -3
  160. package/dist/cjs/serverWhere.test.native.js.map +1 -1
  161. package/dist/cjs/state.cjs +2 -2
  162. package/dist/cjs/state.native.js +10 -10
  163. package/dist/cjs/state.native.js.map +1 -1
  164. package/dist/cjs/usePermission.test.native.js +3 -3
  165. package/dist/cjs/usePermission.test.native.js.map +1 -1
  166. package/dist/cjs/useQuery.empty.test.cjs +3 -3
  167. package/dist/cjs/useQuery.empty.test.native.js +6 -6
  168. package/dist/cjs/useQuery.empty.test.native.js.map +1 -1
  169. package/dist/cjs/useQuery.ssr.test.native.js +2 -2
  170. package/dist/cjs/useQuery.ssr.test.native.js.map +1 -1
  171. package/dist/cjs/vite-plugin.cjs +7 -8
  172. package/dist/cjs/vite-plugin.native.js +11 -11
  173. package/dist/cjs/vite-plugin.native.js.map +1 -1
  174. package/dist/cjs/where.cjs +3 -3
  175. package/dist/cjs/where.native.js +4 -4
  176. package/dist/cjs/where.native.js.map +1 -1
  177. package/dist/esm/cli.mjs +6 -3
  178. package/dist/esm/cli.mjs.map +1 -1
  179. package/dist/esm/cli.native.js +6 -3
  180. package/dist/esm/cli.native.js.map +1 -1
  181. package/dist/esm/combineZeroClients.mjs +1 -1
  182. package/dist/esm/combineZeroClients.mjs.map +1 -1
  183. package/dist/esm/combineZeroClients.native.js +5 -5
  184. package/dist/esm/combineZeroClients.native.js.map +1 -1
  185. package/dist/esm/config.mjs +5 -0
  186. package/dist/esm/config.mjs.map +1 -0
  187. package/dist/esm/config.native.js +5 -0
  188. package/dist/esm/config.native.js.map +1 -0
  189. package/dist/esm/createPermissions.mjs +1 -1
  190. package/dist/esm/createPermissions.mjs.map +1 -1
  191. package/dist/esm/createPermissions.native.js +16 -26
  192. package/dist/esm/createPermissions.native.js.map +1 -1
  193. package/dist/esm/createUseQuery.mjs +2 -2
  194. package/dist/esm/createUseQuery.mjs.map +1 -1
  195. package/dist/esm/createUseQuery.native.js +3 -3
  196. package/dist/esm/createUseQuery.native.js.map +1 -1
  197. package/dist/esm/createUseQueryDirect.mjs +2 -1
  198. package/dist/esm/createUseQueryDirect.mjs.map +1 -1
  199. package/dist/esm/createUseQueryDirect.native.js +12 -16
  200. package/dist/esm/createUseQueryDirect.native.js.map +1 -1
  201. package/dist/esm/createZeroClient.connection.test.mjs +11 -0
  202. package/dist/esm/createZeroClient.connection.test.mjs.map +1 -1
  203. package/dist/esm/createZeroClient.connection.test.native.js +14 -7
  204. package/dist/esm/createZeroClient.connection.test.native.js.map +1 -1
  205. package/dist/esm/createZeroClient.mjs +25 -5
  206. package/dist/esm/createZeroClient.mjs.map +1 -1
  207. package/dist/esm/createZeroClient.native.js +54 -28
  208. package/dist/esm/createZeroClient.native.js.map +1 -1
  209. package/dist/esm/createZeroClient.recovery.test.mjs +90 -3
  210. package/dist/esm/createZeroClient.recovery.test.mjs.map +1 -1
  211. package/dist/esm/createZeroClient.recovery.test.native.js +109 -19
  212. package/dist/esm/createZeroClient.recovery.test.native.js.map +1 -1
  213. package/dist/esm/generate-helpers.mjs +70 -18
  214. package/dist/esm/generate-helpers.mjs.map +1 -1
  215. package/dist/esm/generate-helpers.native.js +110 -24
  216. package/dist/esm/generate-helpers.native.js.map +1 -1
  217. package/dist/esm/generate-layout.mjs +560 -0
  218. package/dist/esm/generate-layout.mjs.map +1 -0
  219. package/dist/esm/generate-layout.native.js +1246 -0
  220. package/dist/esm/generate-layout.native.js.map +1 -0
  221. package/dist/esm/generate-lite.mjs +296 -28
  222. package/dist/esm/generate-lite.mjs.map +1 -1
  223. package/dist/esm/generate-lite.native.js +855 -103
  224. package/dist/esm/generate-lite.native.js.map +1 -1
  225. package/dist/esm/generate-lite.test.mjs +434 -42
  226. package/dist/esm/generate-lite.test.mjs.map +1 -1
  227. package/dist/esm/generate-lite.test.native.js +447 -42
  228. package/dist/esm/generate-lite.test.native.js.map +1 -1
  229. package/dist/esm/generate.mjs +172 -96
  230. package/dist/esm/generate.mjs.map +1 -1
  231. package/dist/esm/generate.native.js +324 -150
  232. package/dist/esm/generate.native.js.map +1 -1
  233. package/dist/esm/generate.test.mjs +366 -49
  234. package/dist/esm/generate.test.mjs.map +1 -1
  235. package/dist/esm/generate.test.native.js +378 -49
  236. package/dist/esm/generate.test.native.js.map +1 -1
  237. package/dist/esm/helpers/NullToOptional.mjs +2 -0
  238. package/dist/esm/helpers/NullToOptional.mjs.map +1 -0
  239. package/dist/esm/helpers/NullToOptional.native.js +2 -0
  240. package/dist/esm/helpers/NullToOptional.native.js.map +1 -0
  241. package/dist/esm/helpers/asyncContext.mjs +102 -0
  242. package/dist/esm/helpers/asyncContext.mjs.map +1 -0
  243. package/dist/esm/helpers/asyncContext.native.js +58 -0
  244. package/dist/esm/helpers/asyncContext.native.js.map +1 -0
  245. package/dist/esm/helpers/batchQuery.mjs +1 -1
  246. package/dist/esm/helpers/batchQuery.native.js +1 -1
  247. package/dist/esm/helpers/createMutators.mjs +5 -2
  248. package/dist/esm/helpers/createMutators.mjs.map +1 -1
  249. package/dist/esm/helpers/createMutators.native.js +10 -7
  250. package/dist/esm/helpers/createMutators.native.js.map +1 -1
  251. package/dist/esm/helpers/createMutators.test.native.js +2 -2
  252. package/dist/esm/helpers/createMutators.test.native.js.map +1 -1
  253. package/dist/esm/helpers/ellipsis.mjs +10 -0
  254. package/dist/esm/helpers/ellipsis.mjs.map +1 -0
  255. package/dist/esm/helpers/ellipsis.native.js +10 -0
  256. package/dist/esm/helpers/ellipsis.native.js.map +1 -0
  257. package/dist/esm/helpers/emitter.mjs +72 -0
  258. package/dist/esm/helpers/emitter.mjs.map +1 -0
  259. package/dist/esm/helpers/emitter.native.js +95 -0
  260. package/dist/esm/helpers/emitter.native.js.map +1 -0
  261. package/dist/esm/helpers/ensure.mjs +8 -0
  262. package/dist/esm/helpers/ensure.mjs.map +1 -0
  263. package/dist/esm/helpers/ensure.native.js +9 -0
  264. package/dist/esm/helpers/ensure.native.js.map +1 -0
  265. package/dist/esm/helpers/ensureLoggedIn.mjs +1 -1
  266. package/dist/esm/helpers/ensureLoggedIn.mjs.map +1 -1
  267. package/dist/esm/helpers/ensureLoggedIn.native.js +2 -2
  268. package/dist/esm/helpers/ensureLoggedIn.native.js.map +1 -1
  269. package/dist/esm/helpers/errors.mjs +14 -0
  270. package/dist/esm/helpers/errors.mjs.map +1 -0
  271. package/dist/esm/helpers/errors.native.js +123 -0
  272. package/dist/esm/helpers/errors.native.js.map +1 -0
  273. package/dist/esm/helpers/getCurrentComponentStack.mjs +35 -0
  274. package/dist/esm/helpers/getCurrentComponentStack.mjs.map +1 -0
  275. package/dist/esm/helpers/getCurrentComponentStack.native.js +54 -0
  276. package/dist/esm/helpers/getCurrentComponentStack.native.js.map +1 -0
  277. package/dist/esm/helpers/globalValue.mjs +14 -0
  278. package/dist/esm/helpers/globalValue.mjs.map +1 -0
  279. package/dist/esm/helpers/globalValue.native.js +14 -0
  280. package/dist/esm/helpers/globalValue.native.js.map +1 -0
  281. package/dist/esm/helpers/mapObject.mjs +11 -0
  282. package/dist/esm/helpers/mapObject.mjs.map +1 -0
  283. package/dist/esm/helpers/mapObject.native.js +11 -0
  284. package/dist/esm/helpers/mapObject.native.js.map +1 -0
  285. package/dist/esm/helpers/mutationLifecycle.mjs +221 -0
  286. package/dist/esm/helpers/mutationLifecycle.mjs.map +1 -0
  287. package/dist/esm/helpers/mutationLifecycle.native.js +359 -0
  288. package/dist/esm/helpers/mutationLifecycle.native.js.map +1 -0
  289. package/dist/esm/helpers/mutationLifecycle.test.mjs +175 -0
  290. package/dist/esm/helpers/mutationLifecycle.test.mjs.map +1 -0
  291. package/dist/esm/helpers/mutationLifecycle.test.native.js +180 -0
  292. package/dist/esm/helpers/mutationLifecycle.test.native.js.map +1 -0
  293. package/dist/esm/helpers/mutatorContext.mjs +1 -1
  294. package/dist/esm/helpers/mutatorContext.native.js +4 -4
  295. package/dist/esm/helpers/mutatorContext.native.js.map +1 -1
  296. package/dist/esm/helpers/platform.mjs +5 -0
  297. package/dist/esm/helpers/platform.mjs.map +1 -0
  298. package/dist/esm/helpers/platform.native.js +4 -0
  299. package/dist/esm/helpers/platform.native.js.map +1 -0
  300. package/dist/esm/helpers/prettyFormatZeroQuery.mjs +1 -1
  301. package/dist/esm/helpers/prettyFormatZeroQuery.native.js +6 -6
  302. package/dist/esm/helpers/prettyFormatZeroQuery.native.js.map +1 -1
  303. package/dist/esm/helpers/queryContext.mjs +1 -1
  304. package/dist/esm/helpers/queryContext.native.js +3 -3
  305. package/dist/esm/helpers/queryContext.native.js.map +1 -1
  306. package/dist/esm/helpers/recoverZeroClient.mjs +14 -15
  307. package/dist/esm/helpers/recoverZeroClient.mjs.map +1 -1
  308. package/dist/esm/helpers/recoverZeroClient.native.js +26 -23
  309. package/dist/esm/helpers/recoverZeroClient.native.js.map +1 -1
  310. package/dist/esm/helpers/recoverZeroClient.test.mjs +8 -6
  311. package/dist/esm/helpers/recoverZeroClient.test.mjs.map +1 -1
  312. package/dist/esm/helpers/recoverZeroClient.test.native.js +15 -19
  313. package/dist/esm/helpers/recoverZeroClient.test.native.js.map +1 -1
  314. package/dist/esm/helpers/sleep.mjs +9 -0
  315. package/dist/esm/helpers/sleep.mjs.map +1 -0
  316. package/dist/esm/helpers/sleep.native.js +11 -0
  317. package/dist/esm/helpers/sleep.native.js.map +1 -0
  318. package/dist/esm/helpers/time.mjs +22 -0
  319. package/dist/esm/helpers/time.mjs.map +1 -0
  320. package/dist/esm/helpers/time.native.js +52 -0
  321. package/dist/esm/helpers/time.native.js.map +1 -0
  322. package/dist/esm/helpers/tuple.mjs +2 -0
  323. package/dist/esm/helpers/tuple.mjs.map +1 -0
  324. package/dist/esm/helpers/tuple.native.js +2 -0
  325. package/dist/esm/helpers/tuple.native.js.map +1 -0
  326. package/dist/esm/helpers/useMutation.native.js +5 -5
  327. package/dist/esm/helpers/useMutation.native.js.map +1 -1
  328. package/dist/esm/helpers/useMutation.test.native.js +1 -1
  329. package/dist/esm/helpers/useMutation.test.native.js.map +1 -1
  330. package/dist/esm/helpers/useZeroDebug.mjs +1 -1
  331. package/dist/esm/helpers/useZeroDebug.mjs.map +1 -1
  332. package/dist/esm/helpers/useZeroDebug.native.js +6 -7
  333. package/dist/esm/helpers/useZeroDebug.native.js.map +1 -1
  334. package/dist/esm/index.js +3 -1
  335. package/dist/esm/index.js.map +1 -1
  336. package/dist/esm/index.mjs +3 -1
  337. package/dist/esm/index.mjs.map +1 -1
  338. package/dist/esm/index.native.js +3 -1
  339. package/dist/esm/index.native.js.map +1 -1
  340. package/dist/esm/instanceRegistry.mjs +13 -2
  341. package/dist/esm/instanceRegistry.mjs.map +1 -1
  342. package/dist/esm/instanceRegistry.native.js +53 -4
  343. package/dist/esm/instanceRegistry.native.js.map +1 -1
  344. package/dist/esm/multi.mjs +33 -12
  345. package/dist/esm/multi.mjs.map +1 -1
  346. package/dist/esm/multi.native.js +38 -16
  347. package/dist/esm/multi.native.js.map +1 -1
  348. package/dist/esm/multiInstance.test.mjs +5 -1
  349. package/dist/esm/multiInstance.test.mjs.map +1 -1
  350. package/dist/esm/multiInstance.test.native.js +12 -8
  351. package/dist/esm/multiInstance.test.native.js.map +1 -1
  352. package/dist/esm/multiInstanceNested.test.native.js +10 -10
  353. package/dist/esm/multiInstanceNested.test.native.js.map +1 -1
  354. package/dist/esm/multiPartition.test.mjs +86 -37
  355. package/dist/esm/multiPartition.test.mjs.map +1 -1
  356. package/dist/esm/multiPartition.test.native.js +103 -40
  357. package/dist/esm/multiPartition.test.native.js.map +1 -1
  358. package/dist/esm/mutations.mjs +1 -1
  359. package/dist/esm/mutations.mjs.map +1 -1
  360. package/dist/esm/mutations.native.js +3 -3
  361. package/dist/esm/mutations.native.js.map +1 -1
  362. package/dist/esm/mutations.test.native.js +3 -3
  363. package/dist/esm/mutations.test.native.js.map +1 -1
  364. package/dist/esm/provideZero.hydration.test.mjs +1 -1
  365. package/dist/esm/provideZero.hydration.test.mjs.map +1 -1
  366. package/dist/esm/provideZero.hydration.test.native.js +2 -2
  367. package/dist/esm/provideZero.hydration.test.native.js.map +1 -1
  368. package/dist/esm/run.mjs +1 -1
  369. package/dist/esm/run.mjs.map +1 -1
  370. package/dist/esm/run.native.js +3 -3
  371. package/dist/esm/run.native.js.map +1 -1
  372. package/dist/esm/server.mjs +20 -15
  373. package/dist/esm/server.mjs.map +1 -1
  374. package/dist/esm/server.native.js +50 -56
  375. package/dist/esm/server.native.js.map +1 -1
  376. package/dist/esm/server.test.mjs +130 -7
  377. package/dist/esm/server.test.mjs.map +1 -1
  378. package/dist/esm/server.test.native.js +142 -11
  379. package/dist/esm/server.test.native.js.map +1 -1
  380. package/dist/esm/serverWhere.test.mjs.map +1 -1
  381. package/dist/esm/serverWhere.test.native.js +3 -3
  382. package/dist/esm/serverWhere.test.native.js.map +1 -1
  383. package/dist/esm/state.mjs +1 -1
  384. package/dist/esm/state.mjs.map +1 -1
  385. package/dist/esm/state.native.js +9 -9
  386. package/dist/esm/state.native.js.map +1 -1
  387. package/dist/esm/usePermission.test.native.js +3 -3
  388. package/dist/esm/usePermission.test.native.js.map +1 -1
  389. package/dist/esm/useQuery.empty.test.mjs +1 -1
  390. package/dist/esm/useQuery.empty.test.mjs.map +1 -1
  391. package/dist/esm/useQuery.empty.test.native.js +4 -4
  392. package/dist/esm/useQuery.empty.test.native.js.map +1 -1
  393. package/dist/esm/useQuery.ssr.test.native.js +2 -2
  394. package/dist/esm/useQuery.ssr.test.native.js.map +1 -1
  395. package/dist/esm/vite-plugin.mjs +7 -8
  396. package/dist/esm/vite-plugin.mjs.map +1 -1
  397. package/dist/esm/vite-plugin.native.js +11 -11
  398. package/dist/esm/vite-plugin.native.js.map +1 -1
  399. package/dist/esm/where.mjs +1 -1
  400. package/dist/esm/where.mjs.map +1 -1
  401. package/dist/esm/where.native.js +2 -2
  402. package/dist/esm/where.native.js.map +1 -1
  403. package/package.json +18 -6
  404. package/src/cli.ts +11 -3
  405. package/src/combineZeroClients.tsx +18 -10
  406. package/src/config.ts +72 -0
  407. package/src/createPermissions.ts +3 -4
  408. package/src/createUseQuery.tsx +8 -8
  409. package/src/createUseQueryDirect.tsx +11 -10
  410. package/src/createZeroClient.authData.test.tsx +1 -1
  411. package/src/createZeroClient.connection.test.tsx +13 -2
  412. package/src/createZeroClient.recovery.test.tsx +100 -4
  413. package/src/createZeroClient.tsx +87 -30
  414. package/src/generate-helpers.ts +108 -31
  415. package/src/generate-layout.ts +841 -0
  416. package/src/generate-lite.test.ts +421 -42
  417. package/src/generate-lite.ts +479 -43
  418. package/src/generate.test.ts +552 -90
  419. package/src/generate.ts +360 -163
  420. package/src/helpers/NullToOptional.ts +5 -0
  421. package/src/helpers/asyncContext.native.ts +90 -0
  422. package/src/helpers/asyncContext.ts +159 -0
  423. package/src/helpers/batchQuery.ts +2 -2
  424. package/src/helpers/createMutators.ts +11 -8
  425. package/src/helpers/ellipsis.ts +9 -0
  426. package/src/helpers/emitter.tsx +106 -0
  427. package/src/helpers/ensure.ts +10 -0
  428. package/src/helpers/ensureLoggedIn.ts +1 -2
  429. package/src/helpers/errors.ts +13 -0
  430. package/src/helpers/getCurrentComponentStack.ts +56 -0
  431. package/src/helpers/globalValue.ts +40 -0
  432. package/src/helpers/mapObject.ts +14 -0
  433. package/src/helpers/mutationLifecycle.test.ts +180 -0
  434. package/src/helpers/mutationLifecycle.ts +313 -0
  435. package/src/helpers/mutatorContext.ts +3 -3
  436. package/src/helpers/platform.native.ts +2 -0
  437. package/src/helpers/platform.ts +16 -0
  438. package/src/helpers/prettyFormatZeroQuery.ts +2 -2
  439. package/src/helpers/queryContext.ts +2 -2
  440. package/src/helpers/recoverZeroClient.test.ts +23 -21
  441. package/src/helpers/recoverZeroClient.ts +56 -49
  442. package/src/helpers/sleep.ts +8 -0
  443. package/src/helpers/time.ts +51 -0
  444. package/src/helpers/tuple.ts +1 -0
  445. package/src/helpers/useMutation.tsx +3 -3
  446. package/src/helpers/useZeroDebug.ts +3 -3
  447. package/src/index.ts +13 -1
  448. package/src/instanceRegistry.ts +19 -6
  449. package/src/multi.ts +75 -31
  450. package/src/multiInstance.test.tsx +31 -13
  451. package/src/multiInstanceNested.test.tsx +2 -2
  452. package/src/multiPartition.test.ts +62 -27
  453. package/src/mutations.ts +10 -10
  454. package/src/provideZero.hydration.test.tsx +1 -1
  455. package/src/resolveQuery.ts +2 -2
  456. package/src/run.ts +7 -7
  457. package/src/server.test.ts +117 -18
  458. package/src/server.ts +70 -43
  459. package/src/serverWhere.ts +2 -2
  460. package/src/state.ts +2 -2
  461. package/src/types.ts +47 -6
  462. package/src/useQuery.empty.test.tsx +3 -3
  463. package/src/useQuery.ssr.test.ts +1 -1
  464. package/src/vite-plugin.ts +12 -9
  465. package/src/where.ts +6 -7
  466. package/src/zeroRunner.ts +2 -2
  467. package/types/combineZeroClients.d.ts +11 -5
  468. package/types/combineZeroClients.d.ts.map +1 -1
  469. package/types/config.d.ts +62 -0
  470. package/types/config.d.ts.map +1 -0
  471. package/types/createPermissions.d.ts.map +1 -1
  472. package/types/createUseQuery.d.ts.map +1 -1
  473. package/types/createUseQueryDirect.d.ts +1 -1
  474. package/types/createUseQueryDirect.d.ts.map +1 -1
  475. package/types/createZeroClient.d.ts +22 -12
  476. package/types/createZeroClient.d.ts.map +1 -1
  477. package/types/createZeroClient.recovery.test.d.ts.map +1 -1
  478. package/types/generate-helpers.d.ts +17 -2
  479. package/types/generate-helpers.d.ts.map +1 -1
  480. package/types/generate-layout.d.ts +26 -0
  481. package/types/generate-layout.d.ts.map +1 -0
  482. package/types/generate-lite.d.ts +29 -1
  483. package/types/generate-lite.d.ts.map +1 -1
  484. package/types/generate.d.ts +20 -0
  485. package/types/generate.d.ts.map +1 -1
  486. package/types/helpers/NullToOptional.d.ts +6 -0
  487. package/types/helpers/NullToOptional.d.ts.map +1 -0
  488. package/types/helpers/asyncContext.d.ts +15 -0
  489. package/types/helpers/asyncContext.d.ts.map +1 -0
  490. package/types/helpers/asyncContext.native.d.ts +8 -0
  491. package/types/helpers/asyncContext.native.d.ts.map +1 -0
  492. package/types/helpers/createMutators.d.ts +2 -1
  493. package/types/helpers/createMutators.d.ts.map +1 -1
  494. package/types/helpers/ellipsis.d.ts +2 -0
  495. package/types/helpers/ellipsis.d.ts.map +1 -0
  496. package/types/helpers/emitter.d.ts +21 -0
  497. package/types/helpers/emitter.d.ts.map +1 -0
  498. package/types/helpers/ensure.d.ts +2 -0
  499. package/types/helpers/ensure.d.ts.map +1 -0
  500. package/types/helpers/ensureLoggedIn.d.ts.map +1 -1
  501. package/types/helpers/errors.d.ts +7 -0
  502. package/types/helpers/errors.d.ts.map +1 -0
  503. package/types/helpers/getCurrentComponentStack.d.ts +2 -0
  504. package/types/helpers/getCurrentComponentStack.d.ts.map +1 -0
  505. package/types/helpers/globalValue.d.ts +23 -0
  506. package/types/helpers/globalValue.d.ts.map +1 -0
  507. package/types/helpers/mapObject.d.ts +4 -0
  508. package/types/helpers/mapObject.d.ts.map +1 -0
  509. package/types/helpers/mutationLifecycle.d.ts +44 -0
  510. package/types/helpers/mutationLifecycle.d.ts.map +1 -0
  511. package/types/helpers/mutationLifecycle.test.d.ts +2 -0
  512. package/types/helpers/mutationLifecycle.test.d.ts.map +1 -0
  513. package/types/helpers/platform.d.ts +3 -0
  514. package/types/helpers/platform.d.ts.map +1 -0
  515. package/types/helpers/platform.native.d.ts +3 -0
  516. package/types/helpers/platform.native.d.ts.map +1 -0
  517. package/types/helpers/recoverZeroClient.d.ts +13 -9
  518. package/types/helpers/recoverZeroClient.d.ts.map +1 -1
  519. package/types/helpers/sleep.d.ts +2 -0
  520. package/types/helpers/sleep.d.ts.map +1 -0
  521. package/types/helpers/time.d.ts +28 -0
  522. package/types/helpers/time.d.ts.map +1 -0
  523. package/types/helpers/tuple.d.ts +2 -0
  524. package/types/helpers/tuple.d.ts.map +1 -0
  525. package/types/index.d.ts +3 -1
  526. package/types/index.d.ts.map +1 -1
  527. package/types/instanceRegistry.d.ts +1 -0
  528. package/types/instanceRegistry.d.ts.map +1 -1
  529. package/types/multi.d.ts +23 -1
  530. package/types/multi.d.ts.map +1 -1
  531. package/types/mutations.d.ts +1 -1
  532. package/types/mutations.d.ts.map +1 -1
  533. package/types/run.d.ts.map +1 -1
  534. package/types/server.d.ts +12 -8
  535. package/types/server.d.ts.map +1 -1
  536. package/types/state.d.ts +1 -1
  537. package/types/state.d.ts.map +1 -1
  538. package/types/types.d.ts +23 -1
  539. package/types/types.d.ts.map +1 -1
  540. package/types/vite-plugin.d.ts.map +1 -1
  541. package/types/where.d.ts.map +1 -1
  542. package/lint/ssr-guards.js +0 -165
  543. package/test-fixtures/server-return-types.ts +0 -58
  544. package/test-fixtures/tsconfig.json +0 -13
  545. package/tsconfig.json +0 -26
  546. package/vitest.config.ts +0 -8
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ var import_vm = require("vm");
3
4
  var import_vitest = require("vitest");
4
5
  var import_generate_lite = require("./generate-lite.native.js");
5
6
  function makeParse(table) {
@@ -12,14 +13,17 @@ function makeParse(table) {
12
13
  };
13
14
  }
14
15
  var DIR = "/proj/src/data";
16
+ (0, import_vitest.afterEach)(function () {
17
+ import_vitest.vi.restoreAllMocks();
18
+ });
15
19
  (0, import_vitest.describe)("generateLite", function () {
16
20
  (0, import_vitest.test)("emits models.ts, syncedMutations.ts, and README.md from inline types", function () {
17
21
  var files = {
18
- [`${DIR}/models/todo.ts`]: "// fake source, parser returns fixture",
19
- [`${DIR}/models/user.ts`]: "// fake source, parser returns fixture"
22
+ [`${DIR}/todo.ts`]: "// fake source, parser returns fixture",
23
+ [`${DIR}/user.ts`]: "// fake source, parser returns fixture"
20
24
  };
21
25
  var fixtures = {
22
- [`${DIR}/models/todo.ts`]: {
26
+ [`${DIR}/todo.ts`]: {
23
27
  mutations: [{
24
28
  modelName: "todo",
25
29
  handlers: [{
@@ -33,7 +37,7 @@ var DIR = "/proj/src/data";
33
37
  }],
34
38
  queries: []
35
39
  },
36
- [`${DIR}/models/user.ts`]: {
40
+ [`${DIR}/user.ts`]: {
37
41
  mutations: [{
38
42
  modelName: "user",
39
43
  handlers: [{
@@ -51,10 +55,10 @@ var DIR = "/proj/src/data";
51
55
  dir: DIR,
52
56
  parse: makeParse(fixtures)
53
57
  });
54
- (0, import_vitest.expect)(Object.keys(result.files).sort()).toEqual(["README.md", "models.ts", "syncedMutations.ts"]);
58
+ (0, import_vitest.expect)(Object.keys(result.files).sort()).toEqual(["README.md", "groupedQueries.ts", "instances.ts", "models.ts", "syncedMutations.ts", "syncedQueries.ts"]);
55
59
  var models = result.files["models.ts"];
56
- (0, import_vitest.expect)(models).toContain("import * as todo from '../models/todo'");
57
- (0, import_vitest.expect)(models).toContain("import * as userPublic from '../models/user'");
60
+ (0, import_vitest.expect)(models).toContain("import * as todo from '../todo'");
61
+ (0, import_vitest.expect)(models).toContain("import * as userPublic from '../user'");
58
62
  (0, import_vitest.expect)(models).toContain("user: userPublic,");
59
63
  (0, import_vitest.expect)(models).not.toContain("\n userPublic,");
60
64
  (0, import_vitest.expect)(models).toContain("export const models = {");
@@ -72,11 +76,11 @@ var DIR = "/proj/src/data";
72
76
  });
73
77
  (0, import_vitest.test)("parses newline-separated mutation object types", function () {
74
78
  var files = {
75
- [`${DIR}/models/agentEvent.ts`]: "// fake",
76
- [`${DIR}/models/deployment.ts`]: "// fake"
79
+ [`${DIR}/agentEvent.ts`]: "// fake",
80
+ [`${DIR}/deployment.ts`]: "// fake"
77
81
  };
78
82
  var fixtures = {
79
- [`${DIR}/models/agentEvent.ts`]: {
83
+ [`${DIR}/agentEvent.ts`]: {
80
84
  mutations: [{
81
85
  modelName: "agentEvent",
82
86
  handlers: [{
@@ -91,7 +95,7 @@ var DIR = "/proj/src/data";
91
95
  }],
92
96
  queries: []
93
97
  },
94
- [`${DIR}/models/deployment.ts`]: {
98
+ [`${DIR}/deployment.ts`]: {
95
99
  mutations: [{
96
100
  modelName: "deployment",
97
101
  handlers: [{
@@ -124,10 +128,10 @@ var DIR = "/proj/src/data";
124
128
  });
125
129
  (0, import_vitest.test)("parses object intersections and skips index signatures", function () {
126
130
  var files = {
127
- [`${DIR}/models/agent.ts`]: "// fake"
131
+ [`${DIR}/agent.ts`]: "// fake"
128
132
  };
129
133
  var fixtures = {
130
- [`${DIR}/models/agent.ts`]: {
134
+ [`${DIR}/agent.ts`]: {
131
135
  mutations: [{
132
136
  modelName: "agent",
133
137
  handlers: [{
@@ -160,10 +164,10 @@ var DIR = "/proj/src/data";
160
164
  });
161
165
  (0, import_vitest.test)("falls back to v.unknown() for type references", function () {
162
166
  var files = {
163
- [`${DIR}/models/post.ts`]: "// fake"
167
+ [`${DIR}/post.ts`]: `export const allPosts = () => zql.post`
164
168
  };
165
169
  var fixtures = {
166
- [`${DIR}/models/post.ts`]: {
170
+ [`${DIR}/post.ts`]: {
167
171
  mutations: [{
168
172
  modelName: "post",
169
173
  handlers: [{
@@ -193,10 +197,10 @@ var DIR = "/proj/src/data";
193
197
  });
194
198
  (0, import_vitest.test)("uses v.unknown() for explicitly unknown mutation params", function () {
195
199
  var files = {
196
- [`${DIR}/models/project.ts`]: "// fake"
200
+ [`${DIR}/project.ts`]: "// fake"
197
201
  };
198
202
  var fixtures = {
199
- [`${DIR}/models/project.ts`]: {
203
+ [`${DIR}/project.ts`]: {
200
204
  mutations: [{
201
205
  modelName: "project",
202
206
  handlers: [{
@@ -217,15 +221,10 @@ var DIR = "/proj/src/data";
217
221
  });
218
222
  (0, import_vitest.test)("emits query files with v.unknown() fallback for references", function () {
219
223
  var files = {
220
- [`${DIR}/models/post.ts`]: "// fake",
221
- [`${DIR}/queries/post.ts`]: "// fake"
224
+ [`${DIR}/post.ts`]: "// fake"
222
225
  };
223
226
  var fixtures = {
224
- [`${DIR}/models/post.ts`]: {
225
- mutations: [],
226
- queries: []
227
- },
228
- [`${DIR}/queries/post.ts`]: {
227
+ [`${DIR}/post.ts`]: {
229
228
  mutations: [],
230
229
  queries: [
231
230
  // no-arg query → void
@@ -268,7 +267,8 @@ var DIR = "/proj/src/data";
268
267
  (0, import_vitest.expect)(result.files["groupedQueries.ts"]).toBeDefined();
269
268
  (0, import_vitest.expect)(result.files["syncedQueries.ts"]).toBeDefined();
270
269
  var grouped = result.files["groupedQueries.ts"];
271
- (0, import_vitest.expect)(grouped).toContain("export * as post from '../queries/post'");
270
+ (0, import_vitest.expect)(grouped).toContain("import * as postSource from '../post'");
271
+ (0, import_vitest.expect)(grouped).toContain("postById: postSource.postById");
272
272
  var synced = result.files["syncedQueries.ts"];
273
273
  (0, import_vitest.expect)(synced).toContain("allPosts: defineQuery(() => Queries.post.allPosts())");
274
274
  (0, import_vitest.expect)(synced).toContain("postById: defineQuery(");
@@ -284,10 +284,10 @@ var DIR = "/proj/src/data";
284
284
  });
285
285
  (0, import_vitest.test)("emits types.ts and tables.ts when a model declares a schema inline", function () {
286
286
  var files = {
287
- [`${DIR}/models/task.ts`]: "// fake"
287
+ [`${DIR}/task.ts`]: "// fake"
288
288
  };
289
289
  var fixtures = {
290
- [`${DIR}/models/task.ts`]: {
290
+ [`${DIR}/task.ts`]: {
291
291
  mutations: [{
292
292
  modelName: "task",
293
293
  handlers: [],
@@ -326,24 +326,24 @@ var DIR = "/proj/src/data";
326
326
  var types = result.files["types.ts"];
327
327
  (0, import_vitest.expect)(types).toContain("export type Task = TableInsertRow<typeof schema.task>");
328
328
  var tables = result.files["tables.ts"];
329
- (0, import_vitest.expect)(tables).toContain("export { schema as task } from '../models/task'");
329
+ (0, import_vitest.expect)(tables).toContain("export { schema as task } from '../task'");
330
330
  var synced = result.files["syncedMutations.ts"];
331
331
  (0, import_vitest.expect)(synced).toContain("insert:");
332
332
  (0, import_vitest.expect)(synced).toContain("update:");
333
333
  (0, import_vitest.expect)(synced).toContain("delete:");
334
334
  (0, import_vitest.expect)(result.mutationCount).toBe(3);
335
335
  });
336
- (0, import_vitest.test)("ignores nested files and non-ts files inside the models directory", function () {
336
+ (0, import_vitest.test)("ignores private files inside a namespace folder", function () {
337
337
  var files = {
338
- [`${DIR}/models/post.ts`]: "// fake",
339
- [`${DIR}/models/README.md`]: "not a model",
340
- [`${DIR}/models/helpers/util.ts`]: "nested should be ignored",
341
- [`${DIR}/models/post.d.ts`]: "declaration file, ignored",
342
- [`${DIR}/models/post.test.ts`]: "test file, ignored",
343
- [`${DIR}/models/post.spec.ts`]: "spec file, ignored"
338
+ [`${DIR}/post/mutations.ts`]: "// fake",
339
+ [`${DIR}/post/README.md`]: "not a model",
340
+ [`${DIR}/post/helpers/util.ts`]: "private helper, ignored",
341
+ [`${DIR}/post/post.d.ts`]: "declaration file, ignored",
342
+ [`${DIR}/post/post.test.ts`]: "test file, ignored",
343
+ [`${DIR}/post/post.spec.ts`]: "spec file, ignored"
344
344
  };
345
345
  var fixtures = {
346
- [`${DIR}/models/post.ts`]: {
346
+ [`${DIR}/post/mutations.ts`]: {
347
347
  mutations: [{
348
348
  modelName: "post",
349
349
  handlers: [],
@@ -359,18 +359,18 @@ var DIR = "/proj/src/data";
359
359
  });
360
360
  (0, import_vitest.expect)(result.modelCount).toBe(1);
361
361
  var models = result.files["models.ts"];
362
- (0, import_vitest.expect)(models).toContain("import * as post from '../models/post'");
362
+ (0, import_vitest.expect)(models).toContain("import * as post from '../post/mutations'");
363
363
  (0, import_vitest.expect)(models).not.toContain("util");
364
364
  (0, import_vitest.expect)(models).not.toContain("README");
365
365
  (0, import_vitest.expect)(models).not.toContain("post.test");
366
366
  (0, import_vitest.expect)(models).not.toContain("post.spec");
367
367
  });
368
- (0, import_vitest.test)("infers mutations/ directory when present", function () {
368
+ (0, import_vitest.test)("supports a split namespace folder", function () {
369
369
  var files = {
370
- [`${DIR}/mutations/post.ts`]: "// fake"
370
+ [`${DIR}/post/mutations.ts`]: "// fake"
371
371
  };
372
372
  var fixtures = {
373
- [`${DIR}/mutations/post.ts`]: {
373
+ [`${DIR}/post/mutations.ts`]: {
374
374
  mutations: [{
375
375
  modelName: "post",
376
376
  handlers: [{
@@ -388,7 +388,412 @@ var DIR = "/proj/src/data";
388
388
  parse: makeParse(fixtures)
389
389
  });
390
390
  var models = result.files["models.ts"];
391
- (0, import_vitest.expect)(models).toContain("from '../mutations/post'");
391
+ (0, import_vitest.expect)(models).toContain("from '../post/mutations'");
392
+ });
393
+ (0, import_vitest.test)("derives single-file namespaces from data exports", function () {
394
+ var files = {
395
+ [`${DIR}/server.ts`]: `export const serverRows = () => zql.server`,
396
+ [`${DIR}/types.ts`]: `export const formatRow = (value: string) => value`
397
+ };
398
+ var result = (0, import_generate_lite.generateLite)({
399
+ files,
400
+ dir: DIR,
401
+ parse: makeParse({
402
+ [`${DIR}/server.ts`]: {
403
+ mutations: [],
404
+ queries: [{
405
+ name: "serverRows",
406
+ paramTypeText: null
407
+ }]
408
+ },
409
+ [`${DIR}/types.ts`]: {
410
+ mutations: [],
411
+ queries: []
412
+ }
413
+ })
414
+ });
415
+ (0, import_vitest.expect)(result.modelCount).toBe(1);
416
+ (0, import_vitest.expect)(result.queryCount).toBe(1);
417
+ });
418
+ (0, import_vitest.test)("warns once and ignores an unparseable non-data file", function () {
419
+ var warn = import_vitest.vi.spyOn(console, "warn").mockImplementation(function () {});
420
+ var result = (0, import_generate_lite.generateLite)({
421
+ files: {
422
+ [`${DIR}/server.ts`]: `export const serverRows = () => zql.server`,
423
+ [`${DIR}/types.ts`]: `export type Broken = {`
424
+ },
425
+ dir: DIR,
426
+ parse: function parse(source, path) {
427
+ if (path.endsWith("/types.ts")) throw new Error("parse failed");
428
+ return {
429
+ mutations: [],
430
+ queries: source.includes("zql.server") ? [{
431
+ name: "serverRows",
432
+ paramTypeText: null
433
+ }] : []
434
+ };
435
+ }
436
+ });
437
+ (0, import_vitest.expect)(result.modelCount).toBe(1);
438
+ (0, import_vitest.expect)(warn).toHaveBeenCalledOnce();
439
+ (0, import_vitest.expect)(warn).toHaveBeenCalledWith("[on-zero] ignoring data/types.ts: no recognized data exports");
440
+ warn.mockRestore();
441
+ });
442
+ (0, import_vitest.test)("rejects the removed top-level layout", function () {
443
+ (0, import_vitest.expect)(function () {
444
+ return (0, import_generate_lite.generateLite)({
445
+ files: {
446
+ [`${DIR}/queries/post.ts`]: "// fake"
447
+ },
448
+ dir: DIR,
449
+ parse: makeParse({})
450
+ });
451
+ }).toThrow(/removed top-level queries\/ layout/);
452
+ });
453
+ (0, import_vitest.test)("derives scoped related-table closure from lite metadata", function () {
454
+ var files = {
455
+ [`${DIR}/on-zero.config.ts`]: `export default defineConfig({ instances: { project: { scope: 'projectId' } } })`,
456
+ [`${DIR}/project/message/queries.ts`]: `export const messages = () => zql.message.related('comments')`,
457
+ [`${DIR}/project/message/mutations.ts`]: "// fake mutation",
458
+ ["/proj/src/database/relations.ts"]: "// fake relations",
459
+ ["/proj/src/database/schema.ts"]: "// fake tables"
460
+ };
461
+ var empty = {
462
+ mutations: [],
463
+ queries: []
464
+ };
465
+ var result = (0, import_generate_lite.generateLite)({
466
+ files,
467
+ dir: DIR,
468
+ parse: makeParse({
469
+ [`${DIR}/on-zero.config.ts`]: {
470
+ ...empty,
471
+ dataConfig: {
472
+ instances: {
473
+ project: {
474
+ scope: "projectId"
475
+ }
476
+ }
477
+ }
478
+ },
479
+ [`${DIR}/project/message/queries.ts`]: {
480
+ ...empty,
481
+ queries: [{
482
+ name: "messages",
483
+ paramTypeText: null,
484
+ relatedPaths: [["comments", "author"]]
485
+ }]
486
+ },
487
+ [`${DIR}/project/message/mutations.ts`]: {
488
+ ...empty,
489
+ mutations: [{
490
+ modelName: "message",
491
+ handlers: [],
492
+ schema: {
493
+ tableName: "message",
494
+ primaryKeys: ["id"],
495
+ columns: [{
496
+ name: "id",
497
+ builderText: "string()"
498
+ }, {
499
+ name: "projectId",
500
+ builderText: "string()"
501
+ }]
502
+ }
503
+ }]
504
+ },
505
+ "/proj/src/database/relations.ts": {
506
+ ...empty,
507
+ relations: [{
508
+ sourceTable: "message",
509
+ name: "comments",
510
+ targetTable: "comment"
511
+ }, {
512
+ sourceTable: "comment",
513
+ name: "author",
514
+ targetTable: "userPublic"
515
+ }]
516
+ },
517
+ "/proj/src/database/schema.ts": {
518
+ ...empty,
519
+ tables: [{
520
+ name: "comment",
521
+ columns: ["id", "projectId"]
522
+ }, {
523
+ name: "userPublic",
524
+ columns: ["id", "projectId"]
525
+ }]
526
+ }
527
+ })
528
+ });
529
+ (0, import_vitest.expect)(result.files["instances.ts"]).toContain('syncTables: ["comment","message","userPublic"]');
530
+ var instance = result.instances.find(function (entry) {
531
+ return entry.name === "project";
532
+ });
533
+ (0, import_vitest.expect)(instance === null || instance === void 0 ? void 0 : instance.syncTables).toEqual(["comment", "message", "userPublic"]);
534
+ (0, import_vitest.expect)(instance === null || instance === void 0 ? void 0 : instance.supportTables).toEqual([]);
535
+ });
536
+ (0, import_vitest.test)("derives fileless support tables through parsed mutation helpers", function () {
537
+ var _context_instances_default, _context_instances;
538
+ var files = {
539
+ [`${DIR}/post.ts`]: "// namespace",
540
+ [`${DIR}/helpers/writeAudit.ts`]: "// helper",
541
+ [`${DIR}/helpers/readSettings.ts`]: "// nested helper"
542
+ };
543
+ var empty = {
544
+ mutations: [],
545
+ queries: []
546
+ };
547
+ var result = (0, import_generate_lite.generateLite)({
548
+ files,
549
+ dir: DIR,
550
+ parse: makeParse({
551
+ [`${DIR}/post.ts`]: {
552
+ ...empty,
553
+ mutations: [{
554
+ modelName: "post",
555
+ handlers: [],
556
+ schema: null
557
+ }],
558
+ imports: ["./helpers/writeAudit"],
559
+ supportTables: ["post"]
560
+ },
561
+ [`${DIR}/helpers/writeAudit.ts`]: {
562
+ ...empty,
563
+ imports: ["./readSettings"],
564
+ supportTables: ["audit"]
565
+ },
566
+ [`${DIR}/helpers/readSettings.ts`]: {
567
+ ...empty,
568
+ supportTables: ["settings"]
569
+ }
570
+ })
571
+ });
572
+ var runnable = result.files["instances.ts"].replace("import { schema } from './schema'", "").replace("import * as groupedQueries from './groupedQueries'", "").replace("import { models } from './models'", "").replace("export const instances =", "globalThis.instances =").replace(/: string/g, "").replace(" as const", "");
573
+ var context = {
574
+ groupedQueries: {},
575
+ models: {
576
+ post: {}
577
+ },
578
+ schema: {}
579
+ };
580
+ (0, import_vm.runInNewContext)(runnable, context);
581
+ (0, import_vitest.expect)((_context_instances = context.instances) === null || _context_instances === void 0 ? void 0 : (_context_instances_default = _context_instances.default) === null || _context_instances_default === void 0 ? void 0 : _context_instances_default.supportTables).toEqual(["audit", "settings"]);
582
+ });
583
+ (0, import_vitest.test)("includes a fileless support table in every lite instance that uses it", function () {
584
+ var _context_instances_control, _context_instances, _context_instances_project, _context_instances1;
585
+ var files = {
586
+ [`${DIR}/on-zero.config.ts`]: `export default defineConfig({ instances: { control: { dir: './planes/control', supportTables: ['manual'] }, project: { scope: 'projectId' } } })`,
587
+ [`${DIR}/planes/control/account.ts`]: "// control namespace",
588
+ [`${DIR}/project/message.ts`]: "// project namespace",
589
+ ["/proj/src/database/schema.ts"]: "// table columns"
590
+ };
591
+ var empty = {
592
+ mutations: [],
593
+ queries: []
594
+ };
595
+ var result = (0, import_generate_lite.generateLite)({
596
+ files,
597
+ dir: DIR,
598
+ parse: makeParse({
599
+ [`${DIR}/on-zero.config.ts`]: {
600
+ ...empty,
601
+ dataConfig: {
602
+ instances: {
603
+ control: {
604
+ dir: "./planes/control",
605
+ supportTables: ["manual"]
606
+ },
607
+ project: {
608
+ scope: "projectId"
609
+ }
610
+ }
611
+ }
612
+ },
613
+ [`${DIR}/planes/control/account.ts`]: {
614
+ ...empty,
615
+ mutations: [{
616
+ modelName: "account",
617
+ handlers: [],
618
+ schema: null
619
+ }],
620
+ supportTables: ["audit"]
621
+ },
622
+ [`${DIR}/project/message.ts`]: {
623
+ ...empty,
624
+ mutations: [{
625
+ modelName: "message",
626
+ handlers: [],
627
+ schema: {
628
+ tableName: "message",
629
+ primaryKeys: ["id"],
630
+ columns: [{
631
+ name: "id",
632
+ builderText: "string()"
633
+ }, {
634
+ name: "projectId",
635
+ builderText: "string()"
636
+ }]
637
+ }
638
+ }],
639
+ supportTables: ["audit"]
640
+ },
641
+ "/proj/src/database/schema.ts": {
642
+ ...empty,
643
+ tables: [{
644
+ name: "message",
645
+ columns: ["id", "projectId"]
646
+ }]
647
+ }
648
+ })
649
+ });
650
+ var runnable = result.files["instances.ts"].replace("import { schema } from './schema'", "").replace("import * as groupedQueries from './groupedQueries'", "").replace("import { models } from './models'", "").replace("export const instances =", "globalThis.instances =").replace(/: string/g, "").replace(" as const", "");
651
+ var context = {
652
+ groupedQueries: {},
653
+ models: {
654
+ account: {},
655
+ message: {}
656
+ },
657
+ schema: {}
658
+ };
659
+ (0, import_vm.runInNewContext)(runnable, context);
660
+ (0, import_vitest.expect)((_context_instances = context.instances) === null || _context_instances === void 0 ? void 0 : (_context_instances_control = _context_instances.control) === null || _context_instances_control === void 0 ? void 0 : _context_instances_control.supportTables).toEqual(["audit", "manual"]);
661
+ (0, import_vitest.expect)((_context_instances1 = context.instances) === null || _context_instances1 === void 0 ? void 0 : (_context_instances_project = _context_instances1.project) === null || _context_instances_project === void 0 ? void 0 : _context_instances_project.supportTables).toEqual(["audit"]);
662
+ });
663
+ (0, import_vitest.test)("keeps a configured default lite instance at the data root", function () {
664
+ var _context_instances_default, _context_instances, _context_instances_project, _context_instances1;
665
+ var files = {
666
+ [`${DIR}/on-zero.config.ts`]: `export default defineConfig({ instances: { default: { dir: '.', supportTables: ['accountRepo', 'usageLedger'] }, project: { scope: 'projectId' } } })`,
667
+ [`${DIR}/account.ts`]: "// control namespace",
668
+ [`${DIR}/project/message.ts`]: "// project namespace"
669
+ };
670
+ var empty = {
671
+ mutations: [],
672
+ queries: []
673
+ };
674
+ var result = (0, import_generate_lite.generateLite)({
675
+ files,
676
+ dir: DIR,
677
+ parse: makeParse({
678
+ [`${DIR}/on-zero.config.ts`]: {
679
+ ...empty,
680
+ dataConfig: {
681
+ instances: {
682
+ default: {
683
+ dir: ".",
684
+ supportTables: ["accountRepo", "usageLedger"]
685
+ },
686
+ project: {
687
+ scope: "projectId"
688
+ }
689
+ }
690
+ }
691
+ },
692
+ [`${DIR}/account.ts`]: {
693
+ ...empty,
694
+ queries: [{
695
+ name: "accounts",
696
+ paramTypeText: null
697
+ }]
698
+ },
699
+ [`${DIR}/project/message.ts`]: {
700
+ ...empty,
701
+ mutations: [{
702
+ modelName: "message",
703
+ handlers: [],
704
+ schema: {
705
+ tableName: "message",
706
+ primaryKeys: ["id"],
707
+ columns: [{
708
+ name: "id",
709
+ builderText: "string()"
710
+ }, {
711
+ name: "projectId",
712
+ builderText: "string()"
713
+ }]
714
+ }
715
+ }]
716
+ }
717
+ })
718
+ });
719
+ var runnable = result.files["instances.ts"].replace("import { schema } from './schema'", "").replace("import * as groupedQueries from './groupedQueries'", "").replace("import { models } from './models'", "").replace("export const instances =", "globalThis.instances =").replace(/: string/g, "").replace(" as const", "");
720
+ var context = {
721
+ groupedQueries: {},
722
+ models: {
723
+ message: {}
724
+ },
725
+ schema: {}
726
+ };
727
+ (0, import_vm.runInNewContext)(runnable, context);
728
+ (0, import_vitest.expect)((_context_instances = context.instances) === null || _context_instances === void 0 ? void 0 : (_context_instances_default = _context_instances.default) === null || _context_instances_default === void 0 ? void 0 : _context_instances_default.supportTables).toEqual(["accountRepo", "usageLedger"]);
729
+ (0, import_vitest.expect)((_context_instances1 = context.instances) === null || _context_instances1 === void 0 ? void 0 : (_context_instances_project = _context_instances1.project) === null || _context_instances_project === void 0 ? void 0 : _context_instances_project.supportTables).toEqual([]);
730
+ });
731
+ (0, import_vitest.test)("rejects missing configured directories and instance.ts remnants", function () {
732
+ var empty = {
733
+ mutations: [],
734
+ queries: []
735
+ };
736
+ (0, import_vitest.expect)(function () {
737
+ return (0, import_generate_lite.generateLite)({
738
+ files: {
739
+ [`${DIR}/on-zero.config.ts`]: `export default defineConfig({ instances: { project: {} } })`
740
+ },
741
+ dir: DIR,
742
+ parse: makeParse({
743
+ [`${DIR}/on-zero.config.ts`]: {
744
+ ...empty,
745
+ dataConfig: {
746
+ instances: {
747
+ project: {}
748
+ }
749
+ }
750
+ }
751
+ })
752
+ });
753
+ }).toThrow(/instance 'project' directory does not exist/);
754
+ (0, import_vitest.expect)(function () {
755
+ return (0, import_generate_lite.generateLite)({
756
+ files: {
757
+ [`${DIR}/on-zero.config.ts`]: `export default defineConfig({ instances: { control: { dir: './shared' }, project: { dir: './shared' } } })`,
758
+ [`${DIR}/shared/account.ts`]: "// namespace"
759
+ },
760
+ dir: DIR,
761
+ parse: makeParse({
762
+ [`${DIR}/on-zero.config.ts`]: {
763
+ ...empty,
764
+ dataConfig: {
765
+ instances: {
766
+ control: {
767
+ dir: "./shared"
768
+ },
769
+ project: {
770
+ dir: "./shared"
771
+ }
772
+ }
773
+ }
774
+ }
775
+ })
776
+ });
777
+ }).toThrow(/instances 'control' and 'project' resolve to the same directory/);
778
+ (0, import_vitest.expect)(function () {
779
+ return (0, import_generate_lite.generateLite)({
780
+ files: {
781
+ [`${DIR}/post.ts`]: "// namespace",
782
+ [`${DIR}/project/instance.ts`]: `export default defineInstance({})`
783
+ },
784
+ dir: DIR,
785
+ parse: makeParse({
786
+ [`${DIR}/post.ts`]: {
787
+ ...empty,
788
+ mutations: [{
789
+ modelName: "post",
790
+ handlers: [],
791
+ schema: null
792
+ }]
793
+ }
794
+ })
795
+ });
796
+ }).toThrow(/uses removed instance\.ts configuration/);
392
797
  });
393
798
  });
394
799
  //# sourceMappingURL=generate-lite.test.native.js.map