@pyric/cli 0.1.0-alpha.10 → 0.1.0-alpha.11

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 (304) hide show
  1. package/README.md.orig +2 -2
  2. package/dist/assurance/.generated/conformance-verdicts.d.ts +16 -0
  3. package/dist/assurance/.generated/conformance-verdicts.d.ts.map +1 -1
  4. package/dist/assurance/.generated/conformance-verdicts.js +16 -0
  5. package/dist/assurance/.generated/conformance-verdicts.js.map +1 -1
  6. package/dist/bridge/server/peer.d.ts +1 -1
  7. package/dist/bridge/server.d.ts +1 -1
  8. package/dist/bridge/server.js +1 -1
  9. package/dist/cli/index.d.ts +11 -0
  10. package/dist/cli/index.d.ts.map +1 -1
  11. package/dist/cli/index.js +13 -1
  12. package/dist/cli/index.js.map +1 -1
  13. package/dist/cli/init.d.ts +3 -3
  14. package/dist/cli/init.d.ts.map +1 -1
  15. package/dist/cli/init.js +5 -5
  16. package/dist/cli/init.js.map +1 -1
  17. package/dist/cli/serve.d.ts.map +1 -1
  18. package/dist/cli/serve.js +8 -2
  19. package/dist/cli/serve.js.map +1 -1
  20. package/dist/conformance/.generated/can-i-use-browser.d.ts.map +1 -1
  21. package/dist/conformance/.generated/can-i-use-browser.js +1 -1
  22. package/dist/conformance/.generated/can-i-use-browser.js.map +1 -1
  23. package/dist/conformance/.generated/can-i-use.d.ts.map +1 -1
  24. package/dist/conformance/.generated/can-i-use.js +1 -1
  25. package/dist/conformance/.generated/can-i-use.js.map +1 -1
  26. package/dist/conformance/.generated/conformance-docs.d.ts +12 -0
  27. package/dist/conformance/.generated/conformance-docs.d.ts.map +1 -0
  28. package/dist/conformance/.generated/conformance-docs.js +2 -0
  29. package/dist/conformance/.generated/conformance-docs.js.map +1 -0
  30. package/dist/conformance/docs.d.ts +6 -0
  31. package/dist/conformance/docs.d.ts.map +1 -0
  32. package/dist/conformance/docs.js +6 -0
  33. package/dist/conformance/docs.js.map +1 -0
  34. package/dist/remote/index.d.ts.map +1 -1
  35. package/dist/remote/index.js +1 -0
  36. package/dist/remote/index.js.map +1 -1
  37. package/dist/serve/activity-guard.d.ts +4 -0
  38. package/dist/serve/activity-guard.d.ts.map +1 -0
  39. package/dist/serve/activity-guard.js +22 -0
  40. package/dist/serve/activity-guard.js.map +1 -0
  41. package/dist/serve/activity-route.d.ts +4 -0
  42. package/dist/serve/activity-route.d.ts.map +1 -0
  43. package/dist/serve/activity-route.js +157 -0
  44. package/dist/serve/activity-route.js.map +1 -0
  45. package/dist/serve/activity-warning.d.ts +4 -0
  46. package/dist/serve/activity-warning.d.ts.map +1 -0
  47. package/dist/serve/activity-warning.js +21 -0
  48. package/dist/serve/activity-warning.js.map +1 -0
  49. package/dist/serve/bridge-mount.d.ts +5 -0
  50. package/dist/serve/bridge-mount.d.ts.map +1 -1
  51. package/dist/serve/bridge-mount.js +1 -0
  52. package/dist/serve/bridge-mount.js.map +1 -1
  53. package/dist/serve/docs-ui/404.html +3 -0
  54. package/dist/serve/docs-ui/_astro/{_slug_.DPUwShm2.css → _slug_.CXh9yTP1.css} +1 -1
  55. package/dist/serve/docs-ui/_astro/_slug_.DUci-duz.css +1 -0
  56. package/dist/serve/docs-ui/docs/_rhythm/index.html +2 -1
  57. package/dist/serve/docs-ui/docs/agent/set-up-your-agent/index.html +3 -2
  58. package/dist/serve/docs-ui/docs/agent/set-up-your-agent.md +1 -1
  59. package/dist/serve/docs-ui/docs/agent/watch-and-review/index.html +2 -1
  60. package/dist/serve/docs-ui/docs/agent/work-with-an-agent/index.html +2 -1
  61. package/dist/serve/docs-ui/docs/ai-compat/index.html +2 -1
  62. package/dist/serve/docs-ui/docs/api-reference/index.html +51 -49
  63. package/dist/serve/docs-ui/docs/api-reference.md +2 -2
  64. package/dist/serve/docs-ui/docs/app-compat/index.html +2 -1
  65. package/dist/serve/docs-ui/docs/auth-compat/index.html +2 -1
  66. package/dist/serve/docs-ui/docs/build/ai-logic/index.html +18 -3
  67. package/dist/serve/docs-ui/docs/build/ai-logic.md +30 -2
  68. package/dist/serve/docs-ui/docs/build/authentication/index.html +2 -1
  69. package/dist/serve/docs-ui/docs/build/authentication.md +1 -1
  70. package/dist/serve/docs-ui/docs/build/cloud-firestore/index.html +2 -1
  71. package/dist/serve/docs-ui/docs/build/cloud-messaging/index.html +46 -2
  72. package/dist/serve/docs-ui/docs/build/cloud-messaging.md +56 -1
  73. package/dist/serve/docs-ui/docs/build/cloud-storage/index.html +2 -1
  74. package/dist/serve/docs-ui/docs/build/cloud-storage.md +1 -1
  75. package/dist/serve/docs-ui/docs/build/realtime-database/index.html +21 -3
  76. package/dist/serve/docs-ui/docs/build/realtime-database.md +25 -1
  77. package/dist/serve/docs-ui/docs/conformance-scores/index.html +2 -1
  78. package/dist/serve/docs-ui/docs/create-pyric-reference-api/index.html +61 -28
  79. package/dist/serve/docs-ui/docs/create-pyric-reference-api.md +65 -20
  80. package/dist/serve/docs-ui/docs/database-compat/index.html +2 -1
  81. package/dist/serve/docs-ui/docs/firestore-compat/index.html +6 -5
  82. package/dist/serve/docs-ui/docs/firestore-compat.md +4 -4
  83. package/dist/serve/docs-ui/docs/functions-rtdb-compat/index.html +2 -1
  84. package/dist/serve/docs-ui/docs/get-started/how-the-swap-works/index.html +2 -1
  85. package/dist/serve/docs-ui/docs/get-started/start-building/index.html +4 -3
  86. package/dist/serve/docs-ui/docs/get-started/start-building.md +2 -2
  87. package/dist/serve/docs-ui/docs/index.json +800 -575
  88. package/dist/serve/docs-ui/docs/messaging-compat/index.html +2 -1
  89. package/dist/serve/docs-ui/docs/observe/see-whats-happening/index.html +2 -1
  90. package/dist/serve/docs-ui/docs/observe/shape-your-data/index.html +2 -1
  91. package/dist/serve/docs-ui/docs/overview/index.html +2 -1
  92. package/dist/serve/docs-ui/docs/pyric-admin-app-reference-api/index.html +5 -4
  93. package/dist/serve/docs-ui/docs/pyric-admin-app-reference-api.md +3 -4
  94. package/dist/serve/docs-ui/docs/pyric-admin-auth-reference-api/index.html +5 -4
  95. package/dist/serve/docs-ui/docs/pyric-admin-auth-reference-api.md +3 -4
  96. package/dist/serve/docs-ui/docs/pyric-admin-database-reference-api/index.html +5 -4
  97. package/dist/serve/docs-ui/docs/pyric-admin-database-reference-api.md +3 -4
  98. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api/index.html +2503 -12
  99. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api.md +2219 -8
  100. package/dist/serve/docs-ui/docs/pyric-admin-storage-reference-api/index.html +4 -3
  101. package/dist/serve/docs-ui/docs/pyric-admin-storage-reference-api.md +2 -3
  102. package/dist/serve/docs-ui/docs/pyric-ai-reference-api/index.html +16 -11
  103. package/dist/serve/docs-ui/docs/pyric-ai-reference-api.md +14 -13
  104. package/dist/serve/docs-ui/docs/pyric-ai-scripting-reference-api/index.html +4 -3
  105. package/dist/serve/docs-ui/docs/pyric-ai-scripting-reference-api.md +2 -3
  106. package/dist/serve/docs-ui/docs/pyric-app-reference-api/index.html +7 -2
  107. package/dist/serve/docs-ui/docs/pyric-app-reference-api.md +5 -2
  108. package/dist/serve/docs-ui/docs/pyric-auth-reference-api/index.html +23 -12
  109. package/dist/serve/docs-ui/docs/pyric-auth-reference-api.md +15 -12
  110. package/dist/serve/docs-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +10 -48
  111. package/dist/serve/docs-ui/docs/pyric-cli-assurance-browser-reference-api.md +11 -24
  112. package/dist/serve/docs-ui/docs/pyric-cli-assurance-reference-api/index.html +87 -97
  113. package/dist/serve/docs-ui/docs/pyric-cli-assurance-reference-api.md +53 -65
  114. package/dist/serve/docs-ui/docs/pyric-cli-bridge-client-reference-api/index.html +14 -15
  115. package/dist/serve/docs-ui/docs/pyric-cli-bridge-client-reference-api.md +19 -28
  116. package/dist/serve/docs-ui/docs/pyric-cli-bridge-reference-api/index.html +4 -3
  117. package/dist/serve/docs-ui/docs/pyric-cli-bridge-reference-api.md +2 -3
  118. package/dist/serve/docs-ui/docs/pyric-cli-conformance-browser-reference-api/index.html +3 -2
  119. package/dist/serve/docs-ui/docs/pyric-cli-conformance-browser-reference-api.md +1 -2
  120. package/dist/serve/docs-ui/docs/pyric-cli-conformance-docs-reference-api/index.html +51 -0
  121. package/dist/serve/docs-ui/docs/pyric-cli-conformance-docs-reference-api.md +36 -0
  122. package/dist/serve/docs-ui/docs/pyric-cli-conformance-reference-api/index.html +3 -2
  123. package/dist/serve/docs-ui/docs/pyric-cli-conformance-reference-api.md +1 -2
  124. package/dist/serve/docs-ui/docs/pyric-cli-credentials-node-reference-api/index.html +3 -2
  125. package/dist/serve/docs-ui/docs/pyric-cli-credentials-node-reference-api.md +1 -2
  126. package/dist/serve/docs-ui/docs/pyric-cli-discover-reference-api/index.html +3 -2
  127. package/dist/serve/docs-ui/docs/pyric-cli-discover-reference-api.md +1 -2
  128. package/dist/serve/docs-ui/docs/pyric-cli-register-reference-api/index.html +3 -2
  129. package/dist/serve/docs-ui/docs/pyric-cli-register-reference-api.md +1 -2
  130. package/dist/serve/docs-ui/docs/pyric-cli-remote-reference-api/index.html +1067 -83
  131. package/dist/serve/docs-ui/docs/pyric-cli-remote-reference-api.md +1291 -160
  132. package/dist/serve/docs-ui/docs/pyric-cli-serve-worker-reference-api/index.html +123 -92
  133. package/dist/serve/docs-ui/docs/pyric-cli-serve-worker-reference-api.md +49 -20
  134. package/dist/serve/docs-ui/docs/pyric-cli-verify-reference-api/index.html +72 -7
  135. package/dist/serve/docs-ui/docs/pyric-cli-verify-reference-api.md +22 -7
  136. package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api/index.html +33 -12
  137. package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api.md +15 -12
  138. package/dist/serve/docs-ui/docs/pyric-database-reference-api/index.html +18 -17
  139. package/dist/serve/docs-ui/docs/pyric-database-reference-api.md +19 -22
  140. package/dist/serve/docs-ui/docs/pyric-firestore-reference-api/index.html +1512 -545
  141. package/dist/serve/docs-ui/docs/pyric-firestore-reference-api.md +1311 -316
  142. package/dist/serve/docs-ui/docs/pyric-firestore-values-reference-api/index.html +3 -2
  143. package/dist/serve/docs-ui/docs/pyric-firestore-values-reference-api.md +1 -2
  144. package/dist/serve/docs-ui/docs/pyric-messaging-reference-api/index.html +5 -4
  145. package/dist/serve/docs-ui/docs/pyric-messaging-reference-api.md +3 -4
  146. package/dist/serve/docs-ui/docs/pyric-messaging-sw-reference-api/index.html +69 -369
  147. package/dist/serve/docs-ui/docs/pyric-messaging-sw-reference-api.md +103 -216
  148. package/dist/serve/docs-ui/docs/pyric-rules-reference-api/index.html +10 -9
  149. package/dist/serve/docs-ui/docs/pyric-rules-reference-api.md +9 -10
  150. package/dist/serve/docs-ui/docs/pyric-sandbox-database-reference-api/index.html +8 -7
  151. package/dist/serve/docs-ui/docs/pyric-sandbox-database-reference-api.md +6 -7
  152. package/dist/serve/docs-ui/docs/pyric-sandbox-firestore-reference-api/index.html +10 -9
  153. package/dist/serve/docs-ui/docs/pyric-sandbox-firestore-reference-api.md +9 -10
  154. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api/index.html +374 -910
  155. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api.md +377 -911
  156. package/dist/serve/docs-ui/docs/pyric-storage-reference-api/index.html +25 -17
  157. package/dist/serve/docs-ui/docs/pyric-storage-reference-api.md +21 -19
  158. package/dist/serve/docs-ui/docs/pyric-ui-agents-reference-api/index.html +3 -2
  159. package/dist/serve/docs-ui/docs/pyric-ui-agents-reference-api.md +1 -2
  160. package/dist/serve/docs-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +63 -776
  161. package/dist/serve/docs-ui/docs/pyric-ui-auth-hooks-reference-api.md +69 -510
  162. package/dist/serve/docs-ui/docs/pyric-ui-auth-reference-api/index.html +22 -21
  163. package/dist/serve/docs-ui/docs/pyric-ui-auth-reference-api.md +29 -30
  164. package/dist/serve/docs-ui/docs/pyric-ui-events-hooks-reference-api/index.html +15 -168
  165. package/dist/serve/docs-ui/docs/pyric-ui-events-hooks-reference-api.md +17 -87
  166. package/dist/serve/docs-ui/docs/pyric-ui-events-reference-api/index.html +6 -5
  167. package/dist/serve/docs-ui/docs/pyric-ui-events-reference-api.md +5 -6
  168. package/dist/serve/docs-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +82 -970
  169. package/dist/serve/docs-ui/docs/pyric-ui-firestore-hooks-reference-api.md +104 -479
  170. package/dist/serve/docs-ui/docs/pyric-ui-firestore-reference-api/index.html +30 -29
  171. package/dist/serve/docs-ui/docs/pyric-ui-firestore-reference-api.md +54 -55
  172. package/dist/serve/docs-ui/docs/pyric-ui-primitives-reference-api/index.html +3 -2
  173. package/dist/serve/docs-ui/docs/pyric-ui-primitives-reference-api.md +1 -2
  174. package/dist/serve/docs-ui/docs/pyric-ui-rtdb-reference-api/index.html +5 -4
  175. package/dist/serve/docs-ui/docs/pyric-ui-rtdb-reference-api.md +3 -4
  176. package/dist/serve/docs-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +9 -124
  177. package/dist/serve/docs-ui/docs/pyric-ui-rules-hooks-reference-api.md +7 -58
  178. package/dist/serve/docs-ui/docs/pyric-ui-rules-reference-api/index.html +24 -23
  179. package/dist/serve/docs-ui/docs/pyric-ui-rules-reference-api.md +31 -34
  180. package/dist/serve/docs-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +104 -1385
  181. package/dist/serve/docs-ui/docs/pyric-ui-storage-hooks-reference-api.md +133 -817
  182. package/dist/serve/docs-ui/docs/pyric-ui-storage-reference-api/index.html +34 -33
  183. package/dist/serve/docs-ui/docs/pyric-ui-storage-reference-api.md +37 -38
  184. package/dist/serve/docs-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +116 -1169
  185. package/dist/serve/docs-ui/docs/pyric-ui-traffic-hooks-reference-api.md +142 -590
  186. package/dist/serve/docs-ui/docs/pyric-ui-traffic-reference-api/index.html +4 -3
  187. package/dist/serve/docs-ui/docs/pyric-ui-traffic-reference-api.md +3 -4
  188. package/dist/serve/docs-ui/docs/rules-compat/index.html +34 -1
  189. package/dist/serve/docs-ui/docs/rules-compat.md +32 -0
  190. package/dist/serve/docs-ui/docs/secure/audit-your-rules/index.html +19 -2
  191. package/dist/serve/docs-ui/docs/secure/audit-your-rules.md +32 -0
  192. package/dist/serve/docs-ui/docs/secure/firestore-rules-limits/index.html +2 -1
  193. package/dist/serve/docs-ui/docs/secure/read-a-denial/index.html +2 -1
  194. package/dist/serve/docs-ui/docs/secure/rtdb-rules-in-typescript/index.html +2 -1
  195. package/dist/serve/docs-ui/docs/secure/rtdb-rules-in-typescript.md +1 -1
  196. package/dist/serve/docs-ui/docs/secure/rules-standard-library/index.html +2 -1
  197. package/dist/serve/docs-ui/docs/secure/secure-it-with-rules/index.html +2 -1
  198. package/dist/serve/docs-ui/docs/secure/simulate-and-lint/index.html +2 -1
  199. package/dist/serve/docs-ui/docs/secure/write-a-rules-test-suite/index.html +2 -1
  200. package/dist/serve/docs-ui/docs/ship/ship-to-production/index.html +2 -1
  201. package/dist/serve/docs-ui/docs/ship/test-in-node/index.html +2 -1
  202. package/dist/serve/docs-ui/docs/storage-compat/index.html +2 -1
  203. package/dist/serve/docs-ui/docs/trust/how-we-know-it-matches-firebase/index.html +2 -1
  204. package/dist/serve/docs-ui/docs/trust/versioning-and-compatibility/index.html +2 -1
  205. package/dist/serve/docs-ui/llms.txt +1 -0
  206. package/dist/serve/entries/ai.d.ts.map +1 -1
  207. package/dist/serve/entries/ai.js +39 -1
  208. package/dist/serve/entries/ai.js.map +1 -1
  209. package/dist/serve/entries/messaging-sw.d.ts.map +1 -1
  210. package/dist/serve/entries/messaging-sw.js +5 -1
  211. package/dist/serve/entries/messaging-sw.js.map +1 -1
  212. package/dist/serve/entries/messaging.d.ts.map +1 -1
  213. package/dist/serve/entries/messaging.js +7 -1
  214. package/dist/serve/entries/messaging.js.map +1 -1
  215. package/dist/serve/entries/runtime.d.ts.map +1 -1
  216. package/dist/serve/entries/runtime.js +20 -1
  217. package/dist/serve/entries/runtime.js.map +1 -1
  218. package/dist/serve/init-payload.d.ts +25 -0
  219. package/dist/serve/init-payload.d.ts.map +1 -1
  220. package/dist/serve/namespace.d.ts +39 -0
  221. package/dist/serve/namespace.d.ts.map +1 -1
  222. package/dist/serve/namespace.js +80 -1
  223. package/dist/serve/namespace.js.map +1 -1
  224. package/dist/serve/standalone-assets.d.ts +11 -9
  225. package/dist/serve/standalone-assets.d.ts.map +1 -1
  226. package/dist/serve/standalone-assets.js +6 -5
  227. package/dist/serve/standalone-assets.js.map +1 -1
  228. package/dist/serve/studio-ui/assets/{RulesCodeEditor-CXdSLKhO.js → RulesCodeEditor-CxVYcZXw.js} +1 -1
  229. package/dist/serve/studio-ui/assets/index-cpSfgQ7H.js +1218 -0
  230. package/dist/serve/studio-ui/assets/seed-DeuFKi4J.js +20 -0
  231. package/dist/serve/studio-ui/index.html +1 -1
  232. package/dist/serve/vite-plugin.d.ts +92 -15
  233. package/dist/serve/vite-plugin.d.ts.map +1 -1
  234. package/dist/serve/vite-plugin.js +281 -11
  235. package/dist/serve/vite-plugin.js.map +1 -1
  236. package/dist/serve/worker/activity-bootstrap.d.ts +8 -0
  237. package/dist/serve/worker/activity-bootstrap.d.ts.map +1 -0
  238. package/dist/serve/worker/activity-bootstrap.js +11 -0
  239. package/dist/serve/worker/activity-bootstrap.js.map +1 -0
  240. package/dist/serve/worker/client/connection.d.ts.map +1 -1
  241. package/dist/serve/worker/client/connection.js +17 -5
  242. package/dist/serve/worker/client/connection.js.map +1 -1
  243. package/dist/serve/worker/client/core.d.ts +2 -2
  244. package/dist/serve/worker/client/core.d.ts.map +1 -1
  245. package/dist/serve/worker/client/core.js +33 -5
  246. package/dist/serve/worker/client/core.js.map +1 -1
  247. package/dist/serve/worker/client/firestore-writes.d.ts.map +1 -1
  248. package/dist/serve/worker/client/firestore-writes.js +1 -0
  249. package/dist/serve/worker/client/firestore-writes.js.map +1 -1
  250. package/dist/serve/worker/client/messaging.d.ts +9 -1
  251. package/dist/serve/worker/client/messaging.d.ts.map +1 -1
  252. package/dist/serve/worker/client/messaging.js +15 -0
  253. package/dist/serve/worker/client/messaging.js.map +1 -1
  254. package/dist/serve/worker/client/studio.d.ts +10 -0
  255. package/dist/serve/worker/client/studio.d.ts.map +1 -1
  256. package/dist/serve/worker/client/studio.js +11 -0
  257. package/dist/serve/worker/client/studio.js.map +1 -1
  258. package/dist/serve/worker/durable-persistence.d.ts +12 -0
  259. package/dist/serve/worker/durable-persistence.d.ts.map +1 -0
  260. package/dist/serve/worker/durable-persistence.js +118 -0
  261. package/dist/serve/worker/durable-persistence.js.map +1 -0
  262. package/dist/serve/worker/entry.d.ts +7 -3
  263. package/dist/serve/worker/entry.d.ts.map +1 -1
  264. package/dist/serve/worker/entry.js +7 -3
  265. package/dist/serve/worker/entry.js.map +1 -1
  266. package/dist/serve/worker/host/core.d.ts +9 -5
  267. package/dist/serve/worker/host/core.d.ts.map +1 -1
  268. package/dist/serve/worker/host/core.js +33 -8
  269. package/dist/serve/worker/host/core.js.map +1 -1
  270. package/dist/serve/worker/host/dispatch.d.ts.map +1 -1
  271. package/dist/serve/worker/host/dispatch.js +9 -2
  272. package/dist/serve/worker/host/dispatch.js.map +1 -1
  273. package/dist/serve/worker/host/studio.d.ts +1 -1
  274. package/dist/serve/worker/host/studio.d.ts.map +1 -1
  275. package/dist/serve/worker/host/studio.js +36 -1
  276. package/dist/serve/worker/host/studio.js.map +1 -1
  277. package/dist/serve/worker/host/subscriptions.d.ts.map +1 -1
  278. package/dist/serve/worker/host/subscriptions.js +27 -7
  279. package/dist/serve/worker/host/subscriptions.js.map +1 -1
  280. package/dist/serve/worker/host-context.d.ts +15 -0
  281. package/dist/serve/worker/host-context.d.ts.map +1 -1
  282. package/dist/serve/worker/host-context.js +10 -0
  283. package/dist/serve/worker/host-context.js.map +1 -1
  284. package/dist/serve/worker/host-messaging.d.ts.map +1 -1
  285. package/dist/serve/worker/host-messaging.js +9 -2
  286. package/dist/serve/worker/host-messaging.js.map +1 -1
  287. package/dist/serve/worker/index.d.ts +1 -1
  288. package/dist/serve/worker/index.d.ts.map +1 -1
  289. package/dist/serve/worker/index.js +2 -0
  290. package/dist/serve/worker/index.js.map +1 -1
  291. package/dist/serve/worker/protocol.d.ts +25 -3
  292. package/dist/serve/worker/protocol.d.ts.map +1 -1
  293. package/dist/serve/worker/protocol.js.map +1 -1
  294. package/dist/serve/worker/serve-init.d.ts +23 -37
  295. package/dist/serve/worker/serve-init.d.ts.map +1 -1
  296. package/dist/serve/worker/serve-init.js +95 -172
  297. package/dist/serve/worker/serve-init.js.map +1 -1
  298. package/dist/vite.d.ts +4 -4
  299. package/dist/vite.d.ts.map +1 -1
  300. package/dist/vite.js +3 -3
  301. package/dist/vite.js.map +1 -1
  302. package/package.json +8 -4
  303. package/dist/serve/studio-ui/assets/index-BvtQIpGn.js +0 -1211
  304. package/dist/serve/studio-ui/assets/seed-3DMedLL3.js +0 -2
