@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,9 +1,9 @@
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/firestore · Pyric Studio</title><meta name="description" content="Published declarations for pyric/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/" aria-current="page"> 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/"> 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/" aria-current="page"> 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/"> 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</span> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span aria-current="page">pyric/firestore</span> </li> </ol> </nav> <header class="api-reference-header"> <p class="api-reference-kicker">API reference</p> <h1><code>pyric/firestore</code></h1> <p class="api-reference-meta"> 110 published symbols from <code>pyric</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/firestore · Pyric Studio</title><meta name="description" content="Published declarations for pyric/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/" aria-current="page"> 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/"> 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/" aria-current="page"> 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/"> 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</span> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span aria-current="page">pyric/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/firestore</code></h1> <p class="api-reference-meta" data-astro-cid-mw7aashj> 112 published symbols from <code data-astro-cid-mw7aashj>pyric</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> <a class="api-reference-evidence" href="/__pyric/ui/docs/firestore-compat/">
4
+ </p> <a class="api-reference-evidence" href="/__pyric/ui/docs/firestore-compat/" data-astro-cid-mw7aashj>
5
5
  Check behavioral conformance
6
- </a> </header> <article class="prose api-reference-body"> <!-- Generated from published package declarations via TypeDoc. Rendered by the api-reference content loader. -->
6
+ </a> </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. -->
7
7
  <h2 id="classes">Classes</h2>
8
8
  <p><a id="bytes"></a></p>
9
9
  <h3 id="bytes">Bytes</h3>
@@ -824,7 +824,17 @@ count-only entry point).</p>
824
824
 
825
825
 
826
826
 
827
- <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> | () => <code>boolean</code></td></tr><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></tbody></table></div>
827
+
828
+
829
+
830
+
831
+
832
+
833
+
834
+
835
+
836
+
837
+ <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> | () => <code>boolean</code></td></tr><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="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"></a> <code>ref</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#documentreference"><code>DocumentReference</code></a>&#x3C;<code>T</code>></td></tr></tbody></table></div>
828
838
  <h4 id="methods-7">Methods</h4>
829
839
  <p><a id="data-2"></a></p>
830
840
  <h5 id="data-1">data()</h5>
@@ -1187,6 +1197,26 @@ to opt into. Carries the requested kind only for debugging.</p>
1187
1197
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>q</code></td><td align="left"><a href="/docs/pyric-admin-firestore-reference-api/#query"><code>Query</code></a></td></tr></tbody></table></div>
1188
1198
  <h6 id="returns-45">Returns</h6>
1189
1199
  <p><a href="/docs/pyric-admin-firestore-reference-api/#query"><code>Query</code></a></p>
1200
+ <p><a id="preparesandbox"></a></p>
1201
+ <h5 id="preparesandbox">prepareSandbox()?</h5>
1202
+ <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">optional</span><span style="color:#61AFEF"> prepareSandbox</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">owner</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">object</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">QueryConstraint</span><span style="color:#ABB2BF">;</span></span></code></pre>
1203
+ <h6 id="parameters-25">Parameters</h6>
1204
+ <div class="table-scroll">
1205
+
1206
+
1207
+
1208
+
1209
+
1210
+
1211
+
1212
+
1213
+
1214
+
1215
+
1216
+
1217
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>owner</code></td><td align="left"><code>object</code></td></tr></tbody></table></div>
1218
+ <h6 id="returns-46">Returns</h6>
1219
+ <p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
1190
1220
  <hr>
1191
1221
  <p><a id="querydocumentsnapshot"></a></p>
1192
1222
  <h3 id="querydocumentsnapshot">QueryDocumentSnapshot</h3>
@@ -1234,12 +1264,22 @@ callbacks. Mirrors the JS SDK’s narrowing.</p>
1234
1264
 
1235
1265
 
1236
1266
 
1237
- <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> | () => <code>boolean</code></td></tr><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></tbody></table></div>
1267
+
1268
+
1269
+
1270
+
1271
+
1272
+
1273
+
1274
+
1275
+
1276
+
1277
+ <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> | () => <code>boolean</code></td></tr><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="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-1"></a> <code>ref</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#documentreference"><code>DocumentReference</code></a>&#x3C;<code>T</code>></td></tr></tbody></table></div>
1238
1278
  <h4 id="methods-12">Methods</h4>
1239
1279
  <p><a id="data-4"></a></p>
1240
1280
  <h5 id="data-2">data()</h5>
1241
1281
  <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:#E5C07B">T</span><span style="color:#ABB2BF">;</span></span></code></pre>
1242
- <h6 id="returns-46">Returns</h6>
1282
+ <h6 id="returns-47">Returns</h6>
1243
1283
  <p><code>T</code></p>
1244
1284
  <h6 id="overrides-2">Overrides</h6>
1245
1285
  <p><a href="#documentsnapshot"><code>DocumentSnapshot</code></a>.<a href="#data-2"><code>data</code></a></p>
@@ -1288,7 +1328,12 @@ callbacks. Mirrors the JS SDK’s narrowing.</p>
1288
1328
 
1289
1329
 
1290
1330
 
1291
- <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">readonly <a href="#querydocumentsnapshot"><code>QueryDocumentSnapshot</code></a>&#x3C;<code>T</code>>[]</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>
1331
+
1332
+
1333
+
1334
+
1335
+
1336
+ <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">readonly <a href="#querydocumentsnapshot"><code>QueryDocumentSnapshot</code></a>&#x3C;<code>T</code>>[]</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="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="size"></a> <code>size</code></td><td align="left"><code>readonly</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
1292
1337
  <hr>
1293
1338
  <p><a id="sandbox"></a></p>
1294
1339
  <h3 id="sandbox">Sandbox</h3>
@@ -1348,7 +1393,7 @@ and no in-place mutation.</p>
1348
1393
  is left intact — call <code>reset()</code> if you want both. Useful for
1349
1394
  “sign out and forget” flows.</p>
1350
1395
  <p>No-op when persistence is not enabled.</p>
1351
- <h6 id="returns-47">Returns</h6>
1396
+ <h6 id="returns-48">Returns</h6>
1352
1397
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
1353
1398
  <p><a id="dispose"></a></p>
1354
1399
  <h5 id="dispose">dispose()</h5>
@@ -1358,7 +1403,7 @@ replacing it. Use this when you’re about to discard the sandbox
1358
1403
  itself (e.g. <code>runner.reseed()</code> builds a fresh sandbox rather than
1359
1404
  calling <code>reset()</code>) and want to drop callback references on the
1360
1405
  outgoing instance defensively. Idempotent. Does not touch data.</p>
1361
- <h6 id="returns-48">Returns</h6>
1406
+ <h6 id="returns-49">Returns</h6>
1362
1407
  <p><code>void</code></p>
1363
1408
  <p><a id="enablepersistence"></a></p>
1364
1409
  <h5 id="enablepersistence">enablePersistence()</h5>
@@ -1380,7 +1425,7 @@ flush on <code>beforeunload</code> so a page navigation doesn’t lose the
1380
1425
  tail of the debounce window.</p>
1381
1426
  <p>See <a href="/docs/pyric-sandbox-reference-api/#sandboxpersistenceoptions">SandboxPersistenceOptions</a> for backend selection and
1382
1427
  tuning.</p>
1383
- <h6 id="parameters-25">Parameters</h6>
1428
+ <h6 id="parameters-26">Parameters</h6>
1384
1429
  <div class="table-scroll">
1385
1430
 
1386
1431
 
@@ -1395,7 +1440,7 @@ tuning.</p>
1395
1440
 
1396
1441
 
1397
1442
  <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="/docs/pyric-sandbox-reference-api/#sandboxpersistenceoptions"><code>SandboxPersistenceOptions</code></a></td></tr></tbody></table></div>
1398
- <h6 id="returns-49">Returns</h6>
1443
+ <h6 id="returns-50">Returns</h6>
1399
1444
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
1400
1445
  <p><a id="enabletabsync"></a></p>
1401
1446
  <h5 id="enabletabsync">enableTabSync()</h5>
@@ -1414,7 +1459,7 @@ produce last-write-wins divergence — there is no conflict resolution.
1414
1459
  The intended model is one active writer (one user, one tab) with
1415
1460
  observers in other tabs; this covers the overwhelming majority of
1416
1461
  local development scenarios.</p>
1417
- <h6 id="parameters-26">Parameters</h6>
1462
+ <h6 id="parameters-27">Parameters</h6>
1418
1463
  <div class="table-scroll">
1419
1464
 
1420
1465
 
@@ -1429,9 +1474,9 @@ local development scenarios.</p>
1429
1474
 
1430
1475
 
1431
1476
  <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="/docs/pyric-sandbox-reference-api/#tabsyncoptions"><code>TabSyncOptions</code></a></td></tr></tbody></table></div>
1432
- <h6 id="returns-50">Returns</h6>
1433
- <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:#ABB2BF">(): </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
1434
1477
  <h6 id="returns-51">Returns</h6>
1478
+ <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:#ABB2BF">(): </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
1479
+ <h6 id="returns-52">Returns</h6>
1435
1480
  <p><code>void</code></p>
1436
1481
  <h6 id="see">See</h6>
1437
1482
  <p><a href="/docs/pyric-sandbox-reference-api/#tabsyncoptions">TabSyncOptions</a> for channel injection (tests) and originId.</p>
@@ -1449,7 +1494,7 @@ Useful before a manual navigation, or in tests that need
1449
1494
  deterministic ordering against the debounce window. Resolves once
1450
1495
  the write hits the backend.</p>
1451
1496
  <p>Throws if persistence is not enabled.</p>
1452
- <h6 id="returns-52">Returns</h6>
1497
+ <h6 id="returns-53">Returns</h6>
1453
1498
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
1454
1499
  <p><a id="history"></a></p>
1455
1500
  <h5 id="history">history()</h5>
@@ -1466,7 +1511,7 @@ before subscribing) or that need a snapshot at a particular moment.</p>
1466
1511
  <p><code>reset()</code> and <code>dispose()</code> each append a closing <code>session_boundary</code>
1467
1512
  event; <code>reset()</code> then clears the history. Consumers that took a
1468
1513
  snapshot <em>before</em> reset retain the boundary in their copy.</p>
1469
- <h6 id="returns-53">Returns</h6>
1514
+ <h6 id="returns-54">Returns</h6>
1470
1515
  <p><a href="/docs/pyric-sandbox-reference-api/#sandboxevent"><code>SandboxEvent</code></a>[]</p>
1471
1516
  <p><a id="loadsnapshot"></a></p>
1472
1517
  <h5 id="loadsnapshot">loadSnapshot()</h5>
@@ -1483,7 +1528,7 @@ Services present in <code>data</code> but not currently registered are skipped (
1483
1528
  snapshot taken via <a href="#snapshot">snapshot</a> always includes every registered
1484
1529
  service, so this only affects cross-instance imports from a sandbox that had
1485
1530
  a service this one lacks).</p>
1486
- <h6 id="parameters-27">Parameters</h6>
1531
+ <h6 id="parameters-28">Parameters</h6>
1487
1532
  <div class="table-scroll">
1488
1533
 
1489
1534
 
@@ -1498,7 +1543,7 @@ a service this one lacks).</p>
1498
1543
 
1499
1544
 
1500
1545
  <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-sandbox-reference-api/#sandboxsnapshot"><code>SandboxSnapshot</code></a></td></tr></tbody></table></div>
1501
- <h6 id="returns-54">Returns</h6>
1546
+ <h6 id="returns-55">Returns</h6>
1502
1547
  <p><code>void</code></p>
1503
1548
  <p><a id="oncurrentuserchanged"></a></p>
1504
1549
  <h5 id="oncurrentuserchanged">onCurrentUserChanged()</h5>
@@ -1515,7 +1560,7 @@ the env.</p>
1515
1560
  <p>Returns an unsubscribe function. Listener errors are swallowed —
1516
1561
  subscribers are observational, the sandbox does not propagate
1517
1562
  their errors.</p>
1518
- <h6 id="parameters-28">Parameters</h6>
1563
+ <h6 id="parameters-29">Parameters</h6>
1519
1564
  <div class="table-scroll">
1520
1565
 
1521
1566
 
@@ -1530,9 +1575,9 @@ their errors.</p>
1530
1575
 
1531
1576
 
1532
1577
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>cb</code></td><td align="left">(<code>user</code>: { <code>token?</code>: <code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>>; <code>uid</code>: <code>string</code>; }) => <code>void</code></td></tr></tbody></table></div>
1533
- <h6 id="returns-55">Returns</h6>
1534
- <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:#ABB2BF">(): </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
1535
1578
  <h6 id="returns-56">Returns</h6>
1579
+ <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:#ABB2BF">(): </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
1580
+ <h6 id="returns-57">Returns</h6>
1536
1581
  <p><code>void</code></p>
1537
1582
  <p><a id="onevent"></a></p>
1538
1583
  <h5 id="onevent">onEvent()</h5>
@@ -1557,7 +1602,7 @@ faulty subscriber can’t change rule semantics or hide other events.
1557
1602
  Both synchronous throws and rejected Promises from async callbacks
1558
1603
  are silently discarded — subscribers are <strong>observational</strong>, the
1559
1604
  sandbox doesn’t await them and doesn’t propagate their errors.</p>
1560
- <h6 id="parameters-29">Parameters</h6>
1605
+ <h6 id="parameters-30">Parameters</h6>
1561
1606
  <div class="table-scroll">
1562
1607
 
1563
1608
 
@@ -1572,9 +1617,9 @@ sandbox doesn’t await them and doesn’t propagate their errors.</p>
1572
1617
 
1573
1618
 
1574
1619
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>cb</code></td><td align="left">(<code>event</code>: <a href="/docs/pyric-sandbox-reference-api/#sandboxevent"><code>SandboxEvent</code></a>) => <code>void</code></td></tr></tbody></table></div>
1575
- <h6 id="returns-57">Returns</h6>
1576
- <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:#ABB2BF">(): </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
1577
1620
  <h6 id="returns-58">Returns</h6>
1621
+ <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:#ABB2BF">(): </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
1622
+ <h6 id="returns-59">Returns</h6>
1578
1623
  <p><code>void</code></p>
1579
1624
  <p><a id="registerpersistableservice"></a></p>
1580
1625
  <h5 id="registerpersistableservice">registerPersistableService()</h5>
@@ -1595,7 +1640,7 @@ registration is a caller bug, not a no-op.</p>
1595
1640
  <p><strong>Advanced / internal API.</strong> Service packages (auth, storage) call
1596
1641
  this when they first attach to a sandbox. Consumer app code should
1597
1642
  not need to call this directly.</p>
1598
- <h6 id="parameters-30">Parameters</h6>
1643
+ <h6 id="parameters-31">Parameters</h6>
1599
1644
  <div class="table-scroll">
1600
1645
 
1601
1646
 
@@ -1614,9 +1659,9 @@ not need to call this directly.</p>
1614
1659
 
1615
1660
 
1616
1661
  <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><tr><td align="left"><code>hooks</code></td><td align="left"><a href="/docs/pyric-sandbox-reference-api/#persistableservice"><code>PersistableService</code></a></td></tr></tbody></table></div>
1617
- <h6 id="returns-59">Returns</h6>
1618
- <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:#ABB2BF">(): </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
1619
1662
  <h6 id="returns-60">Returns</h6>
1663
+ <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:#ABB2BF">(): </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
1664
+ <h6 id="returns-61">Returns</h6>
1620
1665
  <p><code>void</code></p>
1621
1666
  <p><a id="reset"></a></p>
1622
1667
  <h5 id="reset">reset()</h5>
@@ -1630,7 +1675,7 @@ the sandbox, and a <code>session_boundary</code> event with <code>phase: 'reset'
1630
1675
  fires before the swap so subscribers know the rollover happened.
1631
1676
  Existing <a href="#sandboxcontext">SandboxContext</a>s continue to work — their sandbox
1632
1677
  reference is stable; subsequent operations resolve to the new env.</p>
1633
- <h6 id="returns-61">Returns</h6>
1678
+ <h6 id="returns-62">Returns</h6>
1634
1679
  <p><code>void</code></p>
1635
1680
  <p><a id="resetall"></a></p>
1636
1681
  <h5 id="resetall">resetAll()</h5>
@@ -1649,7 +1694,7 @@ returned promise resolves when every service has finished clearing.
1649
1694
  A service whose <code>reset</code> throws is isolated (others still clear) and
1650
1695
  REPORTED in the returned <code>errors</code> (as <code>name: message</code>) — a reset that
1651
1696
  leaves data behind must never look successful to the caller.</p>
1652
- <h6 id="returns-62">Returns</h6>
1697
+ <h6 id="returns-63">Returns</h6>
1653
1698
  <p><code>Promise</code>&#x3C;{
1654
1699
  <code>errors</code>: <code>string</code>[];
1655
1700
  }></p>
@@ -1689,7 +1734,7 @@ spell <code>sandbox.runWithProvenance?.(prov, fn) ?? fn()</code>.</p>
1689
1734
 
1690
1735
 
1691
1736
  <table><thead><tr><th align="left">Type Parameter</th></tr></thead><tbody><tr><td align="left"><code>T</code></td></tr></tbody></table></div>
1692
- <h6 id="parameters-31">Parameters</h6>
1737
+ <h6 id="parameters-32">Parameters</h6>
1693
1738
  <div class="table-scroll">
1694
1739
 
1695
1740
 
@@ -1708,7 +1753,7 @@ spell <code>sandbox.runWithProvenance?.(prov, fn) ?? fn()</code>.</p>
1708
1753
 
1709
1754
 
1710
1755
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>provenance</code></td><td align="left"><a href="/docs/pyric-sandbox-reference-api/#eventprovenance"><code>EventProvenance</code></a></td></tr><tr><td align="left"><code>fn</code></td><td align="left">() => <code>T</code></td></tr></tbody></table></div>
1711
- <h6 id="returns-63">Returns</h6>
1756
+ <h6 id="returns-64">Returns</h6>
1712
1757
  <p><code>T</code></p>
1713
1758
  <p><a id="snapshot"></a></p>
1714
1759
  <h5 id="snapshot">snapshot()</h5>
@@ -1716,7 +1761,7 @@ spell <code>sandbox.runWithProvenance?.(prov, fn) ?? fn()</code>.</p>
1716
1761
  <p>Capture a snapshot of every service’s state. For v1 with only
1717
1762
  Firestore, the return value carries a <code>firestore</code> key mapping doc
1718
1763
  paths to data. Future services will add their own keys.</p>
1719
- <h6 id="returns-64">Returns</h6>
1764
+ <h6 id="returns-65">Returns</h6>
1720
1765
  <p><a href="/docs/pyric-sandbox-reference-api/#sandboxsnapshot"><code>SandboxSnapshot</code></a></p>
1721
1766
  <p><a id="withauth"></a></p>
1722
1767
  <h5 id="withauth">withAuth()</h5>
