@pyric/cli 0.1.0-alpha.13 → 0.1.0-alpha.15

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 (614) hide show
  1. package/dist/assurance/.generated/conformance-verdicts.d.ts +120 -75
  2. package/dist/assurance/.generated/conformance-verdicts.d.ts.map +1 -1
  3. package/dist/assurance/.generated/conformance-verdicts.js +120 -75
  4. package/dist/assurance/.generated/conformance-verdicts.js.map +1 -1
  5. package/dist/cli/serve.d.ts +1 -1
  6. package/dist/cli/serve.d.ts.map +1 -1
  7. package/dist/cli/serve.js +208 -285
  8. package/dist/cli/serve.js.map +1 -1
  9. package/dist/cli/service-command-records/database-rules-generate.d.ts +4 -0
  10. package/dist/cli/service-command-records/database-rules-generate.d.ts.map +1 -0
  11. package/dist/cli/service-command-records/database-rules-generate.js +3 -0
  12. package/dist/cli/service-command-records/database-rules-generate.js.map +1 -0
  13. package/dist/cli/service-command-records/database-rules-lint.d.ts +4 -0
  14. package/dist/cli/service-command-records/database-rules-lint.d.ts.map +1 -0
  15. package/dist/cli/service-command-records/database-rules-lint.js +3 -0
  16. package/dist/cli/service-command-records/database-rules-lint.js.map +1 -0
  17. package/dist/cli/service-command-records/database-rules-simulate.d.ts +4 -0
  18. package/dist/cli/service-command-records/database-rules-simulate.d.ts.map +1 -0
  19. package/dist/cli/service-command-records/database-rules-simulate.js +3 -0
  20. package/dist/cli/service-command-records/database-rules-simulate.js.map +1 -0
  21. package/dist/cli/service-command-records/database-rules-validate.d.ts +4 -0
  22. package/dist/cli/service-command-records/database-rules-validate.d.ts.map +1 -0
  23. package/dist/cli/service-command-records/database-rules-validate.js +3 -0
  24. package/dist/cli/service-command-records/database-rules-validate.js.map +1 -0
  25. package/dist/cli/service-command-records/firestore-indexes-generate.d.ts +4 -0
  26. package/dist/cli/service-command-records/firestore-indexes-generate.d.ts.map +1 -0
  27. package/dist/cli/service-command-records/firestore-indexes-generate.js +3 -0
  28. package/dist/cli/service-command-records/firestore-indexes-generate.js.map +1 -0
  29. package/dist/cli/service-command-records/firestore-rules-lint.d.ts +4 -0
  30. package/dist/cli/service-command-records/firestore-rules-lint.d.ts.map +1 -0
  31. package/dist/cli/service-command-records/firestore-rules-lint.js +3 -0
  32. package/dist/cli/service-command-records/firestore-rules-lint.js.map +1 -0
  33. package/dist/cli/service-command-records/firestore-rules-resolve.d.ts +4 -0
  34. package/dist/cli/service-command-records/firestore-rules-resolve.d.ts.map +1 -0
  35. package/dist/cli/service-command-records/firestore-rules-resolve.js +3 -0
  36. package/dist/cli/service-command-records/firestore-rules-resolve.js.map +1 -0
  37. package/dist/cli/service-command-records/firestore-rules-simulate.d.ts +4 -0
  38. package/dist/cli/service-command-records/firestore-rules-simulate.d.ts.map +1 -0
  39. package/dist/cli/service-command-records/firestore-rules-simulate.js +3 -0
  40. package/dist/cli/service-command-records/firestore-rules-simulate.js.map +1 -0
  41. package/dist/cli/service-command-records/firestore-rules-validate.d.ts +4 -0
  42. package/dist/cli/service-command-records/firestore-rules-validate.d.ts.map +1 -0
  43. package/dist/cli/service-command-records/firestore-rules-validate.js +3 -0
  44. package/dist/cli/service-command-records/firestore-rules-validate.js.map +1 -0
  45. package/dist/cli/service-command-records/storage-rules-lint.d.ts +4 -0
  46. package/dist/cli/service-command-records/storage-rules-lint.d.ts.map +1 -0
  47. package/dist/cli/service-command-records/storage-rules-lint.js +3 -0
  48. package/dist/cli/service-command-records/storage-rules-lint.js.map +1 -0
  49. package/dist/cli/service-command-records/storage-rules-simulate.d.ts +4 -0
  50. package/dist/cli/service-command-records/storage-rules-simulate.d.ts.map +1 -0
  51. package/dist/cli/service-command-records/storage-rules-simulate.js +3 -0
  52. package/dist/cli/service-command-records/storage-rules-simulate.js.map +1 -0
  53. package/dist/cli/service-commands.d.ts +7 -0
  54. package/dist/cli/service-commands.d.ts.map +1 -1
  55. package/dist/cli/service-commands.generated.d.ts +35 -0
  56. package/dist/cli/service-commands.generated.d.ts.map +1 -0
  57. package/dist/cli/service-commands.generated.js +25 -0
  58. package/dist/cli/service-commands.generated.js.map +1 -0
  59. package/dist/cli/service-commands.js +23 -40
  60. package/dist/cli/service-commands.js.map +1 -1
  61. package/dist/conformance/.generated/can-i-use-browser.d.ts.map +1 -1
  62. package/dist/conformance/.generated/can-i-use-browser.js +1 -1
  63. package/dist/conformance/.generated/can-i-use-browser.js.map +1 -1
  64. package/dist/conformance/.generated/can-i-use.d.ts.map +1 -1
  65. package/dist/conformance/.generated/can-i-use.js +1 -1
  66. package/dist/conformance/.generated/can-i-use.js.map +1 -1
  67. package/dist/conformance/.generated/conformance-docs.d.ts.map +1 -1
  68. package/dist/conformance/.generated/conformance-docs.js +1 -1
  69. package/dist/conformance/.generated/conformance-docs.js.map +1 -1
  70. package/dist/functions-rtdb/development-runtime.d.ts +63 -0
  71. package/dist/functions-rtdb/development-runtime.d.ts.map +1 -0
  72. package/dist/functions-rtdb/development-runtime.js +244 -0
  73. package/dist/functions-rtdb/development-runtime.js.map +1 -0
  74. package/dist/serve/bridge-mount.d.ts +32 -2
  75. package/dist/serve/bridge-mount.d.ts.map +1 -1
  76. package/dist/serve/bridge-mount.js +232 -18
  77. package/dist/serve/bridge-mount.js.map +1 -1
  78. package/dist/serve/bundler.d.ts +4 -18
  79. package/dist/serve/bundler.d.ts.map +1 -1
  80. package/dist/serve/bundler.js +15 -37
  81. package/dist/serve/bundler.js.map +1 -1
  82. package/dist/serve/entries/app-client.d.ts.map +1 -1
  83. package/dist/serve/entries/app-client.js +5 -5
  84. package/dist/serve/entries/app-client.js.map +1 -1
  85. package/dist/serve/entries/auth-helper-core.d.ts +23 -6
  86. package/dist/serve/entries/auth-helper-core.d.ts.map +1 -1
  87. package/dist/serve/entries/auth-helper-core.js +55 -24
  88. package/dist/serve/entries/auth-helper-core.js.map +1 -1
  89. package/dist/serve/entries/database.d.ts +28 -0
  90. package/dist/serve/entries/database.d.ts.map +1 -1
  91. package/dist/serve/entries/database.js +95 -26
  92. package/dist/serve/entries/database.js.map +1 -1
  93. package/dist/serve/entries/init.d.ts.map +1 -1
  94. package/dist/serve/entries/init.js +21 -12
  95. package/dist/serve/entries/init.js.map +1 -1
  96. package/dist/serve/html-injection.d.ts +5 -0
  97. package/dist/serve/html-injection.d.ts.map +1 -0
  98. package/dist/serve/html-injection.js +59 -0
  99. package/dist/serve/html-injection.js.map +1 -0
  100. package/dist/serve/namespace.d.ts +6 -22
  101. package/dist/serve/namespace.d.ts.map +1 -1
  102. package/dist/serve/namespace.js +23 -145
  103. package/dist/serve/namespace.js.map +1 -1
  104. package/dist/serve/runtime/worker-generation.d.ts +10 -2
  105. package/dist/serve/runtime/worker-generation.d.ts.map +1 -1
  106. package/dist/serve/runtime/worker-generation.js +29 -8
  107. package/dist/serve/runtime/worker-generation.js.map +1 -1
  108. package/dist/serve/runtime/worker-replacement.d.ts +1 -2
  109. package/dist/serve/runtime/worker-replacement.d.ts.map +1 -1
  110. package/dist/serve/sandbox-session.d.ts +78 -0
  111. package/dist/serve/sandbox-session.d.ts.map +1 -0
  112. package/dist/serve/sandbox-session.js +171 -0
  113. package/dist/serve/sandbox-session.js.map +1 -0
  114. package/dist/serve/server.d.ts +5 -2
  115. package/dist/serve/server.d.ts.map +1 -1
  116. package/dist/serve/server.js +21 -5
  117. package/dist/serve/server.js.map +1 -1
  118. package/dist/serve/site-tree.d.ts +8 -0
  119. package/dist/serve/site-tree.d.ts.map +1 -0
  120. package/dist/serve/site-tree.js +113 -0
  121. package/dist/serve/site-tree.js.map +1 -0
  122. package/dist/serve/site-ui/_astro/RulesCodeEditor.CzwHdCi9.js +23 -0
  123. package/dist/serve/site-ui/_astro/_example_.jevZ7OdV.css +1 -0
  124. package/dist/serve/site-ui/_astro/_slug_.BoKXYrnu.css +1 -0
  125. package/dist/serve/site-ui/_astro/_studio_.BtYpqe1A.css +1 -0
  126. package/dist/serve/site-ui/_astro/app.BnMC0ywl.js +109 -0
  127. package/dist/serve/site-ui/_astro/app.BsFsMjn0.css +1 -0
  128. package/dist/serve/site-ui/_astro/app.DVXXR-WI.js +1 -0
  129. package/dist/serve/site-ui/_astro/chess-showcase.DzPO6kz0.js +1 -0
  130. package/dist/serve/site-ui/_astro/chess-source-explorer.C5k9c5yK.js +1 -0
  131. package/dist/serve/site-ui/_astro/chess-v2.CFHmd3UL.js +354 -0
  132. package/dist/serve/site-ui/_astro/client.D2ORs4B-.js +25 -0
  133. package/dist/serve/site-ui/_astro/example-runtime.CM0H02rx.js +291 -0
  134. package/dist/serve/site-ui/_astro/index.B4Kh80he.js +1 -0
  135. package/dist/serve/site-ui/_astro/index.DBy5LfQW.js +9 -0
  136. package/dist/serve/site-ui/_astro/index.DNyk7q8W.js +9 -0
  137. package/dist/serve/site-ui/_astro/jsx-runtime.D_zvdyIk.js +9 -0
  138. package/dist/serve/site-ui/_astro/reads.D1exkX1-.js +1 -0
  139. package/dist/serve/site-ui/_astro/sandbox-controls.BqMePr5V.js +1153 -0
  140. package/dist/serve/site-ui/_astro/seed.BCn5DhHS.js +20 -0
  141. package/dist/serve/site-ui/auth/index.html +11 -0
  142. package/dist/serve/site-ui/docs/_rhythm/index.html +100 -0
  143. package/dist/serve/site-ui/docs/agent/set-up-your-agent/index.html +43 -0
  144. package/dist/serve/site-ui/docs/agent/watch-and-review/index.html +26 -0
  145. package/dist/serve/site-ui/docs/agent/work-with-an-agent/index.html +70 -0
  146. package/dist/serve/{docs-ui → site-ui}/docs/ai-compat/index.html +3 -3
  147. package/dist/serve/site-ui/docs/api-reference/index.html +68 -0
  148. package/dist/serve/{docs-ui → site-ui}/docs/app-compat/index.html +3 -3
  149. package/dist/serve/{docs-ui → site-ui}/docs/auth-compat/index.html +3 -3
  150. package/dist/serve/site-ui/docs/build/ai-logic/index.html +64 -0
  151. package/dist/serve/site-ui/docs/build/authentication/index.html +66 -0
  152. package/dist/serve/site-ui/docs/build/cloud-firestore/index.html +84 -0
  153. package/dist/serve/site-ui/docs/build/cloud-messaging/index.html +71 -0
  154. package/dist/serve/site-ui/docs/build/cloud-storage/index.html +66 -0
  155. package/dist/serve/{docs-ui → site-ui}/docs/build/cloud-storage.md +2 -2
  156. package/dist/serve/site-ui/docs/build/realtime-database/index.html +67 -0
  157. package/dist/serve/site-ui/docs/conformance-scores/index.html +50 -0
  158. package/dist/serve/{docs-ui → site-ui}/docs/conformance-scores.md +3 -3
  159. package/dist/serve/site-ui/docs/create-pyric-reference-api/index.html +531 -0
  160. package/dist/serve/{docs-ui → site-ui}/docs/database-compat/index.html +211 -168
  161. package/dist/serve/{docs-ui → site-ui}/docs/database-compat.md +208 -170
  162. package/dist/serve/site-ui/docs/examples/chess/index.html +384 -0
  163. package/dist/serve/site-ui/docs/examples/chess.md +57 -0
  164. package/dist/serve/site-ui/docs/examples/index.html +3 -0
  165. package/dist/serve/site-ui/docs/examples.md +4 -0
  166. package/dist/serve/{docs-ui → site-ui}/docs/firestore-compat/index.html +55 -91
  167. package/dist/serve/{docs-ui → site-ui}/docs/firestore-compat.md +52 -88
  168. package/dist/serve/site-ui/docs/functions-rtdb-compat/index.html +73 -0
  169. package/dist/serve/site-ui/docs/get-started/how-the-swap-works/index.html +29 -0
  170. package/dist/serve/site-ui/docs/get-started/start-building/index.html +33 -0
  171. package/dist/serve/{docs-ui → site-ui}/docs/index.json +595 -26
  172. package/dist/serve/site-ui/docs/messaging-compat/index.html +324 -0
  173. package/dist/serve/{docs-ui → site-ui}/docs/messaging-compat.md +71 -1
  174. package/dist/serve/site-ui/docs/observe/resolve-runtime-status/index.html +28 -0
  175. package/dist/serve/site-ui/docs/observe/see-whats-happening/index.html +74 -0
  176. package/dist/serve/site-ui/docs/observe/shape-your-data/index.html +45 -0
  177. package/dist/serve/site-ui/docs/overview/index.html +17 -0
  178. package/dist/serve/site-ui/docs/pyric-admin-app-reference-api/index.html +186 -0
  179. package/dist/serve/{docs-ui → site-ui}/docs/pyric-admin-auth-reference-api/index.html +4 -4
  180. package/dist/serve/{docs-ui → site-ui}/docs/pyric-admin-database-reference-api/index.html +4 -4
  181. package/dist/serve/{docs-ui → site-ui}/docs/pyric-admin-firestore-reference-api/index.html +318 -202
  182. package/dist/serve/{docs-ui → site-ui}/docs/pyric-admin-firestore-reference-api.md +154 -27
  183. package/dist/serve/{docs-ui → site-ui}/docs/pyric-admin-messaging-reference-api/index.html +5 -5
  184. package/dist/serve/site-ui/docs/pyric-admin-storage-reference-api/index.html +318 -0
  185. package/dist/serve/{docs-ui → site-ui}/docs/pyric-ai-reference-api/index.html +5 -5
  186. package/dist/serve/site-ui/docs/pyric-ai-scripting-reference-api/index.html +160 -0
  187. package/dist/serve/site-ui/docs/pyric-app-reference-api/index.html +425 -0
  188. package/dist/serve/{docs-ui → site-ui}/docs/pyric-auth-reference-api/index.html +5 -5
  189. package/dist/serve/site-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +60 -0
  190. package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-assurance-reference-api/index.html +4 -4
  191. package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-bridge-client-reference-api/index.html +4 -4
  192. package/dist/serve/site-ui/docs/pyric-cli-bridge-reference-api/index.html +507 -0
  193. package/dist/serve/site-ui/docs/pyric-cli-conformance-browser-reference-api/index.html +258 -0
  194. package/dist/serve/site-ui/docs/pyric-cli-conformance-docs-reference-api/index.html +51 -0
  195. package/dist/serve/site-ui/docs/pyric-cli-conformance-reference-api/index.html +308 -0
  196. package/dist/serve/site-ui/docs/pyric-cli-credentials-node-reference-api/index.html +68 -0
  197. package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-discover-reference-api/index.html +4 -4
  198. package/dist/serve/site-ui/docs/pyric-cli-register-reference-api/index.html +11 -0
  199. package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-remote-reference-api/index.html +4 -4
  200. package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-serve-worker-reference-api/index.html +1186 -1384
  201. package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-serve-worker-reference-api.md +817 -1291
  202. package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-verify-reference-api/index.html +4 -4
  203. package/dist/serve/site-ui/docs/pyric-cli-vite-reference-api/index.html +126 -0
  204. package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-vite-reference-api.md +1 -1
  205. package/dist/serve/site-ui/docs/pyric-database-reference-api/index.html +2641 -0
  206. package/dist/serve/{docs-ui → site-ui}/docs/pyric-database-reference-api.md +1055 -158
  207. package/dist/serve/{docs-ui → site-ui}/docs/pyric-firestore-reference-api/index.html +311 -249
  208. package/dist/serve/{docs-ui → site-ui}/docs/pyric-firestore-reference-api.md +72 -54
  209. package/dist/serve/site-ui/docs/pyric-messaging-reference-api/index.html +509 -0
  210. package/dist/serve/site-ui/docs/pyric-messaging-sw-reference-api/index.html +182 -0
  211. package/dist/serve/{docs-ui → site-ui}/docs/pyric-rules-reference-api/index.html +7 -26
  212. package/dist/serve/{docs-ui → site-ui}/docs/pyric-rules-reference-api.md +13 -23
  213. package/dist/serve/site-ui/docs/pyric-sandbox-database-reference-api/index.html +121 -0
  214. package/dist/serve/site-ui/docs/pyric-sandbox-firestore-reference-api/index.html +203 -0
  215. package/dist/serve/{docs-ui → site-ui}/docs/pyric-sandbox-reference-api/index.html +26 -5
  216. package/dist/serve/{docs-ui → site-ui}/docs/pyric-sandbox-reference-api.md +22 -22
  217. package/dist/serve/{docs-ui → site-ui}/docs/pyric-storage-reference-api/index.html +5 -15
  218. package/dist/serve/{docs-ui → site-ui}/docs/pyric-storage-reference-api.md +0 -13
  219. package/dist/serve/site-ui/docs/pyric-ui-agents-reference-api/index.html +639 -0
  220. package/dist/serve/site-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +100 -0
  221. package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-auth-reference-api/index.html +4 -4
  222. package/dist/serve/site-ui/docs/pyric-ui-events-hooks-reference-api/index.html +24 -0
  223. package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-events-reference-api/index.html +4 -4
  224. package/dist/serve/site-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +136 -0
  225. package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-firestore-reference-api/index.html +7 -7
  226. package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-firestore-reference-api.md +4 -4
  227. package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-primitives-reference-api/index.html +4 -4
  228. package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-rtdb-reference-api/index.html +4 -4
  229. package/dist/serve/site-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +16 -0
  230. package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-rules-reference-api/index.html +4 -4
  231. package/dist/serve/site-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +176 -0
  232. package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-storage-reference-api/index.html +10 -11
  233. package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-storage-reference-api.md +7 -8
  234. package/dist/serve/site-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +188 -0
  235. package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-traffic-reference-api/index.html +4 -4
  236. package/dist/serve/{docs-ui → site-ui}/docs/rules-compat/index.html +87 -57
  237. package/dist/serve/{docs-ui → site-ui}/docs/rules-compat.md +84 -54
  238. package/dist/serve/site-ui/docs/secure/audit-your-rules/index.html +51 -0
  239. package/dist/serve/site-ui/docs/secure/firestore-rules-limits/index.html +106 -0
  240. package/dist/serve/site-ui/docs/secure/read-a-denial/index.html +41 -0
  241. package/dist/serve/site-ui/docs/secure/rtdb-rules-in-typescript/index.html +67 -0
  242. package/dist/serve/site-ui/docs/secure/rules-standard-library/index.html +159 -0
  243. package/dist/serve/{docs-ui → site-ui}/docs/secure/rules-standard-library.md +2 -2
  244. package/dist/serve/site-ui/docs/secure/secure-it-with-rules/index.html +47 -0
  245. package/dist/serve/site-ui/docs/secure/simulate-and-lint/index.html +95 -0
  246. package/dist/serve/site-ui/docs/secure/write-a-rules-test-suite/index.html +82 -0
  247. package/dist/serve/site-ui/docs/ship/ship-to-production/index.html +37 -0
  248. package/dist/serve/site-ui/docs/ship/test-in-node/index.html +75 -0
  249. package/dist/serve/{docs-ui → site-ui}/docs/storage-compat/index.html +8 -8
  250. package/dist/serve/{docs-ui → site-ui}/docs/storage-compat.md +5 -5
  251. package/dist/serve/site-ui/docs/trust/how-we-know-it-matches-firebase/index.html +132 -0
  252. package/dist/serve/site-ui/docs/trust/rules-standard-library/index.html +861 -0
  253. package/dist/serve/site-ui/docs/trust/rules-standard-library.md +344 -0
  254. package/dist/serve/site-ui/docs/trust/storage-rules-stdlib-research/index.html +582 -0
  255. package/dist/serve/site-ui/docs/trust/storage-rules-stdlib-research.md +448 -0
  256. package/dist/serve/site-ui/docs/trust/versioning-and-compatibility/index.html +14 -0
  257. package/dist/serve/{docs-ui → site-ui}/docs/tutorial/index.html +4 -4
  258. package/dist/serve/{docs-ui → site-ui}/docs/tutorial.md +1 -1
  259. package/dist/serve/site-ui/examples/chess/index.html +2 -0
  260. package/dist/serve/site-ui/examples/firestore-first-write/index.html +2 -0
  261. package/dist/serve/site-ui/firestore/index.html +11 -0
  262. package/dist/serve/site-ui/index.html +11 -0
  263. package/dist/serve/{docs-ui → site-ui}/llms.txt +6 -2
  264. package/dist/serve/site-ui/rtdb/index.html +11 -0
  265. package/dist/serve/site-ui/settings/index.html +11 -0
  266. package/dist/serve/site-ui/storage/index.html +11 -0
  267. package/dist/serve/site-ui/studio-routes.json +1 -0
  268. package/dist/serve/site-ui/traffic/index.html +11 -0
  269. package/dist/serve/standalone-assets.d.ts +4 -10
  270. package/dist/serve/standalone-assets.d.ts.map +1 -1
  271. package/dist/serve/standalone-assets.js +8 -21
  272. package/dist/serve/standalone-assets.js.map +1 -1
  273. package/dist/serve/vite-ai-config.d.ts +2 -0
  274. package/dist/serve/vite-ai-config.d.ts.map +1 -1
  275. package/dist/serve/vite-ai-config.js +4 -0
  276. package/dist/serve/vite-ai-config.js.map +1 -1
  277. package/dist/serve/vite-functions-development.d.ts +29 -0
  278. package/dist/serve/vite-functions-development.d.ts.map +1 -0
  279. package/dist/serve/vite-functions-development.js +150 -0
  280. package/dist/serve/vite-functions-development.js.map +1 -0
  281. package/dist/serve/vite-generation-bridge.d.ts +17 -0
  282. package/dist/serve/vite-generation-bridge.d.ts.map +1 -0
  283. package/dist/serve/vite-generation-bridge.js +47 -0
  284. package/dist/serve/vite-generation-bridge.js.map +1 -0
  285. package/dist/serve/vite-generation-functions.d.ts +35 -0
  286. package/dist/serve/vite-generation-functions.d.ts.map +1 -0
  287. package/dist/serve/vite-generation-functions.js +46 -0
  288. package/dist/serve/vite-generation-functions.js.map +1 -0
  289. package/dist/serve/vite-generation-middleware.d.ts +10 -0
  290. package/dist/serve/vite-generation-middleware.d.ts.map +1 -0
  291. package/dist/serve/vite-generation-middleware.js +40 -0
  292. package/dist/serve/vite-generation-middleware.js.map +1 -0
  293. package/dist/serve/vite-generation-rules-watch.d.ts +8 -0
  294. package/dist/serve/vite-generation-rules-watch.d.ts.map +1 -0
  295. package/dist/serve/vite-generation-rules-watch.js +33 -0
  296. package/dist/serve/vite-generation-rules-watch.js.map +1 -0
  297. package/dist/serve/vite-module-swap.d.ts +16 -0
  298. package/dist/serve/vite-module-swap.d.ts.map +1 -0
  299. package/dist/serve/vite-module-swap.js +96 -0
  300. package/dist/serve/vite-module-swap.js.map +1 -0
  301. package/dist/serve/vite-page-runtime.d.ts +29 -0
  302. package/dist/serve/vite-page-runtime.d.ts.map +1 -0
  303. package/dist/serve/vite-page-runtime.js +71 -0
  304. package/dist/serve/vite-page-runtime.js.map +1 -0
  305. package/dist/serve/vite-plugin.d.ts +44 -4
  306. package/dist/serve/vite-plugin.d.ts.map +1 -1
  307. package/dist/serve/vite-plugin.js +62 -864
  308. package/dist/serve/vite-plugin.js.map +1 -1
  309. package/dist/serve/vite-sandbox-generation.d.ts +57 -0
  310. package/dist/serve/vite-sandbox-generation.d.ts.map +1 -0
  311. package/dist/serve/vite-sandbox-generation.js +178 -0
  312. package/dist/serve/vite-sandbox-generation.js.map +1 -0
  313. package/dist/serve/vite-worker-runtime.d.ts +1 -1
  314. package/dist/serve/vite-worker-runtime.d.ts.map +1 -1
  315. package/dist/serve/vite-worker-runtime.js +8 -4
  316. package/dist/serve/vite-worker-runtime.js.map +1 -1
  317. package/dist/serve/worker/client/disconnect.d.ts.map +1 -1
  318. package/dist/serve/worker/client/disconnect.js +2 -0
  319. package/dist/serve/worker/client/disconnect.js.map +1 -1
  320. package/dist/serve/worker/client/handles.d.ts +5 -0
  321. package/dist/serve/worker/client/handles.d.ts.map +1 -1
  322. package/dist/serve/worker/client/handles.js.map +1 -1
  323. package/dist/serve/worker/client/pagehide.d.ts +13 -0
  324. package/dist/serve/worker/client/pagehide.d.ts.map +1 -0
  325. package/dist/serve/worker/client/pagehide.js +19 -0
  326. package/dist/serve/worker/client/pagehide.js.map +1 -0
  327. package/dist/serve/worker/client/rtdb-admin.d.ts +8 -0
  328. package/dist/serve/worker/client/rtdb-admin.d.ts.map +1 -0
  329. package/dist/serve/worker/client/rtdb-admin.js +39 -0
  330. package/dist/serve/worker/client/rtdb-admin.js.map +1 -0
  331. package/dist/serve/worker/client/rtdb-connection-lifecycle.d.ts +15 -0
  332. package/dist/serve/worker/client/rtdb-connection-lifecycle.d.ts.map +1 -0
  333. package/dist/serve/worker/client/rtdb-connection-lifecycle.js +45 -0
  334. package/dist/serve/worker/client/rtdb-connection-lifecycle.js.map +1 -0
  335. package/dist/serve/worker/client/rtdb-controls.d.ts +6 -0
  336. package/dist/serve/worker/client/rtdb-controls.d.ts.map +1 -0
  337. package/dist/serve/worker/client/rtdb-controls.js +8 -0
  338. package/dist/serve/worker/client/rtdb-controls.js.map +1 -0
  339. package/dist/serve/worker/client/rtdb-listeners.d.ts +24 -0
  340. package/dist/serve/worker/client/rtdb-listeners.d.ts.map +1 -0
  341. package/dist/serve/worker/client/rtdb-listeners.js +262 -0
  342. package/dist/serve/worker/client/rtdb-listeners.js.map +1 -0
  343. package/dist/serve/worker/client/rtdb-reads.d.ts +4 -0
  344. package/dist/serve/worker/client/rtdb-reads.d.ts.map +1 -0
  345. package/dist/serve/worker/client/rtdb-reads.js +11 -0
  346. package/dist/serve/worker/client/rtdb-reads.js.map +1 -0
  347. package/dist/serve/worker/client/rtdb-references.d.ts +19 -0
  348. package/dist/serve/worker/client/rtdb-references.d.ts.map +1 -0
  349. package/dist/serve/worker/client/rtdb-references.js +63 -0
  350. package/dist/serve/worker/client/rtdb-references.js.map +1 -0
  351. package/dist/serve/worker/client/rtdb-snapshots.d.ts +20 -0
  352. package/dist/serve/worker/client/rtdb-snapshots.d.ts.map +1 -0
  353. package/dist/serve/worker/client/rtdb-snapshots.js +64 -0
  354. package/dist/serve/worker/client/rtdb-snapshots.js.map +1 -0
  355. package/dist/serve/worker/client/rtdb-transactions.d.ts +14 -0
  356. package/dist/serve/worker/client/rtdb-transactions.d.ts.map +1 -0
  357. package/dist/serve/worker/client/rtdb-transactions.js +34 -0
  358. package/dist/serve/worker/client/rtdb-transactions.js.map +1 -0
  359. package/dist/serve/worker/client/rtdb-writes.d.ts +8 -0
  360. package/dist/serve/worker/client/rtdb-writes.d.ts.map +1 -0
  361. package/dist/serve/worker/client/rtdb-writes.js +65 -0
  362. package/dist/serve/worker/client/rtdb-writes.js.map +1 -0
  363. package/dist/serve/worker/client.d.ts +0 -2
  364. package/dist/serve/worker/client.d.ts.map +1 -1
  365. package/dist/serve/worker/client.js +0 -2
  366. package/dist/serve/worker/client.js.map +1 -1
  367. package/dist/serve/worker/entry.js +2 -2
  368. package/dist/serve/worker/entry.js.map +1 -1
  369. package/dist/serve/worker/host/dispatch.d.ts +2 -0
  370. package/dist/serve/worker/host/dispatch.d.ts.map +1 -1
  371. package/dist/serve/worker/host/dispatch.js +24 -2
  372. package/dist/serve/worker/host/dispatch.js.map +1 -1
  373. package/dist/serve/worker/host/rtdb.d.ts +6 -2
  374. package/dist/serve/worker/host/rtdb.d.ts.map +1 -1
  375. package/dist/serve/worker/host/rtdb.js +224 -2
  376. package/dist/serve/worker/host/rtdb.js.map +1 -1
  377. package/dist/serve/worker/host/studio.d.ts.map +1 -1
  378. package/dist/serve/worker/host/studio.js +2 -0
  379. package/dist/serve/worker/host/studio.js.map +1 -1
  380. package/dist/serve/worker/host/subscriptions.d.ts.map +1 -1
  381. package/dist/serve/worker/host/subscriptions.js +3 -3
  382. package/dist/serve/worker/host/subscriptions.js.map +1 -1
  383. package/dist/serve/worker/host.d.ts +1 -1
  384. package/dist/serve/worker/host.d.ts.map +1 -1
  385. package/dist/serve/worker/host.js +1 -1
  386. package/dist/serve/worker/host.js.map +1 -1
  387. package/dist/serve/worker/index.d.ts +16 -1
  388. package/dist/serve/worker/index.d.ts.map +1 -1
  389. package/dist/serve/worker/index.js +17 -4
  390. package/dist/serve/worker/index.js.map +1 -1
  391. package/dist/serve/worker/protocol.d.ts +57 -0
  392. package/dist/serve/worker/protocol.d.ts.map +1 -1
  393. package/dist/serve/worker/protocol.js.map +1 -1
  394. package/dist/serve/worker/rtdb-value-equality.d.ts +3 -0
  395. package/dist/serve/worker/rtdb-value-equality.d.ts.map +1 -0
  396. package/dist/serve/worker/rtdb-value-equality.js +18 -0
  397. package/dist/serve/worker/rtdb-value-equality.js.map +1 -0
  398. package/dist/serve/worker/serve-init.js +2 -2
  399. package/dist/serve/worker/serve-init.js.map +1 -1
  400. package/dist/serve/worker/service-worker-relay.js +2 -2
  401. package/dist/serve/worker/service-worker-relay.js.map +1 -1
  402. package/package.json +7 -5
  403. package/src/assurance/.generated/conformance-verdicts.ts +120 -75
  404. package/src/cli/serve.ts +216 -308
  405. package/src/cli/service-command-records/database-rules-generate.ts +3 -0
  406. package/src/cli/service-command-records/database-rules-lint.ts +3 -0
  407. package/src/cli/service-command-records/database-rules-simulate.ts +3 -0
  408. package/src/cli/service-command-records/database-rules-validate.ts +3 -0
  409. package/src/cli/service-command-records/firestore-indexes-generate.ts +3 -0
  410. package/src/cli/service-command-records/firestore-rules-lint.ts +3 -0
  411. package/src/cli/service-command-records/firestore-rules-resolve.ts +3 -0
  412. package/src/cli/service-command-records/firestore-rules-simulate.ts +3 -0
  413. package/src/cli/service-command-records/firestore-rules-validate.ts +3 -0
  414. package/src/cli/service-command-records/storage-rules-lint.ts +3 -0
  415. package/src/cli/service-command-records/storage-rules-simulate.ts +3 -0
  416. package/src/cli/service-commands.generated.ts +27 -0
  417. package/src/cli/service-commands.test.ts +43 -0
  418. package/src/cli/service-commands.ts +36 -51
  419. package/src/conformance/.generated/can-i-use-browser.ts +1 -1
  420. package/src/conformance/.generated/can-i-use.ts +1 -1
  421. package/src/conformance/.generated/conformance-docs.ts +1 -1
  422. package/src/functions-rtdb/development-runtime.ts +299 -0
  423. package/src/serve/bridge-mount.ts +253 -19
  424. package/src/serve/bundler.ts +17 -36
  425. package/src/serve/entries/app-client.ts +5 -4
  426. package/src/serve/entries/auth-helper-core.ts +83 -30
  427. package/src/serve/entries/database.ts +180 -57
  428. package/src/serve/entries/init.ts +30 -20
  429. package/src/serve/html-injection.ts +65 -0
  430. package/src/serve/namespace.ts +26 -169
  431. package/src/serve/runtime/worker-generation.ts +29 -7
  432. package/src/serve/runtime/worker-replacement.ts +1 -1
  433. package/src/serve/sandbox-session.ts +233 -0
  434. package/src/serve/server.ts +20 -5
  435. package/src/serve/site-tree.ts +146 -0
  436. package/src/serve/standalone-assets.ts +9 -26
  437. package/src/serve/vite-ai-config.ts +8 -0
  438. package/src/serve/vite-functions-development.ts +201 -0
  439. package/src/serve/vite-generation-bridge.ts +66 -0
  440. package/src/serve/vite-generation-functions.ts +78 -0
  441. package/src/serve/vite-generation-middleware.ts +56 -0
  442. package/src/serve/vite-generation-rules-watch.ts +37 -0
  443. package/src/serve/vite-module-swap.ts +119 -0
  444. package/src/serve/vite-page-runtime.ts +100 -0
  445. package/src/serve/vite-plugin.ts +78 -882
  446. package/src/serve/vite-sandbox-generation.ts +255 -0
  447. package/src/serve/vite-worker-runtime.ts +12 -5
  448. package/src/serve/worker/client/disconnect.ts +3 -1
  449. package/src/serve/worker/client/handles.ts +5 -0
  450. package/src/serve/worker/client/pagehide.ts +31 -0
  451. package/src/serve/worker/client/rtdb-admin.ts +74 -0
  452. package/src/serve/worker/client/rtdb-connection-lifecycle.ts +52 -0
  453. package/src/serve/worker/client/rtdb-controls.ts +8 -0
  454. package/src/serve/worker/client/rtdb-listeners.ts +337 -0
  455. package/src/serve/worker/client/rtdb-reads.ts +12 -0
  456. package/src/serve/worker/client/rtdb-references.ts +85 -0
  457. package/src/serve/worker/client/rtdb-snapshots.ts +118 -0
  458. package/src/serve/worker/client/rtdb-transactions.ts +51 -0
  459. package/src/serve/worker/client/rtdb-writes.ts +74 -0
  460. package/src/serve/worker/client.ts +0 -2
  461. package/src/serve/worker/entry.ts +2 -2
  462. package/src/serve/worker/host/dispatch.ts +22 -2
  463. package/src/serve/worker/host/rtdb.ts +243 -2
  464. package/src/serve/worker/host/studio.ts +2 -0
  465. package/src/serve/worker/host/subscriptions.ts +8 -4
  466. package/src/serve/worker/host.ts +1 -1
  467. package/src/serve/worker/index.ts +58 -10
  468. package/src/serve/worker/protocol.ts +23 -2
  469. package/src/serve/worker/rtdb-value-equality.ts +17 -0
  470. package/src/serve/worker/serve-init.ts +2 -2
  471. package/src/serve/worker/service-worker-relay.ts +2 -2
  472. package/dist/serve/docs-ui/_astro/_slug_.DUci-duz.css +0 -1
  473. package/dist/serve/docs-ui/docs/_rhythm/index.html +0 -100
  474. package/dist/serve/docs-ui/docs/agent/set-up-your-agent/index.html +0 -43
  475. package/dist/serve/docs-ui/docs/agent/watch-and-review/index.html +0 -26
  476. package/dist/serve/docs-ui/docs/agent/work-with-an-agent/index.html +0 -70
  477. package/dist/serve/docs-ui/docs/api-reference/index.html +0 -68
  478. package/dist/serve/docs-ui/docs/build/ai-logic/index.html +0 -64
  479. package/dist/serve/docs-ui/docs/build/authentication/index.html +0 -66
  480. package/dist/serve/docs-ui/docs/build/cloud-firestore/index.html +0 -70
  481. package/dist/serve/docs-ui/docs/build/cloud-messaging/index.html +0 -71
  482. package/dist/serve/docs-ui/docs/build/cloud-storage/index.html +0 -66
  483. package/dist/serve/docs-ui/docs/build/realtime-database/index.html +0 -67
  484. package/dist/serve/docs-ui/docs/conformance-scores/index.html +0 -50
  485. package/dist/serve/docs-ui/docs/create-pyric-reference-api/index.html +0 -531
  486. package/dist/serve/docs-ui/docs/functions-rtdb-compat/index.html +0 -73
  487. package/dist/serve/docs-ui/docs/get-started/how-the-swap-works/index.html +0 -29
  488. package/dist/serve/docs-ui/docs/get-started/start-building/index.html +0 -33
  489. package/dist/serve/docs-ui/docs/messaging-compat/index.html +0 -265
  490. package/dist/serve/docs-ui/docs/observe/resolve-runtime-status/index.html +0 -28
  491. package/dist/serve/docs-ui/docs/observe/see-whats-happening/index.html +0 -74
  492. package/dist/serve/docs-ui/docs/observe/shape-your-data/index.html +0 -45
  493. package/dist/serve/docs-ui/docs/overview/index.html +0 -17
  494. package/dist/serve/docs-ui/docs/pyric-admin-app-reference-api/index.html +0 -186
  495. package/dist/serve/docs-ui/docs/pyric-admin-storage-reference-api/index.html +0 -318
  496. package/dist/serve/docs-ui/docs/pyric-ai-scripting-reference-api/index.html +0 -160
  497. package/dist/serve/docs-ui/docs/pyric-app-reference-api/index.html +0 -425
  498. package/dist/serve/docs-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +0 -60
  499. package/dist/serve/docs-ui/docs/pyric-cli-bridge-reference-api/index.html +0 -507
  500. package/dist/serve/docs-ui/docs/pyric-cli-conformance-browser-reference-api/index.html +0 -258
  501. package/dist/serve/docs-ui/docs/pyric-cli-conformance-docs-reference-api/index.html +0 -51
  502. package/dist/serve/docs-ui/docs/pyric-cli-conformance-reference-api/index.html +0 -308
  503. package/dist/serve/docs-ui/docs/pyric-cli-credentials-node-reference-api/index.html +0 -68
  504. package/dist/serve/docs-ui/docs/pyric-cli-register-reference-api/index.html +0 -11
  505. package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api/index.html +0 -126
  506. package/dist/serve/docs-ui/docs/pyric-database-reference-api/index.html +0 -1852
  507. package/dist/serve/docs-ui/docs/pyric-messaging-reference-api/index.html +0 -509
  508. package/dist/serve/docs-ui/docs/pyric-messaging-sw-reference-api/index.html +0 -182
  509. package/dist/serve/docs-ui/docs/pyric-sandbox-database-reference-api/index.html +0 -121
  510. package/dist/serve/docs-ui/docs/pyric-sandbox-firestore-reference-api/index.html +0 -203
  511. package/dist/serve/docs-ui/docs/pyric-ui-agents-reference-api/index.html +0 -639
  512. package/dist/serve/docs-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +0 -100
  513. package/dist/serve/docs-ui/docs/pyric-ui-events-hooks-reference-api/index.html +0 -24
  514. package/dist/serve/docs-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +0 -136
  515. package/dist/serve/docs-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +0 -16
  516. package/dist/serve/docs-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +0 -176
  517. package/dist/serve/docs-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +0 -188
  518. package/dist/serve/docs-ui/docs/secure/audit-your-rules/index.html +0 -51
  519. package/dist/serve/docs-ui/docs/secure/firestore-rules-limits/index.html +0 -106
  520. package/dist/serve/docs-ui/docs/secure/read-a-denial/index.html +0 -41
  521. package/dist/serve/docs-ui/docs/secure/rtdb-rules-in-typescript/index.html +0 -67
  522. package/dist/serve/docs-ui/docs/secure/rules-standard-library/index.html +0 -159
  523. package/dist/serve/docs-ui/docs/secure/secure-it-with-rules/index.html +0 -47
  524. package/dist/serve/docs-ui/docs/secure/simulate-and-lint/index.html +0 -95
  525. package/dist/serve/docs-ui/docs/secure/write-a-rules-test-suite/index.html +0 -82
  526. package/dist/serve/docs-ui/docs/ship/ship-to-production/index.html +0 -37
  527. package/dist/serve/docs-ui/docs/ship/test-in-node/index.html +0 -75
  528. package/dist/serve/docs-ui/docs/trust/how-we-know-it-matches-firebase/index.html +0 -132
  529. package/dist/serve/docs-ui/docs/trust/versioning-and-compatibility/index.html +0 -14
  530. package/dist/serve/docs-ui/index.html +0 -1
  531. package/dist/serve/studio-ui/assets/RulesCodeEditor-BDlH-5lp.js +0 -23
  532. package/dist/serve/studio-ui/assets/index-Bf9SSE8L.js +0 -1218
  533. package/dist/serve/studio-ui/assets/index-BlSGru_r.css +0 -1
  534. package/dist/serve/studio-ui/assets/seed-D_UjxfOU.js +0 -20
  535. package/dist/serve/studio-ui/index.html +0 -32
  536. package/dist/serve/worker/client/rtdb.d.ts +0 -36
  537. package/dist/serve/worker/client/rtdb.d.ts.map +0 -1
  538. package/dist/serve/worker/client/rtdb.js +0 -241
  539. package/dist/serve/worker/client/rtdb.js.map +0 -1
  540. package/src/serve/worker/client/rtdb.ts +0 -311
  541. /package/dist/serve/{docs-ui → site-ui}/404.html +0 -0
  542. /package/dist/serve/{docs-ui → site-ui}/_astro/_slug_.CXh9yTP1.css +0 -0
  543. /package/dist/serve/{docs-ui → site-ui}/docs/_rhythm.md +0 -0
  544. /package/dist/serve/{docs-ui → site-ui}/docs/agent/set-up-your-agent.md +0 -0
  545. /package/dist/serve/{docs-ui → site-ui}/docs/agent/watch-and-review.md +0 -0
  546. /package/dist/serve/{docs-ui → site-ui}/docs/agent/work-with-an-agent.md +0 -0
  547. /package/dist/serve/{docs-ui → site-ui}/docs/ai-compat.md +0 -0
  548. /package/dist/serve/{docs-ui → site-ui}/docs/api-reference.md +0 -0
  549. /package/dist/serve/{docs-ui → site-ui}/docs/app-compat.md +0 -0
  550. /package/dist/serve/{docs-ui → site-ui}/docs/auth-compat.md +0 -0
  551. /package/dist/serve/{docs-ui → site-ui}/docs/build/ai-logic.md +0 -0
  552. /package/dist/serve/{docs-ui → site-ui}/docs/build/authentication.md +0 -0
  553. /package/dist/serve/{docs-ui → site-ui}/docs/build/cloud-firestore.md +0 -0
  554. /package/dist/serve/{docs-ui → site-ui}/docs/build/cloud-messaging.md +0 -0
  555. /package/dist/serve/{docs-ui → site-ui}/docs/build/realtime-database.md +0 -0
  556. /package/dist/serve/{docs-ui → site-ui}/docs/create-pyric-reference-api.md +0 -0
  557. /package/dist/serve/{docs-ui → site-ui}/docs/functions-rtdb-compat.md +0 -0
  558. /package/dist/serve/{docs-ui → site-ui}/docs/get-started/how-the-swap-works.md +0 -0
  559. /package/dist/serve/{docs-ui → site-ui}/docs/get-started/start-building.md +0 -0
  560. /package/dist/serve/{docs-ui → site-ui}/docs/index.html +0 -0
  561. /package/dist/serve/{docs-ui → site-ui}/docs/observe/resolve-runtime-status.md +0 -0
  562. /package/dist/serve/{docs-ui → site-ui}/docs/observe/see-whats-happening.md +0 -0
  563. /package/dist/serve/{docs-ui → site-ui}/docs/observe/shape-your-data.md +0 -0
  564. /package/dist/serve/{docs-ui → site-ui}/docs/overview.md +0 -0
  565. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-admin-app-reference-api.md +0 -0
  566. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-admin-auth-reference-api.md +0 -0
  567. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-admin-database-reference-api.md +0 -0
  568. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-admin-messaging-reference-api.md +0 -0
  569. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-admin-storage-reference-api.md +0 -0
  570. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ai-reference-api.md +0 -0
  571. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ai-scripting-reference-api.md +0 -0
  572. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-app-reference-api.md +0 -0
  573. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-auth-reference-api.md +0 -0
  574. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-assurance-browser-reference-api.md +0 -0
  575. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-assurance-reference-api.md +0 -0
  576. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-bridge-client-reference-api.md +0 -0
  577. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-bridge-reference-api.md +0 -0
  578. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-conformance-browser-reference-api.md +0 -0
  579. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-conformance-docs-reference-api.md +0 -0
  580. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-conformance-reference-api.md +0 -0
  581. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-credentials-node-reference-api.md +0 -0
  582. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-discover-reference-api.md +0 -0
  583. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-register-reference-api.md +0 -0
  584. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-remote-reference-api.md +0 -0
  585. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-verify-reference-api.md +0 -0
  586. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-messaging-reference-api.md +0 -0
  587. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-messaging-sw-reference-api.md +0 -0
  588. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-sandbox-database-reference-api.md +0 -0
  589. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-sandbox-firestore-reference-api.md +0 -0
  590. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-agents-reference-api.md +0 -0
  591. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-auth-hooks-reference-api.md +0 -0
  592. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-auth-reference-api.md +0 -0
  593. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-events-hooks-reference-api.md +0 -0
  594. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-events-reference-api.md +0 -0
  595. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-firestore-hooks-reference-api.md +0 -0
  596. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-primitives-reference-api.md +0 -0
  597. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-rtdb-reference-api.md +0 -0
  598. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-rules-hooks-reference-api.md +0 -0
  599. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-rules-reference-api.md +0 -0
  600. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-storage-hooks-reference-api.md +0 -0
  601. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-traffic-hooks-reference-api.md +0 -0
  602. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-traffic-reference-api.md +0 -0
  603. /package/dist/serve/{docs-ui → site-ui}/docs/secure/audit-your-rules.md +0 -0
  604. /package/dist/serve/{docs-ui → site-ui}/docs/secure/firestore-rules-limits.md +0 -0
  605. /package/dist/serve/{docs-ui → site-ui}/docs/secure/read-a-denial.md +0 -0
  606. /package/dist/serve/{docs-ui → site-ui}/docs/secure/rtdb-rules-in-typescript.md +0 -0
  607. /package/dist/serve/{docs-ui → site-ui}/docs/secure/secure-it-with-rules.md +0 -0
  608. /package/dist/serve/{docs-ui → site-ui}/docs/secure/simulate-and-lint.md +0 -0
  609. /package/dist/serve/{docs-ui → site-ui}/docs/secure/write-a-rules-test-suite.md +0 -0
  610. /package/dist/serve/{docs-ui → site-ui}/docs/ship/ship-to-production.md +0 -0
  611. /package/dist/serve/{docs-ui → site-ui}/docs/ship/test-in-node.md +0 -0
  612. /package/dist/serve/{docs-ui → site-ui}/docs/trust/how-we-know-it-matches-firebase.md +0 -0
  613. /package/dist/serve/{docs-ui → site-ui}/docs/trust/versioning-and-compatibility.md +0 -0
  614. /package/dist/serve/{studio-ui → site-ui}/pyric-logo.svg +0 -0