@@ -1,1024 +1,136 @@
1
- <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>API reference: @pyric/ui/firestore/hooks · Pyric Studio</title><meta name="description" content="Published declarations for @pyric/ui/firestore/hooks."><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet"><link rel="stylesheet" href="/__pyric/ui/_astro/_slug_.DPUwShm2.css"></head> <body> <header class="studio__bar"> <div class="studio__bar-inner"> <a class="studio__brand" href="/__pyric/ui/" aria-label="Pyric Studio">Pyric</a> <nav class="studio__nav" aria-label="Studio tabs"> <a class="studio__nav-tab" href="/__pyric/ui/"> Home </a><a class="studio__nav-tab" href="/__pyric/ui/firestore"> Firestore </a><a class="studio__nav-tab" href="/__pyric/ui/auth"> Auth </a><a class="studio__nav-tab" href="/__pyric/ui/rtdb"> RTDB </a><a class="studio__nav-tab" href="/__pyric/ui/storage"> Storage </a><a class="studio__nav-tab" href="/__pyric/ui/traffic"> Traffic </a><a class="studio__nav-tab" href="/__pyric/ui/settings"> Settings </a><a class="studio__nav-tab" href="/__pyric/ui/docs" aria-current="page"> Docs </a> </nav> </div> </header> <div class="docs-shell"> <details class="docs-nav-drawer"> <summary>Navigate</summary> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <script type="module">let i=null;function d(t){return i||(i=fetch(t).then(e=>e.json())),i}function l(t,e){return t.title.toLowerCase().includes(e)||t.excerpt.toLowerCase().includes(e)?!0:t.headings.some(r=>r.text.toLowerCase().includes(e))}function u(t,e,r){if(e.innerHTML="",t.length===0){e.hidden=!1;{const n=document.createElement("li");n.className="docs-search-empty",n.textContent="No matches",e.appendChild(n)}return}e.hidden=!1;for(const n of t.slice(0,8)){const s=document.createElement("li"),c=document.createElement("a");c.href=n.path;const o=document.createElement("span");o.className="docs-search-result-title",o.textContent=n.title;const a=document.createElement("span");a.className="docs-search-result-meta",a.textContent=[n.group,n.section].filter(Boolean).join(" / "),c.append(o,a),s.appendChild(c),e.appendChild(s)}}document.querySelectorAll(".docs-search").forEach(t=>{const e=t.dataset.indexUrl,r=t.querySelector(".docs-search-input"),n=t.querySelector(".docs-search-results");r.addEventListener("input",async()=>{const s=r.value.trim().toLowerCase();if(!s){n.hidden=!0,n.innerHTML="";return}const{pages:c}=await d(e);r.value.trim().toLowerCase()===s&&u(c.filter(o=>l(o,s)),n)}),r.addEventListener("focus",()=>{d(e),n.childElementCount>0&&(n.hidden=!1)}),r.addEventListener("keydown",s=>{s.key==="Escape"&&(r.value="",n.hidden=!0,n.innerHTML="",r.blur())}),r.addEventListener("blur",()=>{window.setTimeout(()=>{n.hidden=!0},150)})});document.addEventListener("keydown",t=>{if(!(t.metaKey||t.ctrlKey)||t.key.toLowerCase()!=="k")return;const e=[...document.querySelectorAll(".docs-search-input")].find(r=>r.offsetParent!==null);e&&(t.preventDefault(),e.focus(),e.select())});</script> <a class="docs-nav-toplink" href="/__pyric/ui/docs/overview/"> Overview </a><details class="docs-nav-group"> <summary>Get started</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/get-started/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/get-started/how-the-swap-works/"> How the swap works </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Build</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/build/authentication/"> Authentication </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-firestore/"> Cloud Firestore </a> </li><li> <a href="/__pyric/ui/docs/build/realtime-database/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-storage/"> Cloud Storage </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-messaging/"> Cloud Messaging </a> </li><li> <a href="/__pyric/ui/docs/build/ai-logic/"> AI Logic </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Secure &amp; debug</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/secure/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/secure/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/secure/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/secure/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/secure/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/secure/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/secure/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/secure/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Observe &amp; shape</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/observe/see-whats-happening/"> Traffic &amp; rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/observe/shape-your-data/"> Seed, snapshot, replay </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Ship &amp; test</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/ship/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Work with an agent</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/agent/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/agent/work-with-an-agent/"> Use the MCP tools </a> </li><li> <a href="/__pyric/ui/docs/agent/watch-and-review/"> Watch in Pyric Studio </a> </li> </ul> </div> </div> </details><a class="docs-nav-toplink" href="/__pyric/ui/docs/trust/versioning-and-compatibility/"> Trust </a><details class="docs-nav-group"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/conformance-scores/"> Public API coverage </a> </li><li> <a href="/__pyric/ui/docs/trust/how-we-know-it-matches-firebase/"> How we know it matches Firebase </a> </li><li> <a href="/__pyric/ui/docs/app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/functions-rtdb-compat/"> Functions · RTDB </a> </li><li> <a href="/__pyric/ui/docs/rules-compat/"> Rules </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group" open> <summary>Reference</summary> <div class="docs-nav-group-body docs-nav-group-body--reference"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/api-reference/"> API reference </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-app-reference-api/"> pyric/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-reference-api/"> pyric/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-reference-api/"> pyric/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-reference-api/"> pyric/ai </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-scripting-reference-api/"> pyric/ai/scripting </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-reference-api/"> pyric/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-reference-api/"> pyric/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-reference-api/"> pyric/messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-sw-reference-api/"> pyric/messaging/sw </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-reference-api/"> pyric/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-values-reference-api/"> pyric/firestore-values </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-reference-api/"> pyric/sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-firestore-reference-api/"> pyric/sandbox/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-database-reference-api/"> pyric/sandbox/database </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric-admin</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-admin-app-reference-api/"> pyric-admin/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore-reference-api/"> pyric-admin/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth-reference-api/"> pyric-admin/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database-reference-api/"> pyric-admin/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage-reference-api/"> pyric-admin/storage </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">create-pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/create-pyric-reference-api/"> create-pyric </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/cli</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-credentials-node-reference-api/"> @pyric/cli/credentials/node </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-verify-reference-api/"> @pyric/cli/verify </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-reference-api/"> @pyric/cli/conformance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-browser-reference-api/"> @pyric/cli/conformance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-reference-api/"> @pyric/cli/assurance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-browser-reference-api/"> @pyric/cli/assurance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-reference-api/"> @pyric/cli/bridge </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-client-reference-api/"> @pyric/cli/bridge/client </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-discover-reference-api/"> @pyric/cli/discover </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-vite-reference-api/"> @pyric/cli/vite </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-serve-worker-reference-api/"> @pyric/cli/serve/worker </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-remote-reference-api/"> @pyric/cli/remote </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-register-reference-api/"> @pyric/cli/register </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/ui</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-ui-auth-reference-api/"> @pyric/ui/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-auth-hooks-reference-api/"> @pyric/ui/auth/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-primitives-reference-api/"> @pyric/ui/primitives </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-reference-api/"> @pyric/ui/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-hooks-reference-api/" aria-current="page"> @pyric/ui/firestore/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rtdb-reference-api/"> @pyric/ui/rtdb </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-reference-api/"> @pyric/ui/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-hooks-reference-api/"> @pyric/ui/storage/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-reference-api/"> @pyric/ui/traffic </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-hooks-reference-api/"> @pyric/ui/traffic/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-reference-api/"> @pyric/ui/events </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-hooks-reference-api/"> @pyric/ui/events/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-agents-reference-api/"> @pyric/ui/agents </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-reference-api/"> @pyric/ui/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-hooks-reference-api/"> @pyric/ui/rules/hooks </a> </li> </ul> </div> </div> </details> </nav> </details> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <a class="docs-nav-toplink" href="/__pyric/ui/docs/overview/" id="nav-group-overview"> Overview </a><details class="docs-nav-group" id="nav-group-get-started"> <summary>Get started</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/get-started/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/get-started/how-the-swap-works/"> How the swap works </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-build"> <summary>Build</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/build/authentication/"> Authentication </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-firestore/"> Cloud Firestore </a> </li><li> <a href="/__pyric/ui/docs/build/realtime-database/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-storage/"> Cloud Storage </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-messaging/"> Cloud Messaging </a> </li><li> <a href="/__pyric/ui/docs/build/ai-logic/"> AI Logic </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-secure-debug"> <summary>Secure &amp; debug</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/secure/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/secure/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/secure/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/secure/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/secure/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/secure/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/secure/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/secure/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-observe-shape"> <summary>Observe &amp; shape</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/observe/see-whats-happening/"> Traffic &amp; rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/observe/shape-your-data/"> Seed, snapshot, replay </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-ship-test"> <summary>Ship &amp; test</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/ship/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-work-with-an-agent"> <summary>Work with an agent</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/agent/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/agent/work-with-an-agent/"> Use the MCP tools </a> </li><li> <a href="/__pyric/ui/docs/agent/watch-and-review/"> Watch in Pyric Studio </a> </li> </ul> </div> </div> </details><a class="docs-nav-toplink" href="/__pyric/ui/docs/trust/versioning-and-compatibility/" id="nav-group-trust"> Trust </a><details class="docs-nav-group" id="nav-group-conformance"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/conformance-scores/"> Public API coverage </a> </li><li> <a href="/__pyric/ui/docs/trust/how-we-know-it-matches-firebase/"> How we know it matches Firebase </a> </li><li> <a href="/__pyric/ui/docs/app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/functions-rtdb-compat/"> Functions · RTDB </a> </li><li> <a href="/__pyric/ui/docs/rules-compat/"> Rules </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group" id="nav-group-reference" open> <summary>Reference</summary> <div class="docs-nav-group-body docs-nav-group-body--reference"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/api-reference/"> API reference </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-app-reference-api/"> pyric/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-reference-api/"> pyric/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-reference-api/"> pyric/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-reference-api/"> pyric/ai </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-scripting-reference-api/"> pyric/ai/scripting </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-reference-api/"> pyric/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-reference-api/"> pyric/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-reference-api/"> pyric/messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-sw-reference-api/"> pyric/messaging/sw </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-reference-api/"> pyric/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-values-reference-api/"> pyric/firestore-values </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-reference-api/"> pyric/sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-firestore-reference-api/"> pyric/sandbox/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-database-reference-api/"> pyric/sandbox/database </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric-admin</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-admin-app-reference-api/"> pyric-admin/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore-reference-api/"> pyric-admin/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth-reference-api/"> pyric-admin/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database-reference-api/"> pyric-admin/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage-reference-api/"> pyric-admin/storage </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">create-pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/create-pyric-reference-api/"> create-pyric </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/cli</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-credentials-node-reference-api/"> @pyric/cli/credentials/node </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-verify-reference-api/"> @pyric/cli/verify </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-reference-api/"> @pyric/cli/conformance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-browser-reference-api/"> @pyric/cli/conformance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-reference-api/"> @pyric/cli/assurance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-browser-reference-api/"> @pyric/cli/assurance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-reference-api/"> @pyric/cli/bridge </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-client-reference-api/"> @pyric/cli/bridge/client </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-discover-reference-api/"> @pyric/cli/discover </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-vite-reference-api/"> @pyric/cli/vite </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-serve-worker-reference-api/"> @pyric/cli/serve/worker </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-remote-reference-api/"> @pyric/cli/remote </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-register-reference-api/"> @pyric/cli/register </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/ui</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-ui-auth-reference-api/"> @pyric/ui/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-auth-hooks-reference-api/"> @pyric/ui/auth/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-primitives-reference-api/"> @pyric/ui/primitives </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-reference-api/"> @pyric/ui/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-hooks-reference-api/" aria-current="page"> @pyric/ui/firestore/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rtdb-reference-api/"> @pyric/ui/rtdb </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-reference-api/"> @pyric/ui/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-hooks-reference-api/"> @pyric/ui/storage/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-reference-api/"> @pyric/ui/traffic </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-hooks-reference-api/"> @pyric/ui/traffic/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-reference-api/"> @pyric/ui/events </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-hooks-reference-api/"> @pyric/ui/events/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-agents-reference-api/"> @pyric/ui/agents </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-reference-api/"> @pyric/ui/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-hooks-reference-api/"> @pyric/ui/rules/hooks </a> </li> </ul> </div> </div> </details> </nav> <main class="doc-main"> <nav class="docs-breadcrumbs" aria-label="Breadcrumb"> <ol> <li> <a href="/__pyric/ui/docs/api-reference/">API reference</a> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span>@pyric/ui</span> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span aria-current="page">@pyric/ui/firestore/hooks</span> </li> </ol> </nav> <header class="api-reference-header"> <p class="api-reference-kicker">API reference</p> <h1><code>@pyric/ui/firestore/hooks</code></h1> <p class="api-reference-meta"> 33 published symbols from <code>@pyric/ui</code> </p> <p class="api-reference-source">
1
+ <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>API reference: @pyric/ui/firestore/hooks · Pyric Studio</title><meta name="description" content="Published declarations for @pyric/ui/firestore/hooks."><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet"><link rel="stylesheet" href="/__pyric/ui/_astro/_slug_.CXh9yTP1.css">
2
+ <link rel="stylesheet" href="/__pyric/ui/_astro/_slug_.DUci-duz.css"></head> <body> <header class="studio__bar"> <div class="studio__bar-inner"> <a class="studio__brand" href="/__pyric/ui/" aria-label="Pyric Studio">Pyric</a> <nav class="studio__nav" aria-label="Studio tabs"> <a class="studio__nav-tab" href="/__pyric/ui/"> Home </a><a class="studio__nav-tab" href="/__pyric/ui/firestore"> Firestore </a><a class="studio__nav-tab" href="/__pyric/ui/auth"> Auth </a><a class="studio__nav-tab" href="/__pyric/ui/rtdb"> RTDB </a><a class="studio__nav-tab" href="/__pyric/ui/storage"> Storage </a><a class="studio__nav-tab" href="/__pyric/ui/traffic"> Traffic </a><a class="studio__nav-tab" href="/__pyric/ui/settings"> Settings </a><a class="studio__nav-tab" href="/__pyric/ui/docs" aria-current="page"> Docs </a> </nav> </div> </header> <div class="docs-shell"> <details class="docs-nav-drawer"> <summary>Navigate</summary> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <script type="module">let i=null;function d(t){return i||(i=fetch(t).then(e=>e.json())),i}function l(t,e){return t.title.toLowerCase().includes(e)||t.excerpt.toLowerCase().includes(e)?!0:t.headings.some(r=>r.text.toLowerCase().includes(e))}function u(t,e,r){if(e.innerHTML="",t.length===0){e.hidden=!1;{const n=document.createElement("li");n.className="docs-search-empty",n.textContent="No matches",e.appendChild(n)}return}e.hidden=!1;for(const n of t.slice(0,8)){const s=document.createElement("li"),c=document.createElement("a");c.href=n.path;const o=document.createElement("span");o.className="docs-search-result-title",o.textContent=n.title;const a=document.createElement("span");a.className="docs-search-result-meta",a.textContent=[n.group,n.section].filter(Boolean).join(" / "),c.append(o,a),s.appendChild(c),e.appendChild(s)}}document.querySelectorAll(".docs-search").forEach(t=>{const e=t.dataset.indexUrl,r=t.querySelector(".docs-search-input"),n=t.querySelector(".docs-search-results");r.addEventListener("input",async()=>{const s=r.value.trim().toLowerCase();if(!s){n.hidden=!0,n.innerHTML="";return}const{pages:c}=await d(e);r.value.trim().toLowerCase()===s&&u(c.filter(o=>l(o,s)),n)}),r.addEventListener("focus",()=>{d(e),n.childElementCount>0&&(n.hidden=!1)}),r.addEventListener("keydown",s=>{s.key==="Escape"&&(r.value="",n.hidden=!0,n.innerHTML="",r.blur())}),r.addEventListener("blur",()=>{window.setTimeout(()=>{n.hidden=!0},150)})});document.addEventListener("keydown",t=>{if(!(t.metaKey||t.ctrlKey)||t.key.toLowerCase()!=="k")return;const e=[...document.querySelectorAll(".docs-search-input")].find(r=>r.offsetParent!==null);e&&(t.preventDefault(),e.focus(),e.select())});</script> <a class="docs-nav-toplink" href="/__pyric/ui/docs/overview/"> Overview </a><details class="docs-nav-group"> <summary>Get started</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/get-started/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/get-started/how-the-swap-works/"> How the swap works </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Build</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/build/authentication/"> Authentication </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-firestore/"> Cloud Firestore </a> </li><li> <a href="/__pyric/ui/docs/build/realtime-database/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-storage/"> Cloud Storage </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-messaging/"> Cloud Messaging </a> </li><li> <a href="/__pyric/ui/docs/build/ai-logic/"> AI Logic </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Secure &amp; debug</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/secure/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/secure/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/secure/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/secure/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/secure/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/secure/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/secure/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/secure/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Observe &amp; shape</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/observe/see-whats-happening/"> Traffic &amp; rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/observe/shape-your-data/"> Seed, snapshot, replay </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Ship &amp; test</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/ship/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Work with an agent</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/agent/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/agent/work-with-an-agent/"> Use the MCP tools </a> </li><li> <a href="/__pyric/ui/docs/agent/watch-and-review/"> Watch in Pyric Studio </a> </li> </ul> </div> </div> </details><a class="docs-nav-toplink" href="/__pyric/ui/docs/trust/versioning-and-compatibility/"> Trust </a><details class="docs-nav-group"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/conformance-scores/"> Public API coverage </a> </li><li> <a href="/__pyric/ui/docs/trust/how-we-know-it-matches-firebase/"> How we know it matches Firebase </a> </li><li> <a href="/__pyric/ui/docs/app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/functions-rtdb-compat/"> Functions · RTDB </a> </li><li> <a href="/__pyric/ui/docs/rules-compat/"> Rules </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group" open> <summary>Reference</summary> <div class="docs-nav-group-body docs-nav-group-body--reference"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/api-reference/"> API reference </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-app-reference-api/"> pyric/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-reference-api/"> pyric/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-reference-api/"> pyric/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-reference-api/"> pyric/ai </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-scripting-reference-api/"> pyric/ai/scripting </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-reference-api/"> pyric/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-reference-api/"> pyric/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-reference-api/"> pyric/messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-sw-reference-api/"> pyric/messaging/sw </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-reference-api/"> pyric/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-values-reference-api/"> pyric/firestore-values </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-reference-api/"> pyric/sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-firestore-reference-api/"> pyric/sandbox/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-database-reference-api/"> pyric/sandbox/database </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric-admin</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-admin-app-reference-api/"> pyric-admin/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore-reference-api/"> pyric-admin/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth-reference-api/"> pyric-admin/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database-reference-api/"> pyric-admin/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage-reference-api/"> pyric-admin/storage </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">create-pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/create-pyric-reference-api/"> create-pyric </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/cli</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-credentials-node-reference-api/"> @pyric/cli/credentials/node </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-verify-reference-api/"> @pyric/cli/verify </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-reference-api/"> @pyric/cli/conformance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-browser-reference-api/"> @pyric/cli/conformance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-docs-reference-api/"> @pyric/cli/conformance/docs </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-reference-api/"> @pyric/cli/assurance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-browser-reference-api/"> @pyric/cli/assurance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-reference-api/"> @pyric/cli/bridge </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-client-reference-api/"> @pyric/cli/bridge/client </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-discover-reference-api/"> @pyric/cli/discover </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-vite-reference-api/"> @pyric/cli/vite </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-serve-worker-reference-api/"> @pyric/cli/serve/worker </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-remote-reference-api/"> @pyric/cli/remote </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-register-reference-api/"> @pyric/cli/register </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/ui</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-ui-auth-reference-api/"> @pyric/ui/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-auth-hooks-reference-api/"> @pyric/ui/auth/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-primitives-reference-api/"> @pyric/ui/primitives </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-reference-api/"> @pyric/ui/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-hooks-reference-api/" aria-current="page"> @pyric/ui/firestore/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rtdb-reference-api/"> @pyric/ui/rtdb </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-reference-api/"> @pyric/ui/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-hooks-reference-api/"> @pyric/ui/storage/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-reference-api/"> @pyric/ui/traffic </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-hooks-reference-api/"> @pyric/ui/traffic/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-reference-api/"> @pyric/ui/events </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-hooks-reference-api/"> @pyric/ui/events/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-agents-reference-api/"> @pyric/ui/agents </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-reference-api/"> @pyric/ui/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-hooks-reference-api/"> @pyric/ui/rules/hooks </a> </li> </ul> </div> </div> </details> </nav> </details> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <a class="docs-nav-toplink" href="/__pyric/ui/docs/overview/" id="nav-group-overview"> Overview </a><details class="docs-nav-group" id="nav-group-get-started"> <summary>Get started</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/get-started/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/get-started/how-the-swap-works/"> How the swap works </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-build"> <summary>Build</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/build/authentication/"> Authentication </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-firestore/"> Cloud Firestore </a> </li><li> <a href="/__pyric/ui/docs/build/realtime-database/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-storage/"> Cloud Storage </a> </li><li> <a href="/__pyric/ui/docs/build/cloud-messaging/"> Cloud Messaging </a> </li><li> <a href="/__pyric/ui/docs/build/ai-logic/"> AI Logic </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-secure-debug"> <summary>Secure &amp; debug</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/secure/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/secure/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/secure/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/secure/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/secure/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/secure/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/secure/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/secure/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-observe-shape"> <summary>Observe &amp; shape</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/observe/see-whats-happening/"> Traffic &amp; rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/observe/shape-your-data/"> Seed, snapshot, replay </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-ship-test"> <summary>Ship &amp; test</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/ship/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-work-with-an-agent"> <summary>Work with an agent</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/agent/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/agent/work-with-an-agent/"> Use the MCP tools </a> </li><li> <a href="/__pyric/ui/docs/agent/watch-and-review/"> Watch in Pyric Studio </a> </li> </ul> </div> </div> </details><a class="docs-nav-toplink" href="/__pyric/ui/docs/trust/versioning-and-compatibility/" id="nav-group-trust"> Trust </a><details class="docs-nav-group" id="nav-group-conformance"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/conformance-scores/"> Public API coverage </a> </li><li> <a href="/__pyric/ui/docs/trust/how-we-know-it-matches-firebase/"> How we know it matches Firebase </a> </li><li> <a href="/__pyric/ui/docs/app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/functions-rtdb-compat/"> Functions · RTDB </a> </li><li> <a href="/__pyric/ui/docs/rules-compat/"> Rules </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group" id="nav-group-reference" open> <summary>Reference</summary> <div class="docs-nav-group-body docs-nav-group-body--reference"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/api-reference/"> API reference </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-app-reference-api/"> pyric/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-reference-api/"> pyric/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-reference-api/"> pyric/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-reference-api/"> pyric/ai </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-scripting-reference-api/"> pyric/ai/scripting </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-reference-api/"> pyric/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-reference-api/"> pyric/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-reference-api/"> pyric/messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-sw-reference-api/"> pyric/messaging/sw </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-reference-api/"> pyric/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-values-reference-api/"> pyric/firestore-values </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-reference-api/"> pyric/sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-firestore-reference-api/"> pyric/sandbox/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox-database-reference-api/"> pyric/sandbox/database </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">pyric-admin</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-admin-app-reference-api/"> pyric-admin/app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore-reference-api/"> pyric-admin/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth-reference-api/"> pyric-admin/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database-reference-api/"> pyric-admin/database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage-reference-api/"> pyric-admin/storage </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">create-pyric</h2> <ul> <li> <a href="/__pyric/ui/docs/create-pyric-reference-api/"> create-pyric </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/cli</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-credentials-node-reference-api/"> @pyric/cli/credentials/node </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-verify-reference-api/"> @pyric/cli/verify </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-reference-api/"> @pyric/cli/conformance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-browser-reference-api/"> @pyric/cli/conformance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-conformance-docs-reference-api/"> @pyric/cli/conformance/docs </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-reference-api/"> @pyric/cli/assurance </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-assurance-browser-reference-api/"> @pyric/cli/assurance/browser </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-reference-api/"> @pyric/cli/bridge </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-bridge-client-reference-api/"> @pyric/cli/bridge/client </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-discover-reference-api/"> @pyric/cli/discover </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-vite-reference-api/"> @pyric/cli/vite </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-serve-worker-reference-api/"> @pyric/cli/serve/worker </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-remote-reference-api/"> @pyric/cli/remote </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-register-reference-api/"> @pyric/cli/register </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading">@pyric/ui</h2> <ul> <li> <a href="/__pyric/ui/docs/pyric-ui-auth-reference-api/"> @pyric/ui/auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-auth-hooks-reference-api/"> @pyric/ui/auth/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-primitives-reference-api/"> @pyric/ui/primitives </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-reference-api/"> @pyric/ui/firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-firestore-hooks-reference-api/" aria-current="page"> @pyric/ui/firestore/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rtdb-reference-api/"> @pyric/ui/rtdb </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-reference-api/"> @pyric/ui/storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-storage-hooks-reference-api/"> @pyric/ui/storage/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-reference-api/"> @pyric/ui/traffic </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-traffic-hooks-reference-api/"> @pyric/ui/traffic/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-reference-api/"> @pyric/ui/events </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-events-hooks-reference-api/"> @pyric/ui/events/hooks </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-agents-reference-api/"> @pyric/ui/agents </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-reference-api/"> @pyric/ui/rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-ui-rules-hooks-reference-api/"> @pyric/ui/rules/hooks </a> </li> </ul> </div> </div> </details> </nav> <main class="doc-main"> <nav class="docs-breadcrumbs" aria-label="Breadcrumb"> <ol> <li> <a href="/__pyric/ui/docs/api-reference/">API reference</a> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span>@pyric/ui</span> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span aria-current="page">@pyric/ui/firestore/hooks</span> </li> </ol> </nav> <header class="api-reference-header"> <p class="api-reference-kicker">API reference</p> <h1><code>@pyric/ui/firestore/hooks</code></h1> <p class="api-reference-meta"> 33 published symbols from <code>@pyric/ui</code> </p> <p class="api-reference-source">
2
3
  Generated from the TypeScript declarations shipped at this import path.