@@ -1732,7 +1777,7 @@ coexist for one sandbox; data is shared.</p>
1732
1777
  optional custom claims). Passing <code>undefined</code> is a deliberate
1733
1778
  error — say <code>withAuth(null)</code> for anonymous so the call site is
1734
1779
  unambiguous.</p>
1735
- <h6 id="parameters-32">Parameters</h6>
1780
+ <h6 id="parameters-33">Parameters</h6>
1736
1781
  <div class="table-scroll">
1737
1782
 
1738
1783
 
@@ -1755,7 +1800,7 @@ unambiguous.</p>
1755
1800
 
1756
1801
 
1757
1802
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><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></tbody></table></div>
1758
- <h6 id="returns-65">Returns</h6>
1803
+ <h6 id="returns-66">Returns</h6>
1759
1804
  <p><a href="#sandboxcontext"><code>SandboxContext</code></a></p>
1760
1805
  <h6 id="example-1">Example</h6>
1761
1806
  <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">const</span><span style="color:#E5C07B"> sandbox</span><span style="color:#56B6C2"> =</span><span style="color:#61AFEF"> initializeSandbox</span><span style="color:#ABB2BF">();</span></span>
@@ -1826,7 +1871,7 @@ factories; consumers don’t construct it directly.</p>
1826
1871
  <p>Derive a sibling context on the same sandbox with different auth.
1827
1872
  Replaces auth and its lens while preserving the operation source and
1828
1873
  optional plan identity.</p>
1829
- <h6 id="parameters-33">Parameters</h6>
1874
+ <h6 id="parameters-34">Parameters</h6>
1830
1875
  <div class="table-scroll">
1831
1876
 
1832
1877
 
@@ -1849,7 +1894,7 @@ optional plan identity.</p>
1849
1894
 
1850
1895
 
1851
1896
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><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></tbody></table></div>
1852
- <h6 id="returns-66">Returns</h6>
1897
+ <h6 id="returns-67">Returns</h6>
1853
1898
  <p><a href="#sandboxcontext"><code>SandboxContext</code></a></p>
1854
1899
  <hr>
1855
1900
  <p><a id="setoptions"></a></p>
@@ -1906,6 +1951,31 @@ matching the JS SDK’s effective behavior).</p>
1906
1951
 
1907
1952
  <table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="includemetadatachanges"></a> <code>includeMetadataChanges?</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
1908
1953
  <hr>
1954
+ <p><a id="snapshotmetadata"></a></p>
1955
+ <h3 id="snapshotmetadata">SnapshotMetadata</h3>
1956
+ <h4 id="properties-18">Properties</h4>
1957
+ <div class="table-scroll">
1958
+
1959
+
1960
+
1961
+
1962
+
1963
+
1964
+
1965
+
1966
+
1967
+
1968
+
1969
+
1970
+
1971
+
1972
+
1973
+
1974
+
1975
+
1976
+
1977
+ <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="fromcache"></a> <code>fromCache</code></td><td align="left"><code>readonly</code></td><td align="left"><code>boolean</code></td></tr><tr><td align="left"><a id="haspendingwrites"></a> <code>hasPendingWrites</code></td><td align="left"><code>readonly</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
1978
+ <hr>
1909
1979
  <p><a id="snapshotobserver"></a></p>
1910
1980
  <h3 id="snapshotobserver">SnapshotObserver</h3>
1911
1981
  <h4 id="type-parameters-9">Type Parameters</h4>
@@ -1921,7 +1991,7 @@ matching the JS SDK’s effective behavior).</p>
1921
1991
 
1922
1992
 
1923
1993
  <table><thead><tr><th align="left">Type Parameter</th></tr></thead><tbody><tr><td align="left"><code>T</code></td></tr></tbody></table></div>
1924
- <h4 id="properties-18">Properties</h4>
1994
+ <h4 id="properties-19">Properties</h4>
1925
1995
  <div class="table-scroll">
1926
1996
 
1927
1997
 
@@ -1945,9 +2015,28 @@ matching the JS SDK’s effective behavior).</p>
1945
2015
 
1946
2016
  <table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="complete"></a> <code>complete?</code></td><td align="left">() => <code>void</code></td></tr><tr><td align="left"><a id="error"></a> <code>error?</code></td><td align="left">(<code>error</code>: <code>unknown</code>) => <code>void</code></td></tr><tr><td align="left"><a id="next"></a> <code>next?</code></td><td align="left">(<code>snapshot</code>: <code>T</code>) => <code>void</code></td></tr></tbody></table></div>
1947
2017
  <hr>
2018
+ <p><a id="transactionoptions"></a></p>
2019
+ <h3 id="transactionoptions">TransactionOptions</h3>
2020
+ <p>Options accepted by the modular Web-SDK-shaped <code>runTransaction</code>.</p>
2021
+ <h4 id="properties-20">Properties</h4>
2022
+ <div class="table-scroll">
2023
+
2024
+
2025
+
2026
+
2027
+
2028
+
2029
+
2030
+
2031
+
2032
+
2033
+
2034
+
2035
+ <table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="maxattempts"></a> <code>maxAttempts?</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
2036
+ <hr>
1948
2037
  <p><a id="userauth"></a></p>
1949
2038
  <h3 id="userauth">UserAuth</h3>
1950
- <h4 id="properties-19">Properties</h4>
2039
+ <h4 id="properties-21">Properties</h4>
1951
2040
  <div class="table-scroll">
1952
2041
 
1953
2042
 
@@ -2053,7 +2142,7 @@ names should reflect that.</p>
2053
2142
  <hr>
2054
2143
  <p><a id="orderdirection"></a></p>
2055
2144
  <h3 id="orderdirection">OrderDirection</h3>
2056
- <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"> OrderDirection</span><span style="color:#56B6C2"> =</span><span style="color:#98C379"> "asc"</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"desc"</span><span style="color:#ABB2BF">;</span></span></code></pre>
2145
+ <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"> OrderDirection</span><span style="color:#56B6C2"> =</span><span style="color:#E5C07B"> QueryOrderDirection</span><span style="color:#ABB2BF">;</span></span></code></pre>
2057
2146
  <hr>
2058
2147
  <p><a id="transaction"></a></p>
2059
2148
  <h3 id="transaction">Transaction</h3>
@@ -2062,22 +2151,12 @@ names should reflect that.</p>
2062
2151
  <p><a id="unsubscribe"></a></p>
2063
2152
  <h3 id="unsubscribe">Unsubscribe()</h3>
2064
2153
  <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>
2065
- <h4 id="returns-67">Returns</h4>
2154
+ <h4 id="returns-68">Returns</h4>
2066
2155
  <p><code>void</code></p>
2067
2156
  <hr>
2068
2157
  <p><a id="wherefilterop"></a></p>
2069
2158
  <h3 id="wherefilterop">WhereFilterOp</h3>
2070
- <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"> WhereFilterOp</span><span style="color:#56B6C2"> =</span></span>
2071
- <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"&#x3C;"</span></span>
2072
- <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"&#x3C;="</span></span>
2073
- <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"=="</span></span>
2074
- <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"!="</span></span>
2075
- <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">">="</span></span>
2076
- <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">">"</span></span>
2077
- <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"in"</span></span>
2078
- <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"not-in"</span></span>
2079
- <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"array-contains"</span></span>
2080
- <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"array-contains-any"</span><span style="color:#ABB2BF">;</span></span></code></pre>
2159
+ <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"> WhereFilterOp</span><span style="color:#56B6C2"> =</span><span style="color:#E5C07B"> QueryWhereFilterOp</span><span style="color:#ABB2BF">;</span></span></code></pre>
2081
2160
  <hr>
2082
2161
  <p><a id="writebatch"></a></p>
2083
2162
  <h3 id="writebatch">WriteBatch</h3>