@@ -1,7 +1,66 @@
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-admin/firestore · Pyric Studio</title><meta name="description" content="Published declarations for pyric-admin/firestore."><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> <details class="docs-nav-group"> <summary>Overview</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/overview/"> Overview </a> </li><li> <a href="/__pyric/ui/docs/tutorial/"> Tutorial </a> </li> </ul> </div> </div> </details><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/resolve-runtime-status/"> Runtime status </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-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/" aria-current="page"> 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><li> <a href="/__pyric/ui/docs/pyric-admin-messaging-reference-api/"> pyric-admin/messaging </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/"> @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> <details class="docs-nav-group" id="nav-group-overview"> <summary>Overview</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/overview/"> Overview </a> </li><li> <a href="/__pyric/ui/docs/tutorial/"> Tutorial </a> </li> </ul> </div> </div> </details><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/resolve-runtime-status/"> Runtime status </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-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/" aria-current="page"> 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><li> <a href="/__pyric/ui/docs/pyric-admin-messaging-reference-api/"> pyric-admin/messaging </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/"> @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-admin</span> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span aria-current="page">pyric-admin/firestore</span> </li> </ol> </nav> <header class="api-reference-header"> <p class="api-reference-kicker">API reference</p> <h1><code>pyric-admin/firestore</code></h1> <p class="api-reference-meta"> 41 published symbols from <code>pyric-admin</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-admin/firestore · Pyric Studio</title><meta name="description" content="Published declarations for pyric-admin/firestore."><link rel="icon" type="image/svg+xml" href="/__pyric/ui/pyric-logo.svg"><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_.BoKXYrnu.css"></head> <body> <header class="studio__bar" data-astro-cid-mw7aashj> <div class="studio__bar-inner" data-astro-cid-mw7aashj> <a class="studio__brand" href="/__pyric/ui/" aria-label="Pyric Studio" data-astro-cid-mw7aashj>Pyric</a> <nav class="studio__nav" aria-label="Studio tabs" data-astro-cid-mw7aashj> <a class="studio__nav-tab" href="/__pyric/ui/" data-astro-cid-mw7aashj> Home </a><a class="studio__nav-tab" href="/__pyric/ui/firestore" data-astro-cid-mw7aashj> Firestore </a><a class="studio__nav-tab" href="/__pyric/ui/auth" data-astro-cid-mw7aashj> Auth </a><a class="studio__nav-tab" href="/__pyric/ui/rtdb" data-astro-cid-mw7aashj> RTDB </a><a class="studio__nav-tab" href="/__pyric/ui/storage" data-astro-cid-mw7aashj> Storage </a><a class="studio__nav-tab" href="/__pyric/ui/traffic" data-astro-cid-mw7aashj> Traffic </a><a class="studio__nav-tab" href="/__pyric/ui/settings" data-astro-cid-mw7aashj> Settings </a><a class="studio__nav-tab" href="/__pyric/ui/docs" aria-current="page" data-astro-cid-mw7aashj> Docs </a> </nav> </div> </header> <div class="docs-shell" data-astro-cid-mw7aashj> <details class="docs-nav-drawer" data-astro-cid-mw7aashj> <summary data-astro-cid-mw7aashj>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> <details class="docs-nav-group"> <summary>Overview</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/overview/"> Overview </a> </li><li> <a href="/__pyric/ui/docs/tutorial/"> Tutorial </a> </li><li> <a href="/__pyric/ui/docs/examples/"> Examples </a> </li> </ul> </div> </div> </details><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 class="docs-nav-section"> <h2 class="docs-nav-heading"> Examples </h2> <ul> <li> <a href="/__pyric/ui/docs/examples/chess/"> Chess showcase </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/resolve-runtime-status/"> Runtime status </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><details class="docs-nav-group"> <summary>Trust</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/trust/versioning-and-compatibility/"> Versioning and the fb tag </a> </li><li> <a href="/__pyric/ui/docs/trust/storage-rules-stdlib-research/"> Storage Rules modules: evidence and design </a> </li><li> <a href="/__pyric/ui/docs/trust/rules-standard-library/"> Rules standard library reference </a> </li> </ul> </div> </div> </details><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-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/" aria-current="page"> 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><li> <a href="/__pyric/ui/docs/pyric-admin-messaging-reference-api/"> pyric-admin/messaging </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/"> @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> <details class="docs-nav-group" id="nav-group-overview"> <summary>Overview</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/overview/"> Overview </a> </li><li> <a href="/__pyric/ui/docs/tutorial/"> Tutorial </a> </li><li> <a href="/__pyric/ui/docs/examples/"> Examples </a> </li> </ul> </div> </div> </details><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 class="docs-nav-section"> <h2 class="docs-nav-heading" id="nav-section-secure-debug-examples"> Examples </h2> <ul> <li> <a href="/__pyric/ui/docs/examples/chess/"> Chess showcase </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/resolve-runtime-status/"> Runtime status </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><details class="docs-nav-group" id="nav-group-trust"> <summary>Trust</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/trust/versioning-and-compatibility/"> Versioning and the fb tag </a> </li><li> <a href="/__pyric/ui/docs/trust/storage-rules-stdlib-research/"> Storage Rules modules: evidence and design </a> </li><li> <a href="/__pyric/ui/docs/trust/rules-standard-library/"> Rules standard library reference </a> </li> </ul> </div> </div> </details><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-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/" aria-current="page"> 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><li> <a href="/__pyric/ui/docs/pyric-admin-messaging-reference-api/"> pyric-admin/messaging </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/"> @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" data-astro-cid-mw7aashj> <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-admin</span> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span aria-current="page">pyric-admin/firestore</span> </li> </ol> </nav> <header class="api-reference-header" data-astro-cid-mw7aashj> <p class="api-reference-kicker" data-astro-cid-mw7aashj>API reference</p> <h1 data-astro-cid-mw7aashj><code data-astro-cid-mw7aashj>pyric-admin/firestore</code></h1> <p class="api-reference-meta" data-astro-cid-mw7aashj> 43 published symbols from <code data-astro-cid-mw7aashj>pyric-admin</code> </p> <p class="api-reference-source" data-astro-cid-mw7aashj>
3
3
  Generated from the TypeScript declarations shipped at this import path.