3
- </p> </header> <article class="prose api-reference-body"> <!-- Generated from published package declarations via TypeDoc. Do not edit by hand; run bun run docs:api:generate. -->
4
- <h2 id="interfaces">Interfaces</h2>
4
+ </p> </header> <article class="prose api-reference-body"> <!-- Generated from published package declarations via TypeDoc. Rendered by the api-reference content loader. -->
5
+ <h2 id="references">References</h2>
6
+ <p><a id="browselocation"></a></p>
7
+ <h3 id="browselocation">BrowseLocation</h3>
8
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#browselocation-1">BrowseLocation</a></p>
9
+ <hr>
10
+ <p><a id="listsubcollections"></a></p>
11
+ <h3 id="listsubcollections">ListSubcollections</h3>
12
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#listsubcollections-2">ListSubcollections</a></p>
13
+ <hr>
14
+ <p><a id="multi_value_ops"></a></p>
15
+ <h3 id="multi_value_ops">MULTI_VALUE_OPS</h3>
16
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#multi_value_ops">MULTI_VALUE_OPS</a></p>
17
+ <hr>
18
+ <p><a id="query_ops"></a></p>
19
+ <h3 id="query_ops">QUERY_OPS</h3>
20
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#query_ops">QUERY_OPS</a></p>
21
+ <hr>
5
22
  <p><a id="querybuilderactions"></a></p>