@@ -2101,7 +2180,7 @@ rules as that user (<code>request.auth.uid === uid</code>; custom claims via <co
2101
2180
  <code>actingAs(sandbox, null)</code> is the anonymous (signed-out) path. Multiple
2102
2181
  identities over ONE sandbox share the same store, so a write by one is
2103
2182
  delivered to another’s <code>onSnapshot</code>: the basis for multi-user sync testing.</p>
2104
- <h4 id="parameters-34">Parameters</h4>
2183
+ <h4 id="parameters-35">Parameters</h4>
2105
2184
  <div class="table-scroll">
2106
2185
 
2107
2186
 
@@ -2128,7 +2207,7 @@ delivered to another’s <code>onSnapshot</code>: the basis for multi-user sync
2128
2207
 
2129
2208
 
2130
2209
  <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="#sandbox"><code>Sandbox</code></a></td></tr><tr><td align="left"><code>identity</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>identity.token?</code></td><td align="left"><code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>></td></tr><tr><td align="left"><code>identity.uid</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
2131
- <h4 id="returns-68">Returns</h4>
2210
+ <h4 id="returns-69">Returns</h4>
2132
2211
  <p><a href="#firestore"><code>Firestore</code></a></p>
2133
2212
  <h4 id="example-2">Example</h4>
2134
2213
  <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>
@@ -2162,7 +2241,7 @@ the design rationale.</p>
2162
2241
 
2163
2242
 
2164
2243
  <table><thead><tr><th align="left">Type Parameter</th><th align="left">Default type</th></tr></thead><tbody><tr><td align="left"><code>T</code></td><td align="left"><a href="#documentdata"><code>DocumentData</code></a></td></tr></tbody></table></div>
2165
- <h4 id="parameters-35">Parameters</h4>
2244
+ <h4 id="parameters-36">Parameters</h4>
2166
2245
  <div class="table-scroll">
2167
2246
 
2168
2247
 
@@ -2181,7 +2260,7 @@ the design rationale.</p>
2181
2260
 
2182
2261
 
2183
2262
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>coll</code></td><td align="left"><a href="#collectionreference"><code>CollectionReference</code></a>&#x3C;<code>T</code>></td></tr><tr><td align="left"><code>data</code></td><td align="left"><code>T</code></td></tr></tbody></table></div>
2184
- <h4 id="returns-69">Returns</h4>
2263
+ <h4 id="returns-70">Returns</h4>
2185
2264
  <p><code>Promise</code>&#x3C;<a href="#documentreference"><code>DocumentReference</code></a>&#x3C;<code>T</code>>></p>
2186
2265
  <hr>
2187
2266
  <p><a id="and"></a></p>
@@ -2190,7 +2269,7 @@ the design rationale.</p>
2190
2269
  <p>AND composite. Same shape as <code>or()</code> but every inner constraint
2191
2270
  must match. Useful inside an <code>or()</code> to combine constraints that
2192
2271
  would otherwise be at the top level.</p>
2193
- <h4 id="parameters-36">Parameters</h4>
2272
+ <h4 id="parameters-37">Parameters</h4>
2194
2273
  <div class="table-scroll">
2195
2274
 
2196
2275
 
@@ -2205,13 +2284,13 @@ would otherwise be at the top level.</p>
2205
2284
 
2206
2285
 
2207
2286
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left">…<code>filters</code></td><td align="left"><a href="#queryconstraint"><code>QueryConstraint</code></a>[]</td></tr></tbody></table></div>
2208
- <h4 id="returns-70">Returns</h4>
2287
+ <h4 id="returns-71">Returns</h4>
2209
2288
  <p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
2210
2289
  <hr>
2211
2290
  <p><a id="arrayremove-2"></a></p>
2212
2291
  <h3 id="arrayremove-1">arrayRemove()</h3>
2213
2292
  <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"> arrayRemove</span><span style="color:#ABB2BF">(...</span><span style="color:#E06C75;font-style:italic">values</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">[]): </span><span style="color:#E5C07B">FieldValueSentinel</span><span style="color:#ABB2BF">;</span></span></code></pre>
2214
- <h4 id="parameters-37">Parameters</h4>
2293
+ <h4 id="parameters-38">Parameters</h4>
2215
2294
  <div class="table-scroll">
2216
2295
 
2217
2296
 
@@ -2226,13 +2305,13 @@ would otherwise be at the top level.</p>
2226
2305
 
2227
2306
 
2228
2307
  <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></tbody></table></div>
2229
- <h4 id="returns-71">Returns</h4>
2308
+ <h4 id="returns-72">Returns</h4>
2230
2309
  <p><a href="#fieldvaluesentinel"><code>FieldValueSentinel</code></a></p>
2231
2310
  <hr>
2232
2311
  <p><a id="arrayunion-2"></a></p>
2233
2312
  <h3 id="arrayunion-1">arrayUnion()</h3>
2234
2313
  <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"> arrayUnion</span><span style="color:#ABB2BF">(...</span><span style="color:#E06C75;font-style:italic">values</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">[]): </span><span style="color:#E5C07B">FieldValueSentinel</span><span style="color:#ABB2BF">;</span></span></code></pre>
2235
- <h4 id="parameters-38">Parameters</h4>
2314
+ <h4 id="parameters-39">Parameters</h4>
2236
2315
  <div class="table-scroll">
2237
2316
 
2238
2317
 
@@ -2247,14 +2326,14 @@ would otherwise be at the top level.</p>
2247
2326
 
2248
2327
 
2249
2328
  <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></tbody></table></div>
2250
- <h4 id="returns-72">Returns</h4>
2329
+ <h4 id="returns-73">Returns</h4>
2251
2330
  <p><a href="#fieldvaluesentinel"><code>FieldValueSentinel</code></a></p>
2252
2331
  <hr>
2253
2332
  <p><a id="average"></a></p>
2254
2333
  <h3 id="average">average()</h3>
2255
2334
  <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"> average</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">field</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">AggregateField</span><span style="color:#ABB2BF">;</span></span></code></pre>
2256
2335
  <p>Factory: average-of-<code>field</code> aggregate.</p>
2257
- <h4 id="parameters-39">Parameters</h4>
2336
+ <h4 id="parameters-40">Parameters</h4>
2258
2337
  <div class="table-scroll">
2259
2338
 
2260
2339
 
@@ -2269,7 +2348,7 @@ would otherwise be at the top level.</p>
2269
2348
 
2270
2349
 
2271
2350
  <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></tbody></table></div>
2272
- <h4 id="returns-73">Returns</h4>
2351
+ <h4 id="returns-74">Returns</h4>
2273
2352
  <p><a href="#aggregatefield"><code>AggregateField</code></a></p>
2274
2353
  <hr>
2275
2354
  <p><a id="clearindexeddbpersistence"></a></p>
@@ -2288,7 +2367,7 @@ same way as a <code>sandbox</code>/<code>sandbox-live</code> target’s <code>.s
2288
2367
  both variants do, in fact, so this always has a sandbox to call into.</p>
2289
2368
  <p>The real SDK requires this before Firestore starts; the sandbox’s mapped
2290
2369
  <code>clearPersistence()</code> has no such restriction.</p>
2291
- <h4 id="parameters-40">Parameters</h4>
2370
+ <h4 id="parameters-41">Parameters</h4>
2292
2371
  <div class="table-scroll">
2293
2372
 
2294
2373
 
@@ -2303,7 +2382,7 @@ both variants do, in fact, so this always has a sandbox to call into.</p>
2303
2382
 
2304
2383
 
2305
2384
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#firestore"><code>Firestore</code></a></td></tr></tbody></table></div>
2306
- <h4 id="returns-74">Returns</h4>
2385
+ <h4 id="returns-75">Returns</h4>
2307
2386
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
2308
2387
  <hr>
2309
2388
  <p><a id="collection"></a></p>
@@ -2311,7 +2390,7 @@ both variants do, in fact, so this always has a sandbox to call into.</p>
2311
2390
  <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"> collection</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">parent</span><span style="color:#ABB2BF">:</span></span>
2312
2391
  <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">Firestore</span></span>
2313
2392
  <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">DocumentReference</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">DocumentData</span><span style="color:#ABB2BF">>, ...</span><span style="color:#E06C75;font-style:italic">pathSegments</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">[]): </span><span style="color:#E5C07B">CollectionReference</span><span style="color:#ABB2BF">;</span></span></code></pre>
2314
- <h4 id="parameters-41">Parameters</h4>
2393
+ <h4 id="parameters-42">Parameters</h4>
2315
2394
  <div class="table-scroll">
2316
2395
 
2317
2396
 
@@ -2330,7 +2409,7 @@ both variants do, in fact, so this always has a sandbox to call into.</p>
2330
2409
 
2331
2410
 
2332
2411
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>parent</code></td><td align="left">| <a href="#firestore"><code>Firestore</code></a> | <a href="#documentreference"><code>DocumentReference</code></a>&#x3C;<a href="#documentdata"><code>DocumentData</code></a>></td></tr><tr><td align="left">…<code>pathSegments</code></td><td align="left"><code>string</code>[]</td></tr></tbody></table></div>
2333
- <h4 id="returns-75">Returns</h4>
2412
+ <h4 id="returns-76">Returns</h4>
2334
2413
  <p><a href="#collectionreference"><code>CollectionReference</code></a></p>
2335
2414
  <hr>
2336
2415
  <p><a id="collectiongroup"></a></p>
@@ -2341,7 +2420,7 @@ collection whose final segment matches <code>collectionId</code>. Mirrors
2341
2420
  <code>firebase/firestore</code>’s <code>collectionGroup(db, id)</code> shape.</p>
2342
2421
  <p>Returned <code>Query</code> accepts the same <code>where</code> / <code>orderBy</code> / <code>limit</code>
2343
2422
  constraints as any other query.</p>
2344
- <h4 id="parameters-42">Parameters</h4>
2423
+ <h4 id="parameters-43">Parameters</h4>
2345
2424
  <div class="table-scroll">
2346
2425
 
2347
2426
 
@@ -2360,7 +2439,7 @@ constraints as any other query.</p>
2360
2439
 
2361
2440
 
2362
2441
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#firestore"><code>Firestore</code></a></td></tr><tr><td align="left"><code>collectionId</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
2363
- <h4 id="returns-76">Returns</h4>
2442
+ <h4 id="returns-77">Returns</h4>
2364
2443
  <p><a href="#query"><code>Query</code></a></p>
2365
2444
  <hr>
2366
2445
  <p><a id="connectfirestoreemulator"></a></p>
@@ -2384,7 +2463,7 @@ constraints as any other query.</p>
2384
2463
  <p>No-op in the sandbox mirror because the sandbox already runs locally.</p>
2385
2464
  <p>The option shape remains source-compatible with Firebase so canonical
2386
2465
  initialization code can call it unconditionally.</p>
2387
- <h4 id="parameters-43">Parameters</h4>
2466
+ <h4 id="parameters-44">Parameters</h4>
2388
2467
  <div class="table-scroll">
2389
2468
 
2390
2469
 
@@ -2415,14 +2494,14 @@ initialization code can call it unconditionally.</p>
2415
2494
 
2416
2495
 
2417
2496
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#firestore"><code>Firestore</code></a></td></tr><tr><td align="left"><code>host</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>port</code></td><td align="left"><code>number</code></td></tr><tr><td align="left"><code>options?</code></td><td align="left">{ <code>mockUserToken?</code>: | <code>string</code> | { [<code>claim</code>: <code>string</code>]: <code>unknown</code>; <code>firebase?</code>: { <code>identities?</code>: <code>Record</code>&#x3C;<code>string</code>, <code>string</code>[]>; <code>sign_in_provider?</code>: <code>string</code>; }; <code>sub?</code>: <code>string</code>; <code>user_id?</code>: <code>string</code>; }; }</td></tr><tr><td align="left"><code>options.mockUserToken?</code></td><td align="left">| <code>string</code> | { [<code>claim</code>: <code>string</code>]: <code>unknown</code>; <code>firebase?</code>: { <code>identities?</code>: <code>Record</code>&#x3C;<code>string</code>, <code>string</code>[]>; <code>sign_in_provider?</code>: <code>string</code>; }; <code>sub?</code>: <code>string</code>; <code>user_id?</code>: <code>string</code>; }</td></tr></tbody></table></div>
2418
- <h4 id="returns-77">Returns</h4>
2497
+ <h4 id="returns-78">Returns</h4>
2419
2498
  <p><code>void</code></p>
2420
2499
  <hr>
2421
2500
  <p><a id="count"></a></p>
2422
2501
  <h3 id="count">count()</h3>
2423
2502
  <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"> count</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">AggregateField</span><span style="color:#ABB2BF">;</span></span></code></pre>
2424
2503
  <p>Factory: count() aggregate.</p>
2425
- <h4 id="returns-78">Returns</h4>
2504
+ <h4 id="returns-79">Returns</h4>
2426
2505
  <p><a href="#aggregatefield"><code>AggregateField</code></a></p>
2427
2506
  <hr>
2428
2507
  <p><a id="createfirestoredatatools"></a></p>
@@ -2431,7 +2510,7 @@ initialization code can call it unconditionally.</p>
2431
2510
  <p>Modular Web-SDK-shaped Firestore data tools — get, list, create,
2432
2511
  update, delete. Each tool’s <code>auth</code> arg is forwarded to the
2433
2512
  resolver; omitted = admin mode, supplied = user mode.</p>
2434
- <h4 id="parameters-44">Parameters</h4>
2513
+ <h4 id="parameters-45">Parameters</h4>
2435
2514
  <div class="table-scroll">
2436
2515
 
2437
2516
 
@@ -2446,7 +2525,7 @@ resolver; omitted = admin mode, supplied = user mode.</p>
2446
2525
 
2447
2526
 
2448
2527
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>deps</code></td><td align="left"><a href="#firestoredatatooldeps"><code>FirestoreDataToolDeps</code></a></td></tr></tbody></table></div>
2449
- <h4 id="returns-79">Returns</h4>
2528
+ <h4 id="returns-80">Returns</h4>
2450
2529
  <p><code>ToolHandler</code>&#x3C;<code>unknown</code>, <code>unknown</code>>[]</p>
2451
2530
  <hr>
2452
2531
  <p><a id="createfirestoreinspecttools"></a></p>
@@ -2465,7 +2544,7 @@ document census by collection, and the most-recent denials + requests
2465
2544
  from sandbox.history(). Everything an agent needs to localize a
2466
2545
  sandbox bug in one round-trip.</p>
2467
2546
  <p>Sandbox-only. <code>resolveSandbox</code> must return the owning Sandbox.</p>
2468
- <h4 id="parameters-45">Parameters</h4>
2547
+ <h4 id="parameters-46">Parameters</h4>
2469
2548
  <div class="table-scroll">
2470
2549
 
2471
2550
 
@@ -2480,13 +2559,13 @@ sandbox bug in one round-trip.</p>
2480
2559
 
2481
2560
 
2482
2561
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>deps</code></td><td align="left"><a href="#firestoreinspecttooldeps"><code>FirestoreInspectToolDeps</code></a></td></tr></tbody></table></div>
2483
- <h4 id="returns-80">Returns</h4>
2562
+ <h4 id="returns-81">Returns</h4>
2484
2563
  <p><code>ToolHandler</code>&#x3C;<code>unknown</code>, <code>unknown</code>>[]</p>
2485
2564
  <hr>
2486
2565
  <p><a id="deletedoc"></a></p>
2487
2566
  <h3 id="deletedoc">deleteDoc()</h3>
2488
2567
  <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"> deleteDoc</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">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">>;</span></span></code></pre>
2489
- <h4 id="parameters-46">Parameters</h4>
2568
+ <h4 id="parameters-47">Parameters</h4>
2490
2569
  <div class="table-scroll">
2491
2570
 
2492
2571
 
@@ -2501,13 +2580,13 @@ sandbox bug in one round-trip.</p>
2501
2580
 
2502
2581
 
2503
2582
  <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>
2504
- <h4 id="returns-81">Returns</h4>
2583
+ <h4 id="returns-82">Returns</h4>
2505
2584
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
2506
2585
  <hr>
2507
2586
  <p><a id="deletefield"></a></p>
2508
2587
  <h3 id="deletefield">deleteField()</h3>
2509
2588
  <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"> deleteField</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">FieldValueSentinel</span><span style="color:#ABB2BF">;</span></span></code></pre>
2510
- <h4 id="returns-82">Returns</h4>
2589
+ <h4 id="returns-83">Returns</h4>
2511
2590
  <p><a href="#fieldvaluesentinel"><code>FieldValueSentinel</code></a></p>
2512
2591
  <hr>
2513
2592
  <p><a id="disablenetwork"></a></p>
@@ -2521,7 +2600,7 @@ queuing, because the sandbox cannot honestly deliver “queued until
2521
2600
  reconnected” when there is no connection to lose in the first place.
2522
2601
  App code that calls this to prep for flaky connectivity will not
2523
2602
  crash, but it also will not observe write-queuing behavior.</p>
2524
- <h4 id="parameters-47">Parameters</h4>
2603
+ <h4 id="parameters-48">Parameters</h4>
2525
2604
  <div class="table-scroll">
2526
2605
 
2527
2606
 
@@ -2536,7 +2615,7 @@ crash, but it also will not observe write-queuing behavior.</p>
2536
2615
 
2537
2616
 
2538
2617
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#firestore"><code>Firestore</code></a></td></tr></tbody></table></div>
2539
- <h4 id="returns-83">Returns</h4>
2618
+ <h4 id="returns-84">Returns</h4>
2540
2619
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
2541
2620
  <hr>
2542
2621
  <p><a id="doc"></a></p>
@@ -2559,7 +2638,7 @@ crash, but it also will not observe write-queuing behavior.</p>
2559
2638
 
2560
2639
 
2561
2640
  <table><thead><tr><th align="left">Type Parameter</th><th align="left">Default type</th></tr></thead><tbody><tr><td align="left"><code>T</code></td><td align="left"><a href="#documentdata"><code>DocumentData</code></a></td></tr></tbody></table></div>
2562
- <h4 id="parameters-48">Parameters</h4>
2641
+ <h4 id="parameters-49">Parameters</h4>
2563
2642
  <div class="table-scroll">
2564
2643
 
2565
2644
 
@@ -2578,29 +2657,22 @@ crash, but it also will not observe write-queuing behavior.</p>
2578
2657
 
2579
2658
 
2580
2659
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>parent</code></td><td align="left">| <a href="#firestore"><code>Firestore</code></a> | <a href="#collectionreference"><code>CollectionReference</code></a>&#x3C;<code>T</code>></td></tr><tr><td align="left">…<code>pathSegments</code></td><td align="left"><code>string</code>[]</td></tr></tbody></table></div>
2581
- <h4 id="returns-84">Returns</h4>
2660
+ <h4 id="returns-85">Returns</h4>
2582
2661
  <p><a href="#documentreference"><code>DocumentReference</code></a>&#x3C;<code>T</code>></p>
2583
2662
  <hr>
2584
2663
  <p><a id="documentid"></a></p>
2585
2664
  <h3 id="documentid">documentId()</h3>
2586
2665
  <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"> documentId</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">FieldPath</span><span style="color:#ABB2BF">;</span></span></code></pre>
2587
- <h4 id="returns-85">Returns</h4>
2666
+ <h4 id="returns-86">Returns</h4>
2588
2667
  <p><a href="#fieldpath"><code>FieldPath</code></a></p>
2589
2668
  <hr>
2590
2669
  <p><a id="enableindexeddbpersistence"></a></p>
2591
2670
  <h3 id="enableindexeddbpersistence">enableIndexedDbPersistence()</h3>
2592
2671
  <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"> enableIndexedDbPersistence</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Firestore</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">persistenceSettings</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">PersistenceSettings</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">>;</span></span></code></pre>
2593
- <p>Sandbox: no-op success. The sandbox’s default persistence (IndexedDB
2594
- on the SharedWorker/serve path, or whatever backend <code>enablePersistence</code>
2595
- was configured with) already caches every write — this call has
2596
- nothing left to enable. Resolves immediately.</p>
2597
- <p>Unlike the real SDK, this does NOT reject with <code>'failed-precondition'</code>
2598
- when called after other Firestore ops have already run. The guard
2599
- exists in the real SDK to protect an actual cache-initialization
2600
- race; the sandbox has no such race (there’s no cache to initialize),
2601
- so enforcing the same restriction would only make app code that
2602
- calls this defensively at startup fail for no local reason.</p>
2603
- <h4 id="parameters-49">Parameters</h4>
2672
+ <p>Enables the persistence lifecycle before first use. As in the browser SDK,
2673
+ initialization after another Firestore operation rejects with
2674
+ <code>failed-precondition</code>.</p>
2675
+ <h4 id="parameters-50">Parameters</h4>
2604
2676
  <div class="table-scroll">
2605
2677
 
2606
2678
 
@@ -2619,7 +2691,7 @@ calls this defensively at startup fail for no local reason.</p>
2619
2691
 
2620
2692
 
2621
2693
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#firestore"><code>Firestore</code></a></td></tr><tr><td align="left"><code>persistenceSettings?</code></td><td align="left"><a href="#persistencesettings"><code>PersistenceSettings</code></a></td></tr></tbody></table></div>
2622
- <h4 id="returns-86">Returns</h4>
2694
+ <h4 id="returns-87">Returns</h4>
2623
2695
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
2624
2696
  <hr>
2625
2697
  <p><a id="enablemultitabindexeddbpersistence"></a></p>
@@ -2629,7 +2701,7 @@ calls this defensively at startup fail for no local reason.</p>
2629
2701
  Multi-tab coordination is meaningless here too: the sandbox’s
2630
2702
  SharedWorker path already IS the single shared store every tab talks
2631
2703
  to, so there’s no separate “multi-tab” mode to opt into.</p>
2632
- <h4 id="parameters-50">Parameters</h4>
2704
+ <h4 id="parameters-51">Parameters</h4>
2633
2705
  <div class="table-scroll">
2634
2706
 
2635
2707
 
@@ -2644,7 +2716,7 @@ to, so there’s no separate “multi-tab” mode to opt into.</p>
2644
2716
 
2645
2717
 
2646
2718
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#firestore"><code>Firestore</code></a></td></tr></tbody></table></div>
2647
- <h4 id="returns-87">Returns</h4>
2719
+ <h4 id="returns-88">Returns</h4>
2648
2720
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
2649
2721
  <hr>
2650
2722
  <p><a id="enablenetwork"></a></p>
@@ -2652,7 +2724,7 @@ to, so there’s no separate “multi-tab” mode to opt into.</p>
2652
2724
  <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"> enableNetwork</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Firestore</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">>;</span></span></code></pre>
2653
2725
  <p>Sandbox: no-op success, symmetric with <a href="#disablenetwork">disableNetwork</a> — since
2654
2726
  network was never disabled locally, there is nothing to re-enable.</p>
2655
- <h4 id="parameters-51">Parameters</h4>
2727
+ <h4 id="parameters-52">Parameters</h4>
2656
2728
  <div class="table-scroll">
2657
2729
 
2658
2730
 
@@ -2667,7 +2739,7 @@ network was never disabled locally, there is nothing to re-enable.</p>
2667
2739
 
2668
2740
 
2669
2741
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#firestore"><code>Firestore</code></a></td></tr></tbody></table></div>
2670
- <h4 id="returns-88">Returns</h4>
2742
+ <h4 id="returns-89">Returns</h4>
2671
2743
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
2672
2744
  <hr>
2673
2745
  <p><a id="endat"></a></p>
@@ -2676,7 +2748,7 @@ network was never disabled locally, there is nothing to re-enable.</p>
2676
2748
  <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"> endAt</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:#E5C07B">QueryConstraint</span><span style="color:#ABB2BF">;</span></span></code></pre>
2677
2749
  <p>End the query at the document whose ordered field values match
2678
2750
  the cursor. Inclusive — the document at the cursor IS included.</p>
2679
- <h5 id="parameters-52">Parameters</h5>
2751
+ <h5 id="parameters-53">Parameters</h5>
2680
2752
  <div class="table-scroll">
2681
2753
 
2682
2754
 
@@ -2691,13 +2763,13 @@ the cursor. Inclusive — the document at the cursor IS included.</p>
2691
2763
 
2692
2764
 
2693
2765
  <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="#documentsnapshot"><code>DocumentSnapshot</code></a></td></tr></tbody></table></div>
2694
- <h5 id="returns-89">Returns</h5>
2766
+ <h5 id="returns-90">Returns</h5>
2695
2767
  <p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
2696
2768
  <h4 id="call-signature-1">Call Signature</h4>
2697
2769
  <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"> endAt</span><span style="color:#ABB2BF">(...</span><span style="color:#E06C75;font-style:italic">values</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">[]): </span><span style="color:#E5C07B">QueryConstraint</span><span style="color:#ABB2BF">;</span></span></code></pre>
2698
2770
  <p>End the query at the document whose ordered field values match
2699
2771
  the cursor. Inclusive — the document at the cursor IS included.</p>
2700
- <h5 id="parameters-53">Parameters</h5>
2772
+ <h5 id="parameters-54">Parameters</h5>
2701
2773
  <div class="table-scroll">
2702
2774
 
2703
2775
 
@@ -2712,7 +2784,7 @@ the cursor. Inclusive — the document at the cursor IS included.</p>
2712
2784
 
2713
2785
 
2714
2786
  <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></tbody></table></div>
2715
- <h5 id="returns-90">Returns</h5>
2787
+ <h5 id="returns-91">Returns</h5>
2716
2788
  <p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
2717
2789
  <hr>
2718
2790
  <p><a id="endbefore"></a></p>
@@ -2721,7 +2793,7 @@ the cursor. Inclusive — the document at the cursor IS included.</p>
2721
2793
  <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"> endBefore</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:#E5C07B">QueryConstraint</span><span style="color:#ABB2BF">;</span></span></code></pre>
2722
2794
  <p>Same as <code>endAt</code>, but EXCLUDES the document at the cursor — the
2723
2795
  result ends at the prior ordered position.</p>
2724
- <h5 id="parameters-54">Parameters</h5>
2796
+ <h5 id="parameters-55">Parameters</h5>
2725
2797
  <div class="table-scroll">
2726
2798
 
2727
2799
 
@@ -2736,13 +2808,13 @@ result ends at the prior ordered position.</p>
2736
2808
 
2737
2809
 
2738
2810
  <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="#documentsnapshot"><code>DocumentSnapshot</code></a></td></tr></tbody></table></div>
2739
- <h5 id="returns-91">Returns</h5>
2811
+ <h5 id="returns-92">Returns</h5>
2740
2812
  <p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
2741
2813
  <h4 id="call-signature-3">Call Signature</h4>
2742
2814
  <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"> endBefore</span><span style="color:#ABB2BF">(...</span><span style="color:#E06C75;font-style:italic">values</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">[]): </span><span style="color:#E5C07B">QueryConstraint</span><span style="color:#ABB2BF">;</span></span></code></pre>
2743
2815
  <p>Same as <code>endAt</code>, but EXCLUDES the document at the cursor — the
2744
2816
  result ends at the prior ordered position.</p>
2745
- <h5 id="parameters-55">Parameters</h5>
2817
+ <h5 id="parameters-56">Parameters</h5>
2746
2818
  <div class="table-scroll">
2747
2819
 
2748
2820
 
@@ -2757,7 +2829,7 @@ result ends at the prior ordered position.</p>
2757
2829
 
2758
2830
 
2759
2831
  <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></tbody></table></div>
2760
- <h5 id="returns-92">Returns</h5>
2832
+ <h5 id="returns-93">Returns</h5>
2761
2833
  <p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
2762
2834
  <hr>
2763
2835
  <p><a id="getadminfirestore"></a></p>
@@ -2782,7 +2854,7 @@ handle is a FROZEN <code>sandbox</code> target: it does not track
2782
2854
  <p>Intended for Studio’s “edit anything as admin” surfaces (F2) and the
2783
2855
  serve worker’s <code>{ mode: 'admin' }</code> auth lens. For rules-applied
2784
2856
  impersonation (“act as this user”), use <code>getFirestore(sandbox.withAuth({ uid }))</code> instead.</p>
2785
- <h5 id="parameters-56">Parameters</h5>
2857
+ <h5 id="parameters-57">Parameters</h5>
2786
2858
  <div class="table-scroll">
2787
2859
 
2788
2860
 
@@ -2797,7 +2869,7 @@ impersonation (“act as this user”), use <code>getFirestore(sandbox.withAuth(
2797
2869
 
2798
2870
 
2799
2871
  <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="#sandbox"><code>Sandbox</code></a></td></tr></tbody></table></div>
2800
- <h5 id="returns-93">Returns</h5>
2872
+ <h5 id="returns-94">Returns</h5>
2801
2873
  <p><a href="#firestore"><code>Firestore</code></a></p>
2802
2874
  <h5 id="example-3">Example</h5>
2803
2875
  <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>
@@ -2825,7 +2897,7 @@ handle is a FROZEN <code>sandbox</code> target: it does not track
2825
2897
  <p>Intended for Studio’s “edit anything as admin” surfaces (F2) and the
2826
2898
  serve worker’s <code>{ mode: 'admin' }</code> auth lens. For rules-applied
2827
2899
  impersonation (“act as this user”), use <code>getFirestore(sandbox.withAuth({ uid }))</code> instead.</p>
2828
- <h5 id="parameters-57">Parameters</h5>
2900
+ <h5 id="parameters-58">Parameters</h5>
2829
2901
  <div class="table-scroll">
2830
2902
 
2831
2903
 
@@ -2840,7 +2912,7 @@ impersonation (“act as this user”), use <code>getFirestore(sandbox.withAuth(
2840
2912
 
2841
2913
 
2842
2914
  <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="#sandboxcontext"><code>SandboxContext</code></a></td></tr></tbody></table></div>
2843
- <h5 id="returns-94">Returns</h5>
2915
+ <h5 id="returns-95">Returns</h5>
2844
2916
  <p><a href="#firestore"><code>Firestore</code></a></p>
2845
2917
  <h5 id="example-4">Example</h5>
2846
2918
  <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>
@@ -2868,7 +2940,7 @@ handle is a FROZEN <code>sandbox</code> target: it does not track
2868
2940
  <p>Intended for Studio’s “edit anything as admin” surfaces (F2) and the
2869
2941
  serve worker’s <code>{ mode: 'admin' }</code> auth lens. For rules-applied
2870
2942
  impersonation (“act as this user”), use <code>getFirestore(sandbox.withAuth({ uid }))</code> instead.</p>
2871
- <h5 id="parameters-58">Parameters</h5>
2943
+ <h5 id="parameters-59">Parameters</h5>
2872
2944
  <div class="table-scroll">
2873
2945
 
2874
2946
 
@@ -2883,7 +2955,7 @@ impersonation (“act as this user”), use <code>getFirestore(sandbox.withAuth(
2883
2955
 
2884
2956
 
2885
2957
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>app</code></td><td align="left"><a href="/docs/pyric-app-reference-api/#firebaseapp"><code>FirebaseApp</code></a></td></tr></tbody></table></div>
2886
- <h5 id="returns-95">Returns</h5>
2958
+ <h5 id="returns-96">Returns</h5>
2887
2959
  <p><a href="#firestore"><code>Firestore</code></a></p>
2888
2960
  <h5 id="example-5">Example</h5>
2889
2961
  <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>
@@ -2914,7 +2986,7 @@ uses the same keys.</p>
2914
2986
 
2915
2987
 
2916
2988
  <table><thead><tr><th align="left">Type Parameter</th></tr></thead><tbody><tr><td align="left"><code>S</code> <em>extends</em> <a href="#aggregatespec"><code>AggregateSpec</code></a></td></tr></tbody></table></div>
2917
- <h4 id="parameters-59">Parameters</h4>
2989
+ <h4 id="parameters-60">Parameters</h4>
2918
2990
  <div class="table-scroll">
2919
2991
 
2920
2992
 
@@ -2933,7 +3005,7 @@ uses the same keys.</p>
2933
3005
 
2934
3006
 
2935
3007
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>source</code></td><td align="left">| <a href="#query"><code>Query</code></a>&#x3C;<a href="#documentdata"><code>DocumentData</code></a>> | <a href="#collectionreference"><code>CollectionReference</code></a>&#x3C;<a href="#documentdata"><code>DocumentData</code></a>></td></tr><tr><td align="left"><code>spec</code></td><td align="left"><code>S</code></td></tr></tbody></table></div>
2936
- <h4 id="returns-96">Returns</h4>
3008
+ <h4 id="returns-97">Returns</h4>
2937
3009
  <p><code>Promise</code>&#x3C;<a href="#aggregatequerysnapshot"><code>AggregateQuerySnapshot</code></a>&#x3C;{ [K in string | number | symbol]: number }>></p>
2938
3010
  <hr>
2939
3011
  <p><a id="getcountfromserver"></a></p>
@@ -2946,7 +3018,7 @@ uses the same keys.</p>
2946
3018
  <p>Count documents matching the query. Returns a snapshot whose
2947
3019
  <code>.data()</code> yields <code>{ count: N }</code> — same shape <code>firebase/firestore</code>’s
2948
3020
  <code>getCountFromServer</code> produces.</p>
2949
- <h4 id="parameters-60">Parameters</h4>
3021
+ <h4 id="parameters-61">Parameters</h4>
2950
3022
  <div class="table-scroll">
2951
3023
 
2952
3024
 
@@ -2961,7 +3033,7 @@ uses the same keys.</p>
2961
3033
 
2962
3034
 
2963
3035
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>source</code></td><td align="left">| <a href="#query"><code>Query</code></a>&#x3C;<a href="#documentdata"><code>DocumentData</code></a>> | <a href="#collectionreference"><code>CollectionReference</code></a>&#x3C;<a href="#documentdata"><code>DocumentData</code></a>></td></tr></tbody></table></div>
2964
- <h4 id="returns-97">Returns</h4>
3036
+ <h4 id="returns-98">Returns</h4>
2965
3037
  <p><code>Promise</code>&#x3C;<a href="#aggregatequerysnapshot"><code>AggregateQuerySnapshot</code></a>&#x3C;{
2966
3038
  <code>count</code>: <code>number</code>;
2967
3039
  }>></p>
@@ -2984,7 +3056,7 @@ uses the same keys.</p>
2984
3056
 
2985
3057
 
2986
3058
  <table><thead><tr><th align="left">Type Parameter</th><th align="left">Default type</th></tr></thead><tbody><tr><td align="left"><code>T</code></td><td align="left"><a href="#documentdata"><code>DocumentData</code></a></td></tr></tbody></table></div>
2987
- <h4 id="parameters-61">Parameters</h4>
3059
+ <h4 id="parameters-62">Parameters</h4>
2988
3060
  <div class="table-scroll">
2989
3061
 
2990
3062
 
@@ -2999,7 +3071,7 @@ uses the same keys.</p>
2999
3071
 
3000
3072
 
3001
3073
  <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>&#x3C;<code>T</code>></td></tr></tbody></table></div>
3002
- <h4 id="returns-98">Returns</h4>
3074
+ <h4 id="returns-99">Returns</h4>
3003
3075
  <p><code>Promise</code>&#x3C;<a href="#documentsnapshot"><code>DocumentSnapshot</code></a>&#x3C;<code>T</code>>></p>
3004
3076
  <hr>
3005
3077
  <p><a id="getdocfromcache"></a></p>
@@ -3025,7 +3097,7 @@ not a claim of parity.</p>
3025
3097
 
3026
3098
 
3027
3099
  <table><thead><tr><th align="left">Type Parameter</th><th align="left">Default type</th></tr></thead><tbody><tr><td align="left"><code>T</code></td><td align="left"><a href="#documentdata"><code>DocumentData</code></a></td></tr></tbody></table></div>
3028
- <h4 id="parameters-62">Parameters</h4>
3100
+ <h4 id="parameters-63">Parameters</h4>
3029
3101
  <div class="table-scroll">
3030
3102
 
3031
3103
 
@@ -3040,7 +3112,7 @@ not a claim of parity.</p>
3040
3112
 
3041
3113
 
3042
3114
  <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>&#x3C;<code>T</code>></td></tr></tbody></table></div>
3043
- <h4 id="returns-99">Returns</h4>
3115
+ <h4 id="returns-100">Returns</h4>
3044
3116
  <p><code>Promise</code>&#x3C;<a href="#documentsnapshot"><code>DocumentSnapshot</code></a>&#x3C;<code>T</code>>></p>
3045
3117
  <hr>
3046
3118
  <p><a id="getdocfromserver"></a></p>
@@ -3065,7 +3137,7 @@ same honest thing.</p>
3065
3137
 
3066
3138
 
3067
3139
  <table><thead><tr><th align="left">Type Parameter</th><th align="left">Default type</th></tr></thead><tbody><tr><td align="left"><code>T</code></td><td align="left"><a href="#documentdata"><code>DocumentData</code></a></td></tr></tbody></table></div>
3068
- <h4 id="parameters-63">Parameters</h4>
3140
+ <h4 id="parameters-64">Parameters</h4>
3069
3141
  <div class="table-scroll">
3070
3142
 
3071
3143
 
@@ -3080,7 +3152,7 @@ same honest thing.</p>
3080
3152
 
3081
3153
 
3082
3154
  <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>&#x3C;<code>T</code>></td></tr></tbody></table></div>
3083
- <h4 id="returns-100">Returns</h4>
3155
+ <h4 id="returns-101">Returns</h4>
3084
3156
  <p><code>Promise</code>&#x3C;<a href="#documentsnapshot"><code>DocumentSnapshot</code></a>&#x3C;<code>T</code>>></p>
3085
3157
  <hr>
3086
3158
  <p><a id="getdocs"></a></p>
@@ -3101,7 +3173,7 @@ same honest thing.</p>
3101
3173
 
3102
3174
 
3103
3175
  <table><thead><tr><th align="left">Type Parameter</th><th align="left">Default type</th></tr></thead><tbody><tr><td align="left"><code>T</code></td><td align="left"><a href="#documentdata"><code>DocumentData</code></a></td></tr></tbody></table></div>
3104
- <h4 id="parameters-64">Parameters</h4>
3176
+ <h4 id="parameters-65">Parameters</h4>
3105
3177
  <div class="table-scroll">
3106
3178
 
3107
3179
 
@@ -3116,7 +3188,7 @@ same honest thing.</p>
3116
3188
 
3117
3189
 
3118
3190
  <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>&#x3C;<code>T</code>></td></tr></tbody></table></div>
3119
- <h4 id="returns-101">Returns</h4>
3191
+ <h4 id="returns-102">Returns</h4>
3120
3192
  <p><code>Promise</code>&#x3C;<a href="#querysnapshot"><code>QuerySnapshot</code></a>&#x3C;<code>T</code>>></p>
3121
3193
  <hr>
3122
3194
  <p><a id="getdocsfromcache"></a></p>
@@ -3138,7 +3210,7 @@ same honest thing.</p>
3138
3210
 
3139
3211
 
3140
3212
  <table><thead><tr><th align="left">Type Parameter</th><th align="left">Default type</th></tr></thead><tbody><tr><td align="left"><code>T</code></td><td align="left"><a href="#documentdata"><code>DocumentData</code></a></td></tr></tbody></table></div>
3141
- <h4 id="parameters-65">Parameters</h4>
3213
+ <h4 id="parameters-66">Parameters</h4>
3142
3214
  <div class="table-scroll">
3143
3215
 
3144
3216
 
@@ -3153,7 +3225,7 @@ same honest thing.</p>
3153
3225
 
3154
3226
 
3155
3227
  <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>&#x3C;<code>T</code>></td></tr></tbody></table></div>
3156
- <h4 id="returns-102">Returns</h4>
3228
+ <h4 id="returns-103">Returns</h4>
3157
3229
  <p><code>Promise</code>&#x3C;<a href="#querysnapshot"><code>QuerySnapshot</code></a>&#x3C;<code>T</code>>></p>
3158
3230
  <hr>
3159
3231
  <p><a id="getdocsfromserver"></a></p>
@@ -3175,7 +3247,7 @@ same honest thing.</p>
3175
3247
 
3176
3248
 
3177
3249
  <table><thead><tr><th align="left">Type Parameter</th><th align="left">Default type</th></tr></thead><tbody><tr><td align="left"><code>T</code></td><td align="left"><a href="#documentdata"><code>DocumentData</code></a></td></tr></tbody></table></div>
3178
- <h4 id="parameters-66">Parameters</h4>
3250
+ <h4 id="parameters-67">Parameters</h4>
3179
3251
  <div class="table-scroll">
3180
3252
 
3181
3253
 
@@ -3190,7 +3262,7 @@ same honest thing.</p>
3190
3262
 
3191
3263
 
3192
3264
  <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>&#x3C;<code>T</code>></td></tr></tbody></table></div>
3193
- <h4 id="returns-103">Returns</h4>
3265
+ <h4 id="returns-104">Returns</h4>
3194
3266
  <p><code>Promise</code>&#x3C;<a href="#querysnapshot"><code>QuerySnapshot</code></a>&#x3C;<code>T</code>>></p>
3195
3267
  <hr>
3196
3268
  <p><a id="getfirestore"></a></p>
@@ -3209,7 +3281,7 @@ scenario.</li>
3209
3281
  identity through <code>pyric/auth</code> — every Firestore op evaluates
3210
3282
  rules under whatever user is currently signed in.</li>
3211
3283
  </ul>
3212
- <h5 id="parameters-67">Parameters</h5>
3284
+ <h5 id="parameters-68">Parameters</h5>
3213
3285
  <div class="table-scroll">
3214
3286
 
3215
3287
 
@@ -3224,7 +3296,7 @@ rules under whatever user is currently signed in.</li>
3224
3296
 
3225
3297
 
3226
3298
  <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="#sandboxcontext"><code>SandboxContext</code></a></td></tr></tbody></table></div>
3227
- <h5 id="returns-104">Returns</h5>
3299
+ <h5 id="returns-105">Returns</h5>
3228
3300
  <p><a href="#firestore"><code>Firestore</code></a></p>
3229
3301
  <h5 id="example-6">Example</h5>
3230
3302
  <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:#7F848E;font-style:italic">// Sandbox, frozen identity (runner / explicit tests).</span></span>
@@ -3260,7 +3332,7 @@ scenario.</li>
3260
3332
  identity through <code>pyric/auth</code> — every Firestore op evaluates
3261
3333
  rules under whatever user is currently signed in.</li>
3262
3334
  </ul>
3263
- <h5 id="parameters-68">Parameters</h5>
3335
+ <h5 id="parameters-69">Parameters</h5>
3264
3336
  <div class="table-scroll">
3265
3337
 
3266
3338
 
@@ -3275,7 +3347,7 @@ rules under whatever user is currently signed in.</li>
3275
3347
 
3276
3348
 
3277
3349
  <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="#sandbox"><code>Sandbox</code></a></td></tr></tbody></table></div>
3278
- <h5 id="returns-105">Returns</h5>
3350
+ <h5 id="returns-106">Returns</h5>
3279
3351
  <p><a href="#firestore"><code>Firestore</code></a></p>
3280
3352
  <h5 id="example-7">Example</h5>
3281
3353
  <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:#7F848E;font-style:italic">// Sandbox, frozen identity (runner / explicit tests).</span></span>
@@ -3311,7 +3383,7 @@ scenario.</li>
3311
3383
  identity through <code>pyric/auth</code> — every Firestore op evaluates
3312
3384
  rules under whatever user is currently signed in.</li>
3313
3385
  </ul>
3314
- <h5 id="parameters-69">Parameters</h5>
3386
+ <h5 id="parameters-70">Parameters</h5>
3315
3387
  <div class="table-scroll">
3316
3388
 
3317
3389
 
@@ -3326,7 +3398,7 @@ rules under whatever user is currently signed in.</li>
3326
3398
 
3327
3399
 
3328
3400
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>app</code></td><td align="left"><a href="/docs/pyric-app-reference-api/#firebaseapp"><code>FirebaseApp</code></a></td></tr></tbody></table></div>
3329
- <h5 id="returns-106">Returns</h5>
3401
+ <h5 id="returns-107">Returns</h5>
3330
3402
  <p><a href="#appfirestore"><code>AppFirestore</code></a></p>
3331
3403
  <h5 id="example-8">Example</h5>
3332
3404
  <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:#7F848E;font-style:italic">// Sandbox, frozen identity (runner / explicit tests).</span></span>
@@ -3362,7 +3434,7 @@ scenario.</li>
3362
3434
  identity through <code>pyric/auth</code> — every Firestore op evaluates
3363
3435
  rules under whatever user is currently signed in.</li>
3364
3436
  </ul>
3365
- <h5 id="returns-107">Returns</h5>
3437
+ <h5 id="returns-108">Returns</h5>
3366
3438
  <p><a href="#appfirestore"><code>AppFirestore</code></a></p>
3367
3439
  <h5 id="example-9">Example</h5>
3368
3440
  <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:#7F848E;font-style:italic">// Sandbox, frozen identity (runner / explicit tests).</span></span>
@@ -3401,7 +3473,7 @@ scenario.</li>
3401
3473
  identity through <code>pyric/auth</code> — every Firestore op evaluates
3402
3474
  rules under whatever user is currently signed in.</li>
3403
3475
  </ul>
3404
- <h5 id="parameters-70">Parameters</h5>
3476
+ <h5 id="parameters-71">Parameters</h5>
3405
3477
  <div class="table-scroll">
3406
3478
 
3407
3479
 
@@ -3416,7 +3488,7 @@ rules under whatever user is currently signed in.</li>
3416
3488
 
3417
3489
 
3418
3490
  <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-app-reference-api/#firebaseapp"><code>FirebaseApp</code></a> | <a href="#sandbox"><code>Sandbox</code></a> | <a href="#sandboxcontext"><code>SandboxContext</code></a></td></tr></tbody></table></div>
3419
- <h5 id="returns-108">Returns</h5>
3491
+ <h5 id="returns-109">Returns</h5>
3420
3492
  <p><a href="#firestore"><code>Firestore</code></a></p>
3421
3493
  <h5 id="example-10">Example</h5>
3422
3494
  <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:#7F848E;font-style:italic">// Sandbox, frozen identity (runner / explicit tests).</span></span>
@@ -3442,7 +3514,7 @@ rules under whatever user is currently signed in.</li>
3442
3514
  <p><a id="increment-2"></a></p>
3443
3515
  <h3 id="increment-1">increment()</h3>
3444
3516
  <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"> increment</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">n</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">FieldValueSentinel</span><span style="color:#ABB2BF">;</span></span></code></pre>
3445
- <h4 id="parameters-71">Parameters</h4>
3517
+ <h4 id="parameters-72">Parameters</h4>
3446
3518
  <div class="table-scroll">
3447
3519
 
3448
3520
 
@@ -3457,7 +3529,7 @@ rules under whatever user is currently signed in.</li>
3457
3529
 
3458
3530
 
3459
3531
  <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>
3460
- <h4 id="returns-109">Returns</h4>
3532
+ <h4 id="returns-110">Returns</h4>
3461
3533
  <p><a href="#fieldvaluesentinel"><code>FieldValueSentinel</code></a></p>
3462
3534
  <hr>
3463
3535
  <p><a id="initializefirestore"></a></p>
@@ -3475,7 +3547,7 @@ writes — <code>initializeFirestore(app, { localCache: persistentLocalCache(...
3475
3547
  — no longer crashes at import) but no-ops the cache/network settings:
3476
3548
  persistence is already the sandbox default, so there is nothing left to
3477
3549
  configure into existence.</p>
3478
- <h4 id="parameters-72">Parameters</h4>
3550
+ <h4 id="parameters-73">Parameters</h4>
3479
3551
  <div class="table-scroll">
3480
3552
 
3481
3553
 
@@ -3498,13 +3570,13 @@ configure into existence.</p>
3498
3570
 
3499
3571
 
3500
3572
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>app</code></td><td align="left">| <a href="/docs/pyric-app-reference-api/#firebaseapp"><code>FirebaseApp</code></a> | <a href="#sandbox"><code>Sandbox</code></a> | <a href="#sandboxcontext"><code>SandboxContext</code></a></td></tr><tr><td align="left"><code>_settings?</code></td><td align="left"><a href="#firestoresettings"><code>FirestoreSettings</code></a></td></tr><tr><td align="left"><code>_databaseId?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
3501
- <h4 id="returns-110">Returns</h4>
3573
+ <h4 id="returns-111">Returns</h4>
3502
3574
  <p><a href="#firestore"><code>Firestore</code></a></p>
3503
3575
  <hr>
3504
3576
  <p><a id="limit"></a></p>
3505
3577
  <h3 id="limit">limit()</h3>
3506
3578
  <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"> limit</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">n</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">QueryConstraint</span><span style="color:#ABB2BF">;</span></span></code></pre>
3507
- <h4 id="parameters-73">Parameters</h4>
3579
+ <h4 id="parameters-74">Parameters</h4>
3508
3580
  <div class="table-scroll">
3509
3581
 
3510
3582
 
@@ -3519,7 +3591,7 @@ configure into existence.</p>
3519
3591
 
3520
3592
 
3521
3593
  <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>
3522
- <h4 id="returns-111">Returns</h4>
3594
+ <h4 id="returns-112">Returns</h4>
3523
3595
  <p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
3524
3596
  <hr>
3525
3597
  <p><a id="limittolast"></a></p>
@@ -3528,7 +3600,7 @@ configure into existence.</p>
3528
3600
  <p>Limit the query to the LAST <code>n</code> documents in the ordered result.
3529
3601
  Requires at least one <code>orderBy</code> on the query (production-aligned —
3530
3602
  the simulator throws at execute time without one).</p>
3531
- <h4 id="parameters-74">Parameters</h4>
3603
+ <h4 id="parameters-75">Parameters</h4>
3532
3604
  <div class="table-scroll">
3533
3605
 
3534
3606
 
@@ -3543,14 +3615,14 @@ the simulator throws at execute time without one).</p>
3543
3615
 
3544
3616
 
3545
3617
  <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>
3546
- <h4 id="returns-112">Returns</h4>
3618
+ <h4 id="returns-113">Returns</h4>
3547
3619
  <p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
3548
3620
  <hr>
3549
3621
  <p><a id="memoryeagergarbagecollector"></a></p>
3550
3622
  <h3 id="memoryeagergarbagecollector">memoryEagerGarbageCollector()</h3>
3551
3623
  <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"> memoryEagerGarbageCollector</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">MemoryGarbageCollector</span><span style="color:#ABB2BF">;</span></span></code></pre>
3552
3624
  <p>Inert config token accepted by <a href="#memorylocalcache">memoryLocalCache</a>’s <code>garbageCollector</code>.</p>
3553
- <h4 id="returns-113">Returns</h4>
3625
+ <h4 id="returns-114">Returns</h4>
3554
3626
  <p><a href="#memorygarbagecollector"><code>MemoryGarbageCollector</code></a></p>
3555
3627
  <hr>
3556
3628
  <p><a id="memorylocalcache"></a></p>
@@ -3559,7 +3631,7 @@ the simulator throws at execute time without one).</p>
3559
3631
  <span class="line"><span style="color:#E06C75"> garbageCollector</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">MemoryGarbageCollector</span><span style="color:#ABB2BF">;</span></span>
3560
3632
  <span class="line"><span style="color:#ABB2BF">}): </span><span style="color:#E5C07B">LocalCache</span><span style="color:#ABB2BF">;</span></span></code></pre>
3561
3633
  <p>Inert config token — the memory-cache counterpart of <a href="#persistentlocalcache">persistentLocalCache</a>.</p>
3562
- <h4 id="parameters-75">Parameters</h4>
3634
+ <h4 id="parameters-76">Parameters</h4>
3563
3635
  <div class="table-scroll">
3564
3636
 
3565
3637
 
@@ -3578,7 +3650,7 @@ the simulator throws at execute time without one).</p>
3578
3650
 
3579
3651
 
3580
3652
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>settings?</code></td><td align="left">{ <code>garbageCollector?</code>: <a href="#memorygarbagecollector"><code>MemoryGarbageCollector</code></a>; }</td></tr><tr><td align="left"><code>settings.garbageCollector?</code></td><td align="left"><a href="#memorygarbagecollector"><code>MemoryGarbageCollector</code></a></td></tr></tbody></table></div>
3581
- <h4 id="returns-114">Returns</h4>
3653
+ <h4 id="returns-115">Returns</h4>
3582
3654
  <p><a href="#localcache-1"><code>LocalCache</code></a></p>
3583
3655
  <hr>
3584
3656
  <p><a id="memorylrugarbagecollector"></a></p>
@@ -3587,7 +3659,7 @@ the simulator throws at execute time without one).</p>
3587
3659
  <span class="line"><span style="color:#E06C75"> cacheSizeBytes</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">;</span></span>
3588
3660
  <span class="line"><span style="color:#ABB2BF">}): </span><span style="color:#E5C07B">MemoryGarbageCollector</span><span style="color:#ABB2BF">;</span></span></code></pre>