4
- </p> </header> <article class="prose api-reference-body"> <!-- Generated from published package declarations via TypeDoc. Rendered by the api-reference content loader. -->
4
+ </p> </header> <article class="prose api-reference-body" data-astro-cid-mw7aashj> <!-- Generated from published package declarations via TypeDoc. Rendered by the api-reference content loader. -->
5
+ <h2 id="classes">Classes</h2>
6
+ <p><a id="fieldpath"></a></p>
7
+ <h3 id="fieldpath">FieldPath</h3>
8
+ <p>Firebase Admin-compatible field paths and DocumentSnapshot field lookup.</p>
9
+ <p>Every local/remote snapshot producer delegates here so validation, dotted
10
+ string traversal, literal-dot FieldPath segments, and missing-value behavior
11
+ cannot drift between one-shot, query, transaction, and listener reads.</p>
12
+ <h4 id="constructors">Constructors</h4>
13
+ <p><a id="constructor"></a></p>
14
+ <h5 id="constructor">Constructor</h5>
15
+ <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">new</span><span style="color:#61AFEF"> FieldPath</span><span style="color:#ABB2BF">(...</span><span style="color:#E06C75">segments</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">[]): </span><span style="color:#E06C75">FieldPath</span><span style="color:#ABB2BF">;</span></span></code></pre>
16
+ <h6 id="parameters">Parameters</h6>
17
+ <div class="table-scroll">
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left">…<code>segments</code></td><td align="left"><code>string</code>[]</td></tr></tbody></table></div>
31
+ <h6 id="returns">Returns</h6>
32
+ <p><a href="#fieldpath"><code>FieldPath</code></a></p>
33
+ <h4 id="methods">Methods</h4>
34
+ <p><a id="isequal"></a></p>
35
+ <h5 id="isequal">isEqual()</h5>
36
+ <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:#61AFEF">isEqual</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">other</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">FieldPath</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">boolean</span><span style="color:#ABB2BF">;</span></span></code></pre>
37
+ <h6 id="parameters-1">Parameters</h6>
38
+ <div class="table-scroll">
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>other</code></td><td align="left"><a href="#fieldpath"><code>FieldPath</code></a></td></tr></tbody></table></div>
52
+ <h6 id="returns-1">Returns</h6>
53
+ <p><code>boolean</code></p>
54
+ <p><a id="tostring"></a></p>
55
+ <h5 id="tostring">toString()</h5>
56
+ <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:#61AFEF">toString</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
57
+ <h6 id="returns-2">Returns</h6>
58
+ <p><code>string</code></p>
59
+ <p><a id="documentid"></a></p>
60
+ <h5 id="documentid">documentId()</h5>
61
+ <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:#E06C75">static</span><span style="color:#61AFEF"> documentId</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">FieldPath</span><span style="color:#ABB2BF">;</span></span></code></pre>
62
+ <h6 id="returns-3">Returns</h6>
63
+ <p><a href="#fieldpath"><code>FieldPath</code></a></p>
5
64
  <h2 id="interfaces">Interfaces</h2>
6
65
  <p><a id="admindocumentsnapshot"></a></p>
7
66
  <h3 id="admindocumentsnapshot">AdminDocumentSnapshot</h3>
@@ -36,12 +95,32 @@ Generated from the TypeScript declarations shipped at this import path.
36
95
 
37
96
 
38
97
  <table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="exists"></a> <code>exists</code></td><td align="left"><code>readonly</code></td><td align="left"><code>boolean</code></td></tr><tr><td align="left"><a id="id"></a> <code>id</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="ref"></a> <code>ref</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#documentreference"><code>DocumentReference</code></a></td></tr></tbody></table></div>
39
- <h4 id="methods">Methods</h4>
98
+ <h4 id="methods-1">Methods</h4>
40
99
  <p><a id="data"></a></p>
41
100
  <h5 id="data">data()</h5>
42
101
  <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:#61AFEF">data</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">DocumentData</span><span style="color:#ABB2BF">;</span></span></code></pre>
43
- <h6 id="returns">Returns</h6>
102
+ <h6 id="returns-4">Returns</h6>
44
103
  <p><a href="/docs/pyric-firestore-reference-api/#documentdata"><code>DocumentData</code></a></p>
104
+ <p><a id="get"></a></p>
105
+ <h5 id="get">get()</h5>
106
+ <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:#61AFEF">get</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">fieldPath</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">SnapshotFieldPath</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">unknown</span><span style="color:#ABB2BF">;</span></span></code></pre>
107
+ <h6 id="parameters-2">Parameters</h6>
108
+ <div class="table-scroll">
109
+
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>fieldPath</code></td><td align="left"><a href="#snapshotfieldpath"><code>SnapshotFieldPath</code></a></td></tr></tbody></table></div>
122
+ <h6 id="returns-5">Returns</h6>
123
+ <p><code>unknown</code></p>
45
124
  <hr>
46
125
  <p><a id="adminquerydocumentsnapshot"></a></p>
47
126
  <h3 id="adminquerydocumentsnapshot">AdminQueryDocumentSnapshot</h3>
@@ -76,14 +155,36 @@ Generated from the TypeScript declarations shipped at this import path.
76
155
 
77
156
 
78
157
  <table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="exists-1"></a> <code>exists</code></td><td align="left"><code>readonly</code></td><td align="left"><code>boolean</code></td></tr><tr><td align="left"><a id="id-1"></a> <code>id</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="ref-1"></a> <code>ref</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#documentreference"><code>DocumentReference</code></a></td></tr></tbody></table></div>
79
- <h4 id="methods-1">Methods</h4>
158
+ <h4 id="methods-2">Methods</h4>
80
159
  <p><a id="data-2"></a></p>
81
160
  <h5 id="data-1">data()</h5>
82
161
  <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:#61AFEF">data</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">DocumentData</span><span style="color:#ABB2BF">;</span></span></code></pre>
83
- <h6 id="returns-1">Returns</h6>
162
+ <h6 id="returns-6">Returns</h6>
84
163
  <p><a href="/docs/pyric-firestore-reference-api/#documentdata"><code>DocumentData</code></a></p>
85
164
  <h6 id="overrides">Overrides</h6>
86
165
  <p><a href="#admindocumentsnapshot"><code>AdminDocumentSnapshot</code></a>.<a href="#data"><code>data</code></a></p>
166
+ <p><a id="get-2"></a></p>
167
+ <h5 id="get-1">get()</h5>
168
+ <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:#61AFEF">get</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">fieldPath</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">SnapshotFieldPath</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">unknown</span><span style="color:#ABB2BF">;</span></span></code></pre>
169
+ <h6 id="parameters-3">Parameters</h6>
170
+ <div class="table-scroll">
171
+
172
+
173
+
174
+
175
+
176
+
177
+
178
+
179
+
180
+
181
+
182
+
183
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>fieldPath</code></td><td align="left"><a href="#snapshotfieldpath"><code>SnapshotFieldPath</code></a></td></tr></tbody></table></div>
184
+ <h6 id="returns-7">Returns</h6>
185
+ <p><code>unknown</code></p>
186
+ <h6 id="inherited-from">Inherited from</h6>
187
+ <p><a href="#admindocumentsnapshot"><code>AdminDocumentSnapshot</code></a>.<a href="#get"><code>get</code></a></p>
87
188
  <hr>
88
189
  <p><a id="adminquerysnapshot"></a></p>
89
190
  <h3 id="adminquerysnapshot">AdminQuerySnapshot</h3>
@@ -114,11 +215,11 @@ Generated from the TypeScript declarations shipped at this import path.
114
215
 
115
216
 
116
217
  <table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="docs"></a> <code>docs</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#adminquerydocumentsnapshot"><code>AdminQueryDocumentSnapshot</code></a>[]</td></tr><tr><td align="left"><a id="empty"></a> <code>empty</code></td><td align="left"><code>readonly</code></td><td align="left"><code>boolean</code></td></tr><tr><td align="left"><a id="size"></a> <code>size</code></td><td align="left"><code>readonly</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
117
- <h4 id="methods-2">Methods</h4>
218
+ <h4 id="methods-3">Methods</h4>
118
219
  <p><a id="foreach"></a></p>
119
220
  <h5 id="foreach">forEach()</h5>
120
221
  <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:#61AFEF">forEach</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">callback</span><span style="color:#ABB2BF">: (</span><span style="color:#E06C75;font-style:italic">snap</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">AdminQueryDocumentSnapshot</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">=></span><span style="color:#C678DD"> void</span><span style="color:#ABB2BF">): </span><span style="color:#C678DD">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
121
- <h6 id="parameters">Parameters</h6>
222
+ <h6 id="parameters-4">Parameters</h6>
122
223
  <div class="table-scroll">
123
224
 
124
225
 
@@ -133,7 +234,7 @@ Generated from the TypeScript declarations shipped at this import path.
133
234
 
134
235
 
135
236
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>callback</code></td><td align="left">(<code>snap</code>: <a href="#adminquerydocumentsnapshot"><code>AdminQueryDocumentSnapshot</code></a>) => <code>void</code></td></tr></tbody></table></div>
136
- <h6 id="returns-2">Returns</h6>
237
+ <h6 id="returns-8">Returns</h6>
137
238
  <p><code>void</code></p>
138
239
  <hr>
139
240
  <p><a id="aggregatequerysnapshot"></a></p>
@@ -142,11 +243,11 @@ Generated from the TypeScript declarations shipped at this import path.
142
243
  computed numbers under the spec’s aliases. Empty-input averages
143
244
  resolve to <code>null</code> to mirror Firestore production behavior
144
245
  (averaging over zero documents has no meaningful number).</p>
145
- <h4 id="methods-3">Methods</h4>
246
+ <h4 id="methods-4">Methods</h4>
146
247
  <p><a id="data-4"></a></p>
147
248
  <h5 id="data-2">data()</h5>
148
249
  <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:#61AFEF">data</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">Record</span><span style="color:#56B6C2">&#x3C;</span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">number</span><span style="color:#56B6C2"> |</span><span style="color:#D19A66"> null</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
149
- <h6 id="returns-3">Returns</h6>
250
+ <h6 id="returns-9">Returns</h6>
150
251
  <p><code>Record</code>&#x3C;<code>string</code>, <code>number</code> | <code>null</code>></p>