6
23
  <h3 id="querybuilderactions">QueryBuilderActions</h3>
7
- <h4 id="properties">Properties</h4>
8
- <div class="table-scroll">
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
41
-
42
-
43
-
44
-
45
-
46
-
47
-
48
-
49
-
50
-
51
-
52
-
53
- <table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="addcondition"></a> <code>addCondition</code></td><td align="left">(<code>c?</code>: <code>Partial</code>&#x3C;<code>Omit</code>&#x3C;<a href="#querycondition"><code>QueryCondition</code></a>, <code>"id"</code>>>) => <code>void</code></td><td align="left">-</td></tr><tr><td align="left"><a id="buildquery"></a> <code>buildQuery</code></td><td align="left">(<code>base</code>: <code>any</code>) => <code>Query</code></td><td align="left">Compose the state into a Firestore <code>Query</code>. Returns the base collection when there are no conditions / orderBy / limit. Conditions with empty <code>field</code> are skipped — the builder UI lets users add a row before they’ve filled it in.</td></tr><tr><td align="left"><a id="removecondition"></a> <code>removeCondition</code></td><td align="left">(<code>id</code>: <code>string</code>) => <code>void</code></td><td align="left">-</td></tr><tr><td align="left"><a id="reset"></a> <code>reset</code></td><td align="left">() => <code>void</code></td><td align="left">-</td></tr><tr><td align="left"><a id="setlimit"></a> <code>setLimit</code></td><td align="left">(<code>limit?</code>: <code>number</code>) => <code>void</code></td><td align="left">-</td></tr><tr><td align="left"><a id="setorderby"></a> <code>setOrderBy</code></td><td align="left">(<code>orderBy?</code>: { <code>direction</code>: <code>OrderDirection</code>; <code>field</code>: <code>string</code>; }) => <code>void</code></td><td align="left">-</td></tr><tr><td align="left"><a id="updatecondition"></a> <code>updateCondition</code></td><td align="left">(<code>id</code>: <code>string</code>, <code>patch</code>: <code>Partial</code>&#x3C;<code>Omit</code>&#x3C;<a href="#querycondition"><code>QueryCondition</code></a>, <code>"id"</code>>>) => <code>void</code></td><td align="left">-</td></tr></tbody></table></div>
24
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#querybuilderactions">QueryBuilderActions</a></p>
54
25
  <hr>
55
26
  <p><a id="querybuilderstate"></a></p>
56
27
  <h3 id="querybuilderstate">QueryBuilderState</h3>
57
- <h4 id="properties-1">Properties</h4>
58
- <div class="table-scroll">
59
-
60
-
61
-
62
-
63
-
64
-
65
-
66
-
67
-
68
-
69
-
70
-
71
-
72
-
73
-
74
-
75
-
76
-
77
-
78
-
79
-
80
-
81
-
82
-
83
-
84
-
85
-
86
-
87
- <table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="conditions"></a> <code>conditions</code></td><td align="left"><a href="#querycondition"><code>QueryCondition</code></a>[]</td></tr><tr><td align="left"><a id="limit"></a> <code>limit?</code></td><td align="left"><code>number</code></td></tr><tr><td align="left"><a id="orderby"></a> <code>orderBy?</code></td><td align="left">{ <code>direction</code>: <code>OrderDirection</code>; <code>field</code>: <code>string</code>; }</td></tr><tr><td align="left"><code>orderBy.direction</code></td><td align="left"><code>OrderDirection</code></td></tr><tr><td align="left"><code>orderBy.field</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
28
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#querybuilderstate">QueryBuilderState</a></p>
88
29
  <hr>
89
30
  <p><a id="querycondition"></a></p>
90
31
  <h3 id="querycondition">QueryCondition</h3>
91
- <h4 id="properties-2">Properties</h4>
92
- <div class="table-scroll">
93
-
94
-
95
-
96
-
97
-
98
-
99
-
100
-
101
-
102
-
103
-
104
-
105
-
106
-
107
-
108
-
109
-
110
-
111
-
112
-
113
-
114
-
115
-
116
-
117
- <table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="field"></a> <code>field</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="id"></a> <code>id</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="op"></a> <code>op</code></td><td align="left"><code>WhereFilterOp</code></td></tr><tr><td align="left"><a id="value"></a> <code>value</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
32
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#querycondition">QueryCondition</a></p>
33
+ <hr>
34
+ <p><a id="queryop"></a></p>
35
+ <h3 id="queryop">QueryOp</h3>
36
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#queryop">QueryOp</a></p>
118
37
  <hr>
119
38
  <p><a id="recursivedeleteimpl"></a></p>
120
39
  <h3 id="recursivedeleteimpl">RecursiveDeleteImpl</h3>
121
- <p>Implementation injected by the consumer. The library doesn’t ship
122
- one — sandbox-backed apps usually walk <code>pyric/sandbox</code>’s in-process
123
- tree; production apps usually call a Cloud Function. Either way,
124
- <code>start</code> returns an async iterator emitting progress.</p>
125
- <h4 id="properties-3">Properties</h4>
126
- <div class="table-scroll">
127
-
128
-
129
-
130
-
131
-
132
-
133
-
134
-
135
-
136
-
137
-
138
-
139
- <table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="start"></a> <code>start</code></td><td align="left">(<code>target</code>: <code>any</code>) => <code>AsyncIterableIterator</code>&#x3C;<a href="#recursivedeleteprogress"><code>RecursiveDeleteProgress</code></a>></td></tr></tbody></table></div>
40
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#recursivedeleteimpl">RecursiveDeleteImpl</a></p>
140
41
  <hr>
141
42
  <p><a id="recursivedeleteprogress"></a></p>
142
43
  <h3 id="recursivedeleteprogress">RecursiveDeleteProgress</h3>
143
- <h4 id="properties-4">Properties</h4>
144
- <div class="table-scroll">
145
-
146
-
147
-
148
-
149
-
150
-
151
-
152
-
153
-
154
-
155
-
156
-
157
-
158
-
159
-
160
-
161
-
162
-
163
-
164
- <table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="deletedcount"></a> <code>deletedCount</code></td><td align="left"><code>number</code></td><td align="left">Total nodes deleted so far.</td></tr><tr><td align="left"><a id="done"></a> <code>done</code></td><td align="left"><code>boolean</code></td><td align="left">True for the final emission.</td></tr></tbody></table></div>
44
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#recursivedeleteprogress">RecursiveDeleteProgress</a></p>
165
45
  <hr>
166
46
  <p><a id="subscriptionstate"></a></p>
167
47
  <h3 id="subscriptionstate">SubscriptionState</h3>
168
- <h4 id="type-parameters">Type Parameters</h4>
169
- <div class="table-scroll">
170
-
171
-
172
-
173
-
174
-
175
-
176
-
177
-
178
-
179
-
180
- <table><thead><tr><th align="left">Type Parameter</th></tr></thead><tbody><tr><td align="left"><code>T</code></td></tr></tbody></table></div>
181
- <h4 id="properties-5">Properties</h4>
182
- <div class="table-scroll">
183
-
184
-
185
-
186
-
187
-
188
-
189
-
190
-
191
-
192
-
193
-
194
-
195
-
196
-
197
-
198
-
199
-
200
-
201
-
202
-
203
- <table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="data"></a> <code>data</code></td><td align="left"><code>T</code></td></tr><tr><td align="left"><a id="error"></a> <code>error</code></td><td align="left"><code>Error</code></td></tr><tr><td align="left"><a id="isloading"></a> <code>isLoading</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
48
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#subscriptionstate">SubscriptionState</a></p>
49
+ <hr>
50
+ <p><a id="usecollectionlist"></a></p>
51
+ <h3 id="usecollectionlist">useCollectionList</h3>
52
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#usecollectionlist">useCollectionList</a></p>
204
53
  <hr>
205
54
  <p><a id="usecollectionlistoptions"></a></p>
206
55
  <h3 id="usecollectionlistoptions">UseCollectionListOptions</h3>
207
- <h4 id="properties-6">Properties</h4>
208
- <div class="table-scroll">
209
-
210
-
211
-
212
-
213
-
214
-
215
-
216
-
217
-
218
-
219
-
220
-
221
-
222
-
223
-
224
-
225
-
226
-
227
-
228
-
229
-
230
-
231
-
232
-
233
- <table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="firestore"></a> <code>firestore</code></td><td align="left"><code>Firestore</code></td><td align="left">-</td></tr><tr><td align="left"><a id="listcollections"></a> <code>listCollections</code></td><td align="left">(<code>firestore</code>: <code>Firestore</code>, <code>parent</code>: <code>any</code>) => <code>Promise</code>&#x3C;<code>CollectionReference</code>[]></td><td align="left">Injected collection-listing function. The library doesn’t ship a default — the modular Web SDK doesn’t expose <code>listCollections</code> on the client. Sandbox-backed apps usually wire <code>pyric/sandbox</code>’s in-process listing; production apps either pass a known list (e.g. from a schema) or call a server proxy.</td></tr><tr><td align="left"><a id="parent"></a> <code>parent?</code></td><td align="left"><code>any</code></td><td align="left">Parent document, or <code>null</code>/<code>undefined</code> for root collections.</td></tr></tbody></table></div>
56
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#usecollectionlistoptions">UseCollectionListOptions</a></p>
234
57
  <hr>
235
58
  <p><a id="usecollectionlistresult"></a></p>
236
59
  <h3 id="usecollectionlistresult">UseCollectionListResult</h3>
237
- <h4 id="properties-7">Properties</h4>
238
- <div class="table-scroll">
239
-
240
-
241
-
242
-
243
-
244
-
245
-
246
-
247
-
248
-
249
-
250
-
251
-
252
-
253
-
254
-
255
-
256
-
257
-
258
-
259
-
260
-
261
-
262
-
263
-
264
-
265
-
266
-
267
-
268
-
269
-
270
-
271
-
272
-
273
- <table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="collections"></a> <code>collections</code></td><td align="left"><code>CollectionReference</code>[]</td><td align="left">-</td></tr><tr><td align="left"><a id="createcollection"></a> <code>createCollection</code></td><td align="left">(<code>collectionId</code>: <code>string</code>, <code>firstDoc</code>: { <code>data</code>: <code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>>; <code>id</code>: <code>string</code>; }) => <code>Promise</code>&#x3C;<code>DocumentReference</code>></td><td align="left">Create a new collection by writing its first document. Firestore collections don’t exist independently of their documents — <code>setDoc</code> on the first child path materializes the collection.</td></tr><tr><td align="left"><a id="error-1"></a> <code>error</code></td><td align="left"><code>Error</code></td><td align="left">-</td></tr><tr><td align="left"><a id="isloading-1"></a> <code>isLoading</code></td><td align="left"><code>boolean</code></td><td align="left">-</td></tr><tr><td align="left"><a id="refresh"></a> <code>refresh</code></td><td align="left">() => <code>void</code></td><td align="left">Re-run the listing function.</td></tr></tbody></table></div>
60
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#usecollectionlistresult">UseCollectionListResult</a></p>
61
+ <hr>
62
+ <p><a id="usedocumenteditor"></a></p>
63
+ <h3 id="usedocumenteditor">useDocumentEditor</h3>
64
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#usedocumenteditor">useDocumentEditor</a></p>
274
65
  <hr>
275
66
  <p><a id="usedocumenteditoroptions"></a></p>
276
67
  <h3 id="usedocumenteditoroptions">UseDocumentEditorOptions</h3>
277
- <h4 id="properties-8">Properties</h4>
278
- <div class="table-scroll">
279
-
280
-
281
-
282
-
283
-
284
-
285
-
286
-
287
-
288
-
289
-
290
-
291
-
292
-
293
- <table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="initial"></a> <code>initial?</code></td><td align="left"><code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>></td><td align="left">Initial document data — the same shape a <code>DocumentSnapshot.data()</code> call returns.</td></tr></tbody></table></div>
68
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#usedocumenteditoroptions">UseDocumentEditorOptions</a></p>
294
69
  <hr>
295
70
  <p><a id="usedocumenteditorresult"></a></p>
296
71
  <h3 id="usedocumenteditorresult">UseDocumentEditorResult</h3>
297
- <h4 id="extends">Extends</h4>
298
- <ul>
299
- <li><code>DocumentEditorState</code></li>
300
- </ul>
301
- <h4 id="properties-9">Properties</h4>
302
- <div class="table-scroll">
303
-
304
-
305
-
306
-
307
-
308
-
309
-
310
-
311
-
312
-
313
-
314
-
315
-
316
-
317
-
318
-
319
-
320
-
321
-
322
-
323
-
324
-
325
-
326
-
327
-
328
-
329
-
330
-
331
-
332
-
333
-
334
-
335
-
336
-
337
-
338
-
339
-
340
-
341
-
342
-
343
-
344
-
345
-
346
-
347
-
348
-
349
-
350
-
351
-
352
-
353
-
354
-
355
-
356
-
357
-
358
-
359
-
360
-
361
-
362
-
363
-
364
-
365
-
366
-
367
-
368
-
369
-
370
-
371
-
372
-
373
-
374
-
375
-
376
-
377
-
378
-
379
-
380
-
381
-
382
-
383
-
384
-
385
-
386
-
387
-
388
-
389
-
390
-
391
-
392
-
393
-
394
-
395
-
396
-
397
- <table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="addarrayentry"></a> <code>addArrayEntry</code></td><td align="left">(<code>parentId</code>: <code>string</code>, <code>childType</code>: <code>FieldType</code>) => <code>void</code></td><td align="left">Append a child to an array. Nested arrays are silently rejected by the reducer (Firestore disallows them).</td></tr><tr><td align="left"><a id="addmapentry"></a> <code>addMapEntry</code></td><td align="left">(<code>parentId</code>: <code>string</code>, <code>key</code>: <code>string</code>, <code>childType</code>: <code>FieldType</code>) => <code>void</code></td><td align="left">Append a child to a map.</td></tr><tr><td align="left"><a id="dispatch"></a> <code>dispatch</code></td><td align="left">(<code>action</code>: <code>DocumentEditorAction</code>) => <code>void</code></td><td align="left">Raw dispatch — drops to the reducer-action surface. Prefer the named helpers below.</td></tr><tr><td align="left"><a id="errorcount"></a> <code>errorCount</code></td><td align="left"><code>number</code></td><td align="left">Count of nodes with an active <code>error</code>. Derived after every action; the reducer keeps it in state to avoid a tree walk on every render.</td></tr><tr><td align="left"><a id="initial-1"></a> <code>initial</code></td><td align="left"><code>EditorTree</code></td><td align="left">Frozen copy of the tree at construction. <code>reset</code> restores from here; <code>isDirty</code> is computed by comparing serializations.</td></tr><tr><td align="left"><a id="isdirty"></a> <code>isDirty</code></td><td align="left"><code>boolean</code></td><td align="left"><code>true</code> once any modifying action has fired since the last <code>reset</code>. Cleared by <code>reset</code>. Does NOT clear when the user manually re-enters the original values — checking that would require a full serialization comparison on every dispatch.</td></tr><tr><td align="left"><a id="isvalid"></a> <code>isValid</code></td><td align="left"><code>boolean</code></td><td align="left">Convenience: <code>errorCount === 0</code>.</td></tr><tr><td align="left"><a id="remove"></a> <code>remove</code></td><td align="left">(<code>nodeId</code>: <code>string</code>) => <code>void</code></td><td align="left">Remove a node (and all its descendants). Removing the root is a no-op.</td></tr><tr><td align="left"><a id="replacedata"></a> <code>replaceData</code></td><td align="left">(<code>data</code>: <code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>>) => <code>void</code></td><td align="left">Replace the editor with a newly delivered snapshot and adopt it as the clean baseline. Intended for live document viewers.</td></tr><tr><td align="left"><a id="reset-1"></a> <code>reset</code></td><td align="left">() => <code>void</code></td><td align="left">Restore the tree to its initial state. Clears <code>isDirty</code>.</td></tr><tr><td align="left"><a id="setkey"></a> <code>setKey</code></td><td align="left">(<code>nodeId</code>: <code>string</code>, <code>key</code>: <code>string</code>) => <code>void</code></td><td align="left">Set a map-child’s key.</td></tr><tr><td align="left"><a id="settype"></a> <code>setType</code></td><td align="left">(<code>nodeId</code>: <code>string</code>, <code>newType</code>: <code>FieldType</code>) => <code>void</code></td><td align="left">Switch a node’s type. Map/array nodes drop their children.</td></tr><tr><td align="left"><a id="setvalue"></a> <code>setValue</code></td><td align="left">(<code>nodeId</code>: <code>string</code>, <code>value</code>: <code>unknown</code>) => <code>void</code></td><td align="left">Update a leaf value.</td></tr><tr><td align="left"><a id="todata"></a> <code>toData</code></td><td align="left">() => <code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>></td><td align="left">Serialize the tree back to a Firestore-shaped object suitable for <code>setDoc</code> / <code>updateDoc</code>.</td></tr><tr><td align="left"><a id="touch"></a> <code>touch</code></td><td align="left">(<code>nodeId</code>: <code>string</code>) => <code>void</code></td><td align="left">Mark one node touched (dispatch on blur). Gates error display — a freshly-added row stays quiet until the user leaves it.</td></tr><tr><td align="left"><a id="touchall"></a> <code>touchAll</code></td><td align="left">() => <code>void</code></td><td align="left">Mark every node touched (dispatch on a submit attempt) so any hidden errors surface at once.</td></tr><tr><td align="left"><a id="tree"></a> <code>tree</code></td><td align="left"><code>EditorTree</code></td><td align="left">-</td></tr></tbody></table></div>
72
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#usedocumenteditorresult">UseDocumentEditorResult</a></p>
73
+ <hr>
74
+ <p><a id="usedocumentlist"></a></p>
75
+ <h3 id="usedocumentlist">useDocumentList</h3>
76
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#usedocumentlist">useDocumentList</a></p>
398
77
  <hr>
399
78
  <p><a id="usedocumentlistoptions"></a></p>
400
79
  <h3 id="usedocumentlistoptions">UseDocumentListOptions</h3>
401
- <h4 id="properties-10">Properties</h4>
402
- <div class="table-scroll">
403
-
404
-
405
-
406
-
407
-
408
-
409
-
410
-
411
-
412
-
413
-
414
-
415
-
416
-
417
-
418
-
419
-
420
-
421
-
422
-
423
-
424
-
425
-
426
-
427
-
428
-
429
-
430
-
431
-
432
- <table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="collection"></a> <code>collection</code></td><td align="left"><code>CollectionReference</code></td><td align="left">-</td></tr><tr><td align="left"><a id="mode"></a> <code>mode?</code></td><td align="left"><code>"paged"</code> | <code>"live"</code></td><td align="left"><code>paged</code> preserves the historical get-based cursor behavior. <code>live</code> keeps the currently requested window under an <code>onSnapshot</code> subscription and grows that window when <code>loadMore</code> is requested. Default <code>paged</code>.</td></tr><tr><td align="left"><a id="pagesize"></a> <code>pageSize?</code></td><td align="left"><code>number</code></td><td align="left">Page size for cursor-based pagination. Default 50.</td></tr><tr><td align="left"><a id="query"></a> <code>query?</code></td><td align="left"><code>Query</code></td><td align="left">Optional filter / sort. If omitted, the raw collection is used.</td></tr></tbody></table></div>
80
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#usedocumentlistoptions">UseDocumentListOptions</a></p>
433
81
  <hr>
434
82
  <p><a id="usedocumentlistresult"></a></p>
435
83
  <h3 id="usedocumentlistresult">UseDocumentListResult</h3>
436
- <h4 id="properties-11">Properties</h4>
437
- <div class="table-scroll">
438
-
439
-
440
-
441
-
442
-
443
-
444
-
445
-
446
-
447
-
448
-
449
-
450
-
451
-
452
-
453
-
454
-
455
-
456
-
457
-
458
-
459
-
460
-
461
-
462
-
463
-
464
-
465
-
466
-
467
-
468
-
469
-
470
-
471
-
472
-
473
-
474
-
475
-
476
-
477
-
478
-
479
-
480
-
481
-
482
-
483
-
484
-
485
-
486
-
487
-
488
-
489
-
490
-
491
-
492
- <table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="createdocument"></a> <code>createDocument</code></td><td align="left">(<code>id</code>: <code>string</code>, <code>data</code>: <code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>>, <code>opts?</code>: { <code>onExisting?</code>: <code>"overwrite"</code> | <code>"fail"</code>; }) => <code>Promise</code>&#x3C;<code>DocumentReference</code>></td><td align="left">Create a document. If <code>id</code> is null, Firestore generates one via <code>addDoc</code>. With <code>onExisting: 'fail'</code> (CREATE semantics, the admin <code>create()</code> analog) an id that already exists rejects with <code>code: 'already-exists'</code> instead of silently overwriting — checked against the BACKEND (a <code>getDoc</code> probe), not any loaded page, so it is honest beyond pagination. Default: ‘overwrite’ (plain <code>setDoc</code>, the historical behavior).</td></tr><tr><td align="left"><a id="deletedocument"></a> <code>deleteDocument</code></td><td align="left">(<code>ref</code>: <code>DocumentReference</code>) => <code>Promise</code>&#x3C;<code>void</code>></td><td align="left">-</td></tr><tr><td align="left"><a id="documents"></a> <code>documents</code></td><td align="left"><code>QueryDocumentSnapshot</code>[]</td><td align="left">-</td></tr><tr><td align="left"><a id="error-2"></a> <code>error</code></td><td align="left"><code>Error</code></td><td align="left">-</td></tr><tr><td align="left"><a id="hasmore"></a> <code>hasMore</code></td><td align="left"><code>boolean</code></td><td align="left">True if there might be another page. The hook tracks this via the last fetch’s length === pageSize.</td></tr><tr><td align="left"><a id="isloading-2"></a> <code>isLoading</code></td><td align="left"><code>boolean</code></td><td align="left">-</td></tr><tr><td align="left"><a id="loadmore"></a> <code>loadMore</code></td><td align="left">() => <code>void</code></td><td align="left">Fetch the next page; live mode grows and re-establishes its window.</td></tr><tr><td align="left"><a id="refresh-1"></a> <code>refresh</code></td><td align="left">() => <code>void</code></td><td align="left">Re-establish the active read/subscription. Useful after the consumer mutates data outside this hook.</td></tr><tr><td align="left"><a id="subscriptiongeneration"></a> <code>subscriptionGeneration</code></td><td align="left"><code>number</code></td><td align="left">Identifies the active live subscription. Consumers that diff result snapshots can include this in their scope so a re-subscription (including load-more) establishes a silent baseline instead of looking like writes.</td></tr></tbody></table></div>
84
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#usedocumentlistresult">UseDocumentListResult</a></p>
85
+ <hr>
86
+ <p><a id="usedocumentsubcollections"></a></p>
87
+ <h3 id="usedocumentsubcollections">useDocumentSubcollections</h3>
88
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#usedocumentsubcollections">useDocumentSubcollections</a></p>
493
89
  <hr>
494
90
  <p><a id="usedocumentsubcollectionsoptions"></a></p>
495
91
  <h3 id="usedocumentsubcollectionsoptions">UseDocumentSubcollectionsOptions</h3>
496
- <h4 id="properties-12">Properties</h4>
497
- <div class="table-scroll">
498
-
499
-
500
-
501
-
502
-
503
-
504
-
505
-
506
-
507
-
508
-
509
-
510
-
511
-
512
-
513
-
514
-
515
-
516
-
517
-
518
-
519
-
520
-
521
-
522
- <table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="documentref"></a> <code>documentRef</code></td><td align="left"><code>any</code></td><td align="left">The document whose subcollections to list. When <code>null</code>/<code>undefined</code> the hook stays idle (empty, not loading) — used when the preview has no ref to drill from.</td></tr><tr><td align="left"><a id="firestore-1"></a> <code>firestore</code></td><td align="left"><code>Firestore</code></td><td align="left">-</td></tr><tr><td align="left"><a id="listsubcollections"></a> <code>listSubcollections</code></td><td align="left"><a href="#listsubcollections-1"><code>ListSubcollections</code></a></td><td align="left">-</td></tr></tbody></table></div>
92
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#usedocumentsubcollectionsoptions">UseDocumentSubcollectionsOptions</a></p>
523
93
  <hr>
524
94
  <p><a id="usedocumentsubcollectionsresult"></a></p>
525
95
  <h3 id="usedocumentsubcollectionsresult">UseDocumentSubcollectionsResult</h3>
526
- <h4 id="properties-13">Properties</h4>
527
- <div class="table-scroll">
528
-
529
-
530
-
531
-
532
-
533
-
534
-
535
-
536
-
537
-
538
-
539
-
540
-
541
-
542
-
543
-
544
-
545
-
546
-
547
-
548
- <table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="error-3"></a> <code>error</code></td><td align="left"><code>Error</code></td></tr><tr><td align="left"><a id="isloading-3"></a> <code>isLoading</code></td><td align="left"><code>boolean</code></td></tr><tr><td align="left"><a id="subcollections"></a> <code>subcollections</code></td><td align="left"><code>CollectionReference</code>[]</td></tr></tbody></table></div>
549
- <hr>
550
- <p><a id="usequerybuilderoptions"></a></p>
551
- <h3 id="usequerybuilderoptions">UseQueryBuilderOptions</h3>
552
- <h4 id="properties-14">Properties</h4>
553
- <div class="table-scroll">
554
-
555
-
556
-
557
-
558
-
559
-
560
-
561
-
562
-
563
-
564
-
565
-
566
-
567
-
568
- <table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="initial-2"></a> <code>initial?</code></td><td align="left"><code>Partial</code>&#x3C;<a href="#querybuilderstate"><code>QueryBuilderState</code></a>></td><td align="left">Pre-populate the builder.</td></tr></tbody></table></div>
569
- <hr>
570
- <p><a id="userecursivedeleteresult"></a></p>
571
- <h3 id="userecursivedeleteresult">UseRecursiveDeleteResult</h3>
572
- <h4 id="properties-15">Properties</h4>
573
- <div class="table-scroll">
574
-
575
-
576
-
577
-
578
-
579
-
580
-
581
-
582
-
583
-
584
-
585
-
586
-
587
-
588
-
589
-
590
-
591
-
592
-
593
-
594
-
595
-
596
-
597
-
598
-
599
-
600
-
601
-
602
-
603
- <table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="delete"></a> <code>delete</code></td><td align="left">(<code>target</code>: <code>any</code>) => <code>Promise</code>&#x3C;<code>void</code>></td><td align="left">Run the delete. Resolves when the iterator signals <code>done</code>.</td></tr><tr><td align="left"><a id="error-4"></a> <code>error</code></td><td align="left"><code>Error</code></td><td align="left">Error thrown by the iterator, if any. Cleared at the start of the next call.</td></tr><tr><td align="left"><a id="isrunning"></a> <code>isRunning</code></td><td align="left"><code>boolean</code></td><td align="left">True while an iteration is in flight.</td></tr><tr><td align="left"><a id="progress"></a> <code>progress</code></td><td align="left"><code>number</code></td><td align="left">Number of nodes deleted in the current/last run.</td></tr></tbody></table></div>
96
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#usedocumentsubcollectionsresult">UseDocumentSubcollectionsResult</a></p>
604
97
  <hr>
605
- <p><a id="usereferencepickeroptions"></a></p>
606
- <h3 id="usereferencepickeroptions">UseReferencePickerOptions</h3>
607
- <h4 id="properties-16">Properties</h4>
608
- <div class="table-scroll">
609
-
610
-
611
-
612
-
613
-
614
-
615
-
616
-
617
-
618
-
619
-
620
-
621
-
622
-
623
-
624
-
625
-
626
-
627
-
628
-
629
-
630
-
631
-
632
-
633
-
634
-
635
-
636
-
637
-
638
- <table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="firestore-2"></a> <code>firestore</code></td><td align="left"><code>Firestore</code></td><td align="left">-</td></tr><tr><td align="left"><a id="initialpath"></a> <code>initialPath?</code></td><td align="left"><code>string</code></td><td align="left">Initial value to pre-populate the text input + parse.</td></tr><tr><td align="left"><a id="listcollections-1"></a> <code>listCollections</code></td><td align="left">(<code>firestore</code>: <code>Firestore</code>, <code>parent</code>: <code>any</code>) => <code>Promise</code>&#x3C;<code>CollectionReference</code>[]></td><td align="left">Lister for subcollections under a parent (or root when <code>parent == null</code>). The library does not ship a default — see <code>useCollectionList</code> for the same rationale (the modular Web SDK can’t enumerate collections client-side).</td></tr><tr><td align="left"><a id="pagesize-1"></a> <code>pageSize?</code></td><td align="left"><code>number</code></td><td align="left">Default page size for the document list when browsing inside a collection. Default 20.</td></tr></tbody></table></div>
98
+ <p><a id="usefirestorecollection"></a></p>
99
+ <h3 id="usefirestorecollection">useFirestoreCollection</h3>
100
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#usefirestorecollection">useFirestoreCollection</a></p>
639
101
  <hr>
640
- <p><a id="usereferencepickerresult"></a></p>
641
- <h3 id="usereferencepickerresult">UseReferencePickerResult</h3>
642
- <h4 id="properties-17">Properties</h4>
643
- <div class="table-scroll">
644
-
645
-
646
-
647
-
648
-
649
-
650
-
651
-
652
-
653
-
654
-
655
-
656
-
657
-
658
-
659
-
660
-
661
-
662
-
663
-
664
-
665
-
666
-
667
-
668
-
669
-
670
-
671
-
672
-
673
-
674
-
675
-
676
-
677
-
678
-
679
-
680
-
681
-
682
-
683
-
684
-
685
-
686
-
687
-
688
-
689
-
690
-
691
-
692
-
693
-
694
-
695
-
696
-
697
-
698
-
699
-
700
-
701
-
702
-
703
-
704
-
705
-
706
-
707
-
708
-
709
-
710
-
711
-
712
-
713
-
714
-
715
-
716
-
717
-
718
-
719
-
720
-
721
-
722
-
723
- <table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="browselocation"></a> <code>browseLocation</code></td><td align="left"><a href="#browselocation-1"><code>BrowseLocation</code></a></td><td align="left">Current browse position in the tree.</td></tr><tr><td align="left"><a id="candrillback"></a> <code>canDrillBack</code></td><td align="left"><code>boolean</code></td><td align="left">Whether <code>drillBack</code> has anywhere to go.</td></tr><tr><td align="left"><a id="clear"></a> <code>clear</code></td><td align="left">() => <code>void</code></td><td align="left">Clear the path input + reset browse to root.</td></tr><tr><td align="left"><a id="collections-1"></a> <code>collections</code></td><td align="left"><code>CollectionReference</code>[]</td><td align="left">Collections available at the current browse level. Populated when <code>browseLocation</code> is <code>root</code> or <code>document</code>.</td></tr><tr><td align="left"><a id="documents-1"></a> <code>documents</code></td><td align="left"><code>QueryDocumentSnapshot</code>[]</td><td align="left">First page of documents in the current collection — populated when <code>browseLocation.kind === 'collection'</code>.</td></tr><tr><td align="left"><a id="drillback"></a> <code>drillBack</code></td><td align="left">() => <code>void</code></td><td align="left">Step back one level. No-op when at root.</td></tr><tr><td align="left"><a id="drillintocollection"></a> <code>drillIntoCollection</code></td><td align="left">(<code>ref</code>: <code>CollectionReference</code>) => <code>void</code></td><td align="left">Drill into a collection — fetches its first page of documents.</td></tr><tr><td align="left"><a id="drillintodocument"></a> <code>drillIntoDocument</code></td><td align="left">(<code>ref</code>: <code>DocumentReference</code>) => <code>void</code></td><td align="left">Drill into a document — fetches its subcollections.</td></tr><tr><td align="left"><a id="error-5"></a> <code>error</code></td><td align="left"><code>string</code></td><td align="left">Parse error, or <code>null</code> when valid.</td></tr><tr><td align="left"><a id="isloading-4"></a> <code>isLoading</code></td><td align="left"><code>boolean</code></td><td align="left">True while a fetch is in flight.</td></tr><tr><td align="left"><a id="pathinput"></a> <code>pathInput</code></td><td align="left"><code>string</code></td><td align="left">Current text input value.</td></tr><tr><td align="left"><a id="pick"></a> <code>pick</code></td><td align="left">(<code>ref</code>: <code>DocumentReference</code>) => <code>void</code></td><td align="left">Commit a chosen reference. Updates <code>pathInput</code> (and therefore the parsed <code>reference</code>).</td></tr><tr><td align="left"><a id="reference"></a> <code>reference</code></td><td align="left"><code>any</code></td><td align="left">Validated <code>DocumentReference</code> parsed from <code>pathInput</code>, or <code>null</code> when the path is empty / invalid.</td></tr><tr><td align="left"><a id="setpathinput"></a> <code>setPathInput</code></td><td align="left">(<code>path</code>: <code>string</code>) => <code>void</code></td><td align="left">Set the text-input value. Parses on every change.</td></tr></tbody></table></div>
724
- <h2 id="type-aliases">Type Aliases</h2>
725
- <p><a id="browselocation-1"></a></p>
726
- <h3 id="browselocation">BrowseLocation</h3>
727
- <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> BrowseLocation</span><span style="color:#56B6C2"> =</span></span>
728
- <span class="line"><span style="color:#ABB2BF"> | {</span></span>
729
- <span class="line"><span style="color:#E06C75"> kind</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"root"</span><span style="color:#ABB2BF">;</span></span>
730
- <span class="line"><span style="color:#ABB2BF">}</span></span>
731
- <span class="line"><span style="color:#ABB2BF"> | {</span></span>
732
- <span class="line"><span style="color:#E06C75"> kind</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"document"</span><span style="color:#ABB2BF">;</span></span>
733
- <span class="line"><span style="color:#E06C75"> ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DocumentReference</span><span style="color:#ABB2BF">;</span></span>
734
- <span class="line"><span style="color:#ABB2BF">}</span></span>
735
- <span class="line"><span style="color:#ABB2BF"> | {</span></span>
736
- <span class="line"><span style="color:#E06C75"> kind</span><span style="color:#ABB2BF">: </span><span style="color:#98C379">"collection"</span><span style="color:#ABB2BF">;</span></span>
737
- <span class="line"><span style="color:#E06C75"> ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">CollectionReference</span><span style="color:#ABB2BF">;</span></span>
738
- <span class="line"><span style="color:#ABB2BF">};</span></span></code></pre>
102
+ <p><a id="usefirestoredoc"></a></p>
103
+ <h3 id="usefirestoredoc">useFirestoreDoc</h3>
104
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#usefirestoredoc">useFirestoreDoc</a></p>
739
105
  <hr>
740
- <p><a id="listsubcollections-1"></a></p>
741
- <h3 id="listsubcollections">ListSubcollections()</h3>
742
- <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> ListSubcollections</span><span style="color:#56B6C2"> =</span><span style="color:#ABB2BF"> (</span><span style="color:#E06C75;font-style:italic">firestore</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Firestore</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">parent</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DocumentReference</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">=></span><span style="color:#E5C07B"> Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">CollectionReference</span><span style="color:#ABB2BF">[]>;</span></span></code></pre>
743
- <p>Lister for a document’s own subcollections. Same injected-lister
744
- shape as <code>useCollectionList</code> / <code>ReferencePicker</code> use — the modular
745
- Web SDK doesn’t expose a native <code>listCollections</code> on the client, so
746
- the caller wires it (sandbox in-process listing, a server proxy, or
747
- a known schema list).</p>
748
- <h4 id="parameters">Parameters</h4>
749
- <div class="table-scroll">
750
-
751
-
752
-
753
-
754
-
755
-
756
-
757
-
758
-
759
-
760
-
761
-
762
-
763
-
764
-
765
-
766
- <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>firestore</code></td><td align="left"><code>Firestore</code></td></tr><tr><td align="left"><code>parent</code></td><td align="left"><code>DocumentReference</code></td></tr></tbody></table></div>
767
- <h4 id="returns">Returns</h4>
768
- <p><code>Promise</code>&#x3C;<code>CollectionReference</code>[]></p>
106
+ <p><a id="usequerybuilder"></a></p>
107
+ <h3 id="usequerybuilder">useQueryBuilder</h3>
108
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#usequerybuilder">useQueryBuilder</a></p>
769
109
  <hr>
770
- <p><a id="queryop"></a></p>
771
- <h3 id="queryop">QueryOp</h3>
772
- <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> QueryOp</span><span style="color:#56B6C2"> =</span><span style="color:#E5C07B"> WhereFilterOp</span><span style="color:#ABB2BF">;</span></span></code></pre>
110
+ <p><a id="usequerybuilderoptions"></a></p>
111
+ <h3 id="usequerybuilderoptions">UseQueryBuilderOptions</h3>
112
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#usequerybuilderoptions">UseQueryBuilderOptions</a></p>
773
113
  <hr>
774
114
  <p><a id="usequerybuilderresult"></a></p>
775
115
  <h3 id="usequerybuilderresult">UseQueryBuilderResult</h3>
776
- <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> UseQueryBuilderResult</span><span style="color:#56B6C2"> =</span><span style="color:#E5C07B"> QueryBuilderState</span><span style="color:#ABB2BF"> &#x26; </span><span style="color:#E5C07B">QueryBuilderActions</span><span style="color:#ABB2BF">;</span></span></code></pre>
777
- <h2 id="variables">Variables</h2>
778
- <p><a id="multi_value_ops"></a></p>
779
- <h3 id="multi_value_ops">MULTI_VALUE_OPS</h3>
780
- <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">const</span><span style="color:#E5C07B"> MULTI_VALUE_OPS</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ReadonlySet</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">QueryOp</span><span style="color:#ABB2BF">>;</span></span></code></pre>
781
- <p>Ops that accept an array of values. The value editor in the
782
- bundled <querybuilder> parses the input as JSON for these.</querybuilder></p>
783
- <hr>
784
- <p><a id="query_ops"></a></p>
785
- <h3 id="query_ops">QUERY_OPS</h3>
786
- <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">const</span><span style="color:#E5C07B"> QUERY_OPS</span><span style="color:#ABB2BF">: </span><span style="color:#C678DD">readonly</span><span style="color:#E5C07B"> QueryOp</span><span style="color:#ABB2BF">[];</span></span></code></pre>
787
- <h2 id="functions">Functions</h2>
788
- <p><a id="usecollectionlist"></a></p>
789
- <h3 id="usecollectionlist">useCollectionList()</h3>
790
- <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> useCollectionList</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">__namedParameters</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">UseCollectionListOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">UseCollectionListResult</span><span style="color:#ABB2BF">;</span></span></code></pre>
791
- <p>Operational read + create for collections under a parent (or root).
792
- Listing is injected because the modular Web SDK doesn’t expose a
793
- native <code>listCollections</code> on the client — see options docs.</p>
794
- <h4 id="parameters-1">Parameters</h4>
795
- <div class="table-scroll">
796
-
797
-
798
-
799
-
800
-
801
-
802
-
803
-
804
-
805
-
806
-
807
-
808
- <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>__namedParameters</code></td><td align="left"><a href="#usecollectionlistoptions"><code>UseCollectionListOptions</code></a></td></tr></tbody></table></div>
809
- <h4 id="returns-1">Returns</h4>
810
- <p><a href="#usecollectionlistresult"><code>UseCollectionListResult</code></a></p>
811
- <hr>
812
- <p><a id="usedocumenteditor"></a></p>
813
- <h3 id="usedocumenteditor">useDocumentEditor()</h3>
814
- <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> useDocumentEditor</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">options</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">UseDocumentEditorOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">UseDocumentEditorResult</span><span style="color:#ABB2BF">;</span></span></code></pre>
815
- <p>Headless document editor. Owns the entire edit state for one
816
- document via a pure reducer. Consumers either render the bundled
817
- <code>&#x3C;DocumentEditor></code> compound component over this hook, or render
818
- their own tree using the returned state.</p>
819
- <p>The hook builds its tree from <code>initial</code> on first mount. Changing
820
- <code>initial</code> later does NOT rebuild the tree; live viewers explicitly call
821
- <code>replaceData()</code> when a newer snapshot should become the clean baseline.
822
- This matches the firebase-tools-ui pattern of treating the editor as a
823
- stateful workspace while still allowing snapshot-driven reconciliation.</p>
824
- <h4 id="parameters-2">Parameters</h4>
825
- <div class="table-scroll">
826
-
827
-
828
-
829
-
830
-
831
-
832
-
833
-
834
-
835
-
836
-
837
-
838
- <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>options?</code></td><td align="left"><a href="#usedocumenteditoroptions"><code>UseDocumentEditorOptions</code></a></td></tr></tbody></table></div>
839
- <h4 id="returns-2">Returns</h4>
840
- <p><a href="#usedocumenteditorresult"><code>UseDocumentEditorResult</code></a></p>
841
- <hr>
842
- <p><a id="usedocumentlist"></a></p>
843
- <h3 id="usedocumentlist">useDocumentList()</h3>
844
- <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> useDocumentList</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">__namedParameters</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">UseDocumentListOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">UseDocumentListResult</span><span style="color:#ABB2BF">;</span></span></code></pre>
845
- <p>Paginated document list with two acquisition strategies. The default
846
- <code>paged</code> mode uses <code>startAfter</code> and accumulates one-shot reads. <code>live</code> keeps
847
- the requested prefix under one <code>onSnapshot</code> listener; loading more grows
848
- that prefix and establishes a new subscription baseline.</p>
849
- <h4 id="parameters-3">Parameters</h4>
850
- <div class="table-scroll">
851
-
852
-
853
-
854
-
855
-
856
-
857
-
858
-
859
-
860
-
861
-
862
-
863
- <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>__namedParameters</code></td><td align="left"><a href="#usedocumentlistoptions"><code>UseDocumentListOptions</code></a></td></tr></tbody></table></div>
864
- <h4 id="returns-3">Returns</h4>
865
- <p><a href="#usedocumentlistresult"><code>UseDocumentListResult</code></a></p>
116
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#usequerybuilderresult">UseQueryBuilderResult</a></p>
866
117
  <hr>
867
- <p><a id="usedocumentsubcollections"></a></p>
868
- <h3 id="usedocumentsubcollections">useDocumentSubcollections()</h3>
869
- <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> useDocumentSubcollections</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">__namedParameters</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">UseDocumentSubcollectionsOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">UseDocumentSubcollectionsResult</span><span style="color:#ABB2BF">;</span></span></code></pre>
870
- <p>Read a single document’s subcollection list. A thin specialization of
871
- the <code>useCollectionList</code> pattern, scoped to one parent document and
872
- read-only (no create — that lives in <code>useCollectionList</code>).</p>
873
- <h4 id="parameters-4">Parameters</h4>
874
- <div class="table-scroll">
875
-
876
-
877
-
878
-
879
-
880
-
881
-
882
-
883
-
884
-
885
-
886
-
887
- <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>__namedParameters</code></td><td align="left"><a href="#usedocumentsubcollectionsoptions"><code>UseDocumentSubcollectionsOptions</code></a></td></tr></tbody></table></div>
888
- <h4 id="returns-4">Returns</h4>
889
- <p><a href="#usedocumentsubcollectionsresult"><code>UseDocumentSubcollectionsResult</code></a></p>
890
- <hr>
891
- <p><a id="usefirestorecollection"></a></p>
892
- <h3 id="usefirestorecollection">useFirestoreCollection()</h3>
893
- <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> useFirestoreCollection</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">query</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">any</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">SubscriptionState</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">QuerySnapshot</span><span style="color:#ABB2BF">>;</span></span></code></pre>
894
- <p>Subscribe to a Firestore query (a <code>Query</code> from <code>pyric/firestore</code>’s
895
- modular surface, including any <code>CollectionReference</code>, which extends
896
- <code>Query</code>). Returns <code>{ data, error, isLoading }</code>.</p>
897
- <p>Null/undefined query short-circuits to idle. Cleanup is automatic
898
- on unmount or query change. <code>Query</code> objects don’t have a stable
899
- structural identity, so the consumer must memoize at the call site
900
- — pass the same instance across renders to avoid re-subscribing.</p>
901
- <h4 id="parameters-5">Parameters</h4>
902
- <div class="table-scroll">
903
-
904
-
905
-
906
-
907
-
908
-
909
-
910
-
911
-
912
-
913
-
914
-
915
- <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>query</code></td><td align="left"><code>any</code></td></tr></tbody></table></div>
916
- <h4 id="returns-5">Returns</h4>
917
- <p><a href="#subscriptionstate"><code>SubscriptionState</code></a>&#x3C;<code>QuerySnapshot</code>></p>
118
+ <p><a id="userecursivedelete"></a></p>
119
+ <h3 id="userecursivedelete">useRecursiveDelete</h3>
120
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#userecursivedelete">useRecursiveDelete</a></p>
918
121
  <hr>
919
- <p><a id="usefirestoredoc"></a></p>
920
- <h3 id="usefirestoredoc">useFirestoreDoc()</h3>
921
- <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> useFirestoreDoc</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">any</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">SubscriptionState</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">DocumentSnapshot</span><span style="color:#ABB2BF">>;</span></span></code></pre>
922
- <p>Subscribe to a single Firestore document. Returns <code>{ data, error, isLoading }</code>. Null/undefined ref short-circuits to an idle state
923
- (<code>data: undefined, error: undefined, isLoading: false</code>) — useful
924
- for conditional rendering before a ref is known.</p>
925
- <p>Cleanup is automatic on unmount or ref change. Memoize the ref at
926
- the call site; this hook’s effect re-runs on identity change.</p>
927
- <h4 id="parameters-6">Parameters</h4>
928
- <div class="table-scroll">
929
-
930
-
931
-
932
-
933
-
934
-
935
-
936
-
937
-
938
-
939
-
940
-
941
- <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ref</code></td><td align="left"><code>any</code></td></tr></tbody></table></div>
942
- <h4 id="returns-6">Returns</h4>
943
- <p><a href="#subscriptionstate"><code>SubscriptionState</code></a>&#x3C;<code>DocumentSnapshot</code>></p>
122
+ <p><a id="userecursivedeleteresult"></a></p>
123
+ <h3 id="userecursivedeleteresult">UseRecursiveDeleteResult</h3>
124
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#userecursivedeleteresult">UseRecursiveDeleteResult</a></p>
944
125
  <hr>
945
- <p><a id="usequerybuilder"></a></p>
946
- <h3 id="usequerybuilder">useQueryBuilder()</h3>
947
- <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> useQueryBuilder</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">options</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">UseQueryBuilderOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">UseQueryBuilderResult</span><span style="color:#ABB2BF">;</span></span></code></pre>
948
- <p>Headless query-builder state machine. Single-level — no nested
949
- <code>and()</code>/<code>or()</code> groups in v1. Consumers compose the state into a
950
- Firestore <code>Query</code> via <code>buildQuery(base)</code> and feed that into
951
- <code>useDocumentList</code> / <code>useFirestoreCollection</code>.</p>
952
- <h4 id="parameters-7">Parameters</h4>
953
- <div class="table-scroll">
954
-
955
-
956
-
957
-
958
-
959
-
960
-
961
-
962
-
963
-
964
-
965
-
966
- <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>options?</code></td><td align="left"><a href="#usequerybuilderoptions"><code>UseQueryBuilderOptions</code></a></td></tr></tbody></table></div>
967
- <h4 id="returns-7">Returns</h4>
968
- <p><a href="#usequerybuilderresult"><code>UseQueryBuilderResult</code></a></p>
126
+ <p><a id="usereferencepicker"></a></p>
127
+ <h3 id="usereferencepicker">useReferencePicker</h3>
128
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#usereferencepicker">useReferencePicker</a></p>
969
129
  <hr>
970
- <p><a id="userecursivedelete"></a></p>
971
- <h3 id="userecursivedelete">useRecursiveDelete()</h3>
972
- <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> useRecursiveDelete</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">impl</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">RecursiveDeleteImpl</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">UseRecursiveDeleteResult</span><span style="color:#ABB2BF">;</span></span></code></pre>
973
- <p>Drive a <a href="#recursivedeleteimpl">RecursiveDeleteImpl</a> from a React component. Tracks
974
- progress + running state so the consumer can render a progress
975
- indicator. Errors are caught and surfaced via the returned state,
976
- not thrown.</p>
977
- <p>Stale-run protection: if the component remounts (or the user
978
- cancels and starts a new run) before a previous iteration
979
- finishes, the older run’s progress updates are dropped via a
980
- generation token.</p>
981
- <h4 id="parameters-8">Parameters</h4>
982
- <div class="table-scroll">
983
-
984
-
985
-
986
-
987
-
988
-
989
-
990
-
991
-
992
-
993
-
994
-
995
- <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>impl</code></td><td align="left"><a href="#recursivedeleteimpl"><code>RecursiveDeleteImpl</code></a></td></tr></tbody></table></div>
996
- <h4 id="returns-8">Returns</h4>
997
- <p><a href="#userecursivedeleteresult"><code>UseRecursiveDeleteResult</code></a></p>
130
+ <p><a id="usereferencepickeroptions"></a></p>
131
+ <h3 id="usereferencepickeroptions">UseReferencePickerOptions</h3>
132
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#usereferencepickeroptions">UseReferencePickerOptions</a></p>
998
133
  <hr>
999
- <p><a id="usereferencepicker"></a></p>
1000
- <h3 id="usereferencepicker">useReferencePicker()</h3>
1001
- <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> useReferencePicker</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">__namedParameters</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">UseReferencePickerOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">UseReferencePickerResult</span><span style="color:#ABB2BF">;</span></span></code></pre>
1002
- <p>Picker state machine. Browses a Firestore tree level-by-level
1003
- (root → collection → document → collection → …), maintains a
1004
- separately-validated text-input path, and commits a chosen
1005
- reference via <code>pick</code>.</p>
1006
- <p>Headless — consumers compose the resulting state into their own
1007
- UI, or use the bundled <code>&#x3C;ReferencePicker></code> component.</p>
1008
- <h4 id="parameters-9">Parameters</h4>
1009
- <div class="table-scroll">
1010
-
1011
-
1012
-
1013
-
1014
-
1015
-
1016
-
1017
-
1018
-
1019
-
1020
-
1021
-
1022
- <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>__namedParameters</code></td><td align="left"><a href="#usereferencepickeroptions"><code>UseReferencePickerOptions</code></a></td></tr></tbody></table></div>
1023
- <h4 id="returns-9">Returns</h4>
1024
- <p><a href="#usereferencepickerresult"><code>UseReferencePickerResult</code></a></p> </article> </main> <aside class="doc-toc api-symbols" aria-label="API symbols"> <h2 class="doc-toc-heading">Symbols</h2> <input class="api-symbol-filter" type="search" placeholder="Filter symbols" aria-label="Filter API symbols" data-api-symbol-filter> <div class="api-symbol-groups" data-api-symbol-groups> <section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#interfaces"> Interfaces </a> <ul> <li data-api-symbol="querybuilderactions"> <a href="#querybuilderactions">QueryBuilderActions</a> </li><li data-api-symbol="querybuilderstate"> <a href="#querybuilderstate">QueryBuilderState</a> </li><li data-api-symbol="querycondition"> <a href="#querycondition">QueryCondition</a> </li><li data-api-symbol="recursivedeleteimpl"> <a href="#recursivedeleteimpl">RecursiveDeleteImpl</a> </li><li data-api-symbol="recursivedeleteprogress"> <a href="#recursivedeleteprogress">RecursiveDeleteProgress</a> </li><li data-api-symbol="subscriptionstate"> <a href="#subscriptionstate">SubscriptionState</a> </li><li data-api-symbol="usecollectionlistoptions"> <a href="#usecollectionlistoptions">UseCollectionListOptions</a> </li><li data-api-symbol="usecollectionlistresult"> <a href="#usecollectionlistresult">UseCollectionListResult</a> </li><li data-api-symbol="usedocumenteditoroptions"> <a href="#usedocumenteditoroptions">UseDocumentEditorOptions</a> </li><li data-api-symbol="usedocumenteditorresult"> <a href="#usedocumenteditorresult">UseDocumentEditorResult</a> </li><li data-api-symbol="usedocumentlistoptions"> <a href="#usedocumentlistoptions">UseDocumentListOptions</a> </li><li data-api-symbol="usedocumentlistresult"> <a href="#usedocumentlistresult">UseDocumentListResult</a> </li><li data-api-symbol="usedocumentsubcollectionsoptions"> <a href="#usedocumentsubcollectionsoptions">UseDocumentSubcollectionsOptions</a> </li><li data-api-symbol="usedocumentsubcollectionsresult"> <a href="#usedocumentsubcollectionsresult">UseDocumentSubcollectionsResult</a> </li><li data-api-symbol="usequerybuilderoptions"> <a href="#usequerybuilderoptions">UseQueryBuilderOptions</a> </li><li data-api-symbol="userecursivedeleteresult"> <a href="#userecursivedeleteresult">UseRecursiveDeleteResult</a> </li><li data-api-symbol="usereferencepickeroptions"> <a href="#usereferencepickeroptions">UseReferencePickerOptions</a> </li><li data-api-symbol="usereferencepickerresult"> <a href="#usereferencepickerresult">UseReferencePickerResult</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#type-aliases"> Type Aliases </a> <ul> <li data-api-symbol="browselocation"> <a href="#browselocation">BrowseLocation</a> </li><li data-api-symbol="listsubcollections()"> <a href="#listsubcollections">ListSubcollections()</a> </li><li data-api-symbol="queryop"> <a href="#queryop">QueryOp</a> </li><li data-api-symbol="usequerybuilderresult"> <a href="#usequerybuilderresult">UseQueryBuilderResult</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#variables"> Variables </a> <ul> <li data-api-symbol="multi_value_ops"> <a href="#multi_value_ops">MULTI_VALUE_OPS</a> </li><li data-api-symbol="query_ops"> <a href="#query_ops">QUERY_OPS</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#functions"> Functions </a> <ul> <li data-api-symbol="usecollectionlist()"> <a href="#usecollectionlist">useCollectionList()</a> </li><li data-api-symbol="usedocumenteditor()"> <a href="#usedocumenteditor">useDocumentEditor()</a> </li><li data-api-symbol="usedocumentlist()"> <a href="#usedocumentlist">useDocumentList()</a> </li><li data-api-symbol="usedocumentsubcollections()"> <a href="#usedocumentsubcollections">useDocumentSubcollections()</a> </li><li data-api-symbol="usefirestorecollection()"> <a href="#usefirestorecollection">useFirestoreCollection()</a> </li><li data-api-symbol="usefirestoredoc()"> <a href="#usefirestoredoc">useFirestoreDoc()</a> </li><li data-api-symbol="usequerybuilder()"> <a href="#usequerybuilder">useQueryBuilder()</a> </li><li data-api-symbol="userecursivedelete()"> <a href="#userecursivedelete">useRecursiveDelete()</a> </li><li data-api-symbol="usereferencepicker()"> <a href="#usereferencepicker">useReferencePicker()</a> </li> </ul> </section> <p class="api-symbol-empty" data-api-symbol-empty hidden>No matching symbols</p> </div> </aside> </div> <script type="module">const a=document.querySelector("[data-api-symbol-filter]"),d=[...document.querySelectorAll("[data-api-symbol-group]")],n=document.querySelector("[data-api-symbol-empty]");a?.addEventListener("input",()=>{const t=a.value.trim().toLowerCase();let o=0;for(const i of d){let e=0;i.querySelectorAll("[data-api-symbol]").forEach(l=>{const r=!t||(l.dataset.apiSymbol??"").includes(t);l.hidden=!r,r&&e++}),i.hidden=e===0,o+=e}n&&(n.hidden=o>0)});</script> <script type="module">const s=new Map;document.querySelectorAll('.doc-toc a[href^="#"]').forEach(t=>s.set(decodeURIComponent(t.hash.slice(1)),t));if(s.size>0){const t=new Set,n=()=>{let o=null;for(const e of s.keys())if(t.has(e)){o=e;break}s.forEach((e,c)=>e.classList.toggle("active",c===o))},r=new IntersectionObserver(o=>{for(const e of o)e.isIntersecting?t.add(e.target.id):t.delete(e.target.id);n()},{rootMargin:"-72px 0px -60% 0px"});s.forEach((o,e)=>{const c=document.getElementById(e);c&&r.observe(c)})}</script> <script type="module">document.querySelector('.studio__nav [aria-current="page"]')?.scrollIntoView({block:"nearest",inline:"center"});</script> </body> </html>
134
+ <p><a id="usereferencepickerresult"></a></p>
135
+ <h3 id="usereferencepickerresult">UseReferencePickerResult</h3>
136
+ <p>Re-exports <a href="/docs/pyric-ui-firestore-reference-api/#usereferencepickerresult">UseReferencePickerResult</a></p> </article> </main> <aside class="doc-toc api-symbols" aria-label="API symbols"> <h2 class="doc-toc-heading">Symbols</h2> <input class="api-symbol-filter" type="search" placeholder="Filter symbols" aria-label="Filter API symbols" data-api-symbol-filter> <div class="api-symbol-groups" data-api-symbol-groups> <section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#references"> References </a> <ul> <li data-api-symbol="browselocation"> <a href="#browselocation">BrowseLocation</a> </li><li data-api-symbol="listsubcollections"> <a href="#listsubcollections">ListSubcollections</a> </li><li data-api-symbol="multi_value_ops"> <a href="#multi_value_ops">MULTI_VALUE_OPS</a> </li><li data-api-symbol="query_ops"> <a href="#query_ops">QUERY_OPS</a> </li><li data-api-symbol="querybuilderactions"> <a href="#querybuilderactions">QueryBuilderActions</a> </li><li data-api-symbol="querybuilderstate"> <a href="#querybuilderstate">QueryBuilderState</a> </li><li data-api-symbol="querycondition"> <a href="#querycondition">QueryCondition</a> </li><li data-api-symbol="queryop"> <a href="#queryop">QueryOp</a> </li><li data-api-symbol="recursivedeleteimpl"> <a href="#recursivedeleteimpl">RecursiveDeleteImpl</a> </li><li data-api-symbol="recursivedeleteprogress"> <a href="#recursivedeleteprogress">RecursiveDeleteProgress</a> </li><li data-api-symbol="subscriptionstate"> <a href="#subscriptionstate">SubscriptionState</a> </li><li data-api-symbol="usecollectionlist"> <a href="#usecollectionlist">useCollectionList</a> </li><li data-api-symbol="usecollectionlistoptions"> <a href="#usecollectionlistoptions">UseCollectionListOptions</a> </li><li data-api-symbol="usecollectionlistresult"> <a href="#usecollectionlistresult">UseCollectionListResult</a> </li><li data-api-symbol="usedocumenteditor"> <a href="#usedocumenteditor">useDocumentEditor</a> </li><li data-api-symbol="usedocumenteditoroptions"> <a href="#usedocumenteditoroptions">UseDocumentEditorOptions</a> </li><li data-api-symbol="usedocumenteditorresult"> <a href="#usedocumenteditorresult">UseDocumentEditorResult</a> </li><li data-api-symbol="usedocumentlist"> <a href="#usedocumentlist">useDocumentList</a> </li><li data-api-symbol="usedocumentlistoptions"> <a href="#usedocumentlistoptions">UseDocumentListOptions</a> </li><li data-api-symbol="usedocumentlistresult"> <a href="#usedocumentlistresult">UseDocumentListResult</a> </li><li data-api-symbol="usedocumentsubcollections"> <a href="#usedocumentsubcollections">useDocumentSubcollections</a> </li><li data-api-symbol="usedocumentsubcollectionsoptions"> <a href="#usedocumentsubcollectionsoptions">UseDocumentSubcollectionsOptions</a> </li><li data-api-symbol="usedocumentsubcollectionsresult"> <a href="#usedocumentsubcollectionsresult">UseDocumentSubcollectionsResult</a> </li><li data-api-symbol="usefirestorecollection"> <a href="#usefirestorecollection">useFirestoreCollection</a> </li><li data-api-symbol="usefirestoredoc"> <a href="#usefirestoredoc">useFirestoreDoc</a> </li><li data-api-symbol="usequerybuilder"> <a href="#usequerybuilder">useQueryBuilder</a> </li><li data-api-symbol="usequerybuilderoptions"> <a href="#usequerybuilderoptions">UseQueryBuilderOptions</a> </li><li data-api-symbol="usequerybuilderresult"> <a href="#usequerybuilderresult">UseQueryBuilderResult</a> </li><li data-api-symbol="userecursivedelete"> <a href="#userecursivedelete">useRecursiveDelete</a> </li><li data-api-symbol="userecursivedeleteresult"> <a href="#userecursivedeleteresult">UseRecursiveDeleteResult</a> </li><li data-api-symbol="usereferencepicker"> <a href="#usereferencepicker">useReferencePicker</a> </li><li data-api-symbol="usereferencepickeroptions"> <a href="#usereferencepickeroptions">UseReferencePickerOptions</a> </li><li data-api-symbol="usereferencepickerresult"> <a href="#usereferencepickerresult">UseReferencePickerResult</a> </li> </ul> </section> <p class="api-symbol-empty" data-api-symbol-empty hidden>No matching symbols</p> </div> </aside> </div> <script type="module">const a=document.querySelector("[data-api-symbol-filter]"),d=[...document.querySelectorAll("[data-api-symbol-group]")],n=document.querySelector("[data-api-symbol-empty]");a?.addEventListener("input",()=>{const t=a.value.trim().toLowerCase();let o=0;for(const i of d){let e=0;i.querySelectorAll("[data-api-symbol]").forEach(l=>{const r=!t||(l.dataset.apiSymbol??"").includes(t);l.hidden=!r,r&&e++}),i.hidden=e===0,o+=e}n&&(n.hidden=o>0)});</script> <script type="module">const s=new Map;document.querySelectorAll('.doc-toc a[href^="#"]').forEach(t=>s.set(decodeURIComponent(t.hash.slice(1)),t));if(s.size>0){const t=new Set,n=()=>{let o=null;for(const e of s.keys())if(t.has(e)){o=e;break}s.forEach((e,c)=>e.classList.toggle("active",c===o))},r=new IntersectionObserver(o=>{for(const e of o)e.isIntersecting?t.add(e.target.id):t.delete(e.target.id);n()},{rootMargin:"-72px 0px -60% 0px"});s.forEach((o,e)=>{const c=document.getElementById(e);c&&r.observe(c)})}</script> <script type="module">document.querySelector('.studio__nav [aria-current="page"]')?.scrollIntoView({block:"nearest",inline:"center"});</script> </body> </html>