3589
3661
  <p>Inert config token accepted by <a href="#memorylocalcache">memoryLocalCache</a>’s <code>garbageCollector</code>.</p>
3590
- <h4 id="parameters-76">Parameters</h4>
3662
+ <h4 id="parameters-77">Parameters</h4>
3591
3663
  <div class="table-scroll">
3592
3664
 
3593
3665
 
@@ -3606,7 +3678,7 @@ the simulator throws at execute time without one).</p>
3606
3678
 
3607
3679
 
3608
3680
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>_settings?</code></td><td align="left">{ <code>cacheSizeBytes?</code>: <code>number</code>; }</td></tr><tr><td align="left"><code>_settings.cacheSizeBytes?</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
3609
- <h4 id="returns-115">Returns</h4>
3681
+ <h4 id="returns-116">Returns</h4>
3610
3682
  <p><a href="#memorygarbagecollector"><code>MemoryGarbageCollector</code></a></p>
3611
3683
  <hr>
3612
3684
  <p><a id="onsnapshot"></a></p>
@@ -3631,7 +3703,7 @@ the simulator throws at execute time without one).</p>
3631
3703
 
3632
3704
 
3633
3705
  <table><thead><tr><th align="left">Type Parameter</th></tr></thead><tbody><tr><td align="left"><code>T</code> <em>extends</em> | <a href="#documentreference"><code>DocumentReference</code></a>&#x3C;<a href="#documentdata"><code>DocumentData</code></a>> | <a href="#query"><code>Query</code></a>&#x3C;<a href="#documentdata"><code>DocumentData</code></a>></td></tr></tbody></table></div>