151
252
  <hr>
152
253
  <p><a id="collectionreference"></a></p>
@@ -177,11 +278,11 @@ resolve to <code>null</code> to mirror Firestore production behavior
177
278
 
178
279
 
179
280
  <table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="id-2"></a> <code>id</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="path"></a> <code>path</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
180
- <h4 id="methods-4">Methods</h4>
281
+ <h4 id="methods-5">Methods</h4>
181
282
  <p><a id="add"></a></p>
182
283
  <h5 id="add">add()</h5>
183
284
  <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:#61AFEF">add</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">data</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">DocumentData</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">opts</span><span style="color:#C678DD">?:</span><span style="color:#E06C75"> OperationOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2">&#x3C;</span><span style="color:#E06C75">DocumentReference</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
184
- <h6 id="parameters-1">Parameters</h6>
285
+ <h6 id="parameters-5">Parameters</h6>
185
286
  <div class="table-scroll">
186
287
 
187
288
 
@@ -200,7 +301,7 @@ resolve to <code>null</code> to mirror Firestore production behavior
200
301
 
201
302
 
202
303
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>data</code></td><td align="left"><a href="/docs/pyric-firestore-reference-api/#documentdata"><code>DocumentData</code></a></td></tr><tr><td align="left"><code>opts?</code></td><td align="left"><code>OperationOptions</code></td></tr></tbody></table></div>
203
- <h6 id="returns-4">Returns</h6>
304
+ <h6 id="returns-10">Returns</h6>
204
305
  <p><code>Promise</code>&#x3C;<a href="#documentreference"><code>DocumentReference</code></a>></p>
205
306
  <p><a id="aggregate"></a></p>
206
307
  <h5 id="aggregate">aggregate()</h5>
@@ -216,7 +317,7 @@ the computed numbers under the same aliases via <code>.data()</code>.</p>
216
317
  <p>Where / orderBy clauses ARE applied before aggregation (they
217
318
  narrow the candidate doc set). <code>limit</code> is honored — the aggregate
218
319
  computes against the limited set, matching production semantics.</p>
219
- <h6 id="parameters-2">Parameters</h6>
320
+ <h6 id="parameters-6">Parameters</h6>
220
321
  <div class="table-scroll">
221
322
 
222
323
 
@@ -231,9 +332,9 @@ computes against the limited set, matching production semantics.</p>
231
332
 
232
333
 
233
334
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>spec</code></td><td align="left"><a href="#aggregatespec"><code>AggregateSpec</code></a></td></tr></tbody></table></div>
234
- <h6 id="returns-5">Returns</h6>
335
+ <h6 id="returns-11">Returns</h6>
235
336
  <p><code>Promise</code>&#x3C;<a href="#aggregatequerysnapshot"><code>AggregateQuerySnapshot</code></a>></p>
236
- <h6 id="inherited-from">Inherited from</h6>
337
+ <h6 id="inherited-from-1">Inherited from</h6>
237
338
  <p><a href="#query"><code>Query</code></a>.<a href="#aggregate-2"><code>aggregate</code></a></p>
238
339
  <p><a id="applyfilter"></a></p>
239
340
  <h5 id="applyfilter">applyFilter()</h5>
@@ -244,7 +345,7 @@ already on the query — same implicit-AND semantics as multiple
244
345
  <code>where()</code> calls. To OR multiple predicates, wrap them with
245
346
  <code>{ kind: 'or', filters: [...] }</code> before calling. Backs the
246
347
  modular <code>or()</code> / <code>and()</code> constraints in <code>pyric/firestore</code>.</p>
247
- <h6 id="parameters-3">Parameters</h6>
348
+ <h6 id="parameters-7">Parameters</h6>
248
349
  <div class="table-scroll">
249
350
 
250
351
 
@@ -259,14 +360,14 @@ modular <code>or()</code> / <code>and()</code> constraints in <code>pyric/firest
259
360
 
260
361
 
261
362
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>filter</code></td><td align="left"><a href="#filter"><code>Filter</code></a></td></tr></tbody></table></div>
262
- <h6 id="returns-6">Returns</h6>
363
+ <h6 id="returns-12">Returns</h6>
263
364
  <p><a href="#query"><code>Query</code></a></p>
264
- <h6 id="inherited-from-1">Inherited from</h6>
365
+ <h6 id="inherited-from-2">Inherited from</h6>
265
366
  <p><a href="#query"><code>Query</code></a>.<a href="#applyfilter-2"><code>applyFilter</code></a></p>
266
367
  <p><a id="doc"></a></p>
267
368
  <h5 id="doc">doc()</h5>
268
369
  <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:#61AFEF">doc</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">id</span><span style="color:#C678DD">?:</span><span style="color:#E06C75"> string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">DocumentReference</span><span style="color:#ABB2BF">;</span></span></code></pre>
269
- <h6 id="parameters-4">Parameters</h6>
370
+ <h6 id="parameters-8">Parameters</h6>
270
371
  <div class="table-scroll">
271
372
 
272
373
 
@@ -281,14 +382,14 @@ modular <code>or()</code> / <code>and()</code> constraints in <code>pyric/firest
281
382
 
282
383
 
283
384
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>id?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
284
- <h6 id="returns-7">Returns</h6>
385
+ <h6 id="returns-13">Returns</h6>
285
386
  <p><a href="#documentreference"><code>DocumentReference</code></a></p>
286
387
  <p><a id="endcursor"></a></p>
287
388
  <h5 id="endcursor">endCursor()</h5>
288
389
  <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:#61AFEF">endCursor</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">values</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">unknown</span><span style="color:#ABB2BF">[], </span><span style="color:#E06C75">inclusive</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">boolean</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">Query</span><span style="color:#ABB2BF">;</span></span></code></pre>
289
390
  <p>Set the end position of the query relative to the orderBy fields.
290
391
  <code>inclusive</code> controls <code>endAt</code> (true) vs <code>endBefore</code> (false).</p>
291
- <h6 id="parameters-5">Parameters</h6>
392
+ <h6 id="parameters-9">Parameters</h6>
292
393
  <div class="table-scroll">
293
394
 
294
395
 
@@ -307,15 +408,15 @@ modular <code>or()</code> / <code>and()</code> constraints in <code>pyric/firest
307
408
 
308
409
 
309
410
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>values</code></td><td align="left"><code>unknown</code>[]</td></tr><tr><td align="left"><code>inclusive</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
310
- <h6 id="returns-8">Returns</h6>
411
+ <h6 id="returns-14">Returns</h6>
311
412
  <p><a href="#query"><code>Query</code></a></p>
312
- <h6 id="inherited-from-2">Inherited from</h6>
413
+ <h6 id="inherited-from-3">Inherited from</h6>
313
414
  <p><a href="#query"><code>Query</code></a>.<a href="#endcursor-2"><code>endCursor</code></a></p>
314
415
  <p><a id="endcursorfromsnapshot"></a></p>
315
416
  <h5 id="endcursorfromsnapshot">endCursorFromSnapshot()</h5>
316
417
  <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:#61AFEF">endCursorFromSnapshot</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">snapshot</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">AdminDocumentSnapshot</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">inclusive</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">boolean</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">Query</span><span style="color:#ABB2BF">;</span></span></code></pre>
317
418
  <p>Snapshot-based variant of <a href="#endcursor-2">endCursor</a>.</p>
318
- <h6 id="parameters-6">Parameters</h6>
419
+ <h6 id="parameters-10">Parameters</h6>
319
420
  <div class="table-scroll">
320
421
 
321
422
 
@@ -334,14 +435,14 @@ modular <code>or()</code> / <code>and()</code> constraints in <code>pyric/firest
334
435
 
335
436
 
336
437
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>snapshot</code></td><td align="left"><a href="#admindocumentsnapshot"><code>AdminDocumentSnapshot</code></a></td></tr><tr><td align="left"><code>inclusive</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
337
- <h6 id="returns-9">Returns</h6>
438
+ <h6 id="returns-15">Returns</h6>
338
439
  <p><a href="#query"><code>Query</code></a></p>
339
- <h6 id="inherited-from-3">Inherited from</h6>
440
+ <h6 id="inherited-from-4">Inherited from</h6>
340
441
  <p><a href="#query"><code>Query</code></a>.<a href="#endcursorfromsnapshot-2"><code>endCursorFromSnapshot</code></a></p>
341
- <p><a id="get"></a></p>
342
- <h5 id="get">get()</h5>
442
+ <p><a id="get-4"></a></p>
443
+ <h5 id="get-2">get()</h5>
343
444
  <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:#61AFEF">get</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">opts</span><span style="color:#C678DD">?:</span><span style="color:#E06C75"> OperationOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2">&#x3C;</span><span style="color:#E06C75">AdminQuerySnapshot</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
344
- <h6 id="parameters-7">Parameters</h6>
445
+ <h6 id="parameters-11">Parameters</h6>
345
446
  <div class="table-scroll">
346
447
 
347
448
 
@@ -356,14 +457,14 @@ modular <code>or()</code> / <code>and()</code> constraints in <code>pyric/firest
356
457
 
357
458
 
358
459
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>opts?</code></td><td align="left"><code>OperationOptions</code></td></tr></tbody></table></div>
359
- <h6 id="returns-10">Returns</h6>
460
+ <h6 id="returns-16">Returns</h6>
360
461
  <p><code>Promise</code>&#x3C;<a href="#adminquerysnapshot"><code>AdminQuerySnapshot</code></a>></p>
361
- <h6 id="inherited-from-4">Inherited from</h6>
362
- <p><a href="#query"><code>Query</code></a>.<a href="#get-6"><code>get</code></a></p>
462
+ <h6 id="inherited-from-5">Inherited from</h6>
463
+ <p><a href="#query"><code>Query</code></a>.<a href="#get-10"><code>get</code></a></p>
363
464
  <p><a id="limit"></a></p>
364
465
  <h5 id="limit">limit()</h5>
365
466
  <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:#61AFEF">limit</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">n</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">number</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">Query</span><span style="color:#ABB2BF">;</span></span></code></pre>
366
- <h6 id="parameters-8">Parameters</h6>
467
+ <h6 id="parameters-12">Parameters</h6>
367
468
  <div class="table-scroll">
368
469
 
369
470
 
@@ -378,9 +479,9 @@ modular <code>or()</code> / <code>and()</code> constraints in <code>pyric/firest
378
479
 
379
480
 
380
481
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>n</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
381
- <h6 id="returns-11">Returns</h6>
482
+ <h6 id="returns-17">Returns</h6>
382
483
  <p><a href="#query"><code>Query</code></a></p>
383
- <h6 id="inherited-from-5">Inherited from</h6>
484
+ <h6 id="inherited-from-6">Inherited from</h6>
384
485
  <p><a href="#query"><code>Query</code></a>.<a href="#limit-2"><code>limit</code></a></p>
385
486
  <p><a id="limittolast"></a></p>
386
487
  <h5 id="limittolast">limitToLast()</h5>
@@ -389,7 +490,7 @@ modular <code>or()</code> / <code>and()</code> constraints in <code>pyric/firest
389
490
  the orderBy, taking <code>n</code>, then re-reversing — the simulator
390
491
  implements it that way. Requires at least one <code>orderBy</code> clause on
391
492
  the query (matches the JS SDK’s runtime contract).</p>
392
- <h6 id="parameters-9">Parameters</h6>
493
+ <h6 id="parameters-13">Parameters</h6>
393
494
  <div class="table-scroll">
394
495
 
395
496
 
@@ -404,14 +505,14 @@ the query (matches the JS SDK’s runtime contract).</p>
404
505
 
405
506
 
406
507
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>n</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
407
- <h6 id="returns-12">Returns</h6>
508
+ <h6 id="returns-18">Returns</h6>
408
509
  <p><a href="#query"><code>Query</code></a></p>
409
- <h6 id="inherited-from-6">Inherited from</h6>
510
+ <h6 id="inherited-from-7">Inherited from</h6>
410
511
  <p><a href="#query"><code>Query</code></a>.<a href="#limittolast-2"><code>limitToLast</code></a></p>
411
512
  <p><a id="orderby"></a></p>
412
513
  <h5 id="orderby">orderBy()</h5>
413
- <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:#61AFEF">orderBy</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">field</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">direction</span><span style="color:#C678DD">?:</span><span style="color:#E06C75"> OrderDirection</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">Query</span><span style="color:#ABB2BF">;</span></span></code></pre>
414
- <h6 id="parameters-10">Parameters</h6>
514
+ <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:#61AFEF">orderBy</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">field</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">direction</span><span style="color:#C678DD">?:</span><span style="color:#E06C75"> QueryOrderDirection</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">Query</span><span style="color:#ABB2BF">;</span></span></code></pre>
515
+ <h6 id="parameters-14">Parameters</h6>
415
516
  <div class="table-scroll">
416
517
 
417
518
 
@@ -429,10 +530,10 @@ the query (matches the JS SDK’s runtime contract).</p>
429
530
 
430
531
 
431
532
 
432
- <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>field</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>direction?</code></td><td align="left"><a href="/docs/pyric-firestore-reference-api/#orderdirection"><code>OrderDirection</code></a></td></tr></tbody></table></div>
433
- <h6 id="returns-13">Returns</h6>
533
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>field</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>direction?</code></td><td align="left"><code>QueryOrderDirection</code></td></tr></tbody></table></div>
534
+ <h6 id="returns-19">Returns</h6>
434
535
  <p><a href="#query"><code>Query</code></a></p>
435
- <h6 id="inherited-from-7">Inherited from</h6>
536
+ <h6 id="inherited-from-8">Inherited from</h6>
436
537
  <p><a href="#query"><code>Query</code></a>.<a href="#orderby-2"><code>orderBy</code></a></p>
437
538
  <p><a id="startcursor"></a></p>
438
539
  <h5 id="startcursor">startCursor()</h5>
@@ -442,7 +543,7 @@ fields. <code>values</code> corresponds 1:1 with the orderBy clauses on the
442
543
  query (one value per clause); <code>inclusive</code> controls <code>startAt</code> (true)
443
544
  vs <code>startAfter</code> (false). Repeated calls replace the previous
444
545
  cursor — matches production.</p>
445
- <h6 id="parameters-11">Parameters</h6>
546
+ <h6 id="parameters-15">Parameters</h6>
446
547
  <div class="table-scroll">
447
548
 
448
549
 
@@ -461,9 +562,9 @@ cursor — matches production.</p>
461
562
 
462
563
 
463
564
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>values</code></td><td align="left"><code>unknown</code>[]</td></tr><tr><td align="left"><code>inclusive</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
464
- <h6 id="returns-14">Returns</h6>
565
+ <h6 id="returns-20">Returns</h6>
465
566
  <p><a href="#query"><code>Query</code></a></p>
466
- <h6 id="inherited-from-8">Inherited from</h6>
567
+ <h6 id="inherited-from-9">Inherited from</h6>
467
568
  <p><a href="#query"><code>Query</code></a>.<a href="#startcursor-2"><code>startCursor</code></a></p>
468
569
  <p><a id="startcursorfromsnapshot"></a></p>
469
570
  <h5 id="startcursorfromsnapshot">startCursorFromSnapshot()</h5>
@@ -475,7 +576,7 @@ and shines for cursor-based pagination (“hand me the next page
475
576
  after this one”). Requires at least one <code>orderBy</code> clause —
476
577
  thrown at call time, not at get-time, so the failure surfaces
477
578
  close to the bug.</p>
478
- <h6 id="parameters-12">Parameters</h6>
579
+ <h6 id="parameters-16">Parameters</h6>
479
580
  <div class="table-scroll">
480
581
 
481
582
 
@@ -494,17 +595,17 @@ close to the bug.</p>
494
595
 
495
596
 
496
597
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>snapshot</code></td><td align="left"><a href="#admindocumentsnapshot"><code>AdminDocumentSnapshot</code></a></td></tr><tr><td align="left"><code>inclusive</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
497
- <h6 id="returns-15">Returns</h6>
598
+ <h6 id="returns-21">Returns</h6>
498
599
  <p><a href="#query"><code>Query</code></a></p>
499
- <h6 id="inherited-from-9">Inherited from</h6>
600
+ <h6 id="inherited-from-10">Inherited from</h6>
500
601
  <p><a href="#query"><code>Query</code></a>.<a href="#startcursorfromsnapshot-2"><code>startCursorFromSnapshot</code></a></p>
501
602
  <p><a id="where"></a></p>
502
603
  <h5 id="where">where()</h5>
503
604
  <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:#61AFEF">where</span><span style="color:#ABB2BF">(</span></span>
504
605
  <span class="line"><span style="color:#E06C75"> field</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">,</span></span>
505
- <span class="line"><span style="color:#E06C75"> op</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">WhereFilterOp</span><span style="color:#ABB2BF">,</span></span>
606
+ <span class="line"><span style="color:#E06C75"> op</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">QueryWhereFilterOp</span><span style="color:#ABB2BF">,</span></span>
506
607
  <span class="line"><span style="color:#E06C75"> value</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">unknown</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">Query</span><span style="color:#ABB2BF">;</span></span></code></pre>
507
- <h6 id="parameters-13">Parameters</h6>
608
+ <h6 id="parameters-17">Parameters</h6>
508
609
  <div class="table-scroll">
509
610
 
510
611
 
@@ -526,10 +627,10 @@ close to the bug.</p>
526
627
 
527
628
 
528
629
 
529
- <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>field</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>op</code></td><td align="left"><a href="/docs/pyric-firestore-reference-api/#wherefilterop"><code>WhereFilterOp</code></a></td></tr><tr><td align="left"><code>value</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
530
- <h6 id="returns-16">Returns</h6>
630
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>field</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>op</code></td><td align="left"><code>QueryWhereFilterOp</code></td></tr><tr><td align="left"><code>value</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
631
+ <h6 id="returns-22">Returns</h6>
531
632
  <p><a href="#query"><code>Query</code></a></p>
532
- <h6 id="inherited-from-10">Inherited from</h6>
633
+ <h6 id="inherited-from-11">Inherited from</h6>
533
634
  <p><a href="#query"><code>Query</code></a>.<a href="#where-2"><code>where</code></a></p>
534
635
  <hr>
535
636
  <p><a id="docchangesoptions"></a></p>
@@ -620,11 +721,11 @@ close to the bug.</p>
620
721
 
621
722
 
622
723
  <table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="id-3"></a> <code>id</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="parent"></a> <code>parent</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#collectionreference"><code>CollectionReference</code></a></td></tr><tr><td align="left"><a id="path-1"></a> <code>path</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
623
- <h4 id="methods-5">Methods</h4>
724
+ <h4 id="methods-6">Methods</h4>
624
725
  <p><a id="collection"></a></p>
625
726
  <h5 id="collection">collection()</h5>
626
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:#61AFEF">collection</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">name</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">CollectionReference</span><span style="color:#ABB2BF">;</span></span></code></pre>
627
- <h6 id="parameters-14">Parameters</h6>
728
+ <h6 id="parameters-18">Parameters</h6>
628
729
  <div class="table-scroll">
629
730
 
630
731
 
@@ -639,12 +740,12 @@ close to the bug.</p>
639
740
 
640
741
 
641
742
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>name</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
642
- <h6 id="returns-17">Returns</h6>
743
+ <h6 id="returns-23">Returns</h6>
643
744
  <p><a href="#collectionreference"><code>CollectionReference</code></a></p>
644
745
  <p><a id="delete"></a></p>
645
746
  <h5 id="delete">delete()</h5>
646
747
  <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">delete</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">opts</span><span style="color:#C678DD">?:</span><span style="color:#E06C75"> OperationOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2">&#x3C;</span><span style="color:#C678DD">void</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
647
- <h6 id="parameters-15">Parameters</h6>
748
+ <h6 id="parameters-19">Parameters</h6>
648
749
  <div class="table-scroll">
649
750
 
650
751
 
@@ -659,12 +760,12 @@ close to the bug.</p>
659
760
 
660
761
 
661
762
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>opts?</code></td><td align="left"><code>OperationOptions</code></td></tr></tbody></table></div>
662
- <h6 id="returns-18">Returns</h6>
763
+ <h6 id="returns-24">Returns</h6>
663
764
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
664
- <p><a id="get-2"></a></p>
665
- <h5 id="get-1">get()</h5>
765
+ <p><a id="get-6"></a></p>
766
+ <h5 id="get-3">get()</h5>
666
767
  <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:#61AFEF">get</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">opts</span><span style="color:#C678DD">?:</span><span style="color:#E06C75"> OperationOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2">&#x3C;</span><span style="color:#E06C75">AdminDocumentSnapshot</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
667
- <h6 id="parameters-16">Parameters</h6>
768
+ <h6 id="parameters-20">Parameters</h6>
668
769
  <div class="table-scroll">
669
770
 
670
771
 
@@ -679,12 +780,12 @@ close to the bug.</p>
679
780
 
680
781
 
681
782
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>opts?</code></td><td align="left"><code>OperationOptions</code></td></tr></tbody></table></div>
682
- <h6 id="returns-19">Returns</h6>
783
+ <h6 id="returns-25">Returns</h6>
683
784
  <p><code>Promise</code>&#x3C;<a href="#admindocumentsnapshot"><code>AdminDocumentSnapshot</code></a>></p>
684
785
  <p><a id="set"></a></p>
685
786
  <h5 id="set">set()</h5>
686
787
  <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:#61AFEF">set</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">data</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">DocumentData</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">options</span><span style="color:#C678DD">?:</span><span style="color:#E06C75"> SetOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2">&#x3C;</span><span style="color:#C678DD">void</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
687
- <h6 id="parameters-17">Parameters</h6>
788
+ <h6 id="parameters-21">Parameters</h6>
688
789
  <div class="table-scroll">
689
790
 
690
791
 
@@ -703,12 +804,12 @@ close to the bug.</p>
703
804
 
704
805
 
705
806
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>data</code></td><td align="left"><a href="/docs/pyric-firestore-reference-api/#documentdata"><code>DocumentData</code></a></td></tr><tr><td align="left"><code>options?</code></td><td align="left"><a href="#setoptions"><code>SetOptions</code></a></td></tr></tbody></table></div>
706
- <h6 id="returns-20">Returns</h6>
807
+ <h6 id="returns-26">Returns</h6>
707
808
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
708
809
  <p><a id="update"></a></p>
709
810
  <h5 id="update">update()</h5>
710
811
  <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:#61AFEF">update</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">data</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">DocumentData</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">opts</span><span style="color:#C678DD">?:</span><span style="color:#E06C75"> OperationOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2">&#x3C;</span><span style="color:#C678DD">void</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
711
- <h6 id="parameters-18">Parameters</h6>
812
+ <h6 id="parameters-22">Parameters</h6>
712
813
  <div class="table-scroll">
713
814
 
714
815
 
@@ -727,7 +828,7 @@ close to the bug.</p>
727
828
 
728
829
 
729
830
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>data</code></td><td align="left"><a href="/docs/pyric-firestore-reference-api/#documentdata"><code>DocumentData</code></a></td></tr><tr><td align="left"><code>opts?</code></td><td align="left"><code>OperationOptions</code></td></tr></tbody></table></div>
730
- <h6 id="returns-21">Returns</h6>
831
+ <h6 id="returns-27">Returns</h6>
731
832
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
732
833
  <hr>
733
834
  <p><a id="documentsnapshot"></a></p>
@@ -763,24 +864,24 @@ close to the bug.</p>
763
864
 
764
865
 
765
866
  <table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="id-4"></a> <code>id</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="metadata"></a> <code>metadata</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#snapshotmetadata"><code>SnapshotMetadata</code></a></td></tr><tr><td align="left"><a id="ref-2"></a> <code>ref</code></td><td align="left"><code>readonly</code></td><td align="left"><code>SnapshotDocRef</code></td></tr></tbody></table></div>
766
- <h4 id="methods-6">Methods</h4>
867
+ <h4 id="methods-7">Methods</h4>
767
868
  <p><a id="data-6"></a></p>
768
869
  <h5 id="data-3">data()</h5>
769
870
  <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:#61AFEF">data</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">DocumentData</span><span style="color:#ABB2BF">;</span></span></code></pre>
770
- <h6 id="returns-22">Returns</h6>
871
+ <h6 id="returns-28">Returns</h6>
771
872
  <p><code>DocumentData</code></p>
772
873
  <p><a id="exists-2"></a></p>
773
874
  <h5 id="exists">exists()</h5>
774
875
  <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:#61AFEF">exists</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">boolean</span><span style="color:#ABB2BF">;</span></span></code></pre>
775
- <h6 id="returns-23">Returns</h6>
876
+ <h6 id="returns-29">Returns</h6>
776
877
  <p><code>boolean</code></p>
777
- <p><a id="get-4"></a></p>
778
- <h5 id="get-2">get()</h5>
779
- <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:#61AFEF">get</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">fieldPath</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">unknown</span><span style="color:#ABB2BF">;</span></span></code></pre>
878
+ <p><a id="get-8"></a></p>
879
+ <h5 id="get-4">get()</h5>
880
+ <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:#61AFEF">get</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">fieldPath</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">SnapshotFieldPath</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">unknown</span><span style="color:#ABB2BF">;</span></span></code></pre>
780
881
  <p>Field accessor mirroring <code>firebase/firestore</code>’s <code>DocumentSnapshot.get(fieldPath)</code>.
781
882
  Dotted paths supported. Missing intermediate keys yield <code>undefined</code>
782
883
  — production behavior; agents commonly chain optional reads.</p>
783
- <h6 id="parameters-19">Parameters</h6>
884
+ <h6 id="parameters-23">Parameters</h6>
784
885
  <div class="table-scroll">
785
886
 
786
887
 
@@ -794,8 +895,8 @@ Dotted paths supported. Missing intermediate keys yield <code>undefined</code>
794
895
 
795
896
 
796
897
 
797
- <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>fieldPath</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
798
- <h6 id="returns-24">Returns</h6>
898
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>fieldPath</code></td><td align="left"><a href="#snapshotfieldpath"><code>SnapshotFieldPath</code></a></td></tr></tbody></table></div>
899
+ <h6 id="returns-30">Returns</h6>
799
900
  <p><code>unknown</code></p>
800
901
  <hr>
801
902
  <p><a id="firestore"></a></p>
@@ -804,16 +905,16 @@ Dotted paths supported. Missing intermediate keys yield <code>undefined</code>
804
905
  <ul>
805
906
  <li><a href="#sandboxfirestore"><code>SandboxFirestore</code></a></li>
806
907
  </ul>
807
- <h4 id="methods-7">Methods</h4>
908
+ <h4 id="methods-8">Methods</h4>
808
909
  <p><a id="batch"></a></p>
809
910
  <h5 id="batch">batch()</h5>
810
911
  <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:#61AFEF">batch</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">WriteBatch</span><span style="color:#ABB2BF">;</span></span></code></pre>
811
- <h6 id="returns-25">Returns</h6>
912
+ <h6 id="returns-31">Returns</h6>
812
913
  <p><a href="#writebatch"><code>WriteBatch</code></a></p>
813
914
  <p><a id="collection-2"></a></p>
814
915
  <h5 id="collection-1">collection()</h5>
815
916
  <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:#61AFEF">collection</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">path</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">CollectionReference</span><span style="color:#ABB2BF">;</span></span></code></pre>
816
- <h6 id="parameters-20">Parameters</h6>
917
+ <h6 id="parameters-24">Parameters</h6>
817
918
  <div class="table-scroll">
818
919
 
819
920
 
@@ -828,7 +929,7 @@ Dotted paths supported. Missing intermediate keys yield <code>undefined</code>
828
929
 
829
930
 
830
931
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
831
- <h6 id="returns-26">Returns</h6>
932
+ <h6 id="returns-32">Returns</h6>
832
933
  <p><a href="#collectionreference"><code>CollectionReference</code></a></p>
833
934
  <p><a id="collectiongroup"></a></p>
834
935
  <h5 id="collectiongroup">collectionGroup()</h5>
@@ -840,7 +941,7 @@ Admin SDK’s <code>Firestore.collectionGroup(id)</code> shape.</p>
840
941
  <p>The returned <code>Query</code> accepts <code>where</code> / <code>orderBy</code> / <code>limit</code> like
841
942
  any other; the simulator gathers all candidate docs first, then
842
943
  applies the constraints in-memory.</p>
843
- <h6 id="parameters-21">Parameters</h6>
944
+ <h6 id="parameters-25">Parameters</h6>
844
945
  <div class="table-scroll">
845
946
 
846
947
 
@@ -855,12 +956,12 @@ applies the constraints in-memory.</p>
855
956
 
856
957
 
857
958
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>collectionId</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
858
- <h6 id="returns-27">Returns</h6>
959
+ <h6 id="returns-33">Returns</h6>
859
960
  <p><a href="#query"><code>Query</code></a></p>
860
961
  <p><a id="doc-3"></a></p>
861
962
  <h5 id="doc-1">doc()</h5>
862
963
  <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:#61AFEF">doc</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">path</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">DocumentReference</span><span style="color:#ABB2BF">;</span></span></code></pre>
863
- <h6 id="parameters-22">Parameters</h6>
964
+ <h6 id="parameters-26">Parameters</h6>
864
965
  <div class="table-scroll">
865
966
 
866
967
 
@@ -875,7 +976,7 @@ applies the constraints in-memory.</p>
875
976
 
876
977
 
877
978
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
878
- <h6 id="returns-28">Returns</h6>
979
+ <h6 id="returns-34">Returns</h6>
879
980
  <p><a href="#documentreference"><code>DocumentReference</code></a></p>
880
981
  <p><a id="runtransaction"></a></p>
881
982
  <h5 id="runtransaction">runTransaction()</h5>
@@ -893,7 +994,7 @@ applies the constraints in-memory.</p>
893
994
 
894
995
 
895
996
  <table><thead><tr><th align="left">Type Parameter</th></tr></thead><tbody><tr><td align="left"><code>R</code></td></tr></tbody></table></div>
896
- <h6 id="parameters-23">Parameters</h6>
997
+ <h6 id="parameters-27">Parameters</h6>
897
998
  <div class="table-scroll">
898
999
 
899
1000
 
@@ -912,7 +1013,7 @@ applies the constraints in-memory.</p>
912
1013
 
913
1014
 
914
1015
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>fn</code></td><td align="left">(<code>tx</code>: <a href="#transaction"><code>Transaction</code></a>) => <code>R</code> | <code>Promise</code>&#x3C;<code>R</code>></td></tr><tr><td align="left"><code>opts?</code></td><td align="left"><code>OperationOptions</code></td></tr></tbody></table></div>
915
- <h6 id="returns-29">Returns</h6>
1016
+ <h6 id="returns-35">Returns</h6>
916
1017
  <p><code>Promise</code>&#x3C;<code>R</code>></p>
917
1018
  <hr>
918
1019
  <p><a id="lintwarning"></a></p>
@@ -981,7 +1082,7 @@ applies the constraints in-memory.</p>
981
1082
  <ul>
982
1083
  <li><a href="#collectionreference"><code>CollectionReference</code></a></li>
983
1084
  </ul>
984
- <h4 id="methods-8">Methods</h4>
1085
+ <h4 id="methods-9">Methods</h4>
985
1086
  <p><a id="aggregate-2"></a></p>
986
1087
  <h5 id="aggregate-1">aggregate()</h5>
987
1088
  <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:#61AFEF">aggregate</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">spec</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">AggregateSpec</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2">&#x3C;</span><span style="color:#E06C75">AggregateQuerySnapshot</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
@@ -996,7 +1097,7 @@ the computed numbers under the same aliases via <code>.data()</code>.</p>
996
1097
  <p>Where / orderBy clauses ARE applied before aggregation (they
997
1098
  narrow the candidate doc set). <code>limit</code> is honored — the aggregate
998
1099
  computes against the limited set, matching production semantics.</p>
999
- <h6 id="parameters-24">Parameters</h6>
1100
+ <h6 id="parameters-28">Parameters</h6>
1000
1101
  <div class="table-scroll">
1001
1102
 
1002
1103
 
@@ -1011,7 +1112,7 @@ computes against the limited set, matching production semantics.</p>
1011
1112
 
1012
1113
 
1013
1114
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>spec</code></td><td align="left"><a href="#aggregatespec"><code>AggregateSpec</code></a></td></tr></tbody></table></div>
1014
- <h6 id="returns-30">Returns</h6>
1115
+ <h6 id="returns-36">Returns</h6>
1015
1116
  <p><code>Promise</code>&#x3C;<a href="#aggregatequerysnapshot"><code>AggregateQuerySnapshot</code></a>></p>
1016
1117
  <p><a id="applyfilter-2"></a></p>
1017
1118
  <h5 id="applyfilter-1">applyFilter()</h5>
@@ -1022,7 +1123,7 @@ already on the query — same implicit-AND semantics as multiple
1022
1123
  <code>where()</code> calls. To OR multiple predicates, wrap them with
1023
1124
  <code>{ kind: 'or', filters: [...] }</code> before calling. Backs the
1024
1125
  modular <code>or()</code> / <code>and()</code> constraints in <code>pyric/firestore</code>.</p>
1025
- <h6 id="parameters-25">Parameters</h6>
1126
+ <h6 id="parameters-29">Parameters</h6>
1026
1127
  <div class="table-scroll">
1027
1128
 
1028
1129
 
@@ -1037,14 +1138,14 @@ modular <code>or()</code> / <code>and()</code> constraints in <code>pyric/firest
1037
1138
 
1038
1139
 
1039
1140
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>filter</code></td><td align="left"><a href="#filter"><code>Filter</code></a></td></tr></tbody></table></div>
1040
- <h6 id="returns-31">Returns</h6>
1141
+ <h6 id="returns-37">Returns</h6>
1041
1142
  <p><a href="#query"><code>Query</code></a></p>
1042
1143
  <p><a id="endcursor-2"></a></p>
1043
1144
  <h5 id="endcursor-1">endCursor()</h5>
1044
1145
  <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:#61AFEF">endCursor</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">values</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">unknown</span><span style="color:#ABB2BF">[], </span><span style="color:#E06C75">inclusive</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">boolean</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">Query</span><span style="color:#ABB2BF">;</span></span></code></pre>
1045
1146
  <p>Set the end position of the query relative to the orderBy fields.
1046
1147
  <code>inclusive</code> controls <code>endAt</code> (true) vs <code>endBefore</code> (false).</p>
1047
- <h6 id="parameters-26">Parameters</h6>
1148
+ <h6 id="parameters-30">Parameters</h6>
1048
1149
  <div class="table-scroll">
1049
1150
 
1050
1151
 
@@ -1063,13 +1164,13 @@ modular <code>or()</code> / <code>and()</code> constraints in <code>pyric/firest
1063
1164
 
1064
1165
 
1065
1166
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>values</code></td><td align="left"><code>unknown</code>[]</td></tr><tr><td align="left"><code>inclusive</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
1066
- <h6 id="returns-32">Returns</h6>
1167
+ <h6 id="returns-38">Returns</h6>
1067
1168
  <p><a href="#query"><code>Query</code></a></p>
1068
1169
  <p><a id="endcursorfromsnapshot-2"></a></p>
1069
1170
  <h5 id="endcursorfromsnapshot-1">endCursorFromSnapshot()</h5>
1070
1171
  <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:#61AFEF">endCursorFromSnapshot</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">snapshot</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">AdminDocumentSnapshot</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">inclusive</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">boolean</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">Query</span><span style="color:#ABB2BF">;</span></span></code></pre>
1071
1172
  <p>Snapshot-based variant of <a href="#endcursor-2">endCursor</a>.</p>
1072
- <h6 id="parameters-27">Parameters</h6>
1173
+ <h6 id="parameters-31">Parameters</h6>
1073
1174
  <div class="table-scroll">
1074
1175
 
1075
1176
 
@@ -1088,12 +1189,12 @@ modular <code>or()</code> / <code>and()</code> constraints in <code>pyric/firest
1088
1189
 
1089
1190
 
1090
1191
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>snapshot</code></td><td align="left"><a href="#admindocumentsnapshot"><code>AdminDocumentSnapshot</code></a></td></tr><tr><td align="left"><code>inclusive</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
1091
- <h6 id="returns-33">Returns</h6>
1192
+ <h6 id="returns-39">Returns</h6>
1092
1193
  <p><a href="#query"><code>Query</code></a></p>
1093
- <p><a id="get-6"></a></p>
1094
- <h5 id="get-3">get()</h5>
1194
+ <p><a id="get-10"></a></p>
1195
+ <h5 id="get-5">get()</h5>
1095
1196
  <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:#61AFEF">get</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">opts</span><span style="color:#C678DD">?:</span><span style="color:#E06C75"> OperationOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2">&#x3C;</span><span style="color:#E06C75">AdminQuerySnapshot</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
1096
- <h6 id="parameters-28">Parameters</h6>
1197
+ <h6 id="parameters-32">Parameters</h6>
1097
1198
  <div class="table-scroll">
1098
1199
 
1099
1200
 
@@ -1108,12 +1209,12 @@ modular <code>or()</code> / <code>and()</code> constraints in <code>pyric/firest
1108
1209
 
1109
1210
 
1110
1211
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>opts?</code></td><td align="left"><code>OperationOptions</code></td></tr></tbody></table></div>
1111
- <h6 id="returns-34">Returns</h6>
1212
+ <h6 id="returns-40">Returns</h6>
1112
1213
  <p><code>Promise</code>&#x3C;<a href="#adminquerysnapshot"><code>AdminQuerySnapshot</code></a>></p>
1113
1214
  <p><a id="limit-2"></a></p>
1114
1215
  <h5 id="limit-1">limit()</h5>
1115
1216
  <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:#61AFEF">limit</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">n</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">number</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">Query</span><span style="color:#ABB2BF">;</span></span></code></pre>
1116
- <h6 id="parameters-29">Parameters</h6>
1217
+ <h6 id="parameters-33">Parameters</h6>
1117
1218
  <div class="table-scroll">
1118
1219
 
1119
1220
 
@@ -1128,7 +1229,7 @@ modular <code>or()</code> / <code>and()</code> constraints in <code>pyric/firest
1128
1229
 
1129
1230
 
1130
1231
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>n</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
1131
- <h6 id="returns-35">Returns</h6>
1232
+ <h6 id="returns-41">Returns</h6>
1132
1233
  <p><a href="#query"><code>Query</code></a></p>
1133
1234
  <p><a id="limittolast-2"></a></p>
1134
1235
  <h5 id="limittolast-1">limitToLast()</h5>
@@ -1137,7 +1238,7 @@ modular <code>or()</code> / <code>and()</code> constraints in <code>pyric/firest
1137
1238
  the orderBy, taking <code>n</code>, then re-reversing — the simulator
1138
1239
  implements it that way. Requires at least one <code>orderBy</code> clause on
1139
1240
  the query (matches the JS SDK’s runtime contract).</p>
1140
- <h6 id="parameters-30">Parameters</h6>
1241
+ <h6 id="parameters-34">Parameters</h6>
1141
1242
  <div class="table-scroll">
1142
1243
 
1143
1244
 
@@ -1152,12 +1253,12 @@ the query (matches the JS SDK’s runtime contract).</p>
1152
1253
 
1153
1254
 
1154
1255
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>n</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
1155
- <h6 id="returns-36">Returns</h6>
1256
+ <h6 id="returns-42">Returns</h6>
1156
1257
  <p><a href="#query"><code>Query</code></a></p>
1157
1258
  <p><a id="orderby-2"></a></p>
1158
1259
  <h5 id="orderby-1">orderBy()</h5>
1159
- <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:#61AFEF">orderBy</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">field</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">direction</span><span style="color:#C678DD">?:</span><span style="color:#E06C75"> OrderDirection</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">Query</span><span style="color:#ABB2BF">;</span></span></code></pre>
1160
- <h6 id="parameters-31">Parameters</h6>
1260
+ <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:#61AFEF">orderBy</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">field</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">direction</span><span style="color:#C678DD">?:</span><span style="color:#E06C75"> QueryOrderDirection</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">Query</span><span style="color:#ABB2BF">;</span></span></code></pre>
1261
+ <h6 id="parameters-35">Parameters</h6>
1161
1262
  <div class="table-scroll">
1162
1263
 
1163
1264
 
@@ -1175,8 +1276,8 @@ the query (matches the JS SDK’s runtime contract).</p>
1175
1276
 
1176
1277
 
1177
1278
 
1178
- <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>field</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>direction?</code></td><td align="left"><a href="/docs/pyric-firestore-reference-api/#orderdirection"><code>OrderDirection</code></a></td></tr></tbody></table></div>
1179
- <h6 id="returns-37">Returns</h6>
1279
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>field</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>direction?</code></td><td align="left"><code>QueryOrderDirection</code></td></tr></tbody></table></div>
1280
+ <h6 id="returns-43">Returns</h6>
1180
1281
  <p><a href="#query"><code>Query</code></a></p>
1181
1282
  <p><a id="startcursor-2"></a></p>
1182
1283
  <h5 id="startcursor-1">startCursor()</h5>
@@ -1186,7 +1287,7 @@ fields. <code>values</code> corresponds 1:1 with the orderBy clauses on the
1186
1287
  query (one value per clause); <code>inclusive</code> controls <code>startAt</code> (true)
1187
1288
  vs <code>startAfter</code> (false). Repeated calls replace the previous
1188
1289
  cursor — matches production.</p>
1189
- <h6 id="parameters-32">Parameters</h6>
1290
+ <h6 id="parameters-36">Parameters</h6>
1190
1291
  <div class="table-scroll">
1191
1292
 
1192
1293
 
@@ -1205,7 +1306,7 @@ cursor — matches production.</p>
1205
1306
 
1206
1307
 
1207
1308
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>values</code></td><td align="left"><code>unknown</code>[]</td></tr><tr><td align="left"><code>inclusive</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
1208
- <h6 id="returns-38">Returns</h6>
1309
+ <h6 id="returns-44">Returns</h6>
1209
1310
  <p><a href="#query"><code>Query</code></a></p>
1210
1311
  <p><a id="startcursorfromsnapshot-2"></a></p>
1211
1312
  <h5 id="startcursorfromsnapshot-1">startCursorFromSnapshot()</h5>
@@ -1217,7 +1318,7 @@ and shines for cursor-based pagination (“hand me the next page
1217
1318
  after this one”). Requires at least one <code>orderBy</code> clause —
1218
1319
  thrown at call time, not at get-time, so the failure surfaces
1219
1320
  close to the bug.</p>
1220
- <h6 id="parameters-33">Parameters</h6>
1321
+ <h6 id="parameters-37">Parameters</h6>
1221
1322
  <div class="table-scroll">
1222
1323
 
1223
1324
 
@@ -1236,15 +1337,15 @@ close to the bug.</p>
1236
1337
 
1237
1338
 
1238
1339
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>snapshot</code></td><td align="left"><a href="#admindocumentsnapshot"><code>AdminDocumentSnapshot</code></a></td></tr><tr><td align="left"><code>inclusive</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
1239
- <h6 id="returns-39">Returns</h6>
1340
+ <h6 id="returns-45">Returns</h6>
1240
1341
  <p><a href="#query"><code>Query</code></a></p>
1241
1342
  <p><a id="where-2"></a></p>
1242
1343
  <h5 id="where-1">where()</h5>
1243
1344
  <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:#61AFEF">where</span><span style="color:#ABB2BF">(</span></span>
1244
1345
  <span class="line"><span style="color:#E06C75"> field</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">,</span></span>
1245
- <span class="line"><span style="color:#E06C75"> op</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">WhereFilterOp</span><span style="color:#ABB2BF">,</span></span>
1346
+ <span class="line"><span style="color:#E06C75"> op</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">QueryWhereFilterOp</span><span style="color:#ABB2BF">,</span></span>
1246
1347
  <span class="line"><span style="color:#E06C75"> value</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">unknown</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">Query</span><span style="color:#ABB2BF">;</span></span></code></pre>