3634
- <h5 id="parameters-77">Parameters</h5>
3706
+ <h5 id="parameters-78">Parameters</h5>
3635
3707
  <div class="table-scroll">
3636
3708
 
3637
3709
 
@@ -3654,7 +3726,7 @@ the simulator throws at execute time without one).</p>
3654
3726
 
3655
3727
 
3656
3728
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ref</code></td><td align="left"><code>T</code></td></tr><tr><td align="left"><code>observerOrNext</code></td><td align="left">| <a href="#snapshotobserver"><code>SnapshotObserver</code></a>&#x3C;<code>unknown</code>> | (<code>snap</code>: <code>unknown</code>) => <code>void</code></td></tr><tr><td align="left"><code>errorOrNothing?</code></td><td align="left">(<code>error</code>: <code>unknown</code>) => <code>void</code></td></tr></tbody></table></div>
3657
- <h5 id="returns-116">Returns</h5>
3729
+ <h5 id="returns-117">Returns</h5>
3658
3730
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
3659
3731
  <h4 id="call-signature-13">Call Signature</h4>
3660
3732
  <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">&#x3C;</span><span style="color:#E5C07B">T</span><span style="color:#ABB2BF">>(</span></span>
@@ -3677,7 +3749,7 @@ the simulator throws at execute time without one).</p>
3677
3749
 
3678
3750
 
3679
3751
  <table><thead><tr><th align="left">Type Parameter</th></tr></thead><tbody><tr><td align="left"><code>T</code> <em>extends</em> | <a href="#documentreference"><code>DocumentReference</code></a>&#x3C;<a href="#documentdata"><code>DocumentData</code></a>> | <a href="#query"><code>Query</code></a>&#x3C;<a href="#documentdata"><code>DocumentData</code></a>></td></tr></tbody></table></div>
3680
- <h5 id="parameters-78">Parameters</h5>
3752
+ <h5 id="parameters-79">Parameters</h5>
3681
3753
  <div class="table-scroll">
3682
3754
 
3683
3755
 
@@ -3704,7 +3776,7 @@ the simulator throws at execute time without one).</p>
3704
3776
 
3705
3777
 
3706
3778
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ref</code></td><td align="left"><code>T</code></td></tr><tr><td align="left"><code>options</code></td><td align="left"><a href="#snapshotlistenoptions"><code>SnapshotListenOptions</code></a></td></tr><tr><td align="left"><code>observerOrNext</code></td><td align="left">| <a href="#snapshotobserver"><code>SnapshotObserver</code></a>&#x3C;<code>unknown</code>> | (<code>snap</code>: <code>unknown</code>) => <code>void</code></td></tr><tr><td align="left"><code>errorOrNothing?</code></td><td align="left">(<code>error</code>: <code>unknown</code>) => <code>void</code></td></tr></tbody></table></div>
3707
- <h5 id="returns-117">Returns</h5>
3779
+ <h5 id="returns-118">Returns</h5>
3708
3780
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
3709
3781
  <hr>
3710
3782
  <p><a id="onsnapshotsinsync"></a></p>
@@ -3716,13 +3788,10 @@ the simulator throws at execute time without one).</p>
3716
3788
  <span class="line"><span style="color:#61AFEF"> error</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>
3717
3789
  <span class="line"><span style="color:#61AFEF"> next</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>
3718
3790
  <span class="line"><span style="color:#ABB2BF">}): </span><span style="color:#E5C07B">Unsubscribe</span><span style="color:#ABB2BF">;</span></span></code></pre>
3719
- <p>Sandbox: fires the callback once the current snapshot-delivery
3720
- microtask queue settles the closest honest approximation of “every
3721
- active listener has delivered its latest state” available without a
3722
- true cross-listener sync signal (the sandbox doesn’t track one).
3723
- This is NOT the real SDK’s guarantee (which is scoped to actual
3724
- server round-trips); it is scoped to local delivery only.</p>
3725
- <h4 id="parameters-79">Parameters</h4>
3791
+ <p>Registers a service-scoped synchronization observer. It receives an
3792
+ initial signal and a batched signal after snapshot listeners deliver their
3793
+ latest local state, matching the production-observed callback ordering.</p>
3794
+ <h4 id="parameters-80">Parameters</h4>
3726
3795
  <div class="table-scroll">
3727
3796
 
3728
3797
 
@@ -3741,7 +3810,7 @@ server round-trips); it is scoped to local delivery only.</p>
3741
3810
 
3742
3811
 
3743
3812
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#firestore"><code>Firestore</code></a></td></tr><tr><td align="left"><code>observerOrCallback</code></td><td align="left">| () => <code>void</code> | { <code>complete?</code>: () => <code>void</code>; <code>error?</code>: (<code>error</code>: <code>unknown</code>) => <code>void</code>; <code>next?</code>: () => <code>void</code>; }</td></tr></tbody></table></div>
3744
- <h4 id="returns-118">Returns</h4>
3813
+ <h4 id="returns-119">Returns</h4>
3745
3814
  <p><a href="#unsubscribe"><code>Unsubscribe</code></a></p>
3746
3815
  <hr>
3747
3816
  <p><a id="or"></a></p>
@@ -3752,7 +3821,7 @@ Each argument must itself be a filter constraint (<code>where()</code>, or
3752
3821
  nested <code>or()</code> / <code>and()</code>); passing <code>orderBy()</code> or <code>limit()</code> here is
3753
3822
  a type error at runtime.</p>
3754
3823
  <p>Mirrors <code>firebase/firestore</code>’s <code>or(...filters)</code> shape.</p>
3755
- <h4 id="parameters-80">Parameters</h4>
3824
+ <h4 id="parameters-81">Parameters</h4>
3756
3825
  <div class="table-scroll">
3757
3826
 
3758
3827
 
@@ -3767,13 +3836,13 @@ a type error at runtime.</p>
3767
3836
 
3768
3837
 
3769
3838
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left">…<code>filters</code></td><td align="left"><a href="#queryconstraint"><code>QueryConstraint</code></a>[]</td></tr></tbody></table></div>
3770
- <h4 id="returns-119">Returns</h4>
3839
+ <h4 id="returns-120">Returns</h4>
3771
3840
  <p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
3772
3841
  <hr>
3773
3842
  <p><a id="orderby"></a></p>
3774
3843
  <h3 id="orderby">orderBy()</h3>
3775
- <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"> orderBy</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">field</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">FieldPath</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">direction</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">OrderDirection</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">QueryConstraint</span><span style="color:#ABB2BF">;</span></span></code></pre>
3776
- <h4 id="parameters-81">Parameters</h4>
3844
+ <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"> orderBy</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">field</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">FieldPath</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">direction</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">QueryOrderDirection</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">QueryConstraint</span><span style="color:#ABB2BF">;</span></span></code></pre>
3845
+ <h4 id="parameters-82">Parameters</h4>
3777
3846
  <div class="table-scroll">
3778
3847
 
3779
3848
 
@@ -3791,8 +3860,8 @@ a type error at runtime.</p>
3791
3860
 
3792
3861
 
3793
3862
 
3794
- <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> | <a href="#fieldpath"><code>FieldPath</code></a></td></tr><tr><td align="left"><code>direction?</code></td><td align="left"><a href="#orderdirection"><code>OrderDirection</code></a></td></tr></tbody></table></div>
3795
- <h4 id="returns-120">Returns</h4>
3863
+ <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> | <a href="#fieldpath"><code>FieldPath</code></a></td></tr><tr><td align="left"><code>direction?</code></td><td align="left"><code>QueryOrderDirection</code></td></tr></tbody></table></div>
3864
+ <h4 id="returns-121">Returns</h4>
3796
3865
  <p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
3797
3866
  <hr>
3798
3867
  <p><a id="persistentlocalcache"></a></p>
@@ -3805,7 +3874,7 @@ a type error at runtime.</p>
3805
3874
  persistent IndexedDB cache tier; the sandbox has no separate cache
3806
3875
  tier — persistence is already the default — so this just returns a
3807
3876
  tagged token <code>initializeFirestore</code> can accept without crashing.</p>
3808
- <h4 id="parameters-82">Parameters</h4>
3877
+ <h4 id="parameters-83">Parameters</h4>
3809
3878
  <div class="table-scroll">
3810
3879
 
3811
3880
 
@@ -3828,14 +3897,14 @@ tagged token <code>initializeFirestore</code> can accept without crashing.</p>
3828
3897
 
3829
3898
 
3830
3899
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>settings?</code></td><td align="left">{ <code>cacheSizeBytes?</code>: <code>number</code>; <code>tabManager?</code>: <a href="#persistenttabmanager"><code>PersistentTabManager</code></a>; }</td></tr><tr><td align="left"><code>settings.cacheSizeBytes?</code></td><td align="left"><code>number</code></td></tr><tr><td align="left"><code>settings.tabManager?</code></td><td align="left"><a href="#persistenttabmanager"><code>PersistentTabManager</code></a></td></tr></tbody></table></div>
3831
- <h4 id="returns-121">Returns</h4>
3900
+ <h4 id="returns-122">Returns</h4>
3832
3901
  <p><a href="#localcache-1"><code>LocalCache</code></a></p>
3833
3902
  <hr>
3834
3903
  <p><a id="persistentmultipletabmanager"></a></p>
3835
3904
  <h3 id="persistentmultipletabmanager">persistentMultipleTabManager()</h3>
3836
3905
  <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"> persistentMultipleTabManager</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">PersistentTabManager</span><span style="color:#ABB2BF">;</span></span></code></pre>
3837
3906
  <p>Inert config token accepted by <a href="#persistentlocalcache">persistentLocalCache</a>’s <code>tabManager</code>.</p>
3838
- <h4 id="returns-122">Returns</h4>
3907
+ <h4 id="returns-123">Returns</h4>
3839
3908
  <p><a href="#persistenttabmanager"><code>PersistentTabManager</code></a></p>
3840
3909
  <hr>
3841
3910
  <p><a id="persistentsingletabmanager"></a></p>
@@ -3844,7 +3913,7 @@ tagged token <code>initializeFirestore</code> can accept without crashing.</p>
3844
3913
  <span class="line"><span style="color:#E06C75"> forceOwnership</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">;</span></span>
3845
3914
  <span class="line"><span style="color:#ABB2BF">}): </span><span style="color:#E5C07B">PersistentTabManager</span><span style="color:#ABB2BF">;</span></span></code></pre>
3846
3915
  <p>Inert config token accepted by <a href="#persistentlocalcache">persistentLocalCache</a>’s <code>tabManager</code>.</p>
3847
- <h4 id="parameters-83">Parameters</h4>
3916
+ <h4 id="parameters-84">Parameters</h4>
3848
3917
  <div class="table-scroll">
3849
3918
 
3850
3919
 
@@ -3863,7 +3932,7 @@ tagged token <code>initializeFirestore</code> can accept without crashing.</p>
3863
3932
 
3864
3933
 
3865
3934
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>_settings?</code></td><td align="left">{ <code>forceOwnership?</code>: <code>boolean</code>; }</td></tr><tr><td align="left"><code>_settings.forceOwnership?</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
3866
- <h4 id="returns-123">Returns</h4>
3935
+ <h4 id="returns-124">Returns</h4>
3867
3936
  <p><a href="#persistenttabmanager"><code>PersistentTabManager</code></a></p>
3868
3937
  <hr>
3869
3938
  <p><a id="query-1"></a></p>
@@ -3886,7 +3955,7 @@ tagged token <code>initializeFirestore</code> can accept without crashing.</p>
3886
3955
 
3887
3956
 
3888
3957
  <table><thead><tr><th align="left">Type Parameter</th><th align="left">Default type</th></tr></thead><tbody><tr><td align="left"><code>T</code></td><td align="left"><a href="#documentdata"><code>DocumentData</code></a></td></tr></tbody></table></div>
3889
- <h4 id="parameters-84">Parameters</h4>
3958
+ <h4 id="parameters-85">Parameters</h4>
3890
3959
  <div class="table-scroll">
3891
3960
 
3892
3961
 
@@ -3905,13 +3974,13 @@ tagged token <code>initializeFirestore</code> can accept without crashing.</p>
3905
3974
 
3906
3975
 
3907
3976
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>source</code></td><td align="left">| <a href="#collectionreference"><code>CollectionReference</code></a>&#x3C;<code>T</code>> | <a href="#query"><code>Query</code></a>&#x3C;<code>T</code>></td></tr><tr><td align="left">…<code>constraints</code></td><td align="left"><a href="#queryconstraint"><code>QueryConstraint</code></a>[]</td></tr></tbody></table></div>
3908
- <h4 id="returns-124">Returns</h4>
3977
+ <h4 id="returns-125">Returns</h4>
3909
3978
  <p><a href="#query"><code>Query</code></a>&#x3C;<code>T</code>></p>
3910
3979
  <hr>
3911
3980
  <p><a id="queryequal"></a></p>
3912
3981
  <h3 id="queryequal">queryEqual()</h3>
3913
3982
  <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"> queryEqual</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">a</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Query</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">b</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Query</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">;</span></span></code></pre>
3914
- <h4 id="parameters-85">Parameters</h4>
3983
+ <h4 id="parameters-86">Parameters</h4>
3915
3984
  <div class="table-scroll">
3916
3985
 
3917
3986
 
@@ -3930,13 +3999,13 @@ tagged token <code>initializeFirestore</code> can accept without crashing.</p>
3930
3999
 
3931
4000
 
3932
4001
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>a</code></td><td align="left"><a href="#query"><code>Query</code></a></td></tr><tr><td align="left"><code>b</code></td><td align="left"><a href="#query"><code>Query</code></a></td></tr></tbody></table></div>
3933
- <h4 id="returns-125">Returns</h4>
4002
+ <h4 id="returns-126">Returns</h4>
3934
4003
  <p><code>boolean</code></p>
3935
4004
  <hr>
3936
4005
  <p><a id="refequal"></a></p>
3937
4006
  <h3 id="refequal">refEqual()</h3>
3938
4007
  <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"> refEqual</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">a</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DocumentReference</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">b</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">DocumentReference</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">;</span></span></code></pre>
3939
- <h4 id="parameters-86">Parameters</h4>
4008
+ <h4 id="parameters-87">Parameters</h4>
3940
4009
  <div class="table-scroll">
3941
4010
 
3942
4011
 
@@ -3955,12 +4024,15 @@ tagged token <code>initializeFirestore</code> can accept without crashing.</p>
3955
4024
 
3956
4025
 
3957
4026
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>a</code></td><td align="left"><a href="#documentreference"><code>DocumentReference</code></a></td></tr><tr><td align="left"><code>b</code></td><td align="left"><a href="#documentreference"><code>DocumentReference</code></a></td></tr></tbody></table></div>
3958
- <h4 id="returns-126">Returns</h4>
4027
+ <h4 id="returns-127">Returns</h4>
3959
4028
  <p><code>boolean</code></p>
3960
4029
  <hr>
3961
4030
  <p><a id="runtransaction"></a></p>
3962
4031
  <h3 id="runtransaction">runTransaction()</h3>
3963
- <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"> runTransaction</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">R</span><span style="color:#ABB2BF">>(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Firestore</span><span style="color:#ABB2BF">, </span><span style="color:#61AFEF">fn</span><span style="color:#ABB2BF">: (</span><span style="color:#E06C75;font-style:italic">tx</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Transaction</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">=></span><span style="color:#E5C07B"> R</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">R</span><span style="color:#ABB2BF">>): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">R</span><span style="color:#ABB2BF">>;</span></span></code></pre>
4032
+ <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"> runTransaction</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">R</span><span style="color:#ABB2BF">>(</span></span>
4033
+ <span class="line"><span style="color:#E06C75;font-style:italic"> db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Firestore</span><span style="color:#ABB2BF">,</span></span>
4034
+ <span class="line"><span style="color:#61AFEF"> fn</span><span style="color:#ABB2BF">: (</span><span style="color:#E06C75;font-style:italic">tx</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Transaction</span><span style="color:#ABB2BF">) </span><span style="color:#C678DD">=></span><span style="color:#E5C07B"> R</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">R</span><span style="color:#ABB2BF">>,</span></span>
4035
+ <span class="line"><span style="color:#E06C75;font-style:italic">options</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">TransactionOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">R</span><span style="color:#ABB2BF">>;</span></span></code></pre>
3964
4036
  <h4 id="type-parameters-22">Type Parameters</h4>
3965
4037
  <div class="table-scroll">
3966
4038
 
@@ -3974,7 +4046,7 @@ tagged token <code>initializeFirestore</code> can accept without crashing.</p>
3974
4046
 
3975
4047
 
3976
4048
  <table><thead><tr><th align="left">Type Parameter</th></tr></thead><tbody><tr><td align="left"><code>R</code></td></tr></tbody></table></div>
3977
- <h4 id="parameters-87">Parameters</h4>
4049
+ <h4 id="parameters-88">Parameters</h4>
3978
4050
  <div class="table-scroll">
3979
4051
 
3980
4052
 
@@ -3992,14 +4064,18 @@ tagged token <code>initializeFirestore</code> can accept without crashing.</p>
3992
4064
 
3993
4065
 
3994
4066
 
3995
- <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#firestore"><code>Firestore</code></a></td></tr><tr><td align="left"><code>fn</code></td><td align="left">(<code>tx</code>: <a href="/docs/pyric-admin-firestore-reference-api/#transaction"><code>Transaction</code></a>) => <code>R</code> | <code>Promise</code>&#x3C;<code>R</code>></td></tr></tbody></table></div>
3996
- <h4 id="returns-127">Returns</h4>
4067
+
4068
+
4069
+
4070
+
4071
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#firestore"><code>Firestore</code></a></td></tr><tr><td align="left"><code>fn</code></td><td align="left">(<code>tx</code>: <a href="/docs/pyric-admin-firestore-reference-api/#transaction"><code>Transaction</code></a>) => <code>R</code> | <code>Promise</code>&#x3C;<code>R</code>></td></tr><tr><td align="left"><code>options?</code></td><td align="left"><a href="#transactionoptions"><code>TransactionOptions</code></a></td></tr></tbody></table></div>
4072
+ <h4 id="returns-128">Returns</h4>
3997
4073
  <p><code>Promise</code>&#x3C;<code>R</code>></p>
3998
4074
  <hr>
3999
4075
  <p><a id="servertimestamp-2"></a></p>
4000
4076
  <h3 id="servertimestamp-1">serverTimestamp()</h3>
4001
4077
  <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"> serverTimestamp</span><span style="color:#ABB2BF">(): </span><span style="color:#E5C07B">FieldValueSentinel</span><span style="color:#ABB2BF">;</span></span></code></pre>
4002
- <h4 id="returns-128">Returns</h4>
4078
+ <h4 id="returns-129">Returns</h4>
4003
4079
  <p><a href="#fieldvaluesentinel"><code>FieldValueSentinel</code></a></p>
4004
4080
  <hr>
4005
4081
  <p><a id="setdoc"></a></p>
@@ -4023,7 +4099,7 @@ tagged token <code>initializeFirestore</code> can accept without crashing.</p>
4023
4099
 
4024
4100
 
4025
4101
  <table><thead><tr><th align="left">Type Parameter</th><th align="left">Default type</th></tr></thead><tbody><tr><td align="left"><code>T</code></td><td align="left"><a href="#documentdata"><code>DocumentData</code></a></td></tr></tbody></table></div>
4026
- <h4 id="parameters-88">Parameters</h4>
4102
+ <h4 id="parameters-89">Parameters</h4>
4027
4103
  <div class="table-scroll">
4028
4104
 
4029
4105
 
@@ -4046,7 +4122,7 @@ tagged token <code>initializeFirestore</code> can accept without crashing.</p>
4046
4122
 
4047
4123
 
4048
4124
  <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>&#x3C;<code>T</code>></td></tr><tr><td align="left"><code>data</code></td><td align="left"><code>T</code></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>
4049
- <h4 id="returns-129">Returns</h4>
4125
+ <h4 id="returns-130">Returns</h4>
4050
4126
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4051
4127
  <hr>
4052
4128
  <p><a id="setloglevel"></a></p>
@@ -4057,7 +4133,7 @@ a level into (it uses host-level <code>console</code> logging directly, gated
4057
4133
  by <code>pyric dev</code>’s own flags, not this call). Exists purely so app
4058
4134
  code that calls this defensively at startup doesn’t crash on a
4059
4135
  missing export.</p>
4060
- <h4 id="parameters-89">Parameters</h4>
4136
+ <h4 id="parameters-90">Parameters</h4>
4061
4137
  <div class="table-scroll">
4062
4138
 
4063
4139
 
@@ -4072,7 +4148,7 @@ missing export.</p>
4072
4148
 
4073
4149
 
4074
4150
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>logLevel</code></td><td align="left"><a href="#loglevel"><code>LogLevel</code></a></td></tr></tbody></table></div>
4075
- <h4 id="returns-130">Returns</h4>
4151
+ <h4 id="returns-131">Returns</h4>
4076
4152
  <p><code>void</code></p>
4077
4153
  <hr>
4078
4154
  <p><a id="snapshotequal"></a></p>
@@ -4082,7 +4158,7 @@ missing export.</p>
4082
4158
  <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">QuerySnapshot</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">DocumentData</span><span style="color:#ABB2BF">>, </span><span style="color:#E06C75;font-style:italic">b</span><span style="color:#ABB2BF">:</span></span>
4083
4159
  <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">DocumentSnapshot</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">DocumentData</span><span style="color:#ABB2BF">></span></span>
4084
4160
  <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">QuerySnapshot</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">DocumentData</span><span style="color:#ABB2BF">>): </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">;</span></span></code></pre>
4085
- <h4 id="parameters-90">Parameters</h4>
4161
+ <h4 id="parameters-91">Parameters</h4>
4086
4162
  <div class="table-scroll">
4087
4163
 
4088
4164
 
@@ -4101,7 +4177,7 @@ missing export.</p>
4101
4177
 
4102
4178
 
4103
4179
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>a</code></td><td align="left">| <a href="#documentsnapshot"><code>DocumentSnapshot</code></a>&#x3C;<a href="#documentdata"><code>DocumentData</code></a>> | <a href="#querysnapshot"><code>QuerySnapshot</code></a>&#x3C;<a href="#documentdata"><code>DocumentData</code></a>></td></tr><tr><td align="left"><code>b</code></td><td align="left">| <a href="#documentsnapshot"><code>DocumentSnapshot</code></a>&#x3C;<a href="#documentdata"><code>DocumentData</code></a>> | <a href="#querysnapshot"><code>QuerySnapshot</code></a>&#x3C;<a href="#documentdata"><code>DocumentData</code></a>></td></tr></tbody></table></div>
4104
- <h4 id="returns-131">Returns</h4>
4180
+ <h4 id="returns-132">Returns</h4>
4105
4181
  <p><code>boolean</code></p>
4106
4182
  <hr>
4107
4183
  <p><a id="startafter"></a></p>
@@ -4110,7 +4186,7 @@ missing export.</p>
4110
4186
  <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"> startAfter</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:#E5C07B">QueryConstraint</span><span style="color:#ABB2BF">;</span></span></code></pre>
4111
4187
  <p>Same as <code>startAt</code>, but EXCLUDES the document at the cursor — the
4112
4188
  result starts at the next ordered position.</p>
4113
- <h5 id="parameters-91">Parameters</h5>
4189
+ <h5 id="parameters-92">Parameters</h5>
4114
4190
  <div class="table-scroll">
4115
4191
 
4116
4192
 
@@ -4125,13 +4201,13 @@ result starts at the next ordered position.</p>
4125
4201
 
4126
4202
 
4127
4203
  <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="#documentsnapshot"><code>DocumentSnapshot</code></a></td></tr></tbody></table></div>
4128
- <h5 id="returns-132">Returns</h5>
4204
+ <h5 id="returns-133">Returns</h5>
4129
4205
  <p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
4130
4206
  <h4 id="call-signature-15">Call Signature</h4>
4131
4207
  <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"> startAfter</span><span style="color:#ABB2BF">(...</span><span style="color:#E06C75;font-style:italic">values</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">[]): </span><span style="color:#E5C07B">QueryConstraint</span><span style="color:#ABB2BF">;</span></span></code></pre>
4132
4208
  <p>Same as <code>startAt</code>, but EXCLUDES the document at the cursor — the
4133
4209
  result starts at the next ordered position.</p>
4134
- <h5 id="parameters-92">Parameters</h5>
4210
+ <h5 id="parameters-93">Parameters</h5>
4135
4211
  <div class="table-scroll">
4136
4212
 
4137
4213
 
@@ -4146,7 +4222,7 @@ result starts at the next ordered position.</p>
4146
4222
 
4147
4223
 
4148
4224
  <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></tbody></table></div>
4149
- <h5 id="returns-133">Returns</h5>
4225
+ <h5 id="returns-134">Returns</h5>
4150
4226
  <p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
4151
4227
  <hr>
4152
4228
  <p><a id="startat"></a></p>
@@ -4160,7 +4236,7 @@ the result. Two overloads:</p>
4160
4236
  by the query’s orderBy fields.
4161
4237
  <code>startAt(...values)</code> — explicit positional values (one per
4162
4238
  orderBy clause).</p>
4163
- <h5 id="parameters-93">Parameters</h5>
4239
+ <h5 id="parameters-94">Parameters</h5>
4164
4240
  <div class="table-scroll">
4165
4241
 
4166
4242
 
@@ -4175,7 +4251,7 @@ orderBy clause).</p>
4175
4251
 
4176
4252
 
4177
4253
  <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="#documentsnapshot"><code>DocumentSnapshot</code></a></td></tr></tbody></table></div>
4178
- <h5 id="returns-134">Returns</h5>
4254
+ <h5 id="returns-135">Returns</h5>
4179
4255
  <p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
4180
4256
  <h4 id="call-signature-17">Call Signature</h4>
4181
4257
  <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"> startAt</span><span style="color:#ABB2BF">(...</span><span style="color:#E06C75;font-style:italic">values</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">[]): </span><span style="color:#E5C07B">QueryConstraint</span><span style="color:#ABB2BF">;</span></span></code></pre>
@@ -4186,7 +4262,7 @@ the result. Two overloads:</p>
4186
4262
  by the query’s orderBy fields.
4187
4263
  <code>startAt(...values)</code> — explicit positional values (one per
4188
4264
  orderBy clause).</p>
4189
- <h5 id="parameters-94">Parameters</h5>
4265
+ <h5 id="parameters-95">Parameters</h5>
4190
4266
  <div class="table-scroll">
4191
4267
 
4192
4268
 
@@ -4201,14 +4277,14 @@ orderBy clause).</p>
4201
4277
 
4202
4278
 
4203
4279
  <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></tbody></table></div>
4204
- <h5 id="returns-135">Returns</h5>
4280
+ <h5 id="returns-136">Returns</h5>
4205
4281
  <p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
4206
4282
  <hr>
4207
4283
  <p><a id="sum"></a></p>
4208
4284
  <h3 id="sum">sum()</h3>
4209
4285
  <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"> sum</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">field</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">AggregateField</span><span style="color:#ABB2BF">;</span></span></code></pre>
4210
4286
  <p>Factory: sum-of-<code>field</code> aggregate.</p>
4211
- <h4 id="parameters-95">Parameters</h4>
4287
+ <h4 id="parameters-96">Parameters</h4>
4212
4288
  <div class="table-scroll">
4213
4289
 
4214
4290
 
@@ -4223,26 +4299,16 @@ orderBy clause).</p>
4223
4299
 
4224
4300
 
4225
4301
  <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></tbody></table></div>
4226
- <h4 id="returns-136">Returns</h4>
4302
+ <h4 id="returns-137">Returns</h4>
4227
4303
  <p><a href="#aggregatefield"><code>AggregateField</code></a></p>
4228
4304
  <hr>
4229
4305
  <p><a id="terminate"></a></p>
4230
4306
  <h3 id="terminate">terminate()</h3>
4231
4307
  <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"> terminate</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Firestore</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">>;</span></span></code></pre>
4232
- <p>Sandbox: genuinely tears the target down by calling
4233
- <code>Sandbox.dispose()</code> NOT a pure no-op like the rest of this family.
4234
- <code>dispose()</code> tears down listener registries on the sandbox’s
4235
- environment without replacing it (idempotent, doesn’t touch data).
4236
- This is the honest mapping of “terminate this Firestore instance”:
4237
- a real app that calls <code>terminate(db)</code> expects listeners to stop and
4238
- the instance to be unusable for further meaningful work, and
4239
- <code>dispose()</code> delivers exactly that for the sandbox.</p>
4240
- <p>Caveat: <code>dispose()</code> operates on the whole <code>Sandbox</code>, not a
4241
- Firestore-only slice of it — if <code>pyric/database</code> or <code>pyric/storage</code>
4242
- share the same <code>Sandbox</code>, their listener registries are torn down
4243
- too. This differs from the real SDK, where <code>terminate()</code> only
4244
- affects the one <code>Firestore</code> instance. Documented divergence.</p>
4245
- <h4 id="parameters-96">Parameters</h4>
4308
+ <p>Terminates this Firestore service target only. Held references become
4309
+ unusable and owned listeners stop, while sibling Firestore handles and
4310
+ other services on the same Sandbox remain alive.</p>
4311
+ <h4 id="parameters-97">Parameters</h4>
4246
4312
  <div class="table-scroll">
4247
4313
 
4248
4314
 
@@ -4257,7 +4323,7 @@ affects the one <code>Firestore</code> instance. Documented divergence.</p>
4257
4323
 
4258
4324
 
4259
4325
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#firestore"><code>Firestore</code></a></td></tr></tbody></table></div>
4260
- <h4 id="returns-137">Returns</h4>
4326
+ <h4 id="returns-138">Returns</h4>
4261
4327
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4262
4328
  <hr>
4263
4329
  <p><a id="updatedoc"></a></p>
@@ -4268,7 +4334,7 @@ Web SDK shape — partial updates can target any subset of fields, so
4268
4334
  a translator built around a full <code>AppModelType</code> would be a type-shape
4269
4335
  mismatch. Use the underlying <code>DocumentData</code> view (<code>withConverter(ref, null)</code>) for typed-and-untyped mixed access if you need both styles
4270
4336
  against the same path.</p>
4271
- <h4 id="parameters-97">Parameters</h4>
4337
+ <h4 id="parameters-98">Parameters</h4>
4272
4338
  <div class="table-scroll">
4273
4339
 
4274
4340
 
@@ -4287,13 +4353,13 @@ against the same path.</p>
4287
4353
 
4288
4354
 
4289
4355
  <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="#documentdata"><code>DocumentData</code></a></td></tr></tbody></table></div>
4290
- <h4 id="returns-138">Returns</h4>
4356
+ <h4 id="returns-139">Returns</h4>
4291
4357
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4292
4358
  <hr>
4293
4359
  <p><a id="vector"></a></p>
4294
4360
  <h3 id="vector">vector()</h3>
4295
4361
  <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"> vector</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">values</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">[]): </span><span style="color:#E5C07B">VectorValue</span><span style="color:#ABB2BF">;</span></span></code></pre>
4296
- <h4 id="parameters-98">Parameters</h4>
4362
+ <h4 id="parameters-99">Parameters</h4>
4297
4363
  <div class="table-scroll">
4298
4364
 
4299
4365
 
@@ -4308,19 +4374,15 @@ against the same path.</p>
4308
4374
 
4309
4375
 
4310
4376
  <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>number</code>[]</td></tr></tbody></table></div>
4311
- <h4 id="returns-139">Returns</h4>
4377
+ <h4 id="returns-140">Returns</h4>
4312
4378
  <p><a href="#vectorvalue"><code>VectorValue</code></a></p>
4313
4379
  <hr>
4314
4380
  <p><a id="waitforpendingwrites"></a></p>
4315
4381
  <h3 id="waitforpendingwrites">waitForPendingWrites()</h3>
4316
4382
  <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"> waitForPendingWrites</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Firestore</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">>;</span></span></code></pre>