1247
- <h6 id="parameters-34">Parameters</h6>
1348
+ <h6 id="parameters-38">Parameters</h6>
1248
1349
  <div class="table-scroll">
1249
1350
 
1250
1351
 
@@ -1266,8 +1367,8 @@ close to the bug.</p>
1266
1367
 
1267
1368
 
1268
1369
 
1269
- <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>field</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>op</code></td><td align="left"><a href="/docs/pyric-firestore-reference-api/#wherefilterop"><code>WhereFilterOp</code></a></td></tr><tr><td align="left"><code>value</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
1270
- <h6 id="returns-40">Returns</h6>
1370
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>field</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>op</code></td><td align="left"><code>QueryWhereFilterOp</code></td></tr><tr><td align="left"><code>value</code></td><td align="left"><code>unknown</code></td></tr></tbody></table></div>
1371
+ <h6 id="returns-46">Returns</h6>
1271
1372
  <p><a href="#query"><code>Query</code></a></p>
1272
1373
  <hr>
1273
1374
  <p><a id="querydocumentsnapshot"></a></p>
@@ -1306,28 +1407,28 @@ the items inside a <code>QuerySnapshot.docs</code> array.</p>
1306
1407
 
1307
1408
 
1308
1409
  <table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="id-5"></a> <code>id</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="metadata-1"></a> <code>metadata</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#snapshotmetadata"><code>SnapshotMetadata</code></a></td></tr><tr><td align="left"><a id="ref-3"></a> <code>ref</code></td><td align="left"><code>readonly</code></td><td align="left"><code>SnapshotDocRef</code></td></tr></tbody></table></div>
1309
- <h4 id="methods-9">Methods</h4>
1410
+ <h4 id="methods-10">Methods</h4>
1310
1411
  <p><a id="data-8"></a></p>
1311
1412
  <h5 id="data-4">data()</h5>
1312
1413
  <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:#61AFEF">data</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">DocumentData</span><span style="color:#ABB2BF">;</span></span></code></pre>
1313
- <h6 id="returns-41">Returns</h6>
1414
+ <h6 id="returns-47">Returns</h6>
1314
1415
  <p><code>DocumentData</code></p>
1315
1416
  <h6 id="overrides-1">Overrides</h6>
1316
1417
  <p><a href="#documentsnapshot"><code>DocumentSnapshot</code></a>.<a href="#data-6"><code>data</code></a></p>
1317
1418
  <p><a id="exists-4"></a></p>
1318
1419
  <h5 id="exists-1">exists()</h5>
1319
1420
  <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:#61AFEF">exists</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">boolean</span><span style="color:#ABB2BF">;</span></span></code></pre>
1320
- <h6 id="returns-42">Returns</h6>
1421
+ <h6 id="returns-48">Returns</h6>
1321
1422
  <p><code>boolean</code></p>
1322
- <h6 id="inherited-from-11">Inherited from</h6>
1423
+ <h6 id="inherited-from-12">Inherited from</h6>
1323
1424
  <p><a href="#documentsnapshot"><code>DocumentSnapshot</code></a>.<a href="#exists-2"><code>exists</code></a></p>
1324
- <p><a id="get-8"></a></p>
1325
- <h5 id="get-4">get()</h5>
1326
- <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:#61AFEF">get</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">fieldPath</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">unknown</span><span style="color:#ABB2BF">;</span></span></code></pre>
1425
+ <p><a id="get-12"></a></p>
1426
+ <h5 id="get-6">get()</h5>
1427
+ <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:#61AFEF">get</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">fieldPath</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">SnapshotFieldPath</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">unknown</span><span style="color:#ABB2BF">;</span></span></code></pre>
1327
1428
  <p>Field accessor mirroring <code>firebase/firestore</code>’s <code>DocumentSnapshot.get(fieldPath)</code>.
1328
1429
  Dotted paths supported. Missing intermediate keys yield <code>undefined</code>
1329
1430
  — production behavior; agents commonly chain optional reads.</p>
1330
- <h6 id="parameters-35">Parameters</h6>
1431
+ <h6 id="parameters-39">Parameters</h6>
1331
1432
  <div class="table-scroll">
1332
1433
 
1333
1434
 
@@ -1341,11 +1442,11 @@ Dotted paths supported. Missing intermediate keys yield <code>undefined</code>
1341
1442
 
1342
1443
 
1343
1444
 
1344
- <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>fieldPath</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1345
- <h6 id="returns-43">Returns</h6>
1445
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>fieldPath</code></td><td align="left"><a href="#snapshotfieldpath"><code>SnapshotFieldPath</code></a></td></tr></tbody></table></div>
1446
+ <h6 id="returns-49">Returns</h6>
1346
1447
  <p><code>unknown</code></p>
1347
- <h6 id="inherited-from-12">Inherited from</h6>
1348
- <p><a href="#documentsnapshot"><code>DocumentSnapshot</code></a>.<a href="#get-4"><code>get</code></a></p>
1448
+ <h6 id="inherited-from-13">Inherited from</h6>
1449
+ <p><a href="#documentsnapshot"><code>DocumentSnapshot</code></a>.<a href="#get-8"><code>get</code></a></p>
1349
1450
  <hr>
1350
1451
  <p><a id="querysnapshot"></a></p>
1351
1452
  <h3 id="querysnapshot">QuerySnapshot</h3>
@@ -1386,7 +1487,7 @@ Dotted paths supported. Missing intermediate keys yield <code>undefined</code>
1386
1487
 
1387
1488
 
1388
1489
  <table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="docs-1"></a> <code>docs</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#querydocumentsnapshot"><code>QueryDocumentSnapshot</code></a>[]</td></tr><tr><td align="left"><a id="empty-1"></a> <code>empty</code></td><td align="left"><code>readonly</code></td><td align="left"><code>boolean</code></td></tr><tr><td align="left"><a id="metadata-2"></a> <code>metadata</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#snapshotmetadata"><code>SnapshotMetadata</code></a></td></tr><tr><td align="left"><a id="query-1"></a> <code>query</code></td><td align="left"><code>readonly</code></td><td align="left"><code>SnapshotQueryRef</code></td></tr><tr><td align="left"><a id="size-1"></a> <code>size</code></td><td align="left"><code>readonly</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
1389
- <h4 id="methods-10">Methods</h4>
1490
+ <h4 id="methods-11">Methods</h4>
1390
1491
  <p><a id="docchanges"></a></p>
1391
1492
  <h5 id="docchanges">docChanges()</h5>
1392
1493
  <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:#61AFEF">docChanges</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">options</span><span style="color:#C678DD">?:</span><span style="color:#E06C75"> DocChangesOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">DocumentChange</span><span style="color:#ABB2BF">[];</span></span></code></pre>
@@ -1394,7 +1495,7 @@ Dotted paths supported. Missing intermediate keys yield <code>undefined</code>
1394
1495
  called with <code>true</code> when the listener did not subscribe with
1395
1496
  <code>includeMetadataChanges: true</code>. The Slice 2 implementation produces
1396
1497
  “all docs added” on the first fire — Slice 3 supplies real diffs.</p>
1397
- <h6 id="parameters-36">Parameters</h6>
1498
+ <h6 id="parameters-40">Parameters</h6>
1398
1499
  <div class="table-scroll">
1399
1500
 
1400
1501
 
@@ -1409,12 +1510,12 @@ called with <code>true</code> when the listener did not subscribe with
1409
1510
 
1410
1511
 
1411
1512
  <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="#docchangesoptions"><code>DocChangesOptions</code></a></td></tr></tbody></table></div>
1412
- <h6 id="returns-44">Returns</h6>
1513
+ <h6 id="returns-50">Returns</h6>
1413
1514
  <p><a href="#documentchange"><code>DocumentChange</code></a>[]</p>
1414
1515
  <p><a id="foreach-2"></a></p>
1415
1516
  <h5 id="foreach-1">forEach()</h5>
1416
1517
  <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:#61AFEF">forEach</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">callback</span><span style="color:#ABB2BF">: (</span><span style="color:#E06C75;font-style:italic">snap</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">QueryDocumentSnapshot</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">=></span><span style="color:#C678DD"> void</span><span style="color:#ABB2BF">): </span><span style="color:#C678DD">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
1417
- <h6 id="parameters-37">Parameters</h6>
1518
+ <h6 id="parameters-41">Parameters</h6>
1418
1519
  <div class="table-scroll">
1419
1520
 
1420
1521
 
@@ -1429,7 +1530,7 @@ called with <code>true</code> when the listener did not subscribe with
1429
1530
 
1430
1531
 
1431
1532
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>callback</code></td><td align="left">(<code>snap</code>: <a href="#querydocumentsnapshot"><code>QueryDocumentSnapshot</code></a>) => <code>void</code></td></tr></tbody></table></div>
1432
- <h6 id="returns-45">Returns</h6>
1533
+ <h6 id="returns-51">Returns</h6>
1433
1534
  <p><code>void</code></p>
1434
1535
  <hr>
1435
1536
  <p><a id="rulesmetrics"></a></p>
@@ -1505,18 +1606,18 @@ confuse them with Firebase deployment semantics.</p>
1505
1606
  <ul>
1506
1607
  <li><a href="#firestore"><code>Firestore</code></a></li>
1507
1608
  </ul>
1508
- <h4 id="methods-11">Methods</h4>
1609
+ <h4 id="methods-12">Methods</h4>
1509
1610
  <p><a id="batch-2"></a></p>
1510
1611
  <h5 id="batch-1">batch()</h5>
1511
1612
  <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:#61AFEF">batch</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">WriteBatch</span><span style="color:#ABB2BF">;</span></span></code></pre>
1512
- <h6 id="returns-46">Returns</h6>
1613
+ <h6 id="returns-52">Returns</h6>
1513
1614
  <p><a href="#writebatch"><code>WriteBatch</code></a></p>
1514
- <h6 id="inherited-from-13">Inherited from</h6>
1615
+ <h6 id="inherited-from-14">Inherited from</h6>
1515
1616
  <p><a href="#firestore"><code>Firestore</code></a>.<a href="#batch"><code>batch</code></a></p>
1516
1617
  <p><a id="collection-4"></a></p>
1517
1618
  <h5 id="collection-2">collection()</h5>
1518
1619
  <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:#61AFEF">collection</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">path</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">CollectionReference</span><span style="color:#ABB2BF">;</span></span></code></pre>
1519
- <h6 id="parameters-38">Parameters</h6>
1620
+ <h6 id="parameters-42">Parameters</h6>
1520
1621
  <div class="table-scroll">
1521
1622
 
1522
1623
 
@@ -1531,9 +1632,9 @@ confuse them with Firebase deployment semantics.</p>
1531
1632
 
1532
1633
 
1533
1634
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1534
- <h6 id="returns-47">Returns</h6>
1635
+ <h6 id="returns-53">Returns</h6>
1535
1636
  <p><a href="#collectionreference"><code>CollectionReference</code></a></p>
1536
- <h6 id="inherited-from-14">Inherited from</h6>
1637
+ <h6 id="inherited-from-15">Inherited from</h6>
1537
1638
  <p><a href="#firestore"><code>Firestore</code></a>.<a href="#collection-2"><code>collection</code></a></p>
1538
1639
  <p><a id="collectiongroup-2"></a></p>
1539
1640
  <h5 id="collectiongroup-1">collectionGroup()</h5>
@@ -1545,7 +1646,7 @@ Admin SDK’s <code>Firestore.collectionGroup(id)</code> shape.</p>
1545
1646
  <p>The returned <code>Query</code> accepts <code>where</code> / <code>orderBy</code> / <code>limit</code> like
1546
1647
  any other; the simulator gathers all candidate docs first, then
1547
1648
  applies the constraints in-memory.</p>
1548
- <h6 id="parameters-39">Parameters</h6>
1649
+ <h6 id="parameters-43">Parameters</h6>
1549
1650
  <div class="table-scroll">
1550
1651
 
1551
1652
 
@@ -1560,14 +1661,14 @@ applies the constraints in-memory.</p>
1560
1661
 
1561
1662
 
1562
1663
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>collectionId</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1563
- <h6 id="returns-48">Returns</h6>
1664
+ <h6 id="returns-54">Returns</h6>
1564
1665
  <p><a href="#query"><code>Query</code></a></p>
1565
- <h6 id="inherited-from-15">Inherited from</h6>
1666
+ <h6 id="inherited-from-16">Inherited from</h6>
1566
1667
  <p><a href="#firestore"><code>Firestore</code></a>.<a href="#collectiongroup"><code>collectionGroup</code></a></p>
1567
1668
  <p><a id="doc-5"></a></p>
1568
1669
  <h5 id="doc-2">doc()</h5>
1569
1670
  <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:#61AFEF">doc</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">path</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">DocumentReference</span><span style="color:#ABB2BF">;</span></span></code></pre>
1570
- <h6 id="parameters-40">Parameters</h6>
1671
+ <h6 id="parameters-44">Parameters</h6>
1571
1672
  <div class="table-scroll">
1572
1673
 
1573
1674
 
@@ -1582,9 +1683,9 @@ applies the constraints in-memory.</p>
1582
1683
 
1583
1684
 
1584
1685
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1585
- <h6 id="returns-49">Returns</h6>
1686
+ <h6 id="returns-55">Returns</h6>
1586
1687
  <p><a href="#documentreference"><code>DocumentReference</code></a></p>
1587
- <h6 id="inherited-from-16">Inherited from</h6>
1688
+ <h6 id="inherited-from-17">Inherited from</h6>
1588
1689
  <p><a href="#firestore"><code>Firestore</code></a>.<a href="#doc-3"><code>doc</code></a></p>
1589
1690
  <p><a id="runtransaction-2"></a></p>
1590
1691
  <h5 id="runtransaction-1">runTransaction()</h5>
@@ -1602,7 +1703,7 @@ applies the constraints in-memory.</p>
1602
1703
 
1603
1704
 
1604
1705
  <table><thead><tr><th align="left">Type Parameter</th></tr></thead><tbody><tr><td align="left"><code>R</code></td></tr></tbody></table></div>
1605
- <h6 id="parameters-41">Parameters</h6>
1706
+ <h6 id="parameters-45">Parameters</h6>
1606
1707
  <div class="table-scroll">
1607
1708
 
1608
1709
 
@@ -1621,9 +1722,9 @@ applies the constraints in-memory.</p>
1621
1722
 
1622
1723
 
1623
1724
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>fn</code></td><td align="left">(<code>tx</code>: <a href="#transaction"><code>Transaction</code></a>) => <code>R</code> | <code>Promise</code>&#x3C;<code>R</code>></td></tr><tr><td align="left"><code>opts?</code></td><td align="left"><code>OperationOptions</code></td></tr></tbody></table></div>
1624
- <h6 id="returns-50">Returns</h6>
1725
+ <h6 id="returns-56">Returns</h6>
1625
1726
  <p><code>Promise</code>&#x3C;<code>R</code>></p>
1626
- <h6 id="inherited-from-17">Inherited from</h6>
1727
+ <h6 id="inherited-from-18">Inherited from</h6>
1627
1728
  <p><a href="#firestore"><code>Firestore</code></a>.<a href="#runtransaction"><code>runTransaction</code></a></p>
1628
1729
  <p><a id="seed"></a></p>
1629
1730
  <h5 id="seed">seed()</h5>
@@ -1633,7 +1734,7 @@ applies the constraints in-memory.</p>
1633
1734
  <p>Replace stored documents with a new seed map. Active rules are
1634
1735
  preserved. Pass an empty <code>documents</code> map (or omit it) to clear
1635
1736
  state without touching rules.</p>
1636
- <h6 id="parameters-42">Parameters</h6>
1737
+ <h6 id="parameters-46">Parameters</h6>
1637
1738
  <div class="table-scroll">
1638
1739
 
1639
1740
 
@@ -1652,7 +1753,7 @@ state without touching rules.</p>
1652
1753
 
1653
1754
 
1654
1755
  <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">{ <code>documents?</code>: <code>Record</code>&#x3C;<code>string</code>, <a href="/docs/pyric-firestore-reference-api/#documentdata"><code>DocumentData</code></a>>; }</td></tr><tr><td align="left"><code>options.documents?</code></td><td align="left"><code>Record</code>&#x3C;<code>string</code>, <a href="/docs/pyric-firestore-reference-api/#documentdata"><code>DocumentData</code></a>></td></tr></tbody></table></div>
1655
- <h6 id="returns-51">Returns</h6>
1756
+ <h6 id="returns-57">Returns</h6>
1656
1757
  <p><a href="/docs/pyric-firestore-reference-api/#lintresult"><code>LintResult</code></a></p>
1657
1758
  <p><a id="setrules"></a></p>
1658
1759
  <h5 id="setrules">setRules()</h5>
@@ -1660,7 +1761,7 @@ state without touching rules.</p>
1660
1761
  <p>Replace the active ruleset. Returns the lint result so callers can
1661
1762
  surface warnings; if the source has parse-level errors, the rules
1662
1763
  are not swapped (consistent with <code>LocalEnvironment.deployRules</code>).</p>
1663
- <h6 id="parameters-43">Parameters</h6>
1764
+ <h6 id="parameters-47">Parameters</h6>
1664
1765
  <div class="table-scroll">
1665
1766
 
1666
1767
 
@@ -1675,14 +1776,14 @@ are not swapped (consistent with <code>LocalEnvironment.deployRules</code>).</p>
1675
1776
 
1676
1777
 
1677
1778
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>rules</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1678
- <h6 id="returns-52">Returns</h6>
1779
+ <h6 id="returns-58">Returns</h6>
1679
1780
  <p><a href="/docs/pyric-firestore-reference-api/#lintresult"><code>LintResult</code></a></p>
1680
1781
  <p><a id="snapshot"></a></p>
1681
1782
  <h5 id="snapshot">snapshot()</h5>
1682
1783
  <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:#61AFEF">snapshot</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">Record</span><span style="color:#56B6C2">&#x3C;</span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">DocumentData</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
1683
1784
  <p>Capture every stored document as a <code>{ [path]: data }</code> map. Reads
1684
1785
  from the live state and is independent of rules.</p>
1685
- <h6 id="returns-53">Returns</h6>
1786
+ <h6 id="returns-59">Returns</h6>
1686
1787
  <p><code>Record</code>&#x3C;<code>string</code>, <a href="/docs/pyric-firestore-reference-api/#documentdata"><code>DocumentData</code></a>></p>
1687
1788
  <hr>
1688
1789
  <p><a id="setoptions"></a></p>
@@ -1738,7 +1839,18 @@ behavior).</p>
1738
1839
 
1739
1840
 
1740
1841
 
1741
- <table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="auth"></a> <code>auth?</code></td><td align="left">{ <code>token?</code>: <code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>>; <code>uid</code>: <code>string</code>; }</td></tr><tr><td align="left"><code>auth.token?</code></td><td align="left"><code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>></td></tr><tr><td align="left"><code>auth.uid</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="merge"></a> <code>merge?</code></td><td align="left"><code>boolean</code></td></tr><tr><td align="left"><a id="mergefields"></a> <code>mergeFields?</code></td><td align="left">readonly <code>string</code>[]</td></tr></tbody></table></div>
1842
+
1843
+
1844
+
1845
+
1846
+
1847
+
1848
+
1849
+
1850
+
1851
+
1852
+
1853
+ <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="auth"></a> <code>auth?</code></td><td align="left">{ <code>token?</code>: <code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>>; <code>uid</code>: <code>string</code>; }</td><td align="left">-</td></tr><tr><td align="left"><code>auth.token?</code></td><td align="left"><code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>></td><td align="left">-</td></tr><tr><td align="left"><code>auth.uid</code></td><td align="left"><code>string</code></td><td align="left">-</td></tr><tr><td align="left"><a id="maxattempts"></a> <code>maxAttempts?</code></td><td align="left"><code>number</code></td><td align="left">Firestore transaction retry bound; ignored by non-transaction operations.</td></tr><tr><td align="left"><a id="merge"></a> <code>merge?</code></td><td align="left"><code>boolean</code></td><td align="left">-</td></tr><tr><td align="left"><a id="mergefields"></a> <code>mergeFields?</code></td><td align="left">readonly <code>string</code>[]</td><td align="left">-</td></tr></tbody></table></div>
1742
1854
  <hr>
1743
1855
  <p><a id="snapshotmetadata"></a></p>
1744
1856
  <h3 id="snapshotmetadata">SnapshotMetadata</h3>
@@ -1815,11 +1927,11 @@ listener stream has no terminal state.</p>
1815
1927
  <hr>
1816
1928
  <p><a id="transaction"></a></p>
1817
1929
  <h3 id="transaction">Transaction</h3>
1818
- <h4 id="methods-12">Methods</h4>
1930
+ <h4 id="methods-13">Methods</h4>
1819
1931
  <p><a id="delete-2"></a></p>
1820
1932
  <h5 id="delete-1">delete()</h5>
1821
1933
  <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">delete</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DocumentReference</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Transaction</span><span style="color:#ABB2BF">;</span></span></code></pre>
1822
- <h6 id="parameters-44">Parameters</h6>
1934
+ <h6 id="parameters-48">Parameters</h6>
1823
1935
  <div class="table-scroll">
1824
1936
 
1825
1937
 
@@ -1834,13 +1946,13 @@ listener stream has no terminal state.</p>
1834
1946
 
1835
1947
 
1836
1948
  <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"><a href="#documentreference"><code>DocumentReference</code></a></td></tr></tbody></table></div>
1837
- <h6 id="returns-54">Returns</h6>
1949
+ <h6 id="returns-60">Returns</h6>
1838
1950
  <p><a href="#transaction"><code>Transaction</code></a></p>
1839
- <p><a id="get-10"></a></p>
1840
- <h5 id="get-5">get()</h5>
1951
+ <p><a id="get-14"></a></p>
1952
+ <h5 id="get-7">get()</h5>
1841
1953
  <h6 id="call-signature">Call Signature</h6>