4317
- <p>Sandbox: resolves immediately. The real SDK’s version waits for
4318
- queued writes to reach the server; the sandbox has no server to wait
4319
- on — every write it accepts is already committed to the local store
4320
- by the time the write’s own promise resolves, so by the time this is
4321
- called there are, honestly, never any writes still pending a round
4322
- trip.</p>
4323
- <h4 id="parameters-99">Parameters</h4>
4383
+ <p>Resolves after writes that were issued while offline receive their modeled
4384
+ acknowledgement on reconnect.</p>
4385
+ <h4 id="parameters-100">Parameters</h4>
4324
4386
  <div class="table-scroll">
4325
4387
 
4326
4388
 
@@ -4335,16 +4397,16 @@ trip.</p>
4335
4397
 
4336
4398
 
4337
4399
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#firestore"><code>Firestore</code></a></td></tr></tbody></table></div>
4338
- <h4 id="returns-140">Returns</h4>
4400
+ <h4 id="returns-141">Returns</h4>
4339
4401
  <p><code>Promise</code>&#x3C;<code>void</code>></p>
4340
4402
  <hr>
4341
4403
  <p><a id="where"></a></p>
4342
4404
  <h3 id="where">where()</h3>
4343
4405
  <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"> where</span><span style="color:#ABB2BF">(</span></span>
4344
4406
  <span class="line"><span style="color:#E06C75;font-style:italic"> field</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">FieldPath</span><span style="color:#ABB2BF">,</span></span>
4345
- <span class="line"><span style="color:#E06C75;font-style:italic"> op</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">WhereFilterOp</span><span style="color:#ABB2BF">,</span></span>
4407
+ <span class="line"><span style="color:#E06C75;font-style:italic"> op</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">QueryWhereFilterOp</span><span style="color:#ABB2BF">,</span></span>
4346
4408
  <span class="line"><span style="color:#E06C75;font-style:italic"> value</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">QueryConstraint</span><span style="color:#ABB2BF">;</span></span></code></pre>
4347
- <h4 id="parameters-100">Parameters</h4>
4409
+ <h4 id="parameters-101">Parameters</h4>
4348
4410
  <div class="table-scroll">
4349
4411
 
4350
4412
 
@@ -4366,8 +4428,8 @@ trip.</p>
4366
4428
 
4367
4429
 
4368
4430
 
4369
- <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> | <a href="#fieldpath"><code>FieldPath</code></a></td></tr><tr><td align="left"><code>op</code></td><td align="left"><a href="#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>
4370
- <h4 id="returns-141">Returns</h4>
4431
+ <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> | <a href="#fieldpath"><code>FieldPath</code></a></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>
4432
+ <h4 id="returns-142">Returns</h4>
4371
4433
  <p><a href="#queryconstraint"><code>QueryConstraint</code></a></p>
4372
4434
  <hr>
4373
4435
  <p><a id="withconverter"></a></p>
@@ -4393,7 +4455,7 @@ trip.</p>
4393
4455
 
4394
4456
 
4395
4457
  <table><thead><tr><th align="left">Type Parameter</th><th align="left">Default type</th></tr></thead><tbody><tr><td align="left"><code>AppModel</code></td><td align="left">-</td></tr><tr><td align="left"><code>DbModel</code> <em>extends</em> <a href="#documentdata"><code>DocumentData</code></a></td><td align="left"><a href="#documentdata"><code>DocumentData</code></a></td></tr></tbody></table></div>
4396
- <h5 id="parameters-101">Parameters</h5>
4458
+ <h5 id="parameters-102">Parameters</h5>
4397
4459
  <div class="table-scroll">
4398
4460
 
4399
4461
 
@@ -4412,11 +4474,11 @@ trip.</p>
4412
4474
 
4413
4475
 
4414
4476
  <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>&#x3C;<a href="#documentdata"><code>DocumentData</code></a>></td></tr><tr><td align="left"><code>converter</code></td><td align="left"><a href="#firestoredataconverter"><code>FirestoreDataConverter</code></a>&#x3C;<code>AppModel</code>, <code>DbModel</code>></td></tr></tbody></table></div>
4415
- <h5 id="returns-142">Returns</h5>
4477
+ <h5 id="returns-143">Returns</h5>
4416
4478
  <p><a href="#documentreference"><code>DocumentReference</code></a>&#x3C;<code>AppModel</code>></p>
4417
4479
  <h4 id="call-signature-19">Call Signature</h4>
4418
4480
  <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"> withConverter</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">&#x3C;</span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">>, </span><span style="color:#E06C75;font-style:italic">converter</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">null</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">DocumentReference</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">DocumentData</span><span style="color:#ABB2BF">>;</span></span></code></pre>
4419
- <h5 id="parameters-102">Parameters</h5>
4481
+ <h5 id="parameters-103">Parameters</h5>
4420
4482
  <div class="table-scroll">
4421
4483
 
4422
4484
 
@@ -4435,7 +4497,7 @@ trip.</p>
4435
4497
 
4436
4498
 
4437
4499
  <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>&#x3C;<code>unknown</code>></td></tr><tr><td align="left"><code>converter</code></td><td align="left"><code>null</code></td></tr></tbody></table></div>
4438
- <h5 id="returns-143">Returns</h5>
4500
+ <h5 id="returns-144">Returns</h5>
4439
4501
  <p><a href="#documentreference"><code>DocumentReference</code></a>&#x3C;<a href="#documentdata"><code>DocumentData</code></a>></p>
4440
4502
  <h4 id="call-signature-20">Call Signature</h4>
4441
4503
  <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"> withConverter</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">AppModel</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">DbModel</span><span style="color:#ABB2BF">>(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">CollectionReference</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">DocumentData</span><span style="color:#ABB2BF">>, </span><span style="color:#E06C75;font-style:italic">converter</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FirestoreDataConverter</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">AppModel</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">DbModel</span><span style="color:#ABB2BF">>): </span><span style="color:#E5C07B">CollectionReference</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">AppModel</span><span style="color:#ABB2BF">>;</span></span></code></pre>
@@ -4458,7 +4520,7 @@ trip.</p>
4458
4520
 
4459
4521
 
4460
4522
  <table><thead><tr><th align="left">Type Parameter</th><th align="left">Default type</th></tr></thead><tbody><tr><td align="left"><code>AppModel</code></td><td align="left">-</td></tr><tr><td align="left"><code>DbModel</code> <em>extends</em> <a href="#documentdata"><code>DocumentData</code></a></td><td align="left"><a href="#documentdata"><code>DocumentData</code></a></td></tr></tbody></table></div>
4461
- <h5 id="parameters-103">Parameters</h5>
4523
+ <h5 id="parameters-104">Parameters</h5>
4462
4524
  <div class="table-scroll">
4463
4525
 
4464
4526
 
@@ -4477,11 +4539,11 @@ trip.</p>
4477
4539
 
4478
4540
 
4479
4541
  <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="#collectionreference"><code>CollectionReference</code></a>&#x3C;<a href="#documentdata"><code>DocumentData</code></a>></td></tr><tr><td align="left"><code>converter</code></td><td align="left"><a href="#firestoredataconverter"><code>FirestoreDataConverter</code></a>&#x3C;<code>AppModel</code>, <code>DbModel</code>></td></tr></tbody></table></div>
4480
- <h5 id="returns-144">Returns</h5>
4542
+ <h5 id="returns-145">Returns</h5>
4481
4543
  <p><a href="#collectionreference"><code>CollectionReference</code></a>&#x3C;<code>AppModel</code>></p>
4482
4544
  <h4 id="call-signature-21">Call Signature</h4>
4483
4545
  <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"> withConverter</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">CollectionReference</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">>, </span><span style="color:#E06C75;font-style:italic">converter</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">null</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">CollectionReference</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">DocumentData</span><span style="color:#ABB2BF">>;</span></span></code></pre>
4484
- <h5 id="parameters-104">Parameters</h5>
4546
+ <h5 id="parameters-105">Parameters</h5>
4485
4547
  <div class="table-scroll">
4486
4548
 
4487
4549
 
@@ -4500,7 +4562,7 @@ trip.</p>
4500
4562
 
4501
4563
 
4502
4564
  <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="#collectionreference"><code>CollectionReference</code></a>&#x3C;<code>unknown</code>></td></tr><tr><td align="left"><code>converter</code></td><td align="left"><code>null</code></td></tr></tbody></table></div>
4503
- <h5 id="returns-145">Returns</h5>
4565
+ <h5 id="returns-146">Returns</h5>
4504
4566
  <p><a href="#collectionreference"><code>CollectionReference</code></a>&#x3C;<a href="#documentdata"><code>DocumentData</code></a>></p>
4505
4567
  <h4 id="call-signature-22">Call Signature</h4>
4506
4568
  <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"> withConverter</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">AppModel</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">DbModel</span><span style="color:#ABB2BF">>(</span><span style="color:#E06C75;font-style:italic">q</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Query</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">DocumentData</span><span style="color:#ABB2BF">>, </span><span style="color:#E06C75;font-style:italic">converter</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FirestoreDataConverter</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">AppModel</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">DbModel</span><span style="color:#ABB2BF">>): </span><span style="color:#E5C07B">Query</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">AppModel</span><span style="color:#ABB2BF">>;</span></span></code></pre>
@@ -4523,7 +4585,7 @@ trip.</p>
4523
4585
 
4524
4586
 
4525
4587
  <table><thead><tr><th align="left">Type Parameter</th><th align="left">Default type</th></tr></thead><tbody><tr><td align="left"><code>AppModel</code></td><td align="left">-</td></tr><tr><td align="left"><code>DbModel</code> <em>extends</em> <a href="#documentdata"><code>DocumentData</code></a></td><td align="left"><a href="#documentdata"><code>DocumentData</code></a></td></tr></tbody></table></div>
4526
- <h5 id="parameters-105">Parameters</h5>
4588
+ <h5 id="parameters-106">Parameters</h5>
4527
4589
  <div class="table-scroll">
4528
4590
 
4529
4591
 
@@ -4542,11 +4604,11 @@ trip.</p>
4542
4604
 
4543
4605
 
4544
4606
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>q</code></td><td align="left"><a href="#query"><code>Query</code></a>&#x3C;<a href="#documentdata"><code>DocumentData</code></a>></td></tr><tr><td align="left"><code>converter</code></td><td align="left"><a href="#firestoredataconverter"><code>FirestoreDataConverter</code></a>&#x3C;<code>AppModel</code>, <code>DbModel</code>></td></tr></tbody></table></div>
4545
- <h5 id="returns-146">Returns</h5>
4607
+ <h5 id="returns-147">Returns</h5>
4546
4608
  <p><a href="#query"><code>Query</code></a>&#x3C;<code>AppModel</code>></p>
4547
4609
  <h4 id="call-signature-23">Call Signature</h4>
4548
4610
  <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"> withConverter</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">q</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Query</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">>, </span><span style="color:#E06C75;font-style:italic">converter</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">null</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Query</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">DocumentData</span><span style="color:#ABB2BF">>;</span></span></code></pre>
4549
- <h5 id="parameters-106">Parameters</h5>
4611
+ <h5 id="parameters-107">Parameters</h5>
4550
4612
  <div class="table-scroll">
4551
4613
 
4552
4614
 
@@ -4565,13 +4627,13 @@ trip.</p>
4565
4627
 
4566
4628
 
4567
4629
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>q</code></td><td align="left"><a href="#query"><code>Query</code></a>&#x3C;<code>unknown</code>></td></tr><tr><td align="left"><code>converter</code></td><td align="left"><code>null</code></td></tr></tbody></table></div>
4568
- <h5 id="returns-147">Returns</h5>
4630
+ <h5 id="returns-148">Returns</h5>
4569
4631
  <p><a href="#query"><code>Query</code></a>&#x3C;<a href="#documentdata"><code>DocumentData</code></a>></p>
4570
4632
  <hr>
4571
4633
  <p><a id="writebatch-1"></a></p>
4572
4634
  <h3 id="writebatch-1">writeBatch()</h3>
4573
4635
  <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"> writeBatch</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">db</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Firestore</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">WriteBatch</span><span style="color:#ABB2BF">;</span></span></code></pre>
4574
- <h4 id="parameters-107">Parameters</h4>
4636
+ <h4 id="parameters-108">Parameters</h4>
4575
4637
  <div class="table-scroll">
4576
4638
 
4577
4639
 
@@ -4586,5 +4648,5 @@ trip.</p>
4586
4648
 
4587
4649
 
4588
4650
  <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>db</code></td><td align="left"><a href="#firestore"><code>Firestore</code></a></td></tr></tbody></table></div>