1842
1954
  <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:#61AFEF">get</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">DocumentReference</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2">&#x3C;</span><span style="color:#E06C75">AdminDocumentSnapshot</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
1843
- <h6 id="parameters-45">Parameters</h6>
1955
+ <h6 id="parameters-49">Parameters</h6>
1844
1956
  <div class="table-scroll">
1845
1957
 
1846
1958
 
@@ -1855,11 +1967,11 @@ listener stream has no terminal state.</p>
1855
1967
 
1856
1968
 
1857
1969
  <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"><a href="#documentreference"><code>DocumentReference</code></a></td></tr></tbody></table></div>
1858
- <h6 id="returns-55">Returns</h6>
1970
+ <h6 id="returns-61">Returns</h6>
1859
1971
  <p><code>Promise</code>&#x3C;<a href="#admindocumentsnapshot"><code>AdminDocumentSnapshot</code></a>></p>
1860
1972
  <h6 id="call-signature-1">Call Signature</h6>
1861
1973
  <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:#61AFEF">get</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">query</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">Query</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2">&#x3C;</span><span style="color:#E06C75">AdminQuerySnapshot</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
1862
- <h6 id="parameters-46">Parameters</h6>
1974
+ <h6 id="parameters-50">Parameters</h6>
1863
1975
  <div class="table-scroll">
1864
1976
 
1865
1977
 
@@ -1874,12 +1986,12 @@ listener stream has no terminal state.</p>
1874
1986
 
1875
1987
 
1876
1988
  <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"><a href="#query"><code>Query</code></a></td></tr></tbody></table></div>
1877
- <h6 id="returns-56">Returns</h6>
1989
+ <h6 id="returns-62">Returns</h6>
1878
1990
  <p><code>Promise</code>&#x3C;<a href="#adminquerysnapshot"><code>AdminQuerySnapshot</code></a>></p>
1879
1991
  <p><a id="set-2"></a></p>
1880
1992
  <h5 id="set-1">set()</h5>
1881
1993
  <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:#61AFEF">set</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">DocumentReference</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">data</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">DocumentData</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">Transaction</span><span style="color:#ABB2BF">;</span></span></code></pre>
1882
- <h6 id="parameters-47">Parameters</h6>
1994
+ <h6 id="parameters-51">Parameters</h6>
1883
1995
  <div class="table-scroll">
1884
1996
 
1885
1997
 
@@ -1898,12 +2010,12 @@ listener stream has no terminal state.</p>
1898
2010
 
1899
2011
 
1900
2012
  <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"><a href="#documentreference"><code>DocumentReference</code></a></td></tr><tr><td align="left"><code>data</code></td><td align="left"><a href="/docs/pyric-firestore-reference-api/#documentdata"><code>DocumentData</code></a></td></tr></tbody></table></div>
1901
- <h6 id="returns-57">Returns</h6>
2013
+ <h6 id="returns-63">Returns</h6>
1902
2014
  <p><a href="#transaction"><code>Transaction</code></a></p>
1903
2015
  <p><a id="update-2"></a></p>
1904
2016
  <h5 id="update-1">update()</h5>
1905
2017
  <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:#61AFEF">update</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">DocumentReference</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">data</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">DocumentData</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">Transaction</span><span style="color:#ABB2BF">;</span></span></code></pre>
1906
- <h6 id="parameters-48">Parameters</h6>
2018
+ <h6 id="parameters-52">Parameters</h6>
1907
2019
  <div class="table-scroll">
1908
2020
 
1909
2021
 
@@ -1922,16 +2034,16 @@ listener stream has no terminal state.</p>
1922
2034
 
1923
2035
 
1924
2036
  <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"><a href="#documentreference"><code>DocumentReference</code></a></td></tr><tr><td align="left"><code>data</code></td><td align="left"><a href="/docs/pyric-firestore-reference-api/#documentdata"><code>DocumentData</code></a></td></tr></tbody></table></div>
1925
- <h6 id="returns-58">Returns</h6>
2037
+ <h6 id="returns-64">Returns</h6>
1926
2038
  <p><a href="#transaction"><code>Transaction</code></a></p>
1927
2039
  <hr>
1928
2040
  <p><a id="writebatch"></a></p>
1929
2041
  <h3 id="writebatch">WriteBatch</h3>
1930
- <h4 id="methods-13">Methods</h4>
2042
+ <h4 id="methods-14">Methods</h4>
1931
2043
  <p><a id="commit"></a></p>
1932
2044
  <h5 id="commit">commit()</h5>
1933
2045
  <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:#61AFEF">commit</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">opts</span><span style="color:#C678DD">?:</span><span style="color:#E06C75"> OperationOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2">&#x3C;</span><span style="color:#C678DD">void</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
1934
- <h6 id="parameters-49">Parameters</h6>
2046
+ <h6 id="parameters-53">Parameters</h6>
1935
2047
  <div class="table-scroll">
1936
2048
 
1937
2049
 
@@ -1946,12 +2058,12 @@ listener stream has no terminal state.</p>
1946
2058
 
1947
2059
 
1948
2060
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>opts?</code></td><td align="left"><code>OperationOptions</code></td></tr></tbody></table></div>
1949
- <h6 id="returns-59">Returns</h6>
2061
+ <h6 id="returns-65">Returns</h6>
1950
2062
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
1951
2063
  <p><a id="delete-4"></a></p>
1952
2064
  <h5 id="delete-2">delete()</h5>
1953
2065
  <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">delete</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DocumentReference</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">WriteBatch</span><span style="color:#ABB2BF">;</span></span></code></pre>
1954
- <h6 id="parameters-50">Parameters</h6>
2066
+ <h6 id="parameters-54">Parameters</h6>
1955
2067
  <div class="table-scroll">
1956
2068
 
1957
2069
 
@@ -1966,12 +2078,12 @@ listener stream has no terminal state.</p>
1966
2078
 
1967
2079
 
1968
2080
  <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"><a href="#documentreference"><code>DocumentReference</code></a></td></tr></tbody></table></div>
1969
- <h6 id="returns-60">Returns</h6>
2081
+ <h6 id="returns-66">Returns</h6>
1970
2082
  <p><a href="#writebatch"><code>WriteBatch</code></a></p>
1971
2083
  <p><a id="set-4"></a></p>
1972
2084
  <h5 id="set-2">set()</h5>
1973
2085
  <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:#61AFEF">set</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">DocumentReference</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">data</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">DocumentData</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">WriteBatch</span><span style="color:#ABB2BF">;</span></span></code></pre>
1974
- <h6 id="parameters-51">Parameters</h6>
2086
+ <h6 id="parameters-55">Parameters</h6>
1975
2087
  <div class="table-scroll">
1976
2088
 
1977
2089
 
@@ -1990,12 +2102,12 @@ listener stream has no terminal state.</p>
1990
2102
 
1991
2103
 
1992
2104
  <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"><a href="#documentreference"><code>DocumentReference</code></a></td></tr><tr><td align="left"><code>data</code></td><td align="left"><a href="/docs/pyric-firestore-reference-api/#documentdata"><code>DocumentData</code></a></td></tr></tbody></table></div>
1993
- <h6 id="returns-61">Returns</h6>
2105
+ <h6 id="returns-67">Returns</h6>
1994
2106
  <p><a href="#writebatch"><code>WriteBatch</code></a></p>
1995
2107
  <p><a id="update-4"></a></p>
1996
2108
  <h5 id="update-2">update()</h5>
1997
2109
  <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:#61AFEF">update</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">DocumentReference</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">data</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">DocumentData</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">WriteBatch</span><span style="color:#ABB2BF">;</span></span></code></pre>
1998
- <h6 id="parameters-52">Parameters</h6>
2110
+ <h6 id="parameters-56">Parameters</h6>
1999
2111
  <div class="table-scroll">
2000
2112
 
2001
2113
 
@@ -2014,7 +2126,7 @@ listener stream has no terminal state.</p>
2014
2126
 
2015
2127
 
2016
2128
  <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"><a href="#documentreference"><code>DocumentReference</code></a></td></tr><tr><td align="left"><code>data</code></td><td align="left"><a href="/docs/pyric-firestore-reference-api/#documentdata"><code>DocumentData</code></a></td></tr></tbody></table></div>
2017
- <h6 id="returns-62">Returns</h6>
2129
+ <h6 id="returns-68">Returns</h6>
2018
2130
  <p><a href="#writebatch"><code>WriteBatch</code></a></p>
2019
2131
  <h2 id="type-aliases">Type Aliases</h2>
2020
2132
  <p><a id="aggregatefield"></a></p>
@@ -2070,6 +2182,10 @@ leaves are field/op/value triples (<code>kind: 'where'</code>).</p>
2070
2182
  as a tagged-union value type (the SDK’s classes carry an <code>_op</code>
2071
2183
  field; ours is the <code>kind</code> discriminant).</p>
2072
2184
  <hr>
2185
+ <p><a id="snapshotfieldpath"></a></p>
2186
+ <h3 id="snapshotfieldpath">SnapshotFieldPath</h3>
2187
+ <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"> SnapshotFieldPath</span><span style="color:#56B6C2"> =</span><span style="color:#E5C07B"> string</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">FieldPath</span><span style="color:#ABB2BF">;</span></span></code></pre>
2188
+ <hr>
2073
2189
  <p><a id="snapshotlistenoptions"></a></p>
2074
2190
  <h3 id="snapshotlistenoptions">SnapshotListenOptions</h3>
2075
2191
  <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"> SnapshotListenOptions</span><span style="color:#56B6C2"> =</span><span style="color:#E5C07B"> SnapshotListenerOptions</span><span style="color:#ABB2BF">;</span></span></code></pre>
@@ -2084,7 +2200,7 @@ pending-writes window, so <code>metadata.fromCache</code> and
2084
2200
  <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"> Unsubscribe</span><span style="color:#56B6C2"> =</span><span style="color:#ABB2BF"> () </span><span style="color:#C678DD">=></span><span style="color:#E5C07B"> void</span><span style="color:#ABB2BF">;</span></span></code></pre>
2085
2201
  <p>Returned from <code>onSnapshot</code>. Calling it deregisters the listener and
2086
2202
  stops further callback invocations. Idempotent.</p>
2087
- <h4 id="returns-63">Returns</h4>
2203
+ <h4 id="returns-69">Returns</h4>
2088
2204
  <p><code>void</code></p>
2089
2205
  <h2 id="functions">Functions</h2>
2090
2206
  <p><a id="getadminfirestore"></a></p>
@@ -2105,7 +2221,7 @@ fails <code>already-exists</code>, matching real Firestore admin), and the same
2105
2221
  live and on the traffic log (stamped as an admin-bypass read/write).</p>
2106
2222
  <p>Use for “edit anything as admin” surfaces (Studio F2). For rules-applied
2107
2223
  impersonation (“act as this user”), use <code>getFirestore(sandbox.withAuth({ uid }))</code> instead — that path is unchanged.</p>
2108
- <h5 id="parameters-53">Parameters</h5>
2224
+ <h5 id="parameters-57">Parameters</h5>
2109
2225
  <div class="table-scroll">
2110
2226
 
2111
2227
 