4589
- <h4 id="returns-148">Returns</h4>
4590
- <p><a href="/docs/pyric-admin-firestore-reference-api/#writebatch"><code>WriteBatch</code></a></p> </article> </main> <aside class="doc-toc api-symbols" aria-label="API symbols"> <h2 class="doc-toc-heading">Symbols</h2> <input class="api-symbol-filter" type="search" placeholder="Filter symbols" aria-label="Filter API symbols" data-api-symbol-filter> <div class="api-symbol-groups" data-api-symbol-groups> <section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#classes"> Classes </a> <ul> <li data-api-symbol="bytes"> <a href="#bytes">Bytes</a> </li><li data-api-symbol="fieldpath"> <a href="#fieldpath">FieldPath</a> </li><li data-api-symbol="fieldvalue"> <a href="#fieldvalue">FieldValue</a> </li><li data-api-symbol="geopoint"> <a href="#geopoint">GeoPoint</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="vectorvalue"> <a href="#vectorvalue">VectorValue</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#interfaces"> Interfaces </a> <ul> <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="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="firestoredataconverter"> <a href="#firestoredataconverter">FirestoreDataConverter</a> </li><li data-api-symbol="firestoredatatooldeps"> <a href="#firestoredatatooldeps">FirestoreDataToolDeps</a> </li><li data-api-symbol="firestoreinspecttooldeps"> <a href="#firestoreinspecttooldeps">FirestoreInspectToolDeps</a> </li><li data-api-symbol="firestoresettings"> <a href="#firestoresettings">FirestoreSettings</a> </li><li data-api-symbol="lintresult"> <a href="#lintresult">LintResult</a> </li><li data-api-symbol="localcache"> <a href="#localcache">LocalCache</a> </li><li data-api-symbol="memorygarbagecollector"> <a href="#memorygarbagecollector">MemoryGarbageCollector</a> </li><li data-api-symbol="persistencesettings"> <a href="#persistencesettings">PersistenceSettings</a> </li><li data-api-symbol="persistenttabmanager"> <a href="#persistenttabmanager">PersistentTabManager</a> </li><li data-api-symbol="query"> <a href="#query">Query</a> </li><li data-api-symbol="queryconstraint"> <a href="#queryconstraint">QueryConstraint</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="sandbox"> <a href="#sandbox">Sandbox</a> </li><li data-api-symbol="sandboxcontext"> <a href="#sandboxcontext">SandboxContext</a> </li><li data-api-symbol="setoptions"> <a href="#setoptions">SetOptions</a> </li><li data-api-symbol="snapshotlistenoptions"> <a href="#snapshotlistenoptions">SnapshotListenOptions</a> </li><li data-api-symbol="snapshotobserver"> <a href="#snapshotobserver">SnapshotObserver</a> </li><li data-api-symbol="userauth"> <a href="#userauth">UserAuth</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="appfirestore"> <a href="#appfirestore">AppFirestore</a> </li><li data-api-symbol="as"> <a href="#as">As</a> </li><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="fieldvaluesentinel"> <a href="#fieldvaluesentinel">FieldValueSentinel</a> </li><li data-api-symbol="loglevel"> <a href="#loglevel">LogLevel</a> </li><li data-api-symbol="orderdirection"> <a href="#orderdirection">OrderDirection</a> </li><li data-api-symbol="transaction"> <a href="#transaction">Transaction</a> </li><li data-api-symbol="unsubscribe()"> <a href="#unsubscribe">Unsubscribe()</a> </li><li data-api-symbol="wherefilterop"> <a href="#wherefilterop">WhereFilterOp</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="#variables"> Variables </a> <ul> <li data-api-symbol="target_symbol"> <a href="#target_symbol">TARGET_SYMBOL</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="actingas()"> <a href="#actingas">actingAs()</a> </li><li data-api-symbol="adddoc()"> <a href="#adddoc">addDoc()</a> </li><li data-api-symbol="and()"> <a href="#and">and()</a> </li><li data-api-symbol="arrayremove()"> <a href="#arrayremove-1">arrayRemove()</a> </li><li data-api-symbol="arrayunion()"> <a href="#arrayunion-1">arrayUnion()</a> </li><li data-api-symbol="average()"> <a href="#average">average()</a> </li><li data-api-symbol="clearindexeddbpersistence()"> <a href="#clearindexeddbpersistence">clearIndexedDbPersistence()</a> </li><li data-api-symbol="collection()"> <a href="#collection">collection()</a> </li><li data-api-symbol="collectiongroup()"> <a href="#collectiongroup">collectionGroup()</a> </li><li data-api-symbol="connectfirestoreemulator()"> <a href="#connectfirestoreemulator">connectFirestoreEmulator()</a> </li><li data-api-symbol="count()"> <a href="#count">count()</a> </li><li data-api-symbol="createfirestoredatatools()"> <a href="#createfirestoredatatools">createFirestoreDataTools()</a> </li><li data-api-symbol="createfirestoreinspecttools()"> <a href="#createfirestoreinspecttools">createFirestoreInspectTools()</a> </li><li data-api-symbol="deletedoc()"> <a href="#deletedoc">deleteDoc()</a> </li><li data-api-symbol="deletefield()"> <a href="#deletefield">deleteField()</a> </li><li data-api-symbol="disablenetwork()"> <a href="#disablenetwork">disableNetwork()</a> </li><li data-api-symbol="doc()"> <a href="#doc">doc()</a> </li><li data-api-symbol="documentid()"> <a href="#documentid">documentId()</a> </li><li data-api-symbol="enableindexeddbpersistence()"> <a href="#enableindexeddbpersistence">enableIndexedDbPersistence()</a> </li><li data-api-symbol="enablemultitabindexeddbpersistence()"> <a href="#enablemultitabindexeddbpersistence">enableMultiTabIndexedDbPersistence()</a> </li><li data-api-symbol="enablenetwork()"> <a href="#enablenetwork">enableNetwork()</a> </li><li data-api-symbol="endat()"> <a href="#endat">endAt()</a> </li><li data-api-symbol="endbefore()"> <a href="#endbefore">endBefore()</a> </li><li data-api-symbol="getadminfirestore()"> <a href="#getadminfirestore">getAdminFirestore()</a> </li><li data-api-symbol="getaggregatefromserver()"> <a href="#getaggregatefromserver">getAggregateFromServer()</a> </li><li data-api-symbol="getcountfromserver()"> <a href="#getcountfromserver">getCountFromServer()</a> </li><li data-api-symbol="getdoc()"> <a href="#getdoc">getDoc()</a> </li><li data-api-symbol="getdocfromcache()"> <a href="#getdocfromcache">getDocFromCache()</a> </li><li data-api-symbol="getdocfromserver()"> <a href="#getdocfromserver">getDocFromServer()</a> </li><li data-api-symbol="getdocs()"> <a href="#getdocs">getDocs()</a> </li><li data-api-symbol="getdocsfromcache()"> <a href="#getdocsfromcache">getDocsFromCache()</a> </li><li data-api-symbol="getdocsfromserver()"> <a href="#getdocsfromserver">getDocsFromServer()</a> </li><li data-api-symbol="getfirestore()"> <a href="#getfirestore">getFirestore()</a> </li><li data-api-symbol="increment()"> <a href="#increment-1">increment()</a> </li><li data-api-symbol="initializefirestore()"> <a href="#initializefirestore">initializeFirestore()</a> </li><li data-api-symbol="limit()"> <a href="#limit">limit()</a> </li><li data-api-symbol="limittolast()"> <a href="#limittolast">limitToLast()</a> </li><li data-api-symbol="memoryeagergarbagecollector()"> <a href="#memoryeagergarbagecollector">memoryEagerGarbageCollector()</a> </li><li data-api-symbol="memorylocalcache()"> <a href="#memorylocalcache">memoryLocalCache()</a> </li><li data-api-symbol="memorylrugarbagecollector()"> <a href="#memorylrugarbagecollector">memoryLruGarbageCollector()</a> </li><li data-api-symbol="onsnapshot()"> <a href="#onsnapshot">onSnapshot()</a> </li><li data-api-symbol="onsnapshotsinsync()"> <a href="#onsnapshotsinsync">onSnapshotsInSync()</a> </li><li data-api-symbol="or()"> <a href="#or">or()</a> </li><li data-api-symbol="orderby()"> <a href="#orderby">orderBy()</a> </li><li data-api-symbol="persistentlocalcache()"> <a href="#persistentlocalcache">persistentLocalCache()</a> </li><li data-api-symbol="persistentmultipletabmanager()"> <a href="#persistentmultipletabmanager">persistentMultipleTabManager()</a> </li><li data-api-symbol="persistentsingletabmanager()"> <a href="#persistentsingletabmanager">persistentSingleTabManager()</a> </li><li data-api-symbol="query()"> <a href="#query-1">query()</a> </li><li data-api-symbol="queryequal()"> <a href="#queryequal">queryEqual()</a> </li><li data-api-symbol="refequal()"> <a href="#refequal">refEqual()</a> </li><li data-api-symbol="runtransaction()"> <a href="#runtransaction">runTransaction()</a> </li><li data-api-symbol="servertimestamp()"> <a href="#servertimestamp-1">serverTimestamp()</a> </li><li data-api-symbol="setdoc()"> <a href="#setdoc">setDoc()</a> </li><li data-api-symbol="setloglevel()"> <a href="#setloglevel">setLogLevel()</a> </li><li data-api-symbol="snapshotequal()"> <a href="#snapshotequal">snapshotEqual()</a> </li><li data-api-symbol="startafter()"> <a href="#startafter">startAfter()</a> </li><li data-api-symbol="startat()"> <a href="#startat">startAt()</a> </li><li data-api-symbol="sum()"> <a href="#sum">sum()</a> </li><li data-api-symbol="terminate()"> <a href="#terminate">terminate()</a> </li><li data-api-symbol="updatedoc()"> <a href="#updatedoc">updateDoc()</a> </li><li data-api-symbol="vector()"> <a href="#vector">vector()</a> </li><li data-api-symbol="waitforpendingwrites()"> <a href="#waitforpendingwrites">waitForPendingWrites()</a> </li><li data-api-symbol="where()"> <a href="#where">where()</a> </li><li data-api-symbol="withconverter()"> <a href="#withconverter">withConverter()</a> </li><li data-api-symbol="writebatch()"> <a href="#writebatch-1">writeBatch()</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>
4651
+ <h4 id="returns-149">Returns</h4>
4652
+ <p><a href="/docs/pyric-admin-firestore-reference-api/#writebatch"><code>WriteBatch</code></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="bytes" data-astro-cid-mw7aashj> <a href="#bytes" data-astro-cid-mw7aashj>Bytes</a> </li><li data-api-symbol="fieldpath" data-astro-cid-mw7aashj> <a href="#fieldpath" data-astro-cid-mw7aashj>FieldPath</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="geopoint" data-astro-cid-mw7aashj> <a href="#geopoint" data-astro-cid-mw7aashj>GeoPoint</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="vectorvalue" data-astro-cid-mw7aashj> <a href="#vectorvalue" data-astro-cid-mw7aashj>VectorValue</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="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="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="firestoredataconverter" data-astro-cid-mw7aashj> <a href="#firestoredataconverter" data-astro-cid-mw7aashj>FirestoreDataConverter</a> </li><li data-api-symbol="firestoredatatooldeps" data-astro-cid-mw7aashj> <a href="#firestoredatatooldeps" data-astro-cid-mw7aashj>FirestoreDataToolDeps</a> </li><li data-api-symbol="firestoreinspecttooldeps" data-astro-cid-mw7aashj> <a href="#firestoreinspecttooldeps" data-astro-cid-mw7aashj>FirestoreInspectToolDeps</a> </li><li data-api-symbol="firestoresettings" data-astro-cid-mw7aashj> <a href="#firestoresettings" data-astro-cid-mw7aashj>FirestoreSettings</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="localcache" data-astro-cid-mw7aashj> <a href="#localcache" data-astro-cid-mw7aashj>LocalCache</a> </li><li data-api-symbol="memorygarbagecollector" data-astro-cid-mw7aashj> <a href="#memorygarbagecollector" data-astro-cid-mw7aashj>MemoryGarbageCollector</a> </li><li data-api-symbol="persistencesettings" data-astro-cid-mw7aashj> <a href="#persistencesettings" data-astro-cid-mw7aashj>PersistenceSettings</a> </li><li data-api-symbol="persistenttabmanager" data-astro-cid-mw7aashj> <a href="#persistenttabmanager" data-astro-cid-mw7aashj>PersistentTabManager</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="queryconstraint" data-astro-cid-mw7aashj> <a href="#queryconstraint" data-astro-cid-mw7aashj>QueryConstraint</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="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="setoptions" data-astro-cid-mw7aashj> <a href="#setoptions" data-astro-cid-mw7aashj>SetOptions</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="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="transactionoptions" data-astro-cid-mw7aashj> <a href="#transactionoptions" data-astro-cid-mw7aashj>TransactionOptions</a> </li><li data-api-symbol="userauth" data-astro-cid-mw7aashj> <a href="#userauth" data-astro-cid-mw7aashj>UserAuth</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="appfirestore" data-astro-cid-mw7aashj> <a href="#appfirestore" data-astro-cid-mw7aashj>AppFirestore</a> </li><li data-api-symbol="as" data-astro-cid-mw7aashj> <a href="#as" data-astro-cid-mw7aashj>As</a> </li><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="fieldvaluesentinel" data-astro-cid-mw7aashj> <a href="#fieldvaluesentinel" data-astro-cid-mw7aashj>FieldValueSentinel</a> </li><li data-api-symbol="loglevel" data-astro-cid-mw7aashj> <a href="#loglevel" data-astro-cid-mw7aashj>LogLevel</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="transaction" data-astro-cid-mw7aashj> <a href="#transaction" data-astro-cid-mw7aashj>Transaction</a> </li><li data-api-symbol="unsubscribe()" data-astro-cid-mw7aashj> <a href="#unsubscribe" data-astro-cid-mw7aashj>Unsubscribe()</a> </li><li data-api-symbol="wherefilterop" data-astro-cid-mw7aashj> <a href="#wherefilterop" data-astro-cid-mw7aashj>WhereFilterOp</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="#variables" data-astro-cid-mw7aashj> Variables </a> <ul data-astro-cid-mw7aashj> <li data-api-symbol="target_symbol" data-astro-cid-mw7aashj> <a href="#target_symbol" data-astro-cid-mw7aashj>TARGET_SYMBOL</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="actingas()" data-astro-cid-mw7aashj> <a href="#actingas" data-astro-cid-mw7aashj>actingAs()</a> </li><li data-api-symbol="adddoc()" data-astro-cid-mw7aashj> <a href="#adddoc" data-astro-cid-mw7aashj>addDoc()</a> </li><li data-api-symbol="and()" data-astro-cid-mw7aashj> <a href="#and" data-astro-cid-mw7aashj>and()</a> </li><li data-api-symbol="arrayremove()" data-astro-cid-mw7aashj> <a href="#arrayremove-1" data-astro-cid-mw7aashj>arrayRemove()</a> </li><li data-api-symbol="arrayunion()" data-astro-cid-mw7aashj> <a href="#arrayunion-1" data-astro-cid-mw7aashj>arrayUnion()</a> </li><li data-api-symbol="average()" data-astro-cid-mw7aashj> <a href="#average" data-astro-cid-mw7aashj>average()</a> </li><li data-api-symbol="clearindexeddbpersistence()" data-astro-cid-mw7aashj> <a href="#clearindexeddbpersistence" data-astro-cid-mw7aashj>clearIndexedDbPersistence()</a> </li><li data-api-symbol="collection()" data-astro-cid-mw7aashj> <a href="#collection" data-astro-cid-mw7aashj>collection()</a> </li><li data-api-symbol="collectiongroup()" data-astro-cid-mw7aashj> <a href="#collectiongroup" data-astro-cid-mw7aashj>collectionGroup()</a> </li><li data-api-symbol="connectfirestoreemulator()" data-astro-cid-mw7aashj> <a href="#connectfirestoreemulator" data-astro-cid-mw7aashj>connectFirestoreEmulator()</a> </li><li data-api-symbol="count()" data-astro-cid-mw7aashj> <a href="#count" data-astro-cid-mw7aashj>count()</a> </li><li data-api-symbol="createfirestoredatatools()" data-astro-cid-mw7aashj> <a href="#createfirestoredatatools" data-astro-cid-mw7aashj>createFirestoreDataTools()</a> </li><li data-api-symbol="createfirestoreinspecttools()" data-astro-cid-mw7aashj> <a href="#createfirestoreinspecttools" data-astro-cid-mw7aashj>createFirestoreInspectTools()</a> </li><li data-api-symbol="deletedoc()" data-astro-cid-mw7aashj> <a href="#deletedoc" data-astro-cid-mw7aashj>deleteDoc()</a> </li><li data-api-symbol="deletefield()" data-astro-cid-mw7aashj> <a href="#deletefield" data-astro-cid-mw7aashj>deleteField()</a> </li><li data-api-symbol="disablenetwork()" data-astro-cid-mw7aashj> <a href="#disablenetwork" data-astro-cid-mw7aashj>disableNetwork()</a> </li><li data-api-symbol="doc()" data-astro-cid-mw7aashj> <a href="#doc" data-astro-cid-mw7aashj>doc()</a> </li><li data-api-symbol="documentid()" data-astro-cid-mw7aashj> <a href="#documentid" data-astro-cid-mw7aashj>documentId()</a> </li><li data-api-symbol="enableindexeddbpersistence()" data-astro-cid-mw7aashj> <a href="#enableindexeddbpersistence" data-astro-cid-mw7aashj>enableIndexedDbPersistence()</a> </li><li data-api-symbol="enablemultitabindexeddbpersistence()" data-astro-cid-mw7aashj> <a href="#enablemultitabindexeddbpersistence" data-astro-cid-mw7aashj>enableMultiTabIndexedDbPersistence()</a> </li><li data-api-symbol="enablenetwork()" data-astro-cid-mw7aashj> <a href="#enablenetwork" data-astro-cid-mw7aashj>enableNetwork()</a> </li><li data-api-symbol="endat()" data-astro-cid-mw7aashj> <a href="#endat" data-astro-cid-mw7aashj>endAt()</a> </li><li data-api-symbol="endbefore()" data-astro-cid-mw7aashj> <a href="#endbefore" data-astro-cid-mw7aashj>endBefore()</a> </li><li data-api-symbol="getadminfirestore()" data-astro-cid-mw7aashj> <a href="#getadminfirestore" data-astro-cid-mw7aashj>getAdminFirestore()</a> </li><li data-api-symbol="getaggregatefromserver()" data-astro-cid-mw7aashj> <a href="#getaggregatefromserver" data-astro-cid-mw7aashj>getAggregateFromServer()</a> </li><li data-api-symbol="getcountfromserver()" data-astro-cid-mw7aashj> <a href="#getcountfromserver" data-astro-cid-mw7aashj>getCountFromServer()</a> </li><li data-api-symbol="getdoc()" data-astro-cid-mw7aashj> <a href="#getdoc" data-astro-cid-mw7aashj>getDoc()</a> </li><li data-api-symbol="getdocfromcache()" data-astro-cid-mw7aashj> <a href="#getdocfromcache" data-astro-cid-mw7aashj>getDocFromCache()</a> </li><li data-api-symbol="getdocfromserver()" data-astro-cid-mw7aashj> <a href="#getdocfromserver" data-astro-cid-mw7aashj>getDocFromServer()</a> </li><li data-api-symbol="getdocs()" data-astro-cid-mw7aashj> <a href="#getdocs" data-astro-cid-mw7aashj>getDocs()</a> </li><li data-api-symbol="getdocsfromcache()" data-astro-cid-mw7aashj> <a href="#getdocsfromcache" data-astro-cid-mw7aashj>getDocsFromCache()</a> </li><li data-api-symbol="getdocsfromserver()" data-astro-cid-mw7aashj> <a href="#getdocsfromserver" data-astro-cid-mw7aashj>getDocsFromServer()</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="increment()" data-astro-cid-mw7aashj> <a href="#increment-1" data-astro-cid-mw7aashj>increment()</a> </li><li data-api-symbol="initializefirestore()" data-astro-cid-mw7aashj> <a href="#initializefirestore" data-astro-cid-mw7aashj>initializeFirestore()</a> </li><li data-api-symbol="limit()" data-astro-cid-mw7aashj> <a href="#limit" data-astro-cid-mw7aashj>limit()</a> </li><li data-api-symbol="limittolast()" data-astro-cid-mw7aashj> <a href="#limittolast" data-astro-cid-mw7aashj>limitToLast()</a> </li><li data-api-symbol="memoryeagergarbagecollector()" data-astro-cid-mw7aashj> <a href="#memoryeagergarbagecollector" data-astro-cid-mw7aashj>memoryEagerGarbageCollector()</a> </li><li data-api-symbol="memorylocalcache()" data-astro-cid-mw7aashj> <a href="#memorylocalcache" data-astro-cid-mw7aashj>memoryLocalCache()</a> </li><li data-api-symbol="memorylrugarbagecollector()" data-astro-cid-mw7aashj> <a href="#memorylrugarbagecollector" data-astro-cid-mw7aashj>memoryLruGarbageCollector()</a> </li><li data-api-symbol="onsnapshot()" data-astro-cid-mw7aashj> <a href="#onsnapshot" data-astro-cid-mw7aashj>onSnapshot()</a> </li><li data-api-symbol="onsnapshotsinsync()" data-astro-cid-mw7aashj> <a href="#onsnapshotsinsync" data-astro-cid-mw7aashj>onSnapshotsInSync()</a> </li><li data-api-symbol="or()" data-astro-cid-mw7aashj> <a href="#or" data-astro-cid-mw7aashj>or()</a> </li><li data-api-symbol="orderby()" data-astro-cid-mw7aashj> <a href="#orderby" data-astro-cid-mw7aashj>orderBy()</a> </li><li data-api-symbol="persistentlocalcache()" data-astro-cid-mw7aashj> <a href="#persistentlocalcache" data-astro-cid-mw7aashj>persistentLocalCache()</a> </li><li data-api-symbol="persistentmultipletabmanager()" data-astro-cid-mw7aashj> <a href="#persistentmultipletabmanager" data-astro-cid-mw7aashj>persistentMultipleTabManager()</a> </li><li data-api-symbol="persistentsingletabmanager()" data-astro-cid-mw7aashj> <a href="#persistentsingletabmanager" data-astro-cid-mw7aashj>persistentSingleTabManager()</a> </li><li data-api-symbol="query()" data-astro-cid-mw7aashj> <a href="#query-1" data-astro-cid-mw7aashj>query()</a> </li><li data-api-symbol="queryequal()" data-astro-cid-mw7aashj> <a href="#queryequal" data-astro-cid-mw7aashj>queryEqual()</a> </li><li data-api-symbol="refequal()" data-astro-cid-mw7aashj> <a href="#refequal" data-astro-cid-mw7aashj>refEqual()</a> </li><li data-api-symbol="runtransaction()" data-astro-cid-mw7aashj> <a href="#runtransaction" data-astro-cid-mw7aashj>runTransaction()</a> </li><li data-api-symbol="servertimestamp()" data-astro-cid-mw7aashj> <a href="#servertimestamp-1" data-astro-cid-mw7aashj>serverTimestamp()</a> </li><li data-api-symbol="setdoc()" data-astro-cid-mw7aashj> <a href="#setdoc" data-astro-cid-mw7aashj>setDoc()</a> </li><li data-api-symbol="setloglevel()" data-astro-cid-mw7aashj> <a href="#setloglevel" data-astro-cid-mw7aashj>setLogLevel()</a> </li><li data-api-symbol="snapshotequal()" data-astro-cid-mw7aashj> <a href="#snapshotequal" data-astro-cid-mw7aashj>snapshotEqual()</a> </li><li data-api-symbol="startafter()" data-astro-cid-mw7aashj> <a href="#startafter" data-astro-cid-mw7aashj>startAfter()</a> </li><li data-api-symbol="startat()" data-astro-cid-mw7aashj> <a href="#startat" data-astro-cid-mw7aashj>startAt()</a> </li><li data-api-symbol="sum()" data-astro-cid-mw7aashj> <a href="#sum" data-astro-cid-mw7aashj>sum()</a> </li><li data-api-symbol="terminate()" data-astro-cid-mw7aashj> <a href="#terminate" data-astro-cid-mw7aashj>terminate()</a> </li><li data-api-symbol="updatedoc()" data-astro-cid-mw7aashj> <a href="#updatedoc" data-astro-cid-mw7aashj>updateDoc()</a> </li><li data-api-symbol="vector()" data-astro-cid-mw7aashj> <a href="#vector" data-astro-cid-mw7aashj>vector()</a> </li><li data-api-symbol="waitforpendingwrites()" data-astro-cid-mw7aashj> <a href="#waitforpendingwrites" data-astro-cid-mw7aashj>waitForPendingWrites()</a> </li><li data-api-symbol="where()" data-astro-cid-mw7aashj> <a href="#where" data-astro-cid-mw7aashj>where()</a> </li><li data-api-symbol="withconverter()" data-astro-cid-mw7aashj> <a href="#withconverter" data-astro-cid-mw7aashj>withConverter()</a> </li><li data-api-symbol="writebatch()" data-astro-cid-mw7aashj> <a href="#writebatch-1" data-astro-cid-mw7aashj>writeBatch()</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>