@@ -2120,7 +2236,7 @@ impersonation (“act as this user”), use <code>getFirestore(sandbox.withAuth(
2120
2236
 
2121
2237
 
2122
2238
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ctx</code></td><td align="left"><a href="/docs/pyric-firestore-reference-api/#sandboxcontext"><code>SandboxContext</code></a></td></tr></tbody></table></div>
2123
- <h5 id="returns-64">Returns</h5>
2239
+ <h5 id="returns-70">Returns</h5>
2124
2240
  <p><a href="#sandboxfirestore"><code>SandboxFirestore</code></a></p>
2125
2241
  <h5 id="example">Example</h5>
2126
2242
  <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">import</span><span style="color:#ABB2BF"> { </span><span style="color:#E06C75">initializeSandbox</span><span style="color:#ABB2BF"> } </span><span style="color:#C678DD">from</span><span style="color:#98C379"> 'pyric/sandbox'</span><span style="color:#ABB2BF">;</span></span>
@@ -2151,7 +2267,7 @@ fails <code>already-exists</code>, matching real Firestore admin), and the same
2151
2267
  live and on the traffic log (stamped as an admin-bypass read/write).</p>
2152
2268
  <p>Use for “edit anything as admin” surfaces (Studio F2). For rules-applied
2153
2269
  impersonation (“act as this user”), use <code>getFirestore(sandbox.withAuth({ uid }))</code> instead — that path is unchanged.</p>
2154
- <h5 id="parameters-54">Parameters</h5>
2270
+ <h5 id="parameters-58">Parameters</h5>
2155
2271
  <div class="table-scroll">
2156
2272
 
2157
2273
 
@@ -2166,7 +2282,7 @@ impersonation (“act as this user”), use <code>getFirestore(sandbox.withAuth(
2166
2282
 
2167
2283
 
2168
2284
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>sandbox</code></td><td align="left"><a href="/docs/pyric-firestore-reference-api/#sandbox"><code>Sandbox</code></a></td></tr></tbody></table></div>
2169
- <h5 id="returns-65">Returns</h5>
2285
+ <h5 id="returns-71">Returns</h5>
2170
2286
  <p><a href="#sandboxfirestore"><code>SandboxFirestore</code></a></p>
2171
2287
  <h5 id="example-1">Example</h5>
2172
2288
  <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">import</span><span style="color:#ABB2BF"> { </span><span style="color:#E06C75">initializeSandbox</span><span style="color:#ABB2BF"> } </span><span style="color:#C678DD">from</span><span style="color:#98C379"> 'pyric/sandbox'</span><span style="color:#ABB2BF">;</span></span>
@@ -2201,7 +2317,7 @@ lens; throws <code>app/no-app</code> when nothing is initialized.</li>
2201
2317
  <p>The app forms mirror <code>firebase-admin/firestore</code>’s <code>getFirestore(app?)</code>,
2202
2318
  which bypasses security rules — so a Cloud Function’s admin write lands the
2203
2319
  same way it does in production, instead of being denied as <code>request.auth == null</code> by the sandbox’s anon lens (the #394 deny-direction divergence).</p>
2204
- <h4 id="parameters-55">Parameters</h4>
2320
+ <h4 id="parameters-59">Parameters</h4>
2205
2321
  <div class="table-scroll">
2206
2322
 
2207
2323
 
@@ -2216,14 +2332,14 @@ same way it does in production, instead of being denied as <code>request.auth ==
2216
2332
 
2217
2333
 
2218
2334
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>target?</code></td><td align="left">| <a href="/docs/pyric-admin-app-reference-api/#sandboxadminapp"><code>SandboxAdminApp</code></a> | <a href="/docs/pyric-firestore-reference-api/#sandboxcontext"><code>SandboxContext</code></a></td></tr></tbody></table></div>
2219
- <h4 id="returns-66">Returns</h4>
2335
+ <h4 id="returns-72">Returns</h4>
2220
2336
  <p><a href="#sandboxfirestore"><code>SandboxFirestore</code></a></p>
2221
2337
  <hr>
2222
2338
  <p><a id="onsnapshot"></a></p>
2223
2339
  <h3 id="onsnapshot">onSnapshot()</h3>
2224
2340
  <h4 id="call-signature-4">Call Signature</h4>
2225
2341
  <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"> onSnapshot</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">reference</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DocumentReference</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">observer</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">SnapshotObserver</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">DocumentSnapshot</span><span style="color:#ABB2BF">>): </span><span style="color:#E5C07B">Unsubscribe</span><span style="color:#ABB2BF">;</span></span></code></pre>
2226
- <h5 id="parameters-56">Parameters</h5>
2342
+ <h5 id="parameters-60">Parameters</h5>
2227
2343
  <div class="table-scroll">
2228
2344
 
2229
2345
 
@@ -2242,14 +2358,14 @@ same way it does in production, instead of being denied as <code>request.auth ==
2242
2358
 
2243
2359
 
2244
2360
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>reference</code></td><td align="left"><a href="#documentreference"><code>DocumentReference</code></a></td></tr><tr><td align="left"><code>observer</code></td><td align="left"><a href="#snapshotobserver"><code>SnapshotObserver</code></a>&#x3C;<a href="#documentsnapshot"><code>DocumentSnapshot</code></a>></td></tr></tbody></table></div>
2245
- <h5 id="returns-67">Returns</h5>
2361
+ <h5 id="returns-73">Returns</h5>
2246
2362
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
2247
2363
  <h4 id="call-signature-5">Call Signature</h4>
2248
2364
  <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"> onSnapshot</span><span style="color:#ABB2BF">(</span></span>
2249
2365
  <span class="line"><span style="color:#E06C75;font-style:italic"> reference</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DocumentReference</span><span style="color:#ABB2BF">,</span></span>
2250
2366
  <span class="line"><span style="color:#E06C75;font-style:italic"> options</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">SnapshotListenerOptions</span><span style="color:#ABB2BF">,</span></span>
2251
2367
  <span class="line"><span style="color:#E06C75;font-style:italic"> observer</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">SnapshotObserver</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">DocumentSnapshot</span><span style="color:#ABB2BF">>): </span><span style="color:#E5C07B">Unsubscribe</span><span style="color:#ABB2BF">;</span></span></code></pre>
2252
- <h5 id="parameters-57">Parameters</h5>
2368
+ <h5 id="parameters-61">Parameters</h5>
2253
2369
  <div class="table-scroll">
2254
2370
 
2255
2371
 
@@ -2272,7 +2388,7 @@ same way it does in production, instead of being denied as <code>request.auth ==
2272
2388
 
2273
2389
 
2274
2390
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>reference</code></td><td align="left"><a href="#documentreference"><code>DocumentReference</code></a></td></tr><tr><td align="left"><code>options</code></td><td align="left"><code>SnapshotListenerOptions</code></td></tr><tr><td align="left"><code>observer</code></td><td align="left"><a href="#snapshotobserver"><code>SnapshotObserver</code></a>&#x3C;<a href="#documentsnapshot"><code>DocumentSnapshot</code></a>></td></tr></tbody></table></div>
2275
- <h5 id="returns-68">Returns</h5>
2391
+ <h5 id="returns-74">Returns</h5>
2276
2392
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
2277
2393
  <h4 id="call-signature-6">Call Signature</h4>
2278
2394
  <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"> onSnapshot</span><span style="color:#ABB2BF">(</span></span>
@@ -2280,7 +2396,7 @@ same way it does in production, instead of being denied as <code>request.auth ==
2280
2396
  <span class="line"><span style="color:#61AFEF"> onNext</span><span style="color:#ABB2BF">: (</span><span style="color:#E06C75;font-style:italic">snapshot</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DocumentSnapshot</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">=></span><span style="color:#E5C07B"> void</span><span style="color:#ABB2BF">,</span></span>
2281
2397
  <span class="line"><span style="color:#61AFEF"> onError</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: (</span><span style="color:#E06C75;font-style:italic">error</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">=></span><span style="color:#E5C07B"> void</span><span style="color:#ABB2BF">,</span></span>
2282
2398
  <span class="line"><span style="color:#61AFEF"> onCompletion</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: () </span><span style="color:#C678DD">=></span><span style="color:#E5C07B"> void</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Unsubscribe</span><span style="color:#ABB2BF">;</span></span></code></pre>
2283
- <h5 id="parameters-58">Parameters</h5>
2399
+ <h5 id="parameters-62">Parameters</h5>
2284
2400
  <div class="table-scroll">
2285
2401
 
2286
2402
 
@@ -2307,7 +2423,7 @@ same way it does in production, instead of being denied as <code>request.auth ==
2307
2423
 
2308
2424
 
2309
2425
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>reference</code></td><td align="left"><a href="#documentreference"><code>DocumentReference</code></a></td></tr><tr><td align="left"><code>onNext</code></td><td align="left">(<code>snapshot</code>: <a href="#documentsnapshot"><code>DocumentSnapshot</code></a>) => <code>void</code></td></tr><tr><td align="left"><code>onError?</code></td><td align="left">(<code>error</code>: <code>unknown</code>) => <code>void</code></td></tr><tr><td align="left"><code>onCompletion?</code></td><td align="left">() => <code>void</code></td></tr></tbody></table></div>
2310
- <h5 id="returns-69">Returns</h5>
2426
+ <h5 id="returns-75">Returns</h5>
2311
2427
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
2312
2428
  <h4 id="call-signature-7">Call Signature</h4>
2313
2429
  <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"> onSnapshot</span><span style="color:#ABB2BF">(</span></span>
@@ -2316,7 +2432,7 @@ same way it does in production, instead of being denied as <code>request.auth ==
2316
2432
  <span class="line"><span style="color:#61AFEF"> onNext</span><span style="color:#ABB2BF">: (</span><span style="color:#E06C75;font-style:italic">snapshot</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DocumentSnapshot</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">=></span><span style="color:#E5C07B"> void</span><span style="color:#ABB2BF">,</span></span>
2317
2433
  <span class="line"><span style="color:#61AFEF"> onError</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: (</span><span style="color:#E06C75;font-style:italic">error</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">=></span><span style="color:#E5C07B"> void</span><span style="color:#ABB2BF">,</span></span>
2318
2434
  <span class="line"><span style="color:#61AFEF"> onCompletion</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: () </span><span style="color:#C678DD">=></span><span style="color:#E5C07B"> void</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Unsubscribe</span><span style="color:#ABB2BF">;</span></span></code></pre>
2319
- <h5 id="parameters-59">Parameters</h5>
2435
+ <h5 id="parameters-63">Parameters</h5>
2320
2436
  <div class="table-scroll">
2321
2437
 
2322
2438
 
@@ -2347,11 +2463,11 @@ same way it does in production, instead of being denied as <code>request.auth ==
2347
2463
 
2348
2464
 
2349
2465
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>reference</code></td><td align="left"><a href="#documentreference"><code>DocumentReference</code></a></td></tr><tr><td align="left"><code>options</code></td><td align="left"><code>SnapshotListenerOptions</code></td></tr><tr><td align="left"><code>onNext</code></td><td align="left">(<code>snapshot</code>: <a href="#documentsnapshot"><code>DocumentSnapshot</code></a>) => <code>void</code></td></tr><tr><td align="left"><code>onError?</code></td><td align="left">(<code>error</code>: <code>unknown</code>) => <code>void</code></td></tr><tr><td align="left"><code>onCompletion?</code></td><td align="left">() => <code>void</code></td></tr></tbody></table></div>
2350
- <h5 id="returns-70">Returns</h5>
2466
+ <h5 id="returns-76">Returns</h5>
2351
2467
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
2352
2468
  <h4 id="call-signature-8">Call Signature</h4>
2353
2469
  <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"> onSnapshot</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">reference</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Query</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">CollectionReference</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">observer</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">SnapshotObserver</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">QuerySnapshot</span><span style="color:#ABB2BF">>): </span><span style="color:#E5C07B">Unsubscribe</span><span style="color:#ABB2BF">;</span></span></code></pre>
2354
- <h5 id="parameters-60">Parameters</h5>
2470
+ <h5 id="parameters-64">Parameters</h5>
2355
2471
  <div class="table-scroll">
2356
2472
 
2357
2473
 
@@ -2370,14 +2486,14 @@ same way it does in production, instead of being denied as <code>request.auth ==
2370
2486
 
2371
2487
 
2372
2488
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>reference</code></td><td align="left"><a href="#query"><code>Query</code></a> | <a href="#collectionreference"><code>CollectionReference</code></a></td></tr><tr><td align="left"><code>observer</code></td><td align="left"><a href="#snapshotobserver"><code>SnapshotObserver</code></a>&#x3C;<a href="#querysnapshot"><code>QuerySnapshot</code></a>></td></tr></tbody></table></div>
2373
- <h5 id="returns-71">Returns</h5>
2489
+ <h5 id="returns-77">Returns</h5>
2374
2490
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
2375
2491
  <h4 id="call-signature-9">Call Signature</h4>
2376
2492
  <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"> onSnapshot</span><span style="color:#ABB2BF">(</span></span>
2377
2493
  <span class="line"><span style="color:#E06C75;font-style:italic"> reference</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Query</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">CollectionReference</span><span style="color:#ABB2BF">,</span></span>
2378
2494
  <span class="line"><span style="color:#E06C75;font-style:italic"> options</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">SnapshotListenerOptions</span><span style="color:#ABB2BF">,</span></span>
2379
2495
  <span class="line"><span style="color:#E06C75;font-style:italic"> observer</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">SnapshotObserver</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">QuerySnapshot</span><span style="color:#ABB2BF">>): </span><span style="color:#E5C07B">Unsubscribe</span><span style="color:#ABB2BF">;</span></span></code></pre>
2380
- <h5 id="parameters-61">Parameters</h5>
2496
+ <h5 id="parameters-65">Parameters</h5>
2381
2497
  <div class="table-scroll">
2382
2498
 
2383
2499
 
@@ -2400,7 +2516,7 @@ same way it does in production, instead of being denied as <code>request.auth ==
2400
2516
 
2401
2517
 
2402
2518
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>reference</code></td><td align="left"><a href="#query"><code>Query</code></a> | <a href="#collectionreference"><code>CollectionReference</code></a></td></tr><tr><td align="left"><code>options</code></td><td align="left"><code>SnapshotListenerOptions</code></td></tr><tr><td align="left"><code>observer</code></td><td align="left"><a href="#snapshotobserver"><code>SnapshotObserver</code></a>&#x3C;<a href="#querysnapshot"><code>QuerySnapshot</code></a>></td></tr></tbody></table></div>
2403
- <h5 id="returns-72">Returns</h5>
2519
+ <h5 id="returns-78">Returns</h5>
2404
2520
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
2405
2521
  <h4 id="call-signature-10">Call Signature</h4>
2406
2522
  <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"> onSnapshot</span><span style="color:#ABB2BF">(</span></span>
@@ -2408,7 +2524,7 @@ same way it does in production, instead of being denied as <code>request.auth ==
2408
2524
  <span class="line"><span style="color:#61AFEF"> onNext</span><span style="color:#ABB2BF">: (</span><span style="color:#E06C75;font-style:italic">snapshot</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">QuerySnapshot</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">=></span><span style="color:#E5C07B"> void</span><span style="color:#ABB2BF">,</span></span>
2409
2525
  <span class="line"><span style="color:#61AFEF"> onError</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: (</span><span style="color:#E06C75;font-style:italic">error</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">=></span><span style="color:#E5C07B"> void</span><span style="color:#ABB2BF">,</span></span>
2410
2526
  <span class="line"><span style="color:#61AFEF"> onCompletion</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: () </span><span style="color:#C678DD">=></span><span style="color:#E5C07B"> void</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Unsubscribe</span><span style="color:#ABB2BF">;</span></span></code></pre>
2411
- <h5 id="parameters-62">Parameters</h5>
2527
+ <h5 id="parameters-66">Parameters</h5>
2412
2528
  <div class="table-scroll">
2413
2529
 
2414
2530
 
@@ -2435,7 +2551,7 @@ same way it does in production, instead of being denied as <code>request.auth ==
2435
2551
 
2436
2552
 
2437
2553
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>reference</code></td><td align="left"><a href="#query"><code>Query</code></a> | <a href="#collectionreference"><code>CollectionReference</code></a></td></tr><tr><td align="left"><code>onNext</code></td><td align="left">(<code>snapshot</code>: <a href="#querysnapshot"><code>QuerySnapshot</code></a>) => <code>void</code></td></tr><tr><td align="left"><code>onError?</code></td><td align="left">(<code>error</code>: <code>unknown</code>) => <code>void</code></td></tr><tr><td align="left"><code>onCompletion?</code></td><td align="left">() => <code>void</code></td></tr></tbody></table></div>
2438
- <h5 id="returns-73">Returns</h5>
2554
+ <h5 id="returns-79">Returns</h5>
2439
2555
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
2440
2556
  <h4 id="call-signature-11">Call Signature</h4>
2441
2557
  <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"> onSnapshot</span><span style="color:#ABB2BF">(</span></span>
@@ -2444,7 +2560,7 @@ same way it does in production, instead of being denied as <code>request.auth ==
2444
2560
  <span class="line"><span style="color:#61AFEF"> onNext</span><span style="color:#ABB2BF">: (</span><span style="color:#E06C75;font-style:italic">snapshot</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">QuerySnapshot</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">=></span><span style="color:#E5C07B"> void</span><span style="color:#ABB2BF">,</span></span>
2445
2561
  <span class="line"><span style="color:#61AFEF"> onError</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: (</span><span style="color:#E06C75;font-style:italic">error</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">=></span><span style="color:#E5C07B"> void</span><span style="color:#ABB2BF">,</span></span>
2446
2562
  <span class="line"><span style="color:#61AFEF"> onCompletion</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: () </span><span style="color:#C678DD">=></span><span style="color:#E5C07B"> void</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Unsubscribe</span><span style="color:#ABB2BF">;</span></span></code></pre>
2447
- <h5 id="parameters-63">Parameters</h5>
2563
+ <h5 id="parameters-67">Parameters</h5>
2448
2564
  <div class="table-scroll">
2449
2565
 
2450
2566
 
@@ -2475,7 +2591,7 @@ same way it does in production, instead of being denied as <code>request.auth ==
2475
2591
 
2476
2592
 
2477
2593
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>reference</code></td><td align="left"><a href="#query"><code>Query</code></a> | <a href="#collectionreference"><code>CollectionReference</code></a></td></tr><tr><td align="left"><code>options</code></td><td align="left"><code>SnapshotListenerOptions</code></td></tr><tr><td align="left"><code>onNext</code></td><td align="left">(<code>snapshot</code>: <a href="#querysnapshot"><code>QuerySnapshot</code></a>) => <code>void</code></td></tr><tr><td align="left"><code>onError?</code></td><td align="left">(<code>error</code>: <code>unknown</code>) => <code>void</code></td></tr><tr><td align="left"><code>onCompletion?</code></td><td align="left">() => <code>void</code></td></tr></tbody></table></div>
2478
- <h5 id="returns-74">Returns</h5>
2594
+ <h5 id="returns-80">Returns</h5>
2479
2595
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
2480
2596
  <h2 id="references">References</h2>
2481
2597
  <p><a id="authstate"></a></p>
@@ -2520,4 +2636,4 @@ same way it does in production, instead of being denied as <code>request.auth ==
2520
2636
  <hr>
2521
2637
  <p><a id="wherefilterop"></a></p>
2522
2638
  <h3 id="wherefilterop">WhereFilterOp</h3>
2523
- <p>Re-exports <a href="/docs/pyric-firestore-reference-api/#wherefilterop">WhereFilterOp</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="admindocumentsnapshot"> <a href="#admindocumentsnapshot">AdminDocumentSnapshot</a> </li><li data-api-symbol="adminquerydocumentsnapshot"> <a href="#adminquerydocumentsnapshot">AdminQueryDocumentSnapshot</a> </li><li data-api-symbol="adminquerysnapshot"> <a href="#adminquerysnapshot">AdminQuerySnapshot</a> </li><li data-api-symbol="aggregatequerysnapshot"> <a href="#aggregatequerysnapshot">AggregateQuerySnapshot</a> </li><li data-api-symbol="collectionreference"> <a href="#collectionreference">CollectionReference</a> </li><li data-api-symbol="docchangesoptions"> <a href="#docchangesoptions">DocChangesOptions</a> </li><li data-api-symbol="documentchange"> <a href="#documentchange">DocumentChange</a> </li><li data-api-symbol="documentreference"> <a href="#documentreference">DocumentReference</a> </li><li data-api-symbol="documentsnapshot"> <a href="#documentsnapshot">DocumentSnapshot</a> </li><li data-api-symbol="firestore"> <a href="#firestore">Firestore</a> </li><li data-api-symbol="lintwarning"> <a href="#lintwarning">LintWarning</a> </li><li data-api-symbol="query"> <a href="#query">Query</a> </li><li data-api-symbol="querydocumentsnapshot"> <a href="#querydocumentsnapshot">QueryDocumentSnapshot</a> </li><li data-api-symbol="querysnapshot"> <a href="#querysnapshot">QuerySnapshot</a> </li><li data-api-symbol="rulesmetrics"> <a href="#rulesmetrics">RulesMetrics</a> </li><li data-api-symbol="sandboxfirestore"> <a href="#sandboxfirestore">SandboxFirestore</a> </li><li data-api-symbol="setoptions"> <a href="#setoptions">SetOptions</a> </li><li data-api-symbol="snapshotmetadata"> <a href="#snapshotmetadata">SnapshotMetadata</a> </li><li data-api-symbol="snapshotobserver"> <a href="#snapshotobserver">SnapshotObserver</a> </li><li data-api-symbol="transaction"> <a href="#transaction">Transaction</a> </li><li data-api-symbol="writebatch"> <a href="#writebatch">WriteBatch</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="aggregatefield"> <a href="#aggregatefield">AggregateField</a> </li><li data-api-symbol="aggregatespec"> <a href="#aggregatespec">AggregateSpec</a> </li><li data-api-symbol="documentchangetype"> <a href="#documentchangetype">DocumentChangeType</a> </li><li data-api-symbol="filter"> <a href="#filter">Filter</a> </li><li data-api-symbol="snapshotlistenoptions"> <a href="#snapshotlistenoptions">SnapshotListenOptions</a> </li><li data-api-symbol="unsubscribe()"> <a href="#unsubscribe">Unsubscribe()</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="getadminfirestore()"> <a href="#getadminfirestore">getAdminFirestore()</a> </li><li data-api-symbol="getfirestore()"> <a href="#getfirestore">getFirestore()</a> </li><li data-api-symbol="onsnapshot()"> <a href="#onsnapshot">onSnapshot()</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#references"> References </a> <ul> <li data-api-symbol="authstate"> <a href="#authstate">AuthState</a> </li><li data-api-symbol="documentdata"> <a href="#documentdata">DocumentData</a> </li><li data-api-symbol="fieldvalue"> <a href="#fieldvalue">FieldValue</a> </li><li data-api-symbol="fieldvaluesentinel"> <a href="#fieldvaluesentinel">FieldValueSentinel</a> </li><li data-api-symbol="lintresult"> <a href="#lintresult">LintResult</a> </li><li data-api-symbol="orderdirection"> <a href="#orderdirection">OrderDirection</a> </li><li data-api-symbol="sandbox"> <a href="#sandbox">Sandbox</a> </li><li data-api-symbol="sandboxcontext"> <a href="#sandboxcontext">SandboxContext</a> </li><li data-api-symbol="sandboxerror"> <a href="#sandboxerror">SandboxError</a> </li><li data-api-symbol="timestamp"> <a href="#timestamp">Timestamp</a> </li><li data-api-symbol="wherefilterop"> <a href="#wherefilterop">WhereFilterOp</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>
2639
+ <p>Re-exports <a href="/docs/pyric-firestore-reference-api/#wherefilterop">WhereFilterOp</a></p> </article> </main> <aside class="doc-toc api-symbols" aria-label="API symbols" data-astro-cid-mw7aashj> <h2 class="doc-toc-heading" data-astro-cid-mw7aashj>Symbols</h2> <input class="api-symbol-filter" type="search" placeholder="Filter symbols" aria-label="Filter API symbols" data-api-symbol-filter data-astro-cid-mw7aashj> <div class="api-symbol-groups" data-api-symbol-groups data-astro-cid-mw7aashj> <section class="api-symbol-group" data-api-symbol-group data-astro-cid-mw7aashj> <a class="api-symbol-kind" href="#classes" data-astro-cid-mw7aashj> Classes </a> <ul data-astro-cid-mw7aashj> <li data-api-symbol="fieldpath" data-astro-cid-mw7aashj> <a href="#fieldpath" data-astro-cid-mw7aashj>FieldPath</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group data-astro-cid-mw7aashj> <a class="api-symbol-kind" href="#interfaces" data-astro-cid-mw7aashj> Interfaces </a> <ul data-astro-cid-mw7aashj> <li data-api-symbol="admindocumentsnapshot" data-astro-cid-mw7aashj> <a href="#admindocumentsnapshot" data-astro-cid-mw7aashj>AdminDocumentSnapshot</a> </li><li data-api-symbol="adminquerydocumentsnapshot" data-astro-cid-mw7aashj> <a href="#adminquerydocumentsnapshot" data-astro-cid-mw7aashj>AdminQueryDocumentSnapshot</a> </li><li data-api-symbol="adminquerysnapshot" data-astro-cid-mw7aashj> <a href="#adminquerysnapshot" data-astro-cid-mw7aashj>AdminQuerySnapshot</a> </li><li data-api-symbol="aggregatequerysnapshot" data-astro-cid-mw7aashj> <a href="#aggregatequerysnapshot" data-astro-cid-mw7aashj>AggregateQuerySnapshot</a> </li><li data-api-symbol="collectionreference" data-astro-cid-mw7aashj> <a href="#collectionreference" data-astro-cid-mw7aashj>CollectionReference</a> </li><li data-api-symbol="docchangesoptions" data-astro-cid-mw7aashj> <a href="#docchangesoptions" data-astro-cid-mw7aashj>DocChangesOptions</a> </li><li data-api-symbol="documentchange" data-astro-cid-mw7aashj> <a href="#documentchange" data-astro-cid-mw7aashj>DocumentChange</a> </li><li data-api-symbol="documentreference" data-astro-cid-mw7aashj> <a href="#documentreference" data-astro-cid-mw7aashj>DocumentReference</a> </li><li data-api-symbol="documentsnapshot" data-astro-cid-mw7aashj> <a href="#documentsnapshot" data-astro-cid-mw7aashj>DocumentSnapshot</a> </li><li data-api-symbol="firestore" data-astro-cid-mw7aashj> <a href="#firestore" data-astro-cid-mw7aashj>Firestore</a> </li><li data-api-symbol="lintwarning" data-astro-cid-mw7aashj> <a href="#lintwarning" data-astro-cid-mw7aashj>LintWarning</a> </li><li data-api-symbol="query" data-astro-cid-mw7aashj> <a href="#query" data-astro-cid-mw7aashj>Query</a> </li><li data-api-symbol="querydocumentsnapshot" data-astro-cid-mw7aashj> <a href="#querydocumentsnapshot" data-astro-cid-mw7aashj>QueryDocumentSnapshot</a> </li><li data-api-symbol="querysnapshot" data-astro-cid-mw7aashj> <a href="#querysnapshot" data-astro-cid-mw7aashj>QuerySnapshot</a> </li><li data-api-symbol="rulesmetrics" data-astro-cid-mw7aashj> <a href="#rulesmetrics" data-astro-cid-mw7aashj>RulesMetrics</a> </li><li data-api-symbol="sandboxfirestore" data-astro-cid-mw7aashj> <a href="#sandboxfirestore" data-astro-cid-mw7aashj>SandboxFirestore</a> </li><li data-api-symbol="setoptions" data-astro-cid-mw7aashj> <a href="#setoptions" data-astro-cid-mw7aashj>SetOptions</a> </li><li data-api-symbol="snapshotmetadata" data-astro-cid-mw7aashj> <a href="#snapshotmetadata" data-astro-cid-mw7aashj>SnapshotMetadata</a> </li><li data-api-symbol="snapshotobserver" data-astro-cid-mw7aashj> <a href="#snapshotobserver" data-astro-cid-mw7aashj>SnapshotObserver</a> </li><li data-api-symbol="transaction" data-astro-cid-mw7aashj> <a href="#transaction" data-astro-cid-mw7aashj>Transaction</a> </li><li data-api-symbol="writebatch" data-astro-cid-mw7aashj> <a href="#writebatch" data-astro-cid-mw7aashj>WriteBatch</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group data-astro-cid-mw7aashj> <a class="api-symbol-kind" href="#type-aliases" data-astro-cid-mw7aashj> Type Aliases </a> <ul data-astro-cid-mw7aashj> <li data-api-symbol="aggregatefield" data-astro-cid-mw7aashj> <a href="#aggregatefield" data-astro-cid-mw7aashj>AggregateField</a> </li><li data-api-symbol="aggregatespec" data-astro-cid-mw7aashj> <a href="#aggregatespec" data-astro-cid-mw7aashj>AggregateSpec</a> </li><li data-api-symbol="documentchangetype" data-astro-cid-mw7aashj> <a href="#documentchangetype" data-astro-cid-mw7aashj>DocumentChangeType</a> </li><li data-api-symbol="filter" data-astro-cid-mw7aashj> <a href="#filter" data-astro-cid-mw7aashj>Filter</a> </li><li data-api-symbol="snapshotfieldpath" data-astro-cid-mw7aashj> <a href="#snapshotfieldpath" data-astro-cid-mw7aashj>SnapshotFieldPath</a> </li><li data-api-symbol="snapshotlistenoptions" data-astro-cid-mw7aashj> <a href="#snapshotlistenoptions" data-astro-cid-mw7aashj>SnapshotListenOptions</a> </li><li data-api-symbol="unsubscribe()" data-astro-cid-mw7aashj> <a href="#unsubscribe" data-astro-cid-mw7aashj>Unsubscribe()</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group data-astro-cid-mw7aashj> <a class="api-symbol-kind" href="#functions" data-astro-cid-mw7aashj> Functions </a> <ul data-astro-cid-mw7aashj> <li data-api-symbol="getadminfirestore()" data-astro-cid-mw7aashj> <a href="#getadminfirestore" data-astro-cid-mw7aashj>getAdminFirestore()</a> </li><li data-api-symbol="getfirestore()" data-astro-cid-mw7aashj> <a href="#getfirestore" data-astro-cid-mw7aashj>getFirestore()</a> </li><li data-api-symbol="onsnapshot()" data-astro-cid-mw7aashj> <a href="#onsnapshot" data-astro-cid-mw7aashj>onSnapshot()</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group data-astro-cid-mw7aashj> <a class="api-symbol-kind" href="#references" data-astro-cid-mw7aashj> References </a> <ul data-astro-cid-mw7aashj> <li data-api-symbol="authstate" data-astro-cid-mw7aashj> <a href="#authstate" data-astro-cid-mw7aashj>AuthState</a> </li><li data-api-symbol="documentdata" data-astro-cid-mw7aashj> <a href="#documentdata" data-astro-cid-mw7aashj>DocumentData</a> </li><li data-api-symbol="fieldvalue" data-astro-cid-mw7aashj> <a href="#fieldvalue" data-astro-cid-mw7aashj>FieldValue</a> </li><li data-api-symbol="fieldvaluesentinel" data-astro-cid-mw7aashj> <a href="#fieldvaluesentinel" data-astro-cid-mw7aashj>FieldValueSentinel</a> </li><li data-api-symbol="lintresult" data-astro-cid-mw7aashj> <a href="#lintresult" data-astro-cid-mw7aashj>LintResult</a> </li><li data-api-symbol="orderdirection" data-astro-cid-mw7aashj> <a href="#orderdirection" data-astro-cid-mw7aashj>OrderDirection</a> </li><li data-api-symbol="sandbox" data-astro-cid-mw7aashj> <a href="#sandbox" data-astro-cid-mw7aashj>Sandbox</a> </li><li data-api-symbol="sandboxcontext" data-astro-cid-mw7aashj> <a href="#sandboxcontext" data-astro-cid-mw7aashj>SandboxContext</a> </li><li data-api-symbol="sandboxerror" data-astro-cid-mw7aashj> <a href="#sandboxerror" data-astro-cid-mw7aashj>SandboxError</a> </li><li data-api-symbol="timestamp" data-astro-cid-mw7aashj> <a href="#timestamp" data-astro-cid-mw7aashj>Timestamp</a> </li><li data-api-symbol="wherefilterop" data-astro-cid-mw7aashj> <a href="#wherefilterop" data-astro-cid-mw7aashj>WhereFilterOp</a> </li> </ul> </section> <p class="api-symbol-empty" data-api-symbol-empty hidden data-astro-cid-mw7aashj>